From 9cdbffc57965dbb88758d6cde8c174fc3a1c3fb3 Mon Sep 17 00:00:00 2001 From: zhouwenxuan <1175765986@qq.com> Date: 星期五, 19 一月 2024 09:20:33 +0800 Subject: [PATCH] 专家用户修改 --- src/views/safetyReview/userManage/expertUsers/components/expertDialog.vue | 113 +++++++++- src/views/safetyReview/userManage/expertUsers/index.vue | 50 ++++ src/views/safetyReview/userManage/expertUsers/components/projectDialog.vue | 168 ++++++++++++++++ src/views/safetyReview/projectManage/index.vue | 243 +++++++++++++++++++++++ 4 files changed, 548 insertions(+), 26 deletions(-) diff --git a/src/views/safetyReview/projectManage/index.vue b/src/views/safetyReview/projectManage/index.vue index 1a9a477..e59c9bd 100644 --- a/src/views/safetyReview/projectManage/index.vue +++ b/src/views/safetyReview/projectManage/index.vue @@ -3,7 +3,7 @@ <div class="header"> <el-button type="success" icon="Plus" @click="toProcess('add',{})">新增</el-button> <el-button type="warning" >导出</el-button> - <el-button type="primary" icon="Filter">筛选</el-button> + <el-button type="primary" icon="Filter" @click="showDrawer = true">筛选</el-button> </div> <div class="middle"> <div class="card-box"> @@ -63,17 +63,31 @@ <el-table-column label="序号" width="80" align="center" type="index" ></el-table-column> <el-table-column label="项目名称" prop="name" align="center" :show-overflow-tooltip="true" width="180" /> <el-table-column label="委托单位" prop="client" align="center" :show-overflow-tooltip="true" width="180"/> - <el-table-column label="所属地市" prop="updateTime" align="center" width="250"> + <el-table-column label="所属地市" align="center" width="250"> <template #default="scope"> {{scope.row.province}}/{{scope.row.city}} </template> </el-table-column> <el-table-column label="评价类型" prop="estimateTypeName" align="center" width="150"/> <el-table-column label="业务范围" prop="businessName" align="center" :show-overflow-tooltip="true" width="150"/> - <el-table-column label="项目负责人" prop="" align="center" width="120" :show-overflow-tooltip="true"/> - <el-table-column label="项目阶段" prop="" align="center" width="200"> + <el-table-column label="项目负责人" prop="leaderName" align="center" width="120" :show-overflow-tooltip="true"/> + <el-table-column label="项目阶段" align="center" width="200"> <template #default="scope"> - + <div v-if="scope.row.process === 1" class="process1"> + <span>风险分析及计划评价</span> + </div> + <div v-else-if="scope.row.process === 2" class="process1 process2"> + <span>现场勘验</span> + </div> + <div v-else-if="scope.row.process === 3" class="process1 process3"> + <span>项目审核</span> + </div> + <div v-else-if="scope.row.process === 4" class="process1 process4"> + <span>出具报告</span> + </div> + <div v-else class="process1 process5"> + <span>项目归档</span> + </div> </template> </el-table-column> <el-table-column label="项目实施天数" prop="" align="center" width="150"/> @@ -102,6 +116,80 @@ @current-change="handleCurrentChange" /> </div> + <el-drawer v-model="showDrawer" :direction="direction" :with-header="false" :size="size" > + <template #default> + <div class="drawer"> + <el-form ref="drawerRef" class="register-form" label-position="top"> + <el-form-item label="时间选择"> + <el-date-picker + v-model="searchTime" + type="daterange" + @change="changeTime" + range-separator="至" + start-placeholder="开始日期" + end-placeholder="结束日期" + value-format="YYYY-MM-DD" + /> + </el-form-item> + <el-form-item label="所属区域"> + <el-cascader + v-model="area" + :options="addressList" + :props="props" + @change="handleChange" + style="width: 100%" + size="large" + /> + </el-form-item> + <el-form-item label="项目名称" > + <el-input v-model="search.queryParams.name" placeholder="请输入项目名称"></el-input> + </el-form-item> + <el-form-item label="委托单位"> + <el-input v-model="search.queryParams.client" placeholder="委托单位"></el-input> + </el-form-item> + <el-form-item label="业务范围"> + <el-select v-model="search.queryParams.business" class="m-2" size="large" placeholder="请选择" style="width: 100%" > + <el-option + v-for="item in businessList" + :key="item.id" + :label="item.label" + :value="item.id" + /> + </el-select> + </el-form-item> + <el-form-item label="评价类型"> + <el-select v-model="search.queryParams.estimateType" class="m-2" size="large" placeholder="请选择" style="width: 100%" > + <el-option + v-for="item in estimateTypeList" + :key="item.id" + :label="item.label" + :value="item.id" + /> + </el-select> + </el-form-item> + <el-form-item label="缺失要件"> + <el-select v-model="search.queryParams.miss" class="m-2" size="large" placeholder="请选择" style="width: 100%" > + <el-option + v-for="item in missingList" + :key="item.id" + :label="item.label" + :value="item.id" + /> + </el-select> + </el-form-item> + + </el-form> + </div> + </template> + <template #footer> + <div style="flex: auto"> + <el-button type="primary" @click="searchClick">查询</el-button> + <el-button type="warning" @click="reset">重置</el-button> + <el-button @click="confirmClick">取消</el-button> + + </div> + </template> + </el-drawer> </div> </template> @@ -111,13 +199,31 @@ import {delProject, getProjectList, getProjectStatistics} from "@/api/projectManage/project"; import {ElMessage, ElMessageBox} from "element-plus"; import {delMonitor} from "@/api/sysUsers"; +import {getRegionTree} from "@/api/area"; +import {getDict} from "@/api/login"; +import {getDictList} from "@/api/backManage/evaluate"; const router = useRouter(); const loading = ref(false); +const direction = ref('rtl'); +const showDrawer = ref(false); +const size = ref('400px') +const props = { + expandTrigger: 'hover', + value: 'name', + label: 'name' +} const search = reactive({ queryParams: { pageNum: 1, pageSize: 20, + name: '', + client: '', + province: '', + city: '', + district: '', + business: '', + estimateType: '', params:{ projectPhase: '', } @@ -131,6 +237,21 @@ archiveTotal: 0 } }); +const searchTime = ref([]); +const area = ref([]); +const businessList = ref([]); +const addressList = ref([]); +const estimateTypeList = ref([]); +const missingList = ref([ + { + id: 0, + label: '否' + }, + { + id: 1, + label: '是' + }, +]) const tableRef = ref(null); const tableHeight = ref(0); const dataList = ref([]); @@ -139,6 +260,9 @@ onMounted(() => { getList(); getStatistics(); + getArea(); + getBusinessList(); + getRiskList(); tableHeight.value = window.innerHeight - tableRef.value.$el.offsetTop - 170; // 监听浏览器高度变化 window.onresize = () => { @@ -157,7 +281,14 @@ console.log(search.queryParams,'search.queryParams') const res = await getProjectList(search.queryParams); if(res.code == 200){ - dataList.value = res.data.list; + dataList.value = res.data.list.map(item => { + return { + ...item, + process: item.reportProgress <=4 ? 1 : item.reportProgress >4 && item.reportProgress <=6 ? 2 : item.reportProgress >6 && item.reportProgress <=9 ? 3 :item.reportProgress >9 && item.reportProgress <=11 ? 4:5, + leaderName: item.leader ? item.leader.name : '' + } + }) + console.log('data',dataList.value) total.value = res.data.total loading.value = false; }else{ @@ -175,6 +306,7 @@ } } const handleSizeChange = (val) => { + search.queryParams.pageNum = 1; search.queryParams.pageSize = val getList() } @@ -186,6 +318,33 @@ value.type = type; router.push({ path: '/process', query: {id: value.id, type: type}}); } + +const getArea = async ()=>{ + const type = 1 + const res = await getRegionTree({name: '',parentId: null,regionType: type}) + if(res.code == 200){ + addressList.value = res.data + }else{ + ElMessage.warning(res.message) + } +} +const getBusinessList = async () => { + const res = await getDict({dictType: 'sys_business_scope'}) + if(res.code === 200){ + businessList.value = res.data + }else{ + ElMessage.warning(res.message) + } +} +const getRiskList = async () => { + const res = await getDictList({dictType: "sys_assess_type"}); + if(res.code === 200){ + estimateTypeList.value = res.data.list + }else{ + ElMessage.warning(res.message) + } +} + const del = (val) => { ElMessageBox.confirm( '确定删除此条数据?', @@ -204,6 +363,54 @@ ElMessage.warning(res.message) } }) +} +const confirmClick = () => { + showDrawer.value = false; +} +const changeTime=(value)=>{ + if(!value){ + search.queryParams.params.endTime = "" + search.queryParams.params.startTime = "" + } +} +const searchClick = () => { + if(searchTime.value && searchTime.value.length>0){ + search.queryParams.params.startTime = searchTime.value[0] + search.queryParams.params.endTime = searchTime.value[1] + } + getList(); + getStatistics(); + showDrawer.value = false; +} +const reset = () => { + searchTime.value = []; + area.value = []; + search.queryParams = { + pageNum: 1, + pageSize: 20, + name: '', + client: '', + province: '', + city: '', + district: '', + business: '', + estimateType: '', + } + search.queryParams.params = {} + getList(); + getStatistics(); + showDrawer.value = false; +} +const handleChange = (value) => { + // if(state.registerForm.agency.attribute == 0){ + // state.registerForm.agency.province = '新疆维吾尔自治区' + // state.registerForm.agency.city = value[0]?value[0]:'' + // state.registerForm.agency.district = value[1]?value[1]:'' + // }else{ + search.queryParams.province = value[0]?value[0]:'' + search.queryParams.city = value[1]?value[1]:'' + search.queryParams.district = value[2]?value[2]:'' + // } } </script> @@ -334,5 +541,29 @@ float: right; margin-top: 20px; } + .process1{ + border-radius: 5px; + color: rgb(255, 255, 255); + padding: 5px 10px; + background: linear-gradient(90deg, rgb(127, 118, 253), rgb(218, 180, 246)); + } + .process2{ + background: linear-gradient(90deg, rgb(255, 140, 138), rgb(239, 186, 141)); + } + .process3 { + background: linear-gradient(90deg, rgb(229, 119, 180), rgb(249, 159, 192));; + } + .process4 { + background: linear-gradient(90deg, rgb(54, 115, 255), rgb(124, 196, 242));; + } + .process5 { + background: linear-gradient(90deg, rgb(0, 195, 151), rgb(114, 232, 200));; + } + .drawer{ + :deep(.el-form .el-form-item__label) { + font-size: 15px; + } + } + } </style> diff --git a/src/views/safetyReview/userManage/expertUsers/components/expertDialog.vue b/src/views/safetyReview/userManage/expertUsers/components/expertDialog.vue index 4ba643a..cf629b9 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" @@ -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 > @@ -207,6 +228,9 @@ import {resetUserPwd} from "../../../../../api/sysUsers"; 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) @@ -302,6 +326,7 @@ socialAttach: [], medicalAttach: [], salaryAttach: [], + idPhoto: '', post: '', jobTitle: '', level: '', @@ -311,9 +336,11 @@ password: '', confirmPassword: '', }, + agencyName:'', socialList: [], medicalList: [], salaryList: [], + photoList: [], formRules:{ name: [{ required: true, message: '请输入姓名', trigger: 'blur' }], username: [{ required: true, validator: validateUsername, trigger: 'blur' }], @@ -328,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: [], @@ -341,8 +369,16 @@ pageSize: 10 }) +const isAgency = ref(false); onMounted(()=>{ getAgency() + const userInfo = JSON.parse(Cookies.get('userInfo')) + state.agencyName = userInfo.agentName; + state.form.agencyId = userInfo.agentId; + if(userInfo.identity === 1){ + isAgency.value = true; + } + console.log("userinfo",userInfo) }) const openDialog = async (type, value) => { @@ -373,19 +409,26 @@ 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) } @@ -447,6 +490,7 @@ state.salaryList = []; state.medicalList = []; state.socialList = []; + state.photoList = []; dialogVisible.value = false; }else{ ElMessage.warning(res.message) @@ -509,6 +553,7 @@ socialAttach: [], medicalAttach: [], salaryAttach: [], + idPhoto: '', post: '', jobTitle: '', level:'', @@ -521,6 +566,7 @@ state.salaryList = []; state.medicalList = []; state.socialList = []; + state.photoList = []; state.form.selectMajorList = []; } const picSize = async (rawFile) => { @@ -571,6 +617,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 + }) + } +} diff --git a/src/views/safetyReview/userManage/expertUsers/components/projectDialog.vue b/src/views/safetyReview/userManage/expertUsers/components/projectDialog.vue new file mode 100644 index 0000000..d604783 --- /dev/null +++ b/src/views/safetyReview/userManage/expertUsers/components/projectDialog.vue @@ -0,0 +1,168 @@ +<template> + <div class="project-dialog"> + <el-dialog + v-model="dialogVisible" + title="评价的项目列表" + width="800px" + :before-close="handleClose" + > + <!-- 表格数据 --> + <el-table v-loading="loading" :data="dataList" :border="true" ref="tableRef" style="width: 100%;"> + <el-table-column label="序号" width="80" align="center" type="index" ></el-table-column> + <el-table-column label="项目名称" prop="name" align="center" :show-overflow-tooltip="true" width="180" /> + <el-table-column label="委托单位" prop="client" align="center" :show-overflow-tooltip="true" width="180"/> + <el-table-column label="所属地市" prop="updateTime" align="center" width="250"> + <template #default="scope"> + {{scope.row.province}}/{{scope.row.city}} + </template> + </el-table-column> + <el-table-column label="评价类型" prop="estimateTypeName" align="center" width="150"/> + <el-table-column label="业务范围" prop="businessName" align="center" :show-overflow-tooltip="true" width="150"/> + <el-table-column label="项目负责人" prop="leaderName" align="center" width="120" :show-overflow-tooltip="true"/> + <el-table-column label="项目阶段" align="center" width="200"> + <template #default="scope"> + <div v-if="scope.row.process === 1" class="process1"> + <span>风险分析及计划评价</span> + </div> + <div v-else-if="scope.row.process === 2" class="process1 process2"> + <span>现场勘验</span> + </div> + <div v-else-if="scope.row.process === 3" class="process1 process3"> + <span>项目审核</span> + </div> + <div v-else-if="scope.row.process === 4" class="process1 process4"> + <span>出具报告</span> + </div> + <div v-else class="process1 process5"> + <span>项目归档</span> + </div> + </template> + </el-table-column> + <el-table-column label="项目实施天数" prop="" align="center" width="150"/> + <el-table-column label="项目变更" prop="" align="center" width="120"/> + <el-table-column label="预估金额(万元)" prop="" align="center" width="130"/> + <el-table-column label="归档金额(万元)" prop="" align="center" width="130"/> + <el-table-column label="缺失要件" prop="" align="center" width="150"/> + <el-table-column label="归档确认" prop="" align="center" width="150"/> + <el-table-column label="操作" fixed="right" align="center" class-name="small-padding fixed-width" width="180"> + <template #default="scope"> + <el-button link type="primary" @click="toProcess('view',scope.row)">查看</el-button> + <el-button link type="primary" @click="toProcess('edit',scope.row)">编辑</el-button> +<!-- <el-button link type="danger" @click="del(scope.row)">删除</el-button>--> + </template> + </el-table-column> + </el-table> + <div class="pag-container"> + <el-pagination + v-model:current-page="search.queryParams.pageNum" + v-model:page-size="search.queryParams.pageSize" + :page-sizes="[10,15,20,25]" + layout="total, sizes, prev, pager, next, jumper" + :total="total" + @size-change="handleSizeChange" + @current-change="handleCurrentChange" + /> + </div> + </el-dialog> + + </div> + +</template> + +<script setup> +import {reactive, ref} from "vue"; +import {getProjectList} from "@/api/projectManage/project"; +const loading = ref(false); +const dataList = ref([]); +const tableRef = ref(null); +const total = ref(0); +const dialogVisible = ref(false); +const router = useRouter(); +const search = reactive({ + queryParams: { + pageNum: 1, + pageSize: 10, + params:{ + projectPhase: '', + personId: '' + } + }, +}); +const openDialog = async (val) => { + search.queryParams.params.personId = val.id + dialogVisible.value = true; + await getList(); +} +const getList = async () => { + loading.value = true; + console.log(search.queryParams,'search.queryParams') + const res = await getProjectList(search.queryParams); + if(res.code === 200 ){ + dataList.value = res.data.list.map(item => { + return { + ...item, + process: item.reportProgress <=4 ? 1 : item.reportProgress >4 && item.reportProgress <=6 ? 2 : item.reportProgress >6 && item.reportProgress <=9 ? 3 :item.reportProgress >9 && item.reportProgress <=11 ? 4:5, + leaderName: item.leader ? item.leader.name : '' + } + }) + console.log(dataList.value,'dataList.value') + total.value = res.data.total + loading.value = false; + } +} +const handleClose = () => { + dialogVisible.value = false; +} +const handleSizeChange = (val) => { + search.queryParams.pageNum = 1; + search.queryParams.pageSize = val + getList() +} +const handleCurrentChange = (val) => { + search.queryParams.pageNum = val + getList() +} + +const toProcess = (type,value) => { + dialogVisible.value = false; + value.type = type; + router.push({ path: '/process', query: {id: value.id, type: type}}); +} + + +defineExpose({ + openDialog +}); + + +</script> + + +<style scoped lang="scss"> +.project-dialog{ + .process1{ + border-radius: 5px; + color: rgb(255, 255, 255); + padding: 5px 10px; + background: linear-gradient(90deg, rgb(127, 118, 253), rgb(218, 180, 246)); + } + .process2{ + background: linear-gradient(90deg, rgb(255, 140, 138), rgb(239, 186, 141)); + } + .process3 { + background: linear-gradient(90deg, rgb(229, 119, 180), rgb(249, 159, 192));; + } + .process4 { + background: linear-gradient(90deg, rgb(54, 115, 255), rgb(124, 196, 242));; + } + .process5 { + background: linear-gradient(90deg, rgb(0, 195, 151), rgb(114, 232, 200));; + } + +} +.pag-container{ + margin-top: 20px; + display: flex; + justify-content: end; +} +</style> diff --git a/src/views/safetyReview/userManage/expertUsers/index.vue b/src/views/safetyReview/userManage/expertUsers/index.vue index 96d9db1..47e83ba 100644 --- a/src/views/safetyReview/userManage/expertUsers/index.vue +++ b/src/views/safetyReview/userManage/expertUsers/index.vue @@ -79,7 +79,7 @@ :preview-src-list="scope.row.socialAttach" :initial-index="0" fit="cover" - preview-teleported="true" + :preview-teleported="true" /> </div> </template> @@ -96,7 +96,7 @@ :preview-src-list="scope.row.medicalAttach" :initial-index="0" fit="cover" - preview-teleported="true" + :preview-teleported="true" /> </div> </template> @@ -113,17 +113,40 @@ :preview-src-list="scope.row.salaryAttach" :initial-index="0" fit="cover" - preview-teleported="true" + :preview-teleported="true" /> </div> </template> </el-table-column> + <el-table-column label="证件照" prop="idPhoto" align="center" width="120"> + <template #default="scope"> + <div class="demo-image__preview" v-if="scope.row.idPhoto && scope.row.idPhoto.length>0"> + <el-image + style="width: 100px; height: 100px" + :src= "scope.row.idPhoto[0]" + :zoom-rate="1.2" + :max-scale="7" + :min-scale="0.2" + :preview-src-list="scope.row.idPhoto" + :initial-index="0" + fit="cover" + :preview-teleported="true" + /> + </div> + </template> + </el-table-column> <el-table-column label="职务" prop="post" align="center" width="120" /> <el-table-column label="职称" prop="jobTitle" align="center" /> <el-table-column label="专业方向" prop="majorNames" align="center" width="100" /> <el-table-column label="评价师等级" prop="level" align="center" width="100" /> - <el-table-column label="业绩汇总" prop="summary" align="center" /> - <el-table-column label="最近评价时间" prop="lastTime" align="center" width="120" /> + <el-table-column label="业绩汇总" prop="summary" align="center"> + <template #default="scope"> + <div style="cursor:pointer;color: #3b82f6;" @click="openList(scope.row)"> + <span>{{scope.row.projectCount}}</span> + </div> + </template> + </el-table-column> + <el-table-column label="最近评价时间" prop="lastEstimateTime" align="center" width="120" /> <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="140" > <template #default="scope"> <el-button link type="primary" @click="openDialog('edit',scope.row)">编辑</el-button> @@ -140,6 +163,7 @@ v-model:limit="queryParams.pageSize" @pagination="getList" /> + <project-dialog ref="projectRef" @getList="getList"></project-dialog> <expert-dialog ref="expertRef" @getList="getList" :majorList="majorList" :levelList="levelList" :postList="postList"></expert-dialog> </div> </template> @@ -149,11 +173,13 @@ import expertDialog from "./components/expertDialog.vue" import {getDictList} from "@/api/backManage/evaluate"; import {ElMessage, ElMessageBox} from "element-plus"; +import projectDialog from "./components/projectDialog.vue"; import Cookies from "js-cookie"; import {delMonitor, getExpertList, getMonitorList} from "@/api/sysUsers"; const { proxy } = getCurrentInstance(); const loading = ref(false); const expertRef = ref(); +const projectRef = ref(); const data = reactive({ queryParams: { pageNum: 1, @@ -224,7 +250,10 @@ ...item, socialAttach: item.socialAttach.map(s => { return import.meta.env.VITE_APP_BASE_API + '/' + s.path}), medicalAttach: item.medicalAttach.map(s => { return import.meta.env.VITE_APP_BASE_API + '/' + s.path}), - salaryAttach: item.salaryAttach.map(s => { return import.meta.env.VITE_APP_BASE_API + '/' + s.path}) + salaryAttach: item.salaryAttach.map(s => { return import.meta.env.VITE_APP_BASE_API + '/' + s.path}), + idPhoto: item.idPhoto ? [import.meta.env.VITE_APP_BASE_API + '/' + item.idPhoto ] : [], + lastEstimateTime: item.personProjectVO ? item.personProjectVO.lastEstimateTime : '', + projectCount: item.personProjectVO ? item.personProjectVO.projectCount : '' } }) console.log('RES',data.dataList) @@ -271,6 +300,15 @@ const openDialog = (type, value) => { expertRef.value.openDialog(type, value); } +const changeType = (val) => { + console.log("val", val) + queryParams.expertType = val; + queryParams.pageNum = 1; + getList(); +} +const openList = (val) => { + projectRef.value.openDialog(val); +} /** 重置新增的表单以及其他数据 */ function reset() { -- Gitblit v1.9.2