<template>
|
<view class="">
|
<view class="">
|
<view class="">
|
<u-form labelWidth="70" :model="form" :rules="rules" ref="form">
|
<view class="event-info">
|
<u-form-item class="form-item" labelWidth="110" label="姓名" required prop="name">
|
<u--input border="none" v-model="form.name" placeholder="请输入姓名">
|
</u--input>
|
</u-form-item>
|
<u-form-item @click="showSelectBus('性别','gender')" class="form-item" labelWidth="110" label="性别"
|
prop="gender">
|
<u--input border="none" v-model="selectDefaultName.gender" disabled disabledColor="#ffffff"
|
placeholder="请选择性别">
|
</u--input>
|
<u-icon slot="right" name="arrow-right"></u-icon>
|
</u-form-item>
|
<u-form-item @click="showSelectBus('证件类型','cardType')" class="form-item" labelWidth="110"
|
label="证件类型" prop="gender">
|
<u--input border="none" v-model="selectDefaultName.cardType" disabled
|
disabledColor="#ffffff" placeholder="请选择证件类型">
|
</u--input>
|
<u-icon slot="right" name="arrow-right"></u-icon>
|
</u-form-item>
|
<u-form-item v-if="form.cardType == 111" class="form-item" labelWidth="110" label="身份证号码"
|
prop="idCard">
|
<u--input border="none" type="idcard " v-model="form.idCard" placeholder="请输入身份证号码">
|
</u--input>
|
</u-form-item>
|
<u-form-item v-if="form.cardType && form.cardType != 111" class="form-item" labelWidth="110"
|
label="证件号码" prop="cardNo">
|
<u--input border="none" v-model="form.cardNo" placeholder="请输入证件号码">
|
</u--input>
|
</u-form-item>
|
<u-form-item class="form-item" labelWidth="110" label="手机号码" prop="phoneNumber" required>
|
<u--input border="none" type="number" v-model="form.phoneNumber" placeholder="请输入手机号码">
|
</u--input>
|
</u-form-item>
|
|
<u-form-item class="form-item" labelWidth="110" label="户籍地区" prop="residentAdcode">
|
<view class="region">
|
<!-- <uni-data-picker :border="false" v-model="residentadDefault"
|
:map="{text:'name',value:'id'}" :localdata="cityList" popup-title="请选择户籍地区"
|
@change="onchange" @nodeclick="onnodeclick"></uni-data-picker> -->
|
|
<picker mode="region" :custom-item="children" :range="cityList" :range-key="name"
|
:value="residentadDefault" @change="changeHouseholdRegion">
|
<view class="region-picker c-c0" v-if="!residentad">
|
请选择户籍地区
|
</view>
|
<view class="region-picker c-30" v-if="residentad">
|
{{residentad}}
|
</view>
|
</picker>
|
</view>
|
<!-- <u-icon slot="right" name="arrow-right"></u-icon> -->
|
</u-form-item>
|
|
<u-form-item @click="showSelectBus('与业主关系','relationship')" class="form-item" labelWidth="120"
|
label="与业主关系" required prop="relationship">
|
<u--input border="none" v-model="selectDefaultName.relationship" disabled
|
disabledColor="#ffffff" placeholder="请选择与业主关系">
|
</u--input>
|
<u-icon slot="right" name="arrow-right"></u-icon>
|
</u-form-item>
|
|
<u-form-item class="form-item"
|
v-if="selectDefaultName.relationship && selectDefaultName.relationship =='租户'"
|
labelWidth="110" label="房东名称" prop="landlordName">
|
<u--input border="none" v-model="form.landlordName" placeholder="请输入房东名称">
|
</u--input>
|
</u-form-item>
|
|
<u-form-item class="form-item"
|
v-if="selectDefaultName.relationship && selectDefaultName.relationship =='租户'"
|
labelWidth="110" label="房东电话" prop="landlordPhone">
|
<u--input border="none" v-model="form.landlordPhone" placeholder="请输入房东电话">
|
</u--input>
|
</u-form-item>
|
|
<u-form-item class="form-item"
|
v-if="selectDefaultName.relationship && selectDefaultName.relationship =='租户'"
|
labelWidth="110" label="房东身份证" prop="landlordIdCard">
|
<u--input border="none" v-model="form.landlordIdCard" placeholder="请输入房东身份证">
|
</u--input>
|
</u-form-item>
|
|
<u-form-item @click="showSelectBus('民族','ethnicity')" class="form-item" labelWidth="110"
|
label="民族" prop="ethnicity">
|
<u--input border="none" v-model="selectDefaultName.ethnicity" disabled
|
disabledColor="#ffffff" placeholder="请选择民族">
|
</u--input>
|
<u-icon slot="right" name="arrow-right"></u-icon>
|
</u-form-item>
|
<u-form-item @click="showSelectBus('是否党员','partyEmber')" class="form-item" labelWidth="110"
|
label="是否党员" prop="partyEmber">
|
<u--input border="none" v-model="selectDefaultName.partyEmber" disabled
|
disabledColor="#ffffff" placeholder="请选择是否党员">
|
</u--input>
|
<u-icon slot="right" name="arrow-right"></u-icon>
|
</u-form-item>
|
<u-form-item class="form-item" labelWidth="110" label="职业类别" prop="occupation ">
|
<u--input border="none" v-model="form.occupation " placeholder="请输入职业类别">
|
</u--input>
|
</u-form-item>
|
<u-form-item @click="showSelectBus('婚姻状态','maritalStatus')" class="form-item" labelWidth="110"
|
label="婚姻状态" prop="maritalStatus">
|
<u--input border="none" v-model="selectDefaultName.maritalStatus" disabled
|
disabledColor="#ffffff" placeholder="请选择婚姻状态">
|
</u--input>
|
<u-icon slot="right" name="arrow-right"></u-icon>
|
</u-form-item>
|
|
<u-form-item class="form-item" labelWidth="110" label="标签" @click="navTo">
|
<view class="">
|
<text style="color: #c0c4cc;"
|
v-if="!form.householdLabelList || !form.householdLabelList.length">请选择标签</text>
|
<text class="f-28" v-else>{{showLabel()}}</text>
|
</view>
|
<u-icon slot="right" name="arrow-right"></u-icon>
|
</u-form-item>
|
|
|
<u-form-item class="form-item" @click="showVolunteerOrg = true" labelWidth="120" label="志愿者组织"
|
prop="volunteerOrg">
|
<u--input border="none" v-model="volunteerOrg" disabled disabledColor="#ffffff"
|
placeholder="请选择志愿者组织">
|
</u--input>
|
<u-icon slot="right" name="arrow-right"></u-icon>
|
</u-form-item>
|
|
<u-form-item v-if="volunteerOrg == '其他'" required class="form-item" labelWidth="120"
|
label="其他志愿者组织" prop="volunteerOrg">
|
<u--input border="none" v-model="form.volunteerOrg" placeholder="请输入其他志愿者组织">
|
</u--input>
|
</u-form-item>
|
|
<u-form-item v-if="form.cardType && form.cardType != 111" class="form-item" labelWidth="120"
|
label="出生日期" prop="birthday" @click="showSelectBirthday = true">
|
<u--input border="none" v-model="form.birthday" disabled disabledColor="#ffffff"
|
placeholder="请选择出生日期">
|
</u--input>
|
<u-icon slot="right" name="arrow-right"></u-icon>
|
</u-form-item>
|
|
<u-form-item class="form-item" labelWidth="110" label="其它联系方式" prop="otherContact">
|
<u--input border="none" v-model="form.otherContact" placeholder="请输入其它联系方式">
|
</u--input>
|
</u-form-item>
|
|
<u-form-item @click="showSelectBus('是否主要联系人','isPrimaryContact')" class="form-item"
|
labelWidth="110" label="是否主要联系人" prop="isPrimaryContact">
|
<u--input border="none" v-model="selectDefaultName.isPrimaryContact" disabled
|
disabledColor="#ffffff" placeholder="请选择是否主要联系人">
|
</u--input>
|
<u-icon slot="right" name="arrow-right"></u-icon>
|
</u-form-item>
|
|
<u-form-item @click="showSelectBus('居住情况','residentialStatus')" class="form-item"
|
labelWidth="100" label="居住情况" prop="residentialStatus">
|
<u--input border="none" v-model="selectDefaultName.residentialStatus" disabled
|
disabledColor="#ffffff" placeholder="请选择居住情况">
|
</u--input>
|
<u-icon slot="right" name="arrow-right"></u-icon>
|
</u-form-item>
|
|
<!-- <u-form-item class="form-item" labelWidth="110" label="港澳台通行证" prop="hkmtPass">
|
<u--input border="none" v-model="form.hkmtPass" placeholder="请输入">
|
</u--input>
|
</u-form-item>
|
|
<u-form-item class="form-item" labelWidth="110" label="护照" prop="passport">
|
<u--input border="none" v-model="form.passport" placeholder="请输入">
|
</u--input>
|
</u-form-item> -->
|
|
|
<u-form-item class="form-item" labelWidth="110" label="居住地区" prop="homeAdcode"
|
@click="showRegion = true">
|
<u--input border="none" v-model="homeRegion" disabled disabledColor="#ffffff"
|
placeholder="请选择居住地区">
|
</u--input>
|
<u-icon slot="right" name="arrow-right"></u-icon>
|
</u-form-item>
|
<!-- <u-form-item class="form-item address-row" labelWidth="110" label="现居住地" prop="currentAddress">
|
<u-textarea border="none" :disabled="form.source ==1?true:false" disabledColor="#ffffff"
|
v-model="form.currentAddress" placeholder="请输入现居住地">
|
</u-textarea>
|
</u-form-item> -->
|
<u-form-item class="form-item" labelWidth="110" label="籍贯地区" prop="nativePlaceAdcode">
|
<view class="region">
|
<!-- <uni-data-picker :border="false" v-model="navtivePlaceDefault"
|
:map="{text:'name',value:'id'}" :localdata="cityList" popup-title="请选择户籍地区"
|
@change="changeNativeRegion" @nodeclick="onnodeclick"></uni-data-picker> -->
|
<picker mode="region" :custom-item="children" :range="cityList" :range-key="name"
|
:value="navtivePlaceDefault" @change="changeNativeRegion">
|
<view class="region-picker c-c0" v-if="!nativePlace">
|
请选择籍贯地区
|
</view>
|
<view class="region-picker c-30" v-if="nativePlace">
|
{{nativePlace}}
|
</view>
|
</picker>
|
</view>
|
<!-- <u-icon slot="right" name="arrow-right"></u-icon> -->
|
</u-form-item>
|
|
<u-form-item @click="showSelectBus('户籍类型','residentType')" class="form-item" labelWidth="110"
|
label="户籍类型" prop="residentType">
|
<u--input border="none" v-model="selectDefaultName.residentType" disabled
|
disabledColor="#ffffff" placeholder="请选择户籍类型">
|
</u--input>
|
<u-icon slot="right" name="arrow-right"></u-icon>
|
</u-form-item>
|
<u-form-item class="form-item" labelWidth="110" label="户籍地址" prop="hukouRegistration">
|
<u-textarea border="none" v-model="form.hukouRegistration" placeholder="请输入户籍地址">
|
</u-textarea>
|
</u-form-item>
|
|
<u-form-item @click="showSelectBus('学历','education')" class="form-item" labelWidth="110"
|
label="学历" prop="education">
|
<u--input border="none" v-model="selectDefaultName.education" disabled
|
disabledColor="#ffffff" placeholder="请选择学历">
|
</u--input>
|
<u-icon slot="right" name="arrow-right"></u-icon>
|
</u-form-item>
|
|
|
|
<u-form-item class="form-item" labelWidth="110" label="工作单位" prop="employer">
|
<u--input border="none" v-model="form.employer" placeholder="请输入工作单位">
|
</u--input>
|
</u-form-item>
|
<u-form-item class="form-item" labelWidth="110" label="工作单位地址" prop="cmpyRegAddr">
|
<u-textarea border="none" v-model="form.cmpyRegAddr" placeholder="请输入工作单位地址">
|
</u-textarea>
|
</u-form-item>
|
<u-form-item @click="showSelectBus('工作状态','workStatus')" class="form-item" labelWidth="110"
|
label="工作状态" prop="workStatus">
|
<u--input border="none" v-model="selectDefaultName.workStatus" disabled
|
disabledColor="#ffffff" placeholder="请选择工作状态">
|
</u--input>
|
<u-icon slot="right" name="arrow-right"></u-icon>
|
</u-form-item>
|
|
|
<u-form-item class="form-item" labelWidth="110" label="宗教信仰" prop="religiousBelief ">
|
<u--input border="none" v-model="form.religiousBelief" placeholder="请输入宗教信仰">
|
</u--input>
|
</u-form-item>
|
<u-form-item @click="showSelectBus('健康状态','healthStatus')" class="form-item" labelWidth="110"
|
label="健康状态" prop="healthStatus">
|
<u--input border="none" v-model="selectDefaultName.healthStatus" disabled
|
disabledColor="#ffffff" placeholder="请选择健康状态">
|
</u--input>
|
<u-icon slot="right" name="arrow-right"></u-icon>
|
</u-form-item>
|
<u-form-item v-if="selectDefaultIndex.healthStatus == 2" class="form-item" labelWidth="110"
|
label="疾病名称" prop="diseaseName">
|
<u--input border="none" v-model="form.diseaseName" placeholder="请输入疾病名称">
|
</u--input>
|
</u-form-item>
|
|
<u-form-item class="form-item" labelWidth="110" label="外出详址" prop="goOutAddr">
|
<u-textarea border="none" v-model="form.goOutAddr" placeholder="请输入外出详址">
|
</u-textarea>
|
</u-form-item>
|
|
<u-form-item class="form-item" labelWidth="110" label="外出原因" prop="goOutReason ">
|
<u--input border="none" v-model="form.goOutReason" placeholder="请输入外出原因">
|
</u--input>
|
</u-form-item>
|
<u-form-item class="form-item" labelWidth="110" label="外出时间" prop="goOutTime"
|
@click="showSelectDate = true">
|
<u--input border="none" v-model="form.goOutTime " disabled disabledColor="#ffffff"
|
placeholder="请选择外出时间">
|
</u--input>
|
<u-icon slot="right" name="arrow-right"></u-icon>
|
</u-form-item>
|
<u-form-item class="form-item" labelWidth="110" label="外出去向" prop="goOutWhere">
|
<u--input border="none" v-model="form.goOutWhere" placeholder="请输入外出去向">
|
</u--input>
|
</u-form-item>
|
<u-form-item class="form-item" labelWidth="110" label="车牌号" prop="cardNumber">
|
<u--input border="none" v-model="form.cardNumber" placeholder="多个用中划线(-)隔开">
|
</u--input>
|
</u-form-item>
|
|
<u-form-item class="form-item" labelWidth="110" label="备注" prop="remark">
|
<u--input border="none" v-model="form.remark" placeholder="补充说明">
|
</u--input>
|
</u-form-item>
|
</view>
|
</u-form>
|
</view>
|
</view>
|
|
<u-picker :defaultIndex="[selectDefaultIndex[selectBusKey]]" :closeOnClickOverlay="true" v-if="typeShow"
|
:show="typeShow" :columns="[selectBusList]" @close="typeShow = false" @cancel="typeShow = false"
|
keyName="name" @confirm="typeSelect"></u-picker>
|
|
<u-datetime-picker :show="showSelectDate" v-model="currentTime" mode="date" @confirm="confirmDate"
|
@cancel="showSelectDate = false"></u-datetime-picker>
|
|
<u-datetime-picker :show="showSelectBirthday" v-model="currentTime" mode="date" @confirm="confirmBirthday"
|
@cancel="showSelectBirthday = false"></u-datetime-picker>
|
|
<u-picker :defaultIndex="[homeIndex]" :closeOnClickOverlay="true" :show="showRegion" :columns="[regionList]"
|
@close="showRegion = false" @cancel="showRegion = false" keyName="name" @confirm="regionSelect"></u-picker>
|
|
<u-picker :defaultIndex="[volunteerOrgTypeIndex]" :closeOnClickOverlay="true" :show="showVolunteerOrg"
|
:columns="[volunteerOrgTypeList]" @close="showRegion = false" @cancel="showVolunteerOrg = false"
|
@confirm="confirmVolunteerOrg"></u-picker>
|
|
<u-popup :show="isShowPopup" mode="bottom" :round="12" :closeable="true" @close="isShowPopup = false">
|
<view class="popup-content">
|
<z-paging ref="paging" v-model="houseList" @query="queryHouseList" @onRefresh="refreshList"
|
:fixed="false">
|
<view class="" slot="top">
|
<view class="popup-title f-30">选择房屋</view>
|
<u-search placeholder="请输入房屋地址" :showAction="true" actionText="搜索" :animation="true"
|
v-model="addressName" @search="searchAddress" @custom="searchAddress"
|
@clear="clearKeyword"></u-search>
|
</view>
|
<view class="popup-list">
|
<view class="popup-list-item" v-for="(i,k) in houseList" :key="k" @click="selectHouse(i)">
|
<view class="address-name f-28">
|
{{i.address}}
|
</view>
|
<view class="check-icon" v-if="i.houseCode == form.houseCode">
|
<u-icon name="checkbox-mark" color="#017BFC" size="30"></u-icon>
|
</view>
|
</view>
|
</view>
|
</z-paging>
|
</view>
|
|
</u-popup>
|
|
<u-popup :show="isShowPopupLabel" mode="center" :round="12" :closeable="true" @close="isShowPopupLabel = false">
|
<view class="popup-lable">
|
<householdLabel id="formLable" ref="formLable" @getLableCallback="handleData"></householdLabel>
|
</view>
|
</u-popup>
|
|
|
</view>
|
</template>
|
|
<script>
|
import {
|
getQrCodeDetail
|
} from "@/api/system/index"
|
import selectBus from "@/components/my-components/selectBus.vue"
|
import uploadMixin from "@/mixin/uploadMixin";
|
import {
|
getHouseholdDetail,
|
saveOrUpdateHousehold,
|
removeHousehold,
|
fetchHousehold
|
} from '@/api/house/household.js'
|
import {
|
bizDictionary
|
} from '@/api/system/dict.js'
|
|
import {
|
select,
|
regionTree
|
} from "@/api/system/region.js"
|
|
|
import {
|
getHouseList
|
} from "@/api/house/house.js"
|
|
// import boxTitle from '../components/boxTitle/index2.vue'
|
import householdLabel from './householdLabel.vue'
|
export default {
|
components: {
|
selectBus,
|
// boxTitle,
|
householdLabel
|
},
|
mixins: [uploadMixin],
|
data() {
|
return {
|
addOrUpdateTitle: "添加",
|
houseCode: "",
|
form: {},
|
formatter: 'yyyy-MM-dd',
|
rules: {
|
'selectDefaultName.relationship': {
|
required: true,
|
message: '请选择与业主关系',
|
trigger: ['change', 'blur'],
|
},
|
'name': {
|
type: 'string',
|
required: true,
|
message: '请填写姓名',
|
trigger: ['change', 'blur'],
|
},
|
'volunteerOrgTemp': {
|
type: 'string',
|
required: true,
|
message: '请输入其他志愿者组织',
|
trigger: ['change', 'blur'],
|
},
|
'phoneNumber': [{
|
required: true,
|
message: '请输入手机号码',
|
trigger: ['change', 'blur']
|
},
|
{
|
|
validator: (rule, value, callback) => {
|
return uni.$u.test.mobile(value);
|
},
|
message: '手机号码不正确',
|
trigger: ['change', 'blur']
|
|
}
|
]
|
},
|
typeShow: false,
|
roleName: "",
|
dataList: {
|
roleType: [],
|
relationship: [],
|
gender: [{
|
value: 1,
|
name: '男',
|
},
|
{
|
value: 0,
|
name: '女',
|
},
|
{
|
value: 2,
|
name: '未知',
|
}
|
],
|
isPrimaryContact: [{
|
value: 1,
|
name: '是',
|
},
|
{
|
value: 0,
|
name: '否',
|
}
|
],
|
residentialStatus: [{
|
value: 1,
|
name: '是',
|
},
|
{
|
value: 0,
|
name: '否',
|
}
|
],
|
ethnicity: [],
|
education: [],
|
partyEmber: [{
|
value: 1,
|
name: '是',
|
},
|
{
|
value: 2,
|
name: '否',
|
}
|
],
|
workStatus: [],
|
maritalStatus: [],
|
residentType: [],
|
healthStatus: [],
|
cardType: []
|
},
|
// 下拉变量
|
selectBusList: [],
|
selectBusVal: '',
|
selectBusTitle: '',
|
selectBusModel: '',
|
selectBusKey: "",
|
selectDefaultIndex: {
|
roleType: 0,
|
relationship: 0,
|
gender: 0,
|
isPrimaryContact: 0,
|
ethnicity: 0,
|
education: 0,
|
partyEmber: 0,
|
workStatus: 0,
|
maritalStatus: 0,
|
cardType: 0,
|
healthStatus: 0,
|
residentType: 0,
|
residentialStatus: 0
|
},
|
selectDefaultName: {
|
roleType: "",
|
relationship: "",
|
genderValue: "",
|
isPrimaryContact: "",
|
ethnicityValue: "",
|
education: "",
|
partyEmber: "",
|
workStatus: "",
|
maritalStatus: "",
|
cardType: "",
|
healthStatus: "",
|
residentType: "",
|
residentialStatus: ""
|
},
|
showSelectDate: false,
|
regionList: [],
|
cityList: [],
|
nativePlace: "", //籍贯
|
residentad: "", //户籍
|
homeRegion: "", //居住地
|
homeIndex: 0,
|
showRegion: false,
|
navtivePlaceDefault: [13, 0, 0],
|
residentadDefault: [13, 0, 0],
|
isEdit: false,
|
from: "",
|
type: "",
|
id: "",
|
showSelectBirthday: false,
|
currentTime: Number(new Date()),
|
minDate: "",
|
goOutMinDate: "",
|
isShowPopup: false,
|
isShowPopupLabel: false,
|
addressName: "",
|
houseList: [],
|
volunteerOrgTypeList: ["信州义警", "蓝天救援", "其他"],
|
volunteerOrgTypeIndex: [0],
|
volunteerOrg: "",
|
showVolunteerOrg: false,
|
houseTag: "", //房屋标签
|
houseHoldInfo: {},
|
}
|
},
|
created() {
|
this.getHeader()
|
this.getAllBizDict()
|
this.setCardTypeDefault()
|
this.getRegionList()
|
this.getRegionTree()
|
|
|
},
|
onReady() {
|
this.$refs.form.setRules(this.rules)
|
},
|
async onShow(option) {
|
this.minDate = Number(new Date('1900-01-01')); //设置出生日期选择器最小值
|
this.goOutMinDate = Number(new Date('1970-01-01')); //设置外出时间选择器最小值
|
await this.getAllBizDict()
|
await this.getRegionList()
|
|
this.homeRegion = uni.getStorageSync("curStreet")
|
this.form.homeAdcode = this.getHouseRegion(uni.getStorageSync("curStreet")).code;
|
this.homeIndex = this.getHouseRegion(uni.getStorageSync("curStreet")).index;
|
if (option.from) {
|
this.from = option.from;
|
if (data.type == 1) {
|
this.houseCode = uni.getStorageSync("siteInfo").houseCode
|
}
|
}
|
this.form.roleName = uni.getStorageSync("activeRole").roleName;
|
},
|
|
// onShow() {
|
// console.log(this.form);
|
// if (this.id) {
|
// // this.getHouseholdInfo()
|
// this.getHoldLabel();
|
// }
|
// },
|
|
methods: {
|
|
handleData(res) {
|
console.log("getback", res)
|
this.isShowPopupLabel = false
|
// householdLabelList
|
},
|
|
getHouseDetail(code, type) {
|
getQrCodeDetail({
|
roleName: uni.getStorageSync("activeRole").roleName,
|
addressCode: code || uni.getStorageSync("siteInfo").houseCode,
|
}).then(res => {
|
console.log(res);
|
if (type) {
|
if (res.data.isJur = 1) {
|
this.houseCode = code;
|
this.homeRegion = res.data.townStreetName;
|
this.form.currentAddress = res.data.addressName;
|
console.log("===>", this.getHouseRegion(res.data.townStreetName));
|
this.form.homeAdcode = this.getHouseRegion(res.data.townStreetName).code;
|
this.homeIndex = this.getHouseRegion(res.data.townStreetName).index;
|
if (res.data.userHouseLabelVOList.length) {
|
this.houseTag = res.data.userHouseLabelVOList[0].labelName
|
}
|
} else {
|
uni.showModal({
|
title: "提示!",
|
content: "该区域不是您管辖范围",
|
showCancel: false
|
})
|
}
|
|
} else {
|
this.houseCode = code;
|
this.homeRegion = res.data.townStreetName;
|
this.form.currentAddress = res.data.addressName;
|
console.log("===>", this.getHouseRegion(res.data.townStreetName));
|
this.form.homeAdcode = this.getHouseRegion(res.data.townStreetName).code;
|
this.homeIndex = this.getHouseRegion(res.data.townStreetName).index;
|
if (res.data.userHouseLabelVOList.length) {
|
this.houseTag = res.data.userHouseLabelVOList[0].labelName
|
}
|
}
|
|
})
|
},
|
|
setRegionDefault() {
|
getQrCodeDetail({
|
roleName: uni.getStorageSync("activeRole").roleName,
|
addressCode: this.houseCode || uni.getStorageSync("siteInfo").houseCode,
|
}).then(res => {
|
this.homeRegion = res.townStreetName;
|
this.form.homeAdcode = this.getHouseRegion(res.townStreetName).code;
|
this.homeIndex = this.getHouseRegion(res.townStreetName).index;
|
|
})
|
},
|
|
|
|
getHouseRegion(name) {
|
for (let i = 0, ii = this.regionList.length; i < ii; i++) {
|
if (this.regionList[i].name == name) {
|
return {
|
index: i,
|
code: this.regionList[i].code
|
}
|
}
|
}
|
},
|
|
|
showLabel() {
|
let arr = []
|
for (let i of this.form.householdLabelList) {
|
arr.push(i.labelName)
|
}
|
return arr.join(",")
|
},
|
|
|
//选择籍贯
|
changeNativeRegion(e) {
|
this.navtivePlaceDefault = e.detail.value
|
let {
|
code,
|
value
|
} = e.detail;
|
this.nativePlace = `${value[0]}-${value[1]}-${value[2]}`
|
this.form.nativePlaceAdcode = code[2];
|
|
},
|
|
onchange(e) {
|
// console.log("***1****" + JSON.stringify(e))
|
this.residentadDefault = e.detail.value
|
let {
|
code,
|
value
|
} = e.detail;
|
this.residentad = `${value[0]}-${value[1]}-${value[2]}`
|
this.form.residentAdcode = value[2].value;
|
},
|
onnodeclick(node) {
|
// console.log("****2***" + JSON.stringify(node))
|
},
|
|
|
//选择户籍
|
changeHouseholdRegion(e) {
|
let {
|
code,
|
value
|
} = e.detail;
|
this.residentad = `${value[0]}-${value[1]}-${value[2]}`
|
this.form.residentAdcode = code[2];
|
},
|
|
|
getRegionList() {
|
select(361102).then(res => {
|
// console.log(res);
|
if (res.code == 200) {
|
this.regionList = res.data;
|
}
|
|
})
|
},
|
|
getRegionTree() {
|
regionTree().then(res => {
|
// console.log("region ==>", res.data)
|
// callback(res.data);
|
// 城市
|
this.cityList = res.data
|
})
|
},
|
|
regionSelect(e) {
|
console.log(e);
|
const [result] = e.value;
|
this.homeIndex = e.indexs[0];
|
this.homeRegion = result.name;
|
this.form.homeAdcode = result.code;
|
this.showRegion = false;
|
},
|
|
//选择志愿者类型
|
confirmVolunteerOrg(e) {
|
this.form.volunteerOrg = ''
|
const [result] = e.value;
|
this.volunteerOrgTypeIndex = e.indexs[0];
|
this.volunteerOrg = result;
|
if (result != "其他") {
|
this.form.volunteerOrg = result;
|
} else {
|
this.form.volunteerOrg = "";
|
}
|
|
this.showVolunteerOrg = false;
|
},
|
|
|
setCardTypeDefault() {
|
this.$set(this.form, "cardType", 111)
|
this.$set(this.selectDefaultIndex, "cardType", 0)
|
this.$set(this.selectDefaultName, "cardType", "居民身份证")
|
},
|
|
//获取身份证中的出生日期
|
getBirthday(idCard) {
|
// 提取出生年月日的部分
|
let birthday = idCard.substring(6, 14);
|
|
// 将八位数字转换为年月日格式
|
let year = birthday.substring(0, 4);
|
let month = birthday.substring(4, 6);
|
let day = birthday.substring(6);
|
|
// 返回出生日期
|
return `${year}-${month}-${day}`;
|
},
|
|
async getAllBizDict() {
|
// 获取角色关系字典
|
await this.getBizDict('roleRelation', this.dataList.relationship)
|
// 获取角色字典
|
await this.getBizDict('roleType', this.dataList.roleType)
|
// 获取民族字典
|
await this.getBizDict('nationType', this.dataList.ethnicity)
|
// 获取学历字典
|
await this.getBizDict('educationType', this.dataList.education)
|
// 获取工作状态字典
|
await this.getBizDict('workStatusType', this.dataList.workStatus)
|
// 获取婚姻状态字典
|
await this.getBizDict('marriageStatusType', this.dataList.maritalStatus)
|
// 户籍类别的字典
|
await this.getBizDict('residentType', this.dataList.residentType)
|
// 健康状况的字典
|
await this.getBizDict('healthStatus', this.dataList.healthStatus)
|
//证件类型字典
|
await this.getBizDict('cardType', this.dataList.cardType)
|
|
},
|
// 获取业务字典
|
async getBizDict(code, list) {
|
const param = {
|
code: code
|
}
|
const res = await bizDictionary(param)
|
res.data.forEach(e => {
|
list.push({
|
name: e.dictValue,
|
value: Number(e.dictKey)
|
})
|
})
|
},
|
// 获取住户信息
|
async getHouseholdInfo() {
|
// 获取所有字典
|
await this.getAllBizDict()
|
// this.form = data
|
getHouseholdDetail({
|
id: this.id
|
}).then(res => {
|
if (res.code == 200) {
|
this.form = res.data;
|
let data = res.data;
|
for (let i in this.selectDefaultIndex) {
|
let {
|
index,
|
name
|
} = this.findObjValue(data[i], this.dataList[i])
|
this.selectDefaultIndex[i] = index || 0;
|
this.selectDefaultName[i] = name;
|
}
|
|
if ((data.idCard && !data.cardType) || (!data.idCard && !data.cardType)) {
|
this.setCardTypeDefault()
|
}
|
|
if (data.idCard && !data.birthday) {
|
this.form.birthday = this.getBirthday(data.idCard)
|
}
|
if (data.nativePlaceAdName) {
|
this.nativePlace =
|
`${data.nativePlaceProvinceAdName}-${data.nativePlaceCityAdName}-${data.nativePlaceAdName}`
|
this.navtivePlaceDefault = [data.nativePlaceProvinceAdName, data
|
.nativePlaceCityAdName, data.nativePlaceAdName
|
]
|
}
|
if (data.residentAdName) {
|
this.residentad =
|
`${data.residentProvinceAdName}-${data.residentCityAdName}-${data.residentAdName}`
|
this.residentadDefault = [data.residentProvinceAdName, data
|
.residentCityAdName,
|
data.residentAdName
|
]
|
}
|
|
if (data.homeAdcode) {
|
let {
|
index,
|
name
|
} = this.findObjValue(data.homeAdcode, this.regionList, "code")
|
this.homeIndex = index;
|
this.homeRegion = name;
|
} else {
|
this.setRegionDefault();
|
}
|
}
|
})
|
},
|
|
getHoldLabel() {
|
getHouseholdDetail({
|
id: this.id
|
}).then(res => {
|
if (res.code == 200) {
|
this.$set(this.form, "householdLabelList", res.data.householdLabelList)
|
}
|
})
|
},
|
|
// 显示选择弹框
|
showSelectBus(title, key) {
|
// console.log("************" + key)
|
this.selectBusList = this.dataList[key]
|
// console.log("*******1*****" + JSON.stringify(this.dataList[key]))
|
// console.log("******2******" + JSON.stringify(this.selectBusList))
|
this.selectBusTitle = title
|
// this.selectBusModel = model
|
this.selectBusKey = key
|
this.getFetchHousehold(uni.getStorageSync("crnHosueCode"))
|
this.typeShow = true
|
},
|
//类型选择确认
|
typeSelect(item) {
|
console.log("****1******" + JSON.stringify(item))
|
const [result] = item.value
|
// this[this.selectBusModel] = result.name
|
this.form[this.selectBusKey] = result.value
|
this.selectDefaultName[this.selectBusKey] = result.name;
|
this.selectDefaultIndex[this.selectBusKey] = item.indexs[0];
|
this.typeShow = !this.typeShow
|
if (this.selectBusKey === 'relationship') {
|
if (uni.getStorageSync("crnHosueCode")) {
|
this.form.landlordName = this.houseHoldInfo.name
|
this.form.landlordPhone = this.houseHoldInfo.phoneNumber
|
this.form.landlordIdCard = this.houseHoldInfo.idCard
|
}
|
}
|
},
|
// 查询住户
|
getFetchHousehold(houseCode) {
|
fetchHousehold({
|
houseCode: houseCode,
|
relationship: 1
|
}).then((res) => {
|
if (res.data.length > 0) {
|
this.houseHoldInfo = res.data[0]
|
}
|
})
|
},
|
//表单提交
|
checks() {
|
// console.log("************************************")
|
this.$refs.form.validate().then(res => {
|
// console.log("*****1111**" + res)
|
// 调用回调函数并返回结果
|
this.$emit('getDataCallback', res);
|
})
|
},
|
// 新增更新操作
|
async saveOrUpdate() {
|
this.form['houseCode'] = this.houseCode
|
this.form.roleName = uni.getStorageSync("activeRole").roleName;
|
if (this.form.cardType) {
|
if (this.form.cardType == 111) {
|
if (!this.form.idCard) {
|
// uni.showToast({
|
// title: "请输入身份证号",
|
// icon: "none"
|
// })
|
// return;
|
} else {
|
|
if (this.form.cardNo) {
|
this.form.cardNo = "";
|
}
|
|
const idCardRegex =
|
/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
|
|
if (!idCardRegex.test(this.form.idCard)) {
|
this.$showTips("身份证号有误")
|
return
|
}
|
}
|
if (this.form.idCard && !this.form.birthday) {
|
this.form.birthday = this.getBirthday(this.form.idCard)
|
}
|
} else {
|
if (!this.form.cardNo) {
|
uni.showToast({
|
title: "请输入证件号",
|
icon: "none"
|
})
|
return;
|
} else {
|
if (this.form.idCard) {
|
this.form.idCard = "";
|
}
|
}
|
}
|
}
|
// 重新赋值
|
if (this.form.volunteerOrgTemp) {
|
this.form.volunteerOrg = this.form.volunteerOrgTemp
|
}
|
|
const res = await saveOrUpdateHousehold(this.form)
|
if (res.code !== 200) {
|
uni.showToast({
|
title: "保存失败",
|
icon: "error",
|
duration: 1500
|
})
|
return
|
}
|
uni.showToast({
|
title: "保存成功",
|
icon: "success",
|
duration: 1500,
|
success: () => {
|
setTimeout(() => {
|
uni.navigateBack()
|
}, 1500)
|
}
|
})
|
},
|
|
confirmDate(e) {
|
this.form.goOutTime = uni.$u.timeFormat(e.value, 'yyyy-mm-dd')
|
this.showSelectDate = false;
|
},
|
|
confirmBirthday(e) {
|
this.form.birthday = uni.$u.timeFormat(e.value, 'yyyy-mm-dd')
|
this.showSelectBirthday = false;
|
},
|
|
findObjValue(value, obj, key = "value") {
|
let data = {
|
index: "",
|
name: ""
|
}
|
for (let i = 0, ii = obj.length; i < ii; i++) {
|
if (value == obj[i][key]) {
|
data.index = i;
|
data.name = obj[i].name;
|
}
|
}
|
return data;
|
},
|
|
navTo() {
|
// let data = JSON.parse(JSON.stringify(this.form));
|
console.log("form", this.form)
|
// this.$u.func.globalNavigator(
|
// `householdLabel?data=${JSON.stringify(data)}&from=add`)
|
// if (!this.isEdit) {
|
// this.$u.func.globalNavigator(
|
// `householdLabel?data=${JSON.stringify(data)}&from=add`)
|
// } else {
|
// this.$u.func.globalNavigator(
|
// `householdLabel?data=${JSON.stringify(data)}`)
|
// }
|
let that = this
|
that.$refs.form.validate().then(res => {
|
that.selectComponent('#formLable').$vm.init(this.form)
|
})
|
that.isShowPopupLabel = true
|
},
|
|
delAction() {
|
uni.showModal({
|
title: "提示!",
|
content: "是否要删除该家人信息?",
|
success: (res) => {
|
if (res.confirm) {
|
this.ddelActionRequest()
|
}
|
}
|
})
|
},
|
ddelActionRequest() {
|
removeHousehold(this.form.id).then(res => {
|
if (res.code == 200) {
|
setTimeout(() => {
|
uni.navigateBack();
|
}, 1000)
|
} else {
|
uni.showToast({
|
title: "删除失败",
|
icon: "error",
|
duration: 1500
|
})
|
}
|
})
|
},
|
|
queryHouseList(pageNo, pageSize) {
|
getHouseList({
|
current: pageNo,
|
size: pageSize,
|
// townStreetName: uni.getStorageSync("curStreet"),
|
address: this.addressName
|
}).then(res => {
|
this.$refs.paging.complete(res.data.records);
|
})
|
},
|
|
refreshList() {
|
this.$refs.paging.reload();
|
},
|
|
searchAddress() {
|
this.$refs.paging.reload();
|
},
|
|
clearKeyword() {
|
this.addressName = ""
|
this.$refs.paging.reload();
|
},
|
|
//选择房屋
|
selectHouse(i) {
|
this.houseCode = i.houseCode;
|
this.form.houseCode = i.houseCode;
|
this.form.currentAddress = i.address;
|
if (i.userHouseLabelVOList.length) {
|
this.houseTag = i.userHouseLabelVOList[0].labelName;
|
}
|
this.isShowPopup = false;
|
},
|
|
|
onScan() {
|
uni.scanCode({
|
success: (res) => {
|
let obj = this.getUrlParams(res.result);
|
this.getHouseDetail(obj.stdId, 1);
|
}
|
})
|
},
|
|
getUrlParams(url) {
|
let urlStr = url.split('?')[1]
|
let obj = {};
|
let paramsArr = urlStr.split('&')
|
for (let i = 0, len = paramsArr.length; i < len; i++) {
|
let arr = paramsArr[i].split('=')
|
obj[arr[0]] = arr[1];
|
}
|
return obj
|
},
|
|
navToHouseTag() {
|
uni.navigateTo({
|
url: `/subPackage/house/roomControl/index?code=${this.houseCode}&from=home`
|
})
|
},
|
|
//识别身份证信息
|
recognizeSuccess(e, index) {
|
let {
|
detail: {
|
name,
|
id,
|
address,
|
gender,
|
nationality
|
}
|
} = e;
|
|
this.$set(this.form, "name", name.text);
|
this.$set(this.form, "idCard", id.text);
|
this.selectDefaultName.gender = gender.text; //性别
|
this.selectDefaultName.ethnicity = `${nationality.text}族`; //民族
|
this.form.gender = this.getValue(this.dataList.gender, gender.text).value;
|
this.form.ethnicity = this.getValue(this.dataList.ethnicity, `${nationality.text}族`)
|
.value;
|
this.selectDefaultIndex.gender = [this.getValue(this.dataList.gender, gender.text).index];
|
this.selectDefaultIndex.ethnicity = [this.getValue(this.dataList.ethnicity, `${nationality.text}族`)
|
.index
|
];
|
let {
|
province,
|
city,
|
district
|
} = this.extractAddressComponents(address.text);
|
this.residentadDefault = [province, city, district]; //户籍地区
|
this.residentad = `${province}-${city}-${district}`;
|
this.$set(this.form, "hukouRegistration", address.text);
|
// this.getRegionTree(data => {
|
let data = this.cityList
|
for (let i = 0, ii = data.length; i < ii; i++) {
|
if (data[i].name == province) {
|
for (let j = 0, jj = data[i].children.length; j < jj; j++) {
|
for (let k = 0, kk = data[i].children[j].children.length; k < kk; k++) {
|
if (data[i].children[j].children[k].name == district) {
|
this.$set(this.form, "residentAdcode", data[i].children[j].children[k].id);
|
break;
|
}
|
}
|
}
|
}
|
}
|
// })
|
},
|
|
|
getValue(arr, name) {
|
for (let i = 0, ii = arr.length; i < ii; i++) {
|
if (arr[i].name == name) {
|
return {
|
index: i,
|
value: arr[i].value
|
}
|
}
|
}
|
},
|
|
extractAddressComponents(address) {
|
const provinceRegex = /(?<province>[^省]+省|[^自治区]+自治区|[^市]+市)/;
|
const cityRegex = /(?<city>[^市]+市|[^县]+县)/;
|
const districtRegex = /(?<district>[^区]+区|[^县]+县|[^乡]+乡|[^镇]+镇|[^街]+街)/;
|
|
let province, city, district;
|
const provinceMatch = address.match(provinceRegex);
|
if (provinceMatch && provinceMatch.groups.province) {
|
province = provinceMatch.groups.province;
|
const cityMatch = address.substring(address.indexOf(province) + province.length).match(cityRegex);
|
if (cityMatch && cityMatch.groups.city) {
|
city = cityMatch.groups.city;
|
const districtMatch = address.substring(address.indexOf(city) + city.length).match(districtRegex);
|
if (districtMatch && districtMatch.groups.district) {
|
district = districtMatch.groups.district;
|
}
|
}
|
}
|
return {
|
province,
|
city,
|
district
|
};
|
}
|
|
}
|
}
|
</script>
|
|
<style scoped lang="scss">
|
.container {
|
position: relative;
|
width: 100%;
|
height: 100%;
|
display: flex;
|
flex-direction: column;
|
background: #F5F5F5;
|
|
|
.main {
|
// position: relative;
|
// flex: 1;
|
display: flex;
|
flex-direction: column;
|
|
.content {
|
// height: 0;
|
// flex: 1;
|
// overflow-y: auto;
|
// padding: 20rpx 0 0;
|
// padding-bottom: 160rpx;
|
// padding-bottom: 36rpx;
|
}
|
|
|
.btn-group {
|
display: flex;
|
justify-content: space-around;
|
align-items: center;
|
height: 116rpx;
|
position: fixed;
|
left: 0;
|
bottom: 0;
|
width: 100%;
|
}
|
}
|
|
// .box-title {
|
// padding: 10rpx 10rpx;
|
// }
|
|
.event-info {
|
background-color: #ffffff;
|
margin: 20rpx 30rpx;
|
padding: 30rpx;
|
border-radius: 8rpx;
|
|
/deep/ .u-form-item {
|
background-color: #ffffff;
|
padding: 5px 20px;
|
border-bottom: 1rpx solid #eff1f3;
|
}
|
|
/deep/ .u-input__content__field-wrapper__field {
|
height: auto;
|
white-space: pre-wrap;
|
}
|
|
}
|
|
|
|
.event-pic {
|
background-color: #ffffff;
|
padding: 40rpx 30rpx;
|
}
|
|
}
|
|
.region {
|
width: 100%;
|
height: 100%;
|
|
.region-picker {
|
width: 100%;
|
heght: 100%;
|
}
|
|
.c-c0 {
|
color: #c0c4cc
|
}
|
|
.c-30 {
|
color: #303133;
|
}
|
}
|
|
.footer {
|
width: 100%;
|
padding: 20rpx 30rpx;
|
box-sizing: border-box;
|
z-index: 999;
|
position: fixed;
|
bottom: 0;
|
left: 0;
|
backgroun-color: #fff;
|
padding-bottom: calc(env(safe-area-inset-bottom) + 20rpx);
|
box-shadow: 0rpx 0rpx 10rpx 1rpx rgba(0, 0, 0, 0.1);
|
|
.footer-btn {
|
width: 48%;
|
height: 78rpx;
|
line-height: 78rpx;
|
border-radius: 8rpx 8rpx 8rpx 8rpx;
|
font-size: 32rpx;
|
// color: #fff;
|
}
|
|
.add-btn {
|
width: 100%;
|
background: linear-gradient(163deg, #01BDFC 0%, #017BFC 100%);
|
}
|
|
.del-btn {
|
// background: linear-gradient(163deg, #FE6C5C 0%, #EA1F1F 99%);
|
background-color: transparent;
|
border: 1px solid currentColor;
|
|
}
|
|
.save-btn {
|
background: linear-gradient(163deg, #01BDFC 0%, #017BFC 100%);
|
}
|
}
|
|
.popup-lable {
|
max-height: 80vh;
|
/* 或者其他适合的高度 */
|
overflow-y: auto;
|
}
|
|
.popup-content {
|
width: 100%;
|
padding: 0 30rpx 30rpx;
|
box-sizing: border-box;
|
background-color: #fff;
|
height: 800rpx;
|
|
.popup-title {
|
padding: 30rpx 0;
|
text-align: center;
|
font-weight: bold;
|
}
|
|
.popup-list {
|
// height: 500rpx;
|
margin-top: 20rpx;
|
}
|
|
.popup-list-item {
|
padding: 20rpx 0;
|
border-bottom: 1px solid #f1f1f1;
|
position: relative;
|
}
|
|
.address-name {
|
width: 90%;
|
}
|
|
.check-icon {
|
position: absolute;
|
right: 20rpx;
|
top: 20rpx;
|
}
|
}
|
|
.top {
|
padding: 0 30rpx;
|
marign: 20rpx 0;
|
border-radius: 8rpx;
|
}
|
|
.top-item {
|
width: 48%;
|
padding: 20rpx;
|
border-radius: 8rpx;
|
box-sizing: border-box;
|
}
|
|
.title {
|
font-size: 14px;
|
font-weight: bold;
|
margin: 20px 0 5px 0;
|
}
|
|
.data-pickerview {
|
height: 400px;
|
border: 1px #e5e5e5 solid;
|
}
|
|
.popper__arrow {
|
top: -6px;
|
left: 50%;
|
margin-right: 3px;
|
border-top-width: 0;
|
border-bottom-color: #EBEEF5;
|
}
|
|
.popper__arrow {
|
top: -6px;
|
left: 50%;
|
margin-right: 3px;
|
border-top-width: 0;
|
border-bottom-color: #EBEEF5;
|
}
|
</style>
|