Lou
2024-01-05 47909ab7f1991adb2d5c92ac00a8b0ea41764caa
subPackage/house/member/index.vue
@@ -15,10 +15,10 @@
                     <u-icon slot="right" name="arrow-right"></u-icon>
                  </u-form-item> -->
                  <u-form-item @click="showSelectBus('角色关系','relationship')" class="form-item" labelWidth="100"
                     label="角色关系" required prop="relationship">
                  <u-form-item @click="showSelectBus('与业主关系','relationship')" class="form-item" labelWidth="100"
                     label="与业主关系" required prop="relationship">
                     <u--input border="none" v-model="selectDefaultName.relationship" disabled
                        disabledColor="#ffffff" placeholder="请选择角色关系">
                        disabledColor="#ffffff" placeholder="请选择与业主关系">
                     </u--input>
                     <u-icon slot="right" name="arrow-right"></u-icon>
                  </u-form-item>
@@ -28,6 +28,13 @@
                     </u--input>
                  </u-form-item>
                  <u-form-item class="form-item" labelWidth="100" 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 @click="showSelectBus('证件类型','cardType')" class="form-item" labelWidth="100"
                     label="证件类型" prop="gender">
@@ -38,13 +45,13 @@
                  </u-form-item>
                  <u-form-item v-if="selectDefaultIndex.cardType == 0" class="form-item" labelWidth="100"
                     label="身份证号码" prop="idCard">
                  <u-form-item v-if="form.cardType == 111" class="form-item" labelWidth="100" label="身份证号码"
                     prop="idCard">
                     <u--input border="none" type="idcard " v-model="form.idCard" placeholder="请输入身份证号码">
                     </u--input>
                  </u-form-item>
                  <u-form-item v-if="selectDefaultIndex.cardType == 1" class="form-item" labelWidth="100"
                  <u-form-item v-if="form.cardType && form.cardType != 111" class="form-item" labelWidth="100"
                     label="证件号码" prop="cardNo">
                     <u--input border="none" v-model="form.cardNo" placeholder="请输入证件号码">
                     </u--input>
@@ -59,7 +66,7 @@
                     <u-icon slot="right" name="arrow-right"></u-icon>
                  </u-form-item>
                  <u-form-item class="form-item" labelWidth="100" label="手机号码" prop="phoneNumber">
                  <u-form-item class="form-item" labelWidth="100" label="手机号码" prop="phoneNumber" required>
                     <u--input border="none" type="number" v-model="form.phoneNumber" placeholder="请输入手机号码">
                     </u--input>
                  </u-form-item>
@@ -105,7 +112,7 @@
                  </u-form-item>
                  <u-form-item class="form-item" labelWidth="100" label="籍贯地区" prop="nativePlaceAdcode">
                     <view class="region">
                        <picker mode="region" @change="changeNativeRegion">
                        <picker mode="region" :value="navtivePlaceDefault" @change="changeNativeRegion">
                           <view class="region-picker c-c0" v-if="!nativePlace">
                              请选择籍贯地区
                           </view>
@@ -120,7 +127,7 @@
                  <u-form-item class="form-item" labelWidth="100" label="户籍地区" prop="residentAdcode">
                     <view class="region">
                        <picker mode="region" @change="changeHouseholdRegion">
                        <picker mode="region" :value="residentadDefault" @change="changeHouseholdRegion">
                           <view class="region-picker c-c0" v-if="!residentad">
                              请选择户籍地区
                           </view>
@@ -155,8 +162,7 @@
                     <view class="">
                        <text style="color: #c0c4cc;"
                           v-if="!form.householdLabelList || !form.householdLabelList.length">请选择标签</text>
                        <text class="f-28" v-else style="margin-right:5rpx;"
                           v-for="i in form.householdLabelList">{{i.labelName}}</text>
                        <text class="f-28" v-else>{{showLabel()}}</text>
                     </view>
                     <u-icon slot="right" name="arrow-right"></u-icon>
                  </u-form-item>
@@ -258,11 +264,6 @@
                     <u--input border="none" v-model="form.remark" placeholder="补充说明">
                     </u--input>
                  </u-form-item>
               </view>
            </u-form>
         </view>
@@ -292,8 +293,11 @@
         :show="typeShow" :columns="[selectBusList]" @close="typeShow = false" @cancel="typeShow = false"
         keyName="name" @confirm="typeSelect"></u-picker>
      <u-datetime-picker ref="datetimePicker" :show="showSelectDate" v-model="goOutTime" mode="date"
         :formatter="formatter" @confirm="confirmDate" @cancel="showSelectDate = false"></u-datetime-picker>
      <u-datetime-picker :show="showSelectDate" v-model="currentTime" mode="date" :formatter="formatter"
         @confirm="confirmDate" @cancel="showSelectDate = false"></u-datetime-picker>
      <u-datetime-picker :show="showSelectBirthday" v-model="currentTime" mode="date" @confirm="confirmBirthday"
         @cancel="showSelectBirthday = false"></u-datetime-picker>
      <u-picker :defaultIndex="[homeIndex]" :closeOnClickOverlay="true" :show="showRegion" :columns="[regionList]"
         @close="showRegion = false" @cancel="showRegion = false" keyName="name" @confirm="regionSelect"></u-picker>
@@ -338,14 +342,49 @@
               description: "",
            },
            rules: {
               // roleType: [{
               //    required: true,
               //    message: '请选择角色'
               // }],
               name: [{
               'selectDefaultName.relationship': {
                  required: true,
                  message: '请填写姓名'
               }],
                  message: '请选择与业主关系',
                  trigger: ['change', 'blur'],
               },
               'name': {
                  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: "",
@@ -400,16 +439,6 @@
               healthStatus: [],
               cardType: []
            },
            roleTypeName: '',
            relationshipName: '',
            genderName: '',
            residentialStatusName: "",
            isPrimaryContactName: '',
            ethnicityName: '',
            educationName: '',
            partyEmberName: '',
            workStatusName: '',
            maritalStatusName: '',
            // 下拉变量
            selectBusList: [],
            selectBusVal: '',
@@ -428,7 +457,8 @@
               maritalStatus: 0,
               cardType: 0,
               healthStatus: 0,
               residentType: 0
               residentType: 0,
               residentialStatus: 0
            },
            selectDefaultName: {
               roleType: "",
@@ -440,9 +470,10 @@
               partyEmber: "",
               workStatus: "",
               maritalStatus: "",
               cardType: "身份证",
               cardType: "",
               healthStatus: "",
               residentType: ""
               residentType: "",
               residentialStatus: ""
            },
            showSelectDate: false,
            regionList: [],
@@ -457,11 +488,15 @@
            from: "",
            type: "",
            id: "",
            goOutTime: Number(new Date())
            showSelectBirthday: false,
            currentTime: Number(new Date()),
         }
      },
      created() {
         this.getHeader()
      },
      onReady() {
         this.$refs.form.setRules(this.rules)
      },
      onLoad(option) {
         const data = JSON.parse(option.data)
@@ -495,21 +530,28 @@
      onShow() {
         console.log(this.form);
         if (this.id) {
            this.getHouseholdInfo()
         }
         // if (this.id) {
         //    this.getHouseholdInfo()
         // }
      },
      methods: {
         showLabel() {
            let arr = []
            for (let i of this.form.householdLabelList) {
               arr.push(i.labelName)
            }
            return arr.join(",")
         },
         //选择籍贯
         changeNativeRegion(e) {
            console.log(e);
            let {
               code,
               value
            } = e.detail;
            this.nativePlace = `${value[0]}${value[1]}${value[2]}`
            this.nativePlace = `${value[0]}-${value[1]}-${value[2]}`
            this.form.nativePlaceAdcode = code[2];
         },
@@ -520,7 +562,7 @@
               code,
               value
            } = e.detail;
            this.residentad = `${value[0]}${value[1]}${value[2]}`
            this.residentad = `${value[0]}-${value[1]}-${value[2]}`
            this.form.residentAdcode = code[2];
         },
@@ -595,26 +637,27 @@
                        index,
                        name
                     } = this.findObjValue(data[i], this.dataList[i])
                     this.selectDefaultIndex[i] = index;
                     this.selectDefaultIndex[i] = index || 0;
                     this.selectDefaultName[i] = name;
                  }
                  if (data.idCard && !data.cardType) {
                     this.$set(this.form, "cardType", this.dataList.cardType[0].dictKey)
                     this.$set(this.selectDefaultIndex, "cardType", 0)
                     this.$set(this.selectDefaultName, "cardType", "身份证")
                     this.$set(this.selectDefaultName, "cardType", "居民身份证")
                  }
                  if (data.nativePlaceAdName) {
                     this.nativePlace =
                        `${data.nativePlaceProvinceAdName}${data.nativePlaceCityAdName}${data.nativePlaceAdName}`
                        `${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.residentProvinceAdName}-${data.residentCityAdName}-${data.residentAdName}`
                     this.residentadDefault = [data.residentProvinceAdName, data
                        .residentCityAdName,
                        data.residentAdName
                     ]
                  }
@@ -656,25 +699,23 @@
         // 新增更新操作
         async saveOrUpdate() {
            this.form['houseCode'] = this.houseCode
            const idCardRegex = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/; // 支持15位、18位或者17位加上最后一位为数字或小写"X"的身份证号码
            const telRegex = /^1[3456789]\d{9}$/;
            if (this.form.idCard) {
               if (!idCardRegex.test(this.form.idCard)) {
                  uni.showToast({
                     title: "身份证号格式有误",
                     icon: "none"
                  })
                  return;
               }
            }
            if (this.form.phoneNumber) {
               if (!telRegex.test(this.form.phoneNumber)) {
                  uni.showToast({
                     title: "手机号格式有误",
                     icon: "none"
                  })
                  return;
            if (this.form.cardType) {
               if (this.form.cardType == 111) {
                  if (!this.form.idCard) {
                     uni.showToast({
                        title: "请输入身份证号",
                        icon: "none"
                     })
                     return;
                  }
               } else {
                  if (!this.form.cardNo) {
                     uni.showToast({
                        title: "请输入证件号",
                        icon: "none"
                     })
                     return;
                  }
               }
            }
            const res = await saveOrUpdateHousehold(this.form)
@@ -699,8 +740,13 @@
         },
         confirmDate(e) {
            this.showSelectDate = false;
            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") {
@@ -723,6 +769,8 @@
         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`)