From de5e674a5655cd5c8d5457d1be8182519625d265 Mon Sep 17 00:00:00 2001 From: 马宇豪 <978517621@qq.com> Date: 星期三, 12 三月 2025 15:35:47 +0800 Subject: [PATCH] 修改 --- src/views/analyse/plan/index.vue | 37 src/views/analyse/identify/index.ts | 11 src/views/analyse/identify/components/identifyDialog.vue | 1226 ++++++++++++++++++++++++--------------- src/views/analyse/plan/index.ts | 18 src/views/analyse/record/index.vue | 1 src/views/analyse/identify/index.vue | 4 src/api/analyse/plan/index.ts | 2 src/views/analyse/evaluate/index.vue | 6 src/views/analyse/plan/components/planDialog.vue | 468 ++++++++------- src/views/analyse/identify/components/identifyQuery.vue | 3 10 files changed, 1,052 insertions(+), 724 deletions(-) diff --git a/src/api/analyse/plan/index.ts b/src/api/analyse/plan/index.ts index ebfbbc2..36d8a1d 100644 --- a/src/api/analyse/plan/index.ts +++ b/src/api/analyse/plan/index.ts @@ -76,7 +76,7 @@ reSendJob: (params: object)=>{ return request({ - url: import.meta.env.VITE_API_URL + '/risk/update/appoint', + url: import.meta.env.VITE_API_URL + '/risk/update/appointNew', method: 'post', data: params }); diff --git a/src/views/analyse/evaluate/index.vue b/src/views/analyse/evaluate/index.vue index 41ec3e0..356dda1 100644 --- a/src/views/analyse/evaluate/index.vue +++ b/src/views/analyse/evaluate/index.vue @@ -109,8 +109,8 @@ </el-table-column> <el-table-column label="操作" width="250"> <template #default="scope"> - <el-button size="small" v-if="scope.row.planExecStatus===3 && scope.row.evaluateUserId == evaluateState.user" text type="primary" :icon="DocumentChecked" @click="accessEvaluate(scope.row)">提交</el-button> - <el-button size="small" v-if="scope.row.planExecStatus===3 && scope.row.evaluateUserId == evaluateState.user" text type="primary" :icon="Edit" @click="openEvaluate(scope.row)">评价</el-button> + <el-button size="small" v-if="scope.row.planExecStatus===3 && scope.row.evaluateUsers?.find(i=>i.evaluateUserId== evaluateState.user)" text type="primary" :icon="DocumentChecked" @click="accessEvaluate(scope.row)">提交</el-button> + <el-button size="small" v-if="scope.row.planExecStatus===3 && scope.row.evaluateUsers?.find(i=>i.evaluateUserId== evaluateState.user)" text type="primary" :icon="Edit" @click="openEvaluate(scope.row)">评价</el-button> <el-button size="small" v-if="scope.row.planExecStatus===4" text :icon="View" type="primary" @click="openEvaluate(scope.row)">查看评价</el-button> </template> </el-table-column> @@ -155,7 +155,7 @@ <el-table-column v-if="evaluateState.currentEvalute.identificationMethod == 5" prop="analogyResult" label="可能存在后果" show-overflow-tooltip align="center"></el-table-column> <el-table-column label="操作"> <template #default="scope"> - <el-button size="small" v-if="evaluateState.currentEvalute.planExecStatus === 3 && evaluateState.currentEvalute.evaluateUserId == evaluateState.user" text type="primary" :icon="Plus" @click="openEvaluateDialog('评价', scope.row)">评价</el-button> + <el-button size="small" v-if="evaluateState.currentEvalute.planExecStatus === 3 && evaluateState.currentEvalute.evaluateUsers?.find(i=>i.evaluateUserId== evaluateState.user)" text type="primary" :icon="Plus" @click="openEvaluateDialog('评价', scope.row)">评价</el-button> <el-button size="small" v-if="scope.row.riskValue" text type="primary" :icon="View" @click="openEvaluateDialog('查看', scope.row)">查看</el-button> </template> </el-table-column> diff --git a/src/views/analyse/identify/components/identifyDialog.vue b/src/views/analyse/identify/components/identifyDialog.vue index a764ab6..d403a07 100644 --- a/src/views/analyse/identify/components/identifyDialog.vue +++ b/src/views/analyse/identify/components/identifyDialog.vue @@ -1,510 +1,780 @@ <template> - <div class="system-menu-dialog-container"> - <el-dialog :title="identifyDialogState.title" v-model="identifyDialogState.identifyDialogVisible" width="600px"> - <el-form ref="identifyFormRef" :rules="identifyDialogState.identifyFormRules" :model="identifyDialogState.identifyForm" size="default" label-width="160px"> - <el-row :gutter="35"> -<!-- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">--> -<!-- <el-form-item label="辨识方法" prop="identificationMethod">--> -<!-- <el-select class="input-length" :disabled="true" v-model="identifyDialogState.identifyForm.identificationMethod" style="width:100%" placeholder="辨识方法" clearable>--> -<!-- <el-option v-for="item in identifyDialogState.identificationMethodList" :key="item.id" :label="item.name" :value="item.id"></el-option>--> -<!-- </el-select>--> -<!-- </el-form-item>--> -<!-- </el-col>--> + <div class="system-menu-dialog-container"> + <el-dialog :title="identifyDialogState.title" v-model="identifyDialogState.identifyDialogVisible" width="600px"> + <el-form ref="identifyFormRef" :rules="identifyDialogState.identifyFormRules" + :model="identifyDialogState.identifyForm" size="default" label-width="160px"> + <el-row :gutter="35"> + <!-- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">--> + <!-- <el-form-item label="辨识方法" prop="identificationMethod">--> + <!-- <el-select class="input-length" :disabled="true" v-model="identifyDialogState.identifyForm.identificationMethod" style="width:100%" placeholder="辨识方法" clearable>--> + <!-- <el-option v-for="item in identifyDialogState.identificationMethodList" :key="item.id" :label="item.name" :value="item.id"></el-option>--> + <!-- </el-select>--> + <!-- </el-form-item>--> + <!-- </el-col>--> - <div style="width: 100%" v-if="identifyDialogState.method === 1"> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="PHA_检查项目" prop="phaCheckItem"> - <el-input class="input-length" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.phaCheckItem" placeholder="检查项目" clearable></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="PHA_存在风险因素" prop="phaRiskFactor"> - <el-input class="input-length" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.phaRiskFactor" placeholder="存在风险因素" clearable></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="PHA_可能产生的后果" prop="phaResult"> - <el-input class="input-length" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.phaResult" placeholder="可能产生的后果" clearable></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="分配评价方法"> - <el-select disabled class="input-length" v-model="identifyDialogState.evaluateMethod" style="width:100%" placeholder="" clearable> - <el-option v-for="item in identifyDialogState.evaluateMethodList" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </el-form-item> - </el-col> -<!-- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">--> -<!-- <el-form-item label="评价专家" prop="phaEvaluateUser">--> -<!-- <el-select class="input-length" v-model="identifyDialogState.identifyForm.phaEvaluateUser" style="width:100%" placeholder="" clearable>--> -<!-- <el-option v-for="item in identifyDialogState.personList" :key="item.id" :label="item.name" :value="item.id"></el-option>--> -<!-- </el-select>--> -<!-- </el-form-item>--> -<!-- </el-col>--> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="评价专家"> - <el-input class="input-length" disabled v-model="identifyDialogState.evaluateUser" placeholder="暂无评价专家" clearable></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="辨识结果" prop="result"> - <el-radio-group v-model="identifyDialogState.identifyForm.result" :disabled="identifyDialogState.disabled"> - <el-radio :label="1">有风险</el-radio> - <el-radio :label="2">无风险</el-radio> - </el-radio-group> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="辨识专家建议" prop="identificationDesc"> - <el-input class="input-length" type="textarea" :autosize="{ minRows: 3}" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.identificationDesc" placeholder="辨识专家建议" clearable></el-input> - </el-form-item> - </el-col> - </div> + <div style="width: 100%" v-if="identifyDialogState.method === 1"> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="PHA_检查项目" prop="phaCheckItem"> + <el-input class="input-length" :disabled="identifyDialogState.disabled" + v-model="identifyDialogState.identifyForm.phaCheckItem" placeholder="检查项目" + clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="PHA_存在风险因素" prop="phaRiskFactor"> + <el-input class="input-length" :disabled="identifyDialogState.disabled" + v-model="identifyDialogState.identifyForm.phaRiskFactor" placeholder="存在风险因素" + clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="PHA_可能产生的后果" prop="phaResult"> + <el-input class="input-length" :disabled="identifyDialogState.disabled" + v-model="identifyDialogState.identifyForm.phaResult" placeholder="可能产生的后果" + clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="分配评价方法"> + <el-select disabled class="input-length" v-model="identifyDialogState.evaluateMethod" style="width:100%" + placeholder="" clearable> + <el-option v-for="item in identifyDialogState.evaluateMethodList" :key="item.id" :label="item.name" + :value="item.id"></el-option> + </el-select> + </el-form-item> + </el-col> + <!-- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">--> + <!-- <el-form-item label="评价专家" prop="phaEvaluateUser">--> + <!-- <el-select class="input-length" v-model="identifyDialogState.identifyForm.phaEvaluateUser" style="width:100%" placeholder="" clearable>--> + <!-- <el-option v-for="item in identifyDialogState.personList" :key="item.id" :label="item.name" :value="item.id"></el-option>--> + <!-- </el-select>--> + <!-- </el-form-item>--> + <!-- </el-col>--> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="评价专家"> + <el-input class="input-length" disabled v-model="identifyDialogState.evaluateUser" + placeholder="暂无评价专家" clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="辨识结果" prop="result"> + <el-radio-group v-model="identifyDialogState.identifyForm.result" + :disabled="identifyDialogState.disabled"> + <el-radio :label="1">有风险</el-radio> + <el-radio :label="2">无风险</el-radio> + </el-radio-group> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="辨识专家建议" prop="identificationDesc"> + <el-input class="input-length" type="textarea" :autosize="{ minRows: 3}" + :disabled="identifyDialogState.disabled" + v-model="identifyDialogState.identifyForm.identificationDesc" placeholder="辨识专家建议" + clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="附件"> + <el-upload accept="image/*" :action="identifyDialogState.uploadUrl" + :disabled="identifyDialogState.disabled" + :headers="identifyDialogState.header" method="post" :data="{module: 'identification'}" + :on-success="handleAvatarSuccess" :on-exceed="showTip" :on-preview="handlePictureCardPreview" + :limit='identifyDialogState.imgLimit' v-model:file-list="identifyDialogState.fileList" + list-type="picture-card" :before-upload="picSize" :on-remove="handleRemove" + :before-remove="beforeRemove"> + <el-icon> + <Plus/> + </el-icon> + <template #tip> + <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传1张</div> + </template> + </el-upload> + </el-form-item> + </el-col> + </div> - <div style="width: 100%" v-if="identifyDialogState.method === 2"> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="JHA_作业步骤" prop="jhaCheckItem"> - <el-input class="input-length" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.jhaCheckItem" placeholder="作业步骤" clearable></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="JHA_危险源或潜在事件" prop="jhaRiskFactor"> - <el-input class="input-length" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.jhaRiskFactor" placeholder="危险源或潜在事件" clearable></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="JHA_可能产生的后果" prop="jhaResult"> - <el-input class="input-length" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.jhaResult" placeholder="可能产生的后果" clearable></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="分配评价方法"> - <el-select disabled class="input-length" v-model="identifyDialogState.evaluateMethod" style="width:100%" placeholder="" clearable> - <el-option v-for="item in identifyDialogState.evaluateMethodList" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </el-form-item> - </el-col> -<!-- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">--> -<!-- <el-form-item label="评价专家" prop="jhaEvaluateUser">--> -<!-- <el-select class="input-length" v-model="identifyDialogState.identifyForm.jhaEvaluateUser" style="width:100%" placeholder="" clearable>--> -<!-- <el-option v-for="item in identifyDialogState.personList" :key="item.id" :label="item.name" :value="item.id"></el-option>--> -<!-- </el-select>--> -<!-- </el-form-item>--> -<!-- </el-col>--> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="评价专家"> - <el-input class="input-length" disabled v-model="identifyDialogState.evaluateUser" placeholder="暂无评价专家" clearable></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="辨识结果" prop="result"> - <el-radio-group v-model="identifyDialogState.identifyForm.result" :disabled="identifyDialogState.disabled"> - <el-radio :label="1">有风险</el-radio> - <el-radio :label="2">无风险</el-radio> - </el-radio-group> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="辨识专家建议" prop="identificationDesc"> - <el-input class="input-length" type="textarea" :autosize="{ minRows: 3}" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.identificationDesc" placeholder="辨识专家建议" clearable></el-input> - </el-form-item> - </el-col> - </div> + <div style="width: 100%" v-if="identifyDialogState.method === 2"> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="JHA_作业步骤" prop="jhaCheckItem"> + <el-input class="input-length" :disabled="identifyDialogState.disabled" + v-model="identifyDialogState.identifyForm.jhaCheckItem" placeholder="作业步骤" + clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="JHA_危险源或潜在事件" prop="jhaRiskFactor"> + <el-input class="input-length" :disabled="identifyDialogState.disabled" + v-model="identifyDialogState.identifyForm.jhaRiskFactor" placeholder="危险源或潜在事件" + clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="JHA_可能产生的后果" prop="jhaResult"> + <el-input class="input-length" :disabled="identifyDialogState.disabled" + v-model="identifyDialogState.identifyForm.jhaResult" placeholder="可能产生的后果" + clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="分配评价方法"> + <el-select disabled class="input-length" v-model="identifyDialogState.evaluateMethod" style="width:100%" + placeholder="" clearable> + <el-option v-for="item in identifyDialogState.evaluateMethodList" :key="item.id" :label="item.name" + :value="item.id"></el-option> + </el-select> + </el-form-item> + </el-col> + <!-- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">--> + <!-- <el-form-item label="评价专家" prop="jhaEvaluateUser">--> + <!-- <el-select class="input-length" v-model="identifyDialogState.identifyForm.jhaEvaluateUser" style="width:100%" placeholder="" clearable>--> + <!-- <el-option v-for="item in identifyDialogState.personList" :key="item.id" :label="item.name" :value="item.id"></el-option>--> + <!-- </el-select>--> + <!-- </el-form-item>--> + <!-- </el-col>--> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="评价专家"> + <el-input class="input-length" disabled v-model="identifyDialogState.evaluateUser" + placeholder="暂无评价专家" clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="辨识结果" prop="result"> + <el-radio-group v-model="identifyDialogState.identifyForm.result" + :disabled="identifyDialogState.disabled"> + <el-radio :label="1">有风险</el-radio> + <el-radio :label="2">无风险</el-radio> + </el-radio-group> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="辨识专家建议" prop="identificationDesc"> + <el-input class="input-length" type="textarea" :autosize="{ minRows: 3}" + :disabled="identifyDialogState.disabled" + v-model="identifyDialogState.identifyForm.identificationDesc" placeholder="辨识专家建议" + clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="附件"> + <el-upload accept="image/*" :action="identifyDialogState.uploadUrl" + :disabled="identifyDialogState.disabled" + :headers="identifyDialogState.header" method="post" :data="{module: 'identification'}" + :on-success="handleAvatarSuccess" :on-exceed="showTip" :on-preview="handlePictureCardPreview" + :limit='identifyDialogState.imgLimit' v-model:file-list="identifyDialogState.fileList" + list-type="picture-card" :before-upload="picSize" :on-remove="handleRemove" + :before-remove="beforeRemove"> + <el-icon> + <Plus/> + </el-icon> + <template #tip> + <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传1张</div> + </template> + </el-upload> + </el-form-item> + </el-col> + </div> - <div style="width: 100%" v-if="identifyDialogState.method === 3"> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="SCL_检查项目" prop="sclCheckItem"> - <el-input class="input-length" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.sclCheckItem" placeholder="检查项目" clearable></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="SCL_检查标准" prop="sclCheckStandard"> - <el-input class="input-length" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.sclCheckStandard" placeholder="检查标准" clearable></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="SCL_不符合标准情况" prop="sclCheckUnstandard"> - <el-input class="input-length" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.sclCheckUnstandard" placeholder="不符合标准情况" clearable></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="SCL_主要后果" prop="sclCheckResult"> - <el-input class="input-length" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.sclCheckResult" placeholder="主要后果" clearable></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="分配评价方法"> - <el-select disabled class="input-length" v-model="identifyDialogState.evaluateMethod" style="width:100%" placeholder="" clearable> - <el-option v-for="item in identifyDialogState.evaluateMethodList" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </el-form-item> - </el-col> -<!-- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">--> -<!-- <el-form-item label="评价专家" prop="sclEvaluateUser">--> -<!-- <el-select class="input-length" v-model="identifyDialogState.identifyForm.sclEvaluateUser" style="width:100%" placeholder="" clearable>--> -<!-- <el-option v-for="item in identifyDialogState.personList" :key="item.id" :label="item.name" :value="item.id"></el-option>--> -<!-- </el-select>--> -<!-- </el-form-item>--> -<!-- </el-col>--> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="评价专家"> - <el-input class="input-length" disabled v-model="identifyDialogState.evaluateUser" placeholder="暂无评价专家" clearable></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="辨识结果" prop="result"> - <el-radio-group v-model="identifyDialogState.identifyForm.result" :disabled="identifyDialogState.disabled"> - <el-radio :label="1">有风险</el-radio> - <el-radio :label="2">无风险</el-radio> - </el-radio-group> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="辨识专家建议" prop="identificationDesc"> - <el-input class="input-length" type="textarea" :autosize="{ minRows: 3}" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.identificationDesc" placeholder="辨识专家建议" clearable></el-input> - </el-form-item> - </el-col> - </div> + <div style="width: 100%" v-if="identifyDialogState.method === 3"> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="SCL_检查项目" prop="sclCheckItem"> + <el-input class="input-length" :disabled="identifyDialogState.disabled" + v-model="identifyDialogState.identifyForm.sclCheckItem" placeholder="检查项目" + clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="SCL_检查标准" prop="sclCheckStandard"> + <el-input class="input-length" :disabled="identifyDialogState.disabled" + v-model="identifyDialogState.identifyForm.sclCheckStandard" placeholder="检查标准" + clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="SCL_不符合标准情况" prop="sclCheckUnstandard"> + <el-input class="input-length" :disabled="identifyDialogState.disabled" + v-model="identifyDialogState.identifyForm.sclCheckUnstandard" placeholder="不符合标准情况" + clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="SCL_主要后果" prop="sclCheckResult"> + <el-input class="input-length" :disabled="identifyDialogState.disabled" + v-model="identifyDialogState.identifyForm.sclCheckResult" placeholder="主要后果" + clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="分配评价方法"> + <el-select disabled class="input-length" v-model="identifyDialogState.evaluateMethod" style="width:100%" + placeholder="" clearable> + <el-option v-for="item in identifyDialogState.evaluateMethodList" :key="item.id" :label="item.name" + :value="item.id"></el-option> + </el-select> + </el-form-item> + </el-col> + <!-- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">--> + <!-- <el-form-item label="评价专家" prop="sclEvaluateUser">--> + <!-- <el-select class="input-length" v-model="identifyDialogState.identifyForm.sclEvaluateUser" style="width:100%" placeholder="" clearable>--> + <!-- <el-option v-for="item in identifyDialogState.personList" :key="item.id" :label="item.name" :value="item.id"></el-option>--> + <!-- </el-select>--> + <!-- </el-form-item>--> + <!-- </el-col>--> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="评价专家"> + <el-input class="input-length" disabled v-model="identifyDialogState.evaluateUser" + placeholder="暂无评价专家" clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="辨识结果" prop="result"> + <el-radio-group v-model="identifyDialogState.identifyForm.result" + :disabled="identifyDialogState.disabled"> + <el-radio :label="1">有风险</el-radio> + <el-radio :label="2">无风险</el-radio> + </el-radio-group> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="辨识专家建议" prop="identificationDesc"> + <el-input class="input-length" type="textarea" :autosize="{ minRows: 3}" + :disabled="identifyDialogState.disabled" + v-model="identifyDialogState.identifyForm.identificationDesc" placeholder="辨识专家建议" + clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="附件"> + <el-upload accept="image/*" :action="identifyDialogState.uploadUrl" + :disabled="identifyDialogState.disabled" + :headers="identifyDialogState.header" method="post" :data="{module: 'identification'}" + :on-success="handleAvatarSuccess" :on-exceed="showTip" :on-preview="handlePictureCardPreview" + :limit='identifyDialogState.imgLimit' v-model:file-list="identifyDialogState.fileList" + list-type="picture-card" :before-upload="picSize" :on-remove="handleRemove" + :before-remove="beforeRemove"> + <el-icon> + <Plus/> + </el-icon> + <template #tip> + <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传1张</div> + </template> + </el-upload> + </el-form-item> + </el-col> + </div> - <div style="width: 100%" v-if="identifyDialogState.method === 4"> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="HAZOP_节点" prop="hazopNode"> - <el-input class="input-length" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.hazopNode" placeholder="HAZOP_节点" clearable></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="HAZOP_参数" prop="hazopParam"> - <el-input class="input-length" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.hazopParam" placeholder="HAZOP_参数" clearable></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="HAZOP_参数描述" prop="hazopParamDesc"> - <el-input class="input-length" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.hazopParamDesc" placeholder="HAZOP_参数描述" clearable></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="HAZOP_引导词" prop="hazopGuide"> - <el-input class="input-length" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.hazopGuide" placeholder="HAZOP_引导词" clearable></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="HAZOP_偏差" prop="hazopDeviation"> - <el-input class="input-length" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.hazopDeviation" placeholder="HAZOP_偏差" clearable></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="HAZOP_可能原因" prop="hazopPossibleCauses"> - <el-input class="input-length" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.hazopPossibleCauses" placeholder="HAZOP_可能原因" clearable></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="HAZOP_主要后果" prop="hazopResult"> - <el-input class="input-length" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.hazopResult" placeholder="HAZOP_主要后果" clearable></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="分配评价方法"> - <el-select disabled class="input-length" v-model="identifyDialogState.evaluateMethod" style="width:100%" placeholder="" clearable> - <el-option v-for="item in identifyDialogState.evaluateMethodList" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </el-form-item> - </el-col> -<!-- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">--> -<!-- <el-form-item label="评价专家" prop="hazopEvaluateUser">--> -<!-- <el-select class="input-length" v-model="identifyDialogState.identifyForm.hazopEvaluateUser" style="width:100%" placeholder="" clearable>--> -<!-- <el-option v-for="item in identifyDialogState.personList" :key="item.id" :label="item.name" :value="item.id"></el-option>--> -<!-- </el-select>--> -<!-- </el-form-item>--> -<!-- </el-col>--> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="评价专家"> - <el-input class="input-length" disabled v-model="identifyDialogState.evaluateUser" placeholder="暂无评价专家" clearable></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="辨识结果" prop="result"> - <el-radio-group v-model="identifyDialogState.identifyForm.result" :disabled="identifyDialogState.disabled"> - <el-radio :label="1">有风险</el-radio> - <el-radio :label="2">无风险</el-radio> - </el-radio-group> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="辨识专家建议" prop="identificationDesc"> - <el-input class="input-length" type="textarea" :autosize="{ minRows: 3}" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.identificationDesc" placeholder="辨识专家建议" clearable></el-input> - </el-form-item> - </el-col> - </div> + <div style="width: 100%" v-if="identifyDialogState.method === 4"> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="HAZOP_节点" prop="hazopNode"> + <el-input class="input-length" :disabled="identifyDialogState.disabled" + v-model="identifyDialogState.identifyForm.hazopNode" placeholder="HAZOP_节点" + clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="HAZOP_参数" prop="hazopParam"> + <el-input class="input-length" :disabled="identifyDialogState.disabled" + v-model="identifyDialogState.identifyForm.hazopParam" placeholder="HAZOP_参数" + clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="HAZOP_参数描述" prop="hazopParamDesc"> + <el-input class="input-length" :disabled="identifyDialogState.disabled" + v-model="identifyDialogState.identifyForm.hazopParamDesc" placeholder="HAZOP_参数描述" + clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="HAZOP_引导词" prop="hazopGuide"> + <el-input class="input-length" :disabled="identifyDialogState.disabled" + v-model="identifyDialogState.identifyForm.hazopGuide" placeholder="HAZOP_引导词" + clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="HAZOP_偏差" prop="hazopDeviation"> + <el-input class="input-length" :disabled="identifyDialogState.disabled" + v-model="identifyDialogState.identifyForm.hazopDeviation" placeholder="HAZOP_偏差" + clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="HAZOP_可能原因" prop="hazopPossibleCauses"> + <el-input class="input-length" :disabled="identifyDialogState.disabled" + v-model="identifyDialogState.identifyForm.hazopPossibleCauses" placeholder="HAZOP_可能原因" + clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="HAZOP_主要后果" prop="hazopResult"> + <el-input class="input-length" :disabled="identifyDialogState.disabled" + v-model="identifyDialogState.identifyForm.hazopResult" placeholder="HAZOP_主要后果" + clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="分配评价方法"> + <el-select disabled class="input-length" v-model="identifyDialogState.evaluateMethod" style="width:100%" + placeholder="" clearable> + <el-option v-for="item in identifyDialogState.evaluateMethodList" :key="item.id" :label="item.name" + :value="item.id"></el-option> + </el-select> + </el-form-item> + </el-col> + <!-- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">--> + <!-- <el-form-item label="评价专家" prop="hazopEvaluateUser">--> + <!-- <el-select class="input-length" v-model="identifyDialogState.identifyForm.hazopEvaluateUser" style="width:100%" placeholder="" clearable>--> + <!-- <el-option v-for="item in identifyDialogState.personList" :key="item.id" :label="item.name" :value="item.id"></el-option>--> + <!-- </el-select>--> + <!-- </el-form-item>--> + <!-- </el-col>--> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="评价专家"> + <el-input class="input-length" disabled v-model="identifyDialogState.evaluateUser" + placeholder="暂无评价专家" clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="辨识结果" prop="result"> + <el-radio-group v-model="identifyDialogState.identifyForm.result" + :disabled="identifyDialogState.disabled"> + <el-radio :label="1">有风险</el-radio> + <el-radio :label="2">无风险</el-radio> + </el-radio-group> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="辨识专家建议" prop="identificationDesc"> + <el-input class="input-length" type="textarea" :autosize="{ minRows: 3}" + :disabled="identifyDialogState.disabled" + v-model="identifyDialogState.identifyForm.identificationDesc" placeholder="辨识专家建议" + clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="附件"> + <el-upload accept="image/*" :action="identifyDialogState.uploadUrl" + :disabled="identifyDialogState.disabled" + :headers="identifyDialogState.header" method="post" :data="{module: 'identification'}" + :on-success="handleAvatarSuccess" :on-exceed="showTip" :on-preview="handlePictureCardPreview" + :limit='identifyDialogState.imgLimit' v-model:file-list="identifyDialogState.fileList" + list-type="picture-card" :before-upload="picSize" :on-remove="handleRemove" + :before-remove="beforeRemove"> + <el-icon> + <Plus/> + </el-icon> + <template #tip> + <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传1张</div> + </template> + </el-upload> + </el-form-item> + </el-col> + </div> - <div style="width: 100%" v-if="identifyDialogState.method === 5"> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="类比法_检查项目" prop="analogyCheckItem"> - <el-input class="input-length" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.analogyCheckItem" placeholder="检查项目" clearable></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="类比法_类比参照" prop="analogyReference"> - <el-input class="input-length" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.analogyReference" placeholder="类比参照" clearable></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="类比法_存在风险因素" prop="analogyRiskFactor"> - <el-input class="input-length" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.analogyRiskFactor" placeholder="存在风险因素" clearable></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="类比法_可能产生的后果" prop="analogyResult"> - <el-input class="input-length" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.analogyResult" placeholder="可能产生的后果" clearable></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="分配评价方法"> - <el-select disabled class="input-length" v-model="identifyDialogState.evaluateMethod" style="width:100%" placeholder="" clearable> - <el-option v-for="item in identifyDialogState.evaluateMethodList" :key="item.id" :label="item.name" :value="item.id"></el-option> - </el-select> - </el-form-item> - </el-col> -<!-- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">--> -<!-- <el-form-item label="评价专家" prop="analogyEvaluateUser">--> -<!-- <el-select class="input-length" v-model="identifyDialogState.identifyForm.analogyEvaluateUser" style="width:100%" placeholder="" clearable>--> -<!-- <el-option v-for="item in identifyDialogState.personList" :key="item.id" :label="item.name" :value="item.id"></el-option>--> -<!-- </el-select>--> -<!-- </el-form-item>--> -<!-- </el-col>--> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="评价专家"> - <el-input class="input-length" disabled v-model="identifyDialogState.evaluateUser" placeholder="暂无评价专家" clearable></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="辨识结果" prop="result"> - <el-radio-group v-model="identifyDialogState.identifyForm.result" :disabled="identifyDialogState.disabled"> - <el-radio :label="1">有风险</el-radio> - <el-radio :label="2">无风险</el-radio> - </el-radio-group> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="辨识专家建议" prop="identificationDesc"> - <el-input class="input-length" type="textarea" :autosize="{ minRows: 3}" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.identificationDesc" placeholder="辨识专家建议" clearable></el-input> - </el-form-item> - </el-col> - </div> - </el-row> - </el-form> - <template #footer> + <div style="width: 100%" v-if="identifyDialogState.method === 5"> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="类比法_检查项目" prop="analogyCheckItem"> + <el-input class="input-length" :disabled="identifyDialogState.disabled" + v-model="identifyDialogState.identifyForm.analogyCheckItem" placeholder="检查项目" + clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="类比法_类比参照" prop="analogyReference"> + <el-input class="input-length" :disabled="identifyDialogState.disabled" + v-model="identifyDialogState.identifyForm.analogyReference" placeholder="类比参照" + clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="类比法_存在风险因素" prop="analogyRiskFactor"> + <el-input class="input-length" :disabled="identifyDialogState.disabled" + v-model="identifyDialogState.identifyForm.analogyRiskFactor" placeholder="存在风险因素" + clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="类比法_可能产生的后果" prop="analogyResult"> + <el-input class="input-length" :disabled="identifyDialogState.disabled" + v-model="identifyDialogState.identifyForm.analogyResult" placeholder="可能产生的后果" + clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="分配评价方法"> + <el-select disabled class="input-length" v-model="identifyDialogState.evaluateMethod" style="width:100%" + placeholder="" clearable> + <el-option v-for="item in identifyDialogState.evaluateMethodList" :key="item.id" :label="item.name" + :value="item.id"></el-option> + </el-select> + </el-form-item> + </el-col> + <!-- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">--> + <!-- <el-form-item label="评价专家" prop="analogyEvaluateUser">--> + <!-- <el-select class="input-length" v-model="identifyDialogState.identifyForm.analogyEvaluateUser" style="width:100%" placeholder="" clearable>--> + <!-- <el-option v-for="item in identifyDialogState.personList" :key="item.id" :label="item.name" :value="item.id"></el-option>--> + <!-- </el-select>--> + <!-- </el-form-item>--> + <!-- </el-col>--> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="评价专家"> + <el-input class="input-length" disabled v-model="identifyDialogState.evaluateUser" + placeholder="暂无评价专家" clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="辨识结果" prop="result"> + <el-radio-group v-model="identifyDialogState.identifyForm.result" + :disabled="identifyDialogState.disabled"> + <el-radio :label="1">有风险</el-radio> + <el-radio :label="2">无风险</el-radio> + </el-radio-group> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="辨识专家建议" prop="identificationDesc"> + <el-input class="input-length" type="textarea" :autosize="{ minRows: 3}" + :disabled="identifyDialogState.disabled" + v-model="identifyDialogState.identifyForm.identificationDesc" placeholder="辨识专家建议" + clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="附件"> + <el-upload accept="image/*" :action="identifyDialogState.uploadUrl" + :disabled="identifyDialogState.disabled" + :headers="identifyDialogState.header" method="post" :data="{module: 'identification'}" + :on-success="handleAvatarSuccess" :on-exceed="showTip" :on-preview="handlePictureCardPreview" + :limit='identifyDialogState.imgLimit' v-model:file-list="identifyDialogState.fileList" + list-type="picture-card" :before-upload="picSize" :on-remove="handleRemove" + :before-remove="beforeRemove"> + <el-icon> + <Plus/> + </el-icon> + <template #tip> + <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传1张</div> + </template> + </el-upload> + </el-form-item> + </el-col> + </div> + </el-row> + </el-form> + <template #footer> <span class="dialog-footer"> - <el-button @click="identifyDialogState.identifyDialogVisible = !identifyDialogState.identifyDialogVisible" size="default">取 消</el-button> - <el-button v-if="!identifyDialogState.disabled" type="primary" @click="onSubmitIdentify" size="default">确定</el-button> + <el-button @click="identifyDialogState.identifyDialogVisible = !identifyDialogState.identifyDialogVisible" + size="default">取 消</el-button> + <el-button v-if="!identifyDialogState.disabled" type="primary" @click="onSubmitIdentify" + size="default">确定</el-button> </span> - </template> - </el-dialog> - </div> + </template> + </el-dialog> + <el-dialog v-model="identifyDialogState.dialogVisible"> + <el-image style="width: 100%; height: 100%" :src="identifyDialogState.dialogImageUrl"/> + </el-dialog> + </div> </template> <script setup lang="ts"> -import { reactive, ref } from "vue"; -import {ElMessage} from "element-plus"; +import {reactive, ref} from "vue"; +import {ElMessage, UploadProps} from "element-plus"; import {identifyApi} from "/@/api/analyse/identify"; import {isValidKey} from "/@/utils/methods"; +import Cookies from "js-cookie"; +import {useUserInfo} from "/@/stores/userInfo"; +import {storeToRefs} from "pinia"; +import axios from "axios"; +const userInfo = useUserInfo(); +const {userInfos} = storeToRefs(userInfo); const identifyFormRef = ref() const identifyDialogState = reactive<IdentifyDialogType>({ - title: '', - method: null, - time:[], - disabled: false, - evaluateMethod: null, - evaluateUser: '', - identifyDialogVisible: false, - identifyForm: { - id: null, - identificationMethod: null, - result: null, - identificationDesc: '', - analogyCheckItem: '', - analogyRiskFactor: '', - analogyResult: '', - analogyReference: '', - hazopNode: '', - hazopParam: '', - hazopParamDesc: '', - hazopGuide: '', - hazopDeviation: '', - hazopPossibleCauses: '', - hazopResult: '', - jhaCheckItem: '', - jhaRiskFactor: '', - jhaResult: '', - phaCheckItem: '', - phaRiskFactor: '', - phaResult: '', - sclCheckItem: '', - sclCheckStandard: '', - sclCheckUnstandard: '', - sclCheckResult: '', - hazopId: null, - jhaId: null, - phaId: null, - sclId: null, - analogyId: null - }, - identifyFormRules: { - result: [{ required: true, message: '请选择辨识结果', trigger: 'blur' }], - identificationDesc: [{ required: true, message: '请输入辨识专家建议', trigger: 'blur' }], - analogyCheckItem: [{ required: true, message: '请输入检查项目', trigger: 'blur' }], - analogyRiskFactor: [{ required: true, message: '请输入存在风险因素', trigger: 'blur' }], - analogyResult: [{ required: true, message: '请输入可能产生的后果', trigger: 'blur' }], - analogyReference: [{ required: true, message: '请输入类比参照', trigger: 'blur' }], - hazopNode: [{ required: true, message: '请输入节点', trigger: 'blur' }], - hazopParam: [{ required: true, message: '请输入参数', trigger: 'blur' }], - hazopParamDesc: [{ required: true, message: '请输入参数描述', trigger: 'blur' }], - hazopGuide: [{ required: true, message: '请输入引导词', trigger: 'blur' }], - hazopDeviation: [{ required: true, message: '请输入偏差', trigger: 'blur' }], - hazopPossibleCauses: [{ required: true, message: '请输入可能原因', trigger: 'blur' }], - hazopResult: [{ required: true, message: '请输入主要后果', trigger: 'blur' }], - jhaCheckItem: [{ required: true, message: '请输入作业步骤', trigger: 'blur' }], - jhaRiskFactor: [{ required: true, message: '请输入危险源或潜在事件', trigger: 'blur' }], - jhaResult: [{ required: true, message: '请输入可能产生的后果', trigger: 'blur' }], - phaCheckItem: [{ required: true, message: '请输入检查项目', trigger: 'blur' }], - phaRiskFactor: [{ required: true, message: '请输入存在风险因素', trigger: 'blur' }], - phaResult: [{ required: true, message: '请输入可能产生的后果', trigger: 'blur' }], - sclCheckItem: [{ required: true, message: '请输入检查项目', trigger: 'blur' }], - sclCheckStandard: [{ required: true, message: '请输入检查标准', trigger: 'blur' }], - sclCheckUnstandard: [{ required: true, message: '请输入不符合标准情况', trigger: 'blur' }], - sclCheckResult: [{ required: true, message: '请输入主要后果', trigger: 'blur' }] - }, - planList: [], - personList: [], - identificationMethodList: [ - {id:1, name: 'PHA'}, - {id:2, name: 'JHA'}, - {id:3, name: 'SCL'}, - {id:4, name: 'HAZOP'}, - {id:5, name: '类比法'}, - ], - evaluateMethodList: [ - {id:1, name: 'LEC'}, - {id:2, name: 'LS'}, - {id:3, name: 'MES'}, - {id:4, name: 'RS'}, - ] + title: '', + method: null, + time: [], + disabled: false, + evaluateMethod: null, + evaluateUser: '', + identifyDialogVisible: false, + identifyForm: { + id: null, + identificationMethod: null, + result: null, + identificationDesc: '', + analogyCheckItem: '', + analogyRiskFactor: '', + analogyResult: '', + analogyReference: '', + hazopNode: '', + hazopParam: '', + hazopParamDesc: '', + hazopGuide: '', + hazopDeviation: '', + hazopPossibleCauses: '', + hazopResult: '', + jhaCheckItem: '', + jhaRiskFactor: '', + jhaResult: '', + phaCheckItem: '', + phaRiskFactor: '', + phaResult: '', + sclCheckItem: '', + sclCheckStandard: '', + sclCheckUnstandard: '', + sclCheckResult: '', + hazopId: null, + jhaId: null, + phaId: null, + sclId: null, + analogyId: null, + fileData: '' + }, + fileList: [], + imgLimit: 1, + uploadUrl: import.meta.env.VITE_API_URL + '/attachment/upload/url', + isOverSize: false, + header: { + uid: Number(userInfos.value.uid), + tk: Cookies.get('token') + }, + dialogVisible: false, + dialogImageUrl: '', + identifyFormRules: { + result: [{required: true, message: '请选择辨识结果', trigger: 'blur'}], + identificationDesc: [{required: true, message: '请输入辨识专家建议', trigger: 'blur'}], + analogyCheckItem: [{required: true, message: '请输入检查项目', trigger: 'blur'}], + analogyRiskFactor: [{required: true, message: '请输入存在风险因素', trigger: 'blur'}], + analogyResult: [{required: true, message: '请输入可能产生的后果', trigger: 'blur'}], + analogyReference: [{required: true, message: '请输入类比参照', trigger: 'blur'}], + hazopNode: [{required: true, message: '请输入节点', trigger: 'blur'}], + hazopParam: [{required: true, message: '请输入参数', trigger: 'blur'}], + hazopParamDesc: [{required: true, message: '请输入参数描述', trigger: 'blur'}], + hazopGuide: [{required: true, message: '请输入引导词', trigger: 'blur'}], + hazopDeviation: [{required: true, message: '请输入偏差', trigger: 'blur'}], + hazopPossibleCauses: [{required: true, message: '请输入可能原因', trigger: 'blur'}], + hazopResult: [{required: true, message: '请输入主要后果', trigger: 'blur'}], + jhaCheckItem: [{required: true, message: '请输入作业步骤', trigger: 'blur'}], + jhaRiskFactor: [{required: true, message: '请输入危险源或潜在事件', trigger: 'blur'}], + jhaResult: [{required: true, message: '请输入可能产生的后果', trigger: 'blur'}], + phaCheckItem: [{required: true, message: '请输入检查项目', trigger: 'blur'}], + phaRiskFactor: [{required: true, message: '请输入存在风险因素', trigger: 'blur'}], + phaResult: [{required: true, message: '请输入可能产生的后果', trigger: 'blur'}], + sclCheckItem: [{required: true, message: '请输入检查项目', trigger: 'blur'}], + sclCheckStandard: [{required: true, message: '请输入检查标准', trigger: 'blur'}], + sclCheckUnstandard: [{required: true, message: '请输入不符合标准情况', trigger: 'blur'}], + sclCheckResult: [{required: true, message: '请输入主要后果', trigger: 'blur'}] + }, + planList: [], + personList: [], + identificationMethodList: [ + {id: 1, name: 'PHA'}, + {id: 2, name: 'JHA'}, + {id: 3, name: 'SCL'}, + {id: 4, name: 'HAZOP'}, + {id: 5, name: '类比法'}, + ], + evaluateMethodList: [ + {id: 1, name: 'LEC'}, + {id: 2, name: 'LS'}, + {id: 3, name: 'MES'}, + {id: 4, name: 'RS'}, + ] }) -const showIdentifyDialog = (title: string, value: IdentifyType, identifyQueryForm: identifyQueryFormType,idenForm: IdentifyType,personList: Array<NewPersonListType>) => { - identifyDialogState.method = identifyQueryForm.identificationMethod - identifyDialogState.identifyDialogVisible = true; - identifyDialogState.disabled = false - identifyDialogState.evaluateMethod = idenForm.evaluateMethod - identifyDialogState.evaluateUser = idenForm.evaluateUser - identifyDialogState.personList = personList - setTimeout(() => { - identifyFormRef.value.clearValidate(); - }); - if(title === '新增'){ - identifyDialogState.title = '新增'; - identifyDialogState.identifyForm = { - id: identifyQueryForm.id, - identificationMethod: identifyQueryForm.identificationMethod, - result: null, - identificationDesc: '', - analogyCheckItem: '', - analogyRiskFactor: '', - analogyResult: '', - analogyReference: '', - hazopNode: '', - hazopParam: '', - hazopParamDesc: '', - hazopGuide: '', - hazopDeviation: '', - hazopPossibleCauses: '', - hazopResult: '', - jhaCheckItem: '', - jhaRiskFactor: '', - jhaResult: '', - phaCheckItem: '', - phaRiskFactor: '', - phaResult: '', - sclCheckItem: '', - sclCheckStandard: '', - sclCheckUnstandard: '', - sclCheckResult: '', - hazopId: null, - jhaId: null, - phaId: null, - sclId: null, - analogyId: null, - }; - }else if(title === '查看'){ - identifyDialogState.title = '查看'; - identifyDialogState.disabled = true - for(let i in identifyDialogState.identifyForm){ - if(isValidKey(i, identifyDialogState.identifyForm)){ - identifyDialogState.identifyForm[i] = value[i]; - } - } - }else{ - identifyDialogState.title = '编辑'; - for(let i in identifyDialogState.identifyForm){ - if(isValidKey(i, identifyDialogState.identifyForm)){ - identifyDialogState.identifyForm[i] = value[i]; - } - } - identifyDialogState.identifyForm.identificationMethod = identifyQueryForm.identificationMethod - console.log(identifyDialogState.identifyForm,'identifyDialogState.identifyForm') +const showIdentifyDialog = (title: string, value: IdentifyType, identifyQueryForm: identifyQueryFormType, idenForm: IdentifyType, personList: Array<NewPersonListType>) => { + identifyDialogState.fileList = [] + identifyDialogState.method = identifyQueryForm.identificationMethod + identifyDialogState.identifyDialogVisible = true; + identifyDialogState.disabled = false + identifyDialogState.evaluateMethod = idenForm.evaluateMethod + identifyDialogState.evaluateUser = idenForm.evaluateUser + identifyDialogState.personList = personList + setTimeout(() => { + identifyFormRef.value.clearValidate(); + }); + if (title === '新增') { + identifyDialogState.title = '新增'; + identifyDialogState.identifyForm = { + id: identifyQueryForm.id, + identificationMethod: identifyQueryForm.identificationMethod, + result: null, + identificationDesc: '', + analogyCheckItem: '', + analogyRiskFactor: '', + analogyResult: '', + analogyReference: '', + hazopNode: '', + hazopParam: '', + hazopParamDesc: '', + hazopGuide: '', + hazopDeviation: '', + hazopPossibleCauses: '', + hazopResult: '', + jhaCheckItem: '', + jhaRiskFactor: '', + jhaResult: '', + phaCheckItem: '', + phaRiskFactor: '', + phaResult: '', + sclCheckItem: '', + sclCheckStandard: '', + sclCheckUnstandard: '', + sclCheckResult: '', + hazopId: null, + jhaId: null, + phaId: null, + sclId: null, + analogyId: null, + fileData: '' + }; + } else if (title === '查看') { + identifyDialogState.title = '查看'; + identifyDialogState.disabled = true + for (let i in identifyDialogState.identifyForm) { + if (isValidKey(i, identifyDialogState.identifyForm)) { + identifyDialogState.identifyForm[i] = value[i]; + } } + if(identifyDialogState.identifyForm.fileData && identifyDialogState.identifyForm.fileData !== ''){ + const picList = identifyDialogState.identifyForm.fileData.split(',') + identifyDialogState.fileList = picList.map((item,index)=>{ + return { + name: index, + url: import.meta.env.VITE_API_URL + item + } + }) + } + } else { + identifyDialogState.title = '编辑'; + for (let i in identifyDialogState.identifyForm) { + if (isValidKey(i, identifyDialogState.identifyForm)) { + identifyDialogState.identifyForm[i] = value[i]; + } + } + identifyDialogState.identifyForm.identificationMethod = identifyQueryForm.identificationMethod + if(identifyDialogState.identifyForm.fileData && identifyDialogState.identifyForm.fileData !== ''){ + const picList = identifyDialogState.identifyForm.fileData.split(',') + identifyDialogState.fileList = picList.map((item,index)=>{ + return { + name: index, + url: import.meta.env.VITE_API_URL + item + } + }) + } + } }; -const onSubmitIdentify = () => { - identifyFormRef.value.validate(async(valid: boolean) => { - if(valid){ - if(identifyDialogState.title === '新增'){ - let { hazopId, jhaId, phaId, sclId, analogyId, ...data } = identifyDialogState.identifyForm - let res = await identifyApi().addIdentify(data); - if(res.data.code === 100){ - emit('refresh',1,res.data.data) - identifyDialogState.identifyDialogVisible = false; - ElMessage({ - type: 'success', - message: '新增成功' - }) +// 图片上传 +const showTip = () => { + ElMessage({ + type: 'warning', + message: '超出文件上传数量' + }); +} - }else{ - ElMessage({ - type: 'warning', - message: res.data.msg, - }); - } - }else{ - let res = await identifyApi().modIdentify(identifyDialogState.identifyForm) - if(res.data.code === 100){ - emit('refresh',2,identifyDialogState.identifyForm) - identifyDialogState.identifyDialogVisible = false; - ElMessage({ - type: 'success', - message: '编辑成功' - }) - }else{ - ElMessage({ - type: 'warning', - message: res.data.msg, - }); - } - } - }else{ - ElMessage({ - type: 'warning', - message: '请完善基本信息', - }); - } +const picSize = async (rawFile: any) => { + if (rawFile.size / 1024 / 1024 > 5) { + ElMessage({ + type: 'warning', + message: '文件大小不能超过5M。' + }); + return false + } +}; + +const handlePictureCardPreview = (uploadFile: { url: string }) => { + identifyDialogState.dialogImageUrl = uploadFile.url!; + identifyDialogState.dialogVisible = true; +}; + +const upload = async (params: any) => { + // const formData = new FormData(); + // formData.append('file', state.fileList[0].raw); + let reader = new FileReader(); + reader.readAsArrayBuffer(params.file); + + reader.onload = async () => { + axios.post(identifyDialogState.uploadUrl, reader.result, { + headers: {uid: Number(userInfos.value.uid), tk: Cookies.get('token')} + }).then(res => { + if (res.data.code === 100) { + console.log(res.data.data) + } + }); + }; +}; + +const handleAvatarSuccess: UploadProps['onSuccess'] = ( + res, + uploadFile +) => { + if (res.code == 100) { + identifyDialogState.identifyForm.fileData = res.data + }else{ + ElMessage({ + type: 'warning', + message: res.msg }) + } +} +const handleRemove: UploadProps['onRemove'] = (uploadFile, uploadFiles) => { + console.log(uploadFile, uploadFiles) +} + +const onSubmitIdentify = () => { + identifyFormRef.value.validate(async (valid: boolean) => { + if (valid) { + if (identifyDialogState.title === '新增') { + let {hazopId, jhaId, phaId, sclId, analogyId, ...data} = identifyDialogState.identifyForm + let res = await identifyApi().addIdentify(data); + if (res.data.code === 100) { + emit('refresh', 1, res.data.data) + identifyDialogState.identifyDialogVisible = false; + ElMessage({ + type: 'success', + message: '新增成功' + }) + identifyDialogState.fileList = [] + } else { + ElMessage({ + type: 'warning', + message: res.data.msg, + }); + } + } else { + if(identifyDialogState.fileList.length == 0){ + identifyDialogState.identifyForm.fileData = '' + } + let res = await identifyApi().modIdentify(identifyDialogState.identifyForm) + if (res.data.code === 100) { + emit('refresh', 2, identifyDialogState.identifyForm) + identifyDialogState.identifyDialogVisible = false; + ElMessage({ + type: 'success', + message: '编辑成功' + }) + identifyDialogState.fileList = [] + } else { + ElMessage({ + type: 'warning', + message: res.data.msg, + }); + } + } + } else { + ElMessage({ + type: 'warning', + message: '请完善基本信息', + }); + } + }) } const emit = defineEmits(['refresh']) defineExpose({ - showIdentifyDialog + showIdentifyDialog }) </script> diff --git a/src/views/analyse/identify/components/identifyQuery.vue b/src/views/analyse/identify/components/identifyQuery.vue index 7aed26a..c8bba20 100644 --- a/src/views/analyse/identify/components/identifyQuery.vue +++ b/src/views/analyse/identify/components/identifyQuery.vue @@ -152,10 +152,9 @@ const showIdentifyQuery = (title: string, value: IdentifyType, planList: PlanType [], personList: AllPersonListType []) => { identifyQueryState.identifyQueryVisible = true; identifyQueryState.identifyForm = value; - identifyQueryState.list = value.factorQueryDTOList identifyQueryState.planList = planList; identifyQueryState.personList = personList - identifyQueryState.list = value.factorQueryDTOList; + identifyQueryState.list = value.factorQueryDTOList // getAssessInfo(identifyQueryState.identifyQueryForm.id); for(let i in identifyQueryState.identifyQueryForm){ if(isValidKey(i, identifyQueryState.identifyQueryForm)){ diff --git a/src/views/analyse/identify/index.ts b/src/views/analyse/identify/index.ts index 66859ae..1bc167b 100644 --- a/src/views/analyse/identify/index.ts +++ b/src/views/analyse/identify/index.ts @@ -85,8 +85,18 @@ id: number, name: string, } +declare interface file { + url: string; +} declare interface IdentifyDialogType { + fileList: Array<file>, + imgLimit: number, + uploadUrl: string, + isOverSize: boolean, + header:{} + dialogVisible: Boolean, + dialogImageUrl: string | null, title: string, method: null | number, evaluateMethod: null | number, @@ -125,6 +135,7 @@ sclCheckStandard: string, sclCheckUnstandard: string, sclCheckResult: string, + fileData: string }, identifyFormRules: { diff --git a/src/views/analyse/identify/index.vue b/src/views/analyse/identify/index.vue index 62b0508..bd98c0c 100644 --- a/src/views/analyse/identify/index.vue +++ b/src/views/analyse/identify/index.vue @@ -69,9 +69,9 @@ </el-table-column> <el-table-column label="操作" width="250"> <template #default="scope"> - <el-button size="small" text type="primary" v-if="scope.row.planExecStatus === 2 && scope.row.identificationUserId == identifyState.user" @click="accessIdentify(scope.row)">提交</el-button> + <el-button size="small" text type="primary" v-if="scope.row.planExecStatus === 2 && scope.row.identityUsers?.find(i=>i.identificationUserId== identifyState.user)" @click="accessIdentify(scope.row)">提交</el-button> <el-button size="small" text type="primary" v-if="scope.row.planExecStatus === 3 || scope.row.planExecStatus === 4" :icon="View" @click="openIdentifyQuery('查看', scope.row)">查看</el-button> - <el-button size="small" text type="primary" v-if="scope.row.planExecStatus === 2 && scope.row.identificationUserId == identifyState.user" :icon="Edit" @click="openIdentifyQuery('辨识', scope.row)">辨识</el-button> + <el-button size="small" text type="primary" v-if="scope.row.planExecStatus === 2 && scope.row.identityUsers?.find(i=>i.identificationUserId== identifyState.user)" :icon="Edit" @click="openIdentifyQuery('辨识', scope.row)">辨识</el-button> <!-- <el-button size="small" text type="primary" v-if="scope.row.planExecStatus === 2" :icon="Edit" @click="openIdentifyQuery('编辑', scope.row)">编辑</el-button>--> </template> </el-table-column> diff --git a/src/views/analyse/plan/components/planDialog.vue b/src/views/analyse/plan/components/planDialog.vue index aab3fce..1934288 100644 --- a/src/views/analyse/plan/components/planDialog.vue +++ b/src/views/analyse/plan/components/planDialog.vue @@ -1,80 +1,109 @@ <template> - <div class="system-menu-dialog-container"> - <el-dialog :title="planDialogState.title" v-model="planDialogState.planDialogVisible" width="600px"> - <el-form ref="planFormRef" :rules="planDialogState.planFormRules" :model="planDialogState.planForm" size="default" label-width="120px"> - <el-row :gutter="35"> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="风险分析单元" prop="riskUnitId"> - <el-select :disabled="planDialogState.disabled" v-model="planDialogState.planForm.riskUnitId" style="width:100%" placeholder="风险分析单元" clearable> - <el-option v-for="item in planDialogState.riskUnitList" :key="item.id" :label="item.riskName" :value="item.id"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="评估计划名称" prop="assessPlanName"> - <el-input :disabled="planDialogState.disabled" v-model="planDialogState.planForm.assessPlanName" placeholder="评估计划名称" clearable></el-input> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="评估时间" prop="assessTime"> - <el-date-picker - :disabled="planDialogState.disabled" - type="datetimerange" - v-model="planDialogState.planForm.assessTime" - start-placeholder="开始时间" - end-placeholder="结束时间" - format="YYYY-MM-DD HH:mm:ss" - value-format="YYYY-MM-DD HH:mm:ss" - popper-class="pickTime" - @change="formatTime"> - </el-date-picker> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> - <el-form-item label="计划制定人" prop="planUserId"> - <el-select :disabled="planDialogState.disabled" v-model="planDialogState.planForm.planUserId" style="width:100%" placeholder="计划制定人" clearable> - <el-option v-for="item in planDialogState.personList" :key="item.id" :label="item.realName" :value="item.id"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20 valueSelect"> - <el-form-item label="辨识专家" prop="identificationUserId"> - <el-select :disabled="planDialogState.disabled" v-model="planDialogState.planForm.identificationUserId" style="width:100%" :teleported="false" placeholder="辨识专家" clearable> - <el-option v-for="item in planDialogState.bsExperts" :key="item.id" :label="item.realName" :value="item.id"> - <div class="valueTable"> - <div><div>姓名:</div><span>{{item.realName}}</span></div> - <div><div>专业:</div><span>{{item.userIdentities?.map(i=>i.userIdentity).join(',')}}</span></div> - </div> - </el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20 valueSelect"> - <el-form-item label="评价专家" prop="evaluateUserId"> - <el-select :disabled="planDialogState.disabled" v-model="planDialogState.planForm.evaluateUserId" style="width:100%" :teleported="false" placeholder="评价专家" clearable> - <el-option v-for="item in planDialogState.pjExperts" :key="item.id" :label="item.realName" :value="item.id"> - <div class="valueTable"> - <div><div>姓名:</div><span>{{item.realName}}</span></div> - <div><div>专业:</div><span>{{item.userIdentities?.map(i=>i.userIdentity).join(',')}}</span></div> - </div> - </el-option> - </el-select> - </el-form-item> - </el-col> - </el-row> - </el-form> - <template #footer> + <div class="system-menu-dialog-container"> + <el-dialog :title="planDialogState.title" v-model="planDialogState.planDialogVisible" width="600px"> + <el-form ref="planFormRef" :rules="planDialogState.planFormRules" :model="planDialogState.planForm" size="default" + label-width="120px"> + <el-row :gutter="35"> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="风险分析单元" prop="riskUnitId"> + <el-select :disabled="planDialogState.disabled" v-model="planDialogState.planForm.riskUnitId" + style="width:100%" placeholder="风险分析单元" clearable> + <el-option v-for="item in planDialogState.riskUnitList" :key="item.id" :label="item.riskName" + :value="item.id"></el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="评估计划名称" prop="assessPlanName"> + <el-input :disabled="planDialogState.disabled" v-model="planDialogState.planForm.assessPlanName" + placeholder="评估计划名称" clearable></el-input> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="评估时间" prop="assessTime"> + <el-date-picker + :disabled="planDialogState.disabled" + type="datetimerange" + v-model="planDialogState.planForm.assessTime" + start-placeholder="开始时间" + end-placeholder="结束时间" + format="YYYY-MM-DD HH:mm:ss" + value-format="YYYY-MM-DD HH:mm:ss" + popper-class="pickTime" + @change="formatTime"> + </el-date-picker> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="计划制定人" prop="planUserId"> + <el-select :disabled="planDialogState.disabled" v-model="planDialogState.planForm.planUserId" + style="width:100%" placeholder="计划制定人" clearable> + <el-option v-for="item in planDialogState.personList" :key="item.id" :label="item.realName" + :value="item.id"></el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> + <el-form-item label="辨识类型" prop="identificationType"> + <el-select :disabled="planDialogState.disabled" v-model="planDialogState.planForm.identificationType" + style="width:100%" placeholder="辨识类型" clearable> + <el-option v-for="item in planDialogState.typeList" :key="item.value" :label="item.name" + :value="item.value"></el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20 valueSelect"> + <el-form-item label="辨识专家" prop="identificationUserInsert"> + <el-select :disabled="planDialogState.disabled" multiple v-model="planDialogState.planForm.identificationUserInsert" + style="width:100%" :teleported="false" placeholder="辨识专家" clearable> + <el-option v-for="item in planDialogState.bsExperts" :key="item.id" :label="item.realName" + :value="item.id"> + <div class="valueTable"> + <div> + <div>姓名:</div> + <span>{{ item.realName }}</span></div> + <div> + <div>专业:</div> + <span>{{ item.userIdentities?.map(i => i.userIdentity).join(',') }}</span></div> + </div> + </el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20 valueSelect"> + <el-form-item label="评价专家" prop="evaluateUserInsert"> + <el-select :disabled="planDialogState.disabled" multiple v-model="planDialogState.planForm.evaluateUserInsert" + style="width:100%" :teleported="false" placeholder="评价专家" clearable> + <el-option v-for="item in planDialogState.pjExperts" :key="item.id" :label="item.realName" + :value="item.id"> + <div class="valueTable"> + <div> + <div>姓名:</div> + <span>{{ item.realName }}</span></div> + <div> + <div>专业:</div> + <span>{{ item.userIdentities?.map(i => i.userIdentity).join(',') }}</span></div> + </div> + </el-option> + </el-select> + </el-form-item> + </el-col> + </el-row> + </el-form> + <template #footer> <span class="dialog-footer"> - <el-button @click="planDialogState.planDialogVisible = !planDialogState.planDialogVisible" size="default">取 消</el-button> - <el-button v-if="!planDialogState.disabled" type="primary" @click="onSubmitPlan" size="default">确定</el-button> + <el-button @click="planDialogState.planDialogVisible = !planDialogState.planDialogVisible" + size="default">取 消</el-button> + <el-button v-if="!planDialogState.disabled" type="primary" @click="onSubmitPlan" + size="default">确定</el-button> </span> - </template> - </el-dialog> - </div> + </template> + </el-dialog> + </div> </template> <script setup lang="ts"> -import { reactive, ref, getCurrentInstance } from "vue"; +import {reactive, ref, getCurrentInstance} from "vue"; import {ElMessage} from "element-plus"; import {planApi} from "/@/api/analyse/plan"; import {isValidKey} from "/@/utils/methods"; @@ -82,174 +111,189 @@ const planFormRef = ref() const planDialogState = reactive<PlanDialogType>({ - title: '', - disabled: false, - planDialogVisible: false, - planForm: { - riskUnitId: null, - planUserId: null, - assessPlanName: '', - assessTime: [], - assessStartTime: '', - assessEndTime: '', - identificationUserId: null, - evaluateUserId: null, - riskType: 2 + title: '', + disabled: false, + planDialogVisible: false, + planForm: { + riskUnitId: null, + planUserId: null, + assessPlanName: '', + assessTime: [], + identificationType: null, + assessStartTime: '', + assessEndTime: '', + identificationUserInsert: [], + evaluateUserInsert: [], + riskType: 2 + }, + planFormRules: { + riskUnitId: [{required: true, message: '请选择风险分析单元', trigger: 'change'}], + assessPlanName: [{required: true, message: '请填写评估计划名称', trigger: 'blur'}], + assessTime: [{required: true, message: '请选择评估时间', trigger: 'blur'}], + planUserId: [{required: true, message: '请选择计划制定人', trigger: 'change'}], + identificationType: [{required: true, message: '请选择辨识类型', trigger: 'change'}], + identificationUserInsert: [{required: true, message: '请选择辨识专家', trigger: 'change'}], + evaluateUserInsert: [{required: true, message: '请选择评价专家', trigger: 'change'}], + }, + riskUnitList: [], + personList: [], + typeList: [ + { + name: '线上专家', + value: 1 }, - planFormRules: { - riskUnitId: [{ required: true, message: '请选择风险分析单元', trigger: 'change' }], - assessPlanName: [{ required: true, message: '请填写评估计划名称', trigger: 'blur' }], - assessTime: [{ required: true, message: '请选择评估时间', trigger: 'blur' }], - planUserId: [{ required: true, message: '请选择计划制定人', trigger: 'change' }], - identificationUserId: [{ required: true, message: '请选择辨识专家', trigger: 'change' }], - evaluateUserId: [{ required: true, message: '请选择评价专家', trigger: 'change' }], + { + name: '现场专家', + value: 2 }, - riskUnitList: [], - personList: [], - bsExperts: [], - pjExperts: [] + { + name: '线上+现场', + value: 3 + } + ], + bsExperts: [], + pjExperts: [] }) -const showPlanDialog = (title: string, value: PlanType, riskUnitList: RiskUnitType [], personList: SystemPersonType [],bsExperts:[],pjExperts:[]) => { - planDialogState.planDialogVisible = true; - planDialogState.riskUnitList = riskUnitList; - planDialogState.personList = personList; - planDialogState.bsExperts = bsExperts; - planDialogState.pjExperts = pjExperts; - planDialogState.disabled = false - setTimeout(() => { - planFormRef.value.clearValidate(); - }); - if(title === '新增'){ - planDialogState.title = '新增'; - planDialogState.planForm = { - riskUnitId: null, - planUserId: null, - assessPlanName: '', - assessTime: [], - assessStartTime: '', - assessEndTime: '', - identificationUserId: null, - evaluateUserId: null, - riskType: 2 - }; - }else if(title === '查看'){ - planDialogState.title = '查看'; - planDialogState.disabled = true - for(let i in planDialogState.planForm){ - if(isValidKey(i, planDialogState.planForm)){ - planDialogState.planForm[i] = value[i] - } - } - planDialogState.planForm.assessTime=[value.assessStartTime, value.assessEndTime] - console.log(value,planDialogState.planForm.assessTime,'time') - }else{ - planDialogState.title = '编辑'; - planDialogState.planForm.id = value.id - for(let i in planDialogState.planForm){ - if(isValidKey(i, planDialogState.planForm)){ - planDialogState.planForm[i] = value[i] - } - } - planDialogState.planForm.assessTime=[value.assessStartTime, value.assessEndTime] +const showPlanDialog = (title: string, value: PlanType, riskUnitList: RiskUnitType [], personList: SystemPersonType [], bsExperts: [], pjExperts: []) => { + planDialogState.planDialogVisible = true; + planDialogState.riskUnitList = riskUnitList; + planDialogState.personList = personList; + planDialogState.bsExperts = bsExperts; + planDialogState.pjExperts = pjExperts; + planDialogState.disabled = false + setTimeout(() => { + planFormRef.value.clearValidate(); + }); + if (title === '新增') { + planDialogState.title = '新增'; + planDialogState.planForm = { + riskUnitId: null, + planUserId: null, + assessPlanName: '', + assessTime: [], + identificationType: null, + assessStartTime: '', + assessEndTime: '', + identificationUserInsert: [], + evaluateUserInsert: [], + riskType: 2 } + } else { + if(title === '查看'){ + planDialogState.title = '查看' + planDialogState.disabled = true + }else{ + planDialogState.title = '编辑' + planDialogState.planForm.id = value.id + } + for (let i in planDialogState.planForm) { + if (isValidKey(i, planDialogState.planForm)) { + planDialogState.planForm[i] = value[i] + } + } + planDialogState.planForm.identificationUserInsert = value.identityUsers?.map(i=>i.identificationUserId) + planDialogState.planForm.evaluateUserInsert = value.evaluateUsers?.map(i=>i.evaluateUserId) + planDialogState.planForm.assessTime = [value.assessStartTime, value.assessEndTime] + } }; const formatTime = () => { - planDialogState.planForm.assessStartTime = planDialogState.planForm.assessTime == [] ? '' : planDialogState.planForm.assessTime[0] - planDialogState.planForm.assessEndTime = planDialogState.planForm.assessTime == [] ? '' : planDialogState.planForm.assessTime[1] + planDialogState.planForm.assessStartTime = planDialogState.planForm.assessTime == [] ? '' : planDialogState.planForm.assessTime[0] + planDialogState.planForm.assessEndTime = planDialogState.planForm.assessTime == [] ? '' : planDialogState.planForm.assessTime[1] }; const onSubmitPlan = () => { - planFormRef.value.validate(async(valid: boolean) => { - if(valid){ - formatTime() - delete planDialogState.planForm.assessTime - if(planDialogState.title === '新增'){ - let res = await planApi().addPlan(planDialogState.planForm); - if(res.data.code === 100){ - emit('refresh') - planDialogState.planDialogVisible = false; - ElMessage({ - type: 'success', - message: '新增成功' - }) - }else{ - ElMessage({ - type: 'warning', - message: res.data.msg, - }); - } - }else{ - let res = await planApi().modPlan(planDialogState.planForm) - if(res.data.code === 100){ - emit('refresh') - planDialogState.planDialogVisible = false; - ElMessage({ - type: 'success', - message: '编辑成功' - }) - }else{ - ElMessage({ - type: 'warning', - message: res.data.msg, - }); - } - } - }else{ - ElMessage({ - type: 'warning', - message: '请完善基本信息', - }); + planFormRef.value.validate(async (valid: boolean) => { + if (valid) { + formatTime() + delete planDialogState.planForm.assessTime + if (planDialogState.title === '新增') { + let res = await planApi().addPlan(planDialogState.planForm); + if (res.data.code === 100) { + emit('refresh') + planDialogState.planDialogVisible = false; + ElMessage({ + type: 'success', + message: '新增成功' + }) + } else { + ElMessage({ + type: 'warning', + message: res.data.msg, + }); } - }) + } else { + let res = await planApi().modPlan(planDialogState.planForm) + if (res.data.code === 100) { + emit('refresh') + planDialogState.planDialogVisible = false; + ElMessage({ + type: 'success', + message: '编辑成功' + }) + } else { + ElMessage({ + type: 'warning', + message: res.data.msg, + }); + } + } + } else { + ElMessage({ + type: 'warning', + message: '请完善基本信息', + }); + } + }) } const emit = defineEmits(['refresh']) defineExpose({ - showPlanDialog + showPlanDialog }) </script> <style lang="scss" scoped> - ::v-deep(.pickTime){ - position: absolute !important; - top: 0 !important; - } - .valueSelect{ - ::v-deep(.el-popper){ - .el-select-dropdown__item{ - width: 100%; - height: auto; - white-space: normal; - word-break: break-all; - word-wrap: break-word; - overflow: auto; - padding: 10px 25px; - border-bottom: 1px solid #ccc; +::v-deep(.pickTime) { + position: absolute !important; + top: 0 !important; +} - .valueTable{ - &>div{ - line-height: 1.5; - margin-bottom: 6px; - display: flex; - align-items: center; +.valueSelect { + ::v-deep(.el-popper) { + .el-select-dropdown__item { + width: 100%; + height: auto; + white-space: normal; + word-break: break-all; + word-wrap: break-word; + overflow: auto; + padding: 10px 25px; + border-bottom: 1px solid #ccc; - div{ - color: #999; - } + .valueTable { + & > div { + line-height: 1.5; + margin-bottom: 6px; + display: flex; + align-items: center; - span{ - font-weight: bolder; - } + div { + color: #999; + } - &:last-of-type{ - margin-bottom: 0; - } - } + span { + font-weight: bolder; + } + + &:last-of-type { + margin-bottom: 0; } } } } + } +} </style> diff --git a/src/views/analyse/plan/index.ts b/src/views/analyse/plan/index.ts index 405aac0..827d022 100644 --- a/src/views/analyse/plan/index.ts +++ b/src/views/analyse/plan/index.ts @@ -17,16 +17,20 @@ reSendTitle:string reSendDialogVisible: boolean reSendForm: { - id: null | number, - identificationUserId: null | number, - evaluateUserId: null | number, + riskAssessPlanId: null | number, + userIds: [], + userType: null | number }, rules: object } -declare interface SystemPersonType { +declare interface SystemPersonType { id: number, realName: string, +} +declare interface TypeListType { + value: number | null + name: string } declare interface PlanType { @@ -57,10 +61,11 @@ planUserId: number | null, assessPlanName: string, assessTime: string[], + identificationType: number | null, assessStartTime: string, assessEndTime: string, - identificationUserId: number | null, - evaluateUserId: number | null, + identificationUserInsert: [] + evaluateUserInsert: [] riskType: number | null }, planFormRules: { @@ -68,6 +73,7 @@ }, riskUnitList: Array<RiskUnitType> personList: Array<SystemPersonType> + typeList: Array<TypeListType> bsExperts: [] pjExperts: [] } diff --git a/src/views/analyse/plan/index.vue b/src/views/analyse/plan/index.vue index 8b4814d..dce8efe 100644 --- a/src/views/analyse/plan/index.vue +++ b/src/views/analyse/plan/index.vue @@ -68,11 +68,11 @@ <el-button size="small" text type="primary" v-if="scope.row.planSellStatus === 1" @click="accessPlan(scope.row)">派发</el-button> <el-button size="small" text type="primary" :icon="View" @click="openPlanDialog('查看', scope.row)">查看</el-button> <el-button v-if="scope.row.planSellStatus === 1" size="small" text type="primary" :icon="Edit" @click="openPlanDialog('修改', scope.row)">编辑</el-button> - <el-button v-if="scope.row.identificationUserId == planState.user" size="small" text type="primary" :icon="Edit" @click="refuseIdentify(scope.row)">拒绝辨识</el-button> - <el-button v-if="scope.row.evaluateUserId == planState.user" size="small" text type="primary" :icon="Edit" @click="refuseEvaluate(scope.row)">拒绝评价</el-button> + <el-button v-if="scope.row.identityUsers?.find(i=>i.identificationUserId == planState.user)" size="small" text type="primary" :icon="Edit" @click="refuseIdentify(scope.row)">拒绝辨识</el-button> + <el-button v-if="scope.row.evaluateUsers?.find(i=>i.evaluateUserId== planState.user)" size="small" text type="primary" :icon="Edit" @click="refuseEvaluate(scope.row)">拒绝评价</el-button> <!-- <el-button v-if="scope.row.sceneUserId == planState.user" size="small" text type="primary" :icon="Edit" @click="refuseScene(scope.row)">拒绝现场</el-button>--> - <el-button v-if="scope.row.identificationUserId == null" size="small" text type="primary" :icon="Edit" @click="reSendJob(scope.row,'identification')">重新指派辨识</el-button> - <el-button v-if="scope.row.evaluateUserId == null" size="small" text type="primary" :icon="Edit" @click="reSendJob(scope.row,'evaluate')">重新指派评价</el-button> + <el-button v-if="!scope.row.identityUsers" size="small" text type="primary" :icon="Edit" @click="reSendJob(scope.row,1)">重新指派辨识</el-button> + <el-button v-if="!scope.row.evaluateUsers" size="small" text type="primary" :icon="Edit" @click="reSendJob(scope.row,2)">重新指派评价</el-button> <el-button v-if="scope.row.planSellStatus === 1" size="small" text type="danger" :icon="Delete" @click="onDelPlan(scope.row)">删除</el-button> </template> </el-table-column> @@ -88,7 +88,7 @@ <el-dialog class="chooseExpert" :title="planState.reSendTitle" v-model="planState.reSendDialogVisible" width="50%"> <el-form ref="ruleFormRef" :rules="planState.rules" :model="planState.reSendForm" label-width="120px"> <el-form-item v-if="planState.reSendTitle == '指派辨识专家'" label="选择辨识专家" prop="identificationUserId" class="valueSelect"> - <el-select v-model="planState.reSendForm.identificationUserId" style="width:100%" :teleported="false" placeholder="辨识专家" clearable> + <el-select v-model="planState.reSendForm.userIds" multiple style="width:100%" :teleported="false" placeholder="辨识专家" clearable> <el-option v-for="item in planState.bsExperts" :key="item.id" :label="item.realName" :value="item.id"> <div class="valueTable"> <div><div>姓名:</div><span>{{item.realName}}</span></div> @@ -98,7 +98,7 @@ </el-select> </el-form-item> <el-form-item v-if="planState.reSendTitle == '指派评价专家'" label="选择评价专家" prop="evaluateUserId" class="valueSelect"> - <el-select v-model="planState.reSendForm.evaluateUserId" style="width:100%" :teleported="false" placeholder="评价专家" clearable> + <el-select v-model="planState.reSendForm.userIds" multiple style="width:100%" :teleported="false" placeholder="评价专家" clearable> <el-option v-for="item in planState.pjExperts" :key="item.id" :label="item.realName" :value="item.id"> <div class="valueTable"> <div><div>姓名:</div><span>{{item.realName}}</span></div> @@ -168,13 +168,12 @@ reSendTitle:'', reSendDialogVisible: false, reSendForm: { - id: null, - identificationUserId: null, - evaluateUserId: null + riskAssessPlanId: null, + userIds: [], + userType: null }, rules: { - identificationUserId: [{ required: true, message: '请选择辨识专家', trigger: 'blur' }], - evaluateUserId: [{ required: true, message: '请选择评价专家', trigger: 'blur' }] + userIds: [{ required: true, message: '请选择专家', trigger: 'blur' }] } // deviceUnitList: [ // {id:1, name: '台'}, @@ -284,13 +283,13 @@ }); } -const reSendJob= async(val: PlanType,type:string)=>{ +const reSendJob= async(val: PlanType,type:number | null)=>{ planState.reSendForm = { - id: val.id, - identificationUserId: null, - evaluateUserId: null + riskAssessPlanId: val.id, + userIds: [], + userType: type } - if(type=='identification'){ + if(type==1){ planState.reSendTitle = '指派辨识专家' }else{ planState.reSendTitle = '指派评价专家' @@ -316,9 +315,9 @@ } planState.reSendForm = { - id: null, - identificationUserId: null, - evaluateUserId: null + riskAssessPlanId: null, + userIds: [], + userType: null }, planState.reSendDialogVisible = false getPlanData() diff --git a/src/views/analyse/record/index.vue b/src/views/analyse/record/index.vue index b76728c..1c00ca4 100644 --- a/src/views/analyse/record/index.vue +++ b/src/views/analyse/record/index.vue @@ -112,7 +112,6 @@ import Cookies from "js-cookie"; import {recordApi} from "/@/api/analyse/record"; - const recordDialogRef = ref(); const recordState = reactive<RecordStateType>({ recordData: [], -- Gitblit v1.9.2