From 18e2812133add57c3b707f39555321e2a598eea2 Mon Sep 17 00:00:00 2001 From: 马宇豪 <978517621@qq.com> Date: 星期四, 18 一月 2024 13:54:50 +0800 Subject: [PATCH] 新增 --- src/views/safetyReview/projectManage/components/evaluatePlan.vue | 306 ++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 219 insertions(+), 87 deletions(-) diff --git a/src/views/safetyReview/projectManage/components/evaluatePlan.vue b/src/views/safetyReview/projectManage/components/evaluatePlan.vue index 3446e59..13876a2 100644 --- a/src/views/safetyReview/projectManage/components/evaluatePlan.vue +++ b/src/views/safetyReview/projectManage/components/evaluatePlan.vue @@ -3,10 +3,10 @@ <el-form ref="formRef" :model="state.formData" :rules="state.rules" class="register-form" label-position="top"> <el-row :gutter="30"> <el-col :span="6"> - <el-form-item prop="evalStartDate" label="评价开始时间"> + <el-form-item prop="startDate" label="评价开始时间"> <el-date-picker style="width: 100%" - v-model="state.formData.evalStartDate" + v-model="state.formData.startDate" type="date" value-format="YYYY-MM-DD 00:00:00" placeholder="选择日期" @@ -15,10 +15,10 @@ </el-form-item> </el-col> <el-col :span="6"> - <el-form-item prop="evalEndDate" label="评价结束时间"> + <el-form-item prop="endDate" label="评价结束时间"> <el-date-picker style="width: 100%" - v-model="state.formData.evalEndDate" + v-model="state.formData.endDate" type="date" value-format="YYYY-MM-DD 00:00:00" placeholder="选择日期" @@ -27,9 +27,9 @@ </el-form-item> </el-col> <el-col :span="6"> - <el-form-item prop="deliver" label="机构评价负责人"> + <el-form-item prop="auser.name" label="机构评价负责人"> <el-input - v-model="state.formData.deliver" + v-model="state.formData.auser.name" size="large" placeholder="请选择机构评价负责人" > @@ -39,23 +39,28 @@ </el-input> </el-form-item> </el-col> - <el-col :span="6"> - <el-form-item prop="deliver" label="技术负责人"> - <el-input - v-model="state.formData.deliver" - size="large" - placeholder="请选择技术负责人" - > - <template #append> - <el-button :icon="Search" @click="openExperts('技术负责人')"/> - </template> - </el-input> - </el-form-item> +<!-- <el-col :span="6">--> +<!-- <el-form-item prop="deliver" label="技术负责人">--> +<!-- <el-input--> +<!-- v-model="state.formData.deliver"--> +<!-- size="large"--> +<!-- placeholder="请选择技术负责人"--> +<!-- >--> +<!-- <template #append>--> +<!-- <el-button :icon="Search" @click="openExperts('技术负责人')"/>--> +<!-- </template>--> +<!-- </el-input>--> +<!-- </el-form-item>--> +<!-- </el-col>--> + </el-row> + <el-row> + <el-col :span="18"> + <div style="display: flex;align-items: center">评价日程安排</div> </el-col> </el-row> - <el-table :data="state.tableData" :border="true" style="margin: 20px 0"> + <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="content" header-align="center" :show-overflow-tooltip="true"/> + <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"> <template #default="scope"> <el-date-picker @@ -81,6 +86,94 @@ </template> </el-table-column> </el-table> + <el-row> + <el-col :span="18"> + <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-col :span="6"> + <div style="width: 100%;display: flex;justify-content: right"> + <el-button type="primary" icon="Plus" @click="openExperts('项目组成员')">添加成员</el-button> + </div> + </el-col> + </el-row> + <el-table :data="state.formData.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.major" header-align="center" :show-overflow-tooltip="true"/> + <el-table-column label="承担工作" header-align="center" class-name="small-padding fixed-width"> + <template #default="scope"> + <el-select v-model="scope.row.work" multiple placeholder="承担工作" style="width: 100%" size="large"> + <el-option v-for="item in state.workList" :key="item.value" :label="item.label" :value="item.value"/> + </el-select> + </template> + </el-table-column> + <el-table-column label="承诺后期前往现场勘验" header-align="center" class-name="small-padding fixed-width"> + <template #default="scope"> + <el-radio-group v-model="scope.row.laterPromise" size="large"> + <el-radio :label="1" size="large">是</el-radio> + <el-radio :label="0" size="large">否</el-radio> + </el-radio-group> + </template> + </el-table-column> + <el-table-column label="未到现场勘验原因" header-align="center" class-name="small-padding fixed-width"> + <template #default="scope"> + <el-input v-model="scope.row.reason" maxlength="30" show-word-limit type="text" size="large"/> + </template> + </el-table-column> + <el-table-column label="操作" header-align="center" class-name="small-padding fixed-width"> + <template #default="scope"> + <el-button link type="danger" @click="delMember(scope.$index)">删除</el-button> + </template> + </el-table-column> + </el-table> + <el-row> + <el-col :span="18"> + <div style="display: flex;align-items: center">所需仪器设备</div> + </el-col> + <el-col :span="6"> + <div style="width: 100%;display: flex;justify-content: right"> + <el-button type="primary" icon="Plus" @click="addDevice">添加设备</el-button> + </div> + </el-col> + </el-row> + <el-table :data="state.formData.devices" :border="true" style="margin: 20px 0"> + <el-table-column label="序号" width="60" align="center" type="index"></el-table-column> + <el-table-column label="设备名称" header-align="center" class-name="small-padding fixed-width"> + <template #default="scope"> + <el-input v-model="scope.row.deviceName" maxlength="30" show-word-limit type="text" size="large"/> + </template> + </el-table-column> + <el-table-column label="开始时间" header-align="center" class-name="small-padding fixed-width"> + <template #default="scope"> + <el-date-picker + style="width: 100%" + v-model="scope.row.startDate" + type="date" + value-format="YYYY-MM-DD 00:00:00" + placeholder="选择日期" + size="large" + /> + </template> + </el-table-column> + <el-table-column label="结束时间" header-align="center" class-name="small-padding fixed-width"> + <template #default="scope"> + <el-date-picker + style="width: 100%" + v-model="scope.row.endDate" + type="date" + value-format="YYYY-MM-DD 00:00:00" + placeholder="选择日期" + size="large" + /> + </template> + </el-table-column> + <el-table-column label="操作" header-align="center" class-name="small-padding fixed-width"> + <template #default="scope"> + <el-button link type="danger" @click="delDevice(scope.$index)">删除</el-button> + </template> + </el-table-column> + </el-table> </el-form> <experts-list ref="expertsListRef" @getName="getSelected"></experts-list> </div> @@ -97,57 +190,85 @@ const state = reactive({ formData: { - project: { - id: '', - + projectId: null, + auser: { + name: '' }, + auserId: null, + estimateSchedules: [ + { + id: 1, + name: '勘验准备', + startDate: '', + endDate: '', + scheduleType: 1 + }, + { + id: 2, + name: '现场勘验', + startDate: '', + endDate: '', + scheduleType: 2 + }, + { + id: 3, + name: '材料分析整理', + startDate: '', + endDate: '', + scheduleType: 3 + }, + { + id: 4, + name: '评价报告编写', + startDate: '', + endDate: '', + scheduleType: 4 + }, + { + id: 5, + name: '整改情况现场确认', + startDate: '', + endDate: '', + scheduleType: 5 + }, + { + id: 6, + name: '整理评价报告', + startDate: '', + endDate: '', + scheduleType: 6 + }, + { + id: 7, + name: '报告审核', + startDate: '', + endDate: '', + scheduleType: 7 + }, + { + id: 8, + name: '报告修改', + startDate: '', + endDate: '', + scheduleType: 8 + }, + ], + planPersons: [], + devices: [], + startDate: '', + endDate: '', id: '' }, rules: { - "project.name": [{required: true, message: '请填写项目名称', trigger: 'blur'}], - riskCharacter: [{required: true, message: '请填写行业风险特性', trigger: 'blur'}], + "auser.name": [{required: true, message: '请填写机构评价负责人', trigger: 'blur'}], + startDate: [{required: true, message: '请选择评价开始时间', trigger: 'blur'}], + endDate: [{required: true, message: '请选择评价结束时间', trigger: 'blur'}] }, - tableData: [ - { - id: '1', - content: '勘验准备', - status: 1 - }, - { - id: '2', - content: '现场勘验', - status: 1 - }, - { - id: '3', - content: '材料分析整理', - status: 1 - }, - { - id: '4', - content: '评价报告编写', - status: 1 - }, - { - id: '5', - content: '整改情况现场确认', - status: 1 - }, - { - id: '6', - content: '整理评价报告', - status: 1 - }, - { - id: '7', - content: '报告审核', - status: 1 - }, - { - id: '8', - content: '报告修改', - status: 1 - }, + workList: [ + {value: '报告编制',label: '报告编制'}, + {value: '文字校对',label: '文字校对'}, + {value: '现场勘验',label: '现场勘验'}, + {value: '资料收集整理',label: '资料收集整理'} ] }) const props = { @@ -173,12 +294,6 @@ state.formData = res.data; state.formData.project.business = parseInt(res.data.project.business); state.formData.project.area = [res.data.project.province,res.data.project.city]; - state.tableData[0].status = res.data.isInBusiness ? 1 : 0; - state.tableData[1].status = res.data.isSatisfyNeed ? 1 : 0; - state.tableData[2].status = res.data.isNeedExpert ? 1 : 0; - state.tableData[3].status = res.data.isFinishReport ? 1 : 0; - state.tableData[4].status = res.data.isAcceptChargess ? 1 : 0; - state.tableData[5].status = res.data.isFeasibility ? 1 : 0; }else { ElMessage.warning(res.message) } @@ -194,12 +309,6 @@ const {id, ...data} = JSON.parse(JSON.stringify(state.formData)) delete data.project.area; delete data.project.id; - data.isInBusiness = state.tableData[0].status === 1; - data.isSatisfyNeed = state.tableData[1].status === 1; - data.isNeedExpert = state.tableData[2].status === 1; - data.isFinishReport = state.tableData[3].status === 1; - data.isAcceptChargess = state.tableData[4].status === 1; - data.isFeasibility = state.tableData[5].status === 1; console.log('data', data) const res = await addRisk(data); if (res.code == 200) { @@ -213,12 +322,6 @@ }else if(type === 'clickEdit'){ const { ...data} = JSON.parse(JSON.stringify(state.formData)) delete data.project.area; - data.isInBusiness = state.tableData[0].status === 1; - data.isSatisfyNeed = state.tableData[1].status === 1; - data.isNeedExpert = state.tableData[2].status === 1; - data.isFinishReport = state.tableData[3].status === 1; - data.isAcceptChargess = state.tableData[4].status === 1; - data.isFeasibility = state.tableData[5].status === 1; console.log('data', data) const res = await editRisk(data); if (res.code == 200) { @@ -239,11 +342,40 @@ const getSelected = (type,obj)=>{ if(type == '项目负责人'){ - state.formData.project.leader = obj.name + state.formData.auser.name = obj.name + state.formData.auserId = obj.id + }else{ + let member = { + person: { + name: obj.name, + certificateNo: obj.certificateNo?obj.certificateNo:'', + major: obj.speciality, + }, + informed: 0, + work: '', + laterPromise: 0, + reason: '' + } + state.formData.planPersons.push(member) } - if(type == '任务下达人'){ - state.formData.deliver = obj.name +} + +const delMember = (index)=>{ + state.formData.planPersons.splice(index,1) +} + +const addDevice = ()=>{ + let device = { + projectId: null, + deviceName: '', + startDate: '', + endDate: '' } + state.formData.devices.push(device) +} + +const delDevice = (index)=>{ + state.formData.devices.splice(index,1) } defineExpose({ -- Gitblit v1.9.2