| | |
| | | <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"> |
| | |
| | | <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"/> |
| | |
| | | @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> |
| | |
| | | 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: '', |
| | | } |
| | |
| | | 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([]); |
| | |
| | | onMounted(() => { |
| | | getList(); |
| | | getStatistics(); |
| | | getArea(); |
| | | getBusinessList(); |
| | | getRiskList(); |
| | | tableHeight.value = window.innerHeight - tableRef.value.$el.offsetTop - 170; |
| | | // 监听浏览器高度变化 |
| | | window.onresize = () => { |
| | |
| | | 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{ |
| | |
| | | } |
| | | } |
| | | const handleSizeChange = (val) => { |
| | | search.queryParams.pageNum = 1; |
| | | search.queryParams.pageSize = val |
| | | getList() |
| | | } |
| | |
| | | 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( |
| | | '确定删除此条数据?', |
| | |
| | | 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> |
| | | |
| | |
| | | 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> |
| | |
| | | <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" |
| | |
| | | <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 > |
| | |
| | | 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) |
| | |
| | | socialAttach: [], |
| | | medicalAttach: [], |
| | | salaryAttach: [], |
| | | idPhoto: '', |
| | | post: '', |
| | | jobTitle: '', |
| | | level: '', |
| | |
| | | password: '', |
| | | confirmPassword: '', |
| | | }, |
| | | agencyName:'', |
| | | socialList: [], |
| | | medicalList: [], |
| | | salaryList: [], |
| | | photoList: [], |
| | | formRules:{ |
| | | name: [{ required: true, message: '请输入姓名', trigger: 'blur' }], |
| | | username: [{ required: true, validator: validateUsername, trigger: 'blur' }], |
| | |
| | | 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: [], |
| | |
| | | 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) => { |
| | |
| | | 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) |
| | | } |
| | |
| | | state.salaryList = []; |
| | | state.medicalList = []; |
| | | state.socialList = []; |
| | | state.photoList = []; |
| | | dialogVisible.value = false; |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | |
| | | socialAttach: [], |
| | | medicalAttach: [], |
| | | salaryAttach: [], |
| | | idPhoto: '', |
| | | post: '', |
| | | jobTitle: '', |
| | | level:'', |
| | |
| | | state.salaryList = []; |
| | | state.medicalList = []; |
| | | state.socialList = []; |
| | | state.photoList = []; |
| | | state.form.selectMajorList = []; |
| | | } |
| | | const picSize = async (rawFile) => { |
| | |
| | | } |
| | | } |
| | | |
| | | 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 |
| | | }) |
| | | } |
| | | } |
| | | |
| | | |
| | | |
对比新文件 |
| | |
| | | <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> |
| | |
| | | :preview-src-list="scope.row.socialAttach" |
| | | :initial-index="0" |
| | | fit="cover" |
| | | preview-teleported="true" |
| | | :preview-teleported="true" |
| | | /> |
| | | </div> |
| | | </template> |
| | |
| | | :preview-src-list="scope.row.medicalAttach" |
| | | :initial-index="0" |
| | | fit="cover" |
| | | preview-teleported="true" |
| | | :preview-teleported="true" |
| | | /> |
| | | </div> |
| | | </template> |
| | |
| | | :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> |
| | |
| | | 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> |
| | |
| | | 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, |
| | |
| | | ...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) |
| | |
| | | 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() { |