From 0b25ddd8815f90a3f16c7900c624823298c7c0b0 Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: 星期五, 08 九月 2023 15:44:17 +0800
Subject: [PATCH] 修改

---
 src/views/form.vue |  149 ++++++++++++++++++++++++++++++++++---------------
 1 files changed, 104 insertions(+), 45 deletions(-)

diff --git a/src/views/form.vue b/src/views/form.vue
index 0992b33..da77340 100644
--- a/src/views/form.vue
+++ b/src/views/form.vue
@@ -1,9 +1,11 @@
 <template>
   <div class="app-container home">
+    <div class="main-title">专家信息录入</div>
+<!--    <el-divider>专家信息录入</el-divider>-->
     <div class="main_form">
-      <el-form :model="form" :rules="rules" ref="ruleForm" label-width="200px">
+      <el-form :model="form" :rules="rules" ref="ruleForm" label-width="200px" :label-position="labelPosition">
         <el-row>
-          <el-col :span="16">
+          <el-col :span="20">
             <el-form-item label="专业类别" prop="profession">
               <el-cascader
                 style="width: 100%"
@@ -15,7 +17,7 @@
           </el-col>
         </el-row>
 <!--        <el-row>-->
-<!--          <el-col :span="16">-->
+<!--          <el-col :span="20">-->
 <!--            <el-form-item label="填报日期" prop="date">-->
 <!--              <el-date-picker-->
 <!--                style="width: 100%"-->
@@ -27,14 +29,14 @@
 <!--          </el-col>-->
 <!--        </el-row>-->
         <el-row>
-          <el-col :span="16">
+          <el-col :span="20">
             <el-form-item label="姓名" prop="name">
               <el-input v-model="form.name"></el-input>
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
-          <el-col :span="16">
+          <el-col :span="20">
             <el-form-item label="性别" prop="sex">
               <el-radio-group v-model="form.sex">
                 <el-radio :label="0">男</el-radio>
@@ -44,7 +46,7 @@
           </el-col>
         </el-row>
         <el-row>
-          <el-col :span="16">
+          <el-col :span="20">
             <el-form-item label="出生日期" prop="birthday">
               <el-date-picker
                 style="width: 100%"
@@ -57,14 +59,14 @@
           </el-col>
         </el-row>
         <el-row>
-          <el-col :span="16">
+          <el-col :span="20">
             <el-form-item label="联系电话" prop="phone">
               <el-input v-model="form.phone"></el-input>
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
-          <el-col :span="16">
+          <el-col :span="20">
             <el-form-item label="职称" prop="title">
 <!--              <el-select v-model="form.title" placeholder="请选择" style="width: 100%">-->
 <!--                <el-option-->
@@ -79,7 +81,7 @@
           </el-col>
         </el-row>
         <el-row>
-          <el-col :span="16">
+          <el-col :span="20">
             <el-form-item label="证件照" prop="electronicPhoto">
               <el-upload
                 action=""
@@ -99,14 +101,14 @@
           </el-col>
         </el-row>
         <el-row>
-          <el-col :span="16">
+          <el-col :span="20">
             <el-form-item label="身份证号" prop="idCard">
               <el-input v-model="form.idCard"></el-input>
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
-          <el-col :span="16">
+          <el-col :span="20">
             <el-form-item label="在岗情况" prop="dutyStatus">
               <el-radio-group v-model="form.dutyStatus">
                 <el-radio :label="0">在岗</el-radio>
@@ -116,84 +118,84 @@
           </el-col>
         </el-row>
         <el-row>
-          <el-col :span="16">
+          <el-col :span="20">
             <el-form-item label="单位全称" prop="companyName">
               <el-input v-model="form.companyName"></el-input>
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
-          <el-col :span="16">
+          <el-col :span="20">
             <el-form-item label="单位地址">
               <el-input v-model="form.companyAddress"></el-input>
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
-          <el-col :span="16">
+          <el-col :span="20">
             <el-form-item label="所在部门">
               <el-input v-model="form.deptName"></el-input>
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
-          <el-col :span="16">
+          <el-col :span="20">
             <el-form-item label="职务">
               <el-input v-model="form.job"></el-input>
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
-          <el-col :span="16">
+          <el-col :span="20">
             <el-form-item label="单位电话">
               <el-input v-model="form.companyTelephone"></el-input>
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
-          <el-col :span="16">
+          <el-col :span="20">
             <el-form-item label="传真号码">
               <el-input v-model="form.faxNum"></el-input>
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
-          <el-col :span="16">
+          <el-col :span="20">
             <el-form-item label="电子邮箱">
               <el-input v-model="form.email"></el-input>
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
-          <el-col :span="16">
+          <el-col :span="20">
             <el-form-item label="毕业学校">
               <el-input v-model="form.graduationSchool"></el-input>
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
-          <el-col :span="16">
+          <el-col :span="20">
             <el-form-item label="最高学历" prop="degree">
               <el-input v-model="form.degree"></el-input>
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
-          <el-col :span="16">
+          <el-col :span="20">
             <el-form-item label="所学专业">
               <el-input v-model="form.speciality"></el-input>
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
-          <el-col :span="16">
+          <el-col :span="20">
             <el-form-item label="现从事的专业及方向">
               <el-input v-model="form.currentProfession"></el-input>
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
-          <el-col :span="16">
+          <el-col :span="20">
             <el-form-item label="支撑方向_安全生产" prop="supportDirectionSafety">
 <!--              <el-radio-group v-model="form.supportDirectionSafety">-->
 <!--                <el-radio v-for="item in directionList" :label="item.value" :key="item.value">{{ item.label }}</el-radio>-->
@@ -205,7 +207,7 @@
           </el-col>
         </el-row>
         <el-row>
-          <el-col :span="16">
+          <el-col :span="20">
             <el-form-item label="支撑方向_防灾减灾救灾" prop="supportDirectionPrevention">
 <!--              <el-radio-group v-model="form.supportDirectionPrevention">-->
 <!--                <el-radio v-for="item in directionList" :label="item.value" :key="item.value">{{ item.label }}</el-radio>-->
@@ -217,7 +219,7 @@
           </el-col>
         </el-row>
         <el-row>
-          <el-col :span="16">
+          <el-col :span="20">
             <el-form-item label="支撑方向_应急救援" prop="supportDirectionEmergency">
 <!--              <el-radio-group v-model="form.supportDirectionEmergency">-->
 <!--                <el-radio v-for="item in directionList" :label="item.value" :key="item.value">{{ item.label }}</el-radio>-->
@@ -229,10 +231,13 @@
           </el-col>
         </el-row>
         <el-row>
-          <el-col :span="16">
+          <el-col :span="20">
             <el-form-item label="工作简历">
               <el-upload
                 action="#"
+                multiple
+                :limit="20"
+                :on-exceed="overLimit"
                 :auto-upload="false"
                 accept="image/*,.pdf"
                 :file-list="resumeList"
@@ -247,10 +252,13 @@
           </el-col>
         </el-row>
         <el-row>
-          <el-col :span="16">
+          <el-col :span="20">
             <el-form-item label="发明、著作、学术论文情况(何时、何地出版或发表)">
               <el-upload
                 action=""
+                multiple
+                :limit="20"
+                :on-exceed="overLimit"
                 :auto-upload="false"
                 accept="image/*,.pdf"
                 list-type="picture-card"
@@ -265,10 +273,13 @@
           </el-col>
         </el-row>
         <el-row>
-          <el-col :span="16">
+          <el-col :span="20">
             <el-form-item label="受过何种奖励">
               <el-upload
                 action=""
+                multiple
+                :limit="20"
+                :on-exceed="overLimit"
                 :auto-upload="false"
                 accept="image/*,.pdf"
                 list-type="picture-card"
@@ -283,10 +294,13 @@
           </el-col>
         </el-row>
         <el-row>
-          <el-col :span="16">
+          <el-col :span="20">
             <el-form-item label="应急管理相关工作主要业绩及研究成果">
               <el-upload
                 action=""
+                multiple
+                :limit="20"
+                :on-exceed="overLimit"
                 :auto-upload="false"
                 accept="image/*,.pdf"
                 list-type="picture-card"
@@ -301,10 +315,13 @@
           </el-col>
         </el-row>
         <el-row>
-          <el-col :span="16">
+          <el-col :span="20">
             <el-form-item label="专家本人意见">
               <el-upload
                 action=""
+                multiple
+                :limit="20"
+                :on-exceed="overLimit"
                 :auto-upload="false"
                 accept="image/*,.pdf"
                 list-type="picture-card"
@@ -319,10 +336,13 @@
           </el-col>
         </el-row>
         <el-row>
-          <el-col :span="16">
+          <el-col :span="20">
             <el-form-item label="推荐单位意见">
               <el-upload
                 action=""
+                multiple
+                :limit="20"
+                :on-exceed="overLimit"
                 :auto-upload="false"
                 accept="image/*,.pdf"
                 list-type="picture-card"
@@ -337,7 +357,7 @@
           </el-col>
         </el-row>
         <el-row>
-          <el-col :span="16">
+          <el-col :span="20">
             <el-form-item label="补充说明">
               <el-input v-model="form.remark" type="textarea" :autosize="{ minRows: 2}"></el-input>
             </el-form-item>
@@ -355,19 +375,42 @@
 </template>
 
 <script>
-import {expertsTree,addExpertInfo,uploadFile} from '@/api/system/form'
+import {getExpertTypes,addExpertInfo,uploadFile} from '@/api/system/form'
+import { verifySimplePhone, verifyIdCard } from "@/utils/validate";
 export default {
   name: "Index",
   data() {
     var validatePass = (rule, value, callback) => {
-      console.log(this.form,this.fileList,'校验')
       if (this.fileList.length == 0) {
         callback(new Error('请上传证件照'));
       } else {
         callback();
       }
-    };
+    }
+    let validatePhone = (rule, value, callback)=>{
+      if(value === ''){
+        callback(new Error('请输入手机号'))
+      }else{
+        if(!verifySimplePhone(value)){
+          callback(new Error('手机号格式有误'))
+        }else{
+          callback()
+        }
+      }
+    }
+    let verifyId = (rule, value, callback)=>{
+      if(value === ''){
+        callback(new Error('请输入身份证号'))
+      }else{
+        if(!verifyIdCard(value)){
+          callback(new Error('身份证号格式有误'))
+        }else{
+          callback()
+        }
+      }
+    }
     return {
+      labelPosition: 'right',
       form:{
         name:'',
         sex:'',
@@ -400,7 +443,8 @@
         achievementKey: '',
         personalOpinionKey: '',
         recommendUnitOpinionKey: '',
-        remark: ''
+        remark: '',
+        source: 1
       },
       expertsType: [],
       directionList: [
@@ -439,27 +483,25 @@
         sex:[{ required: true, message: '请选择性别', trigger: 'blur' }],
         profession: [{ required: true, message: '请选择专业类别', trigger: 'blur' }],
         birthday: [{ required: true, message: '请选择出生日期', trigger: 'blur' }],
-        phone:[{ required: true, message: '请填写联系电话', trigger: 'blur' }],
+        phone:[{ required: true, validator: validatePhone, trigger: 'blur' }],
         title: [{ required: true, message: '请填写职称', trigger: 'blur' }],
         electronicPhoto: [{ required: true,validator: validatePass, trigger: 'blur' }],
-        idCard: [{ required: true, message: '请填写身份证号', trigger: 'blur' }],
+        idCard: [{ required: true, validator: verifyId, trigger: 'blur' }],
         dutyStatus: [{ required: true, message: '请选择在岗情况', trigger: 'blur' }],
         companyName: [{ required: true, message: '请填写单位全称', trigger: 'blur' }],
-        degree: [{ required: true, message: '请填写最高学历', trigger: 'blur' }],
-        supportDirectionSafety: [{ required: true, message: '请选择支撑方向', trigger: 'blur' }],
-        supportDirectionPrevention: [{ required: true, message: '请选择支撑方向', trigger: 'blur' }],
-        supportDirectionEmergency: [{ required: true, message: '请选择支撑方向', trigger: 'blur' }]
+        degree: [{ required: true, message: '请填写最高学历', trigger: 'blur' }]
       },
     };
   },
   created() {
     const t = this
+    const width = document.documentElement.clientWidth
+    if(width < 750){t.labelPosition = 'top'}
     t.getExpertsType()
   },
   methods: {
     async getExpertsType(){
-      const res = await expertsTree()
-      console.log(res)
+      const res = await getExpertTypes()
       if(res.code == 200){
         this.expertsType = res.data
       }else{
@@ -560,6 +602,13 @@
       console.log(file, fileList);
     },
     async submit(){
+      if(this.form.supportDirectionSafety.length == 0 && this.form.supportDirectionPrevention.length == 0 && this.form.supportDirectionEmergency.length == 0){
+        this.$message({
+          type:'warning',
+          message: '请至少选择一种支撑方向'
+        })
+        return
+      }
       this.$refs["ruleForm"].validate(async(valid) =>{
         if(valid) {
           await this.submitUpload()
@@ -571,12 +620,12 @@
           data.smallClassify = data.profession[1]
           delete data.profession
           const res= await addExpertInfo(data)
-          console.log(res,'res')
           if(res.code == 200){
             this.$message({
               type:'success',
               message: res.msg
             })
+            this.$emit('closeDialog')
             this.$refs.ruleForm.resetFields()
             this.fileList = []
             this.resumeList = []
@@ -599,12 +648,22 @@
         }
       })
     },
+    changeSource(num){
+      this.form.source = num
+    }
   }
 };
 </script>
 
 <style scoped lang="scss">
 .home {
+  .main-title{
+    font-size: 24px;
+    font-weight: bolder;
+    text-align: center;
+    margin-bottom: 20px;
+    color: #333;
+  }
   blockquote {
     padding: 10px 20px;
     margin: 0 0 20px;

--
Gitblit v1.9.2