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