From 2adbfd2aed024bf8fda3b85b3e7af07108329f85 Mon Sep 17 00:00:00 2001 From: zhouwx <1175765986@qq.com> Date: 星期一, 09 十二月 2024 14:01:43 +0800 Subject: [PATCH] 修改报销表 --- src/views/safetyReview/projectManage/components/chooseExpert.vue | 246 ++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 201 insertions(+), 45 deletions(-) diff --git a/src/views/safetyReview/projectManage/components/chooseExpert.vue b/src/views/safetyReview/projectManage/components/chooseExpert.vue index 59ffcd2..84ef22d 100644 --- a/src/views/safetyReview/projectManage/components/chooseExpert.vue +++ b/src/views/safetyReview/projectManage/components/chooseExpert.vue @@ -1,27 +1,31 @@ <template> <div class="expertChoose"> - <div style="margin-bottom: 50px"> - <div class="fTop"> - <span style="font-weight: 600">固定选用部分</span> - <el-button type="primary" style="width: 100px" @click="chooseExpert('选取专家')">选取专家</el-button> - </div> - <el-table v-loading="fLoading" :data="fixedDataList" :border="true" ref="fTableRef" style="width: 100%;"> - <el-table-column label="姓名" prop="name" align="center" /> - <el-table-column label="性别" prop="sex" align="center" > - <template #default="scope"> - {{scope.row.sex === 0 ? '男' : '女' }} - </template> - </el-table-column> - <el-table-column label="身份证号" prop="idCard" align="center" /> - <el-table-column label="等级" prop="level" align="center" /> - <el-table-column label="专业领域" prop="domain" align="center" /> - <el-table-column fixed="right" label="操作" align="center" class-name="small-padding fixed-width" width="180"> - <template #default="scope"> - <el-button link type="primary" @click="delF(scope.row)" >删除</el-button> - </template> - </el-table-column> - </el-table> - </div> +<!-- <div style="margin-bottom: 50px">--> +<!-- <div class="fTop">--> +<!-- <span style="font-weight: 600">固定选用部分</span>--> +<!-- <el-button type="primary" :disabled="state.info.step == 4 || state.isAdmin" style="width: 100px" @click="chooseExpert('选取专家')">选取专家</el-button>--> +<!-- </div>--> +<!-- <el-table v-loading="fLoading" :data="fixedDataList" :border="true" ref="fTableRef" style="width: 100%;">--> +<!-- <el-table-column label="姓名" prop="name" align="center" />--> +<!-- <el-table-column label="性别" prop="sex" align="center" >--> +<!-- <template #default="scope">--> +<!-- {{scope.row.sex === 0 ? '男' : '女' }}--> +<!-- </template>--> +<!-- </el-table-column>--> +<!-- <el-table-column label="身份证号" prop="idCard" align="center" />--> +<!-- <el-table-column label="等级" prop="ratingLevel" align="center" >--> +<!-- <template #default="scope">--> +<!-- <span>{{scope.row.ratingLevel == 1 ?'一级':scope.row.ratingLevel == 1?'二级':'三级'}}</span>--> +<!-- </template>--> +<!-- </el-table-column>--> +<!-- <el-table-column label="专业领域" prop="domain" align="center" />--> +<!-- <el-table-column fixed="right" label="操作" align="center" class-name="small-padding fixed-width" width="180">--> +<!-- <template #default="scope">--> +<!-- <el-button link type="primary" @click="delF(scope.row)" :disabled="state.info.step == 4 || state.isAdmin">删除</el-button>--> +<!-- </template>--> +<!-- </el-table-column>--> +<!-- </el-table>--> +<!-- </div>--> <div style="display: flex;flex-direction: column"> <span style="font-weight: 600">随机选用部分</span> <el-form :model="queryParams" ref="queryForm" :inline="true" style="margin-top: 10px" label-width="90px"> @@ -32,7 +36,7 @@ style="width: 100%" v-model="expertType" :options="domainList" - :props="{ expandTrigger: 'hover',value: 'id',label: 'classifyName',multiple: true }" + :props="{ expandTrigger: 'hover',value: 'classifyName',label: 'classifyName',multiple: true }" @change="professionChange" collapse-tags collapse-tags-tooltip @@ -43,16 +47,14 @@ </el-col> <el-col :span="8"> <el-form-item label="允许级别:"> - <el-checkbox-group v-model="checkList"> - <el-checkbox label="一级" value="一级" /> - <el-checkbox label="二级" value="二级" /> - <el-checkbox label="三级" value="三级" /> + <el-checkbox-group v-model="queryParams.ratingLevel"> + <el-checkbox v-for="item in state.levelList" :label="item.id" :key="item.id">{{ item.name }}</el-checkbox> </el-checkbox-group> </el-form-item> </el-col> <el-col :span="8"> <el-form-item style="float: right;"> - <el-button style="width: 100px;margin-right: -32px;" type="primary" @click="random">随机抽取</el-button> + <el-button style="width: 100px;margin-right: -32px;" :disabled="state.info.step == 4 || state.isAdmin" type="primary" @click="random">随机抽取</el-button> </el-form-item> </el-col> </el-row> @@ -60,6 +62,7 @@ <el-col :span="24"> <el-form-item label="拟选用人数:"> <el-input + clearable v-model.trim="queryParams.num" placeholder="请输入拟选用人数" @input="queryParams.num = queryParams.num.replace(/[^0-9]/g,' ')" @@ -77,11 +80,15 @@ </template> </el-table-column> <el-table-column label="身份证号" prop="idCard" align="center" /> - <el-table-column label="等级" prop="level" align="center" /> + <el-table-column label="等级" prop="ratingLevel" align="center" > + <template #default="scope"> + <span>{{scope.row.ratingLevel == 1 ?'一级':scope.row.ratingLevel == 1?'二级':'三级'}}</span> + </template> + </el-table-column> <el-table-column label="专业领域" prop="domain" align="center" /> <el-table-column fixed="right" label="操作" align="center" class-name="small-padding fixed-width" width="180"> <template #default="scope"> - <el-button link type="primary" @click="delF(scope.row)" >删除</el-button> + <el-button link type="primary" @click="delR(scope.row)" :disabled="state.info.step == 4 || state.isAdmin">删除</el-button> </template> </el-table-column> </el-table> @@ -91,10 +98,12 @@ </template> <script setup> -import {onMounted, ref} from "vue"; +import {onMounted, reactive, ref} from "vue"; import expertsList from './expertsList.vue' import {getExpertTypes} from "@/api/form"; import {ElMessage} from "element-plus"; +import {addProject, choose, expertRound, getCheckInfo} from "@/api/projectManage"; +import Cookies from "js-cookie"; const emit = defineEmits(["getNextStatus"]); const fTableRef = ref(null); @@ -110,56 +119,203 @@ const expertType = ref([]) const checkList = ref([]) const domainList = ref([]) +const state = reactive({ + formData: { + id:null, + step: 2, + saveData: [], + delData: [] + }, + info: {}, + levelList: [ + { + id: 1, + name: '一级' + }, + { + id: 2, + name: '二级' + }, + { + id: 3, + name: '三级' + }, + ], + isAdmin: false +}) + +const userInfo = ref() onMounted(() =>{ + userInfo.value = JSON.parse(Cookies.get('userInfo')) + state.isAdmin = userInfo.value.admin getDomain() }) const riskOpen = async (type,val) => { console.log("type",type,val) if(type === 'add' || type === 'clickEdit'){ + if (state.isAdmin) { + ElMessage.warning("当前用户暂无权限"); + return; + } if(fixedDataList.value.length === 0 && randomDataList.value.length === 0){ ElMessage.warning('请选择专家') return; } } - //保存按钮 if(type === 'add'){ + let fData = [] + let rData = [] //成功后自动到下一步 项目id - emit('getNextStatus', 2); + const {...data} = state.formData + data.id = val + if(fixedDataList.value && fixedDataList.value.length > 0){ + fData = fixedDataList.value.map(item => { + return { + expertId: item.id, + expertName:item.name, + selectionMode: 1, + teamLeader: 0 + } + }) + } + if(randomDataList.value && randomDataList.value.length > 0){ + rData = randomDataList.value.map(item => { + return { + expertId: item.id, + expertName:item.name, + selectionMode: 2, + teamLeader: 0 + } + }) + } + data.saveData = fData.concat(rData) + const res = await choose(data); + if(res.code == 200){ + ElMessage.success('新增成功') + emit('getNextStatus', val); + // reset() + }else{ + ElMessage.warning(res.message) + } }else if(type === 'clickEdit'){ - //变更按钮 + let fData = [] + let rData = [] + const {...data} = state.formData + data.id = val + if(fixedDataList.value && fixedDataList.value.length > 0){ + fData = fixedDataList.value.map(item => { + return { + id: item.expertId ? item.id : '', + expertId: item.expertId ? item.expertId : item.id, + expertName:item.name, + selectionMode: 1, + teamLeader: 0 + } + }) + } + if(randomDataList.value && randomDataList.value.length > 0){ + rData = randomDataList.value.map(item => { + return { + id: item.expertId ? item.id : '', + expertId: item.expertId ? item.expertId : item.id, + expertName:item.name, + selectionMode: 2, + teamLeader: 0 + } + }) + } + data.saveData = fData.concat(rData) + const res = await choose(data); + if(res.code == 200){ + ElMessage.success('修改成功') + }else{ + ElMessage.warning(res.message) + } }else if(type === 'detail'){ - console.log("view222222",type,val) + const param = { + id: val + } + const res = await getCheckInfo(param); + if(res.code == 200){ + fixedDataList.value = res.data.projectExpertCheckResp.filter(item => item.selectionMode === 1) + randomDataList.value = res.data.projectExpertCheckResp.filter(item => item.selectionMode === 2) + state.info = res.data + console.log('res',fixedDataList.value) + }else{ + ElMessage.warning(res.message) + } } } const chooseExpert = (type) => { - expertsListRef.value.openDialog(type,fixedDataList.value) + expertsListRef.value.openDialog(type,fixedDataList.value,domainList.value) } const getSelected = (type,data)=>{ - fixedDataList.value = JSON.parse(JSON.stringify(data)) + const selectData = JSON.parse(JSON.stringify(data)) + if(fixedDataList.value && fixedDataList.value.length > 0){ + fixedDataList.value.forEach(item => { + if(item.expertId){ + selectData.forEach((i,index) => { + if(i.id == item.expertId){ + selectData[index] = item + } + }) + } + }) + } + fixedDataList.value = selectData } const delF = (val) => { + if(val.expertId){ + state.formData.delData.push(val.id) + } fixedDataList.value = fixedDataList.value.filter(item => item.id != val.id) } +const delR = (val) => { + if(val.expertId){ + state.formData.delData.push(val.id) + } + randomDataList.value = randomDataList.value.filter(item => item.id != val.id) +} const professionChange=(value)=> { - console.log(value,'val') + queryParams.value.domain = value.map(item => item[1]) } const getDomain = async () => { - // const res = await getExpertTypes() - // if(res.code == 200){ - // domainList.value = res.data - // }else{ - // ElMessage.warning(res.message) - // } + const res = await getExpertTypes() + if(res.code == 200){ + domainList.value = res.data + }else{ + ElMessage.warning(res.message) + } } -const random = () => { +const random = async () => { + console.log('11',randomDataList.value) + randomDataList.value.forEach(item => { + if(item.expertId){ + state.formData.delData.push(item.id) + } + }) + if(queryParams.value.domain == undefined || (queryParams.value.domain && queryParams.value.domain.length == 0)){ + ElMessage.warning('专业领域不能为空') + return + } + if(queryParams.value.num =='' || queryParams.value.num == undefined){ + ElMessage.warning('拟选用人数不能为空') + return + } rLoading.value = true + const res = await expertRound(queryParams.value) + if(res.code == 200){ + randomDataList.value = res.data + }else{ + ElMessage.warning(res.message) + } rLoading.value = false } -- Gitblit v1.9.2