src/api/backManage/evaluate.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/layout/components/Sidebar/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/safetyReview/baseSet/evaluateType/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/safetyReview/expertManage/evaluateRecord/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/safetyReview/expertManage/postEvaluation/components/evaluate.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/safetyReview/expertManage/postEvaluation/components/expertList.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/safetyReview/expertManage/postEvaluation/components/selectList.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/safetyReview/expertManage/postEvaluation/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/api/backManage/evaluate.js
@@ -99,6 +99,15 @@ }) } // 专家考评列表 export function getProjectExpertEvaluationList(params) { return request({ url: '/system/management/projectExpertEvaluationList', method: 'get', params: params }) } // 专家考评记录 export function getExpertEvaList(params) { return request({ @@ -114,4 +123,13 @@ method: 'get', params: params }) } // 专家考评 export function projectExpertDetailSave(data) { return request({ url: '/system/management/ProjectExpertDetailSave', method: 'post', data: data }) } src/layout/components/Sidebar/index.vue
@@ -30,8 +30,6 @@ import useAppStore from '@/store/modules/app' import useSettingsStore from '@/store/modules/settings' import usePermissionStore from '@/store/modules/permission' import {computed} from "vue"; import {useRoute} from "vue-router"; const route = useRoute(); const appStore = useAppStore() @@ -39,7 +37,6 @@ const permissionStore = usePermissionStore() const sidebarRouters = computed(() => permissionStore.sidebarRouters); console.log(sidebarRouters.value,789) const showLogo = computed(() => settingsStore.sidebarLogo); const sideTheme = computed(() => settingsStore.sideTheme); const theme = computed(() => settingsStore.theme); @@ -51,14 +48,7 @@ if (meta.activeMenu) { return meta.activeMenu; } const showRoute = sidebarRouters.value.filter(item => !item.hidden); if(showRoute[0].path === '/'){ return '/' + showRoute[0].children[0].path }else{ return showRoute[0].path + '/' + showRoute[0].children[0].path } // return path return path; }) </script> src/views/safetyReview/baseSet/evaluateType/index.vue
@@ -80,7 +80,7 @@ dataList.value = res.rows total.value = res.total }else{ ElMessage.warning(res.message) ElMessage.warning(res.msg) } loading.value = false; } @@ -126,7 +126,7 @@ }); await getList(); }else{ ElMessage.warning(res.message) ElMessage.warning(res.msg) } }) } src/views/safetyReview/expertManage/evaluateRecord/index.vue
@@ -74,7 +74,7 @@ import EvaluateDetail from "./components/evaluateDetail"; import {delExpert, getExpertsList, getExpertTypes} from "../../../../api/form"; import { Plus } from '@element-plus/icons-vue' import {getExpertEvaList, getProjectExpertList} from "@/api/backManage/evaluate"; import {getExpertEvaList} from "@/api/backManage/evaluate"; const loading = ref(false); const data = reactive({ src/views/safetyReview/expertManage/postEvaluation/components/evaluate.vue
@@ -1,134 +1,303 @@ <template> <div class="notice"> <el-dialog v-model="dialogVisible" :title="title" width="900px" :before-close="handleClose" > <el-form :model="state.form" inline size="default" ref="busRef" :rules="state.formRules" label-width="140px" > <el-form-item label="姓名:" prop="score"> <el-input v-model.trim="state.form.score" readonly></el-input> </el-form-item> <el-form-item label="身份证号:" prop="content"> <el-input v-model.trim="state.form.content" readonly></el-input> </el-form-item> <el-form-item label="项目名称:" prop="score"> <el-input v-model.trim="state.form.score" readonly></el-input> </el-form-item> <el-form-item label="是否为专家组组长:" prop="content"> <el-input v-model.trim="state.form.content" readonly></el-input> </el-form-item> <el-form-item label="考评记录时间:" prop="content"> <el-input v-model.trim="state.form.content" readonly></el-input> </el-form-item> <el-form-item label="总计:" prop="content"> <el-input v-model.trim="state.form.content" readonly></el-input> </el-form-item> </el-form> <div> 请对专家表现进行评分: </div> <div style="width: 100%;display: flex;align-items: center;justify-content: space-between"> <el-button type="primary" size="default" v-preReClick>添加加分项</el-button> <div> 加分总计:52 分 </div> </div> <el-table :data="tableData" border style="width: 100%"> <el-table-column prop="name" label="加分项"/> <el-table-column prop="score" label="分值" /> </el-table> <div style="width: 100%;display: flex;align-items: center;justify-content: space-between"> <el-button type="primary" size="default" v-preReClick>添加扣分项</el-button> <div> 扣分总计:52 分 </div> </div> <el-table :data="tableData" border style="width: 100%"> <el-table-column prop="name" label="扣分项"/> <el-table-column prop="score" label="分值" /> </el-table> <template #footer> <span class="dialog-footer"> <el-button type="primary" @click="handleClose" size="default" v-preReClick>确认</el-button> </span> </template> </el-dialog> </div> <div class="notice"> <el-dialog v-model="dialogVisible" :title="state.title" width="50%" :before-close="handleClose" > <el-form :model="state.info" inline size="default" ref="busRef" label-width="140px"> <el-form-item label="姓名:"> <el-input v-model.trim="state.info.name" readonly></el-input> </el-form-item> <el-form-item label="身份证号:"> <el-input v-model.trim="state.info.idCard" readonly></el-input> </el-form-item> <el-form-item label="项目名称:"> <el-input v-model.trim="state.info.projectName" readonly></el-input> </el-form-item> <el-form-item label="是否为专家组组长:"> <el-input v-model.trim="state.info.teamLeader" readonly></el-input> </el-form-item> <el-form-item label="考评记录时间:"> <el-input v-model.trim="state.info.evaluateTime" readonly></el-input> </el-form-item> <el-form-item label="总计:"> <el-input v-model.trim="state.info.score" readonly></el-input> </el-form-item> </el-form> <div> 请对专家表现进行评分: </div> <div style="width: 100%;display: flex;align-items: center;justify-content: space-between;margin: 25px 0 15px"> <div> <el-button type="primary" size="default" @click="openSelectList('1')" v-preReClick>添加加分项</el-button> <el-button type="default" size="default" @click="addSelect('1')" v-preReClick>自定义加分项</el-button> </div> <div style="font-size: 14px"> 加分总计:<span style="font-weight: bolder;color: #10B981">{{addTotal}}</span> 分 </div> </div> <el-table :data="state.addData" border style="width: 100%"> <el-table-column prop="content" label="加分项"/> <el-table-column prop="score" label="分值"> <template #default="scope"> <el-input v-model.trim="scope.row.score" type="number"></el-input> </template> </el-table-column> <el-table-column label="操作" align="center" class-name="small-padding fixed-width" > <template #default="scope"> <!-- <el-button link type="primary" @click="openDialog('edit',scope.row)">编辑</el-button>--> <el-button link type="danger" @click="deleteSelect(scope.row,scope.$index,1)" >删除</el-button> </template> </el-table-column> </el-table> <div style="width: 100%;display: flex;align-items: center;justify-content: space-between;margin: 25px 0 15px"> <div> <el-button type="primary" size="default" @click="openSelectList('2')" v-preReClick>添加扣分项</el-button> <el-button type="default" size="default" @click="addSelect('2')" v-preReClick>自定义扣分项</el-button> </div> <div style="font-size: 14px"> 扣分总计:<span style="font-weight: bolder;color: #EF4444">{{deductTotal}}</span> 分 </div> </div> <el-table :data="state.deductData" border style="width: 100%"> <el-table-column prop="content" label="扣分项"/> <el-table-column prop="score" label="分值"> <template #default="scope"> <el-input v-model.trim="scope.row.score" type="number"></el-input> </template> </el-table-column> <el-table-column label="操作" align="center" class-name="small-padding fixed-width" > <template #default="scope"> <el-button link type="danger" @click="deleteSelect(scope.row,scope.$index,2)" >删除</el-button> </template> </el-table-column> </el-table> <div style="margin: 25px 0;font-size: 14px;display: flex;justify-content: right"> 本项目考评总计:<span style="font-weight: bolder;color: #2563EB">{{totalScore}}</span> 分 </div> <div>提示:如果该专家在本项目无加分项,也无扣分项,直接点击“完成评分” 即可,不做任何分数更改。</div> <template #footer> <span class="dialog-footer"> <el-button type="primary" @click="confirmScore" size="default" v-preReClick>完成评分</el-button> </span> </template> <select-list ref="selectRef" @refreshSelected="getSelected"></select-list> <el-dialog v-model="state.addVisible" :title="state.addTitle" width="500px" :before-close="closeAdd" > <el-form :model="state.addForm" size="default" ref="addRef" :rules="state.addFormRules" label-width="110px" > <el-form-item label="内容:" prop="content"> <el-input v-model.trim="state.addForm.content" type="textarea" :autosize="{minRows: 2}"></el-input> </el-form-item> <el-form-item label="分值:" prop="score"> <el-input v-model.trim.number="state.addForm.score" type="number" placeholder="扣分请填写负数"></el-input> </el-form-item> </el-form> <template #footer> <span class="dialog-footer"> <el-button @click="closeAdd" size="default">取 消</el-button> <el-button type="primary" @click="submitAdd" size="default" v-preReClick>确认</el-button> </span> </template> </el-dialog> </el-dialog> </div> </template> <script setup> import {reactive, ref, toRefs} from 'vue' import Editor from "@/components/Editor/index.vue"; import {computed, defineAsyncComponent, reactive, ref, toRefs} from 'vue' import {ElMessage} from "element-plus"; import {addNotice} from "@/api/backManage/notice"; import {addDict, editDict, getDictDetail} from "@/api/backManage/evaluate"; import SelectList from './selectList' import {getExpertEvaDetail, projectExpertDetailSave} from '@/api/backManage/evaluate' const dialogVisible = ref(false); const title = ref(""); const busRef = ref(); const length = ref() const dialogVisible = ref(false) const busRef = ref() const addRef = ref() const selectRef = ref() const emit = defineEmits(["getList"]); const state = reactive({ form: { id: '', label: '', value: '', dictType: "sys_assess_type", }, formRules:{ label: [{ required: true, message: '请输入类型', trigger: 'blur' }], }, title: '', addData: [], deductData: [], info: { name: '', idCard: '', projectName: '', teamLeader: '', evaluateTime: '', score: '' }, form: { projectExpertId: null, saveData: [], delData: [], score: null }, addVisible: false, addTitle: '', addForm: { scoreType: '', score: null, content: '' }, addFormRules: { content: [{required: true, message: '请输入内容', trigger: 'blur'}], score: [{required: true, message: '请输入分值', trigger: 'blur'}], }, }) const openDialog = async (type, value) => { length.value = value.listLength title.value = type === 'add' ? '新增' : type ==='edit' ? '编辑' : '查看' ; if(type === 'edit') { state.form = value; const param = { dictId: value.id } const res = await getDictDetail(param); if(res.code === 200){ state.form = res.data }else{ ElMessage.warning(res.message) } const addTotal = computed(()=>{ return state.addData.map(i=>Number(i.score)).reduce((sum, num) => sum + num, 0) }) const deductTotal = computed(()=>{ return state.deductData.map(i=>Number(i.score)).reduce((sum, num) => sum + num, 0) }) const totalScore = computed(()=>{ return Number(addTotal.value) + Number(deductTotal.value) }) const openDialog = async (value, projectName, projectCheckTime) => { state.info = value state.form.projectExpertId = value.id state.info.projectName = projectName state.info.evaluateTime = projectCheckTime state.info.teamLeader = state.info.teamLeader == 1 ? '是' : '否' if (value.evaluationState === 1) { state.title = '继续评分' const res = await getExpertEvaDetail({projectExpertId: value.id}); if(res.code == 200){ state.addData = res.data.filter(i=>i.scoreType == '1') state.deductData = res.data.filter(i=>i.scoreType == '2') }else{ ElMessage.warning(res.msg) } dialogVisible.value = true; console.log(state.addData,'add') }else{ state.title = '评分' } dialogVisible.value = true; } const openSelectList = (type) => { if(type == '1'){ selectRef.value.openDialog(type, state.addData) }else{ selectRef.value.openDialog(type, state.deductData) } } const getSelected = (type)=>{ if(type == '1'){ state.addData = state.addData.concat(selectRef.value.data.selected.map(({ id, ...rest }) => rest)) }else{ state.deductData = state.deductData.concat(selectRef.value.data.selected.map(({ id, ...item }) => ({ ...item, score: item.score <0 ? item.score : -Math.abs(item.score) }))) } } const deleteSelect=(row,index,type)=>{ if(type == 1){ state.addData.splice(index,1) }else{ state.deductData.splice(index,1) } if(row.id){ state.form.delData.push(row.id) } } const addSelect = (type) =>{ state.addVisible = true if(type == '1'){ state.addTitle = '自定义加分项' state.addForm.scoreType = '1' }else{ state.addTitle = '自定义扣分项' state.addForm.scoreType = '2' } } const handleClose = () => { busRef.value.clearValidate(); reset(); dialogVisible.value = false; busRef.value.clearValidate(); state.info = { name: '', idCard: '', projectName: '', teamLeader: '', evaluateTime: '', score: '' } state.form = { projectExpertId: null, saveData: [], delData: [], score: null } state.addData = [] state.deductData = [] dialogVisible.value = false; } } const reset = () => { state.form = { id: '', label: '', value: '', dictType: "sys_assess_type", const submitAdd = async ()=>{ const valid = await addRef.value.validate(); if(valid){ if(state.addTitle == '自定义加分项'){ state.addData.push(state.addForm) }else{ state.deductData.push(state.addForm) } await closeAdd() } } const closeAdd = ()=>{ state.addVisible = false state.addForm = { scoreType: '', score: null, content: '' } } const confirmScore = async ()=>{ state.form.saveData = [...state.addData,...state.deductData] state.form.delData = state.form.delData.filter((id) => !state.form.saveData.some((item) => item.id === id)) console.log(state.form,'form') state.form.score = totalScore.value const res = await projectExpertDetailSave(state.form) if(res.code == 200){ ElMessage.success(res.msg) await handleClose() emit('getList') }else{ ElMessage.warning(res.msg) } } defineExpose({ openDialog }); openDialog }) </script> <style scoped lang="scss"> .notice{ :deep(.el-form .el-form-item__label) { font-size: 15px; } .file { display: flex; flex-direction: column; align-items: flex-start; } .notice { :deep(.el-form .el-form-item__label) { font-size: 15px; } .file { display: flex; flex-direction: column; align-items: flex-start; } } </style> src/views/safetyReview/expertManage/postEvaluation/components/expertList.vue
@@ -2,42 +2,62 @@ <div class="notice"> <el-dialog v-model="dialogVisible" title="专家评估" :title="title" width="75%" @close="closeEvaluate" > <el-table :data="tableData" border style="width: 100%"> <el-table-column type="index" width="55" align="center" /> <el-table-column label="姓名" align="center" prop="name" /> <el-table-column label="性别" align="center" prop="birthday" /> <el-table-column label="身份证号" align="center" prop="birthday" /> <el-table-column label="等级" align="center" prop="degree" /> <el-table-column label="专业领域" align="center"> <el-table-column label="性别" align="center" prop="sex"> <template #default="scope"> {{findNodeById(expertTypes,scope.row.bigClassify)}}/{{findNodeById(expertTypes,scope.row.smallClassify)}} {{scope.row.sex == 0?'男':scope.row.sex == 1?'女':'未知'}} </template> </el-table-column> <el-table-column label="选用方式" align="center" prop="birthday" /> <el-table-column label="是否为组长" align="center" prop="degree" /> <el-table-column label="评估状态" align="center" prop="state"> <el-table-column label="身份证号" align="center" prop="idCard" /> <el-table-column label="等级" align="center" prop="ratingLevel"> <template #default="scope"> <el-tag :type="scope.row.state==0?'info':scope.row.state==1?'':scope.row.state==2?'success':scope.row.state==3?'danger':'warning'"> {{scope.row.state==0?'暂存':scope.row.state==1?'审核中':scope.row.state==2?'审核通过':scope.row.state==3?'审核驳回':scope.row.state==4?'已作废':'--'}} {{scope.row.ratingLevel == 1?'一级':scope.row.ratingLevel == 2?'二级':scope.row.ratingLevel == 3?'三级':'暂无'}} </template> </el-table-column> <el-table-column label="专业领域" align="center" prop="domain"/> <el-table-column label="选用方式" align="center" prop="selectionMode"> <template #default="scope"> {{scope.row.selectionMode == 1?'固定':scope.row.selectionMode == 2?'随机':'其他'}} </template> </el-table-column> <el-table-column label="是否为组长" align="center" prop="teamLeader"> <template #default="scope"> {{scope.row.teamLeader == 0?'否':scope.row.teamLeader == 1?'是':'未知'}} </template> </el-table-column> <el-table-column label="评估状态" align="center" prop="evaluationState"> <template #default="scope"> <el-tag :type="scope.row.evaluationState == 0?'info':scope.row.evaluationState==1?'success':''"> {{scope.row.evaluationState ==0?'未评估':scope.row.evaluationState==1?'已评估':'--'}} </el-tag> </template> </el-table-column> <el-table-column label="考评总分" align="center" prop="degree" /> <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column label="考评总分" align="center" prop="score" /> <el-table-column v-if="title == '专家评估'" label="操作" align="center" class-name="small-padding fixed-width"> <template #default="scope"> <el-button type="primary" link @click="openEvaluate()">评分</el-button> <el-button type="primary" link @click="openEvaluate(scope.row)">评分</el-button> </template> </el-table-column> </el-table> <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getEvaluationList" /> <template #footer> <span class="dialog-footer"> <el-button type="primary" @click="dialogVisible = false" size="default" v-preReClick>确认</el-button> <el-button type="primary" @click="closeEvaluate" size="default" v-preReClick>确认</el-button> </span> </template> <evaluate ref="evaluateRef"></evaluate> <evaluate ref="evaluateRef" @getList="getEvaluationList()"></evaluate> </el-dialog> </div> </template> @@ -45,43 +65,55 @@ import {reactive, ref, toRefs} from 'vue' import {ElMessage} from "element-plus"; import Evaluate from "./evaluate"; import {addDict, editDict, getDictDetail} from "@/api/backManage/evaluate"; import { getProjectExpertEvaluationList, } from "@/api/backManage/evaluate"; const dialogVisible = ref(false); const evaluateRef = ref() const title = ref(""); const emit = defineEmits(["getList"]); const state = reactive({ tableData: [], total: null, queryParams: { id: null, pageNum: 1, pageSize: 10 }, projectName: '', projectCheckTime: '', title: '' }) const openDialog = async (type, value) => { if(type === 'edit') { state.form = value; const param = { dictId: value.id } const res = await getDictDetail(param); if(res.code === 200){ state.form = res.data }else{ ElMessage.warning(res.message) } } dialogVisible.value = true; const {tableData,total,queryParams,projectName,title,projectCheckTime} = toRefs(state) const openDialog = async (type,value) => { if(type == 'view'){ state.title = '专家列表' }else{ state.title = '专家评估' } state.queryParams.id = value.id state.projectName = value.projectName state.projectCheckTime = value.projectCheckTime await getEvaluationList() dialogVisible.value = true; } const openEvaluate = ()=>{ // evaluateRef.value.openDialog() const getEvaluationList = async () => { const res = await getProjectExpertEvaluationList(state.queryParams) if(res.code == 200){ state.tableData = res.rows state.total = res.total }else{ ElMessage.warning(res.msg) } } const reset = () => { state.form = { id: '', label: '', value: '', dictType: "sys_assess_type", } const openEvaluate = (value)=>{ evaluateRef.value.openDialog(value,state.projectName,state.projectCheckTime) } const closeEvaluate = ()=>{ dialogVisible.value = false emit('getList') } defineExpose({ src/views/safetyReview/expertManage/postEvaluation/components/selectList.vue
对比新文件 @@ -0,0 +1,124 @@ <template> <el-dialog v-model="selectDialog" title="考评类型" width="80%" :before-close="handleClose"> <!-- 表格数据 --> <el-table ref="multipleTableRef" :data="dataList" :border="true" @selection-change="handleSelectionChange" :row-key="(row) => { return row.id }"> <el-table-column type="selection" width="55" :reserve-selection="true"/> <el-table-column label="项目内容" prop="content" align="center"/> <el-table-column label="类型" prop="scoreType" align="center"> <template #default="scope"> {{ scope.row.scoreType == '1' ? '加分项' : scope.row.scoreType == '2' ? '扣分项' : '' }} </template> </el-table-column> <el-table-column label="标准分值" prop="score" align="center"/> </el-table> <div class="pag-container"> <el-pagination v-model:current-page="data.queryParams.pageNum" v-model:page-size="data.queryParams.pageSize" :page-sizes="[10,15,20,25]" layout="total, sizes, prev, pager, next, jumper" :total="total" @size-change="handleSizeChange" @current-change="handleCurrentChange" /> </div> <template #footer> <span class="dialog-footer"> <el-button @click="data.selectDialog = false" size="default">取 消</el-button> <el-button type="primary" v-throttle @click="onSubmit" size="default">确 定</el-button> </span> </template> </el-dialog> </template> <script setup> import {getCurrentInstance, onMounted, reactive, ref, toRefs} from "vue"; import {ElMessage, ElMessageBox} from "element-plus"; import { getReviewList,} from "@/api/backManage/evaluate"; const {proxy} = getCurrentInstance() const multipleTableRef = ref() const emit = defineEmits(["refreshWorks"]) const data = reactive({ queryParams: { scoreType: '', pageNum: 1, pageSize: 10, }, total: 0, dataList: [], selected: [], selectDialog: false }) const {queryParams, total, dataList,selectDialog} = toRefs(data); onMounted(() => { }); const openDialog = (type, list) => { data.selectDialog = true data.queryParams.scoreType = type getList() // getList().then(()=>refreshTableSelection(list)) } const refreshTableSelection = (list) => { // data.selected = list // if (multipleTableRef.value) { // for (let i = 0; i < data.dataList.length; i++) { // if(list.find(o=>o.id == data.dataList[i].id)){ // multipleTableRef.value.toggleRowSelection(data.dataList[i], true) // }else{ // multipleTableRef.value.toggleRowSelection(data.dataList[i], false) // } // } // } } const getList = async () => { const res = await getReviewList(data.queryParams); if (res.code == 200) { dataList.value = res.rows total.value = res.total } else { ElMessage.warning(res.msg) } } const onSubmit = ()=>{ emit('refreshSelected',data.queryParams.scoreType) data.selected = [] multipleTableRef.value.clearSelection() data.selectDialog = false } const handleSelectionChange = (val) => { data.selected = val } const handleSizeChange = (val) => { data.queryParams.pageSize = val getList() } const handleCurrentChange = (val) => { data.queryParams.pageNum = val getList() } defineExpose({ openDialog, data }) </script> <style lang="scss"> .pag-container { display: flex; justify-content: right; margin-top: 15px; } </style> src/views/safetyReview/expertManage/postEvaluation/index.vue
@@ -4,15 +4,15 @@ <el-form-item label="项目名称"> <el-input v-model="queryParams.projectName" placeholder="请输入项目名称" /> </el-form-item> <el-form-item label="评估情况" prop="evaluationState"> <el-select v-model="queryParams.dutyStatus" placeholder="岗位状态" clearable> <el-form-item label="评估情况"> <el-select v-model="queryParams.evaluationState" placeholder="评估情况" clearable> <el-option :key="0" label="未评估" :value="0"/> <el-option :key="1" label="已评估" :value="1"/> </el-select> </el-form-item> <el-form-item label="审批时间" prop="projectCheckTime"> <el-form-item label="审批时间"> <el-date-picker v-model="searchTime" v-model="queryParams.projectCheckTime" type="datetime" @change="changeTime" value-format="YYYY-MM-DD HH:mm:ss" @@ -31,26 +31,26 @@ <!-- </el-row>--> <el-table v-loading="loading" :data="expertList" :border="true"> <el-table-column type="index" width="55" align="center" /> <el-table-column label="项目名称" align="center" prop="name" /> <el-table-column label="审批单时间" align="center" prop="birthday" /> <el-table-column label="结束时间" align="center" prop="birthday" /> <el-table-column label="部门" align="center" prop="degree" /> <el-table-column label="专家人数" align="center"> <el-table-column label="项目名称" align="center" prop="projectName"/> <el-table-column label="审批单时间" align="center" prop="projectCheckTime"/> <el-table-column label="结束时间" align="center" prop="projectEndTime" /> <el-table-column label="部门" align="center" prop="deptName" /> <el-table-column label="专家人数" align="center" prop="expertNum"> <template #default="scope"> {{findNodeById(expertTypes,scope.row.bigClassify)}}/{{findNodeById(expertTypes,scope.row.smallClassify)}} <el-button type="primary" link @click="openDialog('view',scope.row)">{{scope.row.expertNum}}</el-button> </template> </el-table-column> <el-table-column label="评估状态" align="center" prop="state"> <el-table-column label="评估状态" align="center" prop="evaluationState"> <template #default="scope"> <el-tag :type="scope.row.state==0?'info':scope.row.state==1?'':scope.row.state==2?'success':scope.row.state==3?'danger':'warning'"> {{scope.row.state==0?'暂存':scope.row.state==1?'审核中':scope.row.state==2?'审核通过':scope.row.state==3?'审核驳回':scope.row.state==4?'已作废':'--'}} <el-tag :type="scope.row.evaluationState == 0?'info':scope.row.evaluationState==1?'success':''"> {{scope.row.evaluationState ==0?'未完成':scope.row.evaluationState==1?'已完成':'--'}} </el-tag> </template> </el-table-column> <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <template #default="scope"> <el-button type="primary" link @click="openDialog('edit',scope.row)">开始评估</el-button> <el-button type="primary" link @click="openDialog('edit',scope.row)">修改评估</el-button> <el-button type="primary" v-if="scope.row.evaluationState == 0" link @click="openDialog('edit',scope.row)">开始评估</el-button> <el-button type="primary" v-if="scope.row.evaluationState == 1" link @click="openDialog('edit',scope.row)">修改评估</el-button> </template> </el-table-column> </el-table> @@ -83,7 +83,7 @@ pageNum: 1, pageSize: 10, projectName: '', dutyStatus: null, evaluationState: null, projectCheckTime: '' }, classiFy: [], @@ -143,8 +143,8 @@ loading.value = false; } const openDialog = async (type, value) => { expertListRef.value.openDialog(type, value) const openDialog = async (type,value) => { expertListRef.value.openDialog(type,value) } const handleDelete = (val) => { @@ -171,7 +171,7 @@ pageNum: 1, pageSize: 10, projectName: '', dutyStatus: null, evaluationState: null, projectCheckTime: '' } handleQuery()