From c730ebc8db71ecf8eb3afe90bf9eaec93fe90070 Mon Sep 17 00:00:00 2001
From: linwe <872216996@qq.com>
Date: Wed, 05 Jun 2024 18:00:51 +0800
Subject: [PATCH] 人口采集一次可采集多个人

---
 subPackage/house/member/add.vue          |  428 +++-----------
 api/house/household.js                   |    9 
 subPackage/house/components/userInfo.vue | 1308 +++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 1,409 insertions(+), 336 deletions(-)

diff --git a/api/house/household.js b/api/house/household.js
index 76252a6..52c295e 100644
--- a/api/house/household.js
+++ b/api/house/household.js
@@ -27,6 +27,15 @@
 	})
 }
 
+// 住户新增修改
+export const saveOrUpdateHouseholdBatch = (data) => {
+	return http.request({
+		url: 'blade-household/household/saveOrUpdateHouseholdBatch',
+		method: 'POST',
+		data
+	})
+}
+
 // 住户删除
 export const removeHousehold = (ids) => {
 	return http.request({
diff --git a/subPackage/house/components/userInfo.vue b/subPackage/house/components/userInfo.vue
new file mode 100644
index 0000000..4d54184
--- /dev/null
+++ b/subPackage/house/components/userInfo.vue
@@ -0,0 +1,1308 @@
+<template>
+	<view class="container">
+		<view class="main">
+			<view class="content">
+				<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">
+								<picker mode="region" :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('民族','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 @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 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">
+								<picker mode="region" :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" :formatter="formatter"
+			@confirm="confirmDate" @cancel="showSelectDate = false" :minDate="goOutMinDate"></u-datetime-picker>
+
+		<u-datetime-picker :show="showSelectBirthday" v-model="currentTime" mode="date" @confirm="confirmBirthday"
+			@cancel="showSelectBirthday = false" :minDate="minDate"></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>
+
+	</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
+	} 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'
+	export default {
+		components: {
+			selectBus,
+			boxTitle
+		},
+		mixins: [uploadMixin],
+		data() {
+			return {
+				addOrUpdateTitle: "添加",
+				houseCode: "",
+				form: {
+					// roleName: "",
+					// relationName: '',
+					// location: "",
+					// title: "",
+					// roleType:null,
+					// description: "",
+				},
+				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'],
+					},
+					// 'idCard': [{
+					// 		type: 'string',
+					// 		required: false,
+					// 		message: '请输入身份证号码',
+					// 		trigger: ['change', 'blur']
+					// 	},
+					// 	{
+					// 		validator: (rule, value, callback) => {
+					// 			const idCardRegex =
+					// 				/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
+					// 			return idCardRegex.test(value)
+					// 		},
+
+					// 		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: "",
+					gender: "",
+					isPrimaryContact: "",
+					ethnicity: "",
+					education: "",
+					partyEmber: "",
+					workStatus: "",
+					maritalStatus: "",
+					cardType: "",
+					healthStatus: "",
+					residentType: "",
+					residentialStatus: ""
+				},
+				showSelectDate: false,
+				regionList: [],
+				nativePlace: "", //籍贯
+				residentad: "", //户籍
+				homeRegion: "", //居住地	
+				homeIndex: 0,
+				showRegion: false,
+				navtivePlaceDefault: [],
+				residentadDefault: [],
+				isEdit: false,
+				from: "",
+				type: "",
+				id: "",
+				showSelectBirthday: false,
+				currentTime: Number(new Date()),
+				minDate: "",
+				goOutMinDate: "",
+				isShowPopup: false,
+				addressName: "",
+				houseList: [],
+				volunteerOrgTypeList: ["信州义警", "蓝天救援", "其他"],
+				volunteerOrgTypeIndex: [0],
+				volunteerOrg: "",
+				showVolunteerOrg: false,
+				houseTag: "" //房屋标签
+			}
+		},
+		created() {
+			this.getHeader()
+			this.getAllBizDict()
+			this.setCardTypeDefault()
+
+		},
+		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.getRegionList()
+			await this.getAllBizDict()
+			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: {
+
+			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) {
+				let {
+					code,
+					value
+				} = e.detail;
+				this.nativePlace = `${value[0]}-${value[1]}-${value[2]}`
+				this.form.nativePlaceAdcode = code[2];
+
+			},
+
+			//选择户籍
+			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(callback) {
+				regionTree().then(res => {
+					console.log("region ==>", res.data)
+					callback(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("************" + JSON.stringify(this.dataList))
+				this.selectBusList = this.dataList[key]
+				console.log("************" + JSON.stringify(this.selectBusList))
+				this.selectBusTitle = title
+				// this.selectBusModel = model
+				this.selectBusKey = key
+				this.typeShow = true
+			},
+			//类型选择确认
+			typeSelect(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
+			},
+			//表单提交
+			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));
+				// 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)}`)
+				}
+			},
+
+			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 => {
+				// 	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-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;
+	}
+</style>
\ No newline at end of file
diff --git a/subPackage/house/member/add.vue b/subPackage/house/member/add.vue
index 5761dfe..6cbd144 100644
--- a/subPackage/house/member/add.vue
+++ b/subPackage/house/member/add.vue
@@ -24,7 +24,6 @@
 
 				<u-form labelWidth="70" :model="form" :rules="rules" ref="form">
 					<view class="event-info">
-
 						<view class="box-title">
 							<box-title title="基础信息"></box-title>
 						</view>
@@ -46,304 +45,26 @@
 							</u--input>
 							<u-icon slot="right" name="arrow-right"></u-icon>
 						</u-form-item>
-
-						<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">
-								<picker mode="region" :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('民族','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 @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 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">
-								<picker mode="region" :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 class="info" v-for="(item, index) in personNumArr" :key="index">
+					<view class="">
+						<userInfo @getDataCallback="handleData" id="formRef" ref="formRef"></userInfo>
+					</view>
+				</view>
+
+				<view class="add-person" style="padding:20rpx 30rpx;" v-if="!currentId">
+					<u-button type="success" plain @click="addPerson">再加一人</u-button>
+				</view>
 			</view>
 
 
-			<!-- <view class="footer flex j-c-s-b a-i-c bgc-ff" v-if="(type == 1 && from == 'family')  || !from">
-				<ocr-navigator @onSuccess="recognizeSuccess()" certificateType="idCard" :opposite="false"
-					style="width:48%;">
-					<view class="del-btn c-main footer-btn flex j-c-c a-i-c" style="width:100%;">
-						<u-icon name="scan" color="#017BFC" size="24"></u-icon>
-						<text class="f-26 " style="margin-left: 10rpx;">身份证信息识别</text>
-					</view>
-				</ocr-navigator>
-				<button class="save-btn footer-btn c-ff" @click="submit">保存</button>
-			</view> -->
 
 			<footer-btn v-if="(type == 1 && from == 'family')  || !from" :text="addOrUpdateTitle" @click="submit" />
 		</view>
 
-		<!-- 事件类型下拉框 -->
-		<!-- 	<select-bus v-if="typeShow" :show="typeShow" v-model="form[selectBusModel]" type="radio"
-			:popupTitle="selectBusTitle" :dataLists="selectBusList" @cancel="typeShow = false" @submit="typeSelect">
-		</select-bus> -->
-		<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" :formatter="formatter"
-			@confirm="confirmDate" @cancel="showSelectDate = false" :minDate="goOutMinDate"></u-datetime-picker>
-
-		<u-datetime-picker :show="showSelectBirthday" v-model="currentTime" mode="date" @confirm="confirmBirthday"
-			@cancel="showSelectBirthday = false" :minDate="minDate"></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">
@@ -382,7 +103,8 @@
 	import {
 		getHouseholdDetail,
 		saveOrUpdateHousehold,
-		removeHousehold
+		removeHousehold,
+		saveOrUpdateHouseholdBatch
 	} from '@/api/house/household.js'
 	import {
 		bizDictionary
@@ -399,10 +121,12 @@
 	} from "@/api/house/house.js"
 
 	import boxTitle from '../components/boxTitle/index2.vue'
+	import userInfo from '../components/userInfo.vue'
 	export default {
 		components: {
 			selectBus,
-			boxTitle
+			boxTitle,
+			userInfo
 		},
 		mixins: [uploadMixin],
 		data() {
@@ -427,6 +151,12 @@
 						type: 'string',
 						required: true,
 						message: '请填写姓名',
+						trigger: ['change', 'blur'],
+					},
+					'currentAddress': {
+						type: 'string',
+						required: true,
+						message: '请填写房屋',
 						trigger: ['change', 'blur'],
 					},
 					'volunteerOrgTemp': {
@@ -581,7 +311,10 @@
 				volunteerOrgTypeIndex: [0],
 				volunteerOrg: "",
 				showVolunteerOrg: false,
-				houseTag: "" //房屋标签
+				houseTag: "", //房屋标签
+				personNumArr: [{}],
+				personNum: 0
+
 			}
 		},
 		created() {
@@ -591,16 +324,18 @@
 			this.$refs.form.setRules(this.rules)
 		},
 		async onLoad(option) {
+			this.personNum++;
+			// this.personNumArr.push(1);
 			this.minDate = Number(new Date('1900-01-01')); //设置出生日期选择器最小值
 			this.goOutMinDate = Number(new Date('1970-01-01')); //设置外出时间选择器最小值
 			// const data = JSON.parse(option.data)
 			// this.houseCode = data.houseCode;
 			await this.getRegionList()
-			await this.getAllBizDict()
+			// await this.getAllBizDict()
 			this.setCardTypeDefault()
 			this.homeRegion = uni.getStorageSync("curStreet")
-			this.form.homeAdcode = this.getHouseRegion(uni.getStorageSync("curStreet")).code;
-			this.homeIndex = this.getHouseRegion(uni.getStorageSync("curStreet")).index;
+			// this.form.homeAdcode = this.getHouseRegion(uni.getStorageSync("curStreet")).code;
+			// this.homeIndex = this.getHouseRegion(uni.getStorageSync("curStreet")).index;
 			// this.getHouseDetail();
 			// this.type = data.type;
 			// if (data.id) {
@@ -642,6 +377,17 @@
 		},
 
 		methods: {
+			addPerson() {
+				this.personNum++
+				this.personNumArr.push(1)
+				// let that = this
+				// that.selectComponent('#formRef').$vm.checks()
+			},
+
+			deletePerson(index) {
+				this.personNum--;
+				this.personNumArr.splice(index, 1)
+			},
 
 			getHouseDetail(code, type) {
 				getQrCodeDetail({
@@ -922,59 +668,69 @@
 			},
 			//表单提交
 			submit() {
-				this.$refs.form.validate().then(res => {
-					this.saveOrUpdate();
+				let that = this
+				// that.$refs.formRef.checks()
+				that.$refs.form.validate().then(res => {
+					that.selectComponent('#formRef').$vm.checks()
 				})
+			},
+			handleData(res) {
+				console.log("-----------" + res)
+				if (res) {
+					this.saveOrUpdate();
+				}
 			},
 			// 新增更新操作
 			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 {
+				const placePractitioner = []
+				this.$refs.formRef.forEach(item => {
+					item.form['houseCode'] = this.houseCode
+					item.form.roleName = uni.getStorageSync("activeRole").roleName;
+					if (!item.form.relationship) {
+						item.form.relationship = 19
+					}
+					if (item.form.cardType) {
+						if (item.form.cardType == 111) {
+							if (!item.form.idCard) {} else {
+								if (item.form.cardNo) {
+									item.form.cardNo = "";
+								}
+								const idCardRegex =
+									/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
 
-							if (this.form.cardNo) {
-								this.form.cardNo = "";
+								if (!idCardRegex.test(item.form.idCard)) {
+									this.$showTips("身份证号有误")
+									return
+								}
 							}
-
-							const idCardRegex =
-								/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
-
-							if (!idCardRegex.test(this.form.idCard)) {
-								this.$showTips("身份证号有误")
-								return
+							if (item.form.idCard && !item.form.birthday) {
+								item.form.birthday = this.getBirthday(item.form.idCard)
 							}
-						}
-						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 (!item.form.cardNo) {
+								uni.showToast({
+									title: "请输入证件号",
+									icon: "none"
+								})
+								return;
+							} else {
+								if (item.form.idCard) {
+									item.form.idCard = "";
+								}
 							}
 						}
 					}
+					//  重新赋值
+					// if (item.form.volunteerOrgTemp) {
+					// 	item.form.volunteerOrg = item.form.volunteerOrgTemp
+					// }
+					placePractitioner.push(item.form)
+				})
+				this.personNumArr = placePractitioner
+				let datas = {
+					householdVOList: this.personNumArr
 				}
-				//  重新赋值
-				if (this.form.volunteerOrgTemp) {
-					this.form.volunteerOrg = this.form.volunteerOrgTemp
-				}
-
-				const res = await saveOrUpdateHousehold(this.form)
+				const res = await saveOrUpdateHouseholdBatch(datas)
 				if (res.code !== 200) {
 					uni.showToast({
 						title: "保存失败",

--
Gitblit v1.9.3