| | |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <!-- <el-row :gutter="30">--> |
| | | <!-- <el-col :span="6">--> |
| | | <!-- <el-form-item label="附件上传">--> |
| | | <!-- <el-upload--> |
| | | <!-- accept="image/*"--> |
| | | <!-- :action="state.uploadUrl"--> |
| | | <!-- :headers="state.header"--> |
| | | <!-- method="post"--> |
| | | <!-- :on-success="(response, file, fileList) => handleAvatarSuccess(response, file, fileList, 1)"--> |
| | | <!-- :on-preview="handlePictureCardPreview"--> |
| | | <!-- v-model:file-list="state.socialList"--> |
| | | <!-- list-type="picture-card"--> |
| | | <!-- :before-upload="picSize"--> |
| | | <!-- :on-remove="(file, file_list)=>{handleRemove(file, file_list, 1)}"--> |
| | | <!-- >--> |
| | | <!-- <el-icon><Plus /></el-icon>--> |
| | | <!-- <template #tip>--> |
| | | <!-- <div class="el-upload__tip">上传jpg/png图片尺寸小于5M</div>--> |
| | | <!-- </template>--> |
| | | <!-- </el-upload>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- </el-col>--> |
| | | <!-- </el-row>--> |
| | | <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-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.major" 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="person.certificateNo" header-align="center" :show-overflow-tooltip="true"> |
| | | <template #default="scope"> |
| | | <el-select v-model="scope.row.work" multiple placeholder="承担工作" style="width: 100%" size="large" disabled> |
| | | <el-option v-for="item in state.workList" :key="item.value" :label="item.label" :value="item.value"/> |
| | | </el-select> |
| | | {{ getCertNo(scope.row) }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="承诺后期前往现场勘验" header-align="center" class-name="small-padding fixed-width"> |
| | | <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"> |
| | | <template #default="scope"> |
| | | <el-radio-group v-model="scope.row.laterPromise" size="large" disabled> |
| | | <el-radio :label="1" size="large">是</el-radio> |
| | | <el-radio :label="0" size="large">否</el-radio> |
| | | </el-radio-group> |
| | | {{(scope.row.laterPromise==1 || scope.row.laterPromise==true)?'是':'否'}} |
| | | </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" readonly/> |
| | | </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"> |
| | | <template #default="scope"> |
| | | <el-radio-group v-model="scope.row.informed" size="large"> |
| | | <el-radio-group v-model="scope.row.informed" size="large" @change="(value)=>changePerson(value,scope.row)"> |
| | | <el-radio :label="1" size="large">是</el-radio> |
| | | <el-radio :label="0" size="large">否</el-radio> |
| | | </el-radio-group> |
| | |
| | | </template> |
| | | <script setup> |
| | | |
| | | import {defineEmits, onMounted, reactive, ref} from "vue" |
| | | import {defineEmits, defineProps, onMounted, reactive, ref, watchEffect} from "vue" |
| | | import {ElMessage} from "element-plus" |
| | | import {Search} from '@element-plus/icons-vue' |
| | | import {addRisk, editRisk, getRiskDetail} from "@/api/projectManage/riskAnalysis" |
| | | import {addWorkRecord, editWorkRecord, getWorkDetail} from "@/api/projectManage/employNoticeRcd" |
| | | import {getWorks, editWorks} from "@/api/projectManage/evaPlan" |
| | | import Cookies from "js-cookie" |
| | | const props = defineProps(['projectId']) |
| | | const emit = defineEmits(["getNextStatus"]) |
| | | |
| | | const state = reactive({ |
| | | formData: { |
| | | id: null, |
| | | projectId: null, |
| | | timeRange: [], |
| | | serviceStartDate: '', |
| | | serviceEndDate: '', |
| | | investigationPlanDate: '' |
| | | }, |
| | | projectId: null, |
| | | planPersons: [], |
| | | rules: { |
| | | timeRange: [{required: true, message: '请选择技术服务期限', trigger: 'blur'}], |
| | | investigationPlanDate: [{required: true, message: '请选择计划现场勘验时间', trigger: 'blur'}], |
| | | investigationPlanDate: [{required: true, message: '请选择计划现场勘验时间', trigger: 'blur'}] |
| | | } |
| | | }) |
| | | |
| | |
| | | if(userInfo.identity === 0){ |
| | | isAmin.value = true; |
| | | } |
| | | // getWorksList(props.projectId) |
| | | }); |
| | | |
| | | |
| | | const riskOpen = async (type,val) => { |
| | | console.log("type",type,val) |
| | | state.formData.projectId = val |
| | | state.projectId = val |
| | | await getWorksList(val) |
| | | if(type === 'detail' || type === 'edit' ){ |
| | | const res = await getRiskDetail({projectId: val}); |
| | | const res = await getWorkDetail({projectId: val}) |
| | | if(res.code == 200){ |
| | | 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.formData = JSON.parse(JSON.stringify(res.data)) |
| | | state.formData.timeRange = [state.formData.serviceStartDate,state.formData.serviceEndDate] |
| | | }else { |
| | | ElMessage.warning(res.message) |
| | | } |
| | |
| | | state.formData.serviceStartDate = state.formData.timeRange[0] |
| | | state.formData.serviceEndDate = state.formData.timeRange[1] |
| | | if(type === 'add'){ |
| | | const {projectId,timeRange, ...data} = JSON.parse(JSON.stringify(state.formData)) |
| | | const res = await addRisk(data); |
| | | const {timeRange,id,...data} = JSON.parse(JSON.stringify(state.formData)) |
| | | const res = await addWorkRecord(data) |
| | | if (res.code == 200) { |
| | | ElMessage.success('保存成功') |
| | | formRef.value.clearValidate(); |
| | | emit('getNextStatus', res.data); |
| | | |
| | | } else { |
| | | ElMessage.warning(res.message) |
| | | } |
| | | |
| | | }else if(type === 'clickEdit'){ |
| | | const {timeRange, ...data} = JSON.parse(JSON.stringify(state.formData)) |
| | | const res = await editRisk(data); |
| | | const res = await editWorkRecord(data); |
| | | if (res.code == 200) { |
| | | ElMessage.success('变更成功') |
| | | formRef.value.clearValidate(); |
| | |
| | | } |
| | | } |
| | | |
| | | const getWorksList = async (id) =>{ |
| | | const works = await getWorks({projectId: id ? id : props.projectId}) |
| | | if(works.code == 200){ |
| | | state.planPersons = works.data |
| | | }else { |
| | | ElMessage.warning(works.message) |
| | | } |
| | | } |
| | | |
| | | const getCertNo = (row)=>{ |
| | | const obj = JSON.parse(row.person.certificateNo) |
| | | const noArr = Object.values(obj) |
| | | return row.person.majorNames.map((item,index)=>{ |
| | | return item + '(' + noArr[index] + ')' |
| | | }).join(',') |
| | | } |
| | | |
| | | const changePerson = async (value,row)=>{ |
| | | const params = { |
| | | id: row.id, |
| | | projectId: row.projectId, |
| | | informed: value |
| | | } |
| | | const res = await editWorks(params) |
| | | if(res.code === 200){ |
| | | console.log(res.message) |
| | | }else{ |
| | | ElMessage.warning(res.message) |
| | | } |
| | | await getWorksList(props.projectId) |
| | | } |
| | | |
| | | defineExpose({ |
| | | riskOpen |
| | | }); |