祖安之光
2025-06-27 b609f77709c4646daf155341475ae14fc0c7943d
src/views/safetyReview/expertManage/checkProgress/index.vue
@@ -1,19 +1,25 @@
<template>
  <div class="form-container">
    <el-form :model="queryParams" size="default" ref="formRef" inline :rules="formRules" label-width="110px" >
      <el-form-item label="身份证号:" prop="idCard">
      <el-form-item label="身份证号:">
        <el-input v-model.trim="queryParams.idCard" placeholder="请输入身份证号"></el-input>
      </el-form-item>
      <el-form-item label="手机号:" prop="phone">
      <el-form-item label="手机号:">
        <el-input v-model.trim="queryParams.phone" placeholder="请输入申报时预留的手机号"></el-input>
      </el-form-item>
      <el-form-item label="业务处室:" prop="deptId">
      <el-form-item label="专业领域:">
<!--        <el-cascader-->
<!--            clearable-->
<!--            placeholder="请选择申请的业务处室"-->
<!--            v-model="queryParams.deptId"-->
<!--            :options="deptList"-->
<!--            :props="{ expandTrigger: 'hover', value: 'deptId',label: 'deptName',checkStrictly: true,emitPath: false}"></el-cascader>-->
        <el-cascader
            clearable
            placeholder="请选择申请的业务处室"
            v-model="queryParams.deptId"
            :options="deptList"
            :props="{ expandTrigger: 'hover', value: 'deptId',label: 'deptName',checkStrictly: true,emitPath: false}"></el-cascader>
            v-model="queryParams.domain"
            :options="expertsType"
            :props="{ expandTrigger: 'hover',value: 'classifyName',label: 'classifyName',emitPath: false }"
            @change="professionChange"></el-cascader>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" icon="Search" @click="onSubmit(formRef)" v-preReClick>进度查询</el-button>
@@ -27,10 +33,10 @@
        <span v-if="result.state == 3">评定不符合</span>
        <span v-if="result.state == 2">评定通过</span>
      </button>
      <button :class="result.state == 4?'pro-btn-active':'pro-btn'">
      <button :class="result.state == 2?'pro-btn-active':'pro-btn'">
        专家入库
      </button>
      <button :class="result.state == 4?'pro-download-active':'pro-download'">
      <button :class="result.state == 2?'pro-download-active':'pro-download'" @click="downloadPdf(result)">
        专家证书下载
      </button>
    </div>
@@ -38,14 +44,14 @@
</template>
<script setup>
import {reactive, ref, toRefs, defineEmits, nextTick, onMounted} from 'vue'
import { useRouter } from 'vue-router'
import {ElMessage, ElMessageBox} from "element-plus"
import {verifyPhone, verifyIdCard} from "../../../../utils/validate"
import { getToken } from "@/utils/auth"
import {getExpertsList, queryApprove} from "@/api/form";
import {getExpertsList, getExpertTypes, queryApprove} from "@/api/form";
import {listOutDept} from "@/api/system/dept";
const { proxy } = getCurrentInstance();
const router = useRouter()
let validatePhone = (rule, value, callback)=>{
  if(value === ''){
    callback(new Error('请输入手机号'))
@@ -73,25 +79,24 @@
  queryParams: {
    idCard: '',
    phone: '',
    deptId: null
    domain: ''
  },
  expertsType: [],
  formRules:{
    idCard:[{ required: true, validator: verifyId, trigger: 'blur' }],
    phone:[{ required: true, validator: validatePhone, trigger: 'blur' }],
    deptId: [{ required: true, message: '请选择申请的业务处室', trigger: 'blur' }]
  },
  result: {}
})
const {queryParams,formRules,result} = toRefs(data)
const {queryParams,expertsType,formRules,result} = toRefs(data)
const deptList = ref([]);
onMounted(()=>{
  getDepList()
})
const showProgress = ref(false)
const formRef = ref()
function getDepList() {
  listOutDept({}).then(response => {
    deptList.value = proxy.handleTree(response.data, "deptId",'parentId','children');
@@ -99,9 +104,23 @@
}
onMounted(()=>{
  getExpertsType()
})
const getExpertsType = async ()=>{
  const res = await getExpertTypes()
  if(res.code == 200){
    data.expertsType = res.data
  }else{
    ElMessage({
      type: 'warning',
      message: res.msg
    })
  }
}
const professionChange=(value)=> {
  console.log(value,'val')
}
const onSubmit = async (formEl)=> {
  if (!formEl) return
  await formEl.validate(async (valid, fields) => {
@@ -120,12 +139,23 @@
  })
}
const downloadPdf=(info)=>{
  if(info.state == 2){
    const routePath = '/certPdf';
    const resolvedRoute = router.resolve(routePath);
    const queryString = new URLSearchParams(info).toString();
    const fullPath = `${resolvedRoute.href}?${queryString}`;
    window.open(fullPath, '_blank');
  }else{
    ElMessage.warning('下载聘书需等待评定通过')
  }
}
const resetQuery = ()=>{
  data.queryParams = {
    idCard: '',
    phone: '',
    deptId: null
    domain: ''
  }
  showProgress.value = false
}