Ver código fonte

fix: 求职人员身份证调整为非必填与其他模块修改

zhangying 9 meses atrás
pai
commit
4ccc540cee

+ 2 - 2
h5app/src/views/pages/company/edit.vue

@@ -25,7 +25,7 @@
       </div>
       <form autocomplete="off">
         <div class="bw-vue-form">
-          <div class="form-title">基本信息</div>
+          <div class="form-title">基本项目</div>
           <div class="form-input">
             <ion-label>企业名称<span class="danger">*</span></ion-label>
             <div>
@@ -115,7 +115,7 @@
             </ion-input>
           </div>
           <div class="form-title">
-            扩展信息
+            扩展项目
             <div style="float:right;">
               <ion-label style="color: red;font-size: 14px;" @click="isShow=!isShow">{{isShow?"收起":"展开"}}</ion-label>
             </div>

+ 2 - 2
h5app/src/views/pages/jobUserInfo/companyEdit.vue

@@ -23,7 +23,7 @@
       </div>
       <form autocomplete="off">
         <div class="bw-vue-form">
-          <div class="form-title">基本信息</div>
+          <div class="form-title">基本项目</div>
           <div class="form-input">
             <ion-label>企业名称<span class="danger">*</span></ion-label>
             <div>
@@ -111,7 +111,7 @@
             </ion-input>
           </div>
           <div class="form-title">
-            其他信息
+            扩展项目
             <div style="float:right;">
               <ion-label style="color: red;font-size: 14px;" @click="isShow=!isShow">{{isShow?"收起":"展开"}}</ion-label>
             </div>

+ 3 - 2
h5app/src/views/pages/jobUserInfo/honorEdit.vue

@@ -87,7 +87,8 @@ const honorData = reactive({
 });
 const curStepData = ref({
   name: "",
-  statusVal: 2
+  statusVal: 2,
+  loginUserID: ""
 });
 const stepList = ref([
   {title: '基础信息', desc: '个人基础信息', val: 1},
@@ -126,7 +127,7 @@ const loadData = async (honorID: any, jobUserID: any, status: any, userID: any)
     honorData.dataModel.honorID = result.honorID;
     honorData.dataModel.honorName = result.honorName;
     honorData.dataModel.getTime = dayjs(result.getTime).format("YYYY-MM-DD");
-    honorData.dataModel.jobUserID = result.jobUserID;
+    honorData.dataModel.jobUserID = jobUserID;
   }).finally(() => {
     loading.value = false;
   })

+ 31 - 19
h5app/src/views/pages/jobUserInfo/userEdit.vue

@@ -34,18 +34,31 @@
               <!--              <ion-note slot="error">姓名不能为空</ion-note>-->
             </div>
             <div class="form-input">
-              <ion-label>公民身份号码<span class="danger">*</span></ion-label>
+              <ion-label>公民身份号码</ion-label>
               <ion-input name="identityNumber" id="identityNumber"  class="custom" :clear-input="true"
                          placeholder="请输入身份证号码" v-model="baseData.identityNumber" ></ion-input>
-              <!--              <ion-note slot="error">公民身份号码不能为空</ion-note>-->
+            </div>
+            <div class="form-input">
+              <ion-label>出生日期<span class="danger">*</span></ion-label>
+              <div class="dateTimeBox">
+                <ion-datetime-button datetime="birthDay"></ion-datetime-button>
+                <ion-modal :keep-contents-mounted="true">
+                  <ion-datetime name="birthDay" id="birthDay" placeholder="日期"
+                                v-model="baseData.birthDay" :prefer-wheel="true"
+                                dataformatas="YYYY-MM-DD" presentation="date" cancel-text="取消" done-text="确定"
+                                :show-default-buttons="true">
+                  </ion-datetime>
+                </ion-modal>
+              </div>
             </div>
             <div class="form-select">
               <ion-label>性别<span class="danger">*</span></ion-label>
-              <ion-select disabled name="sex" id="sex" okText="确定" cancelText="取消" v-model="baseData.sex"
+              <ion-select name="sex" id="sex" okText="确定" cancelText="取消" v-model="baseData.sex"
                           interface="action-sheet"  placeholder="请选择性别" style="width:100%;text-align:left;" >
-                <ion-select-option v-for=" (it,key) in genderList" :key="key"  :value="it.value" >{{ it.name }}</ion-select-option>
+                <ion-select-option v-for="(it,key) in genderList" :key="key" :value="it.value">
+                  {{ it.name }}
+                </ion-select-option>
               </ion-select>
-              <!--              <ion-note slot="error">性别不能为空</ion-note>-->
             </div>
             <div class="form-input">
               <ion-label>联系电话<span class="danger">*</span></ion-label>
@@ -221,17 +234,6 @@
                            :clear-input="true"
                            v-model="baseData.birthPlace" placeholder="请输入出生地"></ion-input>
               </div>
-              <div class="form-select" >
-                <ion-label>出生日期</ion-label>
-                <ion-datetime-button disabled datetime="birthDay" style="position:absolute;left:10px;"></ion-datetime-button>
-                <ion-modal :keep-contents-mounted="true">
-                  <ion-datetime name="birthDay" id="birthDay" placeholder="日期"
-                                v-model="baseData.birthDay"  :prefer-wheel="true"
-                                dataformatas="YYYY-MM-DD" presentation="date" cancel-text="取消" done-text="确定"
-                                :show-default-buttons="true">
-                  </ion-datetime>
-                </ion-modal>
-              </div>
               <div style="width:100%;overflow: hidden;height: 30px;"></div>
               <div class="form-select">
                 <ion-label>户口性质</ion-label>
@@ -646,7 +648,7 @@ export default defineComponent({
           regionCode:{required},
           streetCode:{required},
           name:{required},
-          identityNumber:{required},
+          birthDay: {required},
           sex:{required},
           userMobile: {required},
           address:{required},
@@ -756,7 +758,7 @@ export default defineComponent({
     const inputDataValidate = () =>{
       isAllowCommit.value = true;
       const identReg = /^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])\d{3}([0-9Xx])$/;
-      if(baseInfoData.baseData.identityNumber != null){
+      if (baseInfoData.baseData.identityNumber) {
         if(!identReg.test(baseInfoData.baseData.identityNumber)){
           presentAlert("输入的身份证号码有误!");
           isAllowCommit.value = false;
@@ -941,8 +943,10 @@ export default defineComponent({
       if(curStepData.value.statusVal==1){
         const reqData = await getJobUserById(jobUserID,userId,true);
         baseInfoData.baseData = reqData;
+        if (!reqData.birthDay) {
+          baseInfoData.baseData.birthDay = dayjs().format('YYYY-MM-DD');
+        }
         baseInfoData.baseData.openId = curOpenID.value;
-
         baseInfoData.baseData.userMobile = crtyptoHelp.decryptDesText(baseInfoData.baseData.userMobile);
         baseInfoData.baseData.identityNumber = crtyptoHelp.decryptDesText(baseInfoData.baseData.identityNumber);
         if(baseInfoData.baseData.keyPersonTypeID==2){
@@ -1200,4 +1204,12 @@ ion-select#regionCode.md.select-disabled.legacy-select::after{display: none;}
     position: absolute;
   }
 }
+
+.dateTimeBox {
+  width: 100%;
+  display: flex;
+  margin-top: 5px;
+  justify-content: space-between;
+  align-content: center;
+}
 </style>

+ 28 - 19
h5app/src/views/pages/jobhunt/edit.vue

@@ -34,20 +34,31 @@
 <!--              <ion-note slot="error">姓名不能为空</ion-note>-->
             </div>
             <div class="form-input">
-              <ion-label>公民身份号码<span class="danger">*</span></ion-label>
+              <ion-label>公民身份号码</ion-label>
               <ion-input name="identityNumber" id="identityNumber"  class="custom" :clear-input="true"
                      placeholder="请输入身份证号码" v-model="baseData.identityNumber" ></ion-input>
-<!--              <ion-note slot="error">公民身份号码不能为空</ion-note>-->
+            </div>
+            <div class="form-input">
+              <ion-label>出生日期<span class="danger">*</span></ion-label>
+              <div class="dateTimeBox">
+                <ion-datetime-button datetime="birthDay"></ion-datetime-button>
+                <ion-modal :keep-contents-mounted="true">
+                  <ion-datetime name="birthDay" id="birthDay" placeholder="日期"
+                                v-model="baseData.birthDay" :prefer-wheel="true"
+                                dataformatas="YYYY-MM-DD" presentation="date" cancel-text="取消" done-text="确定"
+                                :show-default-buttons="true">
+                  </ion-datetime>
+                </ion-modal>
+              </div>
             </div>
             <div class="form-select">
               <ion-label>性别<span class="danger">*</span></ion-label>
-              <ion-select disabled name="sex" id="sex" okText="确定" cancelText="取消" v-model="baseData.sex"
+              <ion-select name="sex" id="sex" okText="确定" cancelText="取消" v-model="baseData.sex"
                           interface="action-sheet"  placeholder="请选择性别" style="width:100%;text-align:left;" >
-                <ion-select-option v-for=" (it,key) in genderList" :key="key"  :value="it.value" >
+                <ion-select-option v-for="(it,key) in genderList" :key="key" :value="it.value">
                   {{ it.name }}
                 </ion-select-option>
               </ion-select>
-<!--              <ion-note slot="error">性别不能为空</ion-note>-->
             </div>
             <div class="form-input">
              <ion-label>联系电话<span class="danger">*</span></ion-label>
@@ -213,17 +224,6 @@
             <ion-input name="birthPlace" id="birthPlace" style="text-align: left;" class="custom" :clear-input="true"
                        v-model="baseData.birthPlace" placeholder="请输入出生地"></ion-input>
           </div>
-          <div class="form-select" >
-            <ion-label>出生日期</ion-label>
-            <ion-datetime-button disabled datetime="birthDay" style="position:absolute;left:10px;"></ion-datetime-button>
-            <ion-modal :keep-contents-mounted="true">
-              <ion-datetime name="birthDay" id="birthDay" placeholder="日期"
-                            v-model="baseData.birthDay"  :prefer-wheel="true"
-                            dataformatas="YYYY-MM-DD" presentation="date" cancel-text="取消" done-text="确定"
-                            :show-default-buttons="true">
-              </ion-datetime>
-            </ion-modal>
-          </div>
           <div style="width:100%;overflow: hidden;height: 30px;"></div>
           <div class="form-select">
             <ion-label>户口性质</ion-label>
@@ -647,11 +647,10 @@ export default defineComponent({
     });
     const baseDataRule = computed(()=>{
       return {baseData:{
-          // siteID:{required},
           regionCode:{required},
           streetCode:{required},
           name:{required},
-          identityNumber:{required},
+          birthDay: {required},
           sex:{required},
           userMobile:{required},
           address:{required},
@@ -765,7 +764,7 @@ export default defineComponent({
     const inputDataValidate = () =>{
       isAllowCommit.value = true;
       const identReg = /^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])\d{3}([0-9Xx])$/;
-      if(baseInfoData.baseData.identityNumber != null){
+      if (baseInfoData.baseData.identityNumber) {
         if(!identReg.test(baseInfoData.baseData.identityNumber)){
           presentAlert("输入的身份证号码有误!");
           isAllowCommit.value = false;
@@ -956,6 +955,9 @@ export default defineComponent({
         const reqData = await getJobUserById(jobUserID,curUserID,true);
         isEdit.value = jobUserID != null;
         baseInfoData.baseData = reqData;
+        if (!reqData.birthDay) {
+          baseInfoData.baseData.birthDay = dayjs().format('YYYY-MM-DD');
+        }
         baseInfoData.baseData.userMobile = crtyptoHelp.decryptDesText(baseInfoData.baseData.userMobile);
         baseInfoData.baseData.identityNumber = crtyptoHelp.decryptDesText(baseInfoData.baseData.identityNumber);
         baseInfoData.baseData.loginUserID = curUserID;
@@ -1216,4 +1218,11 @@ ion-select#regionCode.md.select-disabled.legacy-select::after{display: none;}
   }
 }
 
+.dateTimeBox {
+  width: 100%;
+  display: flex;
+  margin-top: 5px;
+  justify-content: space-between;
+  align-content: center;
+}
 </style>

+ 1 - 1
h5app/src/views/pages/jobhunt/honorEdit.vue

@@ -126,7 +126,7 @@ const loadData = async (honorID: any, jobUserID: any, status: any, isEdit: any)
     honorData.dataModel.honorID = result.honorID;
     honorData.dataModel.honorName = result.honorName;
     honorData.dataModel.getTime = dayjs(result.getTime).format("YYYY-MM-DD");
-    honorData.dataModel.jobUserID = result.jobUserID;
+    honorData.dataModel.jobUserID = jobUserID;
   }).finally(() => {
     loading.value = false;
   })

+ 46 - 30
src/main/java/com/hz/employmentsite/services/impl/jobUserManager/JobUserServiceImpl.java

@@ -112,7 +112,7 @@ public class JobUserServiceImpl implements JobUserService {
             item.setUserMobile(calculateUtils.maskMobile(desUtils.decoderText(item.getUserMobile())));
             String idNumber = desUtils.decoderText(item.getIdentityNumber());
             item.setIdentityNumber(idNumber);
-            item.setAge(calculateUtils.calculateAge(idNumber));
+            item.setAge(dateUtils.calculateAge(dateUtils.dateToStr(item.getBirthDay())));
         });
         PageInfo<JobUserVo> result = new PageInfo(list);
 
@@ -347,13 +347,15 @@ public class JobUserServiceImpl implements JobUserService {
                 experience.setCreateUserID(userId);
                 pcExperienceMapper.insert(experience);
             });
-            data.getJobHonorList().stream().forEach(honor -> {
-                honor.setHonorID(UUID.randomUUID().toString());
-                honor.setJobUserID(data.getJobUserID());
-                honor.setCreateTime(new Date());
-                honor.setCreateUserID(userId);
-                honorService.save(honor);
-            });
+            if (!data.getJobHonorList().isEmpty()){
+                data.getJobHonorList().stream().forEach(honor -> {
+                    honor.setHonorID(UUID.randomUUID().toString());
+                    honor.setJobUserID(data.getJobUserID());
+                    honor.setCreateTime(new Date());
+                    honor.setCreateUserID(userId);
+                    honorService.save(honor);
+                });
+            }
         }
         return result;
     }
@@ -362,11 +364,20 @@ public class JobUserServiceImpl implements JobUserService {
 
         var result = 0;
         PcJobuserExample jobUserExp10 = new PcJobuserExample();
-        jobUserExp10.or().andIdentityNumberEqualTo(data.getIdentityNumber()).andNameEqualTo(data.getName()).andJobuserIDNotEqualTo(data.getJobUserID());
-        if( pcJobuserMapper.selectByExample(jobUserExp10).size()>0){
+        PcJobuserExample.Criteria criteria = jobUserExp10.or();
+        List<PcJobuser> selectByExample = new ArrayList<>();
+
+        // 未填写身份证时不进行查询与判断
+        if (!stringUtils.IsNullOrEmpty(data.getIdentityNumber())) {
+            criteria.andIdentityNumberEqualTo(data.getIdentityNumber());
+            criteria.andNameEqualTo(data.getName());
+            criteria.andJobuserIDNotEqualTo(data.getJobUserID());
+            selectByExample = pcJobuserMapper.selectByExample(jobUserExp10);
+        }
+        if(!selectByExample.isEmpty()){
             //系统存在与当前保存求职人员相同的姓名和身份证号码则判断是否前数据是否为惠州市就业驿站人员插入
-            var repeatData = pcJobuserMapper.selectByExample(jobUserExp10).stream().findFirst().orElse(null);
-            if( repeatData != null){
+            var repeatData = selectByExample.stream().findFirst().orElse(null);
+            if(repeatData != null){
                 PcSiteUserExample siteUserExp = new PcSiteUserExample();
                 siteUserExp.or().andUserIDEqualTo(repeatData.getCreateUserID());
                 var createSiteUserInfo= pcSiteUserMapper.selectByExample(siteUserExp).stream().findFirst().orElse(null);
@@ -392,9 +403,12 @@ public class JobUserServiceImpl implements JobUserService {
             }
         }
         else{
-            PcJobuserExample jobUserExp1 = new PcJobuserExample();
-            jobUserExp1.or().andIdentityNumberEqualTo(data.getIdentityNumber()).andJobuserIDNotEqualTo(data.getJobUserID());
-            var ifRepeatIdentity = pcJobuserMapper.selectByExample(jobUserExp1).size()>0;
+            boolean ifRepeatIdentity = false;
+            if (!stringUtils.IsNullOrEmpty(data.getIdentityNumber())){
+                PcJobuserExample jobUserExp1 = new PcJobuserExample();
+                jobUserExp1.or().andIdentityNumberEqualTo(data.getIdentityNumber()).andJobuserIDNotEqualTo(data.getJobUserID());
+                ifRepeatIdentity = pcJobuserMapper.selectByExample(jobUserExp1).size()>0;
+            }
             PcJobuserExample jobUserExp2 = new PcJobuserExample();
             jobUserExp2.or().andUserMobileEqualTo(data.getUserMobile()).andJobuserIDNotEqualTo(data.getJobUserID());
             var ifRepeatMobile = pcJobuserMapper.selectByExample(jobUserExp2).size()>0;
@@ -682,10 +696,12 @@ public class JobUserServiceImpl implements JobUserService {
             if (stringUtils.IsNullOrEmpty(item.getName())){
                 errorInfo += "请填写姓名!";
             }
-
-            if (stringUtils.IsNullOrEmpty(item.getIdentityNumber()))
-                errorInfo += "请填写身份证号码!";
-            else{
+            if (stringUtils.IsNullOrEmpty(item.getBirthDayStr())){
+                errorInfo += "请填写出生日期!";
+            } else {
+                item.setBirthDay(dateUtils.StrToDate(item.getBirthDayStr()));
+            }
+            if (!stringUtils.IsNullOrEmpty(item.getIdentityNumber())){
                 if(regexUtils.theIdCardIsValid(item.getIdentityNumber())) {
                     var birthDay = dateUtils.StrToDate((item.getIdentityNumber().substring(6,10)+"-"+item.getIdentityNumber().substring(10,12)+"-"+item.getIdentityNumber().substring(12,14)),"yyyy-MM-dd");
                     var sexStr = Integer.parseInt(item.getIdentityNumber().substring(16,17));
@@ -702,21 +718,21 @@ public class JobUserServiceImpl implements JobUserService {
                         }
                     }
                     item.setIdentityNumber(desUtils.encoderText(item.getIdentityNumber()));
-                    if (stringUtils.IsNullOrEmpty(item.getUserMobile()))
-                        errorInfo += "请填写联系电话!";
-                    else{
-                        if(!regexUtils.theMobileIsValid(item.getUserMobile(),false)){
-                            errorInfo += "联系电话不合法!";
-                        }else{
-                            item.setUserMobile(desUtils.encoderText(item.getUserMobile()));
-                            var repeatResult = ifHadRepeatData(item,false,userID);
-                            errorInfo += !repeatResult.equals("0")? repeatResult:"";
-                        }
-                    }
                 }else{
                     errorInfo += "身份证号码不合法!";
                 }
             }
+            if (stringUtils.IsNullOrEmpty(item.getUserMobile()))
+                errorInfo += "请填写联系电话!";
+            else{
+                if(!regexUtils.theMobileIsValid(item.getUserMobile(),false)){
+                    errorInfo += "联系电话不合法!";
+                }else{
+                    item.setUserMobile(desUtils.encoderText(item.getUserMobile()));
+                    var repeatResult = ifHadRepeatData(item,false,userID);
+                    errorInfo += !repeatResult.equals("0")? repeatResult:"";
+                }
+            }
 
             if (stringUtils.IsNullOrEmpty(item.getSexName()))
                 errorInfo += "请选择性别!";

+ 0 - 1
src/main/java/com/hz/employmentsite/util/CalculateUtils.java

@@ -80,5 +80,4 @@ public class CalculateUtils {
 
     }
 
-
 }

+ 1 - 0
src/main/java/com/hz/employmentsite/vo/jobUserManager/JobHuntVo.java

@@ -16,6 +16,7 @@ public class JobHuntVo {
     public String jobHuntID;
     public String jobUserID;
     public String jobUserName;
+    public String identityNumber;
     public String workCode;
     public String workName;
     public String areaWork;

+ 1 - 1
src/main/resources/mapping/cquery/JobHuntCQuery.xml

@@ -8,7 +8,7 @@
         jobHunt.OtherDemand
         ,jobUser.name as JobUserName,dic_jobUserType.Name as jobUserTypeStr,dic_huntJobType.Name as jobHuntTypeStr
         ,profession.ProfessionName, profession.ParentProfessionID, IFNULL(count(rmgt.RecommendMgtID),0) as recommendNum
-        ,jobUser.cultureRank
+        ,jobUser.cultureRank, jobUser.identityNumber
         , site.SiteID as siteID, inSites.InstitutionID as institutionID, site.RegionCode as regionCode
         , modifyUser.Name as modifyUserName
         from pc_jobhunt jobHunt

+ 2 - 1
src/main/resources/mapping/cquery/RecommendMgtCQuery.xml

@@ -184,6 +184,8 @@
         b.KeyPersonTypeID = dic2.`Value`
         left join pc_recommend_mgt d on a.JobHuntID = d.JobHuntID and d.PostID = #{postID}
         <where>
+            and b.identityNumber is not null
+            and b.identityNumber != ''
             <if test="type!=null and type==0">
                 and d.RecommendMgtID is null
                 and b.jobStatusID != 1
@@ -203,7 +205,6 @@
             <if test="regionNameList !=null and regionNameList!=''">
                 and area.name in (${regionNameList})
             </if>
-
             <if test="siteNameList!=null and siteNameList!=''">
                 and e.siteName in  (${siteNameList})
             </if>

BIN
src/main/resources/static/doc/template/求职人员导入模板.xlsx


+ 2 - 2
vue/src/views/companyService/company/edit.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="card-edit">
     <a-form ref="formRef" :model="dataModel" autocomplete="off" @finish="onFinish">
-      <a-divider orientation="left">基本信息</a-divider>
+      <a-divider orientation="left">基本项目</a-divider>
       <a-row :gutter="24">
         <a-col :span="8">
           <a-form-item
@@ -123,7 +123,7 @@
           </a-form-item>
         </a-col>
       </a-row>
-      <a-divider orientation="left">扩展信息</a-divider>
+      <a-divider orientation="left">扩展项目</a-divider>
       <a-row :gutter="24">
         <a-col :span="8">
           <a-form-item

+ 2 - 1
vue/src/views/jobUserManager/jobhunt/index.vue

@@ -183,7 +183,8 @@
               <a-button type="link" size="small" functioncode="T01030203" @click='onEdit(record.jobHuntID)'>编辑
               </a-button>
               <a-button type="link" size="small" functioncode="T01030204" @click="onDel(record)">删除</a-button>
-              <a-button type="link" size="small" functioncode="T01030207" @click="onRecommendCompanyPost(record)">推荐岗位
+              <a-button type="link" size="small" functioncode="T01030207" @click="onRecommendCompanyPost(record)"
+                        :disabled="!record.identityNumber">推荐岗位
               </a-button>
             </div>
           </template>

+ 56 - 92
vue/src/views/jobUserManager/jobuser/edit.vue

@@ -11,26 +11,32 @@
         </a-col>
         <a-col :span="8">
           <a-form-item  label="身份证号码" :label-col="{ span: 6 }"
-                        name="identityNumber" :rules="[{ required: true, message: '请输入身份证号码!' }]" >
+                        name="identityNumber">
             <a-input v-model:value="dataModel.identityNumber" placeholder="" @change="onIdentityNumberChange()"/>
           </a-form-item>
         </a-col>
         <a-col :span="8">
-        <a-form-item label="性别" :label-col="{span:6}"
-                     name="sex" :rules="[{ required: true, message: '请选择性别!' }]">
-          <a-select
-            ref="select" disabled
-            v-model:value="dataModel.sex"
-            :options="genderList"
-            :field-names="{ label: 'name', value: 'value' }"
-            :allow-clear="true"
-          >
-          </a-select>
-        </a-form-item>
-      </a-col>
-      </a-row>
-
-      <a-row :gutter="24">
+          <a-form-item label="出生日期" :label-col="{ span: 6 }" name="birthDay"
+                       :rules="[{ required: true, message: '请选择出生日期!' }]">
+            <a-date-picker
+              v-model:value="dataModel.birthDay"
+              picker="date"
+              value-format="YYYY-MM-DD"/>
+          </a-form-item>
+        </a-col>
+        <a-col :span="8">
+          <a-form-item label="性别" :label-col="{span:6}"
+                       name="sex" :rules="[{ required: true, message: '请选择性别!' }]">
+            <a-select
+              ref="select"
+              v-model:value="dataModel.sex"
+              :options="genderList"
+              :field-names="{ label: 'name', value: 'value' }"
+              :allow-clear="true"
+            >
+            </a-select>
+          </a-form-item>
+        </a-col>
         <a-col :span="8">
           <a-form-item label="重点人员类别" :label-col="{span:6}" name="keyPersonTypeID"
                        :rules="[{ required: true, message: '请选择重点人员类别!' }]">
@@ -58,6 +64,9 @@
             </a-select>
           </a-form-item>
         </a-col>
+      </a-row>
+
+      <a-row :gutter="24">
         <a-col :span="8">
           <a-form-item label="所属驿站" :label-col="{span:6}" name="siteID"
                        :rules="[{ required: true, message: '请选择所属驿站!' }]">
@@ -72,9 +81,6 @@
             </a-select>
           </a-form-item>
         </a-col>
-      </a-row>
-
-      <a-row :gutter="24">
         <a-col :span="8">
           <a-form-item label="毕业日期" :label-col="{ span: 6 }"
                        name="finishDate" :rules="[{ required: isGraduating,message: '请选择毕业日期!' }]">
@@ -89,14 +95,15 @@
             <a-input v-model:value="dataModel.userName" placeholder=""/>
           </a-form-item>
         </a-col>
+      </a-row>
+
+      <a-row :gutter="24">
         <a-col :span="8">
           <a-form-item label="联系电话" :label-col="{ span: 6 }"
                        name="userMobile" :rules="[{ required: true,message: '请输入联系电话!' }]">
             <a-input  v-model:value="dataModel.userMobile" placeholder=""/>
           </a-form-item>
         </a-col>
-      </a-row>
-      <a-row :gutter="24">
         <a-col :span="8">
           <a-form-item
             label="地址"
@@ -115,8 +122,6 @@
             <a-input v-model:value="dataModel.nativePlace" placeholder=""/>
           </a-form-item>
         </a-col>
-        <a-col :span="8">
-        </a-col>
       </a-row>
 
       <a-divider orientation="left">其他信息</a-divider>
@@ -191,14 +196,6 @@
       </a-row>
 
       <a-row :gutter="24">
-        <a-col :span="8">
-          <a-form-item label="出生日期" :label-col="{ span: 6 }" name="birthDay" >
-            <a-date-picker disabled
-              v-model:value="dataModel.birthDay"
-              picker="date"
-              value-format="YYYY-MM-DD"/>
-          </a-form-item>
-        </a-col>
         <a-col :span="8">
           <a-form-item label="户口性质" :label-col="{span:6}" name="familyNatureID" >
             <a-select
@@ -223,9 +220,6 @@
             </a-select>
           </a-form-item>
         </a-col>
-      </a-row>
-
-      <a-row :gutter="24">
         <a-col :span="8">
           <a-form-item label="健康状况" :label-col="{span:6}" name="healthID">
             <a-select
@@ -238,6 +232,9 @@
             </a-select>
           </a-form-item>
         </a-col>
+      </a-row>
+
+      <a-row :gutter="24">
         <a-col :span="8">
           <a-form-item label="婚姻状况" :label-col="{span:6}" name="maritalStatusID">
             <a-select
@@ -257,23 +254,7 @@
             name="email">
             <a-input v-model:value="dataModel.email" placeholder=""/>
           </a-form-item>
-<!--          <a-form-item-->
-<!--            label="血型"-->
-<!--            :label-col="{ span: 6 }"-->
-<!--            name="bloodTypeID" >-->
-<!--            <a-select-->
-<!--              ref="select"-->
-<!--              v-model:value="dataModel.bloodTypeID"-->
-<!--              :options="bloodTypeList"-->
-<!--              :field-names="{ label: 'name', value: 'value' }"-->
-<!--              :allow-clear="true"-->
-<!--            >-->
-<!--            </a-select>-->
-<!--          </a-form-item>-->
         </a-col>
-      </a-row>
-
-      <a-row :gutter="24">
         <a-col :span="8">
           <a-form-item
             label="身高"
@@ -282,6 +263,9 @@
             <a-input v-model:value="dataModel.height" placeholder="" addon-after="cm"/>
           </a-form-item>
         </a-col>
+      </a-row>
+
+      <a-row :gutter="24">
         <a-col :span="8">
           <a-form-item
             label="体重"
@@ -298,9 +282,6 @@
             <a-input v-model:value="dataModel.vision" placeholder=""/>
           </a-form-item>
         </a-col>
-      </a-row>
-
-      <a-row :gutter="24">
         <a-col :span="8">
           <a-form-item label="省份" :label-col="{span:6}" name="provinceCode">
             <a-select
@@ -313,6 +294,9 @@
             </a-select>
           </a-form-item>
         </a-col>
+      </a-row>
+
+      <a-row :gutter="24">
         <a-col :span="8">
           <a-form-item label="市/县" :label-col="{span:6}" name="regionCode">
             <a-select
@@ -338,23 +322,16 @@
             </a-select>
           </a-form-item>
         </a-col>
-      </a-row>
-
-
-
-      <a-row :gutter="24">
         <a-col :span="8">
           <a-form-item
             label="家庭住址"
             :label-col="{ span: 6 }"
-            name="familyAddress" >
+            name="familyAddress">
             <a-input v-model:value="dataModel.familyAddress" placeholder=""/>
           </a-form-item>
         </a-col>
       </a-row>
 
-
-
       <a-row :gutter="24">
         <a-col :span="24">
           <a-form-item
@@ -380,21 +357,6 @@
         </a-col>
       </a-row>
 
-<!--      <a-row :gutter="24">-->
-<!--        <a-col :span="16">-->
-      <!--          <a-form-item label="个人评价" :label-col="{ span: 3}" name="hobby" >-->
-      <!--            <a-textarea v-model:value="dataModel.hobby" placeholder="个人评价" :rows="2" />-->
-<!--          </a-form-item>-->
-<!--        </a-col>-->
-<!--      </a-row>-->
-<!--      <a-row :gutter="24">-->
-<!--        <a-col :span="16">-->
-<!--          <a-form-item label="个人技能" :label-col="{ span: 3 }" name="personalSkills" >-->
-<!--            <a-textarea v-model:value="dataModel.personalSkills" placeholder="个人技能" :rows="4" />-->
-<!--          </a-form-item>-->
-<!--        </a-col>-->
-<!--      </a-row>-->
-
       <a-divider orientation="left">求职人员标签</a-divider>
       <a-row :gutter="24">
         <a-col :span="24">
@@ -691,22 +653,24 @@ export default defineComponent(
 
       const inputDataValidate = () =>{
         isAllowCommit.value = true;
-        const identReg = /^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])\d{3}([0-9Xx])$/;
-        if(!formState.dataModel.identityNumber.match(identReg)){
-          message.error("输入的身份证号码有误!");
-          isAllowCommit.value = false;
-        }
-        // 计算身份证校验码
-        const weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
-        const checkCode = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
-        let sum = 0;
-        for(let i:number = 0; i<weights.length;i++){
-          sum += weights[i] * parseInt(formState.dataModel.identityNumber.substring(i,i+1));
-        }
-        if(formState.dataModel.identityNumber.substring(17,18)!=checkCode[sum%11]){
-          message.error("输入的身份证号码有误!");
-          console.log("lastOne",checkCode[sum%11]);
-          isAllowCommit.value = false;
+        if (formState.dataModel.identityNumber) {
+          const identReg = /^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])\d{3}([0-9Xx])$/;
+          if (!formState.dataModel.identityNumber.match(identReg)) {
+            message.error("输入的身份证号码有误!");
+            isAllowCommit.value = false;
+          }
+          // 计算身份证校验码
+          const weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
+          const checkCode = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
+          let sum = 0;
+          for (let i: number = 0; i < weights.length; i++) {
+            sum += weights[i] * parseInt(formState.dataModel.identityNumber.substring(i, i + 1));
+          }
+          if (formState.dataModel.identityNumber.substring(17, 18) != checkCode[sum % 11]) {
+            message.error("输入的身份证号码有误!");
+            console.log("lastOne", checkCode[sum % 11]);
+            isAllowCommit.value = false;
+          }
         }
         const mobileReg = /^1[3|4|5|6|7|8|9]\d{9}$/;
         if(!mobileReg.test(formState.dataModel.userMobile)){

+ 6 - 6
vue/src/views/jobUserManager/jobuser/index.vue

@@ -276,13 +276,17 @@ export default defineComponent({
       url: '/jobUserService/jobUser/importJobUser',
       columns: [
         {cnName: '姓名', enName: 'name', width: 100},
-        {cnName: '身份证号码', enName: 'identityNumber', width: 180},
+        {cnName: '出生日期', enName: 'birthDayStr', width: 100},
         {cnName: '性别', enName: 'sexName', width: 80},
         {cnName: '重点人员类别', enName: 'keyPersonTypeName', width: 150},
         {cnName: '就业状态', enName: 'jobStatusName', width: 100},
         {cnName: '所属驿站', enName: 'siteName', width: 100},
         {cnName: '地址', enName: 'address', width: 150},
         {cnName: '联系电话', enName: 'userMobile', width: 120},
+        {cnName: '市/县', enName: 'regionName', width: 100},
+        {cnName: '身份证号码', enName: 'identityNumber', width: 180},
+        {cnName: '镇街', enName: 'streetName', width: 100},
+        {cnName: '省份', enName: 'provinceName', width: 100},
         {cnName: '联系人', enName: 'userName', width: 100},
         {cnName: '毕业日期', enName: 'finishDate', width: 100},
         {cnName: '籍贯', enName: 'nativePlace', width: 100},
@@ -295,7 +299,6 @@ export default defineComponent({
         {cnName: '民族', enName: 'nationName', width: 80},
         {cnName: '政治面貌', enName: 'politicsStatusName', width: 100},
         {cnName: '出生地', enName: 'birthPlace', width: 100},
-        {cnName: '出生日期', enName: 'birthDayStr', width: 100},
         {cnName: '户口性质', enName: 'familyNatureName', width: 100},
         {cnName: '最高学历', enName: 'cultureRankName', width: 100},
         {cnName: '健康状况', enName: 'healthName', width: 100},
@@ -304,13 +307,10 @@ export default defineComponent({
         {cnName: '身高(cm)', enName: 'height', width: 100},
         {cnName: '体重(kg)', enName: 'weight', width: 100},
         {cnName: '视力', enName: 'vision', width: 100},
-        {cnName: '省份', enName: 'provinceName', width: 100},
-        {cnName: '市/县', enName: 'regionName', width: 100},
-        {cnName: '镇街', enName: 'streetName', width: 100},
         {cnName: '家庭住址', enName: 'familyAddress', width: 150},
         {cnName: '经度', enName: 'longitude', width: 120},
         {cnName: '纬度', enName: 'latitude', width: 120},
-        {cnName: '兴趣爱好', enName: 'hobby', width: 180},
+        {cnName: '个人评价', enName: 'hobby', width: 180},
         {cnName: '个人技能', enName: 'personalSkills', width: 180},
       ],
       template: {