From 0c0fa2483fd431104f6498e40fffd983d913dce2 Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: 星期二, 25 四月 2023 17:11:09 +0800
Subject: [PATCH] 修改
---
src/views/system/role/index.vue | 12
src/views/analyse/applyReview/components/reportDialog.vue | 7
src/views/experiment/project/index.ts | 21
src/views/analyse/assessApply/index.vue | 2
src/views/experiment/project/components/selectEmergency.vue | 181 ++++++++++
src/views/analyse/evaluate/index.ts | 5
src/views/analyse/riskUnit/index.ts | 3
src/views/experiment/developing/index.vue | 14
src/views/basic/equipment/index.vue | 2
src/views/analyse/plan/components/planDialog.vue | 36 +
src/views/experiment/project/components/applyDialog.vue | 4
src/views/analyse/plan/index.vue | 3
src/views/loginPage/loginPage.vue | 5
src/views/experiment/developing/components/developDialog.vue | 239 +++++++++----
src/views/experiment/project/components/selectDanger.vue | 6
src/views/experiment/project/index.vue | 46 ++
src/views/analyse/identify/index.ts | 3
src/views/analyse/identify/components/identifyDialog.vue | 8
src/views/analyse/identify/index.vue | 12
src/api/basic/unit/index.ts | 9
src/views/analyse/evaluate/index.vue | 151 +++++--
src/views/analyse/identify/components/identifyQuery.vue | 1
src/assets/menu/company.png | 0
src/views/analyse/assessApply/components/riskDialog.vue | 58 ++
src/views/analyse/assessApply/components/riskUnitDialog.vue | 86 ++--
src/views/experiment/project/components/projectDialog.vue | 158 ++++----
26 files changed, 763 insertions(+), 309 deletions(-)
diff --git a/src/api/basic/unit/index.ts b/src/api/basic/unit/index.ts
index 209f332..3b6f163 100644
--- a/src/api/basic/unit/index.ts
+++ b/src/api/basic/unit/index.ts
@@ -34,6 +34,15 @@
});
},
+ deleteRiskUnitById: (params: object) => {
+ return request({
+ url: import.meta.env.VITE_API_URL + '/risk/delete/deleteRiskUnit',
+ method: 'post',
+ data: params
+ });
+ },
+
+
getAllUnit: () => {
return request({
url: import.meta.env.VITE_API_URL + '/basic/select/listRiskUnit',
diff --git a/src/assets/menu/company.png b/src/assets/menu/company.png
index 46b0568..b8f34a2 100644
--- a/src/assets/menu/company.png
+++ b/src/assets/menu/company.png
Binary files differ
diff --git a/src/views/analyse/applyReview/components/reportDialog.vue b/src/views/analyse/applyReview/components/reportDialog.vue
index cd650e8..db66f52 100644
--- a/src/views/analyse/applyReview/components/reportDialog.vue
+++ b/src/views/analyse/applyReview/components/reportDialog.vue
@@ -178,7 +178,8 @@
<td class="w-25 m-color">{{item.approveStage}}</td>
<td class="w-25">{{item.approvePerson}}</td>
<td class="w-25 m-color">审批结果</td>
- <td class="w-25">{{item.approveStatus==1?'未审批':item.approveStatus==2?'通过':'未通过'}}</td>
+<!-- <td class="w-25">{{item.approveStatus==1?'未审批':item.approveStatus==2?'通过':'未通过'}}</td>-->
+ <td class="w-25" :class="item.approveStatus==3?'redTit':''">{{item.approveStatus==1?'未审批':item.approveStatus==2?'通过':'未通过'}}</td>
</tr>
<tr>
<td class="w-25 m-color autoheight">审批意见</td>
@@ -504,6 +505,10 @@
width: 75%;
}
+ &.redTit{
+ color: red;
+ }
+
&.autoheight {
min-height: 44px;
height: auto;
diff --git a/src/views/analyse/assessApply/components/riskDialog.vue b/src/views/analyse/assessApply/components/riskDialog.vue
index bbe6901..acaf520 100644
--- a/src/views/analyse/assessApply/components/riskDialog.vue
+++ b/src/views/analyse/assessApply/components/riskDialog.vue
@@ -2,7 +2,7 @@
<div class="system-menu-dialog-container">
<el-dialog title="管理实验现实风险" v-model="assessApplyDialogState.assessApplyDialogVisible" width="60%">
<div>
- <el-button @click="addUnit()" type="primary" style="margin-bottom: 20px" size="default">增加风险分析单元</el-button>
+ <el-button @click="openUnitDialog('新增','', assessApplyDialogState.id, assessApplyDialogState.liabilityUserId)" type="primary" style="margin-bottom: 20px" size="default">增加风险分析单元</el-button>
</div>
<el-table ref="multipleTableRef" :data="assessApplyDialogState.riskUnitData" style="width: 100%" :header-cell-style="{ background: '#fafafa' }">
<el-table-column prop="riskCode" label="风险单元编号"/>
@@ -15,12 +15,19 @@
<el-table-column prop="riskUnitType" label="风险单元类型"/>
<el-table-column prop="riskUnitType" label="负责人">
<template #default="scope">
- <span>{{`${assessApplyDialogState.allPersonList.find(item =>item.id === scope.row.liabilityUserId)?.personName || ''}`}}</span>
+ <span>{{`${assessApplyDialogState.allPersonList.find(item =>item.id === scope.row.liabilityUserId)?.realName || ''}`}}</span>
</template>
</el-table-column>
<el-table-column prop="evaluateStatus" label="是否评价">
<template #default="scope">
<span>{{scope.row.evaluateStatus == 1?'未评价':scope.row.evaluateStatus == 2?'已评价':'--'}}</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="操作" width="150" align="center">
+ <template #default="scope">
+ <el-button size="default" text type="primary" @click="openUnitDialog('查看', scope.row, assessApplyDialogState.id, assessApplyDialogState.liabilityUserId)">查看</el-button>
+ <el-button size="default" text type="primary" @click="openUnitDialog('编辑', scope.row, assessApplyDialogState.id, assessApplyDialogState.liabilityUserId)">编辑</el-button>
+ <el-button size="default" text type="danger" @click="deleteUnit(scope.$index, scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
@@ -41,6 +48,9 @@
import {personApi} from "/@/api/basic/person";
import {riskUnitApi} from "/@/api/analyse/riskUnit";
import {unitApi} from "/@/api/basic/unit";
+import {userApi} from "/@/api/systemManage/user";
+import {ElMessageBox} from "element-plus/es";
+import {identifyApi} from "/@/api/analyse/identify";
const RiskUnitDialog = defineAsyncComponent(() => import('./riskUnitDialog.vue'));
const assessApplyDialogState = reactive<AssessApplyDialogStateType>({
@@ -67,8 +77,8 @@
getRiskData()
};
-const addUnit = (id: number, value: RiskUnitType) => {
- riskUnitDialogRef.value.showRiskUnitDialog(assessApplyDialogState.id, assessApplyDialogState.liabilityUserId, assessApplyDialogState.basicUnitList, assessApplyDialogState.allPersonList, assessApplyDialogState.allRiskTypeList);
+const openUnitDialog = (title: string, val, id: number, userId: number) => {
+ riskUnitDialogRef.value.showRiskUnitDialog(title, val, id, userId, assessApplyDialogState.basicUnitList, assessApplyDialogState.allPersonList, assessApplyDialogState.allRiskTypeList);
};
const getRiskData = async () => {
@@ -96,8 +106,16 @@
};
const getAllPersonList = async () => {
- let res = await personApi().getAllPerson();
- if(res.data.code === 100){
+ let res = await userApi().getUserList({
+ pageIndex: 1,
+ pageSize: 99999,
+ searchParams:{
+ roleId: null,
+ name: '',
+ realName: ''
+ }
+ });
+ if(res.data.code === 200){
assessApplyDialogState.allPersonList = JSON.parse(JSON.stringify(res.data.data));
}else{
ElMessage({
@@ -119,6 +137,34 @@
}
}
+const deleteUnit = (index: number, val: IdentifyType) => {
+ ElMessageBox.confirm(`此操作将永久删除该风险单元,是否继续?`, '提示', {
+ confirmButtonText: '确认',
+ cancelButtonText: '取消',
+ type: 'warning'
+ })
+ .then(async () => {
+ let data = { id: val.id }
+ let res = await unitApi().deleteRiskUnitById(data);
+ if (res.data.code === 100) {
+ (<Array<IdentifyType>>assessApplyDialogState.riskUnitData).splice(index, 1)
+ ElMessage({
+ type: 'success',
+ duration: 2000,
+ message: '删除成功'
+ });
+ } else {
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ });
+ }
+ })
+ .catch((error) => {
+ console.log(error);
+ });
+};
+
const emit = defineEmits(['refresh'])
defineExpose({
diff --git a/src/views/analyse/assessApply/components/riskUnitDialog.vue b/src/views/analyse/assessApply/components/riskUnitDialog.vue
index fe72aae..851d50b 100644
--- a/src/views/analyse/assessApply/components/riskUnitDialog.vue
+++ b/src/views/analyse/assessApply/components/riskUnitDialog.vue
@@ -5,43 +5,43 @@
<el-row :gutter="35">
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
<el-form-item label="风险单元编号" prop="riskCode">
- <el-input v-model="riskUnitDialogState.riskUnitForm.riskCode" placeholder="风险单元编号" clearable class="input-length"></el-input>
+ <el-input v-model="riskUnitDialogState.riskUnitForm.riskCode" :disabled="riskUnitDialogState.disabled" placeholder="风险单元编号" clearable class="input-length"></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="riskName">
- <el-input v-model="riskUnitDialogState.riskUnitForm.riskName" placeholder="风险单元名称" clearable class="input-length"></el-input>
+ <el-input v-model="riskUnitDialogState.riskUnitForm.riskName" :disabled="riskUnitDialogState.disabled" placeholder="风险单元名称" clearable class="input-length"></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="riskUnitTypeId">
- <el-select v-model="riskUnitDialogState.riskUnitForm.riskUnitTypeId" placeholder="风险单元类型" clearable class="input-length">
+ <el-select v-model="riskUnitDialogState.riskUnitForm.riskUnitTypeId" :disabled="riskUnitDialogState.disabled" placeholder="风险单元类型" clearable class="input-length">
<el-option v-for="item in riskUnitDialogState.riskTypeList" :key="item.id" :label="item.riskType" :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="liabilityUserId">
- <el-select v-model="riskUnitDialogState.riskUnitForm.liabilityUserId" placeholder="负责人" clearable class="input-length">
- <el-option v-for="item in riskUnitDialogState.allPersonList" :key="item.id" :label="item.personName" :value="item.id"></el-option>
+ <el-select v-model="riskUnitDialogState.riskUnitForm.liabilityUserId" :disabled="riskUnitDialogState.disabled" placeholder="负责人" clearable class="input-length">
+ <el-option v-for="item in riskUnitDialogState.allPersonList" :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="liabilityDep">
- <el-input v-model="riskUnitDialogState.riskUnitForm.liabilityDep" placeholder="负责部门" clearable class="input-length"></el-input>
+ <el-input v-model="riskUnitDialogState.riskUnitForm.liabilityDep" :disabled="riskUnitDialogState.disabled" placeholder="负责部门" clearable class="input-length"></el-input>
</el-form-item>
</el-col>
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" v-if="riskUnitDialogState.experimentType === 1">
<el-form-item label="基础风险单元" prop="basicRiskUnitId">
- <el-select v-model="riskUnitDialogState.riskUnitForm.basicRiskUnitId" placeholder="基础风险单元" clearable class="input-length">
+ <el-select v-model="riskUnitDialogState.riskUnitForm.basicRiskUnitId" :disabled="riskUnitDialogState.disabled" placeholder="基础风险单元" clearable class="input-length">
<el-option v-for="item in riskUnitDialogState.basicUnitList" :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="风险单元描述">
- <el-input type="textarea" :rows="3" v-model="riskUnitDialogState.riskUnitForm.description" placeholder="风险单元描述" clearable class="input-length"></el-input>
+ <el-input type="textarea" :rows="3" v-model="riskUnitDialogState.riskUnitForm.description" :disabled="riskUnitDialogState.disabled" placeholder="风险单元描述" clearable class="input-length"></el-input>
</el-form-item>
</el-col>
</el-row>
@@ -49,7 +49,7 @@
<template #footer>
<span class="dialog-footer">
<el-button @click="riskUnitDialogState.riskUnitDialogVisible = !riskUnitDialogState.riskUnitDialogVisible" size="default">取 消</el-button>
- <el-button type="primary" @click="onSubmitRiskUnit" size="default">确定</el-button>
+ <el-button type="primary" @click="onSubmitRiskUnit" v-if="!riskUnitDialogState.disabled" size="default">确定</el-button>
</span>
</template>
</el-dialog>
@@ -65,10 +65,12 @@
const riskUnitFormRef = ref()
const riskUnitDialogState = reactive<RiskUnitDialogType>({
- title: '新增',
+ title: '',
experimentType: 2,
+ disabled: false,
riskUnitDialogVisible: false,
riskUnitForm: {
+ id: null,
experimentId: null,
riskCode: '',
riskName: '',
@@ -101,49 +103,51 @@
],
})
-const showRiskUnitDialog = (id: number, liabilityUserId: number, basicUnitList: UnitType [], allPersonList: AllPersonListType [], allRiskTypeList: RiskType []) => {
-
+const showRiskUnitDialog = (title: string, val, id: number, userId: number, basicUnitList: UnitType [], allPersonList: AllPersonListType [], allRiskTypeList: RiskType []) => {
riskUnitDialogState.riskUnitDialogVisible = true;
riskUnitDialogState.basicUnitList = basicUnitList
riskUnitDialogState.allPersonList = allPersonList
riskUnitDialogState.riskTypeList = allRiskTypeList
+ riskUnitDialogState.disabled = false
setTimeout(() => {
riskUnitFormRef.value.clearValidate();
});
- riskUnitDialogState.riskUnitForm = {
- experimentId: id,
- riskCode: '',
- riskName: '',
- riskUnitTypeId: null,
- liabilityUserId: liabilityUserId,
- liabilityDep: '',
- description: '',
- basicRiskUnitId: null,
- };
+ if(title === '新增'){
+ riskUnitDialogState.title = '新增';
+ riskUnitDialogState.riskUnitForm = {
+ id: null,
+ experimentId: id,
+ riskCode: '',
+ riskName: '',
+ riskUnitTypeId: null,
+ liabilityUserId: userId,
+ liabilityDep: '',
+ description: '',
+ basicRiskUnitId: null,
+ };
+ }else if(title === '查看'){
+ riskUnitDialogState.title = '查看';
+ riskUnitDialogState.disabled = true
+ for(let i in riskUnitDialogState.riskUnitForm){
+ if(isValidKey(i, riskUnitDialogState.riskUnitForm)){
+ riskUnitDialogState.riskUnitForm[i] = val[i];
+ }
+ }
+ }else{
+ riskUnitDialogState.title = '编辑';
+ for(let i in riskUnitDialogState.riskUnitForm){
+ if(isValidKey(i, riskUnitDialogState.riskUnitForm)){
+ riskUnitDialogState.riskUnitForm[i] = val[i];
+ }
+ }
+ }
};
const onSubmitRiskUnit = () => {
riskUnitFormRef.value.validate(async(valid: boolean) => {
if(valid){
- if(riskUnitDialogState.title === '新增' && riskUnitDialogState.experimentType === 1){
- let { experimentId,basicRiskUnitId} = riskUnitDialogState.riskUnitForm
- let query = { experimentId,basicRiskUnitId }
- let res = await riskUnitApi().addBasicRiskUnit(query);
- if(res.data.code === 100){
- emit('refresh')
- riskUnitDialogState.riskUnitDialogVisible = false;
- ElMessage({
- type: 'success',
- message: '新增成功'
- })
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg,
- });
- }
- }else if(riskUnitDialogState.title === '新增' && riskUnitDialogState.experimentType === 2){
- let { basicRiskUnitId, ...query} = riskUnitDialogState.riskUnitForm
+ if(riskUnitDialogState.title === '新增'){
+ let { id, basicRiskUnitId, ...query} = riskUnitDialogState.riskUnitForm
let res = await riskUnitApi().addRiskUnit(query);
if(res.data.code === 100){
emit('refresh')
diff --git a/src/views/analyse/assessApply/index.vue b/src/views/analyse/assessApply/index.vue
index d587bcd..ce41e3c 100644
--- a/src/views/analyse/assessApply/index.vue
+++ b/src/views/analyse/assessApply/index.vue
@@ -65,7 +65,7 @@
<el-table-column label="操作" width="250" fixed="right">
<template #default="scope">
<el-button size="small" v-if="scope.row.stage == 3" text type="primary" :icon="Edit" @click="toReport(scope.row)">生成评估报告</el-button>
- <el-button size="small" text type="primary" :icon="Edit" @click="openRiskDialog(scope.row)">管理实验现实风险</el-button>
+ <el-button size="small" text type="primary" :icon="Edit" @click="openRiskDialog(scope.row)">管理实验风险单元</el-button>
<el-button size="small" v-if="scope.row.stage == 4 && !scope.row.assessPerson" text type="primary" :icon="View" @click="openReportDialog('提交', scope.row)">提交审批</el-button>
<el-button size="small" v-if="scope.row.stage == 4 && !scope.row.assessPerson" text type="primary" :icon="View" @click="openReportDialog('修改', scope.row)">修改</el-button>
<el-button size="small" v-if="scope.row.stage == 4 && scope.row.assessPerson" text type="primary" :icon="Edit" @click="openReportDialog('查看',scope.row)">查看</el-button>
diff --git a/src/views/analyse/evaluate/index.ts b/src/views/analyse/evaluate/index.ts
index b536372..639fc39 100644
--- a/src/views/analyse/evaluate/index.ts
+++ b/src/views/analyse/evaluate/index.ts
@@ -1,5 +1,8 @@
declare interface EvaluateStateType {
- evaluateData: Array<EvaluateType>
+ evaluateData: Array<IdentifyType>
+ user: null| number
+ currentEvalute:{}
+ evaluateDialog:boolean
searchQuery: {
pageIndex: number,
pageSize: number,
diff --git a/src/views/analyse/evaluate/index.vue b/src/views/analyse/evaluate/index.vue
index 1733d96..07a11ac 100644
--- a/src/views/analyse/evaluate/index.vue
+++ b/src/views/analyse/evaluate/index.vue
@@ -25,47 +25,47 @@
<!-- </el-col>-->
</el-row>
<el-table ref="multipleTableRef" :data="evaluateState.evaluateData" style="width: 100%" height="calc(100% - 100px)" :header-cell-style="{ background: '#fafafa' }">
- <el-table-column type="expand">
- <template #default="scope">
- <el-table :data="scope.row.factorQueryDTOList" style="width: 100%">
- <el-table-column type="index" label="序号" width="80" />
- <el-table-column prop="evaluateMethod" label="评价方法" align="center">
- <template #default="scope">
- {{ evaluateState.evaluateMethodList.find(i=>i.id === scope.row.evaluateMethod)?.name }}
- </template>
- </el-table-column>
- <el-table-column prop="itemIdentificationTime" label="辨识添加时间" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column v-if="scope.row.identificationMethod == 1" prop="phaCheckItem" label="检查项目" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column v-if="scope.row.identificationMethod == 1" prop="phaRiskFactor" label="存在风险因素" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column v-if="scope.row.identificationMethod == 1" prop="phaResult" label="可能存在后果" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column v-if="scope.row.identificationMethod == 2" prop="jhaCheckItem" label="作业步骤" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column v-if="scope.row.identificationMethod == 2" prop="jhaRiskFactor" label="存在风险因素" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column v-if="scope.row.identificationMethod == 2" prop="jhaResult" label="可能存在后果" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column v-if="scope.row.identificationMethod == 3" prop="sclCheckItem" label="检查项目" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column v-if="scope.row.identificationMethod == 3" prop="sclCheckStandard" label="检查标准" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column v-if="scope.row.identificationMethod == 3" prop="sclCheckUnstandard" label="不符合标准情况" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column v-if="scope.row.identificationMethod == 3" prop="sclCheckResult" label="主要后果" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column v-if="scope.row.identificationMethod == 4" prop="hazopNode" label="节点" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column v-if="scope.row.identificationMethod == 4" prop="hazopParam" label="参数" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column v-if="scope.row.identificationMethod == 4" prop="hazopParamDesc" label="参数描述" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column v-if="scope.row.identificationMethod == 4" prop="hazopNode" label="节点" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column v-if="scope.row.identificationMethod == 4" prop="hazopGuide" label="引导词" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column v-if="scope.row.identificationMethod == 4" prop="hazopDeviation" label="偏差" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column v-if="scope.row.identificationMethod == 4" prop="hazopPossibleCauses" label="可能原因" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column v-if="scope.row.identificationMethod == 4" prop="hazopResult" label="可能存在后果" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column v-if="scope.row.identificationMethod == 5" prop="analogyCheckItem" label="检查项目" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column v-if="scope.row.identificationMethod == 5" prop="analogyReference" label="类比参照" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column v-if="scope.row.identificationMethod == 5" prop="analogyRiskFactor" label="存在风险因素" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column v-if="scope.row.identificationMethod == 5" prop="analogyResult" label="可能存在后果" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column label="操作" width="250" >
- <template #default="scope2">
- <el-button size="small" v-if="scope.row.planExecStatus === 3" text type="primary" :icon="Plus" @click="openEvaluateDialog('评价', scope2.row)">评价</el-button>
- <el-button size="small" v-if="scope2.row.riskValue" text type="primary" :icon="View" @click="openEvaluateDialog('查看', scope2.row)">查看</el-button>
- </template>
- </el-table-column>
- </el-table>
- </template>
- </el-table-column>
+<!-- <el-table-column type="expand">-->
+<!-- <template #default="scope">-->
+<!-- <el-table :data="scope.row.factorQueryDTOList" style="width: 100%">-->
+<!-- <el-table-column type="index" label="序号" width="80" />-->
+<!-- <el-table-column prop="evaluateMethod" label="评价方法" align="center">-->
+<!-- <template #default="scope">-->
+<!-- {{ evaluateState.evaluateMethodList.find(i=>i.id === scope.row.evaluateMethod)?.name }}-->
+<!-- </template>-->
+<!-- </el-table-column>-->
+<!-- <el-table-column prop="itemIdentificationTime" label="辨识添加时间" show-overflow-tooltip align="center"></el-table-column>-->
+<!-- <el-table-column v-if="scope.row.identificationMethod == 1" prop="phaCheckItem" label="检查项目" show-overflow-tooltip align="center"></el-table-column>-->
+<!-- <el-table-column v-if="scope.row.identificationMethod == 1" prop="phaRiskFactor" label="存在风险因素" show-overflow-tooltip align="center"></el-table-column>-->
+<!-- <el-table-column v-if="scope.row.identificationMethod == 1" prop="phaResult" label="可能存在后果" show-overflow-tooltip align="center"></el-table-column>-->
+<!-- <el-table-column v-if="scope.row.identificationMethod == 2" prop="jhaCheckItem" label="作业步骤" show-overflow-tooltip align="center"></el-table-column>-->
+<!-- <el-table-column v-if="scope.row.identificationMethod == 2" prop="jhaRiskFactor" label="存在风险因素" show-overflow-tooltip align="center"></el-table-column>-->
+<!-- <el-table-column v-if="scope.row.identificationMethod == 2" prop="jhaResult" label="可能存在后果" show-overflow-tooltip align="center"></el-table-column>-->
+<!-- <el-table-column v-if="scope.row.identificationMethod == 3" prop="sclCheckItem" label="检查项目" show-overflow-tooltip align="center"></el-table-column>-->
+<!-- <el-table-column v-if="scope.row.identificationMethod == 3" prop="sclCheckStandard" label="检查标准" show-overflow-tooltip align="center"></el-table-column>-->
+<!-- <el-table-column v-if="scope.row.identificationMethod == 3" prop="sclCheckUnstandard" label="不符合标准情况" show-overflow-tooltip align="center"></el-table-column>-->
+<!-- <el-table-column v-if="scope.row.identificationMethod == 3" prop="sclCheckResult" label="主要后果" show-overflow-tooltip align="center"></el-table-column>-->
+<!-- <el-table-column v-if="scope.row.identificationMethod == 4" prop="hazopNode" label="节点" show-overflow-tooltip align="center"></el-table-column>-->
+<!-- <el-table-column v-if="scope.row.identificationMethod == 4" prop="hazopParam" label="参数" show-overflow-tooltip align="center"></el-table-column>-->
+<!-- <el-table-column v-if="scope.row.identificationMethod == 4" prop="hazopParamDesc" label="参数描述" show-overflow-tooltip align="center"></el-table-column>-->
+<!-- <el-table-column v-if="scope.row.identificationMethod == 4" prop="hazopNode" label="节点" show-overflow-tooltip align="center"></el-table-column>-->
+<!-- <el-table-column v-if="scope.row.identificationMethod == 4" prop="hazopGuide" label="引导词" show-overflow-tooltip align="center"></el-table-column>-->
+<!-- <el-table-column v-if="scope.row.identificationMethod == 4" prop="hazopDeviation" label="偏差" show-overflow-tooltip align="center"></el-table-column>-->
+<!-- <el-table-column v-if="scope.row.identificationMethod == 4" prop="hazopPossibleCauses" label="可能原因" show-overflow-tooltip align="center"></el-table-column>-->
+<!-- <el-table-column v-if="scope.row.identificationMethod == 4" prop="hazopResult" label="可能存在后果" show-overflow-tooltip align="center"></el-table-column>-->
+<!-- <el-table-column v-if="scope.row.identificationMethod == 5" prop="analogyCheckItem" label="检查项目" show-overflow-tooltip align="center"></el-table-column>-->
+<!-- <el-table-column v-if="scope.row.identificationMethod == 5" prop="analogyReference" label="类比参照" show-overflow-tooltip align="center"></el-table-column>-->
+<!-- <el-table-column v-if="scope.row.identificationMethod == 5" prop="analogyRiskFactor" label="存在风险因素" show-overflow-tooltip align="center"></el-table-column>-->
+<!-- <el-table-column v-if="scope.row.identificationMethod == 5" prop="analogyResult" label="可能存在后果" show-overflow-tooltip align="center"></el-table-column>-->
+<!-- <el-table-column label="操作" width="250" >-->
+<!-- <template #default="scope2">-->
+<!-- <el-button size="small" v-if="scope.row.planExecStatus === 3 && scope.row.evaluateUserId == evaluateState.user" text type="primary" :icon="Plus" @click="openEvaluateDialog('评价', scope2.row)">评价</el-button>-->
+<!-- <el-button size="small" v-if="scope2.row.riskValue" text type="primary" :icon="View" @click="openEvaluateDialog('查看', scope2.row)">查看</el-button>-->
+<!-- </template>-->
+<!-- </el-table-column>-->
+<!-- </el-table>-->
+<!-- </template>-->
+<!-- </el-table-column>-->
<el-table-column prop="assessPlanName" label="评估计划名称"/>
<el-table-column prop="identificationMethod" label="辨识方法" show-overflow-tooltip>
@@ -75,6 +75,7 @@
</el-table-column>
<el-table-column prop="riskUnitName" label="风险单元" />
<el-table-column prop="identificationUser" label="计划负责人" />
+ <el-table-column prop="identificationUser" label="辨识专家" />
<el-table-column prop="evaluateUser" label="评价专家" />
<el-table-column prop="createTime" label="创建时间" show-overflow-tooltip></el-table-column>
<el-table-column prop="createByUserName" label="创建人" show-overflow-tooltip></el-table-column>
@@ -108,7 +109,9 @@
</el-table-column>
<el-table-column label="操作" width="250">
<template #default="scope">
- <el-button size="small" v-if="scope.row.planExecStatus===3" text type="primary" @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="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===4" text :icon="View" type="primary" @click="openEvaluate(scope.row)">查看评价</el-button>
</template>
</el-table-column>
</el-table>
@@ -118,7 +121,48 @@
</div>
</div>
</div>
- <evaluate-dialog ref="evaluateDialogRef" @refresh="getEvaluateData"></evaluate-dialog>
+
+ <el-dialog title="辨识信息评价" v-model="evaluateState.evaluateDialog" width="50%">
+ <el-table :data="evaluateState.currentEvalute.factorQueryDTOList" style="width: 100%">
+ <el-table-column type="index" label="序号" width="80"/>
+ <el-table-column prop="evaluateMethod" label="评价方法" align="center">
+ <template #default="scope">
+ {{ evaluateState.evaluateMethodList.find(i=>i.id === scope.row.evaluateMethod)?.name }}
+ </template>
+ </el-table-column>
+ <el-table-column prop="itemIdentificationTime" label="辨识添加时间" show-overflow-tooltip align="center"></el-table-column>
+ <el-table-column v-if="evaluateState.currentEvalute.identificationMethod == 1" prop="phaCheckItem" label="检查项目" show-overflow-tooltip align="center"></el-table-column>
+ <el-table-column v-if="evaluateState.currentEvalute.identificationMethod == 1" prop="phaRiskFactor" label="存在风险因素" show-overflow-tooltip align="center"></el-table-column>
+ <el-table-column v-if="evaluateState.currentEvalute.identificationMethod == 1" prop="phaResult" label="可能存在后果" show-overflow-tooltip align="center"></el-table-column>
+ <el-table-column v-if="evaluateState.currentEvalute.identificationMethod == 2" prop="jhaCheckItem" label="作业步骤" show-overflow-tooltip align="center"></el-table-column>
+ <el-table-column v-if="evaluateState.currentEvalute.identificationMethod == 2" prop="jhaRiskFactor" label="存在风险因素" show-overflow-tooltip align="center"></el-table-column>
+ <el-table-column v-if="evaluateState.currentEvalute.identificationMethod == 2" prop="jhaResult" label="可能存在后果" show-overflow-tooltip align="center"></el-table-column>
+ <el-table-column v-if="evaluateState.currentEvalute.identificationMethod == 3" prop="sclCheckItem" label="检查项目" show-overflow-tooltip align="center"></el-table-column>
+ <el-table-column v-if="evaluateState.currentEvalute.identificationMethod == 3" prop="sclCheckStandard" label="检查标准" show-overflow-tooltip align="center"></el-table-column>
+ <el-table-column v-if="evaluateState.currentEvalute.identificationMethod == 3" prop="sclCheckUnstandard" label="不符合标准情况" show-overflow-tooltip align="center"></el-table-column>
+ <el-table-column v-if="evaluateState.currentEvalute.identificationMethod == 3" prop="sclCheckResult" label="主要后果" show-overflow-tooltip align="center"></el-table-column>
+ <el-table-column v-if="evaluateState.currentEvalute.identificationMethod == 4" prop="hazopNode" label="节点" show-overflow-tooltip align="center"></el-table-column>
+ <el-table-column v-if="evaluateState.currentEvalute.identificationMethod == 4" prop="hazopParam" label="参数" show-overflow-tooltip align="center"></el-table-column>
+ <el-table-column v-if="evaluateState.currentEvalute.identificationMethod == 4" prop="hazopParamDesc" label="参数描述" show-overflow-tooltip align="center"></el-table-column>
+ <el-table-column v-if="evaluateState.currentEvalute.identificationMethod == 4" prop="hazopNode" label="节点" show-overflow-tooltip align="center"></el-table-column>
+ <el-table-column v-if="evaluateState.currentEvalute.identificationMethod == 4" prop="hazopGuide" label="引导词" show-overflow-tooltip align="center"></el-table-column>
+ <el-table-column v-if="evaluateState.currentEvalute.identificationMethod == 4" prop="hazopDeviation" label="偏差" show-overflow-tooltip align="center"></el-table-column>
+ <el-table-column v-if="evaluateState.currentEvalute.identificationMethod == 4" prop="hazopPossibleCauses" label="可能原因" show-overflow-tooltip align="center"></el-table-column>
+ <el-table-column v-if="evaluateState.currentEvalute.identificationMethod == 4" prop="hazopResult" label="可能存在后果" show-overflow-tooltip align="center"></el-table-column>
+ <el-table-column v-if="evaluateState.currentEvalute.identificationMethod == 5" prop="analogyCheckItem" label="检查项目" show-overflow-tooltip align="center"></el-table-column>
+ <el-table-column v-if="evaluateState.currentEvalute.identificationMethod == 5" prop="analogyReference" label="类比参照" show-overflow-tooltip align="center"></el-table-column>
+ <el-table-column v-if="evaluateState.currentEvalute.identificationMethod == 5" prop="analogyRiskFactor" label="存在风险因素" show-overflow-tooltip align="center"></el-table-column>
+ <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="scope.row.riskValue" text type="primary" :icon="View" @click="openEvaluateDialog('查看', scope.row)">查看</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ </el-dialog>
+
+ <evaluate-dialog ref="evaluateDialogRef" @refresh="getDataAndClose"></evaluate-dialog>
</div>
</template>
@@ -127,16 +171,22 @@
import {evaluateApi} from "/@/api/analyse/evaluate";
import {identifyApi} from "/@/api/analyse/identify";
import {ElMessage, ElMessageBox} from "element-plus";
-import { Edit, View, Plus, Delete } from '@element-plus/icons-vue';
+import { Edit, View, Plus, Delete, DocumentChecked } from '@element-plus/icons-vue';
import {planApi} from "/@/api/analyse/plan";
import {userApi} from "/@/api/systemManage/user";
+import {useUserInfo} from "/@/stores/userInfo";
+import {storeToRefs} from "pinia";
const EvaluateDialog = defineAsyncComponent(() => import('./components/evaluateDialog.vue'));
const evaluateDialogRef = ref();
-
+const userInfo = useUserInfo();
+const { userInfos } = storeToRefs(userInfo);
const evaluateState = reactive<EvaluateStateType>({
evaluateData: [],
+ user: null,
+ currentEvalute:{},
+ evaluateDialog: false,
searchQuery: {
pageIndex: 1,
pageSize: 10,
@@ -182,6 +232,11 @@
}
};
+const getDataAndClose =()=>{
+ evaluateState.evaluateDialog = false
+ getEvaluateData()
+}
+
const getAllPlanList = async () => {
let res = await planApi().getAllPlan();
if(res.data.code === 100){
@@ -213,6 +268,11 @@
})
}
};
+
+const openEvaluate = (value: IdentifyType) => {
+ evaluateState.evaluateDialog = true
+ evaluateState.currentEvalute = value
+}
const openEvaluateDialog = (title: string, value: IdentifyType) => {
evaluateDialogRef.value.showEvaluateDialog(title, value);
@@ -295,6 +355,7 @@
getEvaluateData();
getAllPlanList();
getPersonList();
+ evaluateState.user = Number(userInfos.value.uid)
});
</script>
diff --git a/src/views/analyse/identify/components/identifyDialog.vue b/src/views/analyse/identify/components/identifyDialog.vue
index 2fd7b26..a764ab6 100644
--- a/src/views/analyse/identify/components/identifyDialog.vue
+++ b/src/views/analyse/identify/components/identifyDialog.vue
@@ -438,7 +438,6 @@
};
}else if(title === '查看'){
identifyDialogState.title = '查看';
- console.log(value,'value')
identifyDialogState.disabled = true
for(let i in identifyDialogState.identifyForm){
if(isValidKey(i, identifyDialogState.identifyForm)){
@@ -447,11 +446,6 @@
}
}else{
identifyDialogState.title = '编辑';
- // identifyDialogState.identifyForm.hazopId = identifyQueryForm.hazopId;
- // identifyDialogState.identifyForm.jhaId = identifyQueryForm.jhaId;
- // identifyDialogState.identifyForm.phaId = identifyQueryForm.phaId;
- // identifyDialogState.identifyForm.sclId = identifyQueryForm.sclId;
- // identifyDialogState.identifyForm.analogyId = identifyQueryForm.analogyId;
for(let i in identifyDialogState.identifyForm){
if(isValidKey(i, identifyDialogState.identifyForm)){
identifyDialogState.identifyForm[i] = value[i];
@@ -483,11 +477,9 @@
});
}
}else{
- console.log(identifyDialogState.identifyForm,'identifyDialogState.identifyForm')
let res = await identifyApi().modIdentify(identifyDialogState.identifyForm)
if(res.data.code === 100){
emit('refresh',2,identifyDialogState.identifyForm)
-
identifyDialogState.identifyDialogVisible = false;
ElMessage({
type: 'success',
diff --git a/src/views/analyse/identify/components/identifyQuery.vue b/src/views/analyse/identify/components/identifyQuery.vue
index 6c7100f..7aed26a 100644
--- a/src/views/analyse/identify/components/identifyQuery.vue
+++ b/src/views/analyse/identify/components/identifyQuery.vue
@@ -236,7 +236,6 @@
};
const onDelIdentifyQuery = (index: number, val: IdentifyType) => {
- console.log(val,'val')
ElMessageBox.confirm(`此操作将永久删除该辨识,是否继续?`, '提示', {
confirmButtonText: '确认',
cancelButtonText: '取消',
diff --git a/src/views/analyse/identify/index.ts b/src/views/analyse/identify/index.ts
index 713bb9b..66859ae 100644
--- a/src/views/analyse/identify/index.ts
+++ b/src/views/analyse/identify/index.ts
@@ -1,5 +1,6 @@
declare interface IdentifyStateType {
identifyData: Array<IdentifyType>
+ user: null | number
searchQuery: {
pageIndex: number,
pageSize: number,
@@ -74,7 +75,7 @@
sclCheckResult: string,
planExecStatus?: number,
evaluateMethod?: number,
- factorQueryDTOList?: IdentifyType [],
+ factorQueryDTOList?: EvaluateType [],
evaluateUser?: string,
result?: number | null,
identificationDesc: string
diff --git a/src/views/analyse/identify/index.vue b/src/views/analyse/identify/index.vue
index c0c2960..d5f3e03 100644
--- a/src/views/analyse/identify/index.vue
+++ b/src/views/analyse/identify/index.vue
@@ -34,6 +34,7 @@
</template>
</el-table-column>
<el-table-column prop="identificationUser" label="计划负责人" />
+ <el-table-column prop="identificationUser" label="辨识专家" />
<el-table-column prop="evaluateUser" label="评价专家" />
<el-table-column prop="createTime" label="创建时间" show-overflow-tooltip></el-table-column>
<el-table-column prop="createByUserName" label="创建人" show-overflow-tooltip></el-table-column>
@@ -67,9 +68,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" @click="accessIdentify(scope.row)">提交</el-button>
+ <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 === 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" :icon="Edit" @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" :icon="Edit" @click="openIdentifyQuery('编辑', scope.row)">编辑</el-button>-->
</template>
</el-table-column>
@@ -91,13 +92,17 @@
import { Edit, View, Plus, Delete } from '@element-plus/icons-vue';
import {planApi} from "/@/api/analyse/plan";
import {userApi} from "/@/api/systemManage/user";
+import {useUserInfo} from "/@/stores/userInfo";
+import {storeToRefs} from "pinia";
const IdentifyQueryDialog = defineAsyncComponent(() => import('./components/identifyQuery.vue'));
const identifyQueryDialogRef = ref();
-
+const userInfo = useUserInfo();
+const { userInfos } = storeToRefs(userInfo);
const identifyState = reactive<IdentifyStateType>({
identifyData: [],
+ user: null,
searchQuery: {
pageIndex: 1,
pageSize: 10,
@@ -261,6 +266,7 @@
getIdentifyData();
getAllPlanList();
getPersonList();
+ identifyState.user = Number(userInfos.value.uid)
});
</script>
diff --git a/src/views/analyse/plan/components/planDialog.vue b/src/views/analyse/plan/components/planDialog.vue
index a8b570f..4eec5fc 100644
--- a/src/views/analyse/plan/components/planDialog.vue
+++ b/src/views/analyse/plan/components/planDialog.vue
@@ -16,24 +16,25 @@
</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="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"
- @change="formatTime">
- </el-date-picker>
</el-form-item>
</el-col>
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
@@ -197,6 +198,9 @@
})
</script>
-<style scoped>
-
+<style lang="scss" scoped>
+ ::v-deep(.pickTime){
+ position: absolute !important;
+ top: 0 !important;
+ }
</style>
diff --git a/src/views/analyse/plan/index.vue b/src/views/analyse/plan/index.vue
index 90fb145..b6208ab 100644
--- a/src/views/analyse/plan/index.vue
+++ b/src/views/analyse/plan/index.vue
@@ -123,7 +123,6 @@
const PlanDialog = defineAsyncComponent(() => import('./components/planDialog.vue'));
-
const planDialogRef = ref();
const userInfo = useUserInfo();
const { userInfos } = storeToRefs(userInfo);
@@ -409,7 +408,7 @@
getPlanData();
getAllRiskUnitList();
getPersonList();
- planState.user = userInfos.value.uid
+ planState.user = Number(userInfos.value.uid)
})
</script>
diff --git a/src/views/analyse/riskUnit/index.ts b/src/views/analyse/riskUnit/index.ts
index eba58ba..b1dde19 100644
--- a/src/views/analyse/riskUnit/index.ts
+++ b/src/views/analyse/riskUnit/index.ts
@@ -40,10 +40,11 @@
declare interface RiskUnitDialogType {
title: string,
+ disabled: boolean
experimentType: number | null,
riskUnitDialogVisible: boolean,
riskUnitForm: {
- id?: number
+ id?: number | null
experimentId: number | null,
riskCode: string,
riskName: string,
diff --git a/src/views/basic/equipment/index.vue b/src/views/basic/equipment/index.vue
index f0c84a2..0ffc56a 100644
--- a/src/views/basic/equipment/index.vue
+++ b/src/views/basic/equipment/index.vue
@@ -132,7 +132,7 @@
let res = await equipmentApi().getEquipmentByList(equipmentState.searchQuery);
if(res.data.code === 100){
equipmentState.equipmentData = res.data.data;
- equipmentState.total = res.data.total;
+ equipmentState.total = res.data.total
}else{
ElMessage({
type: 'warning',
diff --git a/src/views/experiment/developing/components/developDialog.vue b/src/views/experiment/developing/components/developDialog.vue
index f6704e9..7edbbe1 100644
--- a/src/views/experiment/developing/components/developDialog.vue
+++ b/src/views/experiment/developing/components/developDialog.vue
@@ -15,7 +15,7 @@
<tr>
<td class="w-25 m-color required">实验类型</td>
<td class="w-75 m-color">
-
+ <el-form-item prop="experimentType" style="display: flex;justify-content: center">
<el-radio-group style="text-align: center" :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.experimentType">
<el-radio :label="1">化学类</el-radio>
<el-radio :label="2">生物类</el-radio>
@@ -24,27 +24,32 @@
<el-radio :label="5">特种设备类</el-radio>
<el-radio :label="6">其他类</el-radio>
</el-radio-group>
-
-
+ </el-form-item>
</td>
</tr>
<tr>
<td class="w-25 m-color required">部门</td>
<td class="w-75 m-color">
+ <el-form-item prop="dep">
<el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.dep" />
+ </el-form-item>
</td>
</tr>
<tr>
<td class="w-25 m-color required">负责人</td>
<td class="w-25 m-color">
+ <el-form-item prop="liabilityUserId">
<el-select style="width: 100%" disabled v-model="projectDialogState.projectForm.liabilityUserId" clearable filterable>
<el-option :key="userInfos.uid" :value="userInfos.uid" :label="userInfos.userName"></el-option>
</el-select>
+ </el-form-item>
<!-- <el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.liabilityUserId"/>-->
</td>
<td class="w-25 m-color required">电话</td>
<td class="w-25 m-color">
+ <el-form-item prop="liabilityUserPhone">
<el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.liabilityUserPhone" />
+ </el-form-item>
</td>
</tr>
<tr>
@@ -58,34 +63,46 @@
<!-- :label="item.personName"-->
<!-- ></el-option>-->
<!-- </el-select>-->
- <el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.safeLiabilityUser"/>
+ <el-form-item prop="safeLiabilityUser">
+ <el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.safeLiabilityUser"/>
+ </el-form-item>
</td>
<td class="w-25 m-color required">电话</td>
<td class="w-25 m-color">
- <el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.safeLiabilityUserPhone" />
+ <el-form-item prop="safeLiabilityUserPhone">
+ <el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.safeLiabilityUserPhone" />
+ </el-form-item>
</td>
</tr>
<tr>
<td class="w-25 m-color required">立项时间</td>
<td class="w-25 m-color">
- <el-date-picker :disabled="projectDialogState.disabled" type="datetime" format="YYYY/MM/DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" v-model="projectDialogState.projectForm.createExperimentTime" />
+ <el-form-item prop="createExperimentTime">
+ <el-date-picker :disabled="projectDialogState.disabled" type="datetime" format="YYYY/MM/DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" v-model="projectDialogState.projectForm.createExperimentTime" />
+ </el-form-item>
</td>
<td class="w-25 m-color required">开展时间</td>
<td class="w-25 m-color">
+ <el-form-item prop="startTime">
<el-date-picker :disabled="projectDialogState.disabled" type="datetime" format="YYYY/MM/DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" v-model="projectDialogState.projectForm.startTime" />
+ </el-form-item>
</td>
</tr>
<tr>
<td class="w-25 m-color required">是否是安全化信息系统</td>
<td class="w-25 m-color">
+ <el-form-item prop="sisStatus">
<el-radio-group :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.sisStatus" @change="hasSafeSystem">
<el-radio :label="1">是</el-radio>
<el-radio :label="2">否</el-radio>
</el-radio-group>
+ </el-form-item>
</td>
- <td class="w-25 m-color" :class="projectDialogState.projectForm.sisStatus==1?'required':''">安全信息化系统</td>
- <td class="w-25 m-color">
- <el-input :disabled="projectDialogState.disabled" :readonly="projectDialogState.projectForm.sisStatus!==1" v-model="projectDialogState.projectForm.safeInformationSystem" />
+ <td class="w-25 m-color" v-if="projectDialogState.projectForm.sisStatus == 1" :class="projectDialogState.projectForm.sisStatus==1?'required':''">安全信息化系统</td>
+ <td class="w-25 m-color" v-if="projectDialogState.projectForm.sisStatus == 1">
+ <el-form-item prop="safeInformationSystem">
+ <el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.safeInformationSystem" />
+ </el-form-item>
</td>
</tr>
<select-room ref="selectRoomRef" v-model:disabled="projectDialogState.disabled" v-model:data="projectDialogState.projectForm.siteList"></select-room>
@@ -94,119 +111,154 @@
<tr>
<td class="w-25 m-color required">实验步骤</td>
<td class="w-75 m-color">
+ <el-form-item prop="experimentStep">
<el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.experimentStep" placeholder="请输入实验步骤" />
+ </el-form-item>
</td>
</tr>
<tr>
<td class="w-25 m-color required">操作方法</td>
<td class="w-75 m-color">
+ <el-form-item prop="experimentMethod">
<el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.experimentMethod" placeholder="请输入操作方法" />
+ </el-form-item>
</td>
</tr>
<tr>
<td class="w-25 m-color required">工艺过程</td>
<td class="w-75 m-color">
+ <el-form-item prop="process">
<el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.process" placeholder="请输入工艺过程" />
+ </el-form-item>
</td>
</tr>
<tr>
<td class="w-25 m-color required">特殊/关键过程</td>
<td class="w-75 m-color">
+ <el-form-item prop="keyProcess">
<el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.keyProcess" placeholder="请输入特殊/关键过程" />
+ </el-form-item>
</td>
</tr>
<tr>
<td class="w-25 m-color required">预防措施</td>
<td class="w-75 m-color">
- <el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.measure" placeholder="请输入预防措施" />
+ <el-form-item prop="measure">
+ <el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.measure" placeholder="请输入预防措施" />
+ </el-form-item>
</td>
</tr>
<tr>
<td class="w-25 m-color required">是否存在过夜、老化实验</td>
<td class="w-25 m-color">
+ <el-form-item prop="timeout">
<el-radio-group :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.timeout">
<el-radio :label="1">存在</el-radio>
<el-radio :label="2">不存在</el-radio>
</el-radio-group>
+ </el-form-item>
</td>
- <td class="w-25 m-color required">过夜、老化保障措施</td>
- <td class="w-25 m-color">
+ <td class="w-25 m-color required" v-if="projectDialogState.projectForm.timeout === 1">过夜、老化保障措施</td>
+ <td class="w-25 m-color" v-if="projectDialogState.projectForm.timeout === 1">
+ <el-form-item prop="timeoutManager">
<el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.timeoutManager" />
+ </el-form-item>
</td>
</tr>
<tr>
<td class="w-25 m-color required">是否在封闭条件下</td>
<td class="w-25 m-color">
+ <el-form-item prop="closed">
<el-radio-group :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.closed">
<el-radio :label="1">存在</el-radio>
<el-radio :label="2">不存在</el-radio>
</el-radio-group>
+ </el-form-item>
</td>
- <td class="w-25 m-color required">封闭条件保障措施</td>
- <td class="w-25 m-color">
+ <td class="w-25 m-color required" v-if="projectDialogState.projectForm.closed === 1">封闭条件保障措施</td>
+ <td class="w-25 m-color" v-if="projectDialogState.projectForm.closed === 1">
+ <el-form-item prop="unclosedManager">
<el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.unclosedManager" />
+ </el-form-item>
</td>
</tr>
<tr>
<td class="w-25 m-color required">实验场所防爆措施条件和设施情况</td>
<td class="w-75 m-color">
+ <el-form-item prop="explosionProof">
<el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.explosionProof" placeholder="请输入" />
+ </el-form-item>
</td>
</tr>
<tr>
<td class="w-25 m-color required">实验场所防火措施条件和设施情况</td>
<td class="w-75 m-color">
+ <el-form-item prop="fireProof">
<el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.fireProof" placeholder="请输入" />
+ </el-form-item>
</td>
</tr>
<tr>
<td class="w-25 m-color required">实验场所防中毒措施条件和设施情况</td>
<td class="w-75 m-color">
+ <el-form-item prop="poisonProof">
<el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.poisonProof" placeholder="请输入" />
+ </el-form-item>
</td>
</tr>
<select-danger ref="selectDangerRef" v-model:data="projectDialogState.projectForm.hazardousWasteList" v-model:disabled="projectDialogState.disabled"></select-danger>
<select-person ref="selectPersonRef" v-model:data="projectDialogState.projectForm.persons" v-model:disabled="projectDialogState.disabled"></select-person>
+<!-- <tr class="m-color b-font" style="text-align: center">应急预案/应急演练</tr>-->
+<!-- <tr>-->
+<!-- <td class="w-25 m-color required">有无预案</td>-->
+<!-- <td class="w-25 m-color required">预案名称</td>-->
+<!-- <td class="w-25 m-color required">是否演练</td>-->
+<!-- <td class="w-25 m-color required">演练情况</td>-->
+<!-- </tr>-->
+<!-- <tr>-->
+<!-- <td class="w-25 m-color">-->
+<!-- <el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.emergencyPlan" />-->
+<!-- </td>-->
+<!-- <td class="w-25 m-color">-->
+<!-- <el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.emergencyPlanName" />-->
+<!-- </td>-->
+<!-- <td class="w-25 m-color">-->
+<!-- <el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.emergencyDrillStatus" />-->
+<!-- </td>-->
+<!-- <td class="w-25 m-color">-->
+<!-- <el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.emergencyDrill" />-->
+<!-- </td>-->
+<!-- </tr>-->
+ <select-emergency ref="selectEmergencyRef" v-model:disabled="projectDialogState.disabled" v-model:data="projectDialogState.projectForm.emergencyList"></select-emergency>
<tr>
- <td class="w-25 m-color required">安全管理制度</td>
- <td class="w-75 m-color">
- <el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.safeManagerMethod" placeholder="请输入" />
- </td>
- </tr>
- <tr class="m-color b-font" style="text-align: center">应急预案/应急演练</tr>
- <tr>
- <td class="w-25 m-color required">有无预案</td>
- <td class="w-25 m-color required">预案名称</td>
- <td class="w-25 m-color required">是否演练</td>
- <td class="w-25 m-color required">演练情况</td>
- </tr>
- <tr>
- <td class="w-25 m-color">
- <el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.emergencyPlan" />
- </td>
- <td class="w-25 m-color">
- <el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.emergencyPlanName" />
- </td>
- <td class="w-25 m-color">
- <el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.emergencyDrillStatus" />
- </td>
- <td class="w-25 m-color">
- <el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.emergencyDrill" />
- </td>
+ <td class="w-25 m-color required">安全管理制度</td>
+ <td class="w-75 m-color">
+ <el-form-item prop="safeManagerMethod">
+ <el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.safeManagerMethod" placeholder="请输入" />
+ </el-form-item>
+ </td>
</tr>
<tr class="m-color b-font" style=" text-align: center">其他信息</tr>
<tr>
<td class="w-25 m-color required">实验场所是否需要分区隔断</td>
<td class="w-75 m-color">
- <el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.partitionCondition" placeholder="请输入" />
+ <el-form-item prop="partitionCondition">
+<!-- <el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.partitionCondition" placeholder="请输入" />-->
+ <el-radio-group :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.partitionCondition">
+ <el-radio :label="0">是</el-radio>
+ <el-radio :label="1">否</el-radio>
+ </el-radio-group>
+ </el-form-item>
</td>
</tr>
<tr>
<td class="w-25 m-color">其它基础信息(详细描述)</td>
<td class="w-75 m-color">
+ <el-form-item>
<el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.note" placeholder="请输入" />
+ </el-form-item>
</td>
</tr>
</table>
@@ -227,21 +279,23 @@
import {projectApi} from "/@/api/experiment/project";
import {personApi} from "/@/api/basic/person";
import {userApi} from "/@/api/systemManage/user";
-import SelectRoom from "/@/views/experiment/project/components/selectRoom.vue";
+
import {useUserInfo} from "/@/stores/userInfo";
import {storeToRefs} from "pinia";
import {checkChineseName, verifyPhone} from "/@/utils/toolsValidate";
const SelectEquipment = defineAsyncComponent(() => import('../../project/components/selectEquipment.vue'))
const SelectMaterial = defineAsyncComponent(() => import('../../project/components/selectMaterial.vue'))
const SelectDanger = defineAsyncComponent(() => import('../../project/components/selectDanger.vue'))
+const SelectEmergency = defineAsyncComponent(() => import('../../project/components/selectEmergency.vue'))
const SelectPerson = defineAsyncComponent(() => import('../../project/components/selectPerson.vue'))
+const SelectRoom = defineAsyncComponent(() => import('../../project/components/selectRoom.vue'))
const ProjectFormRef = ref()
const selectPersonRef = ref()
const selectEquipmentRef = ref()
const selectRoomRef = ref()
const selectMaterialRef = ref()
const selectDangerRef = ref()
-
+const selectEmergencyRef = ref()
const userInfo = useUserInfo();
const { userInfos } = storeToRefs(userInfo);
@@ -272,13 +326,9 @@
explosionProof: "",
fireProof: "",
poisonProof: "",
- hazardousWaste: null,
safeManagerMethod: "",
- emergencyPlan: "",
- emergencyDrill: "",
- emergencyPlanName: "",
- emergencyDrillStatus: "",
- partitionCondition: "",
+ emergencyList: [],
+ partitionCondition: null,
note: "",
createExperimentTime: '',
startTime: '',
@@ -293,10 +343,32 @@
]
},
projectFormRules: {
- experimentName: [{ required: true, message: '请填写设备编号', trigger: 'blur' }],
- deviceName: [{ required: true, message: '请填写设备名称', trigger: 'blur' }],
- devicePower: [{ required: true, message: '请填写设备功率', trigger: 'blur' }],
- deviceUnit: [{ required: true, message: '请选择计量单位', trigger: 'change' }]
+ experimentName: [{ required: true, message: '', trigger: 'blur' }],
+ experimentType: [{ required: true, message: '', trigger: 'blur' }],
+ liabilityUserId: [{ required: true, message: '', trigger: 'blur' }],
+ liabilityUserPhone: [{ required: true, message: '', trigger: 'blur' }],
+ safeLiabilityUser: [{ required: true, message: '', trigger: 'blur' }],
+ safeLiabilityUserPhone: [{ required: true, message: '', trigger: 'blur' }],
+ sisStatus: [{ required: true, message: '', trigger: 'blur' }],
+ safeInformationSystem: [{ required: true, message: '', trigger: 'blur' }],
+ dep: [{ required: true, message: '', trigger: 'blur' }],
+ experimentStep: [{ required: true, message: '', trigger: 'blur' }],
+ experimentMethod: [{ required: true, message: '', trigger: 'blur' }],
+ process: [{ required: true, message: '', trigger: 'blur' }],
+ keyProcess: [{ required: true, message: '', trigger: 'blur' }],
+ measure: [{ required: true, message: '', trigger: 'blur' }],
+ timeout: [{ required: true, message: '', trigger: 'blur' }],
+ timeoutManager: [{ required: true, message: '', trigger: 'blur' }],
+ closed: [{ required: true, message: '', trigger: 'blur' }],
+ unclosedManager: [{ required: true, message: '', trigger: 'blur' }],
+ explosionProof: [{ required: true, message: '', trigger: 'blur' }],
+ fireProof: [{ required: true, message: '', trigger: 'blur' }],
+ poisonProof: [{ required: true, message: '', trigger: 'blur' }],
+ safeManagerMethod: [{ required: true, message: '', trigger: 'blur' }],
+ emergencyList: [{ required: true, message: '', trigger: 'blur' }],
+ partitionCondition: [{ required: true, message: '', trigger: 'blur' }],
+ createExperimentTime: [{ required: true, message: '', trigger: 'blur' }],
+ startTime: [{ required: true, message: '', trigger: 'blur' }]
},
allPersonList: [],
allRoomList: [],
@@ -335,25 +407,17 @@
explosionProof: "",
fireProof: "",
poisonProof: "",
- hazardousWaste: 1,
safeManagerMethod: "",
- emergencyPlan: "",
- emergencyDrill: "",
- emergencyPlanName: "",
- emergencyDrillStatus: "",
- partitionCondition: "",
+ emergencyList: [],
+ partitionCondition: null,
note: "",
createExperimentTime: '',
startTime: '',
- persons: [
- ],
+ persons: [],
siteList: [],
- deviceList: [
- ],
- stuffList: [
- ],
- hazardousWasteList: [
- ]
+ deviceList: [],
+ stuffList: [],
+ hazardousWasteList: []
};
}else if(title === '整改'){
projectDialogState.title = '整改';
@@ -397,6 +461,30 @@
const onSubmitProject = () => {
ProjectFormRef.value.validate(async(valid: boolean) => {
if(valid){
+ if(projectDialogState.projectForm.timeout == 2){
+ projectDialogState.projectForm.timeoutManager = ''
+ }else{
+ if(projectDialogState.projectForm.timeoutManager == ''){
+ ElMessage({
+ type: 'warning',
+ message: '请填写过夜、老化保障措施',
+ duration: 1000
+ });
+ return
+ }
+ }
+ if(projectDialogState.projectForm.closed == 2){
+ projectDialogState.projectForm.unclosedManager = ""
+ }else{
+ if(projectDialogState.projectForm.unclosedManager == ''){
+ ElMessage({
+ type: 'warning',
+ message: '请填写封闭条件保障措施',
+ duration: 1000
+ });
+ return
+ }
+ }
if(projectDialogState.title === '新增'){
if(checkChineseName(projectDialogState.projectForm.safeLiabilityUser) == false){
ElMessage({
@@ -438,14 +526,6 @@
});
return
}
- if(projectDialogState.projectForm.hazardousWasteList.length === 0){
- ElMessage({
- type: 'warning',
- message: '请选择添加危废数据',
- duration: 1000
- });
- return
- }
if(projectDialogState.projectForm.persons.length === 0){
ElMessage({
type: 'warning',
@@ -454,6 +534,7 @@
});
return
}
+ projectDialogState.projectForm.emergencyList = selectEmergencyRef.value.dataList
projectDialogState.projectForm.persons = selectPersonRef.value.dataList
projectDialogState.projectForm.hazardousWasteList = selectDangerRef.value.dataList
projectDialogState.projectForm.siteList = selectRoomRef.value.dataList.map(({siteId}) => ({siteId}))
@@ -646,7 +727,15 @@
.m-color {
color: #0c4995;
}
-
+::v-deep(.el-form-item){
+ height: 100%;
+ display: flex;
+ justify-content: center;
+ .el-form-item__content{
+ display: flex;
+ justify-content: center;
+ }
+}
.roomSelect{
::v-deep(.el-popper){
.el-select-dropdown__item{
diff --git a/src/views/experiment/developing/index.vue b/src/views/experiment/developing/index.vue
index 8ee6f9d..d9744bb 100644
--- a/src/views/experiment/developing/index.vue
+++ b/src/views/experiment/developing/index.vue
@@ -82,6 +82,7 @@
<el-table-column label="操作" width="250" fixed="right">
<template #default="scope">
<el-button size="small" text type="primary" :icon="View" @click="openProjectDialog('查看', scope.row)">查看</el-button>
+ <el-button size="small" text type="primary" :icon="View" v-if="scope.row.stage == 4" @click="openReportDialog('查看',scope.row)">查看评估报告</el-button>
<el-button size="small" :disabled="scope.row.status == 2 ? true : false" text type="primary" :icon="Edit" @click="applyAccess( scope.row)">申请评估</el-button>
<el-button size="small" :disabled="(scope.row.status == 2 && scope.row.stage == 1) ? false : true" text type="warning" :icon="RefreshLeft" @click="cancelAccess( scope.row)">撤销评估</el-button>
<el-button size="small" type="warning" v-if="scope.row.rectifyStatus == 1" text :icon="Edit" @click="openProjectDialog('整改', scope.row)">整改</el-button>
@@ -97,6 +98,7 @@
<develop-dialog ref="DevelopDialogRef" @refresh="getdevelopData"></develop-dialog>
<!-- <apply-start ref="ApplyStartRef"></apply-start>-->
<test ref="ApplyStartRef" @refresh="getdevelopData"></test>
+ <report-dialog ref="ReportDialogRef"></report-dialog>
</div>
</template>
@@ -106,13 +108,13 @@
import {ElMessage, ElMessageBox} from "element-plus";
import { View,Edit, Plus, RefreshLeft } from '@element-plus/icons-vue';
import {roomApi} from "/@/api/basic/room";
-
+const ReportDialog = defineAsyncComponent(() => import('../../analyse/assessApply/components/reportDialog.vue'));
const DevelopDialog = defineAsyncComponent(() => import('./components/developDialog.vue'));
const Test = defineAsyncComponent(() => import('./components/applyDialog.vue'))
-const DevelopDialogRef = ref();
-const ApplyStartRef = ref();
-
+const DevelopDialogRef = ref()
+const ApplyStartRef = ref()
+const ReportDialogRef = ref()
const developState = reactive<ProjectStateType>({
developData: [],
searchQuery: {
@@ -152,6 +154,10 @@
DevelopDialogRef.value.showDevelopDialog(title, value, developState.allRoomList);
};
+const openReportDialog = (title: string,value: ProjectType) =>{
+ ReportDialogRef.value.showReportDialog(title, value, developState.allRoomList);
+}
+
const applyAccess = (val: ProjectType) => {
ElMessageBox.confirm(`此操作将申请评估该实验:“${val.experimentName}”,是否继续?`, '提示', {
confirmButtonText: '确认',
diff --git a/src/views/experiment/project/components/applyDialog.vue b/src/views/experiment/project/components/applyDialog.vue
index 9317925..f77bc86 100644
--- a/src/views/experiment/project/components/applyDialog.vue
+++ b/src/views/experiment/project/components/applyDialog.vue
@@ -17,7 +17,7 @@
</el-form-item>
</el-col>
<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" v-if="applyStartDialogState.applyStartForm.sisStatus==1">
- <el-form-item label="安全信息化系统" prop="safeInformationSystem">
+ <el-form-item label="安全信息化系统名称" prop="safeInformationSystem">
<el-input v-model="applyStartDialogState.applyStartForm.safeInformationSystem" placeholder="材料类型" class="input-length">
</el-input>
</el-form-item>
@@ -42,7 +42,7 @@
const applyStartFormRef = ref()
const applyStartDialogState = reactive<ApplyStartDialogType>({
- title: '申请开展',
+ title: '转为已开展',
applyStartDialogVisible: false,
applyStartForm: {
id: null,
diff --git a/src/views/experiment/project/components/projectDialog.vue b/src/views/experiment/project/components/projectDialog.vue
index 9e234fc..e9fa759 100644
--- a/src/views/experiment/project/components/projectDialog.vue
+++ b/src/views/experiment/project/components/projectDialog.vue
@@ -133,8 +133,8 @@
</el-radio-group>
</el-form-item>
</td>
- <td class="w-25 m-color required">过夜、老化保障措施</td>
- <td class="w-25 m-color">
+ <td class="w-25 m-color required" v-if="projectDialogState.projectForm.timeout === 1">过夜、老化保障措施</td>
+ <td class="w-25 m-color" v-if="projectDialogState.projectForm.timeout === 1">
<el-form-item prop="timeoutManager">
<el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.timeoutManager" />
</el-form-item>
@@ -150,10 +150,10 @@
</el-radio-group>
</el-form-item>
</td>
- <td class="w-25 m-color required">封闭条件保障措施</td>
- <td class="w-25 m-color">
+ <td class="w-25 m-color required" v-if="projectDialogState.projectForm.closed === 1">封闭条件保障措施</td>
+ <td class="w-25 m-color" v-if="projectDialogState.projectForm.closed === 1">
<el-form-item prop="unclosedManager">
- <el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.unclosedManager" />
+ <el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.unclosedManager"/>
</el-form-item>
</td>
</tr>
@@ -200,49 +200,54 @@
<!-- <el-input v-model="projectDialogState.projectForm.systemName" placeholder="请输入" />-->
<!-- </td>-->
<!-- </tr>-->
+<!-- <tr class="m-color b-font" style="text-align: center">应急预案/应急演练</tr>-->
+<!-- <tr>-->
+<!-- <td class="w-25 m-color required">有无预案</td>-->
+<!-- <td class="w-25 m-color required">预案名称</td>-->
+<!-- <td class="w-25 m-color required">是否演练</td>-->
+<!-- <td class="w-25 m-color required">演练情况</td>-->
+<!-- </tr>-->
+<!-- <tr>-->
+<!-- <td class="w-25 m-color">-->
+<!-- <el-form-item prop="emergencyPlan">-->
+<!-- <el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.emergencyPlan" />-->
+<!-- </el-form-item>-->
+<!-- </td>-->
+<!-- <td class="w-25 m-color">-->
+<!-- <el-form-item prop="emergencyPlanName">-->
+<!-- <el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.emergencyPlanName" />-->
+<!-- </el-form-item>-->
+<!-- </td>-->
+<!-- <td class="w-25 m-color">-->
+<!-- <el-form-item prop="emergencyDrillStatus">-->
+<!-- <el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.emergencyDrillStatus" />-->
+<!-- </el-form-item>-->
+<!-- </td>-->
+<!-- <td class="w-25 m-color">-->
+<!-- <el-form-item prop="emergencyDrill">-->
+<!-- <el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.emergencyDrill" />-->
+<!-- </el-form-item>-->
+<!-- </td>-->
+<!-- </tr>-->
+ <select-emergency ref="selectEmergencyRef" v-model:disabled="projectDialogState.disabled" v-model:data="projectDialogState.projectForm.emergencyList"></select-emergency>
<tr>
- <td class="w-25 m-color required">安全管理制度</td>
- <td class="w-75 m-color">
- <el-form-item prop="safeManagerMethod">
- <el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.safeManagerMethod" placeholder="请输入" />
- </el-form-item>
- </td>
- </tr>
- <tr class="m-color b-font" style="text-align: center">应急预案/应急演练</tr>
- <tr>
- <td class="w-25 m-color required">有无预案</td>
- <td class="w-25 m-color required">预案名称</td>
- <td class="w-25 m-color required">是否演练</td>
- <td class="w-25 m-color required">演练情况</td>
- </tr>
- <tr>
- <td class="w-25 m-color">
- <el-form-item prop="emergencyPlan">
- <el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.emergencyPlan" />
- </el-form-item>
- </td>
- <td class="w-25 m-color">
- <el-form-item prop="emergencyPlanName">
- <el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.emergencyPlanName" />
- </el-form-item>
- </td>
- <td class="w-25 m-color">
- <el-form-item prop="emergencyDrillStatus">
- <el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.emergencyDrillStatus" />
- </el-form-item>
- </td>
- <td class="w-25 m-color">
- <el-form-item prop="emergencyDrill">
- <el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.emergencyDrill" />
- </el-form-item>
- </td>
+ <td class="w-25 m-color required">安全管理制度</td>
+ <td class="w-75 m-color">
+ <el-form-item prop="safeManagerMethod">
+ <el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.safeManagerMethod" placeholder="请输入" />
+ </el-form-item>
+ </td>
</tr>
<tr class="m-color b-font" style=" text-align: center">其他信息</tr>
<tr>
<td class="w-25 m-color required">实验场所是否需要分区隔断</td>
<td class="w-75 m-color">
<el-form-item prop="partitionCondition">
- <el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.partitionCondition" placeholder="请输入" />
+<!-- <el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.partitionCondition" placeholder="请输入" />-->
+ <el-radio-group :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.partitionCondition">
+ <el-radio :label="0">是</el-radio>
+ <el-radio :label="1">否</el-radio>
+ </el-radio-group>
</el-form-item>
</td>
</tr>
@@ -278,6 +283,7 @@
const SelectEquipment = defineAsyncComponent(() => import('./selectEquipment.vue'))
const SelectMaterial = defineAsyncComponent(() => import('./selectMaterial.vue'))
+const SelectEmergency = defineAsyncComponent(() => import('./selectEmergency.vue'))
const SelectDanger = defineAsyncComponent(() => import('./selectDanger.vue'))
const SelectPerson = defineAsyncComponent(() => import('./selectPerson.vue'))
const SelectRoom = defineAsyncComponent(() => import('./selectRoom.vue'))
@@ -286,6 +292,7 @@
const selectEquipmentRef = ref()
const selectRoomRef = ref()
const selectMaterialRef = ref()
+const selectEmergencyRef = ref()
const selectDangerRef = ref()
const userInfo = useUserInfo();
@@ -316,24 +323,16 @@
explosionProof: "",
fireProof: "",
poisonProof: "",
- hazardousWaste: null,
safeManagerMethod: "",
- emergencyPlan: "",
- emergencyDrill: "",
- emergencyPlanName: "",
- emergencyDrillStatus: "",
- partitionCondition: "",
+ emergencyList: [],
+ partitionCondition: null,
note: "",
createExperimentTime: '',
- persons: [
- ],
+ persons: [],
siteList: [],
- deviceList: [
- ],
- stuffList: [
- ],
- hazardousWasteList: [
- ]
+ deviceList: [],
+ stuffList: [],
+ hazardousWasteList: []
},
projectFormRules: {
experimentName: [{ required: true, message: '', trigger: 'blur' }],
@@ -355,12 +354,8 @@
explosionProof: [{ required: true, message: '', trigger: 'blur' }],
fireProof: [{ required: true, message: '', trigger: 'blur' }],
poisonProof: [{ required: true, message: '', trigger: 'blur' }],
- hazardousWaste: [{ required: true, message: '', trigger: 'blur' }],
safeManagerMethod: [{ required: true, message: '', trigger: 'blur' }],
- emergencyPlan: [{ required: true, message: '', trigger: 'blur' }],
- emergencyDrill: [{ required: true, message: '', trigger: 'blur' }],
- emergencyPlanName: [{ required: true, message: '', trigger: 'blur' }],
- emergencyDrillStatus: [{ required: true, message: '', trigger: 'blur' }],
+ emergencyList: [{ required: true, message: '', trigger: 'blur' }],
partitionCondition: [{ required: true, message: '', trigger: 'blur' }],
createExperimentTime: [{ required: true, message: '', trigger: 'blur' }]
},
@@ -409,13 +404,9 @@
explosionProof: "",
fireProof: "",
poisonProof: "",
- hazardousWaste: 1,
safeManagerMethod: "",
- emergencyPlan: "",
- emergencyDrill: "",
- emergencyPlanName: "",
- emergencyDrillStatus: "",
- partitionCondition: "",
+ emergencyList: [],
+ partitionCondition: null,
note: "",
createExperimentTime: '',
persons: [],
@@ -450,6 +441,30 @@
const onSubmitProject = () => {
ProjectFormRef.value.validate(async(valid: boolean) => {
if(valid){
+ if(projectDialogState.projectForm.timeout === 2){
+ projectDialogState.projectForm.timeoutManager = ''
+ }else{
+ if(projectDialogState.projectForm.timeoutManager == ''){
+ ElMessage({
+ type: 'warning',
+ message: '请填写过夜、老化保障措施',
+ duration: 1000
+ });
+ return
+ }
+ }
+ if(projectDialogState.projectForm.closed === 2){
+ projectDialogState.projectForm.unclosedManager = ""
+ }else{
+ if(projectDialogState.projectForm.unclosedManager == ''){
+ ElMessage({
+ type: 'warning',
+ message: '请填写封闭条件保障措施',
+ duration: 1000
+ });
+ return
+ }
+ }
if(projectDialogState.title === '新增'){
if(checkChineseName(projectDialogState.projectForm.safeLiabilityUser) == false){
ElMessage({
@@ -491,14 +506,6 @@
});
return
}
- if(projectDialogState.projectForm.hazardousWasteList.length === 0){
- ElMessage({
- type: 'warning',
- message: '请选择添加危废数据',
- duration: 1000
- });
- return
- }
if(projectDialogState.projectForm.persons.length === 0){
ElMessage({
type: 'warning',
@@ -507,6 +514,7 @@
});
return
}
+ projectDialogState.projectForm.emergencyList = selectEmergencyRef.value.dataList
projectDialogState.projectForm.persons = selectPersonRef.value.dataList
projectDialogState.projectForm.hazardousWasteList = selectDangerRef.value.dataList
// projectDialogState.projectForm.siteList = selectRoomRef.value.dataList.map(({siteId}) => ({siteId}))
@@ -529,8 +537,6 @@
});
}
}else{
- console.log(selectRoomRef.value.dataList,'selectRoomRef.value.dataList',selectMaterialRef.value.dataList)
- // projectDialogState.projectForm.siteList = selectRoomRef.value.dataList.map(({siteId}) => ({siteId}))
projectDialogState.projectForm.siteList = selectRoomRef.value.dataList.map(obj => ({siteId:obj.siteId}))
projectDialogState.projectForm.hazardousWasteList = selectDangerRef.value.dataList.map(obj => ({classify:obj.classify,wasteStorage:obj.wasteStorage,handAmount:obj.handAmount}))
let res = await projectApi().modProject(projectDialogState.projectForm)
diff --git a/src/views/experiment/project/components/selectDanger.vue b/src/views/experiment/project/components/selectDanger.vue
index 340442b..26ade11 100644
--- a/src/views/experiment/project/components/selectDanger.vue
+++ b/src/views/experiment/project/components/selectDanger.vue
@@ -2,9 +2,9 @@
<tr class="m-color b-font" style="text-align: center">危废情况</tr>
<tr>
<td class="w-20 m-color">序号</td>
- <td class="w-20 m-color required">废弃物分类</td>
- <td class="w-20 m-color required">存储方式</td>
- <td class="w-20 m-color required">预估处理量</td>
+ <td class="w-20 m-color">废弃物分类</td>
+ <td class="w-20 m-color">存储方式</td>
+ <td class="w-20 m-color">预估处理量</td>
<td class="w-20 m-color">操作</td>
</tr>
<tr v-for="(item,index) in selectDangerState.wasteList" :key="index">
diff --git a/src/views/experiment/project/components/selectEmergency.vue b/src/views/experiment/project/components/selectEmergency.vue
new file mode 100644
index 0000000..50a3993
--- /dev/null
+++ b/src/views/experiment/project/components/selectEmergency.vue
@@ -0,0 +1,181 @@
+<template>
+ <tr class="m-color b-font" style="text-align: center">应急预案/应急演练</tr>
+ <tr>
+ <td class="w-20 m-color">预案名称</td>
+ <td class="w-20 m-color">是否演练</td>
+ <td class="w-20 m-color">演练情况</td>
+ <td class="w-20 m-color">是否备案</td>
+ <td class="w-20 m-color">操作</td>
+ </tr>
+ <tr v-for="(item,index) in selectEmergencyState.emergencyList" :key="index">
+ <td class="w-20">
+ <el-input :disabled="selectEmergencyState.disabled" v-model="item.emergencyPlanName" />
+ </td>
+ <td class="w-20">
+ <el-radio-group :disabled="selectEmergencyState.disabled" v-model="item.emergencyDrillStatus">
+ <el-radio label="是">是</el-radio>
+ <el-radio label="否">否</el-radio>
+ </el-radio-group>
+ </td>
+ <td class="w-20">
+ <el-input :disabled="selectEmergencyState.disabled" v-model="item.emergencyDrill" placeholder="未演练则填“无”"/>
+ </td>
+ <td class="w-20">
+ <el-radio-group :disabled="selectEmergencyState.disabled" v-model="item.emergencyPlan">
+ <el-radio label="是">是</el-radio>
+ <el-radio label="否">否</el-radio>
+ </el-radio-group>
+ </td>
+ <td class="w-20">
+ <el-button :disabled="selectEmergencyState.disabled" type="danger" @click="deleteEmergencyItem(index)">删除</el-button>
+ </td>
+ </tr>
+ <tr style="text-align: center">
+ <el-button :disabled="selectEmergencyState.disabled" type="primary" shape="round" @click="addEmergencyItem()">
+ 添加一条
+ </el-button>
+ </tr>
+</template>
+
+<script setup lang="ts">
+import {defineAsyncComponent, onMounted, reactive, ref, watchEffect} from "vue";
+import {ElMessage} from "element-plus";
+let props = defineProps({
+ disabled: Boolean,
+ data: Array<emergencyListType>
+});
+
+const selectEmergencyState = reactive<SelectEmergencyType>({
+ disabled: false,
+ emergencyList: []
+})
+
+const addEmergencyItem = () => {
+ selectEmergencyState.emergencyList.push({ emergencyPlanName: '', emergencyDrillStatus: '', emergencyDrill: '', emergencyPlan: '' });
+};
+
+watchEffect(() => {
+ selectEmergencyState.emergencyList = props.data as Array<emergencyListType>
+ selectEmergencyState.disabled = props.disabled
+});
+
+const deleteEmergencyItem = (index: number) => {
+ selectEmergencyState.emergencyList.splice(index,1);
+};
+
+const formatList = (formatList: Array<emergencyListType>) => {
+ selectEmergencyState.emergencyList = formatList
+};
+
+defineExpose({
+ dataList: selectEmergencyState.emergencyList,
+ formatList
+});
+
+
+onMounted(() => {
+
+});
+</script>
+
+<style scoped lang="scss">
+.site-layout-background {
+ background: #fff;
+}
+
+.report-table {
+ width: 100%;
+ border-collapse: collapse;
+ border: 1px solid #337ecc;
+ margin: 20px 0;
+
+ th {
+ padding: 10px 0;
+ border: 1px solid #337ecc;
+ border-left: none;
+ }
+
+ tr {
+ width: 100%;
+ height: 44px;
+ line-height: 42px;
+ border-bottom: 1px solid #ccc;
+
+ &:last-of-type {
+ border-bottom: none;
+ }
+
+ td {
+ border-right: 1px solid #ccc;
+ display: inline-block;
+ height: 44px;
+ vertical-align: middle;
+ text-align: center;
+ line-height: 42px;
+
+ &:last-of-type {
+ border-right: none;
+ }
+
+ &.required {
+ &::before {
+ content: "*";
+ display: inline-block;
+ color: red;
+ }
+ }
+
+ &.w-14 {
+ width: calc((100/7)/100 * 100%);
+ }
+
+ &.w-16 {
+ width: calc((100/6)/100 * 100%);
+ }
+
+ &.w-18 {
+ width: 16.59%;
+ }
+
+ &.w-20 {
+ width: 20%;
+ }
+
+ &.w-25 {
+ width: 25%;
+ }
+
+ &.w-50 {
+ width: 50%;
+ }
+
+ &.w-75 {
+ width: 75%;
+ }
+
+ .ant-input {
+ height: 100%;
+ border: none;
+ background: #f5f7fa;
+ }
+
+ .ant-picker {
+ width: 100%;
+ height: 100%;
+ }
+ :deep(.el-input__wrapper ){
+ box-shadow: none;
+ }
+ }
+ }
+
+ .b-font {
+ font-size: 16px;
+ font-weight: bolder;
+ }
+}
+
+.m-color {
+ color: #0c4995;
+}
+</style>
diff --git a/src/views/experiment/project/index.ts b/src/views/experiment/project/index.ts
index eacbe83..5235c46 100644
--- a/src/views/experiment/project/index.ts
+++ b/src/views/experiment/project/index.ts
@@ -54,13 +54,9 @@
explosionProof: string,
fireProof: string,
poisonProof: string,
- hazardousWaste: null | number,
safeManagerMethod: string,
- emergencyPlan: string,
- emergencyDrill: string,
- emergencyPlanName: string,
- emergencyDrillStatus: string,
- partitionCondition: string,
+ emergencyList: Array<emergencyListType>,
+ partitionCondition: null | number,
note: string,
startTime?: string,
createExperimentTime: string
@@ -152,6 +148,18 @@
stuffUnitList: Array<stuffType>
}
+declare interface SelectEmergencyType {
+ disabled: boolean
+ emergencyList: Array<emergencyListType>
+}
+
+declare interface emergencyListType {
+ emergencyPlanName: string,
+ emergencyDrillStatus: string,
+ emergencyDrill: string,
+ emergencyPlan: string
+}
+
declare interface SelectRoomType {
disabled: boolean
roomList: Array<roomListType>,
@@ -198,7 +206,6 @@
stuffStorage: string,
stuffUnit: string
}
-
declare interface ApplyStartDialogType {
title: string,
diff --git a/src/views/experiment/project/index.vue b/src/views/experiment/project/index.vue
index c56d58a..0eb8355 100644
--- a/src/views/experiment/project/index.vue
+++ b/src/views/experiment/project/index.vue
@@ -82,9 +82,11 @@
<el-table-column label="操作" width="250" fixed="right">
<template #default="scope">
<el-button size="small" text type="primary" :icon="View" @click="openProjectDialog('查看', scope.row)">查看</el-button>
- <el-button size="small" text type="primary" :icon="Edit" @click="applyStart('申请开展', scope.row)">申请开展</el-button>
+ <el-button size="small" text type="primary" :icon="View" v-if="scope.row.stage == 4" @click="openReportDialog('查看',scope.row)">查看评估报告</el-button>
+ <el-button size="small" text type="primary" :icon="Edit" @click="applyStart('申请开展', scope.row)">转为已开展</el-button>
+ <el-button size="small" :disabled="scope.row.status == 2 ? true : false" text type="primary" :icon="Edit" @click="applyAccess( scope.row)">申请评估</el-button>
<el-button size="small" type="warning" v-if="scope.row.rectifyStatus == 1" text :icon="Edit" @click="openProjectDialog('整改', scope.row)">整改</el-button>
- <el-button size="small" text type="danger" :icon="Delete" @click="onDelProject(scope.row)">删除</el-button>
+ <el-button size="small" text type="danger" :icon="Delete" :disabled="scope.row.stage !== 1" @click="onDelProject(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
@@ -97,6 +99,7 @@
<project-dialog ref="ProjectDialogRef" @refresh="getProjectData"></project-dialog>
<!-- <apply-start ref="ApplyStartRef"></apply-start>-->
<test ref="ApplyStartRef" @refresh="getProjectData"></test>
+ <report-dialog ref="ReportDialogRef"></report-dialog>
</div>
</template>
@@ -106,13 +109,12 @@
import {ElMessage, ElMessageBox} from "element-plus";
import { View,Edit, Plus, Delete } from '@element-plus/icons-vue';
import {roomApi} from "/@/api/basic/room";
-
+const ReportDialog = defineAsyncComponent(() => import('../../analyse/assessApply/components/reportDialog.vue'));
const ProjectDialog = defineAsyncComponent(() => import('./components/projectDialog.vue'));
const Test = defineAsyncComponent(() => import('./components/applyDialog.vue'))
-
-const ProjectDialogRef = ref();
-const ApplyStartRef = ref();
-
+const ProjectDialogRef = ref()
+const ApplyStartRef = ref()
+const ReportDialogRef = ref()
const projectState = reactive<ProjectStateType>({
projectData: [],
searchQuery: {
@@ -152,10 +154,40 @@
ProjectDialogRef.value.showProjectDialog(title, value, projectState.allRoomList);
};
+const openReportDialog = (title: string,value: ProjectType) =>{
+ ReportDialogRef.value.showReportDialog(title, value, projectState.allRoomList);
+}
+
const applyStart = (title: string, value: ProjectType) => {
ApplyStartRef.value.showApplyStartDialog(value);
};
+const applyAccess = (val: ProjectType) => {
+ ElMessageBox.confirm(`此操作将申请评估该实验:“${val.experimentName}”,是否继续?`, '提示', {
+ confirmButtonText: '确认',
+ cancelButtonText: '取消',
+ type: 'warning'
+ })
+ .then(async () => {
+ let res = await projectApi().accessProject([val.id]);
+ if (res.data.code === 100) {
+ ElMessage({
+ type: 'success',
+ duration: 2000,
+ message: '申请成功'
+ });
+ await getProjectData();
+ } else {
+ ElMessage({
+ type: 'warning',
+ message: res.data.msg
+ });
+ }
+ })
+ .catch((error) => {
+ });
+}
+
const onDelProject = (val: ProjectType) => {
ElMessageBox.confirm(`此操作将永久删除该实验:“${val.experimentName}”,是否继续?`, '提示', {
confirmButtonText: '确认',
diff --git a/src/views/loginPage/loginPage.vue b/src/views/loginPage/loginPage.vue
index a264634..29c9c52 100644
--- a/src/views/loginPage/loginPage.vue
+++ b/src/views/loginPage/loginPage.vue
@@ -2,7 +2,7 @@
<div class="login-container">
<div class="loginContent">
<div class="loginPanel">
- <div class="welcc">科学研究实验风险评估系统</div>
+ <div class="welcc">科学研究实验安全风险评估系统</div>
<div class="loginGroup">
<div class="loginPic">
<img src="../../assets/loginPage/login-pic.png">
@@ -168,6 +168,9 @@
color: #485BD4;
letter-spacing: 6px;
white-space: nowrap;
+ position: relative;
+ z-index: 9999;
+ text-shadow: 0 3px 5px rgba(72,91,212,.4);
}
:deep(.loginGroup){
diff --git a/src/views/system/role/index.vue b/src/views/system/role/index.vue
index 59ba2eb..f9b3ded 100644
--- a/src/views/system/role/index.vue
+++ b/src/views/system/role/index.vue
@@ -9,12 +9,12 @@
<!-- </el-icon>-->
<!-- 查询-->
<!-- </el-button>-->
- <el-button size="default" type="success" class="ml10" @click="onOpenDialogRef('新增', '')">
- <el-icon>
- <ele-FolderAdd />
- </el-icon>
- 新增角色
- </el-button>
+<!-- <el-button size="default" type="success" class="ml10" @click="onOpenDialogRef('新增', '')">-->
+<!-- <el-icon>-->
+<!-- <ele-FolderAdd />-->
+<!-- </el-icon>-->
+<!-- 新增角色-->
+<!-- </el-button>-->
</div>
<el-table :data="tableData.data" style="width: 100%">
<el-table-column type="index" label="序号" width="60" />
--
Gitblit v1.9.2