zhouwx
2024-11-21 a6a8e49af8c8172f4209dd94e65f53f17825cc44
src/views/safetyReview/userManage/expertUsers/components/expertDialog.vue
@@ -6,7 +6,7 @@
            width="900px"
            :before-close="handleClose"
        >
            <el-form :model="state.form" size="default" ref="superRef" :rules="state.formRules" label-width="150px" >
            <el-form :model="state.form" size="default" ref="superRef" :rules="state.formRulesOut" label-width="150px" >
                <el-row :gutter="22">
                    <el-col :span="11">
                        <el-form-item label="姓名:" prop="name" v-if="state.title !== '修改密码'">
@@ -40,12 +40,12 @@
                    <el-col :span="11">
                        <el-form-item label="所属机构:"  prop="agencyId" v-if="state.title !== '修改密码'">
                            <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-select v-model="state.form.agencyName" @change="selectValue" 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"
                                    :label="item.name"
                                    :value="item.id"
                                    :value="item.name"
                                />
                            </el-select>
                        </el-form-item>
@@ -122,8 +122,9 @@
                  </el-form-item>
                </el-col>
              </el-row>
              <el-form-item>
                <div style="margin-left: -50px"><span style="font-size: 16px;color: #ed5565;">提示:疆外企业无需上传社保、医保、工资清单,疆内企业需每季度进行更新。</span></div>
              </el-form-item>
                <el-form-item prop="socialAttach" label="社保:" v-if="state.title !== '修改密码'">
                    <el-upload
                        accept="image/*"
@@ -254,12 +255,14 @@
            let param = {}
            if(state.title=='新增') {
                param = {
                    phone:value
                    phone:value,
                    identity: 2
                }
            }else if(state.title=='编辑'){
                param = {
                    phone:value,
                    id: state.form.id
                    id: state.form.id,
                    identity: 2
                }
            }
            checkPhone(param).then((res)=>{
@@ -341,7 +344,7 @@
    medicalList: [],
    salaryList: [],
    photoList: [],
    formRules:{
    formRulesIn:{
        name: [{ required: true, message: '请输入姓名', trigger: 'blur' }],
        username: [{ required: true, validator: validateUsername, trigger: 'blur' }],
        password: [{ required: true, validator: validatePwd, trigger: 'blur' }],
@@ -357,6 +360,22 @@
        salaryAttach: [{required: true, trigger: "blur", message: "请上传工资清单"}],
        idPhoto: [{required: true, trigger: "blur", message: "请上传近期证件照"}],
    },
  formRulesOut:{
    name: [{ required: true, message: '请输入姓名', trigger: 'blur' }],
    username: [{ required: true, validator: validateUsername, trigger: 'blur' }],
    password: [{ required: true, validator: validatePwd, trigger: 'blur' }],
    confirmPassword: [{ required: true, validator: equalToPassword, trigger: 'blur' }],
    phone: [{ required: true, validator: validateUserPhone, trigger: 'blur' }],
    post: [{ required: true, message: '请选择职务', trigger: 'change' }],
    jobTitle:[{ required: true, message: '请输入职称', trigger: 'blur' }],
    level: [{ required: true, message: '请选择评价师等级', trigger: 'change' }],
    majorShow:[{ required: true, message: '请选择专业方向', trigger: 'change' }],
    agencyId: [{ required: true, message: '请选择所属机构', trigger: 'change' }],
    // 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: [],
    header: {
@@ -372,20 +391,28 @@
const isAgency = ref(false);
onMounted(()=>{
    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 attribute = ref(null);
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;
    attribute.value = JSON.parse(Cookies.get('attribute'))
    console.log("attribute", attribute.value)
  } else {
    getAgency('open')
  }
}
const openDialog = async (type, value) => {
    getArea()
 await getUserInfoAgency();
  await getArea()
    state.title = type === 'add' ? '新增' : type ==='edit' ? '编辑' : type ==='pwd' ? '修改密码' : '查看' ;
    if(type === 'edit') {
        const param = {
@@ -394,6 +421,7 @@
        const res = await getUserById(param);
        if(res.code == 200){
            state.form = res.data
          state.form.agencyName = res.data.agency.name
            state.socialList = res.data.socialAttach.map(url => {
                return {
                    url:  import.meta.env.VITE_APP_BASE_API +'/'+url.path,
@@ -429,13 +457,20 @@
                })
              }
              state.form.majorShow = arr;
              console.log(state.form.majorShow,'certificateList')
              console.log(state.form,'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
@@ -488,12 +523,9 @@
            if(res.code == 200){
                ElMessage.success(res.message)
                emit('getList')
                reset();
                superRef.value.clearValidate();
                superRef.value.resetFields();
                state.salaryList = [];
                state.medicalList = [];
                state.socialList = [];
                state.photoList = [];
                dialogVisible.value = false;
            }else{
                ElMessage.warning(res.message)
@@ -514,8 +546,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)
@@ -528,8 +561,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)
@@ -637,82 +671,120 @@
}
const handlePhotoRemove = async (file) => {
  console.log("fileD",file)
  if (file && file.status == 'success') {
  // state.form.idPhoto = ''
  let path = ""
  if(file.response && file.response.data){
  if (file.response && file.response.data) {
    path = file.response.data.path
  }else {
  } else {
    const base = import.meta.env.VITE_APP_BASE_API
    path = file.url.substring(base.length+1,file.url.length )
    path = file.url.substring(base.length + 1, file.url.length)
  }
  const res = await delPic({path: path})
  if(res.code == 200){
    ElMessage({
      type: 'success',
      message: '文件已删除'
    })
  await delPic({path: path}).then(res => {
    if (res.code == 200) {
      // ElMessage({
      //   type: 'success',
      //   message: '文件已删除'
      // })
      state.form.idPhoto = ''
    } else {
      ElMessage({
        type: 'warning',
        message: res.message
      })
    }
  }).catch(() => {
    state.form.idPhoto = ''
  }else{
    ElMessage({
      type: 'warning',
      message: res.message
    })
  }
  });
}
  // const res = await delPic({path: path})
  // if(res.code == 200){
  //   ElMessage({
  //     type: 'success',
  //     message: '文件已删除'
  //   })
  //   state.form.idPhoto = ''
  // }else{
  //   ElMessage({
  //     type: 'warning',
  //     message: res.message
  //   })
  // }
}
const handleRemove = async (file, uploadFiles,type) => {
  if(file && file.status == 'success') {
    let path = ""
    if(state.title === '编辑') {
        const base = import.meta.env.VITE_APP_BASE_API
        path = file.url.substring(base.length+1,file.url.length )
    }else {
        path = file.response.data.path
    if (state.title === '编辑') {
      const base = import.meta.env.VITE_APP_BASE_API
      path = file.url.substring(base.length + 1, file.url.length)
    } else {
      path = file.response.data.path
    }
    const res = await delPic({path: path})
    if(res.code == 200){
    await delPic({path: path}).then(res => {
      if (res.code == 200) {
        // ElMessage({
        //   type: 'success',
        //   message: '文件已删除'
        // })
      } else {
        ElMessage({
            type: 'success',
            message: '文件已删除'
          type: 'warning',
          message: res.message
        })
    }else{
        ElMessage({
            type: 'warning',
            message: res.message
        })
    }
    if(type === 1){
      }
    }).catch(() => {
      if (type === 1) {
        state.form.socialAttach = state.form.socialAttach.filter(item => item.path !== path)
    }else if(type === 2){
      } else if (type === 2) {
        state.form.medicalAttach = state.form.medicalAttach.filter(item => item.path !== path)
    }else {
      } else {
        state.form.salaryAttach = state.form.salaryAttach.filter(item => item.path !== path)
      }
    });
    if (type === 1) {
      state.form.socialAttach = state.form.socialAttach.filter(item => item.path !== path)
    } else if (type === 2) {
      state.form.medicalAttach = state.form.medicalAttach.filter(item => item.path !== path)
    } else {
      state.form.salaryAttach = state.form.salaryAttach.filter(item => item.path !== path)
    }
  }
}
const finshed = ref(false)
const getAgency = async () => {
const getAgency = async (type) => {
  if (type === 'open' && state.pageNum !== 1) {
  } else {
    const queryParams = {
        pageNum: state.pageNum,
        pageSize: state.pageSize,
      pageNum: state.pageNum,
      pageSize: state.pageSize,
    }
    const res = await getInsitutionList(queryParams)
    if(res.code == 200){
        if(res.data.pageNum === state.pageNum){
            finshed.value = false;
            if(state.pageNum == 1){
                state.agencyList = res.data.list
            }else {
                state.agencyList =state.agencyList .concat(res.data.list)
            }
        }else {
            finshed.value = true;
    if (res.code == 200) {
      if (res.data.pageNum === state.pageNum) {
        finshed.value = false;
        if (state.pageNum == 1) {
          state.agencyList = res.data.list
        } else {
          state.agencyList = state.agencyList.concat(res.data.list)
        }
      } else {
        finshed.value = true;
      }
    }else{
        ElMessage.warning(res.message)
    } else {
      ElMessage.warning(res.message)
    }
  }
}
@@ -723,7 +795,7 @@
    setTimeout(() => {
      if (finshed.value) return //值为true,则代表没有数据了
      state.pageNum += 1
      getAgency()
      getAgency('')
    }, 500)
}
@@ -732,6 +804,14 @@
    // state.form.selectMajorList= val;
    console.log('选中的xxxx',val)
}
const selectValue = (val) => {
  state.agencyList.forEach(item => {
    if(item.name === val){
      state.form.agencyId = item.id
    }
  })
}
defineExpose({
    openDialog