From 42235ae8c08bcc09bb53a3631f988e74a0920db4 Mon Sep 17 00:00:00 2001
From: zhouwx <1175765986@qq.com>
Date: 星期二, 16 四月 2024 08:41:35 +0800
Subject: [PATCH] bug修改

---
 src/views/safetyReview/userManage/expertUsers/components/expertDialog.vue |  208 +++++++++++++++++++++++++++++++--------------------
 1 files changed, 125 insertions(+), 83 deletions(-)

diff --git a/src/views/safetyReview/userManage/expertUsers/components/expertDialog.vue b/src/views/safetyReview/userManage/expertUsers/components/expertDialog.vue
index 7ef55dd..972aeaf 100644
--- a/src/views/safetyReview/userManage/expertUsers/components/expertDialog.vue
+++ b/src/views/safetyReview/userManage/expertUsers/components/expertDialog.vue
@@ -39,7 +39,8 @@
                 <el-row :gutter="22">
                     <el-col :span="11">
                         <el-form-item label="所属机构:"  prop="agencyId" v-if="state.title !== '修改密码'">
-                            <el-select v-model="state.form.agencyId"  style="width: 100%" v-loadMore="loadMore" class="m-2" placeholder="请选择机构" popper-class="more_select_dropdown"   >
+                            <el-input v-if="isAgency" v-model="state.agencyName" disabled></el-input>
+                            <el-select v-model="state.form.agencyId" v-else style="width: 100%" v-loadMore="loadMore" class="m-2" placeholder="请选择机构" popper-class="more_select_dropdown"   >
                                 <el-option
                                     v-for="item in state.agencyList"
                                     :key="item.id"
@@ -54,7 +55,7 @@
 <!--                            <el-input v-model.trim="state.form.post" :maxlength="11" ></el-input>-->
                           <el-select v-model="state.form.post" class="m-2" style="width: 100%" placeholder="请选择职务" popper-class="more_select_dropdown"  >
                             <el-option
-                                v-for="item in state.postList"
+                                v-for="item in props.postList"
                                 :key="item.id"
                                 :label="item.name"
                                 :value="item.name"
@@ -73,7 +74,7 @@
                         <el-form-item label="专业方向:" prop="majorShow"  v-if="state.title !== '修改密码'" >
                           <el-select v-model="state.form.majorShow" value-key="id" class="m-2" style="width: 100%" multiple placeholder="请选择专业方向" popper-class="more_select_dropdown" @change="selectChange">
                             <el-option
-                                v-for="item in state.majorList"
+                                v-for="item in props.majorList"
                                 :key="item.id"
                                 :label="item.label"
                                 :value="item"
@@ -112,7 +113,7 @@
                   <el-form-item label="评价师等级:" prop="level" v-if="state.title !== '修改密码'">
                     <el-select v-model="state.form.level" class="m-2" style="width: 100%" placeholder="请选择评价师等级" popper-class="more_select_dropdown"  >
                       <el-option
-                          v-for="item in state.levelList"
+                          v-for="item in props.levelList"
                           :key="item.id"
                           :label="item.name"
                           :value="item.name"
@@ -180,7 +181,27 @@
                             <div class="el-upload__tip">上传jpg/png图片尺寸小于5M</div>
                         </template>
                     </el-upload>
-
+                </el-form-item>
+                <el-form-item prop="idPhoto" label="证件照:" v-if="state.title !== '修改密码'">
+                  <el-upload
+                      accept="image/*"
+                      :action="state.uploadUrl"
+                      :headers="state.header"
+                      method="post"
+                      :on-change="handleChangePic"
+                      :on-success="handlePhotoSuccess"
+                      :on-preview="handlePictureCardPreview"
+                      v-model:file-list="state.photoList"
+                      list-type="picture-card"
+                      :before-upload="picSize"
+                      :on-remove="handlePhotoRemove"
+                      :limit="2"
+                  >
+                    <el-icon><Plus /></el-icon>
+                    <template #tip>
+                      <div class="el-upload__tip">上传jpg/png图片尺寸小于5M</div>
+                    </template>
+                  </el-upload>
                 </el-form-item>
             </el-form>
             <template #footer >
@@ -196,7 +217,7 @@
     </div>
 </template>
 <script setup>
-import {reactive, ref, toRefs, defineEmits, onMounted, nextTick} from 'vue'
+import {reactive, ref, toRefs, defineEmits, defineProps, onMounted, nextTick} from 'vue'
 import { View } from "@element-plus/icons-vue";
 import {ElMessage} from "element-plus";
 import {verifyPhone, verifyPwd, verifyUsername} from "../../../../../utils/validate";
@@ -208,8 +229,10 @@
 import {getToken} from "@/utils/auth";
 import {getInsitutionList} from "@/api/backManage/insitution";
 import {getDictList} from "@/api/backManage/evaluate";
+import Cookies from "js-cookie";
 
 const emit = defineEmits(["getList"]);
+const props = defineProps(['majorList','levelList','postList'])
 const dialogVisible = ref(false)
 const superRef = ref(null)
 
@@ -303,6 +326,7 @@
         socialAttach: [],
         medicalAttach: [],
         salaryAttach: [],
+        idPhoto: '',
         post: '',
         jobTitle: '',
         level: '',
@@ -312,9 +336,11 @@
         password: '',
         confirmPassword: '',
     },
+    agencyName:'',
     socialList: [],
     medicalList: [],
     salaryList: [],
+    photoList: [],
     formRules:{
         name: [{ required: true, message: '请输入姓名', trigger: 'blur' }],
         username: [{ required: true, validator: validateUsername, trigger: 'blur' }],
@@ -329,6 +355,7 @@
         socialAttach: [{required: true, trigger: "blur", message: "请上传社保图片"}],
         medicalAttach: [{required: true, trigger: "blur", message: "请上传医保图片"}],
         salaryAttach: [{required: true, trigger: "blur", message: "请上传工资清单"}],
+        idPhoto: [{required: true, trigger: "blur", message: "请上传近期证件照"}],
     },
     areaList: [],
     agencyList: [],
@@ -339,57 +366,31 @@
     dialogImageUrl: '',
     dialogImg: false,
     pageNum: 1,
-    pageSize: 10,
-    postList: [
-      {
-        id: '1',
-        name: '法人'
-      },
-      {
-        id: '2',
-        name: '过程控制负责人'
-      },
-      {
-        id: '3',
-        name: '机构负责人'
-      },
-      {
-        id: '4',
-        name: '技术负责人'
-      },
-      {
-        id: '5',
-        name: '员工'
-      },
-    ],
-  majorList: [],
-  levelList: [
-    {
-      id: '1',
-      name: '一级'
-    },
-    {
-      id: '2',
-      name: '二级'
-    },
-    {
-      id: '3',
-      name: '三级'
-    },
-    {
-      id: '4',
-      name: '其他'
-    },
-  ]
+    pageSize: 10
 })
 
+const isAgency = ref(false);
 onMounted(()=>{
-    getAgency()
-    getMajor()
+
 })
+
+const getUserInfoAgency = () => {
+  const userInfo = JSON.parse(Cookies.get('userInfo'))
+  if(userInfo.identity === 1){
+    state.agencyName = userInfo.agentName;
+    state.form.agencyId = userInfo.agentId;
+    isAgency.value = true;
+  }else {
+    getAgency()
+  }
+  console.log("userinfo",userInfo)
+}
+
+
 
 const openDialog = async (type, value) => {
-    getArea()
+ await getUserInfoAgency();
+  await getArea()
     state.title = type === 'add' ? '新增' : type ==='edit' ? '编辑' : type ==='pwd' ? '修改密码' : '查看' ;
     if(type === 'edit') {
         const param = {
@@ -416,23 +417,37 @@
                     name: url.name
                 }
             });
-            const arr = []
-            const certificateList = JSON.parse(res.data.certificateNo)
-            for( let key in certificateList) {
-              arr.push( {
-                id: parseInt(key),
-                certificateNo: certificateList[key],
-              })
-              arr.forEach((item,index) => {
-                item.label = res.data.majorNames[index]
-              })
+            const obj = {
+              url: import.meta.env.VITE_APP_BASE_API +'/'+ res.data.idPhoto
             }
-            state.form.majorShow = arr;
-          console.log(state.form.majorShow,'certificateList')
+            state.photoList.push(obj);
+            if(res.data.certificateNo){
+              const arr = []
+              const certificateList = JSON.parse(res.data.certificateNo)
+              for( let key in certificateList) {
+                arr.push( {
+                  id: parseInt(key),
+                  certificateNo: certificateList[key],
+                })
+                arr.forEach((item,index) => {
+                  item.label = res.data.majorNames[index]
+                })
+              }
+              state.form.majorShow = arr;
+              console.log(state.form.majorShow,'certificateList')
+            }
+
         }else{
             ElMessage.warning(res.message)
         }
 
+    }else if(type === 'add'){
+      console.log("aa",props.majorList)
+      props.majorList.forEach(item => {
+        if(item.certificateNo){
+          item.certificateNo = ''
+        }
+      })
     }
     if(type == 'pwd'){
         state.form.id = value.id
@@ -485,11 +500,9 @@
             if(res.code == 200){
                 ElMessage.success(res.message)
                 emit('getList')
+                reset();
                 superRef.value.clearValidate();
-                superRef.value.resetFields();
-                state.salaryList = [];
-                state.medicalList = [];
-                state.socialList = [];
+
                 dialogVisible.value = false;
             }else{
                 ElMessage.warning(res.message)
@@ -510,8 +523,9 @@
             if(res.code == 200){
                 ElMessage.success(res.message)
                 emit('getList')
-                superRef.value.clearValidate();
                 reset()
+                superRef.value.clearValidate();
+
                 dialogVisible.value = false;
             }else{
                 ElMessage.warning(res.message)
@@ -524,8 +538,9 @@
             if(res.code == 200){
                 ElMessage.success(res.message)
                 emit('getList')
-                superRef.value.clearValidate();
                 reset()
+                superRef.value.clearValidate();
+
                 dialogVisible.value = false;
             }else{
                 ElMessage.warning(res.message)
@@ -552,6 +567,7 @@
        socialAttach: [],
        medicalAttach: [],
        salaryAttach: [],
+       idPhoto: '',
        post: '',
        jobTitle: '',
        level:'',
@@ -564,6 +580,7 @@
     state.salaryList = [];
     state.medicalList = [];
     state.socialList = [];
+    state.photoList = [];
     state.form.selectMajorList = [];
 }
 const picSize = async (rawFile) => {
@@ -614,6 +631,45 @@
     }
 }
 
+const handlePhotoSuccess = (res,file) => {
+  if(res.code == 200){
+    state.form.idPhoto = res.data.path;
+  }else{
+    ElMessage({
+      type: 'warning',
+      message: '文件上传失败'
+    })
+  }
+}
+const handleChangePic = (file,fileList) => {
+  if (fileList.length > 1) {
+    state.photoList.splice(0, 1);
+  }
+}
+
+const handlePhotoRemove = async (file) => {
+  console.log("fileD",file)
+  let path = ""
+  if(file.response && file.response.data){
+    path = file.response.data.path
+  }else {
+    const base = import.meta.env.VITE_APP_BASE_API
+    path = file.url.substring(base.length+1,file.url.length )
+  }
+  const res = await delPic({path: path})
+  if(res.code == 200){
+    ElMessage({
+      type: 'success',
+      message: '文件已删除'
+    })
+    state.form.idPhoto = ''
+  }else{
+    ElMessage({
+      type: 'warning',
+      message: res.message
+    })
+  }
+}
 
 
 
@@ -669,20 +725,6 @@
         ElMessage.warning(res.message)
     }
 }
-const getMajor = async () => {
-  const queryParams = {
-        pageNum: 1,
-        pageSize: 50,
-        dictType: 'sys_major_orientation'
-  }
-  const res = await getDictList(queryParams);
-  if(res.code === 200){
-    state.majorList = res.data.list
-  }else{
-    ElMessage.warning(res.message)
-  }
-}
-
 
 
 //触底函数

--
Gitblit v1.9.2