From 25988ffefd8448c6ea770489b77c89a07d00190d Mon Sep 17 00:00:00 2001 From: zhouwx <1175765986@qq.com> Date: 星期五, 09 八月 2024 16:10:12 +0800 Subject: [PATCH] bug修改 --- src/views/safetyReview/projectManage/components/evaluatePlan.vue | 164 +++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 130 insertions(+), 34 deletions(-) diff --git a/src/views/safetyReview/projectManage/components/evaluatePlan.vue b/src/views/safetyReview/projectManage/components/evaluatePlan.vue index 2f62a3d..0d42458 100644 --- a/src/views/safetyReview/projectManage/components/evaluatePlan.vue +++ b/src/views/safetyReview/projectManage/components/evaluatePlan.vue @@ -43,13 +43,13 @@ </el-row> <el-row> <el-col :span="18"> - <div style="display: flex;align-items: center">评价日程安排</div> + <div style="display: flex;align-items: center">评价日程安排<el-icon style="margin-left: 10px;margin-right: 4px"><InfoFilled /></el-icon><span style="font-size: 13px">不涉及的日程安排日期可不填</span></div> </el-col> </el-row> <el-table :data="state.formData.estimateSchedules" :border="true" style="margin: 20px 0"> <el-table-column label="序号" width="60" align="center" type="index"></el-table-column> - <el-table-column label="评价日程安排" prop="name" header-align="center" :show-overflow-tooltip="true"/> - <el-table-column label="开始时间" header-align="center" class-name="small-padding fixed-width"> + <el-table-column label="评价日程安排" prop="name" align="center" :show-overflow-tooltip="true"/> + <el-table-column label="开始时间" align="center" class-name="small-padding fixed-width"> <template #default="scope"> <el-date-picker style="width: 100%" @@ -61,7 +61,7 @@ /> </template> </el-table-column> - <el-table-column label="结束时间" header-align="center" class-name="small-padding fixed-width"> + <el-table-column label="结束时间" align="center" class-name="small-padding fixed-width"> <template #default="scope"> <el-date-picker style="width: 100%" @@ -80,30 +80,35 @@ </el-col> <el-col :span="6"> <div style="width: 100%;display: flex;justify-content: right"> - <el-button type="primary" icon="Plus" @click="openWorksDialog('add',{})">添加成员</el-button> + <el-button type="primary" icon="Plus" @click="openWorksDialog('add',{})" :disabled="projectType==='view' || isEnd">添加成员</el-button> </div> </el-col> </el-row> <el-table :data="state.planPersons" :border="true" style="margin: 20px 0"> <el-table-column label="序号" width="60" align="center" type="index"></el-table-column> - <el-table-column label="评价组成员" prop="person.name" header-align="center" :show-overflow-tooltip="true"/> - <el-table-column label="专业能力/资格证书" prop="person.certificateNo" header-align="center" :show-overflow-tooltip="true"> + <el-table-column label="评价组成员" prop="person.name" align="center" :show-overflow-tooltip="true"> + <template #default="scope"> + <span v-if="scope.row.jobType === 2">{{ scope.row.person.name }} (组长)</span> + <span v-else>{{scope.row.person.name}}</span> + </template> + </el-table-column> + <el-table-column label="专业能力/资格证书" prop="person.certificateNo" align="center" :show-overflow-tooltip="true"> <template #default="scope"> {{ getCertNo(scope.row) }} </template> </el-table-column> <!-- <el-table-column label="专业能力" header-align="center" :show-overflow-tooltip="true"></el-table-column>--> - <el-table-column label="承担工作" prop="work" header-align="center" class-name="small-padding fixed-width"></el-table-column> - <el-table-column label="承诺后期前往现场勘验" prop="laterPromise" header-align="center" class-name="small-padding fixed-width"> + <el-table-column label="承担工作" prop="work" align="center" class-name="small-padding fixed-width"></el-table-column> + <el-table-column label="承诺后期前往现场勘验" prop="laterPromise" align="center" class-name="small-padding fixed-width"> <template #default="scope"> {{(scope.row.laterPromise==1 || scope.row.laterPromise==true)?'是':'否'}} </template> </el-table-column> - <el-table-column label="未到现场勘验原因" prop="reason" header-align="center" class-name="small-padding fixed-width"></el-table-column> - <el-table-column label="操作" header-align="center" class-name="small-padding fixed-width"> + <el-table-column label="未到现场勘验原因" prop="reason" align="center" class-name="small-padding fixed-width"></el-table-column> + <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <template #default="scope"> - <el-button link @click="openWorksDialog('edit',scope.row)">修改</el-button> - <el-button link type="danger" @click="delMember(scope.row)">删除</el-button> + <el-button link @click="openWorksDialog('edit',scope.row)" :disabled="projectType==='view' || isEnd">修改</el-button> + <el-button link type="danger" @click="delMember(scope.row)" :disabled="projectType==='view' || isEnd">删除</el-button> </template> </el-table-column> </el-table> @@ -113,27 +118,27 @@ </el-col> <el-col :span="6"> <div style="width: 100%;display: flex;justify-content: right"> - <el-button type="primary" icon="Plus" @click="openDeviceDialog('add',{})">添加设备</el-button> + <el-button type="primary" icon="Plus" @click="openDeviceDialog('add',{})" :disabled="projectType==='view' || isEnd">添加设备</el-button> </div> </el-col> </el-row> <el-table :data="state.devices" :border="true" style="margin: 20px 0"> <el-table-column label="序号" width="60" align="center" type="index"></el-table-column> - <el-table-column label="设备名称" prop="deviceName" header-align="center" class-name="small-padding fixed-width"/> - <el-table-column label="开始时间" prop="startDate" header-align="center" class-name="small-padding fixed-width"> + <el-table-column label="设备名称" prop="deviceName" align="center" class-name="small-padding fixed-width"/> + <el-table-column label="开始时间" prop="startDate" align="center" class-name="small-padding fixed-width"> <template #default="scope"> {{scope.row.startDate.substring(0,10)}} </template> </el-table-column> - <el-table-column label="结束时间" prop="endDate" header-align="center" class-name="small-padding fixed-width"> + <el-table-column label="结束时间" prop="endDate" align="center" class-name="small-padding fixed-width"> <template #default="scope"> {{scope.row.endDate.substring(0,10)}} </template> </el-table-column> - <el-table-column label="操作" header-align="center" class-name="small-padding fixed-width"> + <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <template #default="scope"> - <el-button link @click="openDeviceDialog('edit',scope.row)">修改</el-button> - <el-button link type="danger" @click="delDeviceItem(scope.row)">删除</el-button> + <el-button link @click="openDeviceDialog('edit',scope.row)" :disabled="projectType==='view' || isEnd">修改</el-button> + <el-button link type="danger" @click="delDeviceItem(scope.row)" :disabled="projectType==='view' || isEnd">删除</el-button> </template> </el-table-column> </el-table> @@ -155,7 +160,8 @@ import DeviceDialog from './deviceDialog' const props = defineProps(['projectId']) const emit = defineEmits(["getNextStatus"]) - +import { useRoute } from 'vue-router' +const route = useRoute() const state = reactive({ formData: { id: null, @@ -166,7 +172,7 @@ auserId: null, estimateSchedules: [ { - id: 1, + id: null, sort: 1, name: '勘验准备', startDate: '', @@ -175,7 +181,7 @@ projectId: null }, { - id: 2, + id: null, sort: 2, name: '现场勘验', startDate: '', @@ -184,7 +190,7 @@ projectId: null }, { - id: 3, + id: null, sort: 3, name: '材料分析整理', startDate: '', @@ -193,7 +199,7 @@ projectId: null }, { - id: 4, + id: null, sort: 4, name: '评价报告编写', startDate: '', @@ -202,7 +208,7 @@ projectId: null }, { - id: 5, + id: null, sort: 5, name: '整改情况现场确认', startDate: '', @@ -211,7 +217,7 @@ projectId: null }, { - id: 6, + id: null, sort: 6, name: '整理评价报告', startDate: '', @@ -220,7 +226,7 @@ projectId: null }, { - id: 7, + id: null, sort: 7, name: '报告审核', startDate: '', @@ -229,7 +235,7 @@ projectId: null }, { - id: 8, + id: null, sort: 8, name: '报告修改', startDate: '', @@ -268,21 +274,31 @@ const expertsListRef = ref() const worksRef = ref() const deviceRef = ref() -onMounted(() => { +onMounted(async () => { const userInfo = JSON.parse(Cookies.get('userInfo')) if(userInfo.identity === 0){ isAmin.value = true } + if(props.projectId){ + await getWorksList(props.projectId) + await getDeviceList(props.projectId) + } + isEnd.value = Cookies.get('end') + projectType.value = route.query.type; }) +const projectType = ref(''); +const isEnd = ref('') const riskOpen = async (type,val) => { state.formData.projectId = val + isEnd.value = Cookies.get('end') state.projectId = val + projectType.value = route.query.type; for(let i of state.formData.estimateSchedules){ i.projectId = val } - await getWorksList(val) - await getDeviceList(val) + // await getWorksList(val) + // await getDeviceList(val) if(type === 'detail' || type === 'edit' ){ const res = await getDetail({projectId: val}) if(res.code == 200){ @@ -300,18 +316,98 @@ } if(type === 'add'){ const {id, ...data} = JSON.parse(JSON.stringify(state.formData)) - console.log(data) + + const params = Object.assign({}, state.formData.estimateSchedules); + let i = 0 + + for (const key in params) { + if ((params[key].startDate == '' || params[key].startDate == null ) && (params[key].endDate == '' || params[key].endDate == null)) { + delete params[key].startDate; + delete params[key].endDate; + i++ + } + + } + console.log('data',params) + const finData = Object.entries(params).map(([key, value]) => ({ + ...value, + })); + if(i == finData.length){ + ElMessage.warning("请选择至少一个的日程安排日期"); + return; + } + try { + finData.forEach(item =>{ + // debugger + console.log(item.endDate,'item.endDate') + if(item.startDate && (item.startDate !='' || item.startDate !=null)){ + if(item.endDate =='' || item.endDate ==null){ + ElMessage.warning("请完善涉及的日程安排结束日期"); + throw new Error('Loop stopped') + } + } + if(item.endDate && (item.endDate !='' || item.endDate !=null)){ + if(item.startDate =='' || item.startDate ==null){ + ElMessage.warning("请完善涉及的日程安排开始日期"); + throw new Error('Loop stopped') + } + } + }) + }catch (e) { + throw new Error(e) + } + + data.estimateSchedules = finData + const res = await addRecord(data); if (res.code == 200) { ElMessage.success('保存成功') formRef.value.clearValidate(); - emit('getNextStatus', res.data); + emit('getNextStatus', state.formData.projectId); } else { ElMessage.warning(res.message) } }else if(type === 'clickEdit'){ const { ...data} = JSON.parse(JSON.stringify(state.formData)) + const params = Object.assign({}, state.formData.estimateSchedules); + let i = 0 + for (const key in params) { + if (params[key].startDate == '' && params[key].endDate == '') { + delete params[key].startDate; + delete params[key].endDate; + i++; + } + } + const finData = Object.entries(params).map(([key, value]) => ({ + ...value, + })); + if(i == finData.length){ + ElMessage.warning("请选择至少一个的日程安排日期"); + return; + } + try { + finData.forEach(item =>{ + // debugger + console.log(item.endDate,'item.endDate') + if(item.startDate && (item.startDate !='' || item.startDate !=null)){ + if(item.endDate =='' || item.endDate ==null){ + ElMessage.warning("请完善涉及的日程安排结束日期"); + throw new Error('Loop stopped') + } + } + if(item.endDate && (item.endDate !='' || item.endDate !=null)){ + if(item.startDate =='' || item.startDate ==null){ + ElMessage.warning("请完善涉及的日程安排开始日期"); + + throw new Error('Loop stopped') + } + } + }) + }catch (e) { + throw new Error(e) + } + data.estimateSchedules = finData const res = await editRecord(data); if (res.code == 200) { ElMessage.success('变更成功') -- Gitblit v1.9.2