From 72b79f49a078c089466b54659c106ad2bbc4a807 Mon Sep 17 00:00:00 2001 From: zhouwx <1175765986@qq.com> Date: 星期二, 03 十二月 2024 16:28:49 +0800 Subject: [PATCH] 项目管理修改 --- src/views/safetyReview/projectManage/components/basicInfo.vue | 183 +++++++++++++++++++++++++++++++++++---------- 1 files changed, 142 insertions(+), 41 deletions(-) diff --git a/src/views/safetyReview/projectManage/components/basicInfo.vue b/src/views/safetyReview/projectManage/components/basicInfo.vue index e26a50e..6d26340 100644 --- a/src/views/safetyReview/projectManage/components/basicInfo.vue +++ b/src/views/safetyReview/projectManage/components/basicInfo.vue @@ -8,20 +8,20 @@ </el-col> </el-row> <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="projectName" label="项目名称"> + <el-row :gutter="24"> + <el-col :span="12"> + <el-form-item prop="projectName" label="项目名称(事由)"> <el-input maxlength="100" show-word-limit v-model.trim="state.formData.projectName" size="large" - placeholder="请输入项目名称" + placeholder="请输入项目名称(事由)" > </el-input> </el-form-item> </el-col> - <el-col :span="6"> + <el-col :span="12"> <el-form-item prop="projectDateStart" label="项目预计时间区间"> <el-date-picker v-model="searchTime" @@ -35,48 +35,75 @@ /> </el-form-item> </el-col> - <el-col :span="6"> - <el-form-item prop="companyName" label="被检查/对接单位"> - <el-input - v-model.trim="state.formData.companyName" - size="large" - placeholder="请输入被检查/对接单位" - > - </el-input> - </el-form-item> - </el-col> - <el-col :span="6"> - <el-form-item prop="projectAddress" label="项目地点"> + + </el-row> + <el-row :gutter="24"> + <el-col :span="12"> + <el-form-item prop="projectAddress" label="目的地及相关企业名称等"> <el-input v-model.trim="state.formData.projectAddress" size="large" - placeholder="请输入项目地点" + placeholder="请输入目的地及相关企业名称等" > </el-input> </el-form-item> </el-col> - </el-row> - <el-row :gutter="24"> - <el-col :span="6"> - <el-form-item prop="deptUserName" label="处室带队人员"> - <el-input - v-model.trim="state.formData.deptUserName" - size="large" - placeholder="请输入处室带队人员" - > - </el-input> + <el-col :span="12"> + <el-form-item prop="jobCategoryArr" label="工作类别"> + <el-checkbox-group v-model="state.formData.jobCategoryArr"> + <el-checkbox v-for="item in state.directionList" :label="item.value" :key="item.value">{{ item.label }}</el-checkbox> + </el-checkbox-group> </el-form-item> </el-col> </el-row> <el-row :gutter="24"> <el-col :span="24"> - <el-form-item prop="remark" label="概况描述"> + <el-form-item prop="deptUserName" label="处室人员及职务"> + <div style="display: flex"> + <div style="display: flex;flex-direction: column;"> + <div v-for="(item,index) in state.personNameJob" :key="index" style="display:flex;margin-bottom: 5px" > + <div> + <span style="font-size: 14px;font-weight: 500">姓名:</span> + <el-input + v-model.trim="item.deptUserName" + size="large" + placeholder="请输入姓名" + style="width: 200px;" + clearable + > + </el-input> + </div> + <div style="margin-left: 20px;display: flex;align-items: center"> + <span>职务:</span> + <el-input + v-model.trim="item.deptPostName" + size="large" + placeholder="请输入职务" + style="width: 200px;" + clearable + > + </el-input> + <el-icon style="margin-left: 5px;cursor: pointer" :size="20" color="red" v-if="index !== 0" @click="delPerson(index)" > + <Delete /> + </el-icon> + </div> + </div> + + </div> + <el-button style="margin-left: 5px;color: white" color="#0FC7F0" @click="addPerson">增加一行</el-button> + </div> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="24"> + <el-col :span="24"> + <el-form-item prop="remark" label="备注"> <el-input type="textarea" :rows="6" v-model.trim="state.formData.remark" size="large" - placeholder="请输入概况描述" + placeholder="请输入备注" > </el-input> </el-form-item> @@ -102,19 +129,49 @@ projectName: '', projectDateStart: '', projectDateEnd: '', - companyName: '', + jobCategoryArr: [], projectAddress: '', - deptUserName: '', + deptPostName: { + postVos: [] + }, remark: '' }, + personNameJob: [ + { + deptPostName: '', + deptUserName: '' + } + ], rules: { - projectName: [{ required: true, message: "项目名称不能为空", trigger: "blur" }], + projectName: [{ required: true, message: "项目名称(事由)不能为空", trigger: "blur" }], projectDateStart: [{ required: true, message: "项目预计时间不能为空", trigger: "change" }], - projectAddress: [{ required: true, message: "项目地点不能为空", trigger: "blur" }], - deptUserName: [{ required: true, message: "处室带队人员不能为空", trigger: "blur" }], - remark: [{ required: true, message: "概况描述不能为空", trigger: "blur" }], + projectAddress: [{ required: true, message: "目的地及相关企业名称等不能为空", trigger: "blur" }], + // deptUserName: [{ required: true, message: "处室人人员及职务不能为空", trigger: "blur" }], + jobCategoryArr: [{ required: true, message: "工作类别不能为空", trigger: "blur" }], }, - isAdmin: false + isAdmin: false, + directionList: [ + { + value: '1', + label: '现场检查' + }, + { + value: '2', + label: '调查评估' + }, + { + value: '3', + label: '咨询服务' + }, + { + value: '4', + label: '教育培训' + }, + { + value: '5', + label: '其他' + } + ], }) const formRef = ref(); const userInfo = ref() @@ -138,8 +195,17 @@ } if(type === 'add'){ if(valid){ + for(let i = 0; i < state.personNameJob.length; i++){ + if(state.personNameJob[i].deptPostName === '' || state.personNameJob[i].deptUserName === ''){ + ElMessage.warning("请输入处室人员及职务"); + return + } + } //保存按钮 - const {id,...data} = state.formData + const {id,jobCategoryArr,...data} = state.formData + data.jobCategory = Array.isArray(state.formData.jobCategoryArr)? state.formData.jobCategoryArr.join(',') : '' + data.deptPostName.postVos = state.personNameJob + console.log('data',data) const res = await addProject(data); if(res.code == 200){ ElMessage.success('新增成功') @@ -152,7 +218,15 @@ }else if(type === 'clickEdit'){ if(valid){ //变更按钮 - const {...data} = state.formData + for(let i = 0; i < state.personNameJob.length; i++){ + if(state.personNameJob[i].deptPostName === '' || state.personNameJob[i].deptUserName === ''){ + ElMessage.warning("请输入处室人员及职务"); + return + } + } + const {jobCategoryArr,...data} = state.formData + data.jobCategory = Array.isArray(state.formData.jobCategoryArr)? state.formData.jobCategoryArr.join(',') : '' + data.deptPostName.postVos = state.personNameJob const res = await addProject(data); if(res.code == 200){ ElMessage.success('修改成功') @@ -171,8 +245,23 @@ } } searchTime.value = [res.data.projectDateStart,res.data.projectDateEnd] - } + if(res.data.jobCategory && res.data.jobCategory!==''){ + state.formData.jobCategoryArr = res.data.jobCategory.split(',') + }else{ + state.formData.jobCategoryArr = [] + } + if(res.data.deptPostName && res.data.deptPostName.postVos.length>0){ + state.personNameJob = res.data.deptPostName.postVos + }else { + state.personNameJob = [ + { + deptPostName: '', + deptUserName: '' + } + ] + } + } }else{ ElMessage.warning(res.message) } @@ -189,7 +278,7 @@ projectName: '', projectDateStart: '', projectDateEnd: '', - companyName: '', + jobCategoryArr: [], projectAddress: '', deptUserName: '', remark: '' @@ -205,6 +294,18 @@ state.formData.projectDateEnd = searchTime.value[1] } } +const addPerson = () => { + const obj = { + deptPostName: '', + deptUserName: '' + } + state.personNameJob.push(obj) +} + +const delPerson = (val) => { + state.personNameJob = state.personNameJob.filter((item,index) => index != val) +} + defineExpose({ riskOpen }); -- Gitblit v1.9.2