| | |
| | | }); |
| | | }, |
| | | |
| | | 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', |
| | |
| | | <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> |
| | |
| | | width: 75%; |
| | | } |
| | | |
| | | &.redTit{ |
| | | color: red; |
| | | } |
| | | |
| | | &.autoheight { |
| | | min-height: 44px; |
| | | height: auto; |
| | |
| | | <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="风险单元编号"/> |
| | |
| | | <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> |
| | |
| | | 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>({ |
| | |
| | | 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 () => { |
| | |
| | | }; |
| | | |
| | | 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({ |
| | |
| | | } |
| | | } |
| | | |
| | | 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({ |
| | |
| | | <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> |
| | |
| | | <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> |
| | |
| | | const riskUnitFormRef = ref() |
| | | |
| | | const riskUnitDialogState = reactive<RiskUnitDialogType>({ |
| | | title: '新增', |
| | | title: '', |
| | | experimentType: 2, |
| | | disabled: false, |
| | | riskUnitDialogVisible: false, |
| | | riskUnitForm: { |
| | | id: null, |
| | | experimentId: null, |
| | | riskCode: '', |
| | | riskName: '', |
| | |
| | | ], |
| | | }) |
| | | |
| | | 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(); |
| | | }); |
| | | if(title === '新增'){ |
| | | riskUnitDialogState.title = '新增'; |
| | | riskUnitDialogState.riskUnitForm = { |
| | | id: null, |
| | | experimentId: id, |
| | | riskCode: '', |
| | | riskName: '', |
| | | riskUnitTypeId: null, |
| | | liabilityUserId: liabilityUserId, |
| | | 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') |
| | |
| | | <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> |
| | |
| | | declare interface EvaluateStateType { |
| | | evaluateData: Array<EvaluateType> |
| | | evaluateData: Array<IdentifyType> |
| | | user: null| number |
| | | currentEvalute:{} |
| | | evaluateDialog:boolean |
| | | searchQuery: { |
| | | pageIndex: number, |
| | | pageSize: number, |
| | |
| | | <!-- </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> |
| | |
| | | </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> |
| | |
| | | </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> |
| | |
| | | </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> |
| | | |
| | |
| | | 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, |
| | |
| | | } |
| | | }; |
| | | |
| | | const getDataAndClose =()=>{ |
| | | evaluateState.evaluateDialog = false |
| | | getEvaluateData() |
| | | } |
| | | |
| | | const getAllPlanList = async () => { |
| | | let res = await planApi().getAllPlan(); |
| | | if(res.data.code === 100){ |
| | |
| | | }) |
| | | } |
| | | }; |
| | | |
| | | const openEvaluate = (value: IdentifyType) => { |
| | | evaluateState.evaluateDialog = true |
| | | evaluateState.currentEvalute = value |
| | | } |
| | | |
| | | const openEvaluateDialog = (title: string, value: IdentifyType) => { |
| | | evaluateDialogRef.value.showEvaluateDialog(title, value); |
| | |
| | | getEvaluateData(); |
| | | getAllPlanList(); |
| | | getPersonList(); |
| | | evaluateState.user = Number(userInfos.value.uid) |
| | | }); |
| | | |
| | | </script> |
| | |
| | | }; |
| | | }else if(title === '查看'){ |
| | | identifyDialogState.title = '查看'; |
| | | console.log(value,'value') |
| | | identifyDialogState.disabled = true |
| | | for(let i in identifyDialogState.identifyForm){ |
| | | if(isValidKey(i, identifyDialogState.identifyForm)){ |
| | |
| | | } |
| | | }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]; |
| | |
| | | }); |
| | | } |
| | | }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', |
| | |
| | | }; |
| | | |
| | | const onDelIdentifyQuery = (index: number, val: IdentifyType) => { |
| | | console.log(val,'val') |
| | | ElMessageBox.confirm(`此操作将永久删除该辨识,是否继续?`, '提示', { |
| | | confirmButtonText: '确认', |
| | | cancelButtonText: '取消', |
| | |
| | | declare interface IdentifyStateType { |
| | | identifyData: Array<IdentifyType> |
| | | user: null | number |
| | | searchQuery: { |
| | | pageIndex: number, |
| | | pageSize: number, |
| | |
| | | sclCheckResult: string, |
| | | planExecStatus?: number, |
| | | evaluateMethod?: number, |
| | | factorQueryDTOList?: IdentifyType [], |
| | | factorQueryDTOList?: EvaluateType [], |
| | | evaluateUser?: string, |
| | | result?: number | null, |
| | | identificationDesc: string |
| | |
| | | </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> |
| | |
| | | </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> |
| | |
| | | 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, |
| | |
| | | getIdentifyData(); |
| | | getAllPlanList(); |
| | | getPersonList(); |
| | | identifyState.user = Number(userInfos.value.uid) |
| | | }); |
| | | |
| | | </script> |
| | |
| | | </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" |
| | |
| | | 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"> |
| | |
| | | }) |
| | | </script> |
| | | |
| | | <style scoped> |
| | | |
| | | <style lang="scss" scoped> |
| | | ::v-deep(.pickTime){ |
| | | position: absolute !important; |
| | | top: 0 !important; |
| | | } |
| | | </style> |
| | |
| | | |
| | | |
| | | const PlanDialog = defineAsyncComponent(() => import('./components/planDialog.vue')); |
| | | |
| | | const planDialogRef = ref(); |
| | | const userInfo = useUserInfo(); |
| | | const { userInfos } = storeToRefs(userInfo); |
| | |
| | | getPlanData(); |
| | | getAllRiskUnitList(); |
| | | getPersonList(); |
| | | planState.user = userInfos.value.uid |
| | | planState.user = Number(userInfos.value.uid) |
| | | }) |
| | | |
| | | </script> |
| | |
| | | |
| | | 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, |
| | |
| | | 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', |
| | |
| | | <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> |
| | |
| | | <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> |
| | |
| | | <!-- :label="item.personName"--> |
| | | <!-- ></el-option>--> |
| | | <!-- </el-select>--> |
| | | <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-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-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> |
| | |
| | | <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-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-form-item prop="safeManagerMethod"> |
| | | <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" /> |
| | | </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> |
| | |
| | | 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); |
| | | |
| | |
| | | explosionProof: "", |
| | | fireProof: "", |
| | | poisonProof: "", |
| | | hazardousWaste: null, |
| | | safeManagerMethod: "", |
| | | emergencyPlan: "", |
| | | emergencyDrill: "", |
| | | emergencyPlanName: "", |
| | | emergencyDrillStatus: "", |
| | | partitionCondition: "", |
| | | emergencyList: [], |
| | | partitionCondition: null, |
| | | note: "", |
| | | createExperimentTime: '', |
| | | startTime: '', |
| | |
| | | ] |
| | | }, |
| | | 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: [], |
| | |
| | | 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 = '整改'; |
| | |
| | | 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({ |
| | |
| | | }); |
| | | return |
| | | } |
| | | if(projectDialogState.projectForm.hazardousWasteList.length === 0){ |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: '请选择添加危废数据', |
| | | duration: 1000 |
| | | }); |
| | | return |
| | | } |
| | | if(projectDialogState.projectForm.persons.length === 0){ |
| | | ElMessage({ |
| | | type: 'warning', |
| | |
| | | }); |
| | | 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})) |
| | |
| | | .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{ |
| | |
| | | <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> |
| | |
| | | <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> |
| | | |
| | |
| | | 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: { |
| | |
| | | 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: '确认', |
| | |
| | | </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> |
| | |
| | | const applyStartFormRef = ref() |
| | | |
| | | const applyStartDialogState = reactive<ApplyStartDialogType>({ |
| | | title: '申请开展', |
| | | title: '转为已开展', |
| | | applyStartDialogVisible: false, |
| | | applyStartForm: { |
| | | id: null, |
| | |
| | | </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> |
| | |
| | | </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> |
| | |
| | | <!-- <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> |
| | | </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> |
| | | <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> |
| | |
| | | |
| | | 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')) |
| | |
| | | const selectEquipmentRef = ref() |
| | | const selectRoomRef = ref() |
| | | const selectMaterialRef = ref() |
| | | const selectEmergencyRef = ref() |
| | | const selectDangerRef = ref() |
| | | |
| | | const userInfo = useUserInfo(); |
| | |
| | | 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' }], |
| | |
| | | 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' }] |
| | | }, |
| | |
| | | explosionProof: "", |
| | | fireProof: "", |
| | | poisonProof: "", |
| | | hazardousWaste: 1, |
| | | safeManagerMethod: "", |
| | | emergencyPlan: "", |
| | | emergencyDrill: "", |
| | | emergencyPlanName: "", |
| | | emergencyDrillStatus: "", |
| | | partitionCondition: "", |
| | | emergencyList: [], |
| | | partitionCondition: null, |
| | | note: "", |
| | | createExperimentTime: '', |
| | | persons: [], |
| | |
| | | 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({ |
| | |
| | | }); |
| | | return |
| | | } |
| | | if(projectDialogState.projectForm.hazardousWasteList.length === 0){ |
| | | ElMessage({ |
| | | type: 'warning', |
| | | message: '请选择添加危废数据', |
| | | duration: 1000 |
| | | }); |
| | | return |
| | | } |
| | | if(projectDialogState.projectForm.persons.length === 0){ |
| | | ElMessage({ |
| | | type: 'warning', |
| | |
| | | }); |
| | | 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})) |
| | |
| | | }); |
| | | } |
| | | }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) |
| | |
| | | <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"> |
对比新文件 |
| | |
| | | <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> |
| | |
| | | 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 |
| | |
| | | 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>, |
| | |
| | | stuffStorage: string, |
| | | stuffUnit: string |
| | | } |
| | | |
| | | |
| | | declare interface ApplyStartDialogType { |
| | | title: string, |
| | |
| | | <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> |
| | |
| | | <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> |
| | | |
| | |
| | | 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: { |
| | |
| | | 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: '确认', |
| | |
| | | <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"> |
| | |
| | | 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){ |
| | |
| | | <!-- </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" /> |