shuishen
2024-03-22 fdef23064b801a06bbf369785dbbc14db14b707f
subPackage/workbench/components/formItem.vue
@@ -4,23 +4,104 @@
         <u-form-item label="姓名" required prop="name" class="form-item">
            <u--input v-model="form.name" border="none" placeholder="请填写姓名"></u--input>
         </u-form-item>
         <u-form-item @click="showGenderPicker = true" class="form-item" label="性别" prop="legalGender">
            <u--input border="none" v-model="genderValue" disabled disabledColor="#ffffff" placeholder="请选择性别">
            </u--input>
            <u-icon slot="right" name="arrow-right"></u-icon>
         </u-form-item>
         <u-form-item @click="showNationPicker = true" class="form-item" label="民族" prop="ethnicity">
            <u--input border="none" v-model="nationValue" disabled disabledColor="#ffffff" placeholder="请选择民族">
            </u--input>
            <u-icon slot="right" name="arrow-right"></u-icon>
         </u-form-item>
         <u-form-item label="身份证号" class="form-item">
            <u--input v-model="form.idCard" type="idcard" border="none" placeholder="请填写身份证号"></u--input>
         </u-form-item>
         <u-form-item label="电话号码" class="form-item">
            <u--input v-model="form.telephone" border="none" placeholder="请填写电话号码"></u--input>
         </u-form-item>
         <u-form-item label="暂住地" class="form-item">
            <u--input v-model="form.tempAddress" border="none" placeholder="请填写地址"></u--input>
         <u-form-item label="现居住地" class="form-item">
            <u--input v-model="form.tempAddress" border="none" placeholder="请填写现居住地"></u--input>
         </u-form-item>
         <!-- <u-form-item label="微信号" class="form-item">
            <u--input v-model="form.wxAccount" border="none" placeholder="请填写微信号"></u--input>
         </u-form-item> -->
         <u-form-item label="岗位" class="form-item">
            <u--input v-model="form.jobNature" border="none" placeholder="请填写岗位"></u--input>
         </u-form-item>
         <u-form-item v-if="addressType == 2" @click="showEmploymentTime = true" class="form-item" label="入职时间"
            prop="ethnicity">
            <u--input border="none" v-model="form.employmentTime" disabled disabledColor="#ffffff"
               placeholder="请选择入职时间">
            </u--input>
            <u-icon slot="right" name="arrow-right"></u-icon>
         </u-form-item>
         <u-form-item v-if="addressType == 2" @click="showResignationTime = true" class="form-item" label="离职时间"
            prop="ethnicity">
            <u--input border="none" v-model="form.resignationTime" disabled disabledColor="#ffffff"
               placeholder="请选择离职时间">
            </u--input>
            <u-icon slot="right" name="arrow-right"></u-icon>
         </u-form-item>
         <!-- <u-form-item label="户籍地址" class="form-item">
            <u--input v-model="form.registeredAddress" border="none" placeholder="请填写户籍地址"></u--input>
         </u-form-item> -->
         <u-form-item label="从业人员照片" class="form-item" labelPosition="top" labelWidth="100">
            <view style="padding:20rpx 0 0;">
               <u-upload :fileList="form.employerImg" :previewFullImage="uploadConfig.previewFullImage"
                  :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple"
                  :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture"
                  uploadIcon="/static/icon/upload.png" @afterRead="afterReadImgs" @delete="deleteImages">
               </u-upload>
            </view>
         </u-form-item>
      </u-form>
      <u-datetime-picker ref="datetimePicker" :show="showEmploymentTime" v-model="workTime" mode="date"
         :formatter="formatter" @confirm="confirmEmploymentTime"
         @cancel="showEmploymentTime = false"></u-datetime-picker>
      <u-datetime-picker ref="datetimePicker" :show="showResignationTime" v-model="workTime" mode="date"
         :formatter="formatter" @confirm="confirmResignationTime"
         @cancel="showResignationTime = false"></u-datetime-picker>
      <u-picker :defaultIndex="nationTypeListIndex" :closeOnClickOverlay="true" :show="showNationPicker"
         :columns="[nationTypeList]" @close="showNationPicker = false" @cancel="showNationPicker = false"
         keyName="name" @confirm="confirmNation"></u-picker>
      <u-picker :defaultIndex="genderIndex" :closeOnClickOverlay="true" :show="showGenderPicker" :columns="[gender]"
         @close="showGenderPicker = false" @cancel="showGenderPicker = false" keyName="name"
         @confirm="confirmGender"></u-picker>
   </view>
</template>
<script>
   import {
      bizDictionary
   } from '@/api/system/dict.js'
   import uploadMixin from "@/mixin/uploadMixinPlace";
   export default {
      mixins: [uploadMixin],
      data() {
         return {
            form: {
               name: '',
               telephone: '',
               tempAddress: ''
               tempAddress: '',
               idCard: '',
               gender: "",
               ethnicity: "",
               registeredAddress: "",
               jobNature: "",
               wxAccount: "",
               employer: "",
               jobNature: "",
               employerImg: []
            },
            rules: {
               name: {
@@ -29,8 +110,110 @@
                  message: '请填写姓名',
                  trigger: ['blur', 'change']
               }
            }
            },
            nationTypeList: [], //民族
            nationTypeIndex: [0],
            nationValue: "",
            gender: [{ //性别
                  value: 1,
                  name: '男',
               },
               {
                  value: 0,
                  name: '女',
               }
            ],
            genderIndex: [0],
            genderValue: "",
            showNationPicker: false,
            showGenderPicker: false,
            showEmploymentTime: false,
            showResignationTime: false,
            workTime: Number(new Date()),
            addressType: ""
         }
      },
      created() {
         this.addressType = uni.getStorageSync("siteInfo").addressType;
         this.getAllBizDict()
      },
      methods: {
         async getAllBizDict() {
            // 获取民族
            await this.getBizDict('nationType', this.nationTypeList);
         },
         // 获取业务字典
         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)
               })
            })
         },
         //选择民族
         confirmNation(e) {
            this.nationIndex = e.indexs;
            this.nationValue = e.value[0].name;
            this.form.ethnicity = e.value[0].value;
            this.showNationPicker = false;
         },
         //选择性别
         confirmGender(e) {
            this.genderIndex = e.indexs;
            this.genderValue = e.value[0].name;
            this.form.gender = e.value[0].value;
            this.showGenderPicker = false;
         },
         //上传成功后对返回数据进行处理
         async afterReadImgs(event) {
            this.showLoading()
            let lists = [].concat(event.file)
            let fileListLen = this.form.employerImg.length
            lists.map((item) => {
               this.form.employerImg.push({
                  ...item,
                  status: 'uploading',
                  message: '上传中'
               })
            })
            for (let i = 0; i < lists.length; i++) {
               const result = await this.uploadFilePromise(lists[i].url)
               this.form.employerImg.splice(fileListLen, 1, Object.assign({}, {
                  url: result.data.link,
                  name: result.data.name
               }))
               fileListLen++
            }
            this.loadingClose()
         },
         deleteImages(event) {
            this.form.employerImg.splice(event.index, 1)
         },
         confirmResignationTime(e) {
            this.form.resignationTime = uni.$u.timeFormat(e.value, 'yyyy-mm-dd')
            this.showResignationTime = false;
         },
         confirmEmploymentTime(e) {
            this.form.employmentTime = uni.$u.timeFormat(e.value, 'yyyy-mm-dd')
            this.showEmploymentTime = false;
         },
      }
   }
</script>