From 1536c360aad6a5c33dde3c29c7a83cd44c5c5b8a Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: Wed, 09 Aug 2023 13:26:38 +0800
Subject: [PATCH] 删除修改
---
/dev/null | 967 --------------------------------------------------
src/views/system/role/index.vue | 14
src/views/system/user/index.vue | 12
src/views/system/home/index.vue | 2
src/views/bigScreen/index.vue | 39 ++
src/views/loginPage/component/accountLogin.vue | 7
src/views/system/user/component/userDialog.vue | 94 ----
7 files changed, 55 insertions(+), 1,080 deletions(-)
diff --git a/src/views/analyse/applyReview/components/reportDialog.vue b/src/views/analyse/applyReview/components/reportDialog.vue
deleted file mode 100644
index 66e8843..0000000
--- a/src/views/analyse/applyReview/components/reportDialog.vue
+++ /dev/null
@@ -1,591 +0,0 @@
-<template>
- <div class="system-menu-dialog-container">
- <el-dialog :title="reportDialogState.title" v-model="reportDialogState.reportDialogVisible" width="80%">
- <div style="text-align: center;font-size: 20px;font-weight: bolder;color: #0c4995">{{reportDialogState.reportForm.experimentName}}实验安全风险评估报告表(带<span style="color: red">*</span>为填写内容)</div>
- <el-form ref="reportFormRef" :rules="reportDialogState.reportFormRules" :model="reportDialogState.reportForm" size="default" label-width="0">
- <table class="report-table">
- <th class="m-color b-font" style="text-align: center">实验基本信息</th>
- <tr>
- <td class="w-25 m-color">实验名称</td>
- <td class="w-75 m-color">
- <el-form-item prop="experimentName">
- <el-input readonly v-model="reportDialogState.reportForm.experimentName" placeholder="请输入实验名称" />
- </el-form-item>
- </td>
- </tr>
- <tr>
- <td class="w-25 m-color">实验类型</td>
- <td class="w-75" style="text-align: left;padding-left: 11px">
-<!-- <el-radio-group style="text-align: center" disabled v-model="reportDialogState.reportForm.experimentType">-->
-<!-- <el-radio :label="1">化学类</el-radio>-->
-<!-- <el-radio :label="2">生物类</el-radio>-->
-<!-- <el-radio :label="3">辐射类</el-radio>-->
-<!-- <el-radio :label="4">机电类</el-radio>-->
-<!-- <el-radio :label="5">特种设备类</el-radio>-->
-<!-- <el-radio :label="6">其他类</el-radio>-->
-<!-- </el-radio-group>-->
- {{reportDialogState.experimentTypeList.find(i=>i.id === reportDialogState.reportForm.experimentType)?.name}}
- </td>
- </tr>
- <tr>
- <td class="w-25 m-color">负责人</td>
- <td class="w-25 m-color">
-<!-- <el-select style="width: 100%" disabled v-model="reportDialogState.reportForm.liabilityUserId" clearable filterable @change="getLiabilityUserPhone($event)">-->
-<!-- <el-option-->
-<!-- v-for="item in reportDialogState.systemPersonList"-->
-<!-- :key="item.id"-->
-<!-- :value="item.id"-->
-<!-- :label="item.realName"-->
-<!-- ></el-option>-->
-<!-- </el-select>-->
- <el-input readonly v-model="reportDialogState.reportForm.personUser" />
- </td>
- <td class="w-25 m-color">电话</td>
- <td class="w-25 m-color">
- <el-input disabled v-model="reportDialogState.reportForm.personUserPhone" />
- </td>
- </tr>
- <tr>
- <td class="w-25 m-color">安全负责人</td>
- <td class="w-25 m-color">
-<!-- <el-select v-if="reportDialogState.reportForm.safeLiabilityUserId" style="width: 100%" disabled v-model="reportDialogState.reportForm.safeLiabilityUserId" @change="getSafeLiabilityUserPhone($event)" clearable filterable>-->
-<!-- <el-option-->
-<!-- v-for="item in reportDialogState.allPersonList"-->
-<!-- :key="item.id"-->
-<!-- :value="item.id"-->
-<!-- :label="item.personName"-->
-<!-- ></el-option>-->
-<!-- </el-select>-->
- <el-input disabled v-model="reportDialogState.reportForm.safePersonUser" />
- </td>
- <td class="w-25 m-color">电话</td>
- <td class="w-25 m-color">
- <el-input readonly v-model="reportDialogState.reportForm.safePersonUserPhone" />
- </td>
- </tr>
- <tr>
- <td class="w-25 m-color">部门</td>
- <td class="w-75 m-color">
- <el-input readonly v-model="reportDialogState.reportForm.dep" />
- </td>
- </tr>
- <tr class="m-color b-font" style="text-align: center">实验场所</tr>
- <tr>
- <td class="w-14 m-color">场所名称</td>
- <td class="w-14 m-color">所在楼栋</td>
- <td class="w-14 m-color">房间</td>
- <td class="w-14 m-color">有无消防设施</td>
- <td class="w-14 m-color">有无隔断</td>
- <td class="w-14 m-color">场所性质</td>
- </tr>
- <tr v-for="(item,index) in reportDialogState.reportForm.experimentSite" :key="index">
- <td class="w-14">
-<!-- <el-select disabled filterable v-model="item.siteId">-->
-<!-- <el-option-->
-<!-- v-for="item in reportDialogState.allRoomList"-->
-<!-- :key="item.id"-->
-<!-- :value="item.id"-->
-<!-- :label="item.siteName"-->
-<!-- >-->
-<!-- </el-option>-->
-<!-- </el-select>-->
- <el-input disabled v-model="item.siteName" />
- </td>
- <td class="w-14">
- <el-input disabled v-model="item.floor" />
- </td>
- <td class="w-14">
- <el-input disabled v-model="item.room" />
- </td>
- <td class="w-14">
- <div>{{item.fireFacilities== 1 ? '有' : item.fireFacilities== 2 ? '无' : ''}}</div>
- </td>
- <td class="w-14">
- <div>{{item.partitionStatus == 1 ? '有' : item.partitionStatus == 2 ? '无' : ''}}</div>
- </td>
- <td class="w-14">
- <div>{{item.siteType}}</div>
- </td>
- </tr>
-
- <tr class="m-color b-font" style="text-align: center">实验概况</tr>
- <tr>
- <el-input type="textarea" :autosize="{ minRows: 3}" disabled v-model="reportDialogState.reportForm.experimentDesc" placeholder="(简要描述实验原理、实验步骤、所用试剂或材料设备等)" />
- </tr>
- <tr class="m-color b-font" style="text-align: center">实验涉及的危险源</tr>
- <tr>
- <td class="w-25 m-color">危险源种类</td>
- <td class="w-75 m-color">
-<!-- <el-radio-group disabled v-model="reportDialogState.reportForm.dangerSource">-->
-<!-- <el-radio :label="1">化学安全</el-radio>-->
-<!-- <el-radio :label="2">辐射安全</el-radio>-->
-<!-- <el-radio :label="3">特种设备安全</el-radio>-->
-<!-- <el-radio :label="4">机电安全</el-radio>-->
-<!-- <el-radio :label="5">电气安全</el-radio>-->
-<!-- <el-radio :label="6">生物安全</el-radio>-->
-<!-- <el-radio :label="7">激光安全</el-radio>-->
-<!-- <el-radio :label="8">其他安全</el-radio>-->
-<!-- </el-radio-group>-->
- <el-checkbox-group disabled>
- <el-checkbox v-for="item in reportDialogState.reportForm.riskSourceType" :label="item.riskSourceType" :checked="item.status==1?true:false"/>
- </el-checkbox-group>
- </td>
- </tr>
- <select-danger ref="selectDangerRef" v-model:data="reportDialogState.reportForm.riskSource" v-model:disabled="reportDialogState.disabled"></select-danger>
- <tr class="m-color b-font required" style="text-align: center">安全风险分析(总结)</tr>
- <tr>
- <el-input type="textarea" :autosize="{ minRows: 3}" :disabled="reportDialogState.disabled" v-model="reportDialogState.reportForm.safeRiskAnalysis" placeholder="1.实验过程中是否有爆炸、火灾、腐蚀、中毒风险、产生危险废弃物等(根据危险源清单,分析实验过程中可能对人身安全、人体健康、实验室环境和周边环境等带来的负面影响)" />
- </tr>
- <tr class="m-color b-font" style="text-align: center">拟采取的防护和应急措施</tr>
- <tr>
- <el-input type="textarea" :autosize="{ minRows: 3}" disabled v-model="reportDialogState.reportForm.emergencyMeasure" placeholder="" />
- </tr>
- <tr class="m-color b-font required" style="text-align: center">实验和实验项目综合风险等级评定</tr>
- <tr>
- <td class="m-color" style="width: 100%">
- <el-radio-group :disabled="reportDialogState.disabled" v-model="reportDialogState.reportForm.assessLevel">
- <el-radio :label="1">重大风险(一级)</el-radio>
- <el-radio :label="2">较大风险(二级)</el-radio>
- <el-radio :label="3">一般风险(三级)</el-radio>
- <el-radio :label="4">低风险(四级)</el-radio>
- </el-radio-group>
- </td>
- </tr>
- <tr>
- <el-input type="textarea" :autosize="{ minRows: 3}" :disabled="reportDialogState.disabled" v-model="reportDialogState.reportForm.description" placeholder="评定依据(必填)" />
- </tr>
- <tr>
- <td class="w-25 m-color required">评估人</td>
- <td class="w-75 m-color">
- <!-- <el-select style="width: 100%" :disabled="reportDialogState.disabled" v-model="reportDialogState.reportForm.assessPerson" clearable filterable>-->
- <!-- <el-option-->
- <!-- v-for="item in reportDialogState.allPersonList"-->
- <!-- :key="item.id"-->
- <!-- :value="item.id"-->
- <!-- :label="item.personName"-->
- <!-- ></el-option>-->
- <!-- </el-select>-->
- <el-input :disabled="reportDialogState.disabled" v-model="reportDialogState.reportForm.assessPerson" placeholder="评估人" />
- </td>
- <!-- <td class="w-25 m-color required">评估时间</td>-->
- <!-- <td class="w-25 m-color">-->
- <!-- <el-date-picker :disabled="reportDialogState.disabled" type="datetime" format="YYYY/MM/DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" v-model="reportDialogState.reportForm.assessTime" />-->
- <!-- </td>-->
- </tr>
- <tr v-if="reportDialogState.reportForm.person?.length>0" class="m-color b-font" style="text-align: center">审批内容</tr>
- <template v-if="reportDialogState.reportForm.person?.length>0" v-for="item in reportDialogState.reportForm.person">
- <tr>
- <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" :class="item.approveStatus==3?'redTit':''">{{item.approveStatus==1?'未审批':item.approveStatus==2?'通过':'未通过'}}</td>
- </tr>
- <tr>
- <td class="w-25 m-color autoheight">审批意见</td>
- <td class="w-75 autoheight l-border">
- {{ item.approveDesc }}
- </td>
- </tr>
- </template>
- </table>
- </el-form>
- <template #footer>
- <span class="dialog-footer" style="padding-top:10px;text-align: center !important;">
- <el-button @click="reportDialogState.reportDialogVisible = !reportDialogState.reportDialogVisible" size="default">取 消</el-button>
- <el-button type="primary" v-if="!reportDialogState.disabled" @click="onSubmitProject()" size="default">提交审批</el-button>
- </span>
- </template>
- </el-dialog>
- </div>
-</template>
-
-<script setup lang="ts">
-import {defineAsyncComponent, nextTick, onMounted, reactive, ref} from "vue";
-import {ElMessage} from "element-plus";
-import {projectApi} from "/@/api/experiment/project";
-import {personApi} from "/@/api/basic/person";
-import {userApi} from "/@/api/systemManage/user";
-import {roomApi} from "/@/api/basic/room";
-import {assessApplyApi} from "/@/api/analyse/assessApply";
-
-const SelectDanger = defineAsyncComponent(() => import('./selectDanger.vue'))
-const selectDangerRef = ref()
-const reportFormRef = ref()
-const reportDialogState = reactive<ReportDialogType>({
- title: '',
- disabled: false,
- reportDialogVisible: false,
- reportForm: {
- id: null,
- experimentName: "",
- experimentType: null,
- personUser: '',
- personUserId: null,
- personUserPhone: '',
- safePersonUserId: null,
- safePersonUser: '',
- safePersonUserPhone: '',
- dep: "",
- experimentSite: [],
- experimentDesc: '',
- emergencyMeasure: '',
- assessPerson:'',
- safeRiskAnalysis: '',
- assessLevel:null,
- riskSource: [],
- riskSourceType: [],
- description: '',
- person: []
- },
- reportFormRules: {
- assessPerson: [{ required: true, message: '请填写评估人员', trigger: 'blur' }],
- safeRiskAnalysis: [{ required: true, message: '请填写安全风险分析', trigger: 'blur' }],
- assessLevel: [{ required: true, message: '请选择风险等级评定', trigger: 'blur' }],
- description: [{ required: true, message: '请填写风险等级评定依据', trigger: 'blur' }],
- },
- allPersonList: [],
- allRoomList: [],
- systemPersonList: [],
- experimentTypeList: [
- {id: 1, name: '化学类'},
- {id: 2, name: '生物类'},
- {id: 3, name: '辐射类'},
- {id: 4, name: '机电类'},
- {id: 5, name: '特种设备类'},
- {id: 6, name: '其它类'}
- ]
-})
-
-const showReportDialog = (title: string, value: ProjectType, allRoomList: RoomType []) => {
- getReportData(value.experimentId)
- reportDialogState.reportDialogVisible = true;
- reportDialogState.allRoomList = allRoomList
- setTimeout(() => {
- reportFormRef.value.clearValidate();
- });
- if(title === '提交'){
- reportDialogState.title = '提交报告';
- reportDialogState.disabled = false
- // for(let i in reportDialogState.reportForm) {
- // if(isValidKey(i, reportDialogState.reportForm)) {
- // reportDialogState.reportForm[i] = value[i];
- // }
- // }
- }else if(title === '修改'){
- reportDialogState.title = '修改报告';
- reportDialogState.disabled = false
- }else{
- reportDialogState.title = '查看';
- reportDialogState.disabled = true
- // for(let i in reportDialogState.reportForm) {
- // if(isValidKey(i, reportDialogState.reportForm)) {
- // reportDialogState.reportForm[i] = value[i];
- // }
- // }
- }
-};
-
-const isValidKey = (key: string | number | symbol, object:object): key is keyof typeof object =>{
- return key in object;
-};
-
-const getReportData = async (id:number|null|undefined) => {
- let res = await assessApplyApi().getRiskReportPage({
- experimentId: id,
- pageIndex: 1,
- pageSize: 10,
- tag: 3
- });
- if(res.data.code === 100){
- for(let i in reportDialogState.reportForm) {
- if(isValidKey(i, reportDialogState.reportForm)) {
- reportDialogState.reportForm[i] = res.data.data[0][i];
- }
- }
- console.log(reportDialogState.reportForm,'reportDialogState.reportForm')
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- });
- }
-};
-
-// const getLiabilityUserPhone = (value: number)=>{
-// const data = reportDialogState.systemPersonList.find(item => item.id === value) as AllPersonListType
-// reportDialogState.reportForm.liabilityUserPhone = data.phone
-// }
-//
-// const getSafeLiabilityUserPhone = (value: number)=>{
-// const data = reportDialogState.allPersonList.find(item => item.id === value) as AllPersonListType
-// reportDialogState.reportForm.safeLiabilityUserPhone = data.phone
-// }
-
-// const hasSafeSystem = (value: number) =>{
-// if(value == 2){
-// reportDialogState.reportForm.safeInformationSystem = ''
-// }
-// }
-
-const onSubmitProject = () => {
- reportFormRef.value.validate(async(valid: boolean) => {
- if(valid){
- const { id,assessPerson,safeRiskAnalysis,assessLevel,description } = reportDialogState.reportForm
- const data = { id,assessPerson,safeRiskAnalysis,assessLevel,description }
- if(reportDialogState.title === '提交报告'){
- let res = await assessApplyApi().updateRiskReport(data);
- if(res.data.code === 100){
- emit('refresh')
- reportDialogState.reportDialogVisible = false;
- ElMessage({
- type: 'success',
- message: '提交报告成功'
- })
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg,
- });
- }
- }else{
- let res = await assessApplyApi().updateRiskReportInfo(data)
- if(res.data.code === 100){
- emit('refresh')
- reportDialogState.reportDialogVisible = false;
- ElMessage({
- type: 'success',
- message: '修改报告成功'
- })
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg,
- });
- }
- }
- }else{
- ElMessage({
- type: 'warning',
- message: '请完善基本信息',
- });
- }
- })
-};
-
-const getPersonList = async () => {
- let res = await userApi().getUserList({
- pageIndex: 1,
- pageSize: 99999,
- searchParams:{
- roleId: null,
- name: '',
- realName: ''
- }
- });
- if(res.data.code === 100){
- reportDialogState.systemPersonList = JSON.parse(JSON.stringify(res.data.data));
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- })
- }
-};
-
-const getAllPersonList = async () => {
- let res = await personApi().getAllPerson();
- if(res.data.code === 100){
- reportDialogState.allPersonList = JSON.parse(JSON.stringify(res.data.data));
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- })
- }
-};
-
-const emit = defineEmits(['refresh']);
-
-defineExpose({
- showReportDialog,
-});
-
-onMounted(() => {
- getAllPersonList();
- getPersonList()
-});
-</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;
-
- &.required {
- &::before {
- content: "*";
- display: inline-block;
- color: red;
- }
- }
-
-&: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;
-
- :deep(.el-input__wrapper ){
- box-shadow: none;
- margin-top: 6px;
- }
-
- &: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%;
- }
-
- &.redTit{
- color: red;
- }
-
- &.autoheight {
- min-height: 44px;
- height: auto;
- }
-
- &.l-border{
- border-left: 1px solid #ccc;
- }
-
- .ant-input {
- height: 100%;
- border: none;
- background: #f5f7fa;
- }
-
- .ant-picker {
- width: 100%;
- height: 100%;
- }
- }
-}
-
-.b-font {
- font-size: 16px;
- font-weight: bolder;
-}
-}
-
-.m-color {
- color: #0c4995;
-}
-
-.roomSelect{
- ::v-deep(.el-popper){
- .el-select-dropdown__item{
- height: auto;
- padding: 0;
-
- .roomTable{
- width: 100%;
- display: flex;
- border-bottom: 1px solid #ebeef5;
-
- &:last-of-type{
- border-bottom: none;
- }
-
- &>div{
- width: 25%;
- border-right: 1px dashed #ebeef5;
- &:last-of-type{
- border-right: none;
- }
-
- div{
- width: 100%;
- }
- .roomTit{
- border-bottom: 1px solid #ebeef5;
- }
- }
- }
- }
- .el-select-dropdown__item.selected{
- .roomTit{
- color: #606266;
- font-weight: normal;
- }
- }
- }
-}
-
-:deep(.el-dialog__footer){
- padding-top: 20px;
- display: flex;
- justify-content: center;
-}
-
-
-</style>
diff --git a/src/views/analyse/applyReview/components/selectDanger.vue b/src/views/analyse/applyReview/components/selectDanger.vue
deleted file mode 100644
index 4918cff..0000000
--- a/src/views/analyse/applyReview/components/selectDanger.vue
+++ /dev/null
@@ -1,181 +0,0 @@
-<template>
- <tr class="m-color b-font required" 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>
-<!-- <td class="w-18 m-color">操作</td>-->
- </tr>
- <tr v-for="(item,index) in dangerSourceState.dangerList" :key="index">
- <td class="w-20">
- {{ index + 1 }}
- </td>
- <td class="w-20">
- <el-input disabled v-model="item.riskSource"></el-input>
- </td>
- <td class="w-20">
- <el-input disabled v-model="item.riskCharacteristic"></el-input>
- </td>
- <td class="w-20">
- <el-input disabled type="number" v-model="item.number"></el-input>
- </td>
- <td class="w-20">
- <el-input disabled v-model="item.description"></el-input>
- </td>
-<!-- <td class="w-18">-->
-<!-- <el-button disabled type="danger" @click="deleteDangerItem(index)">删除</el-button>-->
-<!-- </td>-->
- </tr>
-<!-- <tr style="text-align: center">-->
-<!-- <el-button :disabled="dangerSourceState.disabled" type="primary" shape="round" @click="addDangerItem()">-->
-<!-- 添加行-->
-<!-- </el-button>-->
-<!-- </tr>-->
-</template>
-
-<script setup lang="ts">
-import {reactive, watchEffect} from "vue";
-
-let props = defineProps({
- disabled: Boolean,
- data: Array<DangerListType>
-});
-
-const dangerSourceState = reactive<DangerSourceType>({
- disabled: false,
- dangerList: [],
-})
-
-watchEffect(() => {
- dangerSourceState.dangerList = props.data as Array<DangerListType>
- dangerSourceState.disabled = props.disabled
-});
-
-const addDangerItem = () => {
- dangerSourceState.dangerList.push({riskSource: '', riskCharacteristic: '', number: null, description: ''});
-};
-
-const deleteDangerItem = (index: number) => {
- dangerSourceState.dangerList.splice(index,1);
-};
-
-const formatList = (formatList: Array<DangerListType>) => {
- dangerSourceState.dangerList = formatList
-}
-
-defineExpose({
- formatList,
- dataList: dangerSourceState.dangerList,
-});
-
-</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;
- }
- &.required {
- &::before {
- content: "*";
- display: inline-block;
- color: red;
- }
- }
- 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%;
- }
- }
- }
-
- .b-font {
- font-size: 16px;
- font-weight: bolder;
- }
-}
-
-.m-color {
- color: #0c4995;
-}
-:deep(.el-input__wrapper ){
- box-shadow: none;
-}
-</style>
diff --git a/src/views/analyse/applyReview/index.ts b/src/views/analyse/applyReview/index.ts
deleted file mode 100644
index 03349c3..0000000
--- a/src/views/analyse/applyReview/index.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-declare interface reportReviewStateType {
- developData?: Array<ProjectType>
- searchQuery: {
- pageIndex: number | null,
- pageSize: number | null,
- tag: number | null,
- experimentName: string,
- experimentType: null | number,
- },
- total: 0,
- experimentTypeList: Type []
- allRoomList: RoomType [],
- reviewDialogVisible: boolean,
- reviewForm:{
- id: number | null
- approveStatus: null | number
- approveDesc: string
- },
- rules:object,
- isLeader: boolean
-}
\ No newline at end of file
diff --git a/src/views/analyse/applyReview/index.vue b/src/views/analyse/applyReview/index.vue
deleted file mode 100644
index e8a7215..0000000
--- a/src/views/analyse/applyReview/index.vue
+++ /dev/null
@@ -1,373 +0,0 @@
-<template>
- <div class="home-container">
- <div style="height: 100%">
- <el-row class="homeCard">
- <div class="basic-line">
- <span>实验名称:</span>
- <el-input v-model="developState.searchQuery.experimentName" clearable filterable class="input-box" placeholder="实验名称">
- </el-input>
- </div>
-<!-- <div class="basic-line">-->
-<!-- <span>实验类型:</span>-->
-<!-- <el-select v-model="developState.searchQuery.experimentType" clearable filterable class="input-box" placeholder="实验类型">-->
-<!-- <el-option v-for="item in developState.experimentTypeList" :key="item.id" :label="item.name" :value="item.id"></el-option>-->
-<!-- </el-select>-->
-<!-- </div>-->
- <div style="padding-bottom: 10px">
- <el-button type="primary" @click="getReportData">查询</el-button>
- <el-button plain @click="reset">重置</el-button>
- </div>
- </el-row>
- <div class="homeCard">
- <div class="main-card">
- <el-row class="cardTop">
- </el-row>
- <el-table ref="multipleTableRef" :data="developState.developData" style="width: 100%" height="calc(100% - 100px)" :header-cell-style="{ background: '#fafafa' }">
- <el-table-column prop="experimentCode" label="实验编号"/>
- <el-table-column prop="experimentName" label="实验名称"/>
- <el-table-column prop="createExperimentTime" label="评价时间">
- <template #default="scope">
- <span>{{scope.row.evaluateTime?scope.row.evaluateTime.substring(0,16):'--'}}</span>
- </template>
- </el-table-column>
- <el-table-column prop="startTime" label="报告提交时间" show-overflow-tooltip>
- <template #default="scope">
- <span>{{scope.row.updateTime?scope.row.updateTime.substring(0,16):'--'}}</span>
- </template>
- </el-table-column>
-<!-- <el-table-column prop="experimentSite" label="实验场所" show-overflow-tooltip>-->
-<!-- <template #default="scope">-->
-<!-- <span>{{scope.row.experimentSite?.map(i=>i.siteName).join(',')}}</span>-->
-<!-- </template>-->
-<!-- </el-table-column>-->
-<!-- <el-table-column prop="experimentType" label="实验类别">-->
-<!-- <template #default="scope">-->
-<!-- <span>{{developState.experimentTypeList.find(i=>i.id == scope.row.experimentType)?.name}}</span>-->
-<!-- </template>-->
-<!-- </el-table-column>-->
- <el-table-column label="操作" width="250" fixed="right">
- <template #default="scope">
- <el-button size="small" text type="primary" v-if="developState.isLeader == true && (!scope.row.person||(scope.row.person && scope.row.person.length == 0))" :icon="Edit" @click="openRiskDialog(scope.row)">审批</el-button>
- <el-button size="small" text type="primary" :icon="Edit" @click="openReportDialog('查看',scope.row)">查看评估报告</el-button>
- </template>
- </el-table-column>
- </el-table>
- <div class="pageBtn">
- <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" :pager-count="5" :page-sizes="[10, 20, 30]" v-model:current-page="developState.searchQuery.pageIndex" background v-model:page-size="developState.searchQuery.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="developState.total" class="page-position"> </el-pagination>
- </div>
- </div>
- </div>
- </div>
- <report-dialog ref="ReportDialogRef" @refresh="getReportData"></report-dialog>
- <el-dialog title="报告审批" v-model="developState.reviewDialogVisible" width="50%">
- <el-form ref="ruleFormRef" :rules="developState.rules" :model="developState.reviewForm" label-width="120px">
- <el-form-item label="审批结果" prop="approveStatus">
- <el-radio-group style="text-align: center" v-model="developState.reviewForm.approveStatus">
- <el-radio :label="2">通过</el-radio>
- <el-radio :label="3">不通过</el-radio>
- </el-radio-group>
- </el-form-item>
- <el-form-item label="主管部门意见" prop="approveDesc">
- <el-input v-model="developState.reviewForm.approveDesc" type="textarea" :autosize="{ minRows: 3 }" />
- </el-form-item>
- </el-form>
- <template #footer>
- <span class="dialog-footer" style="padding-top:10px;text-align: center !important;">
- <el-button @click="developState.reviewDialogVisible = !developState.reviewDialogVisible" size="default">取 消</el-button>
- <el-button type="primary" @click="onSubmitReview(ruleFormRef)" size="default">提交审批</el-button>
- </span>
- </template>
- </el-dialog>
- </div>
-</template>
-
-<script setup lang="ts">
-import {defineAsyncComponent, onMounted, reactive, ref} from "vue";
-import {projectApi} from "/@/api/experiment/project";
-import {ElMessage, ElMessageBox} from "element-plus";
-import type { FormInstance, FormRules } from 'element-plus'
-import { View,Edit, Plus, RefreshLeft } from '@element-plus/icons-vue';
-import {roomApi} from "/@/api/basic/room";
-import {assessApplyApi} from "/@/api/analyse/assessApply";
-import {useUserInfo} from "/@/stores/userInfo";
-import {storeToRefs} from "pinia";
-const userInfo = useUserInfo();
-const { userInfos } = storeToRefs(userInfo);
-const ReportDialog = defineAsyncComponent(() => import('./components/reportDialog.vue'));
-
-const ReportDialogRef = ref();
-const ruleFormRef = ref<FormInstance>()
-const developState = reactive<reportReviewStateType>({
- developData: [],
- searchQuery: {
- pageIndex: 1,
- pageSize: 10,
- experimentName: '',
- experimentType: null,
- tag: 2
- },
- total: 0,
- experimentTypeList: [
- {id: 1, name: '化学类'},
- {id: 2, name: '生物类'},
- {id: 3, name: '辐射类'},
- {id: 4, name: '机电类'},
- {id: 5, name: '特种设备类'},
- {id: 6, name: '其它类'},
- ],
- allRoomList: [],
- reviewDialogVisible: false,
- reviewForm:{
- id: null,
- approveStatus: null,
- approveDesc: ''
- },
- isLeader: false,
- rules: {
- approveDesc: [{ required: true, message: '请输入审批意见', trigger: 'blur' }],
- approveStatus: [{ required: true, message: '请选择审批结果', trigger: 'blur' }]
- }
-})
-
-const getReportData = async () => {
- let res = await assessApplyApi().getRiskReportPage(developState.searchQuery);
- if(res.data.code === 100){
- developState.developData = res.data.data;
- console.log(developState.developData,'developState.developData')
- developState.total = res.data.total;
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- });
- }
-};
-
-
-const getAllRoom = async () => {
- let res = await roomApi().getAllRoom();
- if(res.data.code === 100){
- developState.allRoomList = JSON.parse(JSON.stringify(res.data.data));
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- })
- }
-};
-
-const openReportDialog = (title: string,value: ProjectType) =>{
- ReportDialogRef.value.showReportDialog(title, value, developState.allRoomList);
-}
-
-const onSubmitReview = async (formEl: FormInstance | undefined) => {
- if (!formEl) return
- await formEl.validate(async(valid, fields) => {
- if (valid) {
- let res = await assessApplyApi().uploadReport(developState.reviewForm);
- if(res.data.code === 100){
- ElMessage({
- type: 'success',
- message: '审批提交成功'
- });
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- });
- }
- developState.reviewForm = {
- id: null,
- approveStatus: null,
- approveDesc: ''
- },
- developState.reviewDialogVisible = false
- getReportData()
- } else {
- console.log('error submit!', fields)
- }
- })
-}
-
-const openRiskDialog = (val)=>{
- developState.reviewForm.id = val.id
- developState.reviewDialogVisible = true
-}
-
-const onHandleSizeChange = (val: number) => {
- developState.searchQuery.pageSize = val;
- getReportData();
-};
-
-const onHandleCurrentChange = (val: number) => {
- developState.searchQuery.pageIndex = val;
- getReportData();
-};
-
-const reset = () => {
- developState.searchQuery = {
- pageIndex: 1,
- pageSize: 10,
- experimentName: '',
- experimentType: null,
- tag: 2
- }
-};
-
-onMounted(() => {
- getReportData()
- getAllRoom()
- console.log(userInfos.value.roles,'roles')
- if(userInfos.value.roles?.find(i=>i.roleId == '6')){
- developState.isLeader = true
- }
- console.log(developState.isManage,userInfos.value.roles)
-})
-
-</script>
-
-<style scoped lang="scss">
-$homeNavLengh: 8;
-.home-container {
- height: calc(100vh - 144px);
- box-sizing: border-box;
- overflow: hidden;
- .homeCard {
- width: 100%;
- padding: 20px;
- box-sizing: border-box;
- background: #fff;
- border-radius: 4px;
-
- .main-card {
- width: 100%;
- height: 100%;
- .cardTop {
- display: flex;
- align-items: center;
- justify-content: space-between;
- margin-bottom: 20px;
- .mainCardBtn {
- margin: 0;
- }
- }
- .pageBtn {
- height: 60px;
- display: flex;
- align-items: center;
- justify-content: right;
-
- .demo-pagination-block + .demo-pagination-block {
- margin-top: 10px;
- }
- .demo-pagination-block .demonstration {
- margin-bottom: 16px;
- }
- }
- }
- &:last-of-type {
- height: calc(100% - 100px);
- }
- }
- .el-row {
- display: flex;
- align-items: center;
- margin-bottom: 20px;
- &:last-child {
- margin-bottom: 0;
- }
- .grid-content {
- align-items: center;
- min-height: 36px;
- }
-
- .topInfo {
- display: flex;
- align-items: center;
- font-size: 16px;
- font-weight: bold;
-
- & > div {
- white-space: nowrap;
- margin-right: 20px;
- }
- }
- }
-}
-.stepItem {
- width: 100%;
- display: flex;
- align-items: flex-start;
- margin-bottom: 30px;
- margin-left: 30px;
- padding-bottom: 30px;
- border-left: 2px solid #ccc;
- &:first-of-type {
- margin-top: 30px;
- }
- &:last-of-type {
- margin-bottom: 0;
- border-left: none;
- }
- .stepNum {
- width: 30px;
- height: 30px;
- border-radius: 15px;
- box-sizing: border-box;
- color: #333;
- border: 1px solid #999;
- line-height: 28px;
- text-align: center;
- margin-right: 10px;
- margin-left: -16px;
- margin-top: -30px;
- }
- .stepCard {
- width: 100%;
- margin-top: -30px;
-
- .box-card {
- width: 100%;
- &:deep(.el-card__header) {
- padding: 10px 15px;
- }
- .card-header {
- width: 100%;
- display: flex;
- justify-content: space-between;
- align-items: center;
- & > div:first-of-type {
- margin-right: 80px;
- font-size: 18px;
- font-weight: bold;
- }
- }
- }
- }
- &:hover .card-header {
- color: #0098f5;
- }
- &:hover .stepNum {
- border: 2px solid #0098f5;
- color: #0098f5;
- }
-}
-
-:deep(.el-date-editor) {
- width: 100%;
-}
-.el-select {
- width: 100%;
-}
-:deep(.el-textarea.is-disabled .el-textarea__inner) {
- background-color: var(--el-card-bg-color);
- color: var(--el-input-text-color, var(--el-text-color-regular));
-}
-:deep(.el-input.is-disabled .el-input__inner) {
- color: var(--el-input-text-color, var(--el-text-color-regular));
-}
-:deep(.el-input.is-disabled .el-input__wrapper) {
- background-color: var(--el-card-bg-color);
- box-shadow: none;
-}
-</style>
diff --git a/src/views/analyse/assessApply/components/reportDialog.vue b/src/views/analyse/assessApply/components/reportDialog.vue
deleted file mode 100644
index 462a3c0..0000000
--- a/src/views/analyse/assessApply/components/reportDialog.vue
+++ /dev/null
@@ -1,612 +0,0 @@
-<template>
- <div class="system-menu-dialog-container">
- <el-dialog :title="reportDialogState.title" v-model="reportDialogState.reportDialogVisible" width="80%">
- <div style="text-align: center;font-size: 20px;font-weight: bolder;color: #0c4995">{{reportDialogState.reportForm.experimentName}}实验安全风险评估报告表(带<span style="color: red">*</span>为填写内容)</div>
- <el-form ref="reportFormRef" :rules="reportDialogState.reportFormRules" :model="reportDialogState.reportForm" size="default" label-width="0">
- <table class="report-table">
- <th class="m-color b-font" style="text-align: center">实验基本信息</th>
- <tr>
- <td class="w-25 m-color">实验名称</td>
- <td class="w-75 m-color">
- <el-form-item prop="experimentName">
- <el-input readonly v-model="reportDialogState.reportForm.experimentName" placeholder="请输入实验名称" />
- </el-form-item>
- </td>
- </tr>
- <tr>
- <td class="w-25 m-color">实验类型</td>
- <td class="w-75" style="text-align: left;padding-left: 11px">
-<!-- <el-radio-group style="text-align: center" disabled v-model="reportDialogState.reportForm.experimentType">-->
-<!-- <el-radio :label="1">化学类</el-radio>-->
-<!-- <el-radio :label="2">生物类</el-radio>-->
-<!-- <el-radio :label="3">辐射类</el-radio>-->
-<!-- <el-radio :label="4">机电类</el-radio>-->
-<!-- <el-radio :label="5">特种设备类</el-radio>-->
-<!-- <el-radio :label="6">其他类</el-radio>-->
-<!-- </el-radio-group>-->
- {{reportDialogState.experimentTypeList.find(i=>i.id === reportDialogState.reportForm.experimentType)?.name}}
- </td>
- </tr>
- <tr>
- <td class="w-25 m-color">负责人</td>
- <td class="w-25 m-color">
-<!-- <el-select style="width: 100%" disabled v-model="reportDialogState.reportForm.liabilityUserId" clearable filterable @change="getLiabilityUserPhone($event)">-->
-<!-- <el-option-->
-<!-- v-for="item in reportDialogState.systemPersonList"-->
-<!-- :key="item.id"-->
-<!-- :value="item.id"-->
-<!-- :label="item.realName"-->
-<!-- ></el-option>-->
-<!-- </el-select>-->
- <el-input readonly v-model="reportDialogState.reportForm.personUser" />
- </td>
- <td class="w-25 m-color">电话</td>
- <td class="w-25 m-color">
- <el-input disabled v-model="reportDialogState.reportForm.personUserPhone" />
- </td>
- </tr>
- <tr>
- <td class="w-25 m-color">安全负责人</td>
- <td class="w-25 m-color">
-<!-- <el-select v-if="reportDialogState.reportForm.safeLiabilityUserId" style="width: 100%" disabled v-model="reportDialogState.reportForm.safeLiabilityUserId" @change="getSafeLiabilityUserPhone($event)" clearable filterable>-->
-<!-- <el-option-->
-<!-- v-for="item in reportDialogState.allPersonList"-->
-<!-- :key="item.id"-->
-<!-- :value="item.id"-->
-<!-- :label="item.personName"-->
-<!-- ></el-option>-->
-<!-- </el-select>-->
- <el-input disabled v-model="reportDialogState.reportForm.safePersonUser" />
- </td>
- <td class="w-25 m-color">电话</td>
- <td class="w-25 m-color">
- <el-input readonly v-model="reportDialogState.reportForm.safePersonUserPhone" />
- </td>
- </tr>
- <tr>
- <td class="w-25 m-color">部门</td>
- <td class="w-75 m-color">
- <el-input readonly v-model="reportDialogState.reportForm.dep" />
- </td>
- </tr>
- <tr class="m-color b-font" style="text-align: center">实验场所</tr>
- <tr>
- <td class="w-14 m-color">场所名称</td>
- <td class="w-14 m-color">所在楼栋</td>
- <td class="w-14 m-color">房间</td>
- <td class="w-14 m-color">有无消防设施</td>
- <td class="w-14 m-color">有无隔断</td>
- <td class="w-14 m-color">场所性质</td>
- </tr>
- <tr v-for="(item,index) in reportDialogState.reportForm.experimentSite" :key="index">
- <td class="w-14">
-<!-- <el-select disabled filterable v-model="item.siteId">-->
-<!-- <el-option-->
-<!-- v-for="item in reportDialogState.allRoomList"-->
-<!-- :key="item.id"-->
-<!-- :value="item.id"-->
-<!-- :label="item.siteName"-->
-<!-- >-->
-<!-- </el-option>-->
-<!-- </el-select>-->
- <el-input disabled v-model="item.siteName" />
- </td>
- <td class="w-14">
- <el-input disabled v-model="item.floor" />
- </td>
- <td class="w-14">
- <el-input disabled v-model="item.room" />
- </td>
- <td class="w-14">
- <div>{{item.fireFacilities== 1 ? '有' : item.fireFacilities== 2 ? '无' : ''}}</div>
- </td>
- <td class="w-14">
- <div>{{item.partitionStatus == 1 ? '有' : item.partitionStatus == 2 ? '无' : ''}}</div>
- </td>
- <td class="w-14">
- <div>{{item.siteType}}</div>
- </td>
- </tr>
-
- <tr class="m-color b-font" style="text-align: center">实验概况</tr>
- <tr>
- <el-input type="textarea" :autosize="{ minRows: 3}" disabled v-model="reportDialogState.reportForm.experimentDesc" placeholder="(简要描述实验原理、实验步骤、所用试剂或材料设备等)" />
- </tr>
- <tr class="m-color b-font" style="text-align: center">实验涉及的危险源</tr>
- <tr>
- <td class="w-25 m-color">危险源种类</td>
- <td class="w-75 m-color">
-<!-- <el-radio-group disabled v-model="reportDialogState.reportForm.dangerSource">-->
-<!-- <el-radio :label="1">化学安全</el-radio>-->
-<!-- <el-radio :label="2">辐射安全</el-radio>-->
-<!-- <el-radio :label="3">特种设备安全</el-radio>-->
-<!-- <el-radio :label="4">机电安全</el-radio>-->
-<!-- <el-radio :label="5">电气安全</el-radio>-->
-<!-- <el-radio :label="6">生物安全</el-radio>-->
-<!-- <el-radio :label="7">激光安全</el-radio>-->
-<!-- <el-radio :label="8">其他安全</el-radio>-->
-<!-- </el-radio-group>-->
- <el-checkbox-group disabled>
- <el-checkbox v-for="item in reportDialogState.reportForm.riskSourceType" :label="item.riskSourceType" :checked="item.status==1?true:false"/>
- </el-checkbox-group>
- </td>
- </tr>
-
- <select-danger ref="selectDangerRef" v-model:data="reportDialogState.reportForm.riskSource" v-model:disabled="reportDialogState.disabled"></select-danger>
-
- <tr class="m-color b-font required" style="text-align: center">安全风险分析(总结)</tr>
- <tr>
- <el-input type="textarea" :autosize="{ minRows: 3}" :disabled="reportDialogState.disabled" v-model="reportDialogState.reportForm.safeRiskAnalysis" placeholder="1.实验过程中是否有爆炸、火灾、腐蚀、中毒风险、产生危险废弃物等(根据危险源清单,分析实验过程中可能对人身安全、人体健康、实验室环境和周边环境等带来的负面影响)" />
- </tr>
- <tr class="m-color b-font" style="text-align: center">拟采取的防护和应急措施</tr>
- <tr>
- <el-input type="textarea" :autosize="{ minRows: 3}" disabled v-model="reportDialogState.reportForm.emergencyMeasure" placeholder="" />
- </tr>
- <tr class="m-color b-font required" style="text-align: center">实验和实验项目综合风险等级评定</tr>
- <tr>
- <td class="m-color" style="width: 100%">
- <el-radio-group :disabled="reportDialogState.disabled" v-model="reportDialogState.reportForm.assessLevel">
- <el-radio :label="1">重大风险(一级)</el-radio>
- <el-radio :label="2">较大风险(二级)</el-radio>
- <el-radio :label="3">一般风险(三级)</el-radio>
- <el-radio :label="4">低风险(四级)</el-radio>
- </el-radio-group>
- </td>
- </tr>
- <tr>
- <el-input type="textarea" :autosize="{ minRows: 3}" :disabled="reportDialogState.disabled" v-model="reportDialogState.reportForm.description" placeholder="评定依据(必填)" />
- </tr>
- <tr>
- <td class="w-25 m-color required">评估人</td>
- <td class="w-75 m-color">
- <!-- <el-select style="width: 100%" :disabled="reportDialogState.disabled" v-model="reportDialogState.reportForm.assessPerson" clearable filterable>-->
- <!-- <el-option-->
- <!-- v-for="item in reportDialogState.allPersonList"-->
- <!-- :key="item.id"-->
- <!-- :value="item.id"-->
- <!-- :label="item.personName"-->
- <!-- ></el-option>-->
- <!-- </el-select>-->
- <el-input :disabled="reportDialogState.disabled" v-model="reportDialogState.reportForm.assessPerson" placeholder="评估人" />
- </td>
- <!-- <td class="w-25 m-color required">评估时间</td>-->
- <!-- <td class="w-25 m-color">-->
- <!-- <el-date-picker :disabled="reportDialogState.disabled" type="datetime" format="YYYY/MM/DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" v-model="reportDialogState.reportForm.assessTime" />-->
- <!-- </td>-->
- </tr>
- <tr v-if="reportDialogState.reportForm.person?.length>0" class="m-color b-font" style="text-align: center">审批内容</tr>
- <template v-if="reportDialogState.reportForm.person?.length>0" v-for="item in reportDialogState.reportForm.person">
- <tr>
- <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" :class="item.approveStatus==3?'redTit':''">{{item.approveStatus==1?'未审批':item.approveStatus==2?'通过':'未通过'}}</td>
- </tr>
- <tr>
- <td class="w-25 m-color autoheight">审批意见</td>
- <td class="w-75 autoheight l-border">
- {{ item.approveDesc }}
- </td>
- </tr>
- </template>
- </table>
- </el-form>
- <template #footer>
- <span class="dialog-footer" style="padding-top:10px;text-align: center !important;">
- <el-button @click="reportDialogState.reportDialogVisible = !reportDialogState.reportDialogVisible" size="default">取 消</el-button>
- <el-button type="primary" v-if="!reportDialogState.disabled" @click="onSubmitProject()" size="default">提交审批</el-button>
- </span>
- </template>
- </el-dialog>
- </div>
-</template>
-
-<script setup lang="ts">
-import {defineAsyncComponent, nextTick, onMounted, reactive, ref} from "vue";
-import {ElMessage} from "element-plus";
-import {projectApi} from "/@/api/experiment/project";
-import {personApi} from "/@/api/basic/person";
-import {userApi} from "/@/api/systemManage/user";
-import {roomApi} from "/@/api/basic/room";
-import {assessApplyApi} from "/@/api/analyse/assessApply";
-
-const SelectDanger = defineAsyncComponent(() => import('./selectDanger.vue'))
-const selectDangerRef = ref()
-const reportFormRef = ref()
-const reportDialogState = reactive<ReportDialogType>({
- title: '',
- disabled: false,
- reportDialogVisible: false,
- reportForm: {
- id: null,
- experimentName: "",
- experimentType: null,
- personUser: '',
- personUserId: null,
- personUserPhone: '',
- safePersonUserId: null,
- safePersonUser: '',
- safePersonUserPhone: '',
- dep: "",
- experimentSite: [],
- experimentDesc: '',
- emergencyMeasure: '',
- assessPerson:'',
- safeRiskAnalysis: '',
- assessLevel:null,
- riskSource: [],
- riskSourceType: [],
- description: '',
- person:[]
- },
- reportFormRules: {
- assessPerson: [{ required: true, message: '请填写评估人员', trigger: 'blur' }],
- safeRiskAnalysis: [{ required: true, message: '请填写安全风险分析', trigger: 'blur' }],
- assessLevel: [{ required: true, message: '请选择风险等级评定', trigger: 'blur' }],
- description: [{ required: true, message: '请填写风险等级评定依据', trigger: 'blur' }],
- },
- allPersonList: [],
- allRoomList: [],
- systemPersonList: [],
- experimentTypeList: [
- {id: 1, name: '化学类'},
- {id: 2, name: '生物类'},
- {id: 3, name: '辐射类'},
- {id: 4, name: '机电类'},
- {id: 5, name: '特种设备类'},
- {id: 6, name: '其它类'}
- ]
-})
-
-const showReportDialog = (title: string, value: ProjectType, allRoomList: RoomType []) => {
- getReportData(value.id)
- reportDialogState.reportDialogVisible = true;
- reportDialogState.allRoomList = allRoomList
- setTimeout(() => {
- reportFormRef.value.clearValidate();
- });
- if(title === '提交'){
- reportDialogState.title = '提交报告';
- reportDialogState.disabled = false
- // for(let i in reportDialogState.reportForm) {
- // if(isValidKey(i, reportDialogState.reportForm)) {
- // reportDialogState.reportForm[i] = value[i];
- // }
- // }
- }else if(title === '修改'){
- reportDialogState.title = '修改报告';
- reportDialogState.disabled = false
- }else{
- reportDialogState.title = '查看';
- reportDialogState.disabled = true
- // for(let i in reportDialogState.reportForm) {
- // if(isValidKey(i, reportDialogState.reportForm)) {
- // reportDialogState.reportForm[i] = value[i];
- // }
- // }
- }
-};
-
-const isValidKey = (key: string | number | symbol, object:object): key is keyof typeof object =>{
- return key in object;
-};
-
-const getReportData = async (id:number|null|undefined) => {
- let res = await assessApplyApi().getRiskReportPage({
- experimentId: id,
- pageIndex: 1,
- pageSize: 10,
- tag: 3
- });
- if(res.data.code === 100){
- reportDialogState.reportForm = {
- id: null,
- experimentName: "",
- experimentType: null,
- personUser: '',
- personUserId: null,
- personUserPhone: '',
- safePersonUserId: null,
- safePersonUser: '',
- safePersonUserPhone: '',
- dep: "",
- experimentSite: [],
- experimentDesc: '',
- emergencyMeasure: '',
- assessPerson:'',
- safeRiskAnalysis: '',
- assessLevel:null,
- riskSource: [],
- riskSourceType: [],
- description: '',
- person:[]
- }
- if(res.data.data&&res.data.data.length==0){
- ElMessage({
- type: 'warning',
- message: '暂时无法获取实验信息,可能评估流程未完成,用户无法查看'
- });
- }else{
- for(let i in reportDialogState.reportForm) {
- if(isValidKey(i, reportDialogState.reportForm)) {
- reportDialogState.reportForm[i] = res.data.data[0][i];
- }
- }
- }
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- });
- }
-};
-
-// const getLiabilityUserPhone = (value: number)=>{
-// const data = reportDialogState.systemPersonList.find(item => item.id === value) as AllPersonListType
-// reportDialogState.reportForm.liabilityUserPhone = data.phone
-// }
-//
-// const getSafeLiabilityUserPhone = (value: number)=>{
-// const data = reportDialogState.allPersonList.find(item => item.id === value) as AllPersonListType
-// reportDialogState.reportForm.safeLiabilityUserPhone = data.phone
-// }
-
-// const hasSafeSystem = (value: number) =>{
-// if(value == 2){
-// reportDialogState.reportForm.safeInformationSystem = ''
-// }
-// }
-
-const onSubmitProject = () => {
- reportFormRef.value.validate(async(valid: boolean) => {
- if(valid){
- reportDialogState.reportForm.riskSource = selectDangerRef.value.dangerSourceState.dangerList
- const { id,assessPerson,riskSource,safeRiskAnalysis,assessLevel,description } = reportDialogState.reportForm
- const data = { id,assessPerson,riskSource,safeRiskAnalysis,assessLevel,description }
- if(reportDialogState.title === '提交报告'){
- let res = await assessApplyApi().updateRiskReport(data);
- if(res.data.code === 100){
- emit('refresh')
- reportDialogState.reportDialogVisible = false;
- ElMessage({
- type: 'success',
- message: '提交报告成功'
- })
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg,
- });
- }
- }else{
- let res = await assessApplyApi().updateRiskReportInfo(data)
- if(res.data.code === 100){
- emit('refresh')
- reportDialogState.reportDialogVisible = false;
- ElMessage({
- type: 'success',
- message: '修改报告成功'
- })
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg,
- });
- }
- }
- }else{
- ElMessage({
- type: 'warning',
- message: '请完善基本信息',
- });
- }
- })
-};
-
-const getPersonList = async () => {
- let res = await userApi().getUserList({
- pageIndex: 1,
- pageSize: 99999,
- searchParams:{
- roleId: null,
- name: '',
- realName: ''
- }
- });
- if(res.data.code === 100){
- reportDialogState.systemPersonList = JSON.parse(JSON.stringify(res.data.data));
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- })
- }
-};
-
-const getAllPersonList = async () => {
- let res = await personApi().getAllPerson();
- if(res.data.code === 100){
- reportDialogState.allPersonList = JSON.parse(JSON.stringify(res.data.data));
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- })
- }
-};
-
-const emit = defineEmits(['refresh']);
-
-defineExpose({
- showReportDialog,
-});
-
-onMounted(() => {
- getAllPersonList();
- getPersonList()
-});
-</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;
-
- &.required {
- &::before {
- content: "*";
- display: inline-block;
- color: red;
- }
- }
-
-&: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;
-
- :deep(.el-input__wrapper ){
- box-shadow: none;
- margin-top: 6px;
- }
-
-&: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%;
- }
-
-&.redTit{
- color: red;
-}
-
-.ant-input {
- height: 100%;
- border: none;
- background: #f5f7fa;
-}
-
-.ant-picker {
- width: 100%;
- height: 100%;
-}
-}
-}
-
-.b-font {
- font-size: 16px;
- font-weight: bolder;
-}
-}
-
-.m-color {
- color: #0c4995;
-}
-
-.roomSelect{
- ::v-deep(.el-popper){
- .el-select-dropdown__item{
- height: auto;
- padding: 0;
-
- .roomTable{
- width: 100%;
- display: flex;
- border-bottom: 1px solid #ebeef5;
-
- &:last-of-type{
- border-bottom: none;
- }
-
- &>div{
- width: 25%;
- border-right: 1px dashed #ebeef5;
- &:last-of-type{
- border-right: none;
- }
-
- div{
- width: 100%;
- }
- .roomTit{
- border-bottom: 1px solid #ebeef5;
- }
- }
- }
- }
- .el-select-dropdown__item.selected{
- .roomTit{
- color: #606266;
- font-weight: normal;
- }
- }
- }
-}
-
-:deep(.el-dialog__footer){
- padding-top: 20px;
- display: flex;
- justify-content: center;
-}
-
-
-</style>
diff --git a/src/views/analyse/assessApply/components/riskDialog.vue b/src/views/analyse/assessApply/components/riskDialog.vue
deleted file mode 100644
index 9c38d2f..0000000
--- a/src/views/analyse/assessApply/components/riskDialog.vue
+++ /dev/null
@@ -1,175 +0,0 @@
-<template>
- <div class="system-menu-dialog-container">
- <el-dialog title="管理实验现实风险" v-model="assessApplyDialogState.assessApplyDialogVisible" width="60%">
- <div>
- <el-button @click="openUnitDialog('新增','', assessApplyDialogState.id)" 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="riskName" label="风险单元名称"/>
- <el-table-column prop="riskType" label="风险类型">
- <template #default="scope">
- <span>{{`${assessApplyDialogState.riskList.find(item =>item.id === scope.row.riskType)?.name || ''}`}}</span>
- </template>
- </el-table-column>
- <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>
- </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)">查看</el-button>
- <el-button size="default" text type="primary" @click="openUnitDialog('编辑', scope.row, assessApplyDialogState.id)">编辑</el-button>
- <el-button size="default" text type="danger" @click="deleteUnit(scope.$index, scope.row)">删除</el-button>
- </template>
- </el-table-column>
- </el-table>
- <template #footer>
- <span class="dialog-footer">
- <el-button @click="assessApplyDialogState.assessApplyDialogVisible = !assessApplyDialogState.assessApplyDialogVisible" type="primary" size="default">确定</el-button>
- </span>
- </template>
- <risk-unit-dialog ref="riskUnitDialogRef" @refresh="getRiskData"></risk-unit-dialog>
- </el-dialog>
- </div>
-</template>
-
-<script setup lang="ts">
-import {defineAsyncComponent, onMounted, reactive, ref} from "vue";
-import {ElMessage} from "element-plus";
-import {projectApi} from "/@/api/experiment/project";
-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>({
- title: '',
- riskUnitData: [],
- assessApplyDialogVisible: false,
- id: null,
- liabilityUserId: null,
- riskList: [
- {id: 1, name: '固有风险'},
- {id:2, name: '实验风险'}
- ],
- basicUnitList: [],
- allPersonList: [],
- allRiskTypeList: []
-})
-
-const riskUnitDialogRef = ref()
-
-const showRiskDialog = (value: ProjectType) => {
- assessApplyDialogState.assessApplyDialogVisible = true;
- assessApplyDialogState.id = <number>value.id
- assessApplyDialogState.liabilityUserId = <number>value.liabilityUserId
- getRiskData()
-};
-
-const openUnitDialog = (title: string, val, id: number) => {
- riskUnitDialogRef.value.showRiskUnitDialog(title, val, id, assessApplyDialogState.basicUnitList, assessApplyDialogState.allPersonList, assessApplyDialogState.allRiskTypeList);
-};
-
-const getRiskData = async () => {
- let res = await riskUnitApi().getRiskUnitByList({pageIndex: 1,pageSize: 9999,riskCode: '',riskName: '',experimentId: assessApplyDialogState.id});
- if(res.data.code === 100){
- assessApplyDialogState.riskUnitData = JSON.parse(JSON.stringify(res.data.data));
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- })
- }
-};
-
-const getAllBasicUnitList = async () => {
- let res = await unitApi().getAllUnit();
- if(res.data.code === 100){
- assessApplyDialogState.basicUnitList = JSON.parse(JSON.stringify(res.data.data));
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- })
- }
-};
-
-const getAllPersonList = async () => {
- let res = await personApi().getAllPerson();
- if(res.data.code === 100){
- assessApplyDialogState.allPersonList = JSON.parse(JSON.stringify(res.data.data));
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- })
- }
-};
-
-const getAllTypeList = async () =>{
- let res = await unitApi().getAllUnitType()
- if(res.data.code === 100){
- assessApplyDialogState.allRiskTypeList = JSON.parse(JSON.stringify(res.data.data));
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- })
- }
-}
-
-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({
- showRiskDialog
-})
-
-onMounted(() => {
- getAllBasicUnitList()
- getAllPersonList()
- getAllTypeList()
-})
-</script>
-
-<style scoped>
-
-</style>
diff --git a/src/views/analyse/assessApply/components/riskUnitDialog.vue b/src/views/analyse/assessApply/components/riskUnitDialog.vue
deleted file mode 100644
index edf1305..0000000
--- a/src/views/analyse/assessApply/components/riskUnitDialog.vue
+++ /dev/null
@@ -1,199 +0,0 @@
-<template>
- <div class="system-menu-dialog-container">
- <el-dialog :title="riskUnitDialogState.title" v-model="riskUnitDialogState.riskUnitDialogVisible" width="600px">
- <el-form ref="riskUnitFormRef" :rules="riskUnitDialogState.riskUnitFormRules" :model="riskUnitDialogState.riskUnitForm" size="default" label-width="120px">
- <el-row :gutter="35">
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="风险单元编号" prop="riskCode">
- <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" :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" :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" :disabled="riskUnitDialogState.disabled" 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>
- </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" :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" :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" :disabled="riskUnitDialogState.disabled" placeholder="风险单元描述" clearable class="input-length"></el-input>
- </el-form-item>
- </el-col>
- </el-row>
- </el-form>
- <template #footer>
- <span class="dialog-footer">
- <el-button @click="riskUnitDialogState.riskUnitDialogVisible = !riskUnitDialogState.riskUnitDialogVisible" size="default">取 消</el-button>
- <el-button type="primary" @click="onSubmitRiskUnit" v-if="!riskUnitDialogState.disabled" size="default">确定</el-button>
- </span>
- </template>
- </el-dialog>
- </div>
-</template>
-
-<script setup lang="ts">
-import { reactive, ref } from "vue";
-import { isValidKey } from "/@/utils/methods";
-import {ElMessage} from "element-plus";
-import {riskUnitApi} from "/@/api/analyse/riskUnit";
-
-const riskUnitFormRef = ref()
-
-const riskUnitDialogState = reactive<RiskUnitDialogType>({
- title: '',
- experimentType: 2,
- disabled: false,
- riskUnitDialogVisible: false,
- riskUnitForm: {
- id: null,
- experimentId: null,
- riskCode: '',
- riskName: '',
- riskUnitTypeId: null,
- liabilityUserId: null,
- liabilityDep: '',
- description: '',
- basicRiskUnitId: null,
- },
- riskUnitFormRules: {
- riskCode: [{ required: true, message: '请填写风险单元编号', trigger: 'blur' }],
- riskName: [{ required: true, message: '请填写风险单元名称', trigger: 'blur' }],
- riskUnitTypeId: [{ required: true, message: '请选择风险单元类型', trigger: 'blur' }],
- liabilityUserId: [{ required: true, message: '请选择负责人', trigger: 'change' }],
- basicRiskUnitId: [{ required: true, message: '请选择基础风险单元', trigger: 'change' }]
- },
- specialDeviceList: [],
- deviceUnitList: [
- {id:1, name: '台'},
- {id:2, name: '个'},
- {id:3, name: '件'}
- ],
- riskTypeList: [],
- basicUnitList: [],
- allPersonList: [],
- allExperimentList: [],
- experimentTypeList: [
- {id: 2, name: '实验风险'},
- {id: 1, name: '固有风险'},
- ],
-})
-
-const showRiskUnitDialog = (title: string, val, id: 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: null,
- 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 === '新增'){
- let { id, basicRiskUnitId, ...query} = riskUnitDialogState.riskUnitForm
- let res = await riskUnitApi().addRiskUnit(query);
- if(res.data.code === 100){
- emit('refresh')
- riskUnitDialogState.riskUnitDialogVisible = false;
- ElMessage({
- type: 'success',
- message: '新增成功'
- })
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg,
- });
- }
- }else{
- let res = await riskUnitApi().modRiskUnit(riskUnitDialogState.riskUnitForm)
- if(res.data.code === 100){
- emit('refresh')
- riskUnitDialogState.riskUnitDialogVisible = false;
- ElMessage({
- type: 'success',
- message: '编辑成功'
- })
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg,
- });
- }
- }
- }else{
- ElMessage({
- type: 'warning',
- message: '请完善基本信息',
- });
- }
- })
-}
-
-const emit = defineEmits(['refresh'])
-
-defineExpose({
- showRiskUnitDialog
-})
-</script>
-
-<style scoped>
-
-</style>
diff --git a/src/views/analyse/assessApply/components/selectDanger.vue b/src/views/analyse/assessApply/components/selectDanger.vue
deleted file mode 100644
index 3e051ef..0000000
--- a/src/views/analyse/assessApply/components/selectDanger.vue
+++ /dev/null
@@ -1,181 +0,0 @@
-<template>
- <tr class="m-color b-font required" style="text-align: center">主要危险源或有害因素</tr>
- <tr>
- <td class="w-16 m-color">序号</td>
- <td class="w-16 m-color">危险源或有害因素</td>
- <td class="w-16 m-color">危险特性</td>
- <td class="w-16 m-color">数量</td>
- <td class="w-16 m-color">其他说明</td>
- <td class="w-16 m-color">操作</td>
- </tr>
- <tr v-for="(item,index) in dangerSourceState.dangerList" :key="index">
- <td class="w-16">
- {{ index + 1 }}
- </td>
- <td class="w-16">
- <el-input :disabled="dangerSourceState.disabled" v-model="item.riskSource"></el-input>
- </td>
- <td class="w-16">
- <el-input :disabled="dangerSourceState.disabled" v-model="item.riskCharacteristic"></el-input>
- </td>
- <td class="w-16">
- <el-input :disabled="dangerSourceState.disabled" type="number" v-model="item.number"></el-input>
- </td>
- <td class="w-16">
- <el-input :disabled="dangerSourceState.disabled" v-model="item.description"></el-input>
- </td>
- <td class="w-16">
- <el-button :disabled="dangerSourceState.disabled" type="danger" @click="deleteDangerItem(index)">删除</el-button>
- </td>
- </tr>
- <tr style="text-align: center">
- <el-button :disabled="dangerSourceState.disabled" type="primary" shape="round" @click="addDangerItem()">
- 添加行
- </el-button>
- </tr>
-</template>
-
-<script setup lang="ts">
-import {reactive, watchEffect} from "vue";
-
-let props = defineProps({
- disabled: Boolean,
- data: Array<DangerListType>
-});
-
-const dangerSourceState = reactive<DangerSourceType>({
- disabled: false,
- dangerList: []
-})
-
-watchEffect(() => {
- dangerSourceState.dangerList = props.data as Array<DangerListType>
- dangerSourceState.disabled = props.disabled
- console.log(dangerSourceState.dangerList,'dangerSourceState.dangerList')
-});
-
-const addDangerItem = () => {
- dangerSourceState.dangerList.push({riskSource: '', riskCharacteristic: '', number: null, description: ''});
-};
-
-const deleteDangerItem = (index: number) => {
- dangerSourceState.dangerList.splice(index,1);
-};
-
-const formatList = (formatList: Array<DangerListType>) => {
- dangerSourceState.dangerList = formatList
-}
-
-defineExpose({
- dangerSourceState
-});
-
-</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;
- }
- &.required {
- &::before {
- content: "*";
- display: inline-block;
- color: red;
- }
- }
- 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%;
- }
- }
- }
-
- .b-font {
- font-size: 16px;
- font-weight: bolder;
- }
-}
-
-.m-color {
- color: #0c4995;
-}
-:deep(.el-input__wrapper ){
- box-shadow: none;
-}
-</style>
diff --git a/src/views/analyse/assessApply/index.ts b/src/views/analyse/assessApply/index.ts
deleted file mode 100644
index 8e28d84..0000000
--- a/src/views/analyse/assessApply/index.ts
+++ /dev/null
@@ -1,66 +0,0 @@
-declare interface ReportStateType {
-
-}
-
-declare interface ReportDialogType {
- title: string
- disabled: boolean
- reportDialogVisible: boolean
- reportForm: {
- id: null | number,
- experimentName: string,
- experimentType: null | number,
- personUser: string,
- personUserId: null | number,
- personUserPhone: string,
- safePersonUserId: null | number,
- safePersonUser: string,
- safePersonUserPhone: string,
- dep: string,
- experimentSite: [],
- experimentDesc: string,
- emergencyMeasure: string,
- assessPerson: string,
- safeRiskAnalysis: string,
- assessLevel: null | number,
- riskSource: [],
- riskSourceType: [],
- description: string,
- person: []
- }
- reportFormRules: object
- allPersonList: Array<AllPersonListType>
- systemPersonList: Array<AllPersonListType>
- allRoomList: Array<RoomType>,
- experimentTypeList: Array<Type>
-}
-
-declare interface DangerSourceType {
- disabled: boolean
- dangerList: Array<DangerListType>
-}
-
-
-declare interface DangerListType {
- riskSource: string
- riskCharacteristic: string
- number: null | number
- description: string
-}
-
-declare interface AssessApplyDialogStateType {
- title: string,
- assessApplyDialogVisible: boolean,
- id: number | null,
- liabilityUserId: number | null,
- riskUnitData: Array<any>,
- riskList: Array<type>,
- basicUnitList: Array<UnitType>
- allPersonList: Array<AllPersonListType>
- allRiskTypeList: Array<RiskType>
-}
-
-declare interface type {
- id: number,
- name: string
-}
\ No newline at end of file
diff --git a/src/views/analyse/assessApply/index.vue b/src/views/analyse/assessApply/index.vue
deleted file mode 100644
index b593b5a..0000000
--- a/src/views/analyse/assessApply/index.vue
+++ /dev/null
@@ -1,379 +0,0 @@
-<template>
- <div class="home-container">
- <div style="height: 100%">
- <el-row class="homeCard">
- <div class="basic-line">
- <span>实验名称:</span>
- <el-input v-model="developState.searchQuery.searchParams.experimentName" clearable filterable class="input-box" placeholder="实验名称">
- </el-input>
- </div>
- <div class="basic-line">
- <span>实验类型:</span>
- <el-select v-model="developState.searchQuery.searchParams.experimentType" clearable filterable class="input-box" placeholder="实验类型">
- <el-option v-for="item in developState.experimentTypeList" :key="item.id" :label="item.name" :value="item.id"></el-option>
- </el-select>
- </div>
- <div style="padding-bottom: 10px">
- <el-button type="primary" @click="getAssessData">查询</el-button>
- <el-button plain @click="reset">重置</el-button>
- </div>
- </el-row>
- <div class="homeCard">
- <div class="main-card">
- <el-row class="cardTop">
- </el-row>
- <el-table ref="multipleTableRef" :data="developState.developData" style="width: 100%" height="calc(100% - 100px)" :header-cell-style="{ background: '#fafafa' }">
- <el-table-column prop="experimentCode" label="实验编号"/>
- <el-table-column prop="experimentName" label="实验名称"/>
- <el-table-column prop="createExperimentTime" label="立项时间">
- <template #default="scope">
- <span>{{scope.row.createExperimentTime?scope.row.createExperimentTime.substring(0,16):'--'}}</span>
- </template>
- </el-table-column>
- <el-table-column prop="startTime" label="开展时间" show-overflow-tooltip>
- <template #default="scope">
- <span>{{scope.row.startTime?scope.row.startTime.substring(0,16):'--'}}</span>
- </template>
- </el-table-column>
- <el-table-column prop="siteList" label="实验场所" show-overflow-tooltip>
- <template #default="scope">
- <span>{{scope.row.siteList.map(i=>i.siteName).join(',')}}</span>
- </template>
- </el-table-column>
- <el-table-column prop="experimentType" label="实验类别">
- <template #default="scope">
- <span>{{developState.experimentTypeList.find(i=>i.id == scope.row.experimentType)?.name}}</span>
- </template>
- </el-table-column>
- <el-table-column prop="status" label="评估申请">
- <template #default="scope">
- <span>{{scope.row.status == 1?'未申请':scope.row.status == 2?'已申请':'--'}}</span>
- </template>
- </el-table-column>
- <el-table-column prop="status" label="评估申请时间" show-overflow-tooltip>
- <template #default="scope">
- <span>{{scope.row.assessApplyTime?scope.row.assessApplyTime.substring(0,16):'--'}}</span>
- </template>
- </el-table-column>
- <el-table-column prop="stage" label="评估状态">
- <template #default="scope">
- <el-tag :type="scope.row.stage == 4?'success':scope.row.stage == 1?'info':''">
- {{scope.row.stage == 1?'未评估':scope.row.stage == 2?'评估中':scope.row.stage == 3?'评估完成':scope.row.stage == 4?'生成报告':'--'}}
- </el-tag>
- </template>
- </el-table-column>
- <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" 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>
- </template>
- </el-table-column>
- </el-table>
- <div class="pageBtn">
- <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" :pager-count="5" :page-sizes="[10, 20, 30]" v-model:current-page="developState.searchQuery.pageIndex" background v-model:page-size="developState.searchQuery.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="developState.total" class="page-position"> </el-pagination>
- </div>
- </div>
- </div>
- </div>
- <risk-dialog ref="RiskDialogRef" @refresh="getAssessData"></risk-dialog>
- <report-dialog ref="ReportDialogRef" @refresh="getAssessData"></report-dialog>
- </div>
-</template>
-
-<script setup lang="ts">
-import {defineAsyncComponent, onMounted, reactive, ref} from "vue";
-import {projectApi} from "/@/api/experiment/project";
-import {ElMessage, ElMessageBox} from "element-plus";
-import { View,Edit, Plus, RefreshLeft } from '@element-plus/icons-vue';
-import {roomApi} from "/@/api/basic/room";
-import {assessApplyApi} from "/@/api/analyse/assessApply";
-
-const RiskDialog = defineAsyncComponent(() => import('./components/riskDialog.vue'));
-const ReportDialog = defineAsyncComponent(() => import('./components/reportDialog.vue'));
-
-const RiskDialogRef = ref();
-
-const ReportDialogRef = ref();
-const developState = reactive<ProjectStateType>({
- developData: [],
- searchQuery: {
- pageIndex: 1,
- pageSize: 10,
- searchParams: {
- experimentName: '',
- experimentType: null,
- }
- },
- total: 0,
- experimentTypeList: [
- {id: 1, name: '化学类'},
- {id: 2, name: '生物类'},
- {id: 3, name: '辐射类'},
- {id: 4, name: '机电类'},
- {id: 5, name: '特种设备类'},
- {id: 6, name: '其它类'},
- ],
- allRoomList: []
-})
-
-const getAssessData = async () => {
- let res = await assessApplyApi().getData(developState.searchQuery);
- if(res.data.code === 100){
- developState.developData = res.data.data;
- developState.total = res.data.total;
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- });
- }
-};
-
-const toReport = (val: ProjectType)=>{
- ElMessageBox.confirm(`此操作将对该实验生成风险评估报告:“${val.experimentName}”,是否继续?`, '提示', {
- confirmButtonText: '确认',
- cancelButtonText: '取消',
- type: 'warning'
- })
- .then(async () => {
- let res = await assessApplyApi().toRiskReport({ id: val.id });
- if (res.data.code === 100) {
- ElMessage({
- type: 'success',
- duration: 2000,
- message: '生成报告成功'
- });
- await getAssessData();
- } else {
- ElMessage({
- type: 'warning',
- message: res.data.msg
- });
- }
- })
- .catch((error) => {
- });
-}
-
-const getAllRoom = async () => {
- let res = await roomApi().getAllRoom();
- if(res.data.code === 100){
- developState.allRoomList = JSON.parse(JSON.stringify(res.data.data));
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- })
- }
-};
-
-const openRiskDialog = (value: ProjectType) => {
- RiskDialogRef.value.showRiskDialog(value);
-};
-
-const openReportDialog = (title: string,value: ProjectType) =>{
- ReportDialogRef.value.showReportDialog(title, value, developState.allRoomList);
-}
-
-const onDelProject = (val: ProjectType) => {
- ElMessageBox.confirm(`此操作将永久删除该实验:“${val.experimentCode}”,是否继续?`, '提示', {
- confirmButtonText: '确认',
- cancelButtonText: '取消',
- type: 'warning'
- })
- .then(async () => {
- let res = await projectApi().deleteProjectById({ id: val.id });
- if (res.data.code === 100) {
- ElMessage({
- type: 'success',
- duration: 2000,
- message: '删除成功'
- });
- await getAssessData();
- } else {
- ElMessage({
- type: 'warning',
- message: res.data.msg
- });
- }
- })
- .catch((error) => {
- });
-}
-
-const onHandleSizeChange = (val: number) => {
- developState.searchQuery.pageSize = val;
- getAssessData();
-};
-
-const onHandleCurrentChange = (val: number) => {
- developState.searchQuery.pageIndex = val;
- getAssessData();
-};
-
-const reset = () => {
- developState.searchQuery = {
- pageIndex: 1,
- pageSize: 10,
- searchParams: {
- experimentName: '',
- experimentType: null,
- }
- }
-};
-
-onMounted(() => {
- getAssessData()
- getAllRoom()
-})
-
-</script>
-
-<style scoped lang="scss">
-$homeNavLengh: 8;
-.home-container {
- height: calc(100vh - 144px);
- box-sizing: border-box;
- overflow: hidden;
- .homeCard {
- width: 100%;
- padding: 20px;
- box-sizing: border-box;
- background: #fff;
- border-radius: 4px;
-
- .main-card {
- width: 100%;
- height: 100%;
- .cardTop {
- display: flex;
- align-items: center;
- justify-content: space-between;
- margin-bottom: 20px;
- .mainCardBtn {
- margin: 0;
- }
- }
- .pageBtn {
- height: 60px;
- display: flex;
- align-items: center;
- justify-content: right;
-
- .demo-pagination-block + .demo-pagination-block {
- margin-top: 10px;
- }
- .demo-pagination-block .demonstration {
- margin-bottom: 16px;
- }
- }
- }
- &:last-of-type {
- height: calc(100% - 100px);
- }
- }
- .el-row {
- display: flex;
- align-items: center;
- margin-bottom: 20px;
- &:last-child {
- margin-bottom: 0;
- }
- .grid-content {
- align-items: center;
- min-height: 36px;
- }
-
- .topInfo {
- display: flex;
- align-items: center;
- font-size: 16px;
- font-weight: bold;
-
- & > div {
- white-space: nowrap;
- margin-right: 20px;
- }
- }
- }
-}
-.stepItem {
- width: 100%;
- display: flex;
- align-items: flex-start;
- margin-bottom: 30px;
- margin-left: 30px;
- padding-bottom: 30px;
- border-left: 2px solid #ccc;
- &:first-of-type {
- margin-top: 30px;
- }
- &:last-of-type {
- margin-bottom: 0;
- border-left: none;
- }
- .stepNum {
- width: 30px;
- height: 30px;
- border-radius: 15px;
- box-sizing: border-box;
- color: #333;
- border: 1px solid #999;
- line-height: 28px;
- text-align: center;
- margin-right: 10px;
- margin-left: -16px;
- margin-top: -30px;
- }
- .stepCard {
- width: 100%;
- margin-top: -30px;
-
- .box-card {
- width: 100%;
- &:deep(.el-card__header) {
- padding: 10px 15px;
- }
- .card-header {
- width: 100%;
- display: flex;
- justify-content: space-between;
- align-items: center;
- & > div:first-of-type {
- margin-right: 80px;
- font-size: 18px;
- font-weight: bold;
- }
- }
- }
- }
- &:hover .card-header {
- color: #0098f5;
- }
- &:hover .stepNum {
- border: 2px solid #0098f5;
- color: #0098f5;
- }
-}
-
-:deep(.el-date-editor) {
- width: 100%;
-}
-.el-select {
- width: 100%;
-}
-:deep(.el-textarea.is-disabled .el-textarea__inner) {
- background-color: var(--el-card-bg-color);
- color: var(--el-input-text-color, var(--el-text-color-regular));
-}
-:deep(.el-input.is-disabled .el-input__inner) {
- color: var(--el-input-text-color, var(--el-text-color-regular));
-}
-:deep(.el-input.is-disabled .el-input__wrapper) {
- background-color: var(--el-card-bg-color);
- box-shadow: none;
-}
-</style>
diff --git a/src/views/analyse/evaluate/components/evaluateDialog.vue b/src/views/analyse/evaluate/components/evaluateDialog.vue
deleted file mode 100644
index 145d202..0000000
--- a/src/views/analyse/evaluate/components/evaluateDialog.vue
+++ /dev/null
@@ -1,1204 +0,0 @@
-<template>
- <div class="system-menu-dialog-container">
- <el-dialog :title="evaluateDialogState.title" v-model="evaluateDialogState.evaluateDialogVisible" width="70%">
- <el-form ref="evaluateFormRef" :rules="evaluateDialogState.evaluateFormRules" :model="evaluateDialogState.evaluateForm" size="default" label-width="140px">
- <el-row :gutter="35">
-<!-- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">-->
-<!-- <el-form-item label="评估计划" prop="id">-->
-<!-- <el-select class="input-length" :disabled="true" v-model="evaluateDialogState.evaluateForm.id" style="width:100%" placeholder="评估计划" clearable>-->
-<!-- <el-option v-for="item in evaluateDialogState.planList" :key="item.id" :label="item.assessPlanName" :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="riskValue">-->
-<!-- <el-input type="number" class="input-length" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.riskValue" style="width:100%" placeholder="风险数值">-->
-<!-- </el-input>-->
-<!-- </el-form-item>-->
-<!-- </el-col>-->
-
- <div class="evaluateCard">
- <div class="cardTit">
- <span v-if="evaluateDialogState.evaluateForm.identificationMethod === 1">PHA辨识法</span>
- <span v-if="evaluateDialogState.evaluateForm.identificationMethod === 2">JHA辨识法</span>
- <span v-if="evaluateDialogState.evaluateForm.identificationMethod === 3">SCL辨识法</span>
- <span v-if="evaluateDialogState.evaluateForm.identificationMethod === 4">HAZOP辨识法</span>
- <span v-if="evaluateDialogState.evaluateForm.identificationMethod === 5">类比辨识法</span>
- </div>
- <div v-if="evaluateDialogState.evaluateForm.identificationMethod === 1">
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="检查项目">
- <el-input class="input-length" disabled v-model="evaluateDialogState.evaluateInfo.phaCheckItem" placeholder="检查项目" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="存在风险因素">
- <el-input class="input-length" disabled v-model="evaluateDialogState.evaluateInfo.phaRiskFactor" placeholder="存在风险因素" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="可能产生的后果">
- <el-input class="input-length" disabled v-model="evaluateDialogState.evaluateInfo.phaResult" placeholder="可能产生的后果" clearable></el-input>
- </el-form-item>
- </el-col>
- </div>
- <div v-if="evaluateDialogState.evaluateForm.identificationMethod === 2">
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="作业步骤">
- <el-input class="input-length" disabled v-model="evaluateDialogState.evaluateInfo.jhaCheckItem" placeholder="作业步骤" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="危险源或潜在事件">
- <el-input class="input-length" disabled v-model="evaluateDialogState.evaluateInfo.jhaRiskFactor" placeholder="危险源或潜在事件" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="可能产生的后果">
- <el-input class="input-length" disabled v-model="evaluateDialogState.evaluateInfo.jhaResult" placeholder="可能产生的后果" clearable></el-input>
- </el-form-item>
- </el-col>
- </div>
- <div v-if="evaluateDialogState.evaluateForm.identificationMethod === 3">
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="检查项目">
- <el-input class="input-length" disabled v-model="evaluateDialogState.evaluateInfo.sclCheckItem" placeholder="检查项目" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="检查标准">
- <el-input class="input-length" disabled v-model="evaluateDialogState.evaluateInfo.sclCheckStandard" placeholder="检查标准" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="不符合标准情况">
- <el-input class="input-length" disabled v-model="evaluateDialogState.evaluateInfo.sclCheckUnstandard" placeholder="不符合标准情况" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="主要后果">
- <el-input class="input-length" disabled v-model="evaluateDialogState.evaluateInfo.sclCheckResult" placeholder="主要后果" clearable></el-input>
- </el-form-item>
- </el-col>
- </div>
- <div v-if="evaluateDialogState.evaluateForm.identificationMethod === 4">
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="节点">
- <el-input class="input-length" disabled v-model="evaluateDialogState.evaluateInfo.hazopNode" placeholder="HAZOP_节点" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="参数">
- <el-input class="input-length" disabled v-model="evaluateDialogState.evaluateInfo.hazopParam" placeholder="HAZOP_参数" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="参数描述">
- <el-input class="input-length" disabled v-model="evaluateDialogState.evaluateInfo.hazopParamDesc" placeholder="HAZOP_参数描述" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="引导词">
- <el-input class="input-length" disabled v-model="evaluateDialogState.evaluateInfo.hazopGuide" placeholder="HAZOP_引导词" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="偏差">
- <el-input class="input-length" disabled v-model="evaluateDialogState.evaluateInfo.hazopDeviation" placeholder="HAZOP_偏差" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="可能原因">
- <el-input class="input-length" disabled v-model="evaluateDialogState.evaluateInfo.hazopPossibleCauses" placeholder="HAZOP_可能原因" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="主要后果">
- <el-input class="input-length" disabled v-model="evaluateDialogState.evaluateInfo.hazopResult" placeholder="HAZOP_主要后果" clearable></el-input>
- </el-form-item>
- </el-col>
- </div>
- <div v-if="evaluateDialogState.evaluateForm.identificationMethod === 5">
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="检查项目" prop="analogyCheckItem">
- <el-input class="input-length" disabled v-model="evaluateDialogState.evaluateInfo.analogyCheckItem" placeholder="检查项目" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="类比参照" prop="analogyReference">
- <el-input class="input-length" disabled v-model="evaluateDialogState.evaluateInfo.analogyReference" placeholder="类比参照" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="存在风险因素" prop="analogyRiskFactor">
- <el-input class="input-length" disabled v-model="evaluateDialogState.evaluateInfo.analogyRiskFactor" placeholder="存在风险因素" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="可能产生的后果" prop="analogyResult">
- <el-input class="input-length" disabled v-model="evaluateDialogState.evaluateInfo.analogyResult" placeholder="可能产生的后果" clearable></el-input>
- </el-form-item>
- </el-col>
- </div>
- </div>
-
- <el-col style="display: flex;align-items: center" :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="评价方法" style="width: 80% !important;">
- <el-select class="input-length" disabled v-model="evaluateDialogState.evaluateForm.evaluateMethod" style="width:100%" placeholder="评价方法" clearable>
- <el-option v-for="item in evaluateDialogState.evaluateMethodList" :key="item.id" :label="item.name" :value="item.id"></el-option>
- </el-select>
- </el-form-item>
- <el-button :disabled="evaluateDialogState.disabled" size="default" type="primary" @click="openChangeMethod()">修改评价方法</el-button>
- </el-col>
-
- <div class="evaluateCard">
- <div class="cardTit">
- <span>固有风险评分</span>
- </div>
- <div class="valueSelect" v-if="evaluateDialogState.evaluateMethod === 1">
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="LEC_L" prop="originalLecL">
- <el-select class="input-length" :teleported="false" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.originalLecL" @change="calcOriginScore('lec')" style="width:100%" placeholder="LEC_L的数值" clearable>
- <el-option v-for="item in evaluateDialogState.listLecL" :key="item.value" :label="item.value" :value="item.value">
- <div class="valueTable">
- <div><div>分值:</div><span>{{item.value}}</span></div>
- <div><div>标准:</div><span>{{item.desc}}</span></div>
- </div>
- </el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="LEC_E" prop="originalLecE">
- <el-select class="input-length" :teleported="false" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.originalLecE" @change="calcOriginScore('lec')" style="width:100%" placeholder="LEC_E的数值" clearable>
- <el-option v-for="item in evaluateDialogState.listLecE" :key="item.value" :label="item.value" :value="item.value">
- <div class="valueTable">
- <div><div>分值:</div><span>{{item.value}}</span></div>
- <div><div>标准:</div><span>{{item.desc}}</span></div>
- </div>
- </el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="LEC_C" prop="originalLecC">
- <el-select class="input-length" :teleported="false" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.originalLecC" @change="calcOriginScore('lec')" style="width:100%" placeholder="LEC_C的数值" clearable>
- <el-option v-for="item in evaluateDialogState.listLecC" :key="item.value" :label="item.value" :value="item.value">
- <div class="valueTable">
- <div class="longTit"><div>分值:</div><span>{{item.value}}</span></div>
- <div class="longTit"><div>人员伤亡:</div><span>{{item.person}}</span></div>
- <div class="longTit"><div>直接经济损失:</div><span>{{item.money}}</span></div>
- <div class="longTit"><div>停工情况:</div><span>{{item.stopWork}}</span></div>
- <div class="longTit"><div>企业形象:</div><span>{{item.company}}</span></div>
- <div class="longTit"><div>法律,法规及其它要求:</div><span>{{item.desc}}</span></div>
- </div>
- </el-option>
- </el-select>
- </el-form-item>
- </el-col>
- </div>
- <div class="valueSelect" v-if="evaluateDialogState.evaluateMethod === 2">
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="LS_L" prop="originalLsL">
- <el-select class="input-length" :teleported="false" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.originalLsL" @change="calcOriginScore('ls')" style="width:100%" placeholder="LS_L的数值" clearable>
- <el-option v-for="item in evaluateDialogState.listLsL" :key="item.value" :label="item.value" :value="item.value">
- <div class="valueTable">
- <div><div>分值:</div><span>{{item.value}}</span></div>
- <div><div>标准:</div><span>{{item.desc}}</span></div>
- </div>
- </el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="LS_S" prop="originalLsS">
- <el-select class="input-length" :teleported="false" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.originalLsS" @change="calcOriginScore('ls')" style="width:100%" placeholder="LS_S的数值" clearable>
- <el-option v-for="item in evaluateDialogState.listLsS" :key="item.value" :label="item.value" :value="item.value">
- <div class="valueTable">
- <div class="longTit"><div>分值:</div><span>{{item.value}}</span></div>
- <div class="longTit"><div>人员伤亡:</div><span>{{item.person}}</span></div>
- <div class="longTit"><div>直接经济损失:</div><span>{{item.money}}</span></div>
- <div class="longTit"><div>停工情况:</div><span>{{item.stopWork}}</span></div>
- <div class="longTit"><div>企业形象:</div><span>{{item.company}}</span></div>
- <div class="longTit"><div>法律,法规及其它要求:</div><span>{{item.desc}}</span></div>
- </div>
- </el-option>
- </el-select>
- </el-form-item>
- </el-col>
- </div>
- <div class="valueSelect" v-if="evaluateDialogState.evaluateMethod === 3">
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="MES_M" prop="originalMesM">
- <el-select class="input-length" :teleported="false" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.originalMesM" @change="calcOriginScore('mes')" style="width:100%" placeholder="MES_M的数值" clearable>
- <el-option v-for="item in evaluateDialogState.listMesM" :key="item.value" :label="item.value" :value="item.value">
- <div class="valueTable">
- <div><div>分值:</div><span>{{item.value}}</span></div>
- <div><div>标准:</div><span>{{item.desc}}</span></div>
- </div>
- </el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="MES_E" prop="originalMesE">
- <el-select class="input-length" :teleported="false" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.originalMesE" @change="calcOriginScore('mes')" style="width:100%" placeholder="MES_E的数值" clearable>
- <el-option v-for="item in evaluateDialogState.listMesE" :key="item.value" :label="item.value" :value="item.value">
- <div class="valueTable">
- <div><div>分值:</div><span>{{item.value}}</span></div>
- <div><div>e1标准:</div><span>{{item.e1Desc}}</span></div>
- <div><div>e2标准:</div><span>{{item.e2Desc}}</span></div>
- </div>
- </el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="MES_S" prop="originalMesS">
- <el-select class="input-length" :teleported="false" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.originalMesS" @change="calcOriginScore('mes')" style="width:100%" placeholder="MES_S的数值" clearable>
- <el-option v-for="item in evaluateDialogState.listMesS" :key="item.value" :label="item.value" :value="item.value">
- <div class="valueTable">
- <div class="longTit"><div>分值:</div><span>{{item.value}}</span></div>
- <div class="longTit"><div>人员伤亡:</div><span>{{item.person}}</span></div>
- <div class="longTit"><div>直接经济损失:</div><span>{{item.money}}</span></div>
- <div class="longTit"><div>停工情况:</div><span>{{item.stopWork}}</span></div>
- <div class="longTit"><div>法律,法规及其它要求:</div><span>{{item.desc}}</span></div>
- </div>
- </el-option>
- </el-select>
- </el-form-item>
- </el-col>
- </div>
- <div class="valueSelect" v-if="evaluateDialogState.evaluateMethod === 4">
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="RS_R" prop="originalRsR">
- <el-select class="input-length" :teleported="false" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.originalRsR" @change="calcOriginScore('rs')" style="width:100%" placeholder="RS_R的数值" clearable>
- <el-option v-for="item in evaluateDialogState.listRsR" :key="item.value" :label="item.value" :value="item.value">
- <div class="valueTable">
- <div class="longTit"><div>分值:</div><span>{{item.value}}</span></div>
- <div class="longTit"><div>区间,定量描述:</div><span>{{item.section}}</span></div>
- <div class="longTit"><div>标准:</div><span>{{item.desc}}</span></div>
- </div>
- </el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="RS_S" prop="originalRsS">
- <el-select class="input-length" :teleported="false" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.originalRsS" @change="calcOriginScore('rs')" style="width:100%" placeholder="RS_S的数值" clearable>
- <el-option v-for="item in evaluateDialogState.listRsS" :key="item.value" :label="item.value" :value="item.value">
- <div class="valueTable">
- <div><div>分值:</div><span>{{item.value}}</span></div>
- <div><div>人员伤亡:</div><span>{{item.person}}</span></div>
- <div><div>直接经济损失:</div><span>{{item.money}}</span></div>
- <div><div>标准:</div><span>{{item.desc}}</span></div>
- </div>
- </el-option>
- </el-select>
- </el-form-item>
- </el-col>
- </div>
- </div>
-
- <div class="evaluateCard">
- <div class="cardTit">
- <span>固有风险分值</span>
- </div>
- <div>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="风险值" prop="originalRiskValue">
- <el-input type="number" class="input-length" disabled v-model="evaluateDialogState.evaluateForm.originalRiskValue" placeholder="风险数值" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="风险等级值" prop="originalRiskLevelValue">
- <el-select class="input-length" disabled v-model="evaluateDialogState.evaluateForm.originalRiskLevelValue" style="width:100%" placeholder="风险等级值" clearable>
- <el-option v-for="item in evaluateDialogState.riskLevelValueList" :key="item.id" :label="item.name" :value="item.id"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="风险级别" prop="originalRiskLevel">
- <el-select class="input-length" disabled v-model="evaluateDialogState.evaluateForm.originalRiskLevel" style="width:100%" placeholder="风险级别" clearable>
- <el-option v-for="item in evaluateDialogState.riskLevelList" :key="item.id" :label="item.name" :value="item.id"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="风险色" prop="originalRiskColor">
- <el-select class="input-length" disabled v-model="evaluateDialogState.evaluateForm.originalRiskColor" style="width:100%" placeholder="风险色" clearable>
- <el-option v-for="item in evaluateDialogState.riskColorList" :key="item.id" :label="item.name" :value="item.id"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- </div>
- </div>
-
- <div class="evaluateCard">
- <div class="cardTit">
- <span>现有措施</span>
- </div>
- <div>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="技术措施" prop="technologyMeasure">
- <el-input type="textarea" class="input-length" :autosize="{ minRows:1 }" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.technologyMeasure" placeholder="技术措施" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="管理措施" prop="manageMeasure">
- <el-input type="textarea" class="input-length" :autosize="{ minRows:1 }" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.manageMeasure" placeholder="管理措施" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="教育措施" prop="educationMeasure">
- <el-input type="textarea" class="input-length" :autosize="{ minRows:1 }" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.educationMeasure" placeholder="教育措施" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="个体防护措施" prop="personalProtectionMeasure">
- <el-input type="textarea" class="input-length" :autosize="{ minRows:1 }" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.personalProtectionMeasure" placeholder="个体防护措施" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="应急措施" prop="emergencyMeasure">
- <el-input type="textarea" class="input-length" :autosize="{ minRows:1 }" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.emergencyMeasure" placeholder="应急措施" clearable></el-input>
- </el-form-item>
- </el-col>
- </div>
- </div>
-
- <div class="evaluateCard">
- <div class="cardTit">
- <span>现有风险评分</span>
- </div>
- <div class="valueSelect" v-if="evaluateDialogState.evaluateMethod === 1">
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="LEC_L" prop="lecL">
- <el-select class="input-length" :teleported="false" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.lecL" @change="calcScore('lec')" style="width:100%" placeholder="LEC_L的数值" clearable>
- <el-option v-for="item in evaluateDialogState.listLecL" :key="item.value" :label="item.value" :value="item.value">
- <div class="valueTable">
- <div><div>分值:</div><span>{{item.value}}</span></div>
- <div><div>标准:</div><span>{{item.desc}}</span></div>
- </div>
- </el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="LEC_E" prop="lecE">
- <el-select class="input-length" :teleported="false" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.lecE" @change="calcScore('lec')" style="width:100%" placeholder="LEC_E的数值" clearable>
- <el-option v-for="item in evaluateDialogState.listLecE" :key="item.value" :label="item.value" :value="item.value">
- <div class="valueTable">
- <div><div>分值:</div><span>{{item.value}}</span></div>
- <div><div>标准:</div><span>{{item.desc}}</span></div>
- </div>
- </el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="LEC_C" prop="lecC">
- <el-select class="input-length" :teleported="false" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.lecC" @change="calcScore('lec')" style="width:100%" placeholder="LEC_C的数值" clearable>
- <el-option v-for="item in evaluateDialogState.listLecC" :key="item.value" :label="item.value" :value="item.value">
- <div class="valueTable">
- <div class="longTit"><div>分值:</div><span>{{item.value}}</span></div>
- <div class="longTit"><div>人员伤亡:</div><span>{{item.person}}</span></div>
- <div class="longTit"><div>直接经济损失:</div><span>{{item.money}}</span></div>
- <div class="longTit"><div>停工情况:</div><span>{{item.stopWork}}</span></div>
- <div class="longTit"><div>企业形象:</div><span>{{item.company}}</span></div>
- <div class="longTit"><div>法律,法规及其它要求:</div><span>{{item.desc}}</span></div>
- </div>
- </el-option>
- </el-select>
- </el-form-item>
- </el-col>
- </div>
- <div class="valueSelect" v-if="evaluateDialogState.evaluateMethod === 2">
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="LS_L" prop="lsL">
- <el-select class="input-length" :teleported="false" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.lsL" @change="calcScore('ls')" style="width:100%" placeholder="LS_L的数值" clearable>
- <el-option v-for="item in evaluateDialogState.listLsL" :key="item.value" :label="item.value" :value="item.value">
- <div class="valueTable">
- <div><div>分值:</div><span>{{item.value}}</span></div>
- <div><div>标准:</div><span>{{item.desc}}</span></div>
- </div>
- </el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="LS_S" prop="lsS">
- <el-select class="input-length" :teleported="false" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.lsS" @change="calcScore('ls')" style="width:100%" placeholder="LS_S的数值" clearable>
- <el-option v-for="item in evaluateDialogState.listLsS" :key="item.value" :label="item.value" :value="item.value">
- <div class="valueTable">
- <div class="longTit"><div>分值:</div><span>{{item.value}}</span></div>
- <div class="longTit"><div>人员伤亡:</div><span>{{item.person}}</span></div>
- <div class="longTit"><div>直接经济损失:</div><span>{{item.money}}</span></div>
- <div class="longTit"><div>停工情况:</div><span>{{item.stopWork}}</span></div>
- <div class="longTit"><div>企业形象:</div><span>{{item.company}}</span></div>
- <div class="longTit"><div>法律,法规及其它要求:</div><span>{{item.desc}}</span></div>
- </div>
- </el-option>
- </el-select>
- </el-form-item>
- </el-col>
- </div>
- <div class="valueSelect" v-if="evaluateDialogState.evaluateMethod === 3">
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="MES_M" prop="mesM">
- <el-select class="input-length" :teleported="false" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.mesM" @change="calcScore('mes')" style="width:100%" placeholder="MES_M的数值" clearable>
- <el-option v-for="item in evaluateDialogState.listMesM" :key="item.value" :label="item.value" :value="item.value">
- <div class="valueTable">
- <div><div>分值:</div><span>{{item.value}}</span></div>
- <div><div>标准:</div><span>{{item.desc}}</span></div>
- </div>
- </el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="MES_E" prop="mesE">
- <el-select class="input-length" :teleported="false" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.mesE" @change="calcScore('mes')" style="width:100%" placeholder="MES_E的数值" clearable>
- <el-option v-for="item in evaluateDialogState.listMesE" :key="item.value" :label="item.value" :value="item.value">
- <div class="valueTable">
- <div><div>分值:</div><span>{{item.value}}</span></div>
- <div><div>e1标准:</div><span>{{item.e1Desc}}</span></div>
- <div><div>e2标准:</div><span>{{item.e2Desc}}</span></div>
- </div>
- </el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="MES_S" prop="mesS">
- <el-select class="input-length" :teleported="false" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.mesS" @change="calcScore('mes')" style="width:100%" placeholder="MES_S的数值" clearable>
- <el-option v-for="item in evaluateDialogState.listMesS" :key="item.value" :label="item.value" :value="item.value">
- <div class="valueTable">
- <div class="longTit"><div>分值:</div><span>{{item.value}}</span></div>
- <div class="longTit"><div>人员伤亡:</div><span>{{item.person}}</span></div>
- <div class="longTit"><div>直接经济损失:</div><span>{{item.money}}</span></div>
- <div class="longTit"><div>停工情况:</div><span>{{item.stopWork}}</span></div>
- <div class="longTit"><div>法律,法规及其它要求:</div><span>{{item.desc}}</span></div>
- </div>
- </el-option>
- </el-select>
- </el-form-item>
- </el-col>
- </div>
- <div class="valueSelect" v-if="evaluateDialogState.evaluateMethod === 4">
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="RS_R" prop="rsR">
- <el-select class="input-length" :teleported="false" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.rsR" @change="calcScore('rs')" style="width:100%" placeholder="RS_R的数值" clearable>
- <el-option v-for="item in evaluateDialogState.listRsR" :key="item.value" :label="item.value" :value="item.value">
- <div class="valueTable">
- <div class="longTit"><div>分值:</div><span>{{item.value}}</span></div>
- <div class="longTit"><div>区间,定量描述:</div><span>{{item.section}}</span></div>
- <div class="longTit"><div>标准:</div><span>{{item.desc}}</span></div>
- </div>
- </el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="RS_S" prop="rsS">
- <el-select class="input-length" :teleported="false" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.rsS" @change="calcScore('rs')" style="width:100%" placeholder="RS_S的数值" clearable>
- <el-option v-for="item in evaluateDialogState.listRsS" :key="item.value" :label="item.value" :value="item.value">
- <div class="valueTable">
- <div><div>分值:</div><span>{{item.value}}</span></div>
- <div><div>人员伤亡:</div><span>{{item.person}}</span></div>
- <div><div>直接经济损失:</div><span>{{item.money}}</span></div>
- <div><div>标准:</div><span>{{item.desc}}</span></div>
- </div>
- </el-option>
- </el-select>
- </el-form-item>
- </el-col>
- </div>
- </div>
-
- <div class="evaluateCard">
- <div class="cardTit">
- <span>现有风险分值</span>
- </div>
- <div>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="风险值" prop="riskValue">
- <el-input type="number" class="input-length" disabled v-model="evaluateDialogState.evaluateForm.riskValue" placeholder="风险数值" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="风险等级值" prop="riskLevelValue">
- <el-select class="input-length" disabled v-model="evaluateDialogState.evaluateForm.riskLevelValue" style="width:100%" placeholder="风险等级值" clearable>
- <el-option v-for="item in evaluateDialogState.riskLevelValueList" :key="item.id" :label="item.name" :value="item.id"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="风险级别" prop="riskLevel">
- <el-select class="input-length" disabled v-model="evaluateDialogState.evaluateForm.riskLevel" style="width:100%" placeholder="风险级别" clearable>
- <el-option v-for="item in evaluateDialogState.riskLevelList" :key="item.id" :label="item.name" :value="item.id"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="风险色" prop="riskColor">
- <el-select class="input-length" disabled v-model="evaluateDialogState.evaluateForm.riskColor" style="width:100%" placeholder="风险色" clearable>
- <el-option v-for="item in evaluateDialogState.riskColorList" :key="item.id" :label="item.name" :value="item.id"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- </div>
- </div>
-
- <div class="evaluateCard">
- <div class="cardTit">
- <span>建议措施</span>
- </div>
- <div>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="技术措施" prop="adviseTechnologyMeasure">
- <el-input type="textarea" class="input-length" :autosize="{ minRows:1 }" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.adviseTechnologyMeasure" placeholder="技术措施" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="管理措施" prop="adviseManageMeasure">
- <el-input type="textarea" class="input-length" :autosize="{ minRows:1 }" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.adviseManageMeasure" placeholder="管理措施" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="教育措施" prop="adviseEducationMeasure">
- <el-input type="textarea" class="input-length" :autosize="{ minRows:1 }" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.adviseEducationMeasure" placeholder="教育措施" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="个体防护措施" prop="advisePersonalProtectionMeasure">
- <el-input type="textarea" class="input-length" :autosize="{ minRows:1 }" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.advisePersonalProtectionMeasure" placeholder="个体防护措施" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="应急措施" prop="adviseEmergencyMeasure">
- <el-input type="textarea" class="input-length" :autosize="{ minRows:1 }" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.adviseEmergencyMeasure" placeholder="应急措施" clearable></el-input>
- </el-form-item>
- </el-col>
- </div>
- </div>
-
- <el-col style="display: flex;align-items: center" :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="评价专家意见" prop="evaluateDesc" style="width: 100% !important;">
- <el-input type="textarea" class="input-length" :autosize="{ minRows:2 }" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.evaluateDesc" placeholder="评价专家意见" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col style="display: flex;align-items: center" :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="安全风险分析" prop="evaluateDesc" style="width: 100% !important;">
- <el-input type="textarea" class="input-length" :autosize="{ minRows:2 }" :disabled="evaluateDialogState.disabled" v-model="evaluateDialogState.evaluateForm.safeRiskAnalysis" placeholder="安全风险分析" clearable></el-input>
- </el-form-item>
- </el-col>
- </el-row>
- </el-form>
- <el-dialog title="修改评价方法" v-model="evaluateDialogState.evaluateMethodVisible" width="30%">
- <el-select class="input-length" v-model="evaluateDialogState.evaluateForm.evaluateMethod" style="width:100%" placeholder="评价方法" clearable>
- <el-option v-for="item in evaluateDialogState.evaluateMethodList" :key="item.id" :label="item.name" :value="item.id"></el-option>
- </el-select>
- <template #footer>
- <span class="Query-footer">
- <el-button @click="evaluateDialogState.evaluateMethodVisible = false" size="default">取 消</el-button>
- <el-button type="primary" @click="conFirmChange()" size="default">确定</el-button>
- </span>
- </template>
- </el-dialog>
- <template #footer>
- <span class="dialog-footer">
- <el-button @click="evaluateDialogState.evaluateDialogVisible = !evaluateDialogState.evaluateDialogVisible" size="default">取 消</el-button>
- <el-button v-if="!evaluateDialogState.disabled" type="primary" @click="onSubmitEvaluate" size="default">提交</el-button>
- </span>
- </template>
- </el-dialog>
- </div>
-</template>
-
-<script setup lang="ts">
-import {computed, onMounted, reactive, ref} from "vue";
-import {ElMessage} from "element-plus";
-import {evaluateApi} from "/@/api/analyse/evaluate";
-import {isValidKey, numFloat} from "/@/utils/methods";
-import { BigNumber } from 'bignumber.js';
-import {identifyApi} from "/@/api/analyse/identify";
-import {ElMessageBox} from "element-plus/es";
-
-const evaluateFormRef = ref()
-
-const evaluateDialogState = reactive<EvaluateDialogType>({
- title: '',
- time:[],
- disabled: false,
- evaluateDialogVisible: false,
- evaluateMethodVisible:false,
- evaluateMethod: null,
- evaluateInfo: {
- id: null,
- identificationMethod: null,
- result: null,
- identificationDesc: '',
- analogyCheckItem: '',
- analogyRiskFactor: '',
- analogyResult: '',
- analogyReference: '',
- hazopNode: '',
- hazopParam: '',
- hazopParamDesc: '',
- hazopGuide: '',
- hazopDeviation: '',
- hazopPossibleCauses: '',
- hazopResult: '',
- jhaCheckItem: '',
- jhaRiskFactor: '',
- jhaResult: '',
- phaCheckItem: '',
- phaRiskFactor: '',
- phaResult: '',
- sclCheckItem: '',
- sclCheckStandard: '',
- sclCheckUnstandard: '',
- sclCheckResult: '',
- hazopId: null,
- jhaId: null,
- phaId: null,
- sclId: null,
- analogyId: null
- },
- evaluateForm: {
- id: null,
- evaluateMethod: null,
- identificationMethod: null,
- identificationId: null,
- manageLevel: 1,
- originalManageLevel: 1,
- riskValue: null,
- riskLevelValue: null,
- riskLevel: null,
- riskColor: null,
- lecL: null,
- lecE: null,
- lecC: null,
- lsL: null,
- lsS: null,
- mesM: null,
- mesE: null,
- mesS: null,
- rsR: null,
- rsS: null,
- lecId: null,
- lsId: null,
- mesId: null,
- rsId: null,
- originalLecL: null,
- originalLecE: null,
- originalLecC: null,
- originalLsL: null,
- originalLsS: null,
- originalMesM: null,
- originalMesE: null,
- originalMesS: null,
- originalRsR: null,
- originalRsS: null,
- originalRiskValue: null,
- originalRiskLevelValue: null,
- originalRiskLevel: null,
- originalRiskColor: null,
- technologyMeasure: '',
- manageMeasure: '',
- educationMeasure: '',
- personalProtectionMeasure: '',
- emergencyMeasure: '',
- adviseTechnologyMeasure: '',
- adviseManageMeasure: '',
- adviseEducationMeasure: '',
- advisePersonalProtectionMeasure: '',
- adviseEmergencyMeasure: '',
- evaluateDesc: '',
- safeRiskAnalysis: ''
- },
- evaluateFormRules: {
-
- },
- listLecL: [],
- listLecE: [],
- listLecC: [],
- listLsL:[],
- listLsS:[],
- listRsR:[],
- listRsS:[],
- listMesM:[],
- listMesE:[],
- listMesS:[],
- manageLevelList: [
- {id:1, name: '院所级'},
- {id:2, name: '部门级'},
- {id:3, name: '项目组级'},
- ],
- riskColorList: [
- {id:1, name: '蓝色'},
- {id:2, name: '黄色'},
- {id:3, name: '橙色'},
- {id:4, name: '红色'},
- ],
- riskLevelList: [
- {id:1, name: '低'},
- {id:2, name: '一般'},
- {id:3, name: '较大'},
- {id:4, name: '重大'},
- ],
- riskLevelValueList: [
- {id:1, name: '1级'},
- {id:2, name: '2级'},
- {id:3, name: '3级'},
- {id:4, name: '4级'},
- {id:5, name: '5级'},
- ],
- identificationMethodList: [
- {id:1, name: 'PHA'},
- {id:2, name: 'JHA'},
- {id:3, name: 'SCL'},
- {id:4, name: 'HAZOP'},
- {id:5, name: '类比法'},
- ],
- evaluateMethodList: [
- {id:1, name: 'LEC'},
- {id:2, name: 'LS'},
- {id:3, name: 'MES'},
- {id:4, name: 'RS'},
- ]
-})
-
-const numOriginValue = computed( () => {
- return numFloat(
- evaluateDialogState.evaluateForm.originalLecL,
- evaluateDialogState.evaluateForm.originalLecE,
- evaluateDialogState.evaluateForm.originalLecC,
- evaluateDialogState.evaluateForm.originalLsL,
- evaluateDialogState.evaluateForm.originalLsS,
- evaluateDialogState.evaluateForm.originalMesM,
- evaluateDialogState.evaluateForm.originalMesE,
- evaluateDialogState.evaluateForm.originalMesS,
- evaluateDialogState.evaluateForm.originalRsR,
- evaluateDialogState.evaluateForm.originalRsS
- )
-})
-
-const numValue = computed( () => {
- return numFloat(
- evaluateDialogState.evaluateForm.lecL,
- evaluateDialogState.evaluateForm.lecE,
- evaluateDialogState.evaluateForm.lecC,
- evaluateDialogState.evaluateForm.lsL,
- evaluateDialogState.evaluateForm.lsS,
- evaluateDialogState.evaluateForm.mesM,
- evaluateDialogState.evaluateForm.mesE,
- evaluateDialogState.evaluateForm.mesS,
- evaluateDialogState.evaluateForm.rsR,
- evaluateDialogState.evaluateForm.rsS
- )
-})
-
-const showEvaluateDialog = (title: string, value: IdentifyType ) => {
- evaluateDialogState.evaluateDialogVisible = true;
- evaluateDialogState.disabled = false
- evaluateDialogState.evaluateMethod = value.evaluateMethod as number
- evaluateDialogState.evaluateInfo = value
- setTimeout(() => {
- evaluateFormRef.value.clearValidate();
- });
- if( title === '评价'){
- if(value.riskValue){
- evaluateDialogState.title = '编辑评价';
- for(let i in evaluateDialogState.evaluateForm){
- if(isValidKey(i, evaluateDialogState.evaluateForm)){
- evaluateDialogState.evaluateForm[i] = value[i]
- }
- }
- }else{
- evaluateDialogState.title = '评价'
- evaluateDialogState.evaluateForm = {
- id: null,
- evaluateMethod: null,
- identificationMethod: null,
- identificationId: null,
- manageLevel: 1,
- originalManageLevel: 1,
- riskValue: null,
- riskLevelValue: null,
- riskLevel: null,
- riskColor: null,
- lecL: null,
- lecE: null,
- lecC: null,
- lsL: null,
- lsS: null,
- mesM: null,
- mesE: null,
- mesS: null,
- rsR: null,
- rsS: null,
- lecId: null,
- lsId: null,
- mesId: null,
- rsId: null,
- originalLecL: null,
- originalLecE: null,
- originalLecC: null,
- originalLsL: null,
- originalLsS: null,
- originalMesM: null,
- originalMesE: null,
- originalMesS: null,
- originalRsR: null,
- originalRsS: null,
- originalRiskValue: null,
- originalRiskLevelValue: null,
- originalRiskLevel: null,
- originalRiskColor: null,
- technologyMeasure: '',
- manageMeasure: '',
- educationMeasure: '',
- personalProtectionMeasure: '',
- emergencyMeasure: '',
- adviseTechnologyMeasure: '',
- adviseManageMeasure: '',
- adviseEducationMeasure: '',
- advisePersonalProtectionMeasure: '',
- adviseEmergencyMeasure: '',
- evaluateDesc: '',
- safeRiskAnalysis: ''
- };
- }
- }else {
- evaluateDialogState.title = '查看'
- evaluateDialogState.disabled = true
- for(let i in evaluateDialogState.evaluateForm){
- if(isValidKey(i, evaluateDialogState.evaluateForm)){
- evaluateDialogState.evaluateForm[i] = value[i]
- }
- }
- }
- evaluateDialogState.evaluateForm.id = value.id as number
- evaluateDialogState.evaluateForm.evaluateMethod = value.evaluateMethod as number
- evaluateDialogState.evaluateForm.identificationMethod = value.phaId?1:value.jhaId?2:value.sclId?3:value.hazopId?4:5
- evaluateDialogState.evaluateForm.identificationId = (value.hazopId || value.jhaId || value.phaId || value.sclId || value.analogyId) as number
-};
-
-const openChangeMethod = ()=>{
- evaluateDialogState.evaluateMethodVisible = true
-}
-
-const conFirmChange = async () =>{
- ElMessageBox.confirm(`此操作将修改该评价计划的评价方法并清除之前的所有评价信息,是否继续?`, '提示', {
- confirmButtonText: '确认',
- cancelButtonText: '取消',
- type: 'warning'
- })
- .then(async () => {
- let res = await evaluateApi().modEvaluateMethod({
- id: evaluateDialogState.evaluateForm.id,
- evaluateMethodId: evaluateDialogState.evaluateForm.evaluateMethod
- });
- if(res.data.code === 100){
- ElMessage({
- type: 'success',
- message: '评价方法修改成功'
- })
- emit('refresh')
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- })
- }
- evaluateDialogState.evaluateMethodVisible = false
- evaluateDialogState.evaluateDialogVisible = false
- })
- .catch((error) => {
- });
-}
-
-const onSubmitEvaluate = () => {
- evaluateFormRef.value.validate(async(valid: boolean) => {
- if(valid){
- // evaluateDialogState.evaluateForm.riskValue = Number(numOriginValue.value)
- if(evaluateDialogState.title === '评价'){
- let { lecId, lsId, mesId, rsId, ...data} = evaluateDialogState.evaluateForm
- let res = await evaluateApi().addEvaluate(data);
- if(res.data.code === 100){
- emit('refresh')
- evaluateDialogState.evaluateDialogVisible = false;
- ElMessage({
- type: 'success',
- message: '评价成功'
- })
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg,
- });
- }
- }else{
- let res = await evaluateApi().modEvaluate(evaluateDialogState.evaluateForm)
- if(res.data.code === 100){
- emit('refresh')
- evaluateDialogState.evaluateDialogVisible = false;
- ElMessage({
- type: 'success',
- message: '编辑成功'
- })
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg,
- });
- }
- }
- }else{
- ElMessage({
- type: 'warning',
- message: '请完善基本信息',
- });
- }
- })
-}
-
-const getListLecL = async() =>{
- let res = await evaluateApi().getListLecL()
- if(res.data.code === 100){
- evaluateDialogState.listLecL = res.data.data
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg,
- });
- }
-}
-
-const getListLecE = async() =>{
- let res = await evaluateApi().getListLecE()
- if(res.data.code === 100){
- evaluateDialogState.listLecE = res.data.data
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg,
- });
- }
-}
-
-const getListLecC = async() =>{
- let res = await evaluateApi().getListLecC()
- if(res.data.code === 100){
- evaluateDialogState.listLecC = res.data.data
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg,
- });
- }
-}
-
-const getListLsL = async() =>{
- let res = await evaluateApi().getListLsL()
- if(res.data.code === 100){
- evaluateDialogState.listLsL = res.data.data
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg,
- });
- }
-}
-
-const getListLsS = async() =>{
- let res = await evaluateApi().getListLsS()
- if(res.data.code === 100){
- evaluateDialogState.listLsS = res.data.data
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg,
- });
- }
-}
-
-const getListRsR = async() =>{
- let res = await evaluateApi().getListRsR()
- if(res.data.code === 100){
- evaluateDialogState.listRsR = res.data.data
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg,
- });
- }
-}
-
-const getListRsS = async() =>{
- let res = await evaluateApi().getListRsS()
- if(res.data.code === 100){
- evaluateDialogState.listRsS = res.data.data
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg,
- });
- }
-}
-
-const getListMesM = async() =>{
- let res = await evaluateApi().getListMesM()
- if(res.data.code === 100){
- evaluateDialogState.listMesM = res.data.data
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg,
- });
- }
-}
-const getListMesE = async() =>{
- let res = await evaluateApi().getListMesE()
- if(res.data.code === 100){
- evaluateDialogState.listMesE = res.data.data
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg,
- });
- }
-}
-const getListMesS = async() =>{
- let res = await evaluateApi().getListMesS()
- if(res.data.code === 100){
- evaluateDialogState.listMesS = res.data.data
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg,
- });
- }
-}
-
-const calcOriginScore=(i:string)=>{
- if((i == 'lec' && (evaluateDialogState.evaluateForm.originalLecL && evaluateDialogState.evaluateForm.originalLecE && evaluateDialogState.evaluateForm.originalLecC))||(i == 'ls' && (evaluateDialogState.evaluateForm.originalLsL && evaluateDialogState.evaluateForm.originalLsS))||(i == 'mes' &&(evaluateDialogState.evaluateForm.originalMesM && evaluateDialogState.evaluateForm.originalMesE && evaluateDialogState.evaluateForm.originalMesS))||(i == 'rs' && (evaluateDialogState.evaluateForm.originalRsR && evaluateDialogState.evaluateForm.originalRsS))){
- evaluateDialogState.evaluateForm.originalRiskValue = Number(numOriginValue.value)
- if(evaluateDialogState.evaluateForm.originalRiskValue<=0.5){
- evaluateDialogState.evaluateForm.originalRiskLevelValue = 1
- evaluateDialogState.evaluateForm.originalRiskLevel = 1
- evaluateDialogState.evaluateForm.originalRiskColor = 1
- }else if(evaluateDialogState.evaluateForm.originalRiskValue>0.5&&evaluateDialogState.evaluateForm.originalRiskValue<1){
- evaluateDialogState.evaluateForm.originalRiskLevelValue = 2
- evaluateDialogState.evaluateForm.originalRiskLevel = 2
- evaluateDialogState.evaluateForm.originalRiskColor = 2
- }else{
- evaluateDialogState.evaluateForm.originalRiskLevelValue = 3
- evaluateDialogState.evaluateForm.originalRiskLevel = 3
- evaluateDialogState.evaluateForm.originalRiskColor = 3
- }
- }
-}
-
-const calcScore=(i:string)=>{
- if((i == 'lec' && (evaluateDialogState.evaluateForm.lecL && evaluateDialogState.evaluateForm.lecE && evaluateDialogState.evaluateForm.lecC))||(i == 'ls' && (evaluateDialogState.evaluateForm.lsL && evaluateDialogState.evaluateForm.lsS))||(i == 'mes' &&(evaluateDialogState.evaluateForm.mesM && evaluateDialogState.evaluateForm.mesE && evaluateDialogState.evaluateForm.mesS))||(i == 'rs' && (evaluateDialogState.evaluateForm.rsR && evaluateDialogState.evaluateForm.rsS))){
- evaluateDialogState.evaluateForm.riskValue = Number(numValue.value)
- if(evaluateDialogState.evaluateForm.riskValue<=0.5){
- evaluateDialogState.evaluateForm.riskLevelValue = 1
- evaluateDialogState.evaluateForm.riskLevel = 1
- evaluateDialogState.evaluateForm.riskColor = 1
- }else if(evaluateDialogState.evaluateForm.riskValue>0.5&&evaluateDialogState.evaluateForm.riskValue<1){
- evaluateDialogState.evaluateForm.riskLevelValue = 2
- evaluateDialogState.evaluateForm.riskLevel = 2
- evaluateDialogState.evaluateForm.riskColor = 2
- }else{
- evaluateDialogState.evaluateForm.riskLevelValue = 3
- evaluateDialogState.evaluateForm.riskLevel = 3
- evaluateDialogState.evaluateForm.riskColor = 3
- }
- }
-}
-
-const emit = defineEmits(['refresh']);
-
-onMounted(()=>{
- getListLecL()
- getListLecE()
- getListLecC()
- getListLsL()
- getListLsS()
- getListRsR()
- getListRsS()
- getListMesM()
- getListMesE()
- getListMesS()
-})
-
-defineExpose({
- showEvaluateDialog
-});
-</script>
-
-<style lang="scss" scoped>
-.evaluateCard{
- width: 100%;
- margin: 0 40px 20px;
- border: 1px solid #ccc;
- border-radius: 4px;
- background: #fff;
-
- .cardTit{
- width: 100%;
- padding: 10px 20px;
- background: #f5f5f5;
- border-bottom: 1px solid #ccc;
- margin-bottom: 20px;
- }
-
- .valueSelect{
- ::v-deep(.el-popper){
- .el-select-dropdown__item{
- width: 100%;
- height: auto;
- white-space: normal;
- word-break: break-all;
- word-wrap: break-word;
- overflow: auto;
- padding: 10px 25px;
- border-bottom: 1px solid #ccc;
-
- .valueTable{
- &>div{
- line-height: 1.5;
- margin-bottom: 6px;
- padding-bottom: 6px;
- display: flex;
- align-items: center;
-
- div{
- width: 8%;
- }
- span{
- width: 92%;
- }
-
- &:last-of-type{
- margin-bottom: 0;
- }
- }
- .longTit{
- div{
- width: 15%;
- }
- span{
- width: 85%;
- }
- }
- }
- }
- }
- }
-}
-</style>
diff --git a/src/views/analyse/evaluate/index.ts b/src/views/analyse/evaluate/index.ts
deleted file mode 100644
index ebf7b8d..0000000
--- a/src/views/analyse/evaluate/index.ts
+++ /dev/null
@@ -1,108 +0,0 @@
-declare interface EvaluateStateType {
- evaluateData: Array<IdentifyType>
- user: null| number
- currentEvalute:{}
- evaluateDialog:boolean
- searchQuery: {
- pageIndex: number,
- pageSize: number,
- assessPlanName: string,
- experimentName: string,
- tag: number,
- planExecStatus: number | null
- }
- total: number
- identificationMethodList: Array<Type>,
- evaluateMethodList: Array<Type>
- planList: Array<PlanType>
- personList: Array<SystemPersonType>
-}
-declare interface EvaluateType {
- id: null | number,
- riskValue: null | number,
- riskLevelValue: null | number,
- riskLevel: null | number,
- riskColor: null | number,
- manageLevel?: null | number,
- originalManageLevel?: null | number,
- identificationId: null | number,
- lecL: null | number,
- lecE: null | number,
- lecC: null | number,
- lsL: null | number,
- lsS: null | number,
- mesM: null | number,
- mesE: null | number,
- mesS: null | number,
- rsR: null | number,
- rsS: null | number,
- lecId: null | number,
- lsId: null | number,
- mesId: null | number,
- rsId: null | number,
- evaluateMethod?: null | number,
- evaluateStatus?: null | number,
- identificationMethod: null | number,
- originalLecL: null | number,
- originalLecE: null | number,
- originalLecC: null | number,
- originalLsL: null | number,
- originalLsS: null | number,
- originalMesM: null | number,
- originalMesE: null | number,
- originalMesS: null | number,
- originalRsR: null | number,
- originalRsS: null | number,
- originalRiskValue: null | number,
- originalRiskLevelValue: null | number,
- originalRiskLevel: null | number,
- originalRiskColor: null | number,
- technologyMeasure: string,
- manageMeasure: string,
- educationMeasure: string,
- personalProtectionMeasure: string,
- emergencyMeasure: string,
- adviseTechnologyMeasure: string,
- adviseManageMeasure: string,
- adviseEducationMeasure: string,
- advisePersonalProtectionMeasure: string,
- adviseEmergencyMeasure: string,
- evaluateDesc: string,
- safeRiskAnalysis: string
-}
-
-declare interface EvaluateDialogType {
- title: string,
- time: string [],
- disabled: boolean,
- evaluateDialogVisible: boolean,
- evaluateMethodVisible:boolean
- evaluateMethod: number | null,
- evaluateInfo: IdentifyType,
- evaluateForm: EvaluateType,
- evaluateFormRules: {
-
- },
- identificationMethodList: Array<Type>,
- evaluateMethodList: Array<Type>
- riskLevelValueList: Array<Type>
- riskLevelList: Array<Type>
- riskColorList: Array<Type>
- manageLevelList: Array<Type>
- listLecL: Array<evaluateSelectType>
- listLecE: Array<evaluateSelectType>
- listLecC: Array<evaluateSelectType>
- listLsL: Array<evaluateSelectType>
- listLsS: Array<evaluateSelectType>
- listRsR: Array<evaluateSelectType>
- listRsS: Array<evaluateSelectType>
- listMesM: Array<evaluateSelectType>
- listMesE: Array<evaluateSelectType>
- listMesS: Array<evaluateSelectType>
-}
-
-declare interface evaluateSelectType {
- id: number | null
- value: number | null
- desc: string
-}
\ No newline at end of file
diff --git a/src/views/analyse/evaluate/index.vue b/src/views/analyse/evaluate/index.vue
deleted file mode 100644
index 41ec3e0..0000000
--- a/src/views/analyse/evaluate/index.vue
+++ /dev/null
@@ -1,452 +0,0 @@
-<template>
- <div class="home-container">
- <div style="height: 100%">
- <el-row class="homeCard">
- <div class="basic-line">
- <span>评估计划名称:</span>
- <el-input v-model="evaluateState.searchQuery.assessPlanName" clearable filterable class="input-box" placeholder="评估计划名称">
- </el-input>
- </div>
- <div class="basic-line">
- <span>实验名称:</span>
- <el-input v-model="evaluateState.searchQuery.experimentName" clearable filterable class="input-box" placeholder="实验名称">
- </el-input>
- </div>
- <div style="padding-bottom: 10px">
- <el-button type="primary" @click="getEvaluateData">查询</el-button>
- <el-button plain @click="reset">重置</el-button>
- </div>
- </el-row>
- <div class="homeCard">
- <div class="main-card">
- <el-row class="cardTop">
-<!-- <el-col :span="12" class="mainCardBtn">-->
-<!-- <el-button type="primary" :icon="Plus" size="default" @click="openevaluateDialog('新增', {})">新增</el-button>-->
-<!-- </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 && 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>
- <template #default="scope">
- <span>{{`${evaluateState.identificationMethodList.find(item =>item.id === scope.row.identificationMethod)?.name}`}}</span>
- </template>
- </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 prop="updateTime" label="最后修改时间" show-overflow-tooltip></el-table-column>
- <el-table-column prop="updateByUserName" label="最后修改人" show-overflow-tooltip></el-table-column>
- <el-table-column prop="evaluateStatus" label="执行状态" show-overflow-tooltip align="center">
- <template #default="scope">
- <div>
- <div v-if="scope.row.planExecStatus === 1">
- <el-tag :type="'info'">
- {{ '未开始' }}
- </el-tag>
- </div>
- <div v-if="scope.row.planExecStatus === 2">
- <el-tag :type="'info'">
- {{ '辨识阶段' }}
- </el-tag>
- </div>
- <div v-if="scope.row.planExecStatus === 3">
- <el-tag :type="'primary'">
- {{ '评价阶段' }}
- </el-tag>
- </div>
- <div v-if="scope.row.planExecStatus === 4">
- <el-tag :type="'success'">
- {{ '完成阶段' }}
- </el-tag>
- </div>
- </div>
- </template>
- </el-table-column>
- <el-table-column label="操作" width="250">
- <template #default="scope">
- <el-button size="small" v-if="scope.row.planExecStatus===3 && scope.row.evaluateUserId == evaluateState.user" text type="primary" :icon="DocumentChecked" @click="accessEvaluate(scope.row)">提交</el-button>
- <el-button size="small" v-if="scope.row.planExecStatus===3 && scope.row.evaluateUserId == evaluateState.user" text type="primary" :icon="Edit" @click="openEvaluate(scope.row)">评价</el-button>
- <el-button size="small" v-if="scope.row.planExecStatus===4" text :icon="View" type="primary" @click="openEvaluate(scope.row)">查看评价</el-button>
- </template>
- </el-table-column>
- </el-table>
- <div class="pageBtn">
- <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" :pager-count="5" :page-sizes="[10, 20, 30]" v-model:current-page="evaluateState.searchQuery.pageIndex" background v-model:page-size="evaluateState.searchQuery.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="evaluateState.total" class="page-position"> </el-pagination>
- </div>
- </div>
- </div>
- </div>
-
- <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>
-
-<script setup lang="ts">
-import {defineAsyncComponent, onMounted, reactive, ref} from "vue";
-import {evaluateApi} from "/@/api/analyse/evaluate";
-import {identifyApi} from "/@/api/analyse/identify";
-import {ElMessage, ElMessageBox} from "element-plus";
-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,
- assessPlanName: '',
- experimentName: '',
- tag: 2,
- planExecStatus: 5
- },
- total: 0,
- planList: [
- ],
- personList: [],
- identificationMethodList: [
- {id:1, name: 'PHA'},
- {id:2, name: 'JHA'},
- {id:3, name: 'SCL'},
- {id:4, name: 'HAZOP'},
- {id:5, name: '类比法'},
- ],
- evaluateMethodList: [
- {id:1, name: 'LEC'},
- {id:2, name: 'LS'},
- {id:3, name: 'MES'},
- {id:4, name: 'RS'},
- ]
- // deviceUnitList: [
- // {id:1, name: '台'},
- // {id:2, name: '个'},
- // {id:3, name: '件'}
- // ]
-});
-
-const getEvaluateData = async () => {
- let res = await identifyApi().getIdentifyByList(evaluateState.searchQuery);
- if(res.data.code === 100){
- evaluateState.evaluateData = res.data.data;
- evaluateState.total = res.data.total;
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- });
- }
-};
-
-const getDataAndClose =()=>{
- evaluateState.evaluateDialog = false
- getEvaluateData()
-}
-
-const getAllPlanList = async () => {
- let res = await planApi().getAllPlan();
- if(res.data.code === 100){
- evaluateState.planList = JSON.parse(JSON.stringify(res.data.data));
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- });
- }
-};
-
-const getPersonList = async () => {
- let res = await userApi().getUserList({
- pageIndex: 1,
- pageSize: 99999,
- searchParams:{
- roleId: null,
- name: '',
- realName: ''
- }
- });
- if(res.data.code === 100){
- evaluateState.personList = JSON.parse(JSON.stringify(res.data.data));
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- })
- }
-};
-
-const openEvaluate = (value: IdentifyType) => {
- evaluateState.evaluateDialog = true
- evaluateState.currentEvalute = value
-}
-
-const openEvaluateDialog = (title: string, value: IdentifyType) => {
- evaluateDialogRef.value.showEvaluateDialog(title, value);
-};
-
-const onDelEvaluate = (val: IdentifyType) => {
- ElMessageBox.confirm(`此操作将提交该计划:“${val.assessPlanName}”,是否继续?`, '提示', {
- confirmButtonText: '确认',
- cancelButtonText: '取消',
- type: 'warning'
- })
- .then(async () => {
- let res = await evaluateApi().submitEvaluate({ id: val.id });
- if (res.data.code === 100) {
- ElMessage({
- type: 'success',
- duration: 2000,
- message: '删除成功'
- });
- await getEvaluateData();
- } else {
- ElMessage({
- type: 'warning',
- message: res.data.msg
- });
- }
- })
- .catch((error) => {
- });
-};
-
-const accessEvaluate = (val: IdentifyType) => {
- ElMessageBox.confirm(`此操作将提交该评价计划:“${val.assessPlanName}”的评价信息,是否继续?`, '提示', {
- confirmButtonText: '确认',
- cancelButtonText: '取消',
- type: 'warning'
- })
- .then(async () => {
- let res = await evaluateApi().submitEvaluate({ id: val.id });
- if (res.data.code === 100) {
- ElMessage({
- type: 'success',
- duration: 2000,
- message: '提交成功'
- });
- await getEvaluateData();
- } else {
- ElMessage({
- type: 'warning',
- message: res.data.msg
- });
- }
- })
- .catch((error) => {
- });
-};
-
-const onHandleSizeChange = (val: number) => {
- evaluateState.searchQuery.pageSize = val;
- getEvaluateData();
-};
-
-const onHandleCurrentChange = (val: number) => {
- evaluateState.searchQuery.pageIndex = val;
- getEvaluateData();
-};
-
-const reset = () => {
- evaluateState.searchQuery = {
- pageIndex: 1,
- pageSize: 10,
- assessPlanName: '',
- experimentName: '',
- tag: 2,
- planExecStatus: 5
- }
-};
-
-onMounted(() => {
- getEvaluateData();
- getAllPlanList();
- getPersonList();
- evaluateState.user = Number(userInfos.value.uid)
-});
-
-</script>
-
-<style scoped lang="scss">
-$homeNavLengh: 8;
-.home-container {
- height: calc(100vh - 144px);
- box-sizing: border-box;
- overflow: hidden;
- .homeCard {
- width: 100%;
- padding: 20px;
- box-sizing: border-box;
- background: #fff;
- border-radius: 4px;
-
- .main-card {
- width: 100%;
- height: 100%;
- .cardTop {
- display: flex;
- align-items: center;
- justify-content: space-between;
- margin-bottom: 20px;
- .mainCardBtn {
- margin: 0;
- }
- }
- .pageBtn {
- height: 60px;
- display: flex;
- align-items: center;
- justify-content: right;
-
- .demo-pagination-block + .demo-pagination-block {
- margin-top: 10px;
- }
- .demo-pagination-block .demonstration {
- margin-bottom: 16px;
- }
- }
- }
- &:last-of-type {
- height: calc(100% - 100px);
- }
- }
- .el-row {
- display: flex;
- align-items: center;
- margin-bottom: 20px;
- &:last-child {
- margin-bottom: 0;
- }
- .grid-content {
- align-items: center;
- min-height: 36px;
- }
-
- .topInfo {
- display: flex;
- align-items: center;
- font-size: 16px;
- font-weight: bold;
-
- & > div {
- white-space: nowrap;
- margin-right: 20px;
- }
- }
- }
-}
-
-:deep(.el-date-editor) {
- width: 100%;
-}
-.el-select {
- width: 100%;
-}
-:deep(.el-textarea.is-disabled .el-textarea__inner) {
- background-color: var(--el-card-bg-color);
- color: var(--el-input-text-color, var(--el-text-color-regular));
-}
-:deep(.el-input.is-disabled .el-input__inner) {
- color: var(--el-input-text-color, var(--el-text-color-regular));
-}
-:deep(.el-input.is-disabled .el-input__wrapper) {
- background-color: var(--el-card-bg-color);
-}
-:deep(.el-range-editor.is-disabled input){
- background-color: var(--el-card-bg-color);
- color: var(--el-input-text-color, var(--el-text-color-regular));
-}
-</style>
diff --git a/src/views/analyse/identify/components/identifyDialog.vue b/src/views/analyse/identify/components/identifyDialog.vue
deleted file mode 100644
index a764ab6..0000000
--- a/src/views/analyse/identify/components/identifyDialog.vue
+++ /dev/null
@@ -1,513 +0,0 @@
-<template>
- <div class="system-menu-dialog-container">
- <el-dialog :title="identifyDialogState.title" v-model="identifyDialogState.identifyDialogVisible" width="600px">
- <el-form ref="identifyFormRef" :rules="identifyDialogState.identifyFormRules" :model="identifyDialogState.identifyForm" size="default" label-width="160px">
- <el-row :gutter="35">
-<!-- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">-->
-<!-- <el-form-item label="辨识方法" prop="identificationMethod">-->
-<!-- <el-select class="input-length" :disabled="true" v-model="identifyDialogState.identifyForm.identificationMethod" style="width:100%" placeholder="辨识方法" clearable>-->
-<!-- <el-option v-for="item in identifyDialogState.identificationMethodList" :key="item.id" :label="item.name" :value="item.id"></el-option>-->
-<!-- </el-select>-->
-<!-- </el-form-item>-->
-<!-- </el-col>-->
-
- <div style="width: 100%" v-if="identifyDialogState.method === 1">
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="PHA_检查项目" prop="phaCheckItem">
- <el-input class="input-length" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.phaCheckItem" placeholder="检查项目" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="PHA_存在风险因素" prop="phaRiskFactor">
- <el-input class="input-length" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.phaRiskFactor" placeholder="存在风险因素" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="PHA_可能产生的后果" prop="phaResult">
- <el-input class="input-length" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.phaResult" placeholder="可能产生的后果" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="分配评价方法">
- <el-select disabled class="input-length" v-model="identifyDialogState.evaluateMethod" style="width:100%" placeholder="" clearable>
- <el-option v-for="item in identifyDialogState.evaluateMethodList" :key="item.id" :label="item.name" :value="item.id"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
-<!-- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">-->
-<!-- <el-form-item label="评价专家" prop="phaEvaluateUser">-->
-<!-- <el-select class="input-length" v-model="identifyDialogState.identifyForm.phaEvaluateUser" style="width:100%" placeholder="" clearable>-->
-<!-- <el-option v-for="item in identifyDialogState.personList" :key="item.id" :label="item.name" :value="item.id"></el-option>-->
-<!-- </el-select>-->
-<!-- </el-form-item>-->
-<!-- </el-col>-->
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="评价专家">
- <el-input class="input-length" disabled v-model="identifyDialogState.evaluateUser" placeholder="暂无评价专家" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="辨识结果" prop="result">
- <el-radio-group v-model="identifyDialogState.identifyForm.result" :disabled="identifyDialogState.disabled">
- <el-radio :label="1">有风险</el-radio>
- <el-radio :label="2">无风险</el-radio>
- </el-radio-group>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="辨识专家建议" prop="identificationDesc">
- <el-input class="input-length" type="textarea" :autosize="{ minRows: 3}" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.identificationDesc" placeholder="辨识专家建议" clearable></el-input>
- </el-form-item>
- </el-col>
- </div>
-
- <div style="width: 100%" v-if="identifyDialogState.method === 2">
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="JHA_作业步骤" prop="jhaCheckItem">
- <el-input class="input-length" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.jhaCheckItem" placeholder="作业步骤" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="JHA_危险源或潜在事件" prop="jhaRiskFactor">
- <el-input class="input-length" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.jhaRiskFactor" placeholder="危险源或潜在事件" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="JHA_可能产生的后果" prop="jhaResult">
- <el-input class="input-length" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.jhaResult" placeholder="可能产生的后果" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="分配评价方法">
- <el-select disabled class="input-length" v-model="identifyDialogState.evaluateMethod" style="width:100%" placeholder="" clearable>
- <el-option v-for="item in identifyDialogState.evaluateMethodList" :key="item.id" :label="item.name" :value="item.id"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
-<!-- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">-->
-<!-- <el-form-item label="评价专家" prop="jhaEvaluateUser">-->
-<!-- <el-select class="input-length" v-model="identifyDialogState.identifyForm.jhaEvaluateUser" style="width:100%" placeholder="" clearable>-->
-<!-- <el-option v-for="item in identifyDialogState.personList" :key="item.id" :label="item.name" :value="item.id"></el-option>-->
-<!-- </el-select>-->
-<!-- </el-form-item>-->
-<!-- </el-col>-->
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="评价专家">
- <el-input class="input-length" disabled v-model="identifyDialogState.evaluateUser" placeholder="暂无评价专家" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="辨识结果" prop="result">
- <el-radio-group v-model="identifyDialogState.identifyForm.result" :disabled="identifyDialogState.disabled">
- <el-radio :label="1">有风险</el-radio>
- <el-radio :label="2">无风险</el-radio>
- </el-radio-group>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="辨识专家建议" prop="identificationDesc">
- <el-input class="input-length" type="textarea" :autosize="{ minRows: 3}" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.identificationDesc" placeholder="辨识专家建议" clearable></el-input>
- </el-form-item>
- </el-col>
- </div>
-
- <div style="width: 100%" v-if="identifyDialogState.method === 3">
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="SCL_检查项目" prop="sclCheckItem">
- <el-input class="input-length" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.sclCheckItem" placeholder="检查项目" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="SCL_检查标准" prop="sclCheckStandard">
- <el-input class="input-length" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.sclCheckStandard" placeholder="检查标准" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="SCL_不符合标准情况" prop="sclCheckUnstandard">
- <el-input class="input-length" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.sclCheckUnstandard" placeholder="不符合标准情况" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="SCL_主要后果" prop="sclCheckResult">
- <el-input class="input-length" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.sclCheckResult" placeholder="主要后果" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="分配评价方法">
- <el-select disabled class="input-length" v-model="identifyDialogState.evaluateMethod" style="width:100%" placeholder="" clearable>
- <el-option v-for="item in identifyDialogState.evaluateMethodList" :key="item.id" :label="item.name" :value="item.id"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
-<!-- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">-->
-<!-- <el-form-item label="评价专家" prop="sclEvaluateUser">-->
-<!-- <el-select class="input-length" v-model="identifyDialogState.identifyForm.sclEvaluateUser" style="width:100%" placeholder="" clearable>-->
-<!-- <el-option v-for="item in identifyDialogState.personList" :key="item.id" :label="item.name" :value="item.id"></el-option>-->
-<!-- </el-select>-->
-<!-- </el-form-item>-->
-<!-- </el-col>-->
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="评价专家">
- <el-input class="input-length" disabled v-model="identifyDialogState.evaluateUser" placeholder="暂无评价专家" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="辨识结果" prop="result">
- <el-radio-group v-model="identifyDialogState.identifyForm.result" :disabled="identifyDialogState.disabled">
- <el-radio :label="1">有风险</el-radio>
- <el-radio :label="2">无风险</el-radio>
- </el-radio-group>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="辨识专家建议" prop="identificationDesc">
- <el-input class="input-length" type="textarea" :autosize="{ minRows: 3}" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.identificationDesc" placeholder="辨识专家建议" clearable></el-input>
- </el-form-item>
- </el-col>
- </div>
-
- <div style="width: 100%" v-if="identifyDialogState.method === 4">
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="HAZOP_节点" prop="hazopNode">
- <el-input class="input-length" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.hazopNode" placeholder="HAZOP_节点" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="HAZOP_参数" prop="hazopParam">
- <el-input class="input-length" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.hazopParam" placeholder="HAZOP_参数" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="HAZOP_参数描述" prop="hazopParamDesc">
- <el-input class="input-length" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.hazopParamDesc" placeholder="HAZOP_参数描述" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="HAZOP_引导词" prop="hazopGuide">
- <el-input class="input-length" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.hazopGuide" placeholder="HAZOP_引导词" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="HAZOP_偏差" prop="hazopDeviation">
- <el-input class="input-length" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.hazopDeviation" placeholder="HAZOP_偏差" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="HAZOP_可能原因" prop="hazopPossibleCauses">
- <el-input class="input-length" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.hazopPossibleCauses" placeholder="HAZOP_可能原因" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="HAZOP_主要后果" prop="hazopResult">
- <el-input class="input-length" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.hazopResult" placeholder="HAZOP_主要后果" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="分配评价方法">
- <el-select disabled class="input-length" v-model="identifyDialogState.evaluateMethod" style="width:100%" placeholder="" clearable>
- <el-option v-for="item in identifyDialogState.evaluateMethodList" :key="item.id" :label="item.name" :value="item.id"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
-<!-- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">-->
-<!-- <el-form-item label="评价专家" prop="hazopEvaluateUser">-->
-<!-- <el-select class="input-length" v-model="identifyDialogState.identifyForm.hazopEvaluateUser" style="width:100%" placeholder="" clearable>-->
-<!-- <el-option v-for="item in identifyDialogState.personList" :key="item.id" :label="item.name" :value="item.id"></el-option>-->
-<!-- </el-select>-->
-<!-- </el-form-item>-->
-<!-- </el-col>-->
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="评价专家">
- <el-input class="input-length" disabled v-model="identifyDialogState.evaluateUser" placeholder="暂无评价专家" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="辨识结果" prop="result">
- <el-radio-group v-model="identifyDialogState.identifyForm.result" :disabled="identifyDialogState.disabled">
- <el-radio :label="1">有风险</el-radio>
- <el-radio :label="2">无风险</el-radio>
- </el-radio-group>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="辨识专家建议" prop="identificationDesc">
- <el-input class="input-length" type="textarea" :autosize="{ minRows: 3}" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.identificationDesc" placeholder="辨识专家建议" clearable></el-input>
- </el-form-item>
- </el-col>
- </div>
-
- <div style="width: 100%" v-if="identifyDialogState.method === 5">
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="类比法_检查项目" prop="analogyCheckItem">
- <el-input class="input-length" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.analogyCheckItem" placeholder="检查项目" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="类比法_类比参照" prop="analogyReference">
- <el-input class="input-length" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.analogyReference" placeholder="类比参照" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="类比法_存在风险因素" prop="analogyRiskFactor">
- <el-input class="input-length" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.analogyRiskFactor" placeholder="存在风险因素" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="类比法_可能产生的后果" prop="analogyResult">
- <el-input class="input-length" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.analogyResult" placeholder="可能产生的后果" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="分配评价方法">
- <el-select disabled class="input-length" v-model="identifyDialogState.evaluateMethod" style="width:100%" placeholder="" clearable>
- <el-option v-for="item in identifyDialogState.evaluateMethodList" :key="item.id" :label="item.name" :value="item.id"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
-<!-- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">-->
-<!-- <el-form-item label="评价专家" prop="analogyEvaluateUser">-->
-<!-- <el-select class="input-length" v-model="identifyDialogState.identifyForm.analogyEvaluateUser" style="width:100%" placeholder="" clearable>-->
-<!-- <el-option v-for="item in identifyDialogState.personList" :key="item.id" :label="item.name" :value="item.id"></el-option>-->
-<!-- </el-select>-->
-<!-- </el-form-item>-->
-<!-- </el-col>-->
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="评价专家">
- <el-input class="input-length" disabled v-model="identifyDialogState.evaluateUser" placeholder="暂无评价专家" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="辨识结果" prop="result">
- <el-radio-group v-model="identifyDialogState.identifyForm.result" :disabled="identifyDialogState.disabled">
- <el-radio :label="1">有风险</el-radio>
- <el-radio :label="2">无风险</el-radio>
- </el-radio-group>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="辨识专家建议" prop="identificationDesc">
- <el-input class="input-length" type="textarea" :autosize="{ minRows: 3}" :disabled="identifyDialogState.disabled" v-model="identifyDialogState.identifyForm.identificationDesc" placeholder="辨识专家建议" clearable></el-input>
- </el-form-item>
- </el-col>
- </div>
- </el-row>
- </el-form>
- <template #footer>
- <span class="dialog-footer">
- <el-button @click="identifyDialogState.identifyDialogVisible = !identifyDialogState.identifyDialogVisible" size="default">取 消</el-button>
- <el-button v-if="!identifyDialogState.disabled" type="primary" @click="onSubmitIdentify" size="default">确定</el-button>
- </span>
- </template>
- </el-dialog>
- </div>
-</template>
-
-<script setup lang="ts">
-import { reactive, ref } from "vue";
-import {ElMessage} from "element-plus";
-import {identifyApi} from "/@/api/analyse/identify";
-import {isValidKey} from "/@/utils/methods";
-
-const identifyFormRef = ref()
-
-const identifyDialogState = reactive<IdentifyDialogType>({
- title: '',
- method: null,
- time:[],
- disabled: false,
- evaluateMethod: null,
- evaluateUser: '',
- identifyDialogVisible: false,
- identifyForm: {
- id: null,
- identificationMethod: null,
- result: null,
- identificationDesc: '',
- analogyCheckItem: '',
- analogyRiskFactor: '',
- analogyResult: '',
- analogyReference: '',
- hazopNode: '',
- hazopParam: '',
- hazopParamDesc: '',
- hazopGuide: '',
- hazopDeviation: '',
- hazopPossibleCauses: '',
- hazopResult: '',
- jhaCheckItem: '',
- jhaRiskFactor: '',
- jhaResult: '',
- phaCheckItem: '',
- phaRiskFactor: '',
- phaResult: '',
- sclCheckItem: '',
- sclCheckStandard: '',
- sclCheckUnstandard: '',
- sclCheckResult: '',
- hazopId: null,
- jhaId: null,
- phaId: null,
- sclId: null,
- analogyId: null
- },
- identifyFormRules: {
- result: [{ required: true, message: '请选择辨识结果', trigger: 'blur' }],
- identificationDesc: [{ required: true, message: '请输入辨识专家建议', trigger: 'blur' }],
- analogyCheckItem: [{ required: true, message: '请输入检查项目', trigger: 'blur' }],
- analogyRiskFactor: [{ required: true, message: '请输入存在风险因素', trigger: 'blur' }],
- analogyResult: [{ required: true, message: '请输入可能产生的后果', trigger: 'blur' }],
- analogyReference: [{ required: true, message: '请输入类比参照', trigger: 'blur' }],
- hazopNode: [{ required: true, message: '请输入节点', trigger: 'blur' }],
- hazopParam: [{ required: true, message: '请输入参数', trigger: 'blur' }],
- hazopParamDesc: [{ required: true, message: '请输入参数描述', trigger: 'blur' }],
- hazopGuide: [{ required: true, message: '请输入引导词', trigger: 'blur' }],
- hazopDeviation: [{ required: true, message: '请输入偏差', trigger: 'blur' }],
- hazopPossibleCauses: [{ required: true, message: '请输入可能原因', trigger: 'blur' }],
- hazopResult: [{ required: true, message: '请输入主要后果', trigger: 'blur' }],
- jhaCheckItem: [{ required: true, message: '请输入作业步骤', trigger: 'blur' }],
- jhaRiskFactor: [{ required: true, message: '请输入危险源或潜在事件', trigger: 'blur' }],
- jhaResult: [{ required: true, message: '请输入可能产生的后果', trigger: 'blur' }],
- phaCheckItem: [{ required: true, message: '请输入检查项目', trigger: 'blur' }],
- phaRiskFactor: [{ required: true, message: '请输入存在风险因素', trigger: 'blur' }],
- phaResult: [{ required: true, message: '请输入可能产生的后果', trigger: 'blur' }],
- sclCheckItem: [{ required: true, message: '请输入检查项目', trigger: 'blur' }],
- sclCheckStandard: [{ required: true, message: '请输入检查标准', trigger: 'blur' }],
- sclCheckUnstandard: [{ required: true, message: '请输入不符合标准情况', trigger: 'blur' }],
- sclCheckResult: [{ required: true, message: '请输入主要后果', trigger: 'blur' }]
- },
- planList: [],
- personList: [],
- identificationMethodList: [
- {id:1, name: 'PHA'},
- {id:2, name: 'JHA'},
- {id:3, name: 'SCL'},
- {id:4, name: 'HAZOP'},
- {id:5, name: '类比法'},
- ],
- evaluateMethodList: [
- {id:1, name: 'LEC'},
- {id:2, name: 'LS'},
- {id:3, name: 'MES'},
- {id:4, name: 'RS'},
- ]
-})
-
-const showIdentifyDialog = (title: string, value: IdentifyType, identifyQueryForm: identifyQueryFormType,idenForm: IdentifyType,personList: Array<NewPersonListType>) => {
- identifyDialogState.method = identifyQueryForm.identificationMethod
- identifyDialogState.identifyDialogVisible = true;
- identifyDialogState.disabled = false
- identifyDialogState.evaluateMethod = idenForm.evaluateMethod
- identifyDialogState.evaluateUser = idenForm.evaluateUser
- identifyDialogState.personList = personList
- setTimeout(() => {
- identifyFormRef.value.clearValidate();
- });
- if(title === '新增'){
- identifyDialogState.title = '新增';
- identifyDialogState.identifyForm = {
- id: identifyQueryForm.id,
- identificationMethod: identifyQueryForm.identificationMethod,
- result: null,
- identificationDesc: '',
- analogyCheckItem: '',
- analogyRiskFactor: '',
- analogyResult: '',
- analogyReference: '',
- hazopNode: '',
- hazopParam: '',
- hazopParamDesc: '',
- hazopGuide: '',
- hazopDeviation: '',
- hazopPossibleCauses: '',
- hazopResult: '',
- jhaCheckItem: '',
- jhaRiskFactor: '',
- jhaResult: '',
- phaCheckItem: '',
- phaRiskFactor: '',
- phaResult: '',
- sclCheckItem: '',
- sclCheckStandard: '',
- sclCheckUnstandard: '',
- sclCheckResult: '',
- hazopId: null,
- jhaId: null,
- phaId: null,
- sclId: null,
- analogyId: null,
- };
- }else if(title === '查看'){
- identifyDialogState.title = '查看';
- identifyDialogState.disabled = true
- for(let i in identifyDialogState.identifyForm){
- if(isValidKey(i, identifyDialogState.identifyForm)){
- identifyDialogState.identifyForm[i] = value[i];
- }
- }
- }else{
- identifyDialogState.title = '编辑';
- for(let i in identifyDialogState.identifyForm){
- if(isValidKey(i, identifyDialogState.identifyForm)){
- identifyDialogState.identifyForm[i] = value[i];
- }
- }
- identifyDialogState.identifyForm.identificationMethod = identifyQueryForm.identificationMethod
- console.log(identifyDialogState.identifyForm,'identifyDialogState.identifyForm')
- }
-};
-
-const onSubmitIdentify = () => {
- identifyFormRef.value.validate(async(valid: boolean) => {
- if(valid){
- if(identifyDialogState.title === '新增'){
- let { hazopId, jhaId, phaId, sclId, analogyId, ...data } = identifyDialogState.identifyForm
- let res = await identifyApi().addIdentify(data);
- if(res.data.code === 100){
- emit('refresh',1,res.data.data)
- identifyDialogState.identifyDialogVisible = false;
- ElMessage({
- type: 'success',
- message: '新增成功'
- })
-
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg,
- });
- }
- }else{
- let res = await identifyApi().modIdentify(identifyDialogState.identifyForm)
- if(res.data.code === 100){
- emit('refresh',2,identifyDialogState.identifyForm)
- identifyDialogState.identifyDialogVisible = false;
- ElMessage({
- type: 'success',
- message: '编辑成功'
- })
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg,
- });
- }
- }
- }else{
- ElMessage({
- type: 'warning',
- message: '请完善基本信息',
- });
- }
- })
-}
-
-const emit = defineEmits(['refresh'])
-
-defineExpose({
- showIdentifyDialog
-})
-</script>
-
-<style scoped>
-
-</style>
diff --git a/src/views/analyse/identify/components/identifyQuery.vue b/src/views/analyse/identify/components/identifyQuery.vue
deleted file mode 100644
index 7aed26a..0000000
--- a/src/views/analyse/identify/components/identifyQuery.vue
+++ /dev/null
@@ -1,275 +0,0 @@
-<template>
- <div class="system-menu-dialog-container">
- <el-dialog :title="identifyQueryState.title" v-model="identifyQueryState.identifyQueryVisible" :close-on-click-modal="false" width="800px" @close="resetData()">
- <el-form ref="identifyFormRef" :model="identifyQueryState.identifyQueryForm" size="default" label-width="160px">
- <el-row :gutter="35">
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="风险评价计划名称" prop="id">
- <el-select class="input-length" :disabled="true" v-model="identifyQueryState.identifyQueryForm.id" style="width:100%" placeholder="风险评价计划名称" clearable>
- <el-option v-for="item in identifyQueryState.planList" :key="item.id" :label="item.assessPlanName" :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 v-model="identifyQueryState.identifyQueryForm.assessType" readonly></el-input>-->
-<!-- </el-form-item>-->
-<!-- </el-col>-->
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="计划开始评价时间">
- <el-input v-model="identifyQueryState.identifyQueryForm.assessStartTime" readonly></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="评价风险分析单元">
- <el-input v-model="identifyQueryState.identifyQueryForm.riskUnitName" readonly placeholder="暂无风险分析单元"></el-input>
- </el-form-item>
- </el-col>
- <el-col style="display: flex;align-items: center" :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="辨识方法" prop="identificationMethod">
- <el-select class="input-length" disabled v-model="identifyQueryState.identifyQueryForm.identificationMethod" style="width:100%" placeholder="辨识方法" clearable>
- <el-option v-for="item in identifyQueryState.identificationMethodList" :key="item.id" :label="item.name" :value="item.id"></el-option>
- </el-select>
- </el-form-item>
- <el-button size="default" v-if="identifyQueryState.identifyForm.planExecStatus == 2" type="primary" @click="openChangeMethod()">修改辨识方法</el-button>
- </el-col>
- </el-row>
- </el-form>
- <div class="checkUnit-point">
- <el-tabs class="active" v-model="identifyQueryState.activeName">
- <el-tab-pane label="辨识信息" name="identify">
- <div style="padding-bottom: 10px" v-if="identifyQueryState.identifyForm.planExecStatus === 2">
- <el-button size="default" type="primary" @click="openIdentifyDialog('新增', '')">
- <el-icon>
- <ele-FolderAdd />
- </el-icon>
- 新增
- </el-button>
- </div>
-
- <el-table :data="identifyQueryState.list" border fit highlight-current-row style="width: 100%">
- <el-table-column type="index" label="序号" width="80" />
- <el-table-column v-if="identifyQueryState.identifyForm.identificationMethod == 1" prop="phaCheckItem" label="检查项目" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column v-if="identifyQueryState.identifyForm.identificationMethod == 1" prop="phaRiskFactor" label="存在风险因素" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column v-if="identifyQueryState.identifyForm.identificationMethod == 1" prop="phaResult" label="可能存在后果" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column v-if="identifyQueryState.identifyForm.identificationMethod == 2" prop="jhaCheckItem" label="作业步骤" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column v-if="identifyQueryState.identifyForm.identificationMethod == 2" prop="jhaRiskFactor" label="存在风险因素" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column v-if="identifyQueryState.identifyForm.identificationMethod == 2" prop="jhaResult" label="可能存在后果" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column v-if="identifyQueryState.identifyForm.identificationMethod == 3" prop="sclCheckItem" label="检查项目" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column v-if="identifyQueryState.identifyForm.identificationMethod == 3" prop="sclCheckStandard" label="检查标准" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column v-if="identifyQueryState.identifyForm.identificationMethod == 3" prop="sclCheckUnstandard" label="不符合标准情况" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column v-if="identifyQueryState.identifyForm.identificationMethod == 3" prop="sclCheckResult" label="主要后果" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column v-if="identifyQueryState.identifyForm.identificationMethod == 4" prop="hazopNode" label="节点" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column v-if="identifyQueryState.identifyForm.identificationMethod == 4" prop="hazopParam" label="参数" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column v-if="identifyQueryState.identifyForm.identificationMethod == 4" prop="hazopParamDesc" label="参数描述" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column v-if="identifyQueryState.identifyForm.identificationMethod == 4" prop="hazopNode" label="节点" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column v-if="identifyQueryState.identifyForm.identificationMethod == 4" prop="hazopGuide" label="引导词" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column v-if="identifyQueryState.identifyForm.identificationMethod == 4" prop="hazopDeviation" label="偏差" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column v-if="identifyQueryState.identifyForm.identificationMethod == 4" prop="hazopPossibleCauses" label="可能原因" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column v-if="identifyQueryState.identifyForm.identificationMethod == 4" prop="hazopResult" label="可能存在后果" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column v-if="identifyQueryState.identifyForm.identificationMethod == 5" prop="analogyCheckItem" label="检查项目" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column v-if="identifyQueryState.identifyForm.identificationMethod == 5" prop="analogyReference" label="类比参照" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column v-if="identifyQueryState.identifyForm.identificationMethod == 5" prop="analogyRiskFactor" label="存在风险因素" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column v-if="identifyQueryState.identifyForm.identificationMethod == 5" prop="analogyResult" label="可能存在后果" show-overflow-tooltip align="center"></el-table-column>
- <el-table-column prop="result" label="辨识结果" show-overflow-tooltip align="center">
- <template #default="scope">
- <span>{{scope.row.result == 1?'有风险':scope.row.result == 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="openIdentifyDialog('查看', scope.row)">查看</el-button>
- <el-button size="default" text type="primary" v-if="identifyQueryState.identifyForm.planExecStatus === 2" @click="openIdentifyDialog('编辑', scope.row)">编辑</el-button>
- <el-button size="default" text type="danger" v-if="identifyQueryState.identifyForm.planExecStatus === 2" @click="onDelIdentifyQuery(scope.$index, scope.row)">删除</el-button>
- </template>
- </el-table-column>
- </el-table>
- </el-tab-pane>
- </el-tabs>
- </div>
- <template #footer>
- <span class="Query-footer">
- <el-button @click="identifyQueryState.identifyQueryVisible = !identifyQueryState.identifyQueryVisible" size="default">取 消</el-button>
- <el-button v-if="identifyQueryState.identifyForm.planExecStatus === 2" type="primary" @click="identifyQueryState.identifyQueryVisible = !identifyQueryState.identifyQueryVisible" size="default">确定</el-button>
- </span>
- </template>
- </el-dialog>
- <el-dialog title="修改辨识方法" v-model="identifyQueryState.identifyMethodVisible" width="30%">
- <el-select class="input-length" v-model="identifyQueryState.currentMethod" style="width:100%" placeholder="辨识方法" clearable>
- <el-option v-for="item in identifyQueryState.identificationMethodList" :key="item.id" :label="item.name" :value="item.id"></el-option>
- </el-select>
- <template #footer>
- <span class="Query-footer">
- <el-button @click="identifyQueryState.identifyMethodVisible = false" size="default">取 消</el-button>
- <el-button type="primary" @click="conFirmChange()" size="default">确定</el-button>
- </span>
- </template>
- </el-dialog>
- <identify-dialog ref="identifyDialogRef" @refresh="getIdentifyData"></identify-dialog>
- </div>
-</template>
-
-<script setup lang="ts">
-import {defineAsyncComponent, reactive, ref} from "vue";
-import {ElMessage, ElMessageBox} from "element-plus";
-import {identifyApi} from "/@/api/analyse/identify";
-import {isValidKey} from "/@/utils/methods";
-import {userApi} from "/@/api/systemManage/user";
-
-const identifyDialogRef = ref()
-const IdentifyDialog = defineAsyncComponent(() => import('./identifyDialog.vue'))
-
-const identifyQueryState = reactive<IdentifyQueryType>({
- title: '',
- activeName: 'identify',
- list: [],
- identifyQueryVisible: false,
- identifyMethodVisible: false,
- currentMethod: null,
- identifyQueryForm: {
- id: null,
- identificationMethod: null,
- assessType: null,
- assessStartTime: '',
- riskUnitName: ''
- },
- identifyForm: {},
- identificationMethodList: [
- {id:1, name: 'PHA'},
- {id:2, name: 'JHA'},
- {id:3, name: 'SCL'},
- {id:4, name: 'HAZOP'},
- {id:5, name: '类比法'},
- ],
- planList: [],
- personList: []
-})
-
-// const getAssessInfo =(value: number|null)=>{
-// const data = identifyQueryState.planList.find(item => item.id === value) as PlanType
-// }
-
-const showIdentifyQuery = (title: string, value: IdentifyType, planList: PlanType [], personList: AllPersonListType []) => {
- identifyQueryState.identifyQueryVisible = true;
- identifyQueryState.identifyForm = value;
- identifyQueryState.list = value.factorQueryDTOList
- identifyQueryState.planList = planList;
- identifyQueryState.personList = personList
- identifyQueryState.list = value.factorQueryDTOList;
- // getAssessInfo(identifyQueryState.identifyQueryForm.id);
- for(let i in identifyQueryState.identifyQueryForm){
- if(isValidKey(i, identifyQueryState.identifyQueryForm)){
- identifyQueryState.identifyQueryForm[i] = value[i]
- }
- }
-
- if(title === '辨识'){
- identifyQueryState.title = '辨识';
- }else {
- identifyQueryState.title = '查看';
- }
-};
-
-const openIdentifyDialog = (title: string, value: IdentifyType) => {
- identifyDialogRef.value.showIdentifyDialog(title, value, identifyQueryState.identifyQueryForm,identifyQueryState.identifyForm, identifyQueryState.personList);
-};
-
-const openChangeMethod = ()=>{
- identifyQueryState.currentMethod = identifyQueryState.identifyQueryForm.identificationMethod
- identifyQueryState.identifyMethodVisible = true
-}
-
-const conFirmChange = async () =>{
- let res = await identifyApi().UpdateIdentifyMethod({
- id: identifyQueryState.identifyQueryForm.id,
- identificationMethodId: identifyQueryState.currentMethod
- });
- if(res.data.code === 100){
- ElMessage({
- type: 'success',
- message: '辨识方法修改成功'
- })
- identifyQueryState.identifyQueryForm.identificationMethod = identifyQueryState.currentMethod,
- identifyQueryState.currentMethod = identifyQueryState.currentMethod,
- emit('refresh')
- getIdentifyData()
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- })
- }
- identifyQueryState.identifyMethodVisible = false
-}
-
-const resetData = ()=>{
- emit('refresh')
-}
-
-// const refreshList = (type: number, data: IdentifyType) => {
-// if(type === 1){
-// identifyQueryState.list?.push(data)
-// }else{
-// (<Array<IdentifyType>>identifyQueryState.list)[identifyQueryState.list?.findIndex(item => item.id === data.id) as number] = data
-// }
-// };
-
-const getIdentifyData = async () => {
- let res = await identifyApi().getIdentifyByList(
-{
- pageIndex: 1,
- pageSize: 10,
- assessPlanName: '',
- experimentName: '',
- tag: 1,
- assessPlanId: identifyQueryState.identifyForm.id
- }
- );
- if(res.data.code === 100){
- identifyQueryState.list = res.data.data[0].factorQueryDTOList
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- });
- }
-};
-
-const onDelIdentifyQuery = (index: number, val: IdentifyType) => {
- ElMessageBox.confirm(`此操作将永久删除该辨识,是否继续?`, '提示', {
- confirmButtonText: '确认',
- cancelButtonText: '取消',
- type: 'warning'
- })
- .then(async () => {
- let data = { id: val.id, analogyId: val.analogyId, hazopId: val.hazopId, jhaId: val.jhaId, phaId: val.phaId, sclId: val.sclId, }
- let res = await identifyApi().deleteIdentifyById(data);
- if (res.data.code === 100) {
- (<Array<IdentifyType>>identifyQueryState.list).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({
- showIdentifyQuery
-})
-</script>
-
-<style scoped>
-
-</style>
diff --git a/src/views/analyse/identify/index.ts b/src/views/analyse/identify/index.ts
deleted file mode 100644
index 66859ae..0000000
--- a/src/views/analyse/identify/index.ts
+++ /dev/null
@@ -1,136 +0,0 @@
-declare interface IdentifyStateType {
- identifyData: Array<IdentifyType>
- user: null | number
- searchQuery: {
- pageIndex: number,
- pageSize: number,
- assessPlanName: string,
- experimentName: string,
- tag: number,
- }
- total: number
- identificationMethodList: Array<Type>,
- evaluateMethodList: Array<Type>
- planList: Array<PlanType>
- personList: Array<SystemPersonType>
-}
-
-declare interface IdentifyQueryType {
- title: string,
- activeName: string,
- list?: IdentifyType [],
- identifyQueryVisible: boolean,
- identifyMethodVisible: boolean
- currentMethod: number | null
- identifyQueryForm: identifyQueryFormType,
- identifyForm: IdentifyType,
- identificationMethodList: Array<Type>,
- planList: Array<PlanType>
- personList: Array<AllPersonListType>
-}
-
-declare interface identifyQueryFormType {
- id: null | number,
- identificationMethod: null | number,
- assessType: null | number,
- assessStartTime: string,
- riskUnitName: string
-}
-
-
-declare interface IdentifyType {
- id: number | null,
- technologyMeasure?: string,
- assessPlanName?: string,
- manageMeasure?: string,
- educationMeasure?: string,
- personalProtectionMeasure?: string,
- emergencyMeasure?: string,
- identificationMethod: number | null,
- hazopId?: number | null,
- jhaId?: number | null,
- phaId?: number | null,
- sclId?: number | null,
- analogyId?: number | null,
- analogyCheckItem: string,
- analogyRiskFactor: string,
- analogyResult: string,
- analogyReference: string,
- hazopNode: string,
- hazopParam: string,
- hazopParamDesc: string,
- hazopGuide: string,
- hazopDeviation: string,
- hazopPossibleCauses: string,
- hazopResult: string,
- jhaCheckItem: string,
- jhaRiskFactor: string,
- jhaResult: string,
- phaCheckItem: string,
- phaRiskFactor: string,
- phaResult: string,
- sclCheckItem: string,
- sclCheckStandard: string,
- sclCheckUnstandard: string,
- sclCheckResult: string,
- planExecStatus?: number,
- evaluateMethod?: number,
- factorQueryDTOList?: EvaluateType [],
- evaluateUser?: string,
- result?: number | null,
- identificationDesc: string
-}
-
-declare interface Type {
- id: number,
- name: string,
-}
-
-declare interface IdentifyDialogType {
- title: string,
- method: null | number,
- evaluateMethod: null | number,
- evaluateUser?: string,
- time: string [],
- disabled: boolean,
- identifyDialogVisible: boolean,
- identifyForm: {
- id: number | null,
- identificationMethod: number | null,
- result: null | number,
- identificationDesc: string,
- hazopId?: number | null,
- jhaId?: number | null,
- phaId?: number | null,
- sclId?: number | null,
- analogyId?: number | null,
- analogyCheckItem: string,
- analogyRiskFactor: string,
- analogyResult: string,
- analogyReference: string,
- hazopNode: string,
- hazopParam: string,
- hazopParamDesc: string,
- hazopGuide: string,
- hazopDeviation: string,
- hazopPossibleCauses: string,
- hazopResult: string,
- jhaCheckItem: string,
- jhaRiskFactor: string,
- jhaResult: string,
- phaCheckItem: string,
- phaRiskFactor: string,
- phaResult: string,
- sclCheckItem: string,
- sclCheckStandard: string,
- sclCheckUnstandard: string,
- sclCheckResult: string,
- },
- identifyFormRules: {
-
- },
- identificationMethodList: Array<Type>,
- evaluateMethodList: Array<Type>
- planList: Array<PlanType>
- personList?: Array<NewPersonListType>
-}
diff --git a/src/views/analyse/identify/index.vue b/src/views/analyse/identify/index.vue
deleted file mode 100644
index 62b0508..0000000
--- a/src/views/analyse/identify/index.vue
+++ /dev/null
@@ -1,364 +0,0 @@
-<template>
- <div class="home-container">
- <div style="height: 100%">
- <el-row class="homeCard">
- <div class="basic-line">
- <span>评估计划名称:</span>
- <el-input v-model="identifyState.searchQuery.assessPlanName" clearable filterable class="input-box" placeholder="评估计划名称">
- </el-input>
- </div>
- <div class="basic-line">
- <span>实验名称:</span>
- <el-input v-model="identifyState.searchQuery.experimentName" clearable filterable class="input-box" placeholder="实验名称">
- </el-input>
- </div>
- <div style="padding-bottom: 10px">
- <el-button type="primary" @click="getIdentifyData">查询</el-button>
- <el-button plain @click="reset">重置</el-button>
- </div>
- </el-row>
- <div class="homeCard">
- <div class="main-card">
- <el-row class="cardTop">
- <el-col :span="12" class="mainCardBtn">
-<!-- <el-button type="primary" :icon="Plus" size="default" @click="openIdentifyQuery('新增', {})">新增</el-button>-->
- <!-- <el-button type="danger" :icon="Delete" size="default" plain>删除</el-button>-->
- </el-col>
- <!-- <el-button type="primary" :icon="Refresh" size="default" />-->
- </el-row>
- <el-table ref="multipleTableRef" :data="identifyState.identifyData" style="width: 100%" height="calc(100% - 100px)" :header-cell-style="{ background: '#fafafa' }">
- <el-table-column type="index" label="序号"/>
- <el-table-column prop="assessPlanName" label="评估计划名称"/>
- <el-table-column prop="identificationMethod" label="辨识方法" show-overflow-tooltip>
- <template #default="scope">
- <span>{{`${identifyState.identificationMethodList.find(item =>item.id === scope.row.identificationMethod)?.name}`}}</span>
- </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 prop="updateTime" label="最后修改时间" show-overflow-tooltip></el-table-column>
- <el-table-column prop="updateByUserName" label="最后修改人" show-overflow-tooltip></el-table-column>
- <el-table-column prop="planExecStatus" label="执行状态" show-overflow-tooltip>
- <template #default="scope">
- <div>
- <div v-if="scope.row.planExecStatus === 1">
- <el-tag :type="'info'">
- {{ '未开始' }}
- </el-tag>
- </div>
- <div v-if="scope.row.planExecStatus === 2">
- <el-tag :type="'info'">
- {{ '辨识阶段' }}
- </el-tag>
- </div>
- <div v-if="scope.row.planExecStatus === 3">
- <el-tag :type="'primary'">
- {{ '评价阶段' }}
- </el-tag>
- </div>
- <div v-if="scope.row.planExecStatus === 4">
- <el-tag :type="'success'">
- {{ '完成阶段' }}
- </el-tag>
- </div>
- </div>
- </template>
- </el-table-column>
- <el-table-column label="操作" width="250">
- <template #default="scope">
- <el-button size="small" text type="primary" v-if="scope.row.planExecStatus === 2 && scope.row.identificationUserId == identifyState.user" @click="accessIdentify(scope.row)">提交</el-button>
- <el-button size="small" text type="primary" v-if="scope.row.planExecStatus === 3 || scope.row.planExecStatus === 4" :icon="View" @click="openIdentifyQuery('查看', scope.row)">查看</el-button>
- <el-button size="small" text type="primary" v-if="scope.row.planExecStatus === 2 && scope.row.identificationUserId == identifyState.user" :icon="Edit" @click="openIdentifyQuery('辨识', scope.row)">辨识</el-button>
-<!-- <el-button size="small" text type="primary" v-if="scope.row.planExecStatus === 2" :icon="Edit" @click="openIdentifyQuery('编辑', scope.row)">编辑</el-button>-->
- </template>
- </el-table-column>
- </el-table>
- <div class="pageBtn">
- <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" :pager-count="5" :page-sizes="[10, 20, 30]" v-model:current-page="identifyState.searchQuery.pageIndex" background v-model:page-size="identifyState.searchQuery.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="identifyState.total" class="page-position"> </el-pagination>
- </div>
- </div>
- </div>
- </div>
- <identify-query-dialog ref="identifyQueryDialogRef" @refresh="getIdentifyData"></identify-query-dialog>
- </div>
-</template>
-
-<script setup lang="ts">
-import {defineAsyncComponent, onMounted, reactive, ref} from "vue";
-import {identifyApi} from "/@/api/analyse/identify";
-import {ElMessage, ElMessageBox} from "element-plus";
-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,
- assessPlanName: '',
- experimentName: '',
- tag: 1,
- },
- total: 0,
- planList: [
- ],
- personList: [],
- identificationMethodList: [
- {id:1, name: 'PHA'},
- {id:2, name: 'JHA'},
- {id:3, name: 'SCL'},
- {id:4, name: 'HAZOP'},
- {id:5, name: '类比法'},
- ],
- evaluateMethodList: [
- {id:1, name: 'LEC'},
- {id:2, name: 'LS'},
- {id:3, name: 'MES'},
- {id:4, name: 'RS'},
- ]
- // deviceUnitList: [
- // {id:1, name: '台'},
- // {id:2, name: '个'},
- // {id:3, name: '件'}
- // ]
-});
-
-const getIdentifyData = async () => {
- let res = await identifyApi().getIdentifyByList(identifyState.searchQuery);
- if(res.data.code === 100){
- identifyState.identifyData = res.data.data;
- identifyState.total = res.data.total;
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- });
- }
-};
-
-const getAllPlanList = async () => {
- let res = await planApi().getAllPlan();
- if(res.data.code === 100){
- identifyState.planList = JSON.parse(JSON.stringify(res.data.data));
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- });
- }
-};
-
-const getPersonList = async () => {
- let res = await userApi().getUserList({
- pageIndex: 1,
- pageSize: 99999,
- searchParams:{
- roleId: null,
- name: '',
- realName: ''
- }
- });
- if(res.data.code === 100){
- identifyState.personList = JSON.parse(JSON.stringify(res.data.data));
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- })
- }
-};
-
-const openIdentifyQuery = (title: string, value: IdentifyType) => {
- identifyQueryDialogRef.value.showIdentifyQuery(title, value, identifyState.planList, identifyState.personList);
-};
-
-const onDelIdentify = (val: IdentifyType) => {
- ElMessageBox.confirm(`此操作将永久删除该辨识,是否继续?`, '提示', {
- confirmButtonText: '确认',
- cancelButtonText: '取消',
- type: 'warning'
- })
- .then(async () => {
- let res = await identifyApi().deleteIdentifyById({ id: val.id });
- if (res.data.code === 100) {
- ElMessage({
- type: 'success',
- duration: 2000,
- message: '删除成功'
- });
- await getIdentifyData();
- } else {
- ElMessage({
- type: 'warning',
- message: res.data.msg
- });
- }
- })
- .catch((error) => {
- });
-};
-
-const accessIdentify = (val: IdentifyType) => {
- if(val.factorQueryDTOList?.length > 0){
- ElMessageBox.confirm(`此操作将提交该计划:“${val.assessPlanName}”的辨识信息,是否继续?`, '提示', {
- confirmButtonText: '确认',
- cancelButtonText: '取消',
- type: 'warning'
- })
- .then(async () => {
- let res = await identifyApi().submitIdentify({ id: val.id});
- if (res.data.code === 100) {
- ElMessage({
- type: 'success',
- duration: 2000,
- message: '提交成功'
- });
- await getIdentifyData();
- } else {
- ElMessage({
- type: 'warning',
- message: res.data.msg
- });
- }
- })
- .catch((error) => {
- });
- }else{
- ElMessage({
- type: 'warning',
- message: '请先添加辨识信息'
- });
- }
-};
-
-const onHandleSizeChange = (val: number) => {
- identifyState.searchQuery.pageSize = val;
- getIdentifyData();
-};
-
-const onHandleCurrentChange = (val: number) => {
- identifyState.searchQuery.pageIndex = val;
- getIdentifyData();
-};
-
-const reset = () => {
- identifyState.searchQuery = {
- pageIndex: 1,
- pageSize: 10,
- assessPlanName: '',
- experimentName: '',
- tag: 1,
- }
-};
-
-onMounted(() => {
- getIdentifyData();
- getAllPlanList();
- getPersonList();
- identifyState.user = Number(userInfos.value.uid)
-});
-
-</script>
-
-<style scoped lang="scss">
-$homeNavLengh: 8;
-.home-container {
- height: calc(100vh - 144px);
- box-sizing: border-box;
- overflow: hidden;
- .homeCard {
- width: 100%;
- padding: 20px;
- box-sizing: border-box;
- background: #fff;
- border-radius: 4px;
-
- .main-card {
- width: 100%;
- height: 100%;
- .cardTop {
- display: flex;
- align-items: center;
- justify-content: space-between;
- margin-bottom: 20px;
- .mainCardBtn {
- margin: 0;
- }
- }
- .pageBtn {
- height: 60px;
- display: flex;
- align-items: center;
- justify-content: right;
-
- .demo-pagination-block + .demo-pagination-block {
- margin-top: 10px;
- }
- .demo-pagination-block .demonstration {
- margin-bottom: 16px;
- }
- }
- }
- &:last-of-type {
- height: calc(100% - 100px);
- }
- }
- .el-row {
- display: flex;
- align-items: center;
- margin-bottom: 20px;
- &:last-child {
- margin-bottom: 0;
- }
- .grid-content {
- align-items: center;
- min-height: 36px;
- }
-
- .topInfo {
- display: flex;
- align-items: center;
- font-size: 16px;
- font-weight: bold;
-
- & > div {
- white-space: nowrap;
- margin-right: 20px;
- }
- }
- }
-}
-
-:deep(.el-date-editor) {
- width: 100%;
-}
-.el-select {
- width: 100%;
-}
-:deep(.el-textarea.is-disabled .el-textarea__inner) {
- background-color: var(--el-card-bg-color);
- color: var(--el-input-text-color, var(--el-text-color-regular));
-}
-:deep(.el-input.is-disabled .el-input__inner) {
- color: var(--el-input-text-color, var(--el-text-color-regular));
-}
-:deep(.el-input.is-disabled .el-input__wrapper) {
- background-color: var(--el-card-bg-color);
-}
-:deep(.el-range-editor.is-disabled input){
- background-color: var(--el-card-bg-color);
- color: var(--el-input-text-color, var(--el-text-color-regular));
-}
-</style>
diff --git a/src/views/analyse/plan/components/planDialog.vue b/src/views/analyse/plan/components/planDialog.vue
deleted file mode 100644
index aab3fce..0000000
--- a/src/views/analyse/plan/components/planDialog.vue
+++ /dev/null
@@ -1,255 +0,0 @@
-<template>
- <div class="system-menu-dialog-container">
- <el-dialog :title="planDialogState.title" v-model="planDialogState.planDialogVisible" width="600px">
- <el-form ref="planFormRef" :rules="planDialogState.planFormRules" :model="planDialogState.planForm" size="default" label-width="120px">
- <el-row :gutter="35">
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="风险分析单元" prop="riskUnitId">
- <el-select :disabled="planDialogState.disabled" v-model="planDialogState.planForm.riskUnitId" style="width:100%" placeholder="风险分析单元" clearable>
- <el-option v-for="item in planDialogState.riskUnitList" :key="item.id" :label="item.riskName" :value="item.id"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="评估计划名称" prop="assessPlanName">
- <el-input :disabled="planDialogState.disabled" v-model="planDialogState.planForm.assessPlanName" placeholder="评估计划名称" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="评估时间" prop="assessTime">
- <el-date-picker
- :disabled="planDialogState.disabled"
- type="datetimerange"
- v-model="planDialogState.planForm.assessTime"
- start-placeholder="开始时间"
- end-placeholder="结束时间"
- format="YYYY-MM-DD HH:mm:ss"
- value-format="YYYY-MM-DD HH:mm:ss"
- popper-class="pickTime"
- @change="formatTime">
- </el-date-picker>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="计划制定人" prop="planUserId">
- <el-select :disabled="planDialogState.disabled" v-model="planDialogState.planForm.planUserId" style="width:100%" placeholder="计划制定人" clearable>
- <el-option v-for="item in planDialogState.personList" :key="item.id" :label="item.realName" :value="item.id"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20 valueSelect">
- <el-form-item label="辨识专家" prop="identificationUserId">
- <el-select :disabled="planDialogState.disabled" v-model="planDialogState.planForm.identificationUserId" style="width:100%" :teleported="false" placeholder="辨识专家" clearable>
- <el-option v-for="item in planDialogState.bsExperts" :key="item.id" :label="item.realName" :value="item.id">
- <div class="valueTable">
- <div><div>姓名:</div><span>{{item.realName}}</span></div>
- <div><div>专业:</div><span>{{item.userIdentities?.map(i=>i.userIdentity).join(',')}}</span></div>
- </div>
- </el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20 valueSelect">
- <el-form-item label="评价专家" prop="evaluateUserId">
- <el-select :disabled="planDialogState.disabled" v-model="planDialogState.planForm.evaluateUserId" style="width:100%" :teleported="false" placeholder="评价专家" clearable>
- <el-option v-for="item in planDialogState.pjExperts" :key="item.id" :label="item.realName" :value="item.id">
- <div class="valueTable">
- <div><div>姓名:</div><span>{{item.realName}}</span></div>
- <div><div>专业:</div><span>{{item.userIdentities?.map(i=>i.userIdentity).join(',')}}</span></div>
- </div>
- </el-option>
- </el-select>
- </el-form-item>
- </el-col>
- </el-row>
- </el-form>
- <template #footer>
- <span class="dialog-footer">
- <el-button @click="planDialogState.planDialogVisible = !planDialogState.planDialogVisible" size="default">取 消</el-button>
- <el-button v-if="!planDialogState.disabled" type="primary" @click="onSubmitPlan" size="default">确定</el-button>
- </span>
- </template>
- </el-dialog>
- </div>
-</template>
-
-<script setup lang="ts">
-import { reactive, ref, getCurrentInstance } from "vue";
-import {ElMessage} from "element-plus";
-import {planApi} from "/@/api/analyse/plan";
-import {isValidKey} from "/@/utils/methods";
-
-const planFormRef = ref()
-
-const planDialogState = reactive<PlanDialogType>({
- title: '',
- disabled: false,
- planDialogVisible: false,
- planForm: {
- riskUnitId: null,
- planUserId: null,
- assessPlanName: '',
- assessTime: [],
- assessStartTime: '',
- assessEndTime: '',
- identificationUserId: null,
- evaluateUserId: null,
- riskType: 2
- },
- planFormRules: {
- riskUnitId: [{ required: true, message: '请选择风险分析单元', trigger: 'change' }],
- assessPlanName: [{ required: true, message: '请填写评估计划名称', trigger: 'blur' }],
- assessTime: [{ required: true, message: '请选择评估时间', trigger: 'blur' }],
- planUserId: [{ required: true, message: '请选择计划制定人', trigger: 'change' }],
- identificationUserId: [{ required: true, message: '请选择辨识专家', trigger: 'change' }],
- evaluateUserId: [{ required: true, message: '请选择评价专家', trigger: 'change' }],
- },
- riskUnitList: [],
- personList: [],
- bsExperts: [],
- pjExperts: []
-})
-
-const showPlanDialog = (title: string, value: PlanType, riskUnitList: RiskUnitType [], personList: SystemPersonType [],bsExperts:[],pjExperts:[]) => {
- planDialogState.planDialogVisible = true;
- planDialogState.riskUnitList = riskUnitList;
- planDialogState.personList = personList;
- planDialogState.bsExperts = bsExperts;
- planDialogState.pjExperts = pjExperts;
- planDialogState.disabled = false
- setTimeout(() => {
- planFormRef.value.clearValidate();
- });
- if(title === '新增'){
- planDialogState.title = '新增';
- planDialogState.planForm = {
- riskUnitId: null,
- planUserId: null,
- assessPlanName: '',
- assessTime: [],
- assessStartTime: '',
- assessEndTime: '',
- identificationUserId: null,
- evaluateUserId: null,
- riskType: 2
- };
- }else if(title === '查看'){
- planDialogState.title = '查看';
- planDialogState.disabled = true
- for(let i in planDialogState.planForm){
- if(isValidKey(i, planDialogState.planForm)){
- planDialogState.planForm[i] = value[i]
- }
- }
- planDialogState.planForm.assessTime=[value.assessStartTime, value.assessEndTime]
- console.log(value,planDialogState.planForm.assessTime,'time')
- }else{
- planDialogState.title = '编辑';
- planDialogState.planForm.id = value.id
- for(let i in planDialogState.planForm){
- if(isValidKey(i, planDialogState.planForm)){
- planDialogState.planForm[i] = value[i]
- }
- }
- planDialogState.planForm.assessTime=[value.assessStartTime, value.assessEndTime]
- }
-};
-
-const formatTime = () => {
- planDialogState.planForm.assessStartTime = planDialogState.planForm.assessTime == [] ? '' : planDialogState.planForm.assessTime[0]
- planDialogState.planForm.assessEndTime = planDialogState.planForm.assessTime == [] ? '' : planDialogState.planForm.assessTime[1]
-};
-
-const onSubmitPlan = () => {
- planFormRef.value.validate(async(valid: boolean) => {
- if(valid){
- formatTime()
- delete planDialogState.planForm.assessTime
- if(planDialogState.title === '新增'){
- let res = await planApi().addPlan(planDialogState.planForm);
- if(res.data.code === 100){
- emit('refresh')
- planDialogState.planDialogVisible = false;
- ElMessage({
- type: 'success',
- message: '新增成功'
- })
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg,
- });
- }
- }else{
- let res = await planApi().modPlan(planDialogState.planForm)
- if(res.data.code === 100){
- emit('refresh')
- planDialogState.planDialogVisible = false;
- ElMessage({
- type: 'success',
- message: '编辑成功'
- })
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg,
- });
- }
- }
- }else{
- ElMessage({
- type: 'warning',
- message: '请完善基本信息',
- });
- }
- })
-}
-
-const emit = defineEmits(['refresh'])
-
-defineExpose({
- showPlanDialog
-})
-</script>
-
-<style lang="scss" scoped>
- ::v-deep(.pickTime){
- position: absolute !important;
- top: 0 !important;
- }
- .valueSelect{
- ::v-deep(.el-popper){
- .el-select-dropdown__item{
- width: 100%;
- height: auto;
- white-space: normal;
- word-break: break-all;
- word-wrap: break-word;
- overflow: auto;
- padding: 10px 25px;
- border-bottom: 1px solid #ccc;
-
- .valueTable{
- &>div{
- line-height: 1.5;
- margin-bottom: 6px;
- display: flex;
- align-items: center;
-
- div{
- color: #999;
- }
-
- span{
- font-weight: bolder;
- }
-
- &:last-of-type{
- margin-bottom: 0;
- }
- }
- }
- }
- }
- }
-</style>
diff --git a/src/views/analyse/plan/index.ts b/src/views/analyse/plan/index.ts
deleted file mode 100644
index 405aac0..0000000
--- a/src/views/analyse/plan/index.ts
+++ /dev/null
@@ -1,73 +0,0 @@
-declare interface PlanStateType {
- planData: Array<PlanType>
- user: number | null,
- searchQuery: {
- pageIndex: number,
- pageSize: number,
- assessPlanName: string,
- riskUnitName: string,
- }
- total: number
- identificationMethodList: Array<Type>,
- evaluateMethodList: Array<Type>
- riskUnitList: Array<RiskUnitType>
- personList: Array<SystemPersonType>,
- bsExperts: [],
- pjExperts: [],
- reSendTitle:string
- reSendDialogVisible: boolean
- reSendForm: {
- id: null | number,
- identificationUserId: null | number,
- evaluateUserId: null | number,
- },
- rules: object
-}
-
-declare interface SystemPersonType {
- id: number,
- realName: string,
-}
-
-declare interface PlanType {
- id: number | null,
- riskUnitId: number | null,
- planUserId: number | null,
- assessPlanName: string,
- assessStartTime: string,
- assessEndTime: string,
- identificationMethod: number | null,
- identificationUserId: number | null,
- evaluateMethod: number | null,
- evaluateUserId: number | null,
-}
-
-declare interface Type {
- id: number,
- name: string,
-}
-
-declare interface PlanDialogType {
- title: string,
- disabled: boolean,
- planDialogVisible: boolean,
- planForm: {
- id?: number | null,
- riskUnitId: number | null,
- planUserId: number | null,
- assessPlanName: string,
- assessTime: string[],
- assessStartTime: string,
- assessEndTime: string,
- identificationUserId: number | null,
- evaluateUserId: number | null,
- riskType: number | null
- },
- planFormRules: {
-
- },
- riskUnitList: Array<RiskUnitType>
- personList: Array<SystemPersonType>
- bsExperts: []
- pjExperts: []
-}
diff --git a/src/views/analyse/plan/index.vue b/src/views/analyse/plan/index.vue
deleted file mode 100644
index 8b4814d..0000000
--- a/src/views/analyse/plan/index.vue
+++ /dev/null
@@ -1,586 +0,0 @@
-<template>
- <div class="home-container">
- <div style="height: 100%">
- <el-row class="homeCard">
- <div class="basic-line">
- <span>评估计划名称:</span>
- <el-input v-model="planState.searchQuery.assessPlanName" clearable filterable class="input-box" placeholder="评估计划名称">
- </el-input>
- </div>
- <div class="basic-line">
- <span>风险单元名称:</span>
- <el-input v-model="planState.searchQuery.riskUnitName" clearable filterable class="input-box" placeholder="风险单元名称">
- </el-input>
- </div>
- <div style="padding-bottom: 10px">
- <el-button type="primary" @click="getPlanData">查询</el-button>
- <el-button plain @click="reset">重置</el-button>
- </div>
- </el-row>
- <div class="homeCard">
- <div class="main-card">
- <el-row class="cardTop">
- <el-col :span="12" class="mainCardBtn">
- <el-button type="primary" :icon="Plus" size="default" @click="openPlanDialog('新增', {})">新增</el-button>
- <!-- <el-button type="danger" :icon="Delete" size="default" plain>删除</el-button>-->
- </el-col>
-<!-- <el-button type="primary" :icon="Refresh" size="default" />-->
- </el-row>
- <el-table ref="multipleTableRef" :data="planState.planData" style="width: 100%" height="calc(100% - 100px)" :header-cell-style="{ background: '#fafafa' }">
- <el-table-column prop="assessPlanName" label="评估计划名称"/>
- <el-table-column prop="riskUnitName" label="风险单元名称" />
- <el-table-column prop="planUserName" label="计划制定人" />
- <el-table-column prop="assessStartTime" label="评估开始时间">
- <template #default="scope">
- <span>{{scope.row.assessStartTime?scope.row.assessStartTime.substring(0,16):'--'}}</span>
- </template>
- </el-table-column>
- <el-table-column prop="assessEndTime" label="评估结束时间">
- <template #default="scope">
- <span>{{scope.row.assessEndTime?scope.row.assessEndTime.substring(0,16):'--'}}</span>
- </template>
- </el-table-column>
- <el-table-column prop="identificationUser" label="辨识专家" />
- <el-table-column prop="evaluateUser" label="评价专家" />
-<!-- <el-table-column prop="sceneUser" 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 prop="updateTime" label="最后修改时间" show-overflow-tooltip></el-table-column>
- <el-table-column prop="updateByUserName" label="最后修改人" show-overflow-tooltip></el-table-column>
- <el-table-column prop="planSellStatus" label="是否派发" show-overflow-tooltip>
- <template #default="scope">
- <div>
- <div v-if="scope.row.planSellStatus === 1">
- <el-tag :type="'info'">
- {{ '未派发' }}
- </el-tag>
- </div>
- <div v-if="scope.row.planSellStatus === 2">
- <el-tag :type="'success'">
- {{ '已派发' }}
- </el-tag>
- </div>
- </div>
- </template>
- </el-table-column>
- <el-table-column label="操作" width="250">
- <template #default="scope">
- <el-button size="small" text type="primary" v-if="scope.row.planSellStatus === 1" @click="accessPlan(scope.row)">派发</el-button>
- <el-button size="small" text type="primary" :icon="View" @click="openPlanDialog('查看', scope.row)">查看</el-button>
- <el-button v-if="scope.row.planSellStatus === 1" size="small" text type="primary" :icon="Edit" @click="openPlanDialog('修改', scope.row)">编辑</el-button>
- <el-button v-if="scope.row.identificationUserId == planState.user" size="small" text type="primary" :icon="Edit" @click="refuseIdentify(scope.row)">拒绝辨识</el-button>
- <el-button v-if="scope.row.evaluateUserId == planState.user" size="small" text type="primary" :icon="Edit" @click="refuseEvaluate(scope.row)">拒绝评价</el-button>
-<!-- <el-button v-if="scope.row.sceneUserId == planState.user" size="small" text type="primary" :icon="Edit" @click="refuseScene(scope.row)">拒绝现场</el-button>-->
- <el-button v-if="scope.row.identificationUserId == null" size="small" text type="primary" :icon="Edit" @click="reSendJob(scope.row,'identification')">重新指派辨识</el-button>
- <el-button v-if="scope.row.evaluateUserId == null" size="small" text type="primary" :icon="Edit" @click="reSendJob(scope.row,'evaluate')">重新指派评价</el-button>
- <el-button v-if="scope.row.planSellStatus === 1" size="small" text type="danger" :icon="Delete" @click="onDelPlan(scope.row)">删除</el-button>
- </template>
- </el-table-column>
- </el-table>
- <div class="pageBtn">
- <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" :pager-count="5" :page-sizes="[10, 20, 30]" v-model:current-page="planState.searchQuery.pageIndex" background v-model:page-size="planState.searchQuery.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="planState.total" class="page-position"> </el-pagination>
- </div>
- </div>
- </div>
- </div>
- <plan-dialog ref="planDialogRef" @refresh="getPlanData"></plan-dialog>
-
- <el-dialog class="chooseExpert" :title="planState.reSendTitle" v-model="planState.reSendDialogVisible" width="50%">
- <el-form ref="ruleFormRef" :rules="planState.rules" :model="planState.reSendForm" label-width="120px">
- <el-form-item v-if="planState.reSendTitle == '指派辨识专家'" label="选择辨识专家" prop="identificationUserId" class="valueSelect">
- <el-select v-model="planState.reSendForm.identificationUserId" style="width:100%" :teleported="false" placeholder="辨识专家" clearable>
- <el-option v-for="item in planState.bsExperts" :key="item.id" :label="item.realName" :value="item.id">
- <div class="valueTable">
- <div><div>姓名:</div><span>{{item.realName}}</span></div>
- <div><div>专业:</div><span>{{item.userIdentities?.map(i=>i.userIdentity).join(',')}}</span></div>
- </div>
- </el-option>
- </el-select>
- </el-form-item>
- <el-form-item v-if="planState.reSendTitle == '指派评价专家'" label="选择评价专家" prop="evaluateUserId" class="valueSelect">
- <el-select v-model="planState.reSendForm.evaluateUserId" style="width:100%" :teleported="false" placeholder="评价专家" clearable>
- <el-option v-for="item in planState.pjExperts" :key="item.id" :label="item.realName" :value="item.id">
- <div class="valueTable">
- <div><div>姓名:</div><span>{{item.realName}}</span></div>
- <div><div>专业:</div><span>{{item.userIdentities?.map(i=>i.userIdentity).join(',')}}</span></div>
- </div>
- </el-option>
- </el-select>
- </el-form-item>
- </el-form>
- <template #footer>
- <span class="dialog-footer" style="padding-top:10px;text-align: center !important;">
- <el-button @click="planState.reSendDialogVisible = !planState.reSendDialogVisible" size="default">取 消</el-button>
- <el-button type="primary" @click="onSubmitReSend(ruleFormRef)" size="default">确认指派</el-button>
- </span>
- </template>
- </el-dialog>
-
- </div>
-</template>
-
-<script setup lang="ts">
-import {defineAsyncComponent, onMounted, reactive, ref} from "vue";
-import {planApi} from "/@/api/analyse/plan";
-import {ElMessage, ElMessageBox, FormInstance} from "element-plus";
-import { Edit, View, Plus, Delete } from '@element-plus/icons-vue';
-import {riskUnitApi} from "/@/api/analyse/riskUnit";
-import {personApi} from "/@/api/basic/person";
-import {useUserInfo} from "/@/stores/userInfo";
-import { storeToRefs } from 'pinia';
-import {userApi} from "/@/api/systemManage/user";
-import {assessApplyApi} from "/@/api/analyse/assessApply";
-
-
-const PlanDialog = defineAsyncComponent(() => import('./components/planDialog.vue'));
-const planDialogRef = ref();
-const userInfo = useUserInfo();
-const { userInfos } = storeToRefs(userInfo);
-const ruleFormRef = ref<FormInstance>()
-const planState = reactive<PlanStateType>({
- planData: [],
- user: null,
- searchQuery: {
- pageIndex: 1,
- pageSize: 10,
- assessPlanName: '',
- riskUnitName: '',
- },
- total: 0,
- riskUnitList: [
- ],
- personList: [],
- bsExperts: [],
- pjExperts: [],
- identificationMethodList: [
- {id:1, name: 'PHA'},
- {id:2, name: 'JHA'},
- {id:3, name: 'SCL'},
- {id:4, name: 'HAZOP'},
- {id:5, name: '类比法'},
- ],
- evaluateMethodList: [
- {id:1, name: 'LEC'},
- {id:2, name: 'LS'},
- {id:3, name: 'MES'},
- {id:4, name: 'RS'},
- ],
- reSendTitle:'',
- reSendDialogVisible: false,
- reSendForm: {
- id: null,
- identificationUserId: null,
- evaluateUserId: null
- },
- rules: {
- identificationUserId: [{ required: true, message: '请选择辨识专家', trigger: 'blur' }],
- evaluateUserId: [{ required: true, message: '请选择评价专家', trigger: 'blur' }]
- }
- // deviceUnitList: [
- // {id:1, name: '台'},
- // {id:2, name: '个'},
- // {id:3, name: '件'}
- // ]
-})
-
-const getPlanData = async () => {
- let res = await planApi().getPlanByList(planState.searchQuery);
- if(res.data.code === 100){
- planState.planData = res.data.data;
- planState.total = res.data.total;
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- });
- }
-};
-
-const getAllRiskUnitList = async () => {
- let res = await riskUnitApi().getAllRiskUnit();
- if(res.data.code === 100){
- planState.riskUnitList = JSON.parse(JSON.stringify(res.data.data));
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- });
- }
-};
-
-const getPersonList = async () => {
- let res = await userApi().getUserList({
- pageIndex: 1,
- pageSize: 99999,
- searchParams:{
- roleId: null,
- name: '',
- realName: ''
- }
- });
- if(res.data.code === 100){
- planState.personList = JSON.parse(JSON.stringify(res.data.data));
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- })
- }
-};
-
-const getAllExperts = async () => {
- let res = await userApi().getExpertsList({
- pageIndex: 1,
- pageSize: 99999,
- searchParams:{
- userIndentityId: null
- }
- });
- if (res.data.code === 100) {
- const expertsList = res.data.data;
- for(let i of expertsList){
- if(i.roles?.find(obj=>obj.roleId == 2)){
- planState.bsExperts.push(i)
- }
- if(i.roles?.find(obj=>obj.roleId == 3)){
- planState.pjExperts.push(i)
- }
- }
- } else {
- ElMessage({
- type: 'warning',
- message: res.data.msg
- });
- }
-};
-
-const openPlanDialog = (title: string, value: PlanType) => {
- planDialogRef.value.showPlanDialog(title, value, planState.riskUnitList, planState.personList,planState.bsExperts,planState.pjExperts);
-};
-
-const refuseIdentify = async(val: PlanType)=>{
- ElMessageBox.confirm(`此操作将拒绝作为该计划:“${val.assessPlanName}”的辨识专家,是否继续?`, '提示', {
- confirmButtonText: '确认',
- cancelButtonText: '取消',
- type: 'warning'
- })
- .then(async () => {
- let res = await planApi().refuseIdentify({ id: val.id });
- if (res.data.code === 100) {
- ElMessage({
- type: 'success',
- duration: 2000,
- message: '拒绝成功'
- });
- await getPlanData();
- } else {
- ElMessage({
- type: 'warning',
- message: res.data.msg
- });
- }
- })
- .catch((error) => {
- });
-}
-
-const reSendJob= async(val: PlanType,type:string)=>{
- planState.reSendForm = {
- id: val.id,
- identificationUserId: null,
- evaluateUserId: null
- }
- if(type=='identification'){
- planState.reSendTitle = '指派辨识专家'
- }else{
- planState.reSendTitle = '指派评价专家'
- }
- planState.reSendDialogVisible = true
-}
-
-const onSubmitReSend = async (formEl: FormInstance | undefined) => {
- if (!formEl) return
- await formEl.validate(async(valid, fields) => {
- if (valid) {
- let res = await planApi().reSendJob(planState.reSendForm);
- if(res.data.code === 100){
- ElMessage({
- type: 'success',
- message: '重新指派成功'
- });
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- });
- }
-
- planState.reSendForm = {
- id: null,
- identificationUserId: null,
- evaluateUserId: null
- },
- planState.reSendDialogVisible = false
- getPlanData()
- } else {
- console.log('error submit!', fields)
- }
- })
-}
-
-const refuseEvaluate = async(val: PlanType)=>{
- ElMessageBox.confirm(`此操作将拒绝作为该计划:“${val.assessPlanName}”的评价专家,是否继续?`, '提示', {
- confirmButtonText: '确认',
- cancelButtonText: '取消',
- type: 'warning'
- })
- .then(async () => {
- let res = await planApi().refuseEvaluate({ id: val.id });
- if (res.data.code === 100) {
- ElMessage({
- type: 'success',
- duration: 2000,
- message: '拒绝成功'
- });
- await getPlanData();
- } else {
- ElMessage({
- type: 'warning',
- message: res.data.msg
- });
- }
- })
- .catch((error) => {
- });
-}
-
-// const refuseScene = async(val: PlanType)=>{
-// let res = await planApi().refuseScene({ id: val.id });
-// if (res.data.code === 100) {
-// ElMessage({
-// type: 'success',
-// duration: 2000,
-// message: '拒绝成功'
-// });
-// await getPlanData();
-// } else {
-// ElMessage({
-// type: 'warning',
-// message: res.data.msg
-// });
-// }
-// }
-
-const onDelPlan = (val: PlanType) => {
- ElMessageBox.confirm(`此操作将永久删除该计划:“${val.assessPlanName}”,是否继续?`, '提示', {
- confirmButtonText: '确认',
- cancelButtonText: '取消',
- type: 'warning'
- })
- .then(async () => {
- let res = await planApi().deletePlanById({ id: val.id });
- if (res.data.code === 100) {
- ElMessage({
- type: 'success',
- duration: 2000,
- message: '删除成功'
- });
- await getPlanData();
- } else {
- ElMessage({
- type: 'warning',
- message: res.data.msg
- });
- }
- })
- .catch((error) => {
- });
-};
-
-const accessPlan = (val: PlanType) => {
- ElMessageBox.confirm(`此操作将派发该计划:“${val.assessPlanName}”,是否继续?`, '提示', {
- confirmButtonText: '确认',
- cancelButtonText: '取消',
- type: 'warning'
- })
- .then(async () => {
- let res = await planApi().sellAssessPlan({ id: val.id });
- if (res.data.code === 100) {
- ElMessage({
- type: 'success',
- duration: 2000,
- message: '派发成功'
- });
- await getPlanData();
- } else {
- ElMessage({
- type: 'warning',
- message: res.data.msg
- });
- }
- })
- .catch((error) => {
- });
-};
-
-const onHandleSizeChange = (val: number) => {
- planState.searchQuery.pageSize = val;
- getPlanData();
-};
-
-const onHandleCurrentChange = (val: number) => {
- planState.searchQuery.pageIndex = val;
- getPlanData();
-};
-
-const reset = () => {
- planState.searchQuery = {
- pageIndex: 1,
- pageSize: 10,
- riskUnitName: '',
- assessPlanName: '',
- }
-};
-
-onMounted(() => {
- getPlanData();
- getAllRiskUnitList();
- getAllExperts();
- getPersonList();
- planState.user = Number(userInfos.value.uid)
-})
-
-</script>
-
-<style scoped lang="scss">
-$homeNavLengh: 8;
-::v-deep(.el-dialog){
- .el-dialog__body{
- overflow-y: visible !important;
- overflow-x: visible !important;
- }
-}
-
-.home-container {
- height: calc(100vh - 144px);
- box-sizing: border-box;
- overflow: hidden;
- .homeCard {
- width: 100%;
- padding: 20px;
- box-sizing: border-box;
- background: #fff;
- border-radius: 4px;
-
- .main-card {
- width: 100%;
- height: 100%;
- .cardTop {
- display: flex;
- align-items: center;
- justify-content: space-between;
- margin-bottom: 20px;
- .mainCardBtn {
- margin: 0;
- }
- }
- .pageBtn {
- height: 60px;
- display: flex;
- align-items: center;
- justify-content: right;
-
- .demo-pagination-block + .demo-pagination-block {
- margin-top: 10px;
- }
- .demo-pagination-block .demonstration {
- margin-bottom: 16px;
- }
- }
- }
- &:last-of-type {
- height: calc(100% - 100px);
- }
- }
- .el-row {
- display: flex;
- align-items: center;
- margin-bottom: 20px;
- &:last-child {
- margin-bottom: 0;
- }
- .grid-content {
- align-items: center;
- min-height: 36px;
- }
-
- .topInfo {
- display: flex;
- align-items: center;
- font-size: 16px;
- font-weight: bold;
-
- & > div {
- white-space: nowrap;
- margin-right: 20px;
- }
- }
- }
-}
-
-.valueSelect{
- ::v-deep(.el-popper){
- .el-select-dropdown__item{
- width: 100%;
- height: auto;
- white-space: normal;
- word-break: break-all;
- word-wrap: break-word;
- overflow: auto;
- padding: 10px 25px;
- border-bottom: 1px solid #ccc;
-
- .valueTable{
- &>div{
- line-height: 1.5;
- margin-bottom: 6px;
- display: flex;
- align-items: center;
-
- div{
- color: #999;
- }
-
- span{
- font-weight: bolder;
- }
-
- &:last-of-type{
- margin-bottom: 0;
- }
- }
- }
- }
- }
-}
-:deep(.el-date-editor) {
- width: 100%;
-}
-.el-select {
- width: 100%;
-}
-:deep(.el-textarea.is-disabled .el-textarea__inner) {
- background-color: var(--el-card-bg-color);
- color: var(--el-input-text-color, var(--el-text-color-regular));
-}
-:deep(.el-input.is-disabled .el-input__inner) {
- color: var(--el-input-text-color, var(--el-text-color-regular));
-}
-:deep(.el-input.is-disabled .el-input__wrapper) {
- background-color: var(--el-card-bg-color);
-}
-:deep(.el-range-editor.is-disabled input){
- background-color: var(--el-card-bg-color);
- color: var(--el-input-text-color, var(--el-text-color-regular));
-}
-</style>
diff --git a/src/views/analyse/riskUnit/components/riskUnitDialog.vue b/src/views/analyse/riskUnit/components/riskUnitDialog.vue
deleted file mode 100644
index d916b3b..0000000
--- a/src/views/analyse/riskUnit/components/riskUnitDialog.vue
+++ /dev/null
@@ -1,222 +0,0 @@
-<template>
- <div class="system-menu-dialog-container">
- <el-dialog :title="riskUnitDialogState.title" v-model="riskUnitDialogState.riskUnitDialogVisible" width="600px">
- <el-form ref="riskUnitFormRef" :rules="riskUnitDialogState.riskUnitFormRules" :model="riskUnitDialogState.riskUnitForm" size="default" label-width="120px">
- <el-row :gutter="35">
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="实验类型" prop="experimentType">
- <el-select :disabled="riskUnitDialogState.title === '编辑'" v-model="riskUnitDialogState.experimentType" placeholder="实验类型" clearable class="input-length">
- <el-option v-for="item in riskUnitDialogState.experimentTypeList" :key="item.id" :label="item.name" :value="item.id"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="实验名称" prop="experimentId">
- <el-select v-model="riskUnitDialogState.riskUnitForm.experimentId" placeholder="实验名称" clearable class="input-length">
- <el-option v-for="item in riskUnitDialogState.allExperimentList" :key="item.id" :label="item.experimentName" :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" v-if="riskUnitDialogState.experimentType === 2">
- <el-form-item label="风险单元编号" prop="riskCode">
- <el-input v-model="riskUnitDialogState.riskUnitForm.riskCode" 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 === 2">
- <el-form-item label="风险单元名称" prop="riskName">
- <el-input v-model="riskUnitDialogState.riskUnitForm.riskName" 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 === 2">
- <el-form-item label="风险单元类型" prop="experimentId">
- <el-select v-model="riskUnitDialogState.riskUnitForm.riskUnitTypeId" 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" v-if="riskUnitDialogState.experimentType === 2">
- <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>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" v-if="riskUnitDialogState.experimentType === 2">
- <el-form-item label="负责部门" prop="liabilityDep">
- <el-input v-model="riskUnitDialogState.riskUnitForm.liabilityDep" 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 === 2">
- <el-form-item label="风险单元描述">
- <el-input type="textarea" :rows="3" v-model="riskUnitDialogState.riskUnitForm.description" 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-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-row>
- </el-form>
- <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>
- </span>
- </template>
- </el-dialog>
- </div>
-</template>
-
-<script setup lang="ts">
-import { reactive, ref } from "vue";
-import { isValidKey } from "/@/utils/methods";
-import {ElMessage} from "element-plus";
-import {riskUnitApi} from "/@/api/analyse/riskUnit";
-
-const riskUnitFormRef = ref()
-
-const riskUnitDialogState = reactive<RiskUnitDialogType>({
- title: '',
- experimentType: null,
- riskUnitDialogVisible: false,
- riskUnitForm: {
- experimentId: null,
- riskCode: '',
- riskName: '',
- riskUnitTypeId: null,
- liabilityUserId: null,
- liabilityDep: '',
- description: '',
- basicRiskUnitId: null,
- },
- riskUnitFormRules: {
- experimentId: [{ required: true, message: '请选择实验', trigger: 'change' }],
- riskCode: [{ required: true, message: '请填写风险单元编号', trigger: 'blur' }],
- riskName: [{ required: true, message: '请填写风险单元名称', trigger: 'blur' }],
- riskUnitTypeId: [{ required: true, message: '请选择风险单元类型', trigger: 'blur' }],
- liabilityUserId: [{ required: true, message: '请选择负责人', trigger: 'change' }],
- basicRiskUnitId: [{ required: true, message: '请选择基础风险单元', trigger: 'change' }]
- },
- specialDeviceList: [],
- deviceUnitList: [
- {id:1, name: '台'},
- {id:2, name: '个'},
- {id:3, name: '件'}
- ],
- riskTypeList: [],
- basicUnitList: [],
- allPersonList: [],
- allExperimentList: [],
- experimentTypeList: [
- {id: 2, name: '实验风险'},
- {id: 1, name: '固有风险'},
- ],
-})
-
-const showRiskUnitDialog = (title: string, value: RiskUnitType, basicUnitList: UnitType [], allPersonList: AllPersonListType [], allExperimentList: ProjectType [],allRiskTypeList: RiskType []) => {
- riskUnitDialogState.riskUnitDialogVisible = true;
- riskUnitDialogState.basicUnitList = basicUnitList
- riskUnitDialogState.allPersonList = allPersonList
- riskUnitDialogState.allExperimentList = allExperimentList
- riskUnitDialogState.riskTypeList = allRiskTypeList
- setTimeout(() => {
- riskUnitFormRef.value.clearValidate();
- });
- if(title === '新增'){
- riskUnitDialogState.title = '新增';
- riskUnitDialogState.riskUnitForm = {
- experimentId: null,
- riskCode: '',
- riskName: '',
- riskUnitTypeId: null,
- liabilityUserId: null,
- liabilityDep: '',
- description: '',
- basicRiskUnitId: null,
- };
- }else{
- riskUnitDialogState.title = '编辑';
- riskUnitDialogState.experimentType = value.riskType as number
- for(let i in riskUnitDialogState.riskUnitForm) {
- if(isValidKey(i, riskUnitDialogState.riskUnitForm)) {
- riskUnitDialogState.riskUnitForm[i] = value[i];
- }
- }
- riskUnitDialogState.riskUnitForm.id = value.id
- }
-};
-
-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
- let res = await riskUnitApi().addRiskUnit(query);
- if(res.data.code === 100){
- emit('refresh')
- riskUnitDialogState.riskUnitDialogVisible = false;
- ElMessage({
- type: 'success',
- message: '新增成功'
- })
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg,
- });
- }
- }else{
- let res = await riskUnitApi().modRiskUnit(riskUnitDialogState.riskUnitForm)
- if(res.data.code === 100){
- emit('refresh')
- riskUnitDialogState.riskUnitDialogVisible = false;
- ElMessage({
- type: 'success',
- message: '编辑成功'
- })
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg,
- });
- }
- }
- }else{
- ElMessage({
- type: 'warning',
- message: '请完善基本信息',
- });
- }
- })
-}
-
-const emit = defineEmits(['refresh'])
-
-defineExpose({
- showRiskUnitDialog
-})
-</script>
-
-<style scoped>
-
-</style>
diff --git a/src/views/analyse/riskUnit/index.ts b/src/views/analyse/riskUnit/index.ts
deleted file mode 100644
index b1dde19..0000000
--- a/src/views/analyse/riskUnit/index.ts
+++ /dev/null
@@ -1,68 +0,0 @@
-declare interface RiskUnitStateType {
- riskUnitData: RiskUnitType [],
- searchQuery: {
- pageIndex: number,
- pageSize: number,
- riskCode: string,
- riskName: string,
- }
- total: number
- allRiskTypeList: Array<RiskType>
- riskList: Array<Type>,
- riskSourceList: Array<Type>
- evaluateStatusList: Array<Type>
- basicUnitList: Array<UnitType>
- allPersonList: Array<AllPersonListType>
- allExperimentList: Array<ProjectType>
-}
-
-declare interface RiskUnitType {
- id?: number
- experimentId: number | null,
- riskCode: string,
- riskName: string,
- liabilityDep: string,
- liabilityUserId: number | null,
- description: string,
- basicRiskUnitId: number | null,
- riskType?: number,
-}
-
-declare interface Type {
- id: number,
- name: string,
-}
-
-declare interface RiskType {
- id: number,
- riskType: string
-}
-
-declare interface RiskUnitDialogType {
- title: string,
- disabled: boolean
- experimentType: number | null,
- riskUnitDialogVisible: boolean,
- riskUnitForm: {
- id?: number | null
- experimentId: number | null,
- riskCode: string,
- riskName: string,
- riskUnitTypeId: number | null,
- liabilityDep: string,
- liabilityUserId: number | null,
- description: string,
- basicRiskUnitId: number | null,
- riskType?: number,
- },
- riskUnitFormRules: {
-
- },
- riskTypeList: Array<RiskType>,
- specialDeviceList: Array<Type>,
- deviceUnitList: Array<Type>,
- basicUnitList: Array<UnitType>,
- allPersonList: Array<AllPersonListType>,
- allExperimentList: Array<ProjectType>,
- experimentTypeList: Array<Type>
-}
diff --git a/src/views/analyse/riskUnit/index.vue b/src/views/analyse/riskUnit/index.vue
deleted file mode 100644
index 2ea936f..0000000
--- a/src/views/analyse/riskUnit/index.vue
+++ /dev/null
@@ -1,373 +0,0 @@
-<template>
- <div class="home-container">
- <div style="height: 100%">
- <el-row class="homeCard">
- <div class="basic-line">
- <span>风险编码:</span>
- <el-input v-model="riskUnitState.searchQuery.riskCode" clearable filterable class="input-box" placeholder="风险编码">
- </el-input>
- </div>
- <div class="basic-line">
- <span>风险名称:</span>
- <el-input v-model="riskUnitState.searchQuery.riskName" clearable filterable class="input-box" placeholder="风险名称">
- </el-input>
- </div>
- <div style="padding-bottom: 10px">
- <el-button type="primary" @click="getRiskUnitData">查询</el-button>
- <el-button plain @click="reset">重置</el-button>
- </div>
- </el-row>
- <div class="homeCard">
- <div class="main-card">
- <el-row class="cardTop">
- <el-col :span="12" class="mainCardBtn">
- <el-button type="primary" :icon="Plus" size="default" @click="openRiskUnitDialog('新增', {})">新增</el-button>
- <!-- <el-button type="danger" :icon="Delete" size="default" plain>删除</el-button>-->
- </el-col>
-<!-- <el-button type="primary" :icon="Refresh" size="default" />-->
- </el-row>
- <el-table ref="multipleTableRef" :data="riskUnitState.riskUnitData" style="width: 100%" height="calc(100% - 100px)" :header-cell-style="{ background: '#fafafa' }">
- <el-table-column prop="riskCode" label="风险编码"/>
- <el-table-column prop="riskName" label="风险名称" />
- <el-table-column prop="riskSourceType" label="风险源风险类型">
- <template #default="scope">
- <span>{{`${riskUnitState.riskSourceList.find(item =>item.id === scope.row.riskSourceType)?.name || ''}`}}</span>
- </template>
- </el-table-column>
- <el-table-column prop="riskType" label="风险类型">
- <template #default="scope">
- <span>{{`${riskUnitState.riskList.find(item =>item.id === scope.row.riskType)?.name || ''}`}}</span>
- </template>
- </el-table-column>
- <el-table-column prop="riskUnitType" label="风险单元类型"/>
- <el-table-column prop="evaluateStatus" label="是否评价" show-overflow-tooltip>
- <template #default="scope">
- <span>{{`${riskUnitState.evaluateStatusList.find(item =>item.id === scope.row.evaluateStatus)?.name}`}}</span>
- </template>
- </el-table-column>
- <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 prop="updateTime" label="最后修改时间" show-overflow-tooltip></el-table-column>
- <el-table-column prop="updateByUserName" label="最后修改人" show-overflow-tooltip></el-table-column>
- <el-table-column label="操作" width="150">
- <template #default="scope">
- <el-button size="small" text type="primary" :icon="Edit" @click="openRiskUnitDialog('修改', scope.row)" v-if="scope.row.riskType === 2">编辑</el-button>
- <el-button size="small" text type="danger" :icon="Delete" @click="onDelRiskUnit(scope.row)">删除</el-button>
- </template>
- </el-table-column>
- </el-table>
- <div class="pageBtn">
- <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" :pager-count="5" :page-sizes="[10, 20, 30]" v-model:current-page="riskUnitState.searchQuery.pageIndex" background v-model:page-size="riskUnitState.searchQuery.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="riskUnitState.total" class="page-position"> </el-pagination>
- </div>
- </div>
- </div>
- </div>
- <risk-unit-dialog ref="riskUnitDialogRef" @refresh="getRiskUnitData"></risk-unit-dialog>
- </div>
-</template>
-
-<script setup lang="ts">
-import {defineAsyncComponent, onMounted, reactive, ref} from "vue";
-import {riskUnitApi} from "/@/api/analyse/riskUnit";
-import {ElMessage, ElMessageBox} from "element-plus";
-import { Edit, View, Plus, Delete } from '@element-plus/icons-vue';
-import { unitApi } from "/@/api/basic/unit";
-import {personApi} from "/@/api/basic/person";
-import { projectApi } from "/@/api/experiment/project";
-
-const RiskUnitDialog = defineAsyncComponent(() => import('./components/riskUnitDialog.vue'));
-
-const riskUnitDialogRef = ref();
-
-const riskUnitState = reactive<RiskUnitStateType>({
- riskUnitData: [],
- searchQuery: {
- pageIndex: 1,
- pageSize: 10,
- riskCode: '',
- riskName: '',
- },
- total: 0,
- riskList: [
- {id: 1, name: '固有风险'},
- {id:2, name: '实验风险'}
- ],
- evaluateStatusList: [
- {id: 1, name: '未评价'},
- {id:2, name: '已评价'}
- ],
- riskSourceList: [
- {id:1, name: '区域、实验场所'},
- {id:2, name: '设施设备'},
- {id:3, name: '固定工艺节点'}
- ],
- allRiskTypeList: [],
- basicUnitList: [],
- allPersonList: [],
- allExperimentList: [],
-})
-
-const getRiskUnitData = async () => {
- let res = await riskUnitApi().getRiskUnitByList(riskUnitState.searchQuery);
- if(res.data.code === 100){
- riskUnitState.riskUnitData = res.data.data;
- riskUnitState.total = res.data.total;
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- });
- }
-};
-
-const getAllBasicUnitList = async () => {
- let res = await unitApi().getAllUnit();
- if(res.data.code === 100){
- riskUnitState.basicUnitList = JSON.parse(JSON.stringify(res.data.data));
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- })
- }
-};
-
-const getAllPersonList = async () => {
- let res = await personApi().getAllPerson();
- if(res.data.code === 100){
- riskUnitState.allPersonList = JSON.parse(JSON.stringify(res.data.data));
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- })
- }
-};
-
-const getAllTypeList = async () =>{
- let res = await unitApi().getAllUnitType()
- if(res.data.code === 100){
- riskUnitState.allRiskTypeList = JSON.parse(JSON.stringify(res.data.data));
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- })
- }
-}
-
-const getAllExperimentList = async () => {
- let res = await projectApi().getAllExperiment()
- if(res.data.code === 100){
- riskUnitState.allExperimentList = JSON.parse(JSON.stringify(res.data.data));
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- })
- }
-};
-
-const openRiskUnitDialog = (title: string, value: RiskUnitType) => {
- riskUnitDialogRef.value.showRiskUnitDialog(title, value, riskUnitState.basicUnitList, riskUnitState.allPersonList, riskUnitState.allExperimentList, riskUnitState.allRiskTypeList);
-};
-
-const onDelRiskUnit = (val: RiskUnitType) => {
- ElMessageBox.confirm(`此操作将永久删除该风险单元:“${val.riskName}”,是否继续?`, '提示', {
- confirmButtonText: '确认',
- cancelButtonText: '取消',
- type: 'warning'
- })
- .then(async () => {
- let res = await riskUnitApi().deleteRiskUnitById({ id: val.id });
- if (res.data.code === 100) {
- ElMessage({
- type: 'success',
- duration: 2000,
- message: '删除成功'
- });
- await getRiskUnitData();
- } else {
- ElMessage({
- type: 'warning',
- message: res.data.msg
- });
- }
- })
- .catch((error) => {
- });
-}
-
-const onHandleSizeChange = (val: number) => {
- riskUnitState.searchQuery.pageSize = val;
- getRiskUnitData();
-};
-
-const onHandleCurrentChange = (val: number) => {
- riskUnitState.searchQuery.pageIndex = val;
- getRiskUnitData();
-};
-
-const reset = () => {
- riskUnitState.searchQuery = {
- pageIndex: 1,
- pageSize: 10,
- riskCode: '',
- riskName: '',
- }
-};
-
-onMounted(() => {
- getRiskUnitData();
- getAllBasicUnitList();
- getAllPersonList();
- getAllTypeList();
- getAllExperimentList();
-})
-
-</script>
-
-<style scoped lang="scss">
-$homeNavLengh: 8;
-.home-container {
- height: calc(100vh - 144px);
- box-sizing: border-box;
- overflow: hidden;
- .homeCard {
- width: 100%;
- padding: 20px;
- box-sizing: border-box;
- background: #fff;
- border-radius: 4px;
-
- .main-card {
- width: 100%;
- height: 100%;
- .cardTop {
- display: flex;
- align-items: center;
- justify-content: space-between;
- margin-bottom: 20px;
- .mainCardBtn {
- margin: 0;
- }
- }
- .pageBtn {
- height: 60px;
- display: flex;
- align-items: center;
- justify-content: right;
-
- .demo-pagination-block + .demo-pagination-block {
- margin-top: 10px;
- }
- .demo-pagination-block .demonstration {
- margin-bottom: 16px;
- }
- }
- }
- &:last-of-type {
- height: calc(100% - 100px);
- }
- }
- .el-row {
- display: flex;
- align-items: center;
- margin-bottom: 20px;
- &:last-child {
- margin-bottom: 0;
- }
- .grid-content {
- align-items: center;
- min-height: 36px;
- }
-
- .topInfo {
- display: flex;
- align-items: center;
- font-size: 16px;
- font-weight: bold;
-
- & > div {
- white-space: nowrap;
- margin-right: 20px;
- }
- }
- }
-}
-.stepItem {
- width: 100%;
- display: flex;
- align-items: flex-start;
- margin-bottom: 30px;
- margin-left: 30px;
- padding-bottom: 30px;
- border-left: 2px solid #ccc;
- &:first-of-type {
- margin-top: 30px;
- }
- &:last-of-type {
- margin-bottom: 0;
- border-left: none;
- }
- .stepNum {
- width: 30px;
- height: 30px;
- border-radius: 15px;
- box-sizing: border-box;
- color: #333;
- border: 1px solid #999;
- line-height: 28px;
- text-align: center;
- margin-right: 10px;
- margin-left: -16px;
- margin-top: -30px;
- }
- .stepCard {
- width: 100%;
- margin-top: -30px;
-
- .box-card {
- width: 100%;
- &:deep(.el-card__header) {
- padding: 10px 15px;
- }
- .card-header {
- width: 100%;
- display: flex;
- justify-content: space-between;
- align-items: center;
- & > div:first-of-type {
- margin-right: 80px;
- font-size: 18px;
- font-weight: bold;
- }
- }
- }
- }
- &:hover .card-header {
- color: #0098f5;
- }
- &:hover .stepNum {
- border: 2px solid #0098f5;
- color: #0098f5;
- }
-}
-
-:deep(.el-date-editor) {
- width: 100%;
-}
-.el-select {
- width: 100%;
-}
-:deep(.el-textarea.is-disabled .el-textarea__inner) {
- background-color: var(--el-card-bg-color);
- color: var(--el-input-text-color, var(--el-text-color-regular));
-}
-:deep(.el-input.is-disabled .el-input__inner) {
- color: var(--el-input-text-color, var(--el-text-color-regular));
-}
-:deep(.el-input.is-disabled .el-input__wrapper) {
- background-color: var(--el-card-bg-color);
-}
-</style>
diff --git a/src/views/basic/equipment/components/equipmentDialog.vue b/src/views/basic/equipment/components/equipmentDialog.vue
deleted file mode 100644
index d20f00d..0000000
--- a/src/views/basic/equipment/components/equipmentDialog.vue
+++ /dev/null
@@ -1,236 +0,0 @@
-<template>
- <div class="system-menu-dialog-container">
- <el-dialog :title="equipmentDialogState.title" v-model="equipmentDialogState.equipmentDialogVisible" :close-on-click-modal="false" width="600px">
- <el-form ref="EquipmentFormRef" :rules="equipmentDialogState.equipmentFormRules" :model="equipmentDialogState.equipmentForm" size="default" label-width="120px">
- <el-row :gutter="35">
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="设备编号" prop="deviceCode">
- <el-input v-model="equipmentDialogState.equipmentForm.deviceCode" 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="deviceName">
- <el-input v-model="equipmentDialogState.equipmentForm.deviceName" 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="deviceTypeId">
- <el-select v-model="equipmentDialogState.equipmentForm.deviceTypeId" placeholder="设备类型" clearable class="input-length">
- <el-option v-for="item in equipmentTypeList" :key="item.id" :label="item.deviceType" :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="deviceDesc">
- <el-input v-model="equipmentDialogState.equipmentForm.deviceDesc" 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="devicePower">
- <el-input v-model="equipmentDialogState.equipmentForm.devicePower" 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="deviceUnit">
- <el-select v-model="equipmentDialogState.equipmentForm.deviceUnit" placeholder="计量单位" clearable class="input-length">
- <el-option v-for="item in equipmentDialogState.deviceUnitList" :key="item.id" :label="item.name" :value="item.id"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="是否特种设备">
- <el-select v-model="equipmentDialogState.equipmentForm.specialDevice" placeholder="是否特种设备" clearable class="input-length">
- <el-option v-for="item in equipmentDialogState.specialDeviceList" :key="item.id" :label="item.name" :value="item.id"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="设备状态" prop="deviceStatus">
- <el-select v-model="equipmentDialogState.equipmentForm.deviceStatus" placeholder="设备状态" clearable class="input-length">
- <el-option :key="1" label="完好" :value="1"></el-option>
- <el-option :key="2" label="异常" :value="2"></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="equipmentDialogState.equipmentForm.safeProtect" 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="buyTime">
- <el-date-picker
- v-model="equipmentDialogState.equipmentForm.buyTime"
- format="YYYY-MM-DD"
- value-format="YYYY-MM-DD 00:00:00"
- type="dateTime"
- placeholder="购入时间"
- />
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="校准时间" prop="adjustTime">
- <el-date-picker
- v-model="equipmentDialogState.equipmentForm.adjustTime"
- format="YYYY-MM-DD"
- value-format="YYYY-MM-DD 00:00:00"
- type="dateTime"
- placeholder="校准时间"
- />
- </el-form-item>
- </el-col>
- </el-row>
- </el-form>
- <template #footer>
- <span class="dialog-footer">
- <el-button @click="equipmentDialogState.equipmentDialogVisible = !equipmentDialogState.equipmentDialogVisible" size="default">取 消</el-button>
- <el-button type="primary" @click="onSubmitEquipment" size="default">确定</el-button>
- </span>
- </template>
- </el-dialog>
- </div>
-</template>
-
-<script setup lang="ts">
-import { defineProps, reactive, ref } from "vue";
-import {useMenuApi} from "/@/api/systemManage/menu";
-import {ElMessage} from "element-plus";
-import {equipmentApi} from "/@/api/basic/equipement";
-
-const EquipmentFormRef = ref()
-
-const equipmentDialogState = reactive<EquipmentDialogType>({
- title: '',
- equipmentDialogVisible: false,
- equipmentForm: {
- id: null,
- deviceCode: '',
- deviceName: '',
- devicePower: '',
- deviceUnit: null,
- specialDevice: null,
- safeProtect: '',
- deviceTypeId: null,
- deviceDesc: '',
- deviceStatus: null,
- buyTime: '',
- adjustTime: ''
- },
- equipmentFormRules: {
- deviceCode: [{ required: true, message: '请填写设备编号', trigger: 'blur' }],
- deviceName: [{ required: true, message: '请填写设备名称', trigger: 'blur' }],
- devicePower: [{ required: true, message: '请填写额定功率', trigger: 'blur' }],
- deviceUnit: [{ required: true, message: '请选择计量单位', trigger: 'change' }],
- deviceTypeId: [{ required: true, message: '请填写设备类型ID', trigger: 'blur' }],
- deviceDesc: [{ required: true, message: '请填写设备型号', trigger: 'blur' }],
- deviceStatus: [{ required: true, message: '请选择设备状态', trigger: 'blur' }],
- buyTime: [{ required: true, message: '请选择购入时间', trigger: 'blur' }],
- adjustTime: [{ required: true, message: '请选择校准时间', trigger: 'blur' }]
- },
- specialDeviceList: [],
- deviceUnitList: [
- {id:1, name: '台'},
- {id:2, name: '个'},
- {id:3, name: '件'}
- ]
-})
-
-const showEquipmentDialog = (title: string, value: EquipmentType, specialDeviceList: Type []) => {
-
- equipmentDialogState.equipmentDialogVisible = true;
- equipmentDialogState.specialDeviceList = specialDeviceList;
- setTimeout(() => {
- EquipmentFormRef.value.clearValidate();
- });
- if(title === '新增'){
- equipmentDialogState.title = '新增';
- equipmentDialogState.equipmentForm = {
- deviceCode: '',
- deviceName: '',
- devicePower: '',
- deviceUnit: null,
- specialDevice: null,
- safeProtect: '',
- deviceTypeId: null,
- deviceDesc: '',
- deviceStatus: null,
- buyTime: '',
- adjustTime: ''
- };
- }else{
- equipmentDialogState.title = '编辑'
- equipmentDialogState.equipmentForm = {
- id: value.id,
- deviceCode: value.deviceCode,
- deviceName: value.deviceName,
- devicePower: value.devicePower,
- deviceUnit: value.deviceUnit,
- specialDevice: value.specialDevice,
- safeProtect: value.safeProtect,
- deviceTypeId:value.deviceTypeId,
- deviceDesc: value.deviceDesc,
- deviceStatus: value.deviceStatus,
- buyTime: value.buyTime,
- adjustTime: value.adjustTime
- };
- }
-};
-
-const onSubmitEquipment = () => {
- EquipmentFormRef.value.validate(async(valid: boolean) => {
- if(valid){
- if(equipmentDialogState.title === '新增'){
- let res = await equipmentApi().addEquipment(equipmentDialogState.equipmentForm);
- if(res.data.code === 100){
- emit('refresh')
- equipmentDialogState.equipmentDialogVisible = false;
- ElMessage({
- type: 'success',
- message: '新增成功'
- })
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg,
- });
- }
- }else{
- console.log(equipmentDialogState.equipmentForm,'修改')
- let res = await equipmentApi().modEquipment(equipmentDialogState.equipmentForm)
- if(res.data.code === 100){
- emit('refresh')
- equipmentDialogState.equipmentDialogVisible = false;
- ElMessage({
- type: 'success',
- message: '编辑成功'
- })
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg,
- });
- }
- }
- }else{
- ElMessage({
- type: 'warning',
- message: '请完善基本信息',
- });
- }
- })
-}
-
-const emit = defineEmits(['refresh'])
-
-defineProps({
- equipmentTypeList: Array
-})
-
-defineExpose({
- showEquipmentDialog
-})
-</script>
-
-<style scoped>
-
-</style>
diff --git a/src/views/basic/equipment/index.ts b/src/views/basic/equipment/index.ts
deleted file mode 100644
index c708fa3..0000000
--- a/src/views/basic/equipment/index.ts
+++ /dev/null
@@ -1,62 +0,0 @@
-declare interface EquipmentStateType {
- equipmentData: Array<EquipmentType>
- equipmentTypeList: Array<deviceType>
- searchQuery: {
- pageIndex: number,
- pageSize: number,
- deviceCode: string,
- deviceName: string,
- devicePower: string,
- specialDevice: number | null,
- }
- total: number
- specialDeviceList: Array<Type>,
- deviceUnitList: Array<Type>
-}
-
-declare interface EquipmentType {
- id: number | null,
- deviceCode: string,
- deviceName: string,
- devicePower: string,
- deviceUnit: number | null,
- specialDevice: number | null,
- safeProtect: string,
- deviceTypeId: number | null,
- deviceDesc: string,
- deviceStatus: number | null,
- buyTime: string,
- adjustTime: string
-}
-
-declare interface Type {
- id: number,
- name: string,
-}
-declare interface deviceType {
- id: number,
- deviceType: string,
-}
-declare interface EquipmentDialogType {
- title: string,
- equipmentDialogVisible: boolean,
- equipmentForm: {
- id?: number | null,
- deviceCode: string,
- deviceName: string,
- devicePower: string,
- deviceUnit: number | null,
- specialDevice: number | null,
- safeProtect: string,
- deviceTypeId: number | null,
- deviceDesc: string,
- deviceStatus: number | null,
- buyTime: string,
- adjustTime: string
- },
- equipmentFormRules: {
-
- },
- specialDeviceList: Array<Type>,
- deviceUnitList: Array<Type>
-}
diff --git a/src/views/basic/equipment/index.vue b/src/views/basic/equipment/index.vue
deleted file mode 100644
index 153359c..0000000
--- a/src/views/basic/equipment/index.vue
+++ /dev/null
@@ -1,345 +0,0 @@
-<template>
- <div class="home-container">
- <div style="height: 100%">
- <el-row class="homeCard">
- <div class="basic-line">
- <span>设备编码:</span>
- <el-input v-model="equipmentState.searchQuery.deviceCode" clearable filterable class="input-box" placeholder="设备编码">
- </el-input>
- </div>
- <div class="basic-line">
- <span>设备名称:</span>
- <el-input v-model="equipmentState.searchQuery.deviceName" clearable filterable class="input-box" placeholder="设备名称">
- </el-input>
- </div>
- <div class="basic-line">
- <span>额定功率:</span>
- <el-input v-model="equipmentState.searchQuery.devicePower" clearable filterable class="input-box" placeholder="额定功率">
- </el-input>
- </div>
- <div class="basic-line">
- <span>是否特种设备:</span>
- <el-select v-model="equipmentState.searchQuery.specialDevice" clearable filterable class="input-box" placeholder="是否特种设备">
- <el-option v-for="item in equipmentState.specialDeviceList" :key="item.id" :label="item.name" :value="item.id"></el-option>
- </el-select>
- </div>
- <div style="padding-bottom: 10px">
- <el-button type="primary" @click="getEquipmentData">查询</el-button>
- <el-button plain @click="reset">重置</el-button>
- </div>
- </el-row>
- <div class="homeCard">
- <div class="main-card">
- <el-row class="cardTop">
- <el-col :span="12" class="mainCardBtn">
- <el-button type="primary" :icon="Plus" size="default" @click="openEquipmentDialog('新增', {})">新增</el-button>
- <!-- <el-button type="danger" :icon="Delete" size="default" plain>删除</el-button>-->
- </el-col>
-<!-- <el-button type="primary" :icon="Refresh" size="default" />-->
- </el-row>
- <el-table ref="multipleTableRef" :data="equipmentState.equipmentData" style="width: 100%" height="calc(100% - 100px)" :header-cell-style="{ background: '#fafafa' }">
- <el-table-column prop="deviceCode" label="设备编号"/>
- <el-table-column prop="deviceName" label="设备名称" />
- <el-table-column prop="deviceTypeId" label="设备类型" show-overflow-tooltip>
- <template #default="scope">
- <span>{{equipmentState.equipmentTypeList.find(item =>item.id === scope.row.deviceTypeId)?.deviceType}}</span>
- </template>
- </el-table-column>
- <el-table-column prop="deviceDesc" label="设备型号" />
- <el-table-column prop="devicePower" label="额定功率">
- <template #default="scope">
- <span>{{scope.row.devicePower}}</span>
- </template>
- </el-table-column>
- <el-table-column prop="deviceStatus" label="设备状态">
- <template #default="scope">
- <span>{{scope.row.deviceStatus == 1?'完好':'异常'}}</span>
- </template>
- </el-table-column>
- <el-table-column prop="deviceUnit" label="计量单位" show-overflow-tooltip>
- <template #default="scope">
- <span>{{`${equipmentState.deviceUnitList.find(item =>item.id === scope.row.deviceUnit)?.name}`}}</span>
- </template>
- </el-table-column>
- <el-table-column prop="specialDevice" label="是否特殊装备" show-overflow-tooltip>
- <template #default="scope">
- <span>{{`${equipmentState.specialDeviceList.find(item =>item.id === scope.row.specialDevice)?.name}`}}</span>
- </template>
- </el-table-column>
- <el-table-column prop="safeProtect" 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 prop="updateTime" label="最后修改时间" show-overflow-tooltip></el-table-column>
- <el-table-column prop="updateByUserName" label="最后修改人" show-overflow-tooltip></el-table-column>
- <el-table-column label="操作" width="150">
- <template #default="scope">
- <el-button size="small" text type="primary" :icon="Edit" @click="openEquipmentDialog('修改', scope.row)">编辑</el-button>
- <el-button size="small" text type="danger" :icon="Delete" @click="onDelEquipment(scope.row)">删除</el-button>
- </template>
- </el-table-column>
- </el-table>
- <div class="pageBtn">
- <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" :pager-count="5" :page-sizes="[10, 20, 30]" v-model:current-page="equipmentState.searchQuery.pageIndex" background v-model:page-size="equipmentState.searchQuery.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="equipmentState.total" class="page-position"> </el-pagination>
- </div>
- </div>
- </div>
- </div>
- <equipment-dialog ref="equipmentDialogRef" @refresh="getEquipmentData" :equipmentTypeList="equipmentState.equipmentTypeList"></equipment-dialog>
- </div>
-</template>
-
-<script setup lang="ts">
-import {defineAsyncComponent, onMounted, reactive, ref} from "vue";
-import {equipmentApi} from "/@/api/basic/equipement";
-import {ElMessage, ElMessageBox} from "element-plus";
-import { Edit, View, Plus, Delete } from '@element-plus/icons-vue';
-
-const EquipmentDialog = defineAsyncComponent(() => import('./components/equipmentDialog.vue'));
-
-const equipmentDialogRef = ref();
-
-const equipmentState = reactive<EquipmentStateType>({
- equipmentData: [],
- equipmentTypeList: [],
- searchQuery: {
- pageIndex: 1,
- pageSize: 10,
- deviceCode: '',
- deviceName: '',
- devicePower: '',
- specialDevice: null,
- },
- total: 0,
- specialDeviceList: [
- {id: 1, name: '是'},
- {id:2, name: '否'}
- ],
- deviceUnitList: [
- {id:1, name: '台'},
- {id:2, name: '个'},
- {id:3, name: '件'}
- ]
-})
-
-const getAllType = async ()=>{
- const res = await equipmentApi().getAllType();
- if(res.data.code === 100){
- equipmentState.equipmentTypeList = res.data.data
- }
-}
-
-const getEquipmentData = async () => {
- let res = await equipmentApi().getEquipmentByList(equipmentState.searchQuery);
- if(res.data.code === 100){
- equipmentState.equipmentData = res.data.data;
- equipmentState.total = res.data.total
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- });
- }
-};
-
-const openEquipmentDialog = (title: string, value: EquipmentType) => {
- equipmentDialogRef.value.showEquipmentDialog(title, value, equipmentState.specialDeviceList);
-};
-
-const onDelEquipment = (val: EquipmentType) => {
- ElMessageBox.confirm(`此操作将永久删除该设备:“${val.deviceName}”,是否继续?`, '提示', {
- confirmButtonText: '确认',
- cancelButtonText: '取消',
- type: 'warning'
- })
- .then(async () => {
- let res = await equipmentApi().deleteEquipmentById({ id: val.id });
- if (res.data.code === 100) {
- ElMessage({
- type: 'success',
- duration: 2000,
- message: '删除成功'
- });
- await getEquipmentData();
- } else {
- ElMessage({
- type: 'warning',
- message: res.data.msg
- });
- }
- })
- .catch((error) => {
- });
-}
-
-const onHandleSizeChange = (val: number) => {
- equipmentState.searchQuery.pageSize = val;
- getEquipmentData();
-};
-
-const onHandleCurrentChange = (val: number) => {
- equipmentState.searchQuery.pageIndex = val;
- getEquipmentData();
-};
-
-const reset = () => {
- equipmentState.searchQuery = {
- pageIndex: 1,
- pageSize: 10,
- deviceCode: '',
- deviceName: '',
- devicePower: '',
- specialDevice: null,
- }
-};
-
-onMounted(() => {
- getEquipmentData()
- getAllType()
-})
-
-</script>
-
-<style scoped lang="scss">
-$homeNavLengh: 8;
-.home-container {
- height: calc(100vh - 144px);
- box-sizing: border-box;
- overflow: hidden;
- .homeCard {
- width: 100%;
- padding: 20px;
- box-sizing: border-box;
- background: #fff;
- border-radius: 4px;
-
- .main-card {
- width: 100%;
- height: 100%;
- .cardTop {
- display: flex;
- align-items: center;
- justify-content: space-between;
- margin-bottom: 20px;
- .mainCardBtn {
- margin: 0;
- }
- }
- .pageBtn {
- height: 60px;
- display: flex;
- align-items: center;
- justify-content: right;
-
- .demo-pagination-block + .demo-pagination-block {
- margin-top: 10px;
- }
- .demo-pagination-block .demonstration {
- margin-bottom: 16px;
- }
- }
- }
- &:last-of-type {
- height: calc(100% - 100px);
- }
- }
- .el-row {
- display: flex;
- align-items: center;
- margin-bottom: 20px;
- &:last-child {
- margin-bottom: 0;
- }
- .grid-content {
- align-items: center;
- min-height: 36px;
- }
-
- .topInfo {
- display: flex;
- align-items: center;
- font-size: 16px;
- font-weight: bold;
-
- & > div {
- white-space: nowrap;
- margin-right: 20px;
- }
- }
- }
-}
-.stepItem {
- width: 100%;
- display: flex;
- align-items: flex-start;
- margin-bottom: 30px;
- margin-left: 30px;
- padding-bottom: 30px;
- border-left: 2px solid #ccc;
- &:first-of-type {
- margin-top: 30px;
- }
- &:last-of-type {
- margin-bottom: 0;
- border-left: none;
- }
- .stepNum {
- width: 30px;
- height: 30px;
- border-radius: 15px;
- box-sizing: border-box;
- color: #333;
- border: 1px solid #999;
- line-height: 28px;
- text-align: center;
- margin-right: 10px;
- margin-left: -16px;
- margin-top: -30px;
- }
- .stepCard {
- width: 100%;
- margin-top: -30px;
-
- .box-card {
- width: 100%;
- &:deep(.el-card__header) {
- padding: 10px 15px;
- }
- .card-header {
- width: 100%;
- display: flex;
- justify-content: space-between;
- align-items: center;
- & > div:first-of-type {
- margin-right: 80px;
- font-size: 18px;
- font-weight: bold;
- }
- }
- }
- }
- &:hover .card-header {
- color: #0098f5;
- }
- &:hover .stepNum {
- border: 2px solid #0098f5;
- color: #0098f5;
- }
-}
-
-:deep(.el-date-editor) {
- width: 100%;
-}
-.el-select {
- width: 100%;
-}
-:deep(.el-textarea.is-disabled .el-textarea__inner) {
- background-color: var(--el-card-bg-color);
- color: var(--el-input-text-color, var(--el-text-color-regular));
-}
-:deep(.el-input.is-disabled .el-input__inner) {
- color: var(--el-input-text-color, var(--el-text-color-regular));
-}
-:deep(.el-input.is-disabled .el-input__wrapper) {
- background-color: var(--el-card-bg-color);
-}
-</style>
diff --git a/src/views/basic/material/components/materialDialog.vue b/src/views/basic/material/components/materialDialog.vue
deleted file mode 100644
index 4410290..0000000
--- a/src/views/basic/material/components/materialDialog.vue
+++ /dev/null
@@ -1,169 +0,0 @@
-<template>
- <div class="system-menu-dialog-container">
- <el-dialog :title="materialDialogState.title" v-model="materialDialogState.materialDialogVisible" :close-on-click-modal="false" width="600px">
- <el-form ref="MaterialFormRef" :rules="materialDialogState.materialFormRules" :model="materialDialogState.materialForm" size="default" label-width="120px">
- <el-row :gutter="35">
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="实验材料" prop="stuffName">
- <el-input v-model="materialDialogState.materialForm.stuffName" 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="stuffCode">
- <el-input v-model="materialDialogState.materialForm.stuffCode" 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="stuffType">
- <el-select v-model="materialDialogState.materialForm.stuffType" placeholder="材料类型" clearable class="input-length">
- <el-option v-for="item in materialDialogState.stuffTypeList" :key="item.id" :label="item.name" :value="item.id"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="材料储存" prop="stuffStorage">
- <el-select v-model="materialDialogState.materialForm.stuffStorage" placeholder="材料储存" clearable class="input-length">
- <el-option v-for="item in materialDialogState.stuffStorageList" :key="item.id" :label="item.name" :value="item.id"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="计量单位" prop="stuffUnit">
- <el-select v-model="materialDialogState.materialForm.stuffUnit" placeholder="计量单位" clearable class="input-length">
- <el-option v-for="item in materialDialogState.stuffUnitList" :key="item.id" :label="item.name" :value="item.id"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- </el-row>
- </el-form>
- <template #footer>
- <span class="dialog-footer">
- <el-button @click="materialDialogState.materialDialogVisible = !materialDialogState.materialDialogVisible" size="default">取 消</el-button>
- <el-button type="primary" @click="onSubmitMaterial" size="default">确定</el-button>
- </span>
- </template>
- </el-dialog>
- </div>
-</template>
-
-<script setup lang="ts">
-import { reactive, ref } from "vue";
-import {useMenuApi} from "/@/api/systemManage/menu";
-import {ElMessage} from "element-plus";
-import {materialApi} from "/@/api/basic/material";
-
-const MaterialFormRef = ref()
-
-const materialDialogState = reactive<MaterialDialogType>({
- title: '',
- materialDialogVisible: false,
- materialForm: {
- stuffCode: '',
- stuffName: '',
- stuffStorage: null,
- stuffType: null,
- stuffUnit: null,
- },
- materialFormRules: {
- stuffCode: [{ required: true, message: '请填写实验材料', trigger: 'blur' }],
- stuffName: [{ required: true, message: '请填写编号', trigger: 'blur' }],
- stuffStorage: [{ required: true, message: '请选择材料类型', trigger: 'change' }],
- stuffType: [{ required: true, message: '请选择材料储存', trigger: 'change' }],
- stuffUnit: [{ required: true, message: '请选择计量单位', trigger: 'change' }]
- },
- stuffTypeList: [
- {id: 1, name: '化学试剂'},
- {id:2, name: '基础材料'}
- ],
- stuffStorageList: [
- {id:1, name: '智能试剂柜'},
- {id:2, name: '普通储存柜'},
- ],
- stuffUnitList: [
- {id:1, name: 'g'},
- {id:2, name: 'kg'},
- {id:3, name: 'ml'},
- {id:4, name: 'l'},
- ]
-})
-
-const showMaterialDialog = (title: string, value: MaterialType) => {
- materialDialogState.materialDialogVisible = true;
- setTimeout(() => {
- MaterialFormRef.value.clearValidate();
- });
- if(title === '新增'){
- materialDialogState.title = '新增';
- materialDialogState.materialForm = {
- stuffName: '',
- stuffCode: '',
- stuffType: null,
- stuffStorage: null,
- stuffUnit: null,
- };
- }else{
- materialDialogState.title = '编辑'
- materialDialogState.materialForm = {
- id: value.id,
- stuffName: value.stuffName,
- stuffCode: value.stuffCode,
- stuffType: value.stuffType,
- stuffStorage: value.stuffStorage,
- stuffUnit: value.stuffUnit,
- };
- }
-};
-
-const onSubmitMaterial = () => {
- MaterialFormRef.value.validate(async(valid: boolean) => {
- if(valid){
- if(materialDialogState.title === '新增'){
- let res = await materialApi().addMaterial(materialDialogState.materialForm);
- if(res.data.code === 100){
- emit('refresh')
- materialDialogState.materialDialogVisible = false;
- ElMessage({
- type: 'success',
- message: '新增成功'
- })
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg,
- });
- }
- }else{
- let res = await materialApi().modMaterial(materialDialogState.materialForm)
- if(res.data.code === 100){
- emit('refresh')
- materialDialogState.materialDialogVisible = false;
- ElMessage({
- type: 'success',
- message: '编辑成功'
- })
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg,
- });
- }
- }
- }else{
- ElMessage({
- type: 'warning',
- message: '请完善基本信息',
- });
- }
- })
-}
-
-const emit = defineEmits(['refresh'])
-
-defineExpose({
- showMaterialDialog
-})
-</script>
-
-<style scoped>
-
-</style>
diff --git a/src/views/basic/material/index.ts b/src/views/basic/material/index.ts
deleted file mode 100644
index 8be5c9a..0000000
--- a/src/views/basic/material/index.ts
+++ /dev/null
@@ -1,48 +0,0 @@
-declare interface MaterialStateType{
- materialData: Array<MaterialType>
- searchQuery: {
- pageIndex: number,
- pageSize: number,
- stuffName: string,
- stuffCode: string,
- stuffType: number | null,
- }
- total: number,
- stuffTypeList: Array<Type>,
- stuffStorageList: Array<Type>,
- stuffUnitList: Array<Type>
-}
-
-
-declare interface MaterialType {
- id?: number | null,
- stuffName: string,
- stuffCode: string,
- stuffType: number | null,
- stuffStorage: number | null,
- stuffUnit: number | null,
-}
-
-declare interface Type {
- id: number,
- name: string,
-}
-
-declare interface MaterialDialogType {
- title: string,
- materialDialogVisible: boolean,
- materialForm: {
- id?: number | null,
- stuffName: string,
- stuffCode: string,
- stuffType: number | null,
- stuffStorage: number | null,
- stuffUnit: number | null,
- },
- materialFormRules: {
-
- },
- stuffTypeList: Array<Type>,
- stuffStorageList: Array<Type>,
- stuffUnitList: Array<Type>
-}
diff --git a/src/views/basic/material/index.vue b/src/views/basic/material/index.vue
deleted file mode 100644
index 7bde878..0000000
--- a/src/views/basic/material/index.vue
+++ /dev/null
@@ -1,322 +0,0 @@
-<template>
- <div class="home-container">
- <div style="height: 100%">
- <el-row class="homeCard">
- <div class="basic-line">
- <span>实验材料:</span>
- <el-input v-model="materialState.searchQuery.stuffName" clearable filterable class="input-box" placeholder="实验材料">
- </el-input>
- </div>
- <div class="basic-line">
- <span>耗材编号:</span>
- <el-input v-model="materialState.searchQuery.stuffCode" clearable filterable class="input-box" placeholder="耗材编号">
- </el-input>
- </div>
- <div class="basic-line">
- <span>材料类型:</span>
- <el-select v-model="materialState.searchQuery.stuffType" clearable filterable class="input-box" placeholder="材料类型">
- <el-option v-for="item in materialState.stuffTypeList" :key="item.id" :label="item.name" :value="item.id"></el-option>
- </el-select>
- </div>
- <div style="padding-bottom: 10px">
- <el-button type="primary" @click="getMaterialData">查询</el-button>
- <el-button plain @click="reset">重置</el-button>
- </div>
- </el-row>
- <div class="homeCard">
- <div class="main-card">
- <el-row class="cardTop">
- <el-col :span="12" class="mainCardBtn">
- <el-button type="primary" :icon="Plus" size="default" @click="openMaterialDialog('新增', {})">新增</el-button>
- <!-- <el-button type="danger" :icon="Delete" size="default" plain>删除</el-button>-->
- </el-col>
-<!-- <el-button type="primary" :icon="Refresh" size="default" />-->
- </el-row>
- <el-table ref="multipleTableRef" :data="materialState.materialData" style="width: 100%" height="calc(100% - 100px)" :header-cell-style="{ background: '#fafafa' }">
- <el-table-column prop="stuffName" label="实验材料"/>
- <el-table-column prop="stuffCode" label="编号" />
- <el-table-column prop="stuffType" label="材料类型">
- <template #default="scope">
- <span>{{`${materialState.stuffTypeList.find(item =>item.id === scope.row.stuffType)?.name || ''}`}}</span>
- </template>
- </el-table-column>
- <el-table-column prop="stuffStorage" label="材料储存" show-overflow-tooltip>
- <template #default="scope">
- <span>{{`${materialState.stuffStorageList.find(item =>item.id === scope.row.stuffStorage)?.name || ''}`}}</span>
- </template>
- </el-table-column>
- <el-table-column prop="stuffUnit" label="计量单位" show-overflow-tooltip>
- <template #default="scope">
- <span>{{`${materialState.stuffUnitList.find(item =>item.id === scope.row.stuffUnit)?.name || ''}`}}</span>
- </template>
- </el-table-column>
- <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 prop="updateTime" label="最后修改时间" show-overflow-tooltip></el-table-column>
- <el-table-column prop="updateByUserName" label="最后修改人" show-overflow-tooltip></el-table-column>
- <el-table-column label="操作" width="150">
- <template #default="scope">
- <el-button size="small" text type="primary" :icon="Edit" @click="openMaterialDialog('修改', scope.row)">编辑</el-button>
- <el-button size="small" text type="danger" :icon="Delete" @click="onDelMaterial(scope.row)">删除</el-button>
- </template>
- </el-table-column>
- </el-table>
- <div class="pageBtn">
- <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" :pager-count="5" :page-sizes="[10, 20, 30]" v-model:current-page="materialState.searchQuery.pageIndex" background v-model:page-size="materialState.searchQuery.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="materialState.total" class="page-position"> </el-pagination>
- </div>
- </div>
- </div>
- </div>
- <material-dialog ref="materialDialogRef" @refresh="getMaterialData"></material-dialog>
- </div>
-</template>
-
-<script setup lang="ts">
-import {defineAsyncComponent, onMounted, reactive, ref} from "vue";
-import { materialApi } from "/@/api/basic/material";
-import {ElMessage, ElMessageBox} from "element-plus";
-import { Edit, View, Plus, Delete } from '@element-plus/icons-vue';
-
-const MaterialDialog = defineAsyncComponent(() => import('./components/materialDialog.vue'));
-
-const materialDialogRef = ref();
-
-const materialState = reactive<MaterialStateType>({
- materialData: [],
- searchQuery: {
- pageIndex: 1,
- pageSize: 10,
- stuffName: '',
- stuffCode: '',
- stuffType: null,
- },
- total: 0,
- stuffTypeList: [
- {id: 1, name: '化学试剂'},
- {id:2, name: '基础材料'}
- ],
- stuffStorageList: [
- {id:1, name: '智能试剂柜'},
- {id:2, name: '普通储存柜'},
- ],
- stuffUnitList: [
- {id:1, name: 'g'},
- {id:2, name: 'kg'},
- {id:3, name: 'ml'},
- {id:4, name: 'l'},
- ]
-})
-
-const getMaterialData = async () => {
- let res = await materialApi().getMaterialByList(materialState.searchQuery);
- if(res.data.code === 100){
- materialState.materialData = res.data.data;
- materialState.total = res.data.total;
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- });
- }
-};
-
-const openMaterialDialog = (title: string, value: MaterialType) => {
- materialDialogRef.value.showMaterialDialog(title, value);
-};
-
-const onDelMaterial = (val: MaterialType) => {
- ElMessageBox.confirm(`此操作将永久删除该耗材:“${val.stuffName}”,是否继续?`, '提示', {
- confirmButtonText: '确认',
- cancelButtonText: '取消',
- type: 'warning'
- })
- .then(async () => {
- let res = await materialApi().deleteMaterialById({ id: val.id });
- if (res.data.code === 100) {
- ElMessage({
- type: 'success',
- duration: 2000,
- message: '删除成功'
- });
- await getMaterialData();
- } else {
- ElMessage({
- type: 'warning',
- message: res.data.msg
- });
- }
- })
- .catch((error) => {
- });
-}
-
-const onHandleSizeChange = (val: number) => {
- materialState.searchQuery.pageSize = val;
- getMaterialData();
-};
-
-const onHandleCurrentChange = (val: number) => {
- materialState.searchQuery.pageIndex = val;
- getMaterialData();
-};
-
-const reset = () => {
- materialState.searchQuery = {
- pageIndex: 1,
- pageSize: 10,
- stuffName: '',
- stuffCode: '',
- stuffType: null,
- }
-};
-
-onMounted(() => {
- getMaterialData()
-})
-
-</script>
-
-<style scoped lang="scss">
-$homeNavLengh: 8;
-.home-container {
- height: calc(100vh - 144px);
- box-sizing: border-box;
- overflow: hidden;
- .homeCard {
- width: 100%;
- padding: 20px;
- box-sizing: border-box;
- background: #fff;
- border-radius: 4px;
-
- .main-card {
- width: 100%;
- height: 100%;
- .cardTop {
- display: flex;
- align-items: center;
- justify-content: space-between;
- margin-bottom: 20px;
- .mainCardBtn {
- margin: 0;
- }
- }
- .pageBtn {
- height: 60px;
- display: flex;
- align-items: center;
- justify-content: right;
-
- .demo-pagination-block + .demo-pagination-block {
- margin-top: 10px;
- }
- .demo-pagination-block .demonstration {
- margin-bottom: 16px;
- }
- }
- }
- &:last-of-type {
- height: calc(100% - 100px);
- }
- }
- .el-row {
- display: flex;
- align-items: center;
- margin-bottom: 20px;
- &:last-child {
- margin-bottom: 0;
- }
- .grid-content {
- align-items: center;
- min-height: 36px;
- }
-
- .topInfo {
- display: flex;
- align-items: center;
- font-size: 16px;
- font-weight: bold;
-
- & > div {
- white-space: nowrap;
- margin-right: 20px;
- }
- }
- }
-}
-.stepItem {
- width: 100%;
- display: flex;
- align-items: flex-start;
- margin-bottom: 30px;
- margin-left: 30px;
- padding-bottom: 30px;
- border-left: 2px solid #ccc;
- &:first-of-type {
- margin-top: 30px;
- }
- &:last-of-type {
- margin-bottom: 0;
- border-left: none;
- }
- .stepNum {
- width: 30px;
- height: 30px;
- border-radius: 15px;
- box-sizing: border-box;
- color: #333;
- border: 1px solid #999;
- line-height: 28px;
- text-align: center;
- margin-right: 10px;
- margin-left: -16px;
- margin-top: -30px;
- }
- .stepCard {
- width: 100%;
- margin-top: -30px;
-
- .box-card {
- width: 100%;
- &:deep(.el-card__header) {
- padding: 10px 15px;
- }
- .card-header {
- width: 100%;
- display: flex;
- justify-content: space-between;
- align-items: center;
- & > div:first-of-type {
- margin-right: 80px;
- font-size: 18px;
- font-weight: bold;
- }
- }
- }
- }
- &:hover .card-header {
- color: #0098f5;
- }
- &:hover .stepNum {
- border: 2px solid #0098f5;
- color: #0098f5;
- }
-}
-
-:deep(.el-date-editor) {
- width: 100%;
-}
-.el-select {
- width: 100%;
-}
-:deep(.el-textarea.is-disabled .el-textarea__inner) {
- background-color: var(--el-card-bg-color);
- color: var(--el-input-text-color, var(--el-text-color-regular));
-}
-:deep(.el-input.is-disabled .el-input__inner) {
- color: var(--el-input-text-color, var(--el-text-color-regular));
-}
-:deep(.el-input.is-disabled .el-input__wrapper) {
- background-color: var(--el-card-bg-color);
-}
-</style>
diff --git a/src/views/basic/person/components/personDialog.vue b/src/views/basic/person/components/personDialog.vue
deleted file mode 100644
index 6817302..0000000
--- a/src/views/basic/person/components/personDialog.vue
+++ /dev/null
@@ -1,197 +0,0 @@
-<template>
- <div class="system-menu-dialog-container">
- <el-dialog :title="personDialogState.title" v-model="personDialogState.personDialogVisible" :close-on-click-modal="false" width="600px">
- <el-form ref="PersonFormRef" :rules="personDialogState.personFormRules" :model="personDialogState.personForm" size="default" label-width="120px">
- <el-row :gutter="35">
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="人员名称" prop="personName">
- <el-input v-model="personDialogState.personForm.personName" 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="personAge">
- <el-input @input="onVerifiyNumberInteger($event, 'age')" v-model="personDialogState.personForm.personAge" 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="personGender">
- <el-select v-model="personDialogState.personForm.personGender" placeholder="人员性别" clearable class="input-length">
- <el-option v-for="item in personDialogState.personGenderList" :key="item.id" :label="item.name" :value="item.id"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="专业" prop="personMajor">
- <el-input v-model="personDialogState.personForm.personMajor" 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="depName">
- <el-input v-model="personDialogState.personForm.depName" 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="phone">
- <el-input @input="onVerifiyNumberInteger($event, 'phone')" v-model="personDialogState.personForm.phone" 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="aptitude">
- <el-input v-model="personDialogState.personForm.aptitude" 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="training">
- <el-select v-model="personDialogState.personForm.training" placeholder="培训情况" clearable class="input-length">
- <el-option v-for="item in personDialogState.trainingList" :key="item.id" :label="item.name" :value="item.id"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- </el-row>
- </el-form>
- <template #footer>
- <span class="dialog-footer">
- <el-button @click="personDialogState.personDialogVisible = !personDialogState.personDialogVisible" size="default">取 消</el-button>
- <el-button type="primary" @click="onSubmitPerson" size="default">确定</el-button>
- </span>
- </template>
- </el-dialog>
- </div>
-</template>
-
-<script setup lang="ts">
-import { reactive, ref } from "vue";
-import {useMenuApi} from "/@/api/systemManage/menu";
-import {ElMessage} from "element-plus";
-import {personApi} from "/@/api/basic/person";
-import { verifiyNumberInteger } from '../../../../utils/toolsValidate'
-
-const PersonFormRef = ref()
-
-const personDialogState = reactive<PersonDialogType>({
- title: '',
- personDialogVisible: false,
- personForm: {
- personName: '',
- personAge: null,
- personGender: null,
- personMajor: '',
- depName: '',
- phone: null,
- aptitude: '',
- training: null,
- },
- personFormRules: {
- personName: [{ required: true, message: '请填写人员名称', trigger: 'blur' }],
- personMajor: [{ required: true, message: '请填写专业', trigger: 'blur' }],
- aptitude: [{ required: true, message: '请填写相关资质', trigger: 'blur' }],
- personAge: [{ required: true, message: '请填写人员年龄', trigger: 'blur' }],
- personGender: [{ required: true, message: '请选择人员性别', trigger: 'change' }],
- phone: [{ required: true, message: '请填写手机号', trigger: 'blur' }],
- training: [{ required: true, message: '请选择培训情况', trigger: 'change' }]
- },
- personGenderList: [
- {id:1, name: '男'},
- {id:2, name: '女'},
- ],
- trainingList: [
- {id:1, name: '已完成当期安全培训'},
- {id:2, name: '未完成当期安全培训'},
- ]
-})
-
-const showPersonDialog = (title: string, value: PersonType,) => {
-
- personDialogState.personDialogVisible = true;
- setTimeout(() => {
- PersonFormRef.value.clearValidate();
- });
- if(title === '新增'){
- personDialogState.title = '新增';
- personDialogState.personForm = {
- personName: '',
- personAge: null,
- personGender: null,
- personMajor: '',
- depName: '',
- phone: null,
- aptitude: '',
- training: null,
- };
- }else{
- personDialogState.title = '编辑'
- personDialogState.personForm = {
- id: value.id,
- personName: value.personName,
- personAge: value.personAge,
- personGender: value.personGender,
- personMajor: value.personMajor,
- depName: value.depName,
- phone: value.phone,
- aptitude: value.aptitude,
- training: value.training,
- };
- }
-};
-
-const onSubmitPerson = () => {
- PersonFormRef.value.validate(async(valid: boolean) => {
- if(valid){
- if(personDialogState.title === '新增'){
- let res = await personApi().addPerson(personDialogState.personForm);
- if(res.data.code === 100){
- emit('refresh')
- personDialogState.personDialogVisible = false;
- ElMessage({
- type: 'success',
- message: '新增成功'
- })
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg,
- });
- }
- }else{
- let res = await personApi().modPerson(personDialogState.personForm)
- if(res.data.code === 100){
- emit('refresh')
- personDialogState.personDialogVisible = false;
- ElMessage({
- type: 'success',
- message: '编辑成功'
- })
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg,
- });
- }
- }
- }else{
- ElMessage({
- type: 'warning',
- message: '请完善基本信息',
- });
- }
- })
-};
-
-const onVerifiyNumberInteger = (val: number, title: string) => {
- if (title === 'age') {
- personDialogState.personForm.personAge = Number(verifiyNumberInteger(val.toString())) === 0 ? null : Number(verifiyNumberInteger(val.toString()));
- } else if (title === 'phone') {
- personDialogState.personForm.phone = Number(verifiyNumberInteger(val.toString())) === 0 ? null : Number(verifiyNumberInteger(val.toString()));
- }
-};
-
-const emit = defineEmits(['refresh']);
-
-defineExpose({
- showPersonDialog
-});
-</script>
-
-<style scoped>
-
-</style>
diff --git a/src/views/basic/person/index.ts b/src/views/basic/person/index.ts
deleted file mode 100644
index c1de227..0000000
--- a/src/views/basic/person/index.ts
+++ /dev/null
@@ -1,52 +0,0 @@
-declare interface PersonStateType extends PublicType{
- personData: Array<PersonType>
- searchQuery: {
- pageIndex: number,
- pageSize: number,
- personName: string,
- training: number | null,
- depName: string,
- }
- total: number
-}
-
-declare interface PersonType {
- id?: number | null,
- personName: string,
- personAge: number | null,
- personGender: number | null,
- personMajor: string,
- depName: string,
- phone: number | null,
- aptitude: string,
- training: number | null,
-}
-
-declare interface PublicType {
- personGenderList: Array<Type>,
- trainingList: Array<Type>
-}
-
-declare interface Type {
- id: number,
- name: string,
-}
-
-declare interface PersonDialogType extends PublicType{
- title: string,
- personDialogVisible: boolean,
- personForm: {
- id?: number | null,
- personName: string,
- personAge: number | null,
- personGender: number | null,
- personMajor: string,
- depName: string,
- phone: number | null,
- aptitude: string,
- training: number | null,
- },
- personFormRules: {
-
- },
-}
diff --git a/src/views/basic/person/index.vue b/src/views/basic/person/index.vue
deleted file mode 100644
index 479ebb6..0000000
--- a/src/views/basic/person/index.vue
+++ /dev/null
@@ -1,315 +0,0 @@
-<template>
- <div class="home-container">
- <div style="height: 100%">
- <el-row class="homeCard">
- <div class="basic-line">
- <span>人员名称:</span>
- <el-input v-model="personState.searchQuery.personName" clearable filterable class="input-box" placeholder="人员名称">
- </el-input>
- </div>
- <div class="basic-line">
- <span>部门名称:</span>
- <el-input v-model="personState.searchQuery.depName" clearable filterable class="input-box" placeholder="部门名称">
- </el-input>
- </div>
- <div class="basic-line">
- <span>培训情况:</span>
- <el-select v-model="personState.searchQuery.training" clearable filterable class="input-box" placeholder="培训情况">
- <el-option v-for="item in personState.trainingList" :key="item.id" :label="item.name" :value="item.id"></el-option>
- </el-select>
- </div>
- <div style="padding-bottom: 10px">
- <el-button type="primary" @click="getPersonData">查询</el-button>
- <el-button plain @click="reset">重置</el-button>
- </div>
- </el-row>
- <div class="homeCard">
- <div class="main-card">
- <el-row class="cardTop">
- <el-col :span="12" class="mainCardBtn">
- <el-button type="primary" :icon="Plus" size="default" @click="openPersonDialog('新增', {})">新增</el-button>
- <!-- <el-button type="danger" :icon="Delete" size="default" plain>删除</el-button>-->
- </el-col>
-<!-- <el-button type="primary" :icon="Refresh" size="default" />-->
- </el-row>
- <el-table ref="multipleTableRef" :data="personState.personData" style="width: 100%" height="calc(100% - 100px)" :header-cell-style="{ background: '#fafafa' }">
- <el-table-column prop="personName" label="人员名称"/>
- <el-table-column prop="personAge" label="年龄" />
- <el-table-column prop="personGender" label="性别">
- <template #default="scope">
- <span>{{`${personState.personGenderList.find(item =>item.id === scope.row.personGender)?.name || ''}`}}</span>
- </template>
- </el-table-column>
- <el-table-column prop="personMajor" label="专业" show-overflow-tooltip/>
- <el-table-column prop="depName" label="部门名称" show-overflow-tooltip/>
- <el-table-column prop="phone" label="手机号" show-overflow-tooltip/>
- <el-table-column prop="aptitude" label="相关资质" show-overflow-tooltip/>
- <el-table-column prop="training" label="培训情况" show-overflow-tooltip>
- <template #default="scope">
- <span>{{`${personState.trainingList.find(item =>item.id === scope.row.training)?.name || ''}`}}</span>
- </template>
- </el-table-column>
- <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 prop="updateTime" label="最后修改时间" show-overflow-tooltip></el-table-column>
- <el-table-column prop="updateByUserName" label="最后修改人" show-overflow-tooltip></el-table-column>
- <el-table-column label="操作" width="150">
- <template #default="scope">
- <el-button size="small" text type="primary" :icon="Edit" @click="openPersonDialog('修改', scope.row)">编辑</el-button>
- <el-button size="small" text type="danger" :icon="Delete" @click="onDelPerson(scope.row)">删除</el-button>
- </template>
- </el-table-column>
- </el-table>
- <div class="pageBtn">
- <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" :pager-count="5" :page-sizes="[10, 20, 30]" v-model:current-page="personState.searchQuery.pageIndex" background v-model:page-size="personState.searchQuery.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="personState.total" class="page-position"> </el-pagination>
- </div>
- </div>
- </div>
- </div>
- <person-dialog ref="personDialogRef" @refresh="getPersonData"></person-dialog>
- </div>
-</template>
-
-<script setup lang="ts">
-import {defineAsyncComponent, onMounted, reactive, ref} from "vue";
-import {personApi} from "/@/api/basic/person";
-import {ElMessage, ElMessageBox} from "element-plus";
-import { Edit, View, Plus, Delete } from '@element-plus/icons-vue';
-
-const PersonDialog = defineAsyncComponent(() => import('./components/personDialog.vue'));
-
-const personDialogRef = ref();
-
-const personState = reactive<PersonStateType>({
- personData: [],
- searchQuery: {
- pageIndex: 1,
- pageSize: 10,
- personName: '',
- training: null,
- depName: '',
- },
- total: 0,
- personGenderList: [
- {id:1, name: '男'},
- {id:2, name: '女'},
- ],
- trainingList: [
- {id: 1, name: '已完成当期安全培训'},
- {id:2, name: '未完成当期安全培训'}
- ],
-})
-
-const getPersonData = async () => {
- let res = await personApi().getPersonByList(personState.searchQuery);
- if(res.data.code === 100){
- personState.personData = res.data.data;
- personState.total = res.data.total;
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- });
- }
-};
-
-const openPersonDialog = (title: string, value: PersonType) => {
- personDialogRef.value.showPersonDialog(title, value);
-};
-
-const onDelPerson = (val: PersonType) => {
- ElMessageBox.confirm(`此操作将永久删除该用户:“${val.personName}”,是否继续?`, '提示', {
- confirmButtonText: '确认',
- cancelButtonText: '取消',
- type: 'warning'
- })
- .then(async () => {
- let res = await personApi().deletePersonById({ id: val.id });
- if (res.data.code === 100) {
- ElMessage({
- type: 'success',
- duration: 2000,
- message: '删除成功'
- });
- await getPersonData();
- } else {
- ElMessage({
- type: 'warning',
- message: res.data.msg
- });
- }
- })
- .catch((error) => {
- });
-}
-
-const onHandleSizeChange = (val: number) => {
- personState.searchQuery.pageSize = val;
- getPersonData();
-};
-
-const onHandleCurrentChange = (val: number) => {
- personState.searchQuery.pageIndex = val;
- getPersonData();
-};
-
-const reset = () => {
- personState.searchQuery = {
- pageIndex: 1,
- pageSize: 10,
- personName: '',
- training: null,
- depName: '',
- }
-};
-
-onMounted(() => {
- getPersonData()
-})
-
-</script>
-
-<style scoped lang="scss">
-$homeNavLengh: 8;
-.home-container {
- height: calc(100vh - 144px);
- box-sizing: border-box;
- overflow: hidden;
- .homeCard {
- width: 100%;
- padding: 20px;
- box-sizing: border-box;
- background: #fff;
- border-radius: 4px;
-
- .main-card {
- width: 100%;
- height: 100%;
- .cardTop {
- display: flex;
- align-items: center;
- justify-content: space-between;
- margin-bottom: 20px;
- .mainCardBtn {
- margin: 0;
- }
- }
- .pageBtn {
- height: 60px;
- display: flex;
- align-items: center;
- justify-content: right;
-
- .demo-pagination-block + .demo-pagination-block {
- margin-top: 10px;
- }
- .demo-pagination-block .demonstration {
- margin-bottom: 16px;
- }
- }
- }
- &:last-of-type {
- height: calc(100% - 100px);
- }
- }
- .el-row {
- display: flex;
- align-items: center;
- margin-bottom: 20px;
- &:last-child {
- margin-bottom: 0;
- }
- .grid-content {
- align-items: center;
- min-height: 36px;
- }
-
- .topInfo {
- display: flex;
- align-items: center;
- font-size: 16px;
- font-weight: bold;
-
- & > div {
- white-space: nowrap;
- margin-right: 20px;
- }
- }
- }
-}
-.stepItem {
- width: 100%;
- display: flex;
- align-items: flex-start;
- margin-bottom: 30px;
- margin-left: 30px;
- padding-bottom: 30px;
- border-left: 2px solid #ccc;
- &:first-of-type {
- margin-top: 30px;
- }
- &:last-of-type {
- margin-bottom: 0;
- border-left: none;
- }
- .stepNum {
- width: 30px;
- height: 30px;
- border-radius: 15px;
- box-sizing: border-box;
- color: #333;
- border: 1px solid #999;
- line-height: 28px;
- text-align: center;
- margin-right: 10px;
- margin-left: -16px;
- margin-top: -30px;
- }
- .stepCard {
- width: 100%;
- margin-top: -30px;
-
- .box-card {
- width: 100%;
- &:deep(.el-card__header) {
- padding: 10px 15px;
- }
- .card-header {
- width: 100%;
- display: flex;
- justify-content: space-between;
- align-items: center;
- & > div:first-of-type {
- margin-right: 80px;
- font-size: 18px;
- font-weight: bold;
- }
- }
- }
- }
- &:hover .card-header {
- color: #0098f5;
- }
- &:hover .stepNum {
- border: 2px solid #0098f5;
- color: #0098f5;
- }
-}
-
-:deep(.el-date-editor) {
- width: 100%;
-}
-.el-select {
- width: 100%;
-}
-:deep(.el-textarea.is-disabled .el-textarea__inner) {
- background-color: var(--el-card-bg-color);
- color: var(--el-input-text-color, var(--el-text-color-regular));
-}
-:deep(.el-input.is-disabled .el-input__inner) {
- color: var(--el-input-text-color, var(--el-text-color-regular));
-}
-:deep(.el-input.is-disabled .el-input__wrapper) {
- background-color: var(--el-card-bg-color);
-}
-</style>
diff --git a/src/views/basic/room/components/roomDialog.vue b/src/views/basic/room/components/roomDialog.vue
deleted file mode 100644
index bfa5291..0000000
--- a/src/views/basic/room/components/roomDialog.vue
+++ /dev/null
@@ -1,200 +0,0 @@
-<template>
- <div class="system-menu-dialog-container">
- <el-dialog :title="roomDialogState.title" v-model="roomDialogState.roomDialogVisible" :close-on-click-modal="false" width="600px">
- <el-form ref="roomFormRef" :rules="roomDialogState.roomFormRules" :model="roomDialogState.roomForm" size="default" label-width="120px">
- <el-row :gutter="35">
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="实验室名称" prop="siteName">
- <el-input v-model="roomDialogState.roomForm.siteName" 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="floor">
- <el-input v-model="roomDialogState.roomForm.floor" 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="room">
- <el-input v-model="roomDialogState.roomForm.room" 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="siteLiabilityPersonId">
- <el-select v-model="roomDialogState.roomForm.siteLiabilityPersonId" placeholder="场所责任人" clearable class="input-length">
- <el-option v-for="item in memberList" :key="item.id" :label="item.personName" :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="safeLiabilityPersonId">
- <el-select v-model="roomDialogState.roomForm.safeLiabilityPersonId" placeholder="场所安全员" clearable class="input-length">
- <el-option v-for="item in memberList" :key="item.id" :label="item.personName" :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="fireFacilities">
- <el-select v-model="roomDialogState.roomForm.fireFacilities" placeholder="有无消防设施" clearable class="input-length">
- <el-option :key="1" label="有" :value="1"></el-option>
- <el-option :key="2" label="无" :value="2"></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="partitionStatus">
- <el-select v-model="roomDialogState.roomForm.partitionStatus" placeholder="有无隔断" clearable class="input-length">
- <el-option :key="1" label="有" :value="1"></el-option>
- <el-option :key="2" label="无" :value="2"></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="siteTypeId">
- <el-select v-model="roomDialogState.roomForm.siteTypeId" placeholder="场所性质" clearable class="input-length">
- <el-option v-for="item in typeList" :key="item.id" :label="item.siteType" :value="item.id"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- </el-row>
- </el-form>
- <template #footer>
- <span class="dialog-footer">
- <el-button @click="roomDialogState.roomDialogVisible = !roomDialogState.roomDialogVisible" size="default">取 消</el-button>
- <el-button type="primary" @click="onSubmitRoom" size="default">确定</el-button>
- </span>
- </template>
- </el-dialog>
- </div>
-</template>
-
-<script setup lang="ts">
-import { reactive, ref, defineProps} from "vue";
-import {ElMessage} from "element-plus";
-import {roomApi} from "/@/api/basic/room";
-
-const roomFormRef = ref()
-
-const roomDialogState = reactive<RoomDialogType>({
- title: '',
- roomDialogVisible: false,
- roomForm: {
- siteName: '',
- floor: '',
- room: '',
- siteLiabilityPersonId: null,
- safeLiabilityPersonId: null,
- fireFacilities: null,
- partitionStatus: null,
- siteTypeId: null
- },
- roomFormRules: {
- siteName: [{ required: true, message: '请填写实验室名称', trigger: 'blur' }],
- floor: [{ required: true, message: '请填写楼名称', trigger: 'blur' }],
- room: [{ required: true, message: '请填写房间', trigger: 'blur' }],
- siteLiabilityPersonId: [{ required: true, message: '请选择场所责任人', trigger: 'blur' }],
- safeLiabilityPersonId: [{ required: true, message: '请选择场所安全员', trigger: 'blur' }],
- fireFacilities: [{ required: true, message: '请选择有无消防设施', trigger: 'blur' }],
- partitionStatus: [{ required: true, message: '请选择有无隔断', trigger: 'blur' }],
- siteTypeId: [{ required: true, message: '请选择场所性质', trigger: 'blur' }]
- },
- specialDeviceList: [],
- deviceUnitList: [
- {id:1, name: '台'},
- {id:2, name: '个'},
- {id:3, name: '件'}
- ]
-})
-
-const showroomDialog = (title: string, value: RoomType, specialDeviceList: Type []) => {
-
- roomDialogState.roomDialogVisible = true;
- roomDialogState.specialDeviceList = specialDeviceList;
- setTimeout(() => {
- roomFormRef.value.clearValidate();
- });
- if(title === '新增'){
- roomDialogState.title = '新增';
- roomDialogState.roomForm = {
- siteName: '',
- floor: '',
- room: '',
- siteLiabilityPersonId: null,
- safeLiabilityPersonId: null,
- fireFacilities: null,
- partitionStatus: null,
- siteTypeId: null
- };
- }else{
- roomDialogState.title = '编辑'
- roomDialogState.roomForm = {
- id: value.id,
- siteName: value.siteName,
- floor: value.floor,
- room: value.room,
- siteLiabilityPersonId: value.siteLiabilityPersonId,
- safeLiabilityPersonId: value.safeLiabilityPersonId,
- fireFacilities: value.fireFacilities,
- partitionStatus: value.partitionStatus,
- siteTypeId: value.siteTypeId
- };
- }
-};
-
-const onSubmitRoom = () => {
- roomFormRef.value.validate(async(valid: boolean) => {
- if(valid){
- if(roomDialogState.title === '新增'){
- let res = await roomApi().addRoom(roomDialogState.roomForm);
- if(res.data.code === 100){
- emit('refresh')
- roomDialogState.roomDialogVisible = false;
- ElMessage({
- type: 'success',
- message: '新增成功'
- })
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg,
- });
- }
- }else{
- let res = await roomApi().modRoom(roomDialogState.roomForm)
- if(res.data.code === 100){
- emit('refresh')
- roomDialogState.roomDialogVisible = false;
- ElMessage({
- type: 'success',
- message: '编辑成功'
- })
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg,
- });
- }
- }
- }else{
- ElMessage({
- type: 'warning',
- message: '请完善基本信息',
- });
- }
- })
-}
-
-const emit = defineEmits(['refresh'])
-
-defineProps({
- memberList: Array,
- typeList: Array
-})
-
-defineExpose({
- showroomDialog
-})
-</script>
-
-<style scoped>
-
-</style>
diff --git a/src/views/basic/room/index.ts b/src/views/basic/room/index.ts
deleted file mode 100644
index 11634cf..0000000
--- a/src/views/basic/room/index.ts
+++ /dev/null
@@ -1,53 +0,0 @@
-declare interface RoomStateType {
- roomData: Array<RoomType>
- memberList: Array<any>
- typeList: Array<any>
- searchQuery: {
- pageIndex: number,
- pageSize: number,
- siteName: string,
- floor: string,
- room: string,
- }
- total: number
- specialDeviceList: Array<Type>,
- deviceUnitList: Array<Type>
-}
-
-declare interface RoomType {
- id?: number | null,
- siteName: string,
- floor: string,
- room: string,
- siteLiabilityPersonId: number | null,
- safeLiabilityPersonId: number | null,
- fireFacilities: number | null,
- partitionStatus: number | null,
- siteTypeId: number | null
-}
-
-declare interface Type {
- id: number,
- name: string,
-}
-
-declare interface RoomDialogType {
- title: string,
- roomDialogVisible: boolean,
- roomForm: {
- id?: number | null,
- siteName: string,
- floor: string,
- room: string,
- siteLiabilityPersonId: number | null,
- safeLiabilityPersonId: number | null,
- fireFacilities: number | null,
- partitionStatus: number | null,
- siteTypeId: number | null
- },
- roomFormRules: {
-
- },
- specialDeviceList: Array<Type>,
- deviceUnitList: Array<Type>
-}
diff --git a/src/views/basic/room/index.vue b/src/views/basic/room/index.vue
deleted file mode 100644
index dc3af1d..0000000
--- a/src/views/basic/room/index.vue
+++ /dev/null
@@ -1,335 +0,0 @@
-<template>
- <div class="home-container">
- <div style="height: 100%">
- <el-row class="homeCard">
- <div class="basic-line">
- <span>场所名称:</span>
- <el-input v-model="roomState.searchQuery.siteName" clearable filterable class="input-box" placeholder="场所名称">
- </el-input>
- </div>
- <div class="basic-line">
- <span>楼:</span>
- <el-input v-model="roomState.searchQuery.floor" clearable filterable class="input-box" placeholder="楼">
- </el-input>
- </div>
- <div class="basic-line">
- <span>房间号:</span>
- <el-input v-model="roomState.searchQuery.room" clearable filterable class="input-box" placeholder="房间号">
- </el-input>
- </div>
- <div style="padding-bottom: 10px">
- <el-button type="primary" @click="getRoomData">查询</el-button>
- <el-button plain @click="reset">重置</el-button>
- </div>
- </el-row>
- <div class="homeCard">
- <div class="main-card">
- <el-row class="cardTop">
- <el-col :span="12" class="mainCardBtn">
- <el-button type="primary" :icon="Plus" size="default" @click="openRoomDialog('新增', {})">新增</el-button>
- <!-- <el-button type="danger" :icon="Delete" size="default" plain>删除</el-button>-->
- </el-col>
-<!-- <el-button type="primary" :icon="Refresh" size="default" />-->
- </el-row>
- <el-table ref="multipleTableRef" :data="roomState.roomData" style="width: 100%" height="calc(100% - 100px)" :header-cell-style="{ background: '#fafafa' }">
- <el-table-column prop="siteName" label="场所名称"/>
- <el-table-column prop="floor" label="实验室所在楼" />
- <el-table-column prop="room" label="实验室所在房间"/>
- <el-table-column prop="siteLiabilityPerson" label="场所责任人"/>
- <el-table-column prop="safeLiabilityPerson" label="场所安全员"/>
- <el-table-column prop="fireFacilities" label="有无消防设施">
- <template #default="scope">
- <span>{{scope.row.fireFacilities == 1?'有':'无'}}</span>
- </template>
- </el-table-column>
- <el-table-column prop="partitionStatus" label="有无隔断">
- <template #default="scope">
- <span>{{scope.row.partitionStatus == 1?'有':'无'}}</span>
- </template>
- </el-table-column>
- <el-table-column prop="siteType" 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 prop="updateTime" label="最后修改时间" show-overflow-tooltip></el-table-column>
- <el-table-column prop="updateByUserName" label="最后修改人" show-overflow-tooltip></el-table-column>
- <el-table-column label="操作" width="150">
- <template #default="scope">
- <el-button size="small" text type="primary" :icon="Edit" @click="openRoomDialog('修改', scope.row)">编辑</el-button>
- <el-button size="small" text type="danger" :icon="Delete" @click="onDelRoom(scope.row)">删除</el-button>
- </template>
- </el-table-column>
- </el-table>
- <div class="pageBtn">
- <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" :pager-count="5" :page-sizes="[10, 20, 30]" v-model:current-page="roomState.searchQuery.pageIndex" background v-model:page-size="roomState.searchQuery.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="roomState.total" class="page-position"> </el-pagination>
- </div>
- </div>
- </div>
- </div>
- <room-dialog ref="roomDialogRef" @refresh="getRoomData" :memberList="roomState.memberList" :typeList="roomState.typeList"></room-dialog>
- </div>
-</template>
-
-<script setup lang="ts">
-import {defineAsyncComponent, onMounted, reactive, ref} from "vue";
-import {roomApi} from "/@/api/basic/room";
-import {personApi} from "/@/api/basic/person";
-import {ElMessage, ElMessageBox} from "element-plus";
-import { Edit, View, Plus, Delete } from '@element-plus/icons-vue';
-import {equipmentApi} from "/@/api/basic/equipement";
-
-const RoomDialog = defineAsyncComponent(() => import('./components/roomDialog.vue'));
-
-const roomDialogRef = ref();
-
-const roomState = reactive<RoomStateType>({
- roomData: [],
- memberList: [],
- typeList: [],
- searchQuery: {
- pageIndex: 1,
- pageSize: 10,
- siteName: '',
- floor: '',
- room: '',
- },
- total: 0,
- specialDeviceList: [
- {id: 1, name: '是'},
- {id:2, name: '否'}
- ],
- deviceUnitList: [
- {id:1, name: '台'},
- {id:2, name: '个'},
- {id:3, name: '件'}
- ]
-})
-
-const getAllMember = async ()=>{
- const res = await personApi().getAllPerson();
- if(res.data.code === 100){
- roomState.memberList = res.data.data
- }
-}
-
-const getAllType = async ()=>{
- const res = await roomApi().getAllType();
- if(res.data.code === 100){
- roomState.typeList = res.data.data
- }
-}
-
-const getRoomData = async () => {
- let res = await roomApi().getRoomByList(roomState.searchQuery);
- if(res.data.code === 100){
- roomState.roomData = res.data.data;
- roomState.total = res.data.total;
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- });
- }
-};
-
-const openRoomDialog = (title: string, value: RoomType) => {
- roomDialogRef.value.showroomDialog(title, value, roomState.specialDeviceList);
-};
-
-const onDelRoom = (val: RoomType) => {
- ElMessageBox.confirm(`此操作将永久删除该场所:“${val.siteName}”,是否继续?`, '提示', {
- confirmButtonText: '确认',
- cancelButtonText: '取消',
- type: 'warning'
- })
- .then(async () => {
- let res = await roomApi().deleteRoomById({ id: val.id });
- if (res.data.code === 100) {
- ElMessage({
- type: 'success',
- duration: 2000,
- message: '删除成功'
- });
- await getRoomData();
- } else {
- ElMessage({
- type: 'warning',
- message: res.data.msg
- });
- }
- })
- .catch((error) => {
- });
-}
-
-const onHandleSizeChange = (val: number) => {
- roomState.searchQuery.pageSize = val;
- getRoomData();
-};
-
-const onHandleCurrentChange = (val: number) => {
- roomState.searchQuery.pageIndex = val;
- getRoomData();
-};
-
-const reset = () => {
- roomState.searchQuery = {
- pageIndex: 1,
- pageSize: 10,
- siteName: '',
- floor: '',
- room: '',
- }
-};
-
-onMounted(() => {
- getRoomData()
- getAllMember()
- getAllType()
-})
-
-</script>
-
-<style scoped lang="scss">
-$homeNavLengh: 8;
-.home-container {
- height: calc(100vh - 144px);
- box-sizing: border-box;
- overflow: hidden;
- .homeCard {
- width: 100%;
- padding: 20px;
- box-sizing: border-box;
- background: #fff;
- border-radius: 4px;
-
- .main-card {
- width: 100%;
- height: 100%;
- .cardTop {
- display: flex;
- align-items: center;
- justify-content: space-between;
- margin-bottom: 20px;
- .mainCardBtn {
- margin: 0;
- }
- }
- .pageBtn {
- height: 60px;
- display: flex;
- align-items: center;
- justify-content: right;
-
- .demo-pagination-block + .demo-pagination-block {
- margin-top: 10px;
- }
- .demo-pagination-block .demonstration {
- margin-bottom: 16px;
- }
- }
- }
- &:last-of-type {
- height: calc(100% - 100px);
- }
- }
- .el-row {
- display: flex;
- align-items: center;
- margin-bottom: 20px;
- &:last-child {
- margin-bottom: 0;
- }
- .grid-content {
- align-items: center;
- min-height: 36px;
- }
-
- .topInfo {
- display: flex;
- align-items: center;
- font-size: 16px;
- font-weight: bold;
-
- & > div {
- white-space: nowrap;
- margin-right: 20px;
- }
- }
- }
-}
-.stepItem {
- width: 100%;
- display: flex;
- align-items: flex-start;
- margin-bottom: 30px;
- margin-left: 30px;
- padding-bottom: 30px;
- border-left: 2px solid #ccc;
- &:first-of-type {
- margin-top: 30px;
- }
- &:last-of-type {
- margin-bottom: 0;
- border-left: none;
- }
- .stepNum {
- width: 30px;
- height: 30px;
- border-radius: 15px;
- box-sizing: border-box;
- color: #333;
- border: 1px solid #999;
- line-height: 28px;
- text-align: center;
- margin-right: 10px;
- margin-left: -16px;
- margin-top: -30px;
- }
- .stepCard {
- width: 100%;
- margin-top: -30px;
-
- .box-card {
- width: 100%;
- &:deep(.el-card__header) {
- padding: 10px 15px;
- }
- .card-header {
- width: 100%;
- display: flex;
- justify-content: space-between;
- align-items: center;
- & > div:first-of-type {
- margin-right: 80px;
- font-size: 18px;
- font-weight: bold;
- }
- }
- }
- }
- &:hover .card-header {
- color: #0098f5;
- }
- &:hover .stepNum {
- border: 2px solid #0098f5;
- color: #0098f5;
- }
-}
-
-:deep(.el-date-editor) {
- width: 100%;
-}
-.el-select {
- width: 100%;
-}
-:deep(.el-textarea.is-disabled .el-textarea__inner) {
- background-color: var(--el-card-bg-color);
- color: var(--el-input-text-color, var(--el-text-color-regular));
-}
-:deep(.el-input.is-disabled .el-input__inner) {
- color: var(--el-input-text-color, var(--el-text-color-regular));
-}
-:deep(.el-input.is-disabled .el-input__wrapper) {
- background-color: var(--el-card-bg-color);
-}
-</style>
diff --git a/src/views/basic/unit/components/unitDialog.vue b/src/views/basic/unit/components/unitDialog.vue
deleted file mode 100644
index 93a4dcd..0000000
--- a/src/views/basic/unit/components/unitDialog.vue
+++ /dev/null
@@ -1,185 +0,0 @@
-<template>
- <div class="system-menu-dialog-container">
- <el-dialog :title="unitDialogState.title" v-model="unitDialogState.unitDialogVisible" :close-on-click-modal="false" width="600px">
- <el-form ref="UnitFormRef" :rules="unitDialogState.unitFormRules" :model="unitDialogState.unitForm" size="default" label-width="120px">
- <el-row :gutter="35">
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="风险单元编号" prop="riskCode">
- <el-input v-model="unitDialogState.unitForm.riskCode" 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="unitDialogState.unitForm.riskName" 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="riskSourceType">
- <el-select v-model="unitDialogState.unitForm.riskSourceType" @change="unitDialogState.unitForm.riskSourceId = null" placeholder="风险源风险类型" clearable class="input-length">
- <el-option v-for="item in unitDialogState.riskSourceTypeList" :key="item.id" :label="item.name" :value="item.id"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="风险源" prop="riskSourceId">
- <el-select v-model="unitDialogState.unitForm.riskSourceId" placeholder="风险源" clearable class="input-length">
- <el-option v-if="unitDialogState.unitForm.riskSourceType === 2" v-for="item in unitDialogState.allEquipmentList" :key="item.id" :label="item.deviceName" :value="item.id"></el-option>
- <el-option v-if="unitDialogState.unitForm.riskSourceType === 1" v-for="item in unitDialogState.allRoomList" :key="item.id" :label="item.room" :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="unitDialogState.unitForm.liabilityUserId" placeholder="负责人" clearable class="input-length">
- <el-option v-for="item in unitDialogState.allPersonList" :key="item.id" :label="item.personName" :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="unitDialogState.unitForm.liabilityDep" 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="风险单元描述">
- <el-input type="textarea" :rows="3" v-model="unitDialogState.unitForm.description" placeholder="风险单元描述" clearable class="input-length"></el-input>
- </el-form-item>
- </el-col>
- </el-row>
- </el-form>
- <template #footer>
- <span class="dialog-footer">
- <el-button @click="unitDialogState.unitDialogVisible = !unitDialogState.unitDialogVisible" size="default">取 消</el-button>
- <el-button type="primary" @click="onSubmitUnit" size="default">确定</el-button>
- </span>
- </template>
- </el-dialog>
- </div>
-</template>
-
-<script setup lang="ts">
-import { reactive, ref } from "vue";
-import {ElMessage} from "element-plus";
-import {unitApi} from "/@/api/basic/unit";
-
-const UnitFormRef = ref()
-
-const unitDialogState = reactive<UnitDialogType>({
- title: '',
- unitDialogVisible: false,
- unitForm: {
- riskCode: '',
- riskName: '',
- riskSourceId: null,
- riskSourceType: null,
- liabilityUserId: null,
- liabilityDep: '',
- description: '',
- },
- unitFormRules: {
- riskCode: [{ required: true, message: '请填写风险单元编号', trigger: 'blur' }],
- riskName: [{ required: true, message: '请填写风险单元名称', trigger: 'blur' }],
- riskSourceId: [{ required: true, message: '请选择风险源风险类型', trigger: 'change' }],
- riskSourceType: [{ required: true, message: '请选择风险源', trigger: 'change' }],
- },
- riskSourceTypeList: [
- {id: 1, name: '区域、实验场所'},
- {id:2, name: '设施设备'},
- {id:3, name: '固定工艺节点'},
- ],
- evaluateStatusList: [
- {id: 1, name: '未评价'},
- {id:2, name: '已评价'},
- ],
- allRoomList: [],
- allEquipmentList: [],
- allPersonList: [],
-})
-
-const showUnitDialog = (title: string, value: UnitType, allEquipmentList: AllEquipmentListType [], allRoomList: RoomType [], allPersonList: AllPersonListType []) => {
- unitDialogState.unitDialogVisible = true;
- unitDialogState.allRoomList = allRoomList
- unitDialogState.allEquipmentList = allEquipmentList
- unitDialogState.allPersonList = allPersonList
- setTimeout(() => {
- UnitFormRef.value.clearValidate();
- });
- if(title === '新增'){
- unitDialogState.title = '新增';
- unitDialogState.unitForm = {
- riskCode: '',
- riskName: '',
- riskSourceId: null,
- riskSourceType: null,
- liabilityUserId: null,
- liabilityDep: '',
- description: '',
- };
- }else{
- unitDialogState.title = '编辑'
- unitDialogState.unitForm = {
- id: value.id,
- riskCode: value.riskCode,
- riskName: value.riskName,
- riskSourceId: value.riskSourceId,
- riskSourceType: value.riskSourceType,
- liabilityUserId: value.liabilityUserId,
- liabilityDep: value.liabilityDep,
- description: value.description,
- };
- }
-};
-
-const onSubmitUnit = () => {
- UnitFormRef.value.validate(async(valid: boolean) => {
- if(valid){
- if(unitDialogState.title === '新增'){
- let res = await unitApi().addUnit(unitDialogState.unitForm);
- if(res.data.code === 100){
- emit('refresh')
- unitDialogState.unitDialogVisible = false;
- ElMessage({
- type: 'success',
- message: '新增成功'
- })
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg,
- });
- }
- }else{
- let res = await unitApi().modUnit(unitDialogState.unitForm)
- if(res.data.code === 100){
- emit('refresh')
- unitDialogState.unitDialogVisible = false;
- ElMessage({
- type: 'success',
- message: '编辑成功'
- })
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg,
- });
- }
- }
- }else{
- ElMessage({
- type: 'warning',
- message: '请完善基本信息',
- });
- }
- })
-}
-
-const emit = defineEmits(['refresh'])
-
-defineExpose({
- showUnitDialog
-})
-</script>
-
-<style scoped>
-
-</style>
diff --git a/src/views/basic/unit/index.ts b/src/views/basic/unit/index.ts
deleted file mode 100644
index f2eead4..0000000
--- a/src/views/basic/unit/index.ts
+++ /dev/null
@@ -1,55 +0,0 @@
-declare interface UnitStateType {
- unitData: Array<UnitType>
- searchQuery: {
- pageIndex: number,
- pageSize: number,
- riskCode: string,
- riskName: string,
- riskSourceType: number | null,
- }
- total: number
- riskSourceTypeList: Array<Type>,
- evaluateStatusList: Array<Type>,
- allRoomList: Array<RoomType>,
- allEquipmentList: Array<AllEquipmentListType>,
- allPersonList: Array<AllPersonListType>,
-}
-
-declare interface UnitType {
- id?: number | null,
- riskCode: string,
- riskName: string,
- riskSourceId: number | null,
- riskSourceType: number | null,
- liabilityUserId: number | null,
- liabilityDep: string,
- description: string,
-}
-
-declare interface Type {
- id: number,
- name: string,
-}
-
-declare interface UnitDialogType {
- title: string,
- unitDialogVisible: boolean,
- unitForm: {
- id?: number | null,
- riskCode: string,
- riskName: string,
- riskSourceId: number | null,
- riskSourceType: number | null,
- liabilityUserId: number | null,
- liabilityDep: string,
- description: string,
- },
- unitFormRules: {
-
- },
- riskSourceTypeList: Array<Type>,
- evaluateStatusList: Array<Type>,
- allRoomList: Array<RoomType>,
- allEquipmentList: Array<AllEquipmentListType>,
- allPersonList: Array<AllPersonListType>,
-}
diff --git a/src/views/basic/unit/index.vue b/src/views/basic/unit/index.vue
deleted file mode 100644
index 3ae75ed..0000000
--- a/src/views/basic/unit/index.vue
+++ /dev/null
@@ -1,358 +0,0 @@
-<template>
- <div class="home-container">
- <div style="height: 100%">
- <el-row class="homeCard">
- <div class="basic-line">
- <span>风险单元编号:</span>
- <el-input v-model="unitState.searchQuery.riskCode" clearable filterable class="input-box" placeholder="风险单元编号">
- </el-input>
- </div>
- <div class="basic-line">
- <span>风险单元名称:</span>
- <el-input v-model="unitState.searchQuery.riskName" clearable filterable class="input-box" placeholder="风险单元名称">
- </el-input>
- </div>
- <div class="basic-line">
- <span>风险源风险类型:</span>
- <el-select v-model="unitState.searchQuery.riskSourceType" clearable filterable class="input-box" placeholder="风险源风险类型">
- <el-option v-for="item in unitState.riskSourceTypeList" :key="item.id" :label="item.name" :value="item.id"></el-option>
- </el-select>
- </div>
- <div style="padding-bottom: 10px">
- <el-button type="primary" @click="getUnitData">查询</el-button>
- <el-button plain @click="reset">重置</el-button>
- </div>
- </el-row>
- <div class="homeCard">
- <div class="main-card">
- <el-row class="cardTop">
- <el-col :span="12" class="mainCardBtn">
- <el-button type="primary" :icon="Plus" size="default" @click="openUnitDialog('新增', {})">新增</el-button>
- <!-- <el-button type="danger" :icon="Delete" size="default" plain>删除</el-button>-->
- </el-col>
-<!-- <el-button type="primary" :icon="Refresh" size="default" />-->
- </el-row>
- <el-table ref="multipleTableRef" :data="unitState.unitData" style="width: 100%" height="calc(100% - 100px)" :header-cell-style="{ background: '#fafafa' }">
- <el-table-column prop="riskCode" label="风险单元编号" show-overflow-tooltip/>
- <el-table-column prop="riskName" label="风险单元名称" show-overflow-tooltip/>
- <el-table-column prop="riskSourceType" label="风险源风险类型" show-overflow-tooltip>
- <template #default="scope">
- <span>{{`${unitState.riskSourceTypeList.find(item =>item.id === scope.row.riskSourceType)?.name || ''}`}}</span>
- </template>
- </el-table-column>
- <el-table-column prop="evaluateStatus" label="评价状态" show-overflow-tooltip>
- <template #default="scope">
- <span>{{`${unitState.evaluateStatusList.find(item =>item.id === scope.row.evaluateStatus)?.name || ''}`}}</span>
- </template>
- </el-table-column>
- <el-table-column prop="liabilityUserName" label="责任人" show-overflow-tooltip/>
- <el-table-column prop="liabilityDep" label="责任部门" show-overflow-tooltip/>
- <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 prop="updateTime" label="最后修改时间" show-overflow-tooltip></el-table-column>
- <el-table-column prop="updateByUserName" label="最后修改人" show-overflow-tooltip></el-table-column>
- <el-table-column label="操作" width="150">
- <template #default="scope">
- <el-button size="small" text type="primary" :icon="Edit" @click="openUnitDialog('修改', scope.row)">编辑</el-button>
- <el-button size="small" text type="danger" :icon="Delete" @click="onDelUnit(scope.row)">删除</el-button>
- </template>
- </el-table-column>
- </el-table>
- <div class="pageBtn">
- <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" :pager-count="5" :page-sizes="[10, 20, 30]" v-model:current-page="unitState.searchQuery.pageIndex" background v-model:page-size="unitState.searchQuery.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="unitState.total" class="page-position"> </el-pagination>
- </div>
- </div>
- </div>
- </div>
- <unit-dialog ref="unitDialogRef" @refresh="getUnitData"></unit-dialog>
- </div>
-</template>
-
-<script setup lang="ts">
-import {defineAsyncComponent, onMounted, reactive, ref} from "vue";
-import {unitApi} from "/@/api/basic/unit";
-import {ElMessage, ElMessageBox} from "element-plus";
-import { Edit, View, Plus, Delete } from '@element-plus/icons-vue';
-import {roomApi} from "/@/api/basic/room";
-import {equipmentApi} from "/@/api/basic/equipement";
-import {personApi} from "/@/api/basic/person";
-
-const UnitDialog = defineAsyncComponent(() => import('./components/unitDialog.vue'));
-
-const unitDialogRef = ref();
-
-const unitState = reactive<UnitStateType>({
- unitData: [],
- searchQuery: {
- pageIndex: 1,
- pageSize: 10,
- riskCode: '',
- riskName: '',
- riskSourceType: null,
- },
- total: 0,
- riskSourceTypeList: [
- {id: 1, name: '区域、实验场所'},
- {id:2, name: '设施设备'},
- {id:3, name: '固定工艺节点'},
- ],
- evaluateStatusList: [
- {id: 1, name: '未评价'},
- {id:2, name: '已评价'},
- ],
- allRoomList: [],
- allEquipmentList: [],
- allPersonList: [],
-})
-
-const getUnitData = async () => {
- let res = await unitApi().getUnitByList(unitState.searchQuery);
- if(res.data.code === 100){
- unitState.unitData = res.data.data;
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- });
- }
-};
-
-const getRoomData = async () => {
- let res = await roomApi().getAllRoom();
- if(res.data.code === 100){
- unitState.allRoomList = JSON.parse(JSON.stringify(res.data.data));
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- });
- }
-};
-
-const getAllEquipmentList = async () => {
- let res = await equipmentApi().getAllEquipment();
- if(res.data.code === 100){
- unitState.allEquipmentList = JSON.parse(JSON.stringify(res.data.data));
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- })
- }
-};
-
-const getAllPersonList = async () => {
- let res = await personApi().getAllPerson();
- if(res.data.code === 100){
- unitState.allPersonList = JSON.parse(JSON.stringify(res.data.data));
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- })
- }
-};
-
-const openUnitDialog = (title: string, value: UnitType) => {
- unitDialogRef.value.showUnitDialog(title, value, unitState.allEquipmentList, unitState.allRoomList, unitState.allPersonList);
-};
-
-const onDelUnit = (val: UnitType) => {
- ElMessageBox.confirm(`此操作将永久删除该单元:“${val.riskName}”,是否继续?`, '提示', {
- confirmButtonText: '确认',
- cancelButtonText: '取消',
- type: 'warning'
- })
- .then(async () => {
- let res = await unitApi().deleteUnitById({ id: val.id });
- if (res.data.code === 100) {
- ElMessage({
- type: 'success',
- duration: 2000,
- message: '删除成功'
- });
- await getUnitData();
- } else {
- ElMessage({
- type: 'warning',
- message: res.data.msg
- });
- }
- })
- .catch((error) => {
- });
-}
-
-const onHandleSizeChange = (val: number) => {
- unitState.searchQuery.pageSize = val;
- getUnitData();
-};
-
-const onHandleCurrentChange = (val: number) => {
- unitState.searchQuery.pageIndex = val;
- getUnitData();
-};
-
-const reset = () => {
- unitState.searchQuery = {
- pageIndex: 1,
- pageSize: 10,
- riskCode: '',
- riskName: '',
- riskSourceType: null,
- }
-};
-
-onMounted(() => {
- getUnitData();
- getRoomData();
- getAllEquipmentList();
- getAllPersonList();
-})
-
-</script>
-
-<style scoped lang="scss">
-$homeNavLengh: 8;
-.home-container {
- height: calc(100vh - 144px);
- box-sizing: border-box;
- overflow: hidden;
- .homeCard {
- width: 100%;
- padding: 20px;
- box-sizing: border-box;
- background: #fff;
- border-radius: 4px;
-
- .main-card {
- width: 100%;
- height: 100%;
- .cardTop {
- display: flex;
- align-items: center;
- justify-content: space-between;
- margin-bottom: 20px;
- .mainCardBtn {
- margin: 0;
- }
- }
- .pageBtn {
- height: 60px;
- display: flex;
- align-items: center;
- justify-content: right;
-
- .demo-pagination-block + .demo-pagination-block {
- margin-top: 10px;
- }
- .demo-pagination-block .demonstration {
- margin-bottom: 16px;
- }
- }
- }
- &:last-of-type {
- height: calc(100% - 100px);
- }
- }
- .el-row {
- display: flex;
- align-items: center;
- margin-bottom: 20px;
- &:last-child {
- margin-bottom: 0;
- }
- .grid-content {
- align-items: center;
- min-height: 36px;
- }
-
- .topInfo {
- display: flex;
- align-items: center;
- font-size: 16px;
- font-weight: bold;
-
- & > div {
- white-space: nowrap;
- margin-right: 20px;
- }
- }
- }
-}
-.stepItem {
- width: 100%;
- display: flex;
- align-items: flex-start;
- margin-bottom: 30px;
- margin-left: 30px;
- padding-bottom: 30px;
- border-left: 2px solid #ccc;
- &:first-of-type {
- margin-top: 30px;
- }
- &:last-of-type {
- margin-bottom: 0;
- border-left: none;
- }
- .stepNum {
- width: 30px;
- height: 30px;
- border-radius: 15px;
- box-sizing: border-box;
- color: #333;
- border: 1px solid #999;
- line-height: 28px;
- text-align: center;
- margin-right: 10px;
- margin-left: -16px;
- margin-top: -30px;
- }
- .stepCard {
- width: 100%;
- margin-top: -30px;
-
- .box-card {
- width: 100%;
- &:deep(.el-card__header) {
- padding: 10px 15px;
- }
- .card-header {
- width: 100%;
- display: flex;
- justify-content: space-between;
- align-items: center;
- & > div:first-of-type {
- margin-right: 80px;
- font-size: 18px;
- font-weight: bold;
- }
- }
- }
- }
- &:hover .card-header {
- color: #0098f5;
- }
- &:hover .stepNum {
- border: 2px solid #0098f5;
- color: #0098f5;
- }
-}
-
-:deep(.el-date-editor) {
- width: 100%;
-}
-.el-select {
- width: 100%;
-}
-:deep(.el-textarea.is-disabled .el-textarea__inner) {
- background-color: var(--el-card-bg-color);
- color: var(--el-input-text-color, var(--el-text-color-regular));
-}
-:deep(.el-input.is-disabled .el-input__inner) {
- color: var(--el-input-text-color, var(--el-text-color-regular));
-}
-:deep(.el-input.is-disabled .el-input__wrapper) {
- background-color: var(--el-card-bg-color);
-}
-</style>
diff --git a/src/views/bigScreen/index.vue b/src/views/bigScreen/index.vue
new file mode 100644
index 0000000..f7775c5
--- /dev/null
+++ b/src/views/bigScreen/index.vue
@@ -0,0 +1,39 @@
+<template>
+ <div class="system-role-container">
+ 6666666
+ </div>
+</template>
+
+<script lang="ts">
+import { toRefs, reactive, onMounted, ref, defineComponent } from 'vue';
+
+// 定义接口来定义对象的类型
+interface TableData {
+
+}
+interface TableDataState {
+
+}
+
+export default defineComponent({
+ name: 'bigScreen',
+ components: { },
+ setup() {
+ const roleDialogRef = ref();
+ const state = reactive<TableDataState>({
+
+ });
+
+ // 页面加载时
+ onMounted(() => {
+
+ });
+ return {
+ ...toRefs(state)
+ };
+ }
+});
+</script>
+<style lang="scss" scoped>
+
+</style>
\ No newline at end of file
diff --git a/src/views/experiment/developing/components/applyDialog.vue b/src/views/experiment/developing/components/applyDialog.vue
deleted file mode 100644
index 4f4b618..0000000
--- a/src/views/experiment/developing/components/applyDialog.vue
+++ /dev/null
@@ -1,98 +0,0 @@
-<template>
- <div class="system-menu-dialog-container">
- <el-dialog :title="applyStartDialogState.title" v-model="applyStartDialogState.applyStartDialogVisible" width="600px">
- <el-form ref="applyStartFormRef" :rules="applyStartDialogState.applyStartFormRules" :model="applyStartDialogState.applyStartForm" size="default" label-width="160px">
- <el-row :gutter="35">
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="实验开始时间" prop="startTime">
- <el-date-picker type="datetime" format="YYYY/MM/DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" v-model="applyStartDialogState.applyStartForm.startTime" class="input-length"/>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="是否使用安全信息化系统" prop="sisStatus">
- <el-radio-group v-model="applyStartDialogState.applyStartForm.sisStatus">
- <el-radio :label="1">是</el-radio>
- <el-radio :label="2">否</el-radio>
- </el-radio-group>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="安全信息化系统" prop="safeInformationSystem">
- <el-input v-model="applyStartDialogState.applyStartForm.safeInformationSystem" placeholder="材料类型" class="input-length">
- </el-input>
- </el-form-item>
- </el-col>
- </el-row>
- </el-form>
- <template #footer>
- <span class="dialog-footer">
- <el-button @click="applyStartDialogState.applyStartDialogVisible = !applyStartDialogState.applyStartDialogVisible" size="default">取 消</el-button>
- <el-button type="primary" @click="onSubmitApplyStart" size="default">确定</el-button>
- </span>
- </template>
- </el-dialog>
- </div>
-</template>
-
-<script setup lang="ts">
-import { reactive, ref } from "vue";
-import {ElMessage} from "element-plus";
-import {projectApi} from "/@/api/experiment/project";
-
-const applyStartFormRef = ref()
-
-const applyStartDialogState = reactive<ApplyStartDialogType>({
- title: '',
- applyStartDialogVisible: false,
- applyStartForm: {
- id: null,
- sisStatus: null,
- safeInformationSystem: '',
- startTime: '',
- },
- applyStartFormRules: {
-
- },
-})
-
-const showApplyStartDialog = (value: ProjectType) => {
- applyStartDialogState.applyStartDialogVisible = true;
- applyStartDialogState.applyStartForm.id = <number>value.id
-};
-
-const onSubmitApplyStart = () => {
- applyStartFormRef.value.validate(async(valid: boolean) => {
- if(valid){
- let res = await projectApi().applyProject([applyStartDialogState.applyStartForm]);
- if(res.data.code === 100){
- emit('refresh')
- applyStartDialogState.applyStartDialogVisible = false;
- ElMessage({
- type: 'success',
- message: '申请开展成功'
- })
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg,
- });
- }
- }else{
- ElMessage({
- type: 'warning',
- message: '请完善基本信息',
- });
- }
- })
-};
-
-const emit = defineEmits(['refresh'])
-
-defineExpose({
- showApplyStartDialog
-})
-</script>
-
-<style scoped>
-
-</style>
diff --git a/src/views/experiment/developing/components/applyStart.vue b/src/views/experiment/developing/components/applyStart.vue
deleted file mode 100644
index 8906f6e..0000000
--- a/src/views/experiment/developing/components/applyStart.vue
+++ /dev/null
@@ -1,101 +0,0 @@
-<template>
- <div class="system-menu-dialog-container">
- <el-dialog :title="applyStartDialogState.title" v-model="applyStartDialogState.applyStartDialogVisible" width="600px">
- <el-form ref="applyStartFormRef" :rules="applyStartDialogState.applyStartFormRules" :model="applyStartDialogState.applyStartForm" size="default" label-width="120px">
- <el-row :gutter="35">
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="实验材料" prop="stuffName">
- <el-date-picker type="datetime" format="YYYY/MM/DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" v-model="applyStartDialogState.applyStartForm.startTime" class="input-length"/>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="编号" prop="sisStatus">
- <el-radio-group v-model="applyStartDialogState.applyStartForm.sisStatus">
- <el-radio :label="1">是</el-radio>
- <el-radio :label="2">否</el-radio>
- </el-radio-group>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="材料类型" prop="stuffType">
- <el-select v-model="applyStartDialogState.applyStartForm.safeInformationSystem" placeholder="材料类型" class="input-length">
- </el-select>
- </el-form-item>
- </el-col>
- </el-row>
- </el-form>
- <template #footer>
- <span class="dialog-footer">
- <el-button @click="applyStartDialogState.applyStartDialogVisible = !applyStartDialogState.applyStartDialogVisible" size="default">取 消</el-button>
- <el-button type="primary" @click="onSubmitApplyStart" size="default">确定</el-button>
- </span>
- </template>
- </el-dialog>
- </div>
-</template>
-
-<script setup lang="ts">
-import { reactive, ref } from "vue";
-import {ElMessage} from "element-plus";
-import {projectApi} from "/@/api/experiment/project";
-
-const applyStartFormRef = ref()
-
-const applyStartDialogState = reactive<ApplyStartDialogType>({
- title: '',
- applyStartDialogVisible: false,
- applyStartForm: {
- id: null,
- sisStatus: null,
- safeInformationSystem: '',
- startTime: '',
- },
- applyStartFormRules: {
- stuffCode: [{ required: true, message: '请填写实验材料', trigger: 'blur' }],
- stuffName: [{ required: true, message: '请填写编号', trigger: 'blur' }],
- stuffStorage: [{ required: true, message: '请选择材料类型', trigger: 'change' }],
- stuffType: [{ required: true, message: '请选择材料储存', trigger: 'change' }],
- stuffUnit: [{ required: true, message: '请选择计量单位', trigger: 'change' }]
- },
-})
-
-const showApplyStartDialog = (value: ProjectType) => {
- applyStartDialogState.applyStartDialogVisible = true;
-};
-
-const onSubmitApplyStart = () => {
- applyStartFormRef.value.validate(async(valid: boolean) => {
- if(valid){
- let res = await projectApi().applyProject(applyStartDialogState.applyStartForm);
- if(res.data.code === 100){
- emit('refresh')
- applyStartDialogState.applyStartDialogVisible = false;
- ElMessage({
- type: 'success',
- message: '申请开展成功'
- })
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg,
- });
- }
- }else{
- ElMessage({
- type: 'warning',
- message: '请完善基本信息',
- });
- }
- })
-};
-
-const emit = defineEmits(['refresh'])
-
-defineExpose({
- showApplyStartDialog
-})
-</script>
-
-<style scoped>
-
-</style>
diff --git a/src/views/experiment/developing/components/developDialog.vue b/src/views/experiment/developing/components/developDialog.vue
deleted file mode 100644
index 4e1689a..0000000
--- a/src/views/experiment/developing/components/developDialog.vue
+++ /dev/null
@@ -1,795 +0,0 @@
-<template>
- <div class="system-menu-dialog-container">
- <el-dialog :title="projectDialogState.title" v-model="projectDialogState.projectDialogVisible" width="80%">
- <el-form ref="ProjectFormRef" :rules="projectDialogState.projectFormRules" :model="projectDialogState.projectForm" size="default" label-width="0">
- <table class="report-table">
- <th class="m-color b-font" style="text-align: center">***研究所/***大学<br />科学研究实验项目安全风险基础信息录入表(已开展)(带<span style="color: red">*</span>为必填项)</th>
- <tr>
- <td class="w-25 m-color required">实验名称</td>
- <td class="w-75 m-color">
- <el-form-item prop="experimentName">
- <el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.experimentName" 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="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="3">辐射类</el-radio>
- <el-radio :label="4">机电类</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%" v-model="projectDialogState.projectForm.liabilityUserId" clearable filterable @change="getLiabilityUserPhone($event)">-->
-<!-- <el-option-->
-<!-- v-for="item in projectDialogState.systemPersonList"-->
-<!-- :key="item.id"-->
-<!-- :value="item.id"-->
-<!-- :label="item.realName"-->
-<!-- ></el-option>-->
-<!-- </el-select>-->
- <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>
- <td class="w-25 m-color required">安全负责人</td>
- <td class="w-25 m-color">
-<!-- <el-select style="width: 100%" :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.safeLiabilityUser" @change="getSafeLiabilityUserPhone($event)" clearable filterable>-->
-<!-- <el-option-->
-<!-- v-for="item in projectDialogState.allPersonList"-->
-<!-- :key="item.id"-->
-<!-- :value="item.id"-->
-<!-- :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" 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>
- <select-material ref="selectMaterialRef" v-model:disabled="projectDialogState.disabled" v-model:data="projectDialogState.projectForm.stuffList"></select-material>
- <select-equipment ref="selectEquipmentRef" v-model:disabled="projectDialogState.disabled" v-model:data="projectDialogState.projectForm.deviceList"></select-equipment>
- <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" 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" 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="请输入" />
- </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-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>
- </el-form>
- <template #footer>
- <span class="dialog-footer" style="padding-top:10px;text-align: center !important;">
- <el-button @click="projectDialogState.projectDialogVisible = !projectDialogState.projectDialogVisible" size="default">取 消</el-button>
- <el-button type="primary" v-if="!projectDialogState.disabled" @click="onSubmitProject" size="default">确定</el-button>
- </span>
- </template>
- </el-dialog>
- </div>
-</template>
-
-<script setup lang="ts">
-import {defineAsyncComponent, nextTick, onMounted, reactive, ref} from "vue";
-import {ElMessage} from "element-plus";
-import {projectApi} from "/@/api/experiment/project";
-import {personApi} from "/@/api/basic/person";
-import {userApi} from "/@/api/systemManage/user";
-
-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)
-
-const projectDialogState = reactive<ProjectDialogType>({
- title: '',
- disabled: false,
- projectDialogVisible: false,
- projectForm: {
- id: null,
- experimentName: "",
- experimentType: null,
- liabilityUserId: Number(userInfos.value.uid),
- liabilityUserPhone: '',
- safeLiabilityUser: '',
- safeLiabilityUserPhone: '',
- sisStatus: null,
- safeInformationSystem: '',
- dep: "",
- experimentStep: "",
- experimentMethod: "",
- process: "",
- keyProcess: "",
- measure: "",
- timeout: null,
- timeoutManager: "",
- closed: null,
- unclosedManager: "",
- explosionProof: "",
- fireProof: "",
- poisonProof: "",
- safeManagerMethod: "",
- emergencyList: [],
- partitionCondition: null,
- note: "",
- createExperimentTime: '',
- startTime: '',
- persons: [
- ],
- siteList: [],
- deviceList: [
- ],
- stuffList: [
- ],
- hazardousWasteList: [
- ]
- },
- projectFormRules: {
- 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: [],
- systemPersonList: [],
-})
-
-const showDevelopDialog = (title: string, value: ProjectType, allRoomList: RoomType []) => {
- projectDialogState.projectDialogVisible = true;
- projectDialogState.allRoomList = allRoomList
- setTimeout(() => {
- ProjectFormRef.value.clearValidate();
- });
- if(title === '新增'){
- projectDialogState.disabled = false
- projectDialogState.title = '新增';
- projectDialogState.projectForm = {
- id: null,
- experimentName: "",
- experimentType: null,
- liabilityUserId: Number(userInfos.value.uid),
- liabilityUserPhone: '',
- safeLiabilityUser: '',
- safeLiabilityUserPhone: '',
- sisStatus: null,
- safeInformationSystem: '',
- dep: "",
- experimentStep: "",
- experimentMethod: "",
- process: "",
- keyProcess: "",
- measure: "",
- timeout: null,
- timeoutManager: "",
- closed: null,
- unclosedManager: "",
- explosionProof: "",
- fireProof: "",
- poisonProof: "",
- safeManagerMethod: "",
- emergencyList: [],
- partitionCondition: null,
- note: "",
- createExperimentTime: '',
- startTime: '',
- persons: [],
- siteList: [],
- deviceList: [],
- stuffList: [],
- hazardousWasteList: []
- };
- }else if(title === '整改'){
- projectDialogState.title = '整改';
- projectDialogState.disabled = false
- for(let i in projectDialogState.projectForm) {
- if(isValidKey(i, projectDialogState.projectForm)) {
- projectDialogState.projectForm[i] = value[i];
- }
- }
- }else{
- projectDialogState.title = '查看';
- projectDialogState.disabled = true
- for(let i in projectDialogState.projectForm) {
- if(isValidKey(i, projectDialogState.projectForm)) {
- projectDialogState.projectForm[i] = value[i];
- }
- }
- }
-};
-
-const isValidKey = (key: string | number | symbol, object:object): key is keyof typeof object =>{
- return key in object;
-};
-
-const getLiabilityUserPhone = (value: number)=>{
- const data = projectDialogState.systemPersonList.find(item => item.id === value) as AllPersonListType
- projectDialogState.projectForm.liabilityUserPhone = data.phone
-}
-
-const getSafeLiabilityUserPhone = (value: number)=>{
- const data = projectDialogState.allPersonList.find(item => item.id === value) as AllPersonListType
- projectDialogState.projectForm.safeLiabilityUserPhone = data.phone
-}
-
-const hasSafeSystem = (value: number) =>{
- if(value == 2){
- projectDialogState.projectForm.safeInformationSystem = ''
- }
-}
-
-const onSubmitProject = async() => {
- 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({
- type: 'warning',
- message: '安全负责人姓名格式有误',
- duration: 1000
- });
- return
- }
- if(verifyPhone(projectDialogState.projectForm.safeLiabilityUserPhone) == false || verifyPhone(projectDialogState.projectForm.liabilityUserPhone) == false){
- ElMessage({
- type: 'warning',
- message: '请输入正确的手机号',
- duration: 1000
- });
- return
- }
- if(projectDialogState.projectForm.siteList.length === 0){
- ElMessage({
- type: 'warning',
- message: '请至少添加一处实验场所',
- duration: 1000
- });
- return
- }
- if(projectDialogState.projectForm.stuffList.length === 0){
- ElMessage({
- type: 'warning',
- message: '请至少选择一种试剂/材料',
- duration: 1000
- });
- return
- }
- if(projectDialogState.projectForm.deviceList.length === 0){
- ElMessage({
- type: 'warning',
- message: '请至少选择一种仪器/设备',
- duration: 1000
- });
- return
- }
- if(projectDialogState.projectForm.persons.length === 0){
- ElMessage({
- type: 'warning',
- message: '请至少添加一名实验人员',
- duration: 1000
- });
- return
- }
- projectDialogState.projectForm.emergencyList = selectEmergencyRef.value.dataList
- projectDialogState.projectForm.persons = selectPersonRef.value.dataList
- projectDialogState.projectForm.hazardousWasteList = selectDangerRef.value.dataList
- const roomList = selectRoomRef.value.dataList
- projectDialogState.projectForm.siteList = roomList.map(({siteId}) => ({siteId}))
- projectDialogState.projectForm.stuffList = selectMaterialRef.value.dataList
- projectDialogState.projectForm.deviceList = selectEquipmentRef.value.dataList
- let res = await projectApi().addDevelop(projectDialogState.projectForm);
- if(res.data.code === 100){
- emit('refresh')
- projectDialogState.projectDialogVisible = false;
- ElMessage({
- type: 'success',
- message: '新增成功'
- })
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg,
- });
- }
- }else{
- projectDialogState.projectForm.siteList = selectRoomRef.value.dataList.map(({siteId}) => ({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)
- if(res.data.code === 100){
- emit('refresh')
- projectDialogState.projectDialogVisible = false;
- ElMessage({
- type: 'success',
- message: '整改已提交'
- })
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg,
- });
- }
- }
- }else{
- ElMessage({
- type: 'warning',
- message: '请完善基本信息',
- });
- }
- })
-};
-
-const getPersonList = async () => {
- let res = await userApi().getUserList({
- pageIndex: 1,
- pageSize: 99999,
- searchParams:{
- roleId: null,
- name: '',
- realName: ''
- }
- });
- if(res.data.code === 100){
- projectDialogState.systemPersonList = JSON.parse(JSON.stringify(res.data.data));
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- })
- }
-};
-
-const getAllPersonList = async () => {
- let res = await personApi().getAllPerson();
- if(res.data.code === 100){
- projectDialogState.allPersonList = JSON.parse(JSON.stringify(res.data.data));
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- })
- }
-};
-
-const emit = defineEmits(['refresh']);
-
-defineExpose({
- showDevelopDialog,
-});
-
-onMounted(() => {
- getAllPersonList();
- getPersonList();
-});
-</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;
-
- :deep(.el-input__wrapper ){
- box-shadow: none;
- margin-top: 6px;
- }
-
-&: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%;
-}
-}
-}
-
-.b-font {
- font-size: 16px;
- font-weight: bolder;
-}
-}
-
-.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{
- height: auto;
- padding: 0;
-
- .roomTable{
- width: 100%;
- display: flex;
- border-bottom: 1px solid #ebeef5;
-
- &:last-of-type{
- border-bottom: none;
- }
-
- &>div{
- width: 25%;
- border-right: 1px dashed #ebeef5;
- &:last-of-type{
- border-right: none;
- }
-
- div{
- width: 100%;
- }
- .roomTit{
- border-bottom: 1px solid #ebeef5;
- }
- }
- }
- }
- .el-select-dropdown__item.selected{
- .roomTit{
- color: #606266;
- font-weight: normal;
- }
- }
- }
-}
-
-:deep(.el-dialog__footer){
- padding-top: 20px;
- display: flex;
- justify-content: center;
-}
-
-
-</style>
diff --git a/src/views/experiment/developing/components/selectDanger.vue b/src/views/experiment/developing/components/selectDanger.vue
deleted file mode 100644
index 8ef010c..0000000
--- a/src/views/experiment/developing/components/selectDanger.vue
+++ /dev/null
@@ -1,184 +0,0 @@
-<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 selectDangerState.wasteList" :key="index">
- <td class="w-20">
- {{ index + 1 }}
- </td>
- <td class="w-20">
- <el-select :disabled="selectDangerState.disabled" v-model="item.classify" clearable filterable>
- <el-option v-for="item in selectDangerState.classifyList" :key="item.id" :label="item.name" :value="item.id"></el-option>
- </el-select>
- </td>
- <td class="w-20">
- <el-select :disabled="selectDangerState.disabled" v-model="item.wasteStorage" clearable filterable>
- <el-option v-for="item in selectDangerState.wasteStorageList" :key="item.id" :label="item.name" :value="item.id"></el-option>
- </el-select>
- </td>
- <td class="w-20">
- <el-input type="number" v-model="item.handAmount"></el-input>
- </td>
- <td class="w-20">
- <el-button :disabled="selectDangerState.disabled" type="danger" @click="deleteDangerItem(index)">删除</el-button>
- </td>
- </tr>
- <tr style="text-align: center">
- <el-button :disabled="selectDangerState.disabled" type="primary" shape="round" @click="addDangerItem()">
- 添加行
- </el-button>
- </tr>
-</template>
-
-<script setup lang="ts">
-import {reactive, watchEffect} from "vue";
-
-let props = defineProps({
- disabled: Boolean,
- data: Array<WasteType>
-});
-
-const selectDangerState = reactive<SelectDangerType>({
- disabled: false,
- wasteList: [
- ],
- classifyList:[
- {id:1, name: '有机'},
- {id:2, name: '酸'},
- {id:3, name: '碱性'},
- {id:4, name: '固体废弃物'},
- {id:5, name: '医疗废弃物'},
- {id:6, name: '过期化学品'},
- {id:7, name: '其他'}
- ],
- wasteStorageList: [
- {id:1, name: '吨袋'},
- {id:2, name: '吨桶'},
- {id:3, name: '小桶'},
- {id:4, name: '托盘'},
- {id:5, name: '其他'},
- ]
-})
-
-watchEffect(() => {
- selectDangerState.wasteList = props.data as Array<WasteType>
- selectDangerState.disabled = props.disabled
-});
-
-const addDangerItem = () => {
- selectDangerState.wasteList.push({classify: null, wasteStorage: null, handAmount: null,});
-};
-
-const deleteDangerItem = (index: number) => {
- selectDangerState.wasteList.splice(index,1);
-};
-
-const formatList = (formatList: Array<WasteType>) => {
- selectDangerState.wasteList = formatList
-}
-
-defineExpose({
- formatList,
- dataList: selectDangerState.wasteList,
-});
-
-</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;
- }
-
- &.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%;
- }
- }
- }
-
- .b-font {
- font-size: 16px;
- font-weight: bolder;
- }
-}
-
-.m-color {
- color: #0c4995;
-}
-:deep(.el-input__wrapper ){
- box-shadow: none;
-}
-</style>
diff --git a/src/views/experiment/developing/components/selectEquipment.vue b/src/views/experiment/developing/components/selectEquipment.vue
deleted file mode 100644
index fb9db03..0000000
--- a/src/views/experiment/developing/components/selectEquipment.vue
+++ /dev/null
@@ -1,208 +0,0 @@
-<template>
- <tr class="m-color b-font" style="text-align: center">实验所用的仪器/设备</tr>
- <tr>
- <td class="w-16 m-color">设备名称</td>
- <td class="w-16 m-color">编号</td>
- <td class="w-16 m-color">额定功率</td>
- <td class="w-16 m-color">是否特种</td>
- <td class="w-16 m-color">设备数量</td>
- <td class="w-16 m-color">操作</td>
- </tr>
- <tr v-for="(item,index) in selectEquipmentState.equipmentList" :key="index">
- <td class="w-16">
- <el-select :disabled="selectEquipmentState.disabled" filterable v-model="item.deviceId" @change="giveOtherEquipmentValue($event, index)">
- <el-option
- v-for="item in selectEquipmentState.allEquipmentList"
- :key="item.id"
- :value="item.id"
- :label="item.deviceName"
- >
- </el-option>
- </el-select>
- </td>
- <td class="w-16">
- <el-input :disabled="selectEquipmentState.disabled" v-model="item.deviceCode" placeholder="请输入数量" />
- </td>
- <td class="w-16">
- <el-input :disabled="selectEquipmentState.disabled" v-model="item.devicePower" />
- </td>
- <td class="w-16">
- <el-radio-group :disabled="selectEquipmentState.disabled" v-model="item.specialDevice">
- <el-radio :label="1">是</el-radio>
- <el-radio :label="2">否</el-radio>
- </el-radio-group>
- </td>
- <td class="w-16">
- <el-input type="number" v-model="item.deviceUseCount" />
- </td>
- <td class="w-16">
- <el-button :disabled="selectEquipmentState.disabled" type="danger" @click="deleteEquipmentItem(index)">删除</el-button>
- </td>
- </tr>
- <tr style="text-align: center">
- <el-button :disabled="selectEquipmentState.disabled" type="primary" shape="round" @click="addEquipmentItem()">
- 选择实验仪器
- </el-button>
- </tr>
-</template>
-
-<script setup lang="ts">
-import {onMounted, reactive, watchEffect} from "vue";
-import {ElMessage} from "element-plus";
-import { equipmentApi } from "/@/api/basic/equipement";
-
-let props = defineProps({
- disabled: Boolean,
- data: Array<AllEquipmentListType>
-});
-
-const selectEquipmentState = reactive<SelectEquipmentType>({
- disabled: false,
- equipmentList: [],
- allEquipmentList: [],
-});
-
-watchEffect(() => {
- selectEquipmentState.equipmentList = props.data as Array<AllEquipmentListType>
- selectEquipmentState.disabled = props.disabled
-});
-
-const addEquipmentItem = () => {
- selectEquipmentState.equipmentList.push({deviceId: null, deviceUseCount: null, deviceCode: '', deviceName: '', devicePower: '', specialDevice: '',});
-};
-
-const deleteEquipmentItem = (index: number) => {
- selectEquipmentState.equipmentList.splice(index,1);
-};
-
-const getAllEquipmentList = async () => {
- let res = await equipmentApi().getAllEquipment();
- if(res.data.code === 100){
- selectEquipmentState.allEquipmentList = JSON.parse(JSON.stringify(res.data.data));
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- })
- }
-};
-
-const giveOtherEquipmentValue = (value: number, index:number) => {
- const data = selectEquipmentState.allEquipmentList.find(item => item.id === value) as AllEquipmentListType
- selectEquipmentState.equipmentList[index] = {
- deviceId: data.id,
- deviceUseCount: null,
- deviceCode: data.deviceCode,
- deviceName: data.deviceName,
- devicePower: data.devicePower,
- specialDevice: data.specialDevice
- }
-};
-
-const formatList = (formatList: Array<AllEquipmentListType>) => {
- selectEquipmentState.equipmentList = formatList
-}
-
-defineExpose({
- dataList: selectEquipmentState.equipmentList,
- formatList
-});
-
-onMounted(() => {
- getAllEquipmentList();
-});
-</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;
- }
-
- &.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%;
- }
- }
- }
-
- .b-font {
- font-size: 16px;
- font-weight: bolder;
- }
-}
-
-.m-color {
- color: #0c4995;
-}
-:deep(.el-input__wrapper ){
- box-shadow: none;
-}
-</style>
diff --git a/src/views/experiment/developing/components/selectMaterial.vue b/src/views/experiment/developing/components/selectMaterial.vue
deleted file mode 100644
index bb29d5f..0000000
--- a/src/views/experiment/developing/components/selectMaterial.vue
+++ /dev/null
@@ -1,210 +0,0 @@
-<template>
- <tr class="m-color b-font" style="text-align: center">实验所用的试剂或材料</tr>
- <tr>
- <td class="w-14 m-color">实验材料</td>
- <td class="w-14 m-color">耗材ID</td>
- <td class="w-14 m-color">材料类型</td>
- <td class="w-14 m-color">材料储存</td>
- <td class="w-14 m-color">计量单位</td>
- <td class="w-14 m-color">使用数量</td>
- <td class="w-14 m-color">操作</td>
- </tr>
- <tr v-for="(item,index) in selectMaterialState.materialList" :key="index">
- <td class="w-14">
- <el-select :disabled="selectMaterialState.disabled" filterable v-model="item.stuffId" @change="giveOtherMaterialValue($event, index)">
- <el-option
- v-for="item in selectMaterialState.allMaterialList"
- :key="item.id"
- :value="item.id"
- :label="item.stuffName"
- >
- </el-option>
- </el-select>
- </td>
- <td class="w-14">
- <el-input :disabled="selectMaterialState.disabled" v-model="item.stuffCode" />
- </td>
- <td class="w-14">
- <el-input :disabled="selectMaterialState.disabled" v-model="item.stuffType" />
- </td>
- <td class="w-14">
- <el-input :disabled="selectMaterialState.disabled" v-model="item.stuffStorage" />
- </td>
- <td class="w-14">
- <el-input :disabled="selectMaterialState.disabled" v-model="item.stuffUnit" />
- </td>
- <td class="w-14">
- <el-input type="number" v-model="item.stuffUseCount" />
- </td>
- <td class="w-14">
- <el-button type="danger" :disabled="selectMaterialState.disabled" @click="deleteMaterialItem(index)">删除</el-button>
- </td>
- </tr>
- <tr style="text-align: center">
- <el-button :disabled="selectMaterialState.disabled" type="primary" shape="round" @click="addMaterialItem()">
- 选择实验材料
- </el-button>
- </tr>
-</template>
-
-<script setup lang="ts">
-import {onMounted, reactive, watchEffect} from "vue";
-import { materialApi } from "/@/api/basic/material";
-import {ElMessage} from "element-plus";
-let props = defineProps({
- disabled: Boolean,
- data: Array<AllMaterialListType>
-});
-
-const selectMaterialState = reactive<SelectMaterialType>({
- disabled: false,
- materialList: [],
- allMaterialList: [],
-})
-
-const addMaterialItem = () => {
- selectMaterialState.materialList.push({stuffId: null, stuffUseCount: null, stuffName: '',stuffCode:'',stuffType: '', stuffStorage: '', stuffUnit: ''});
-};
-
-watchEffect(() => {
- selectMaterialState.materialList = props.data as Array<AllMaterialListType>
- selectMaterialState.disabled = props.disabled
-});
-
-const deleteMaterialItem = (index: number) => {
- selectMaterialState.materialList.splice(index,1);
-};
-
-const getAllPersonList = async () => {
- let res = await materialApi().getAllMaterial();
- if(res.data.code === 100){
- selectMaterialState.allMaterialList = JSON.parse(JSON.stringify(res.data.data));
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- })
- }
-};
-
-const giveOtherMaterialValue = (value: number, index:number) => {
- const data = selectMaterialState.allMaterialList.find(item => item.id === value) as AllMaterialListType
- selectMaterialState.materialList[index] = {
- stuffId: data.id,
- stuffUseCount: data.stuffUseCount,
- stuffName: data.stuffName,
- stuffCode: data.stuffCode,
- stuffType: data.stuffType,
- stuffStorage: data.stuffStorage,
- stuffUnit: data.stuffUnit
- };
-};
-
-const formatList = (formatList: Array<AllMaterialListType>) => {
- selectMaterialState.materialList = formatList
-};
-
-defineExpose({
- dataList: selectMaterialState.materialList,
- formatList
-});
-
-
-onMounted(() => {
- getAllPersonList();
-});
-</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;
- }
-
- &.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%;
- }
- }
- }
-
- .b-font {
- font-size: 16px;
- font-weight: bolder;
- }
-}
-
-.m-color {
- color: #0c4995;
-}
-:deep(.el-input__wrapper ){
- box-shadow: none;
-}
-</style>
diff --git a/src/views/experiment/developing/components/selectPerson.vue b/src/views/experiment/developing/components/selectPerson.vue
deleted file mode 100644
index e0359b8..0000000
--- a/src/views/experiment/developing/components/selectPerson.vue
+++ /dev/null
@@ -1,218 +0,0 @@
-<template>
- <tr class="m-color b-font" style="text-align: center">实验人员</tr>
- <tr>
- <td class="w-14 m-color">姓名</td>
- <td class="w-14 m-color">年龄</td>
- <td class="w-14 m-color">性别</td>
- <td class="w-14 m-color">专业</td>
- <td class="w-14 m-color">部门</td>
- <td class="w-14 m-color">相关资质</td>
- <td class="w-14 m-color">操作</td>
- </tr>
- <tr v-for="(item,index) in selectPersonState.personList" :key="index">
- <td class="w-14">
- <el-select filterable :disabled="selectPersonState.disabled" v-model="item.personId" @change="giveOtherPersonValue($event, index)">
- <el-option
- v-for="item in selectPersonState.allPersonList"
- :key="item.id"
- :value="item.id"
- :label="item.personName"
- >
- </el-option>
- </el-select>
- </td>
- <td class="w-14">
- <el-input :disabled="selectPersonState.disabled" v-model="item.personAge" />
- </td>
- <td class="w-14">
- <el-input :disabled="selectPersonState.disabled" v-model="item.personGender" />
- </td>
- <td class="w-14">
- <el-input :disabled="selectPersonState.disabled" v-model="item.personMajor" />
- </td>
- <td class="w-14">
- <el-input :disabled="selectPersonState.disabled" v-model="item.depName" />
- </td>
- <td class="w-14">
- <el-input :disabled="selectPersonState.disabled" v-model="item.aptitude" />
- </td>
- <td class="w-14">
- <el-button type="danger" :disabled="selectPersonState.disabled" @click="deletePersonItem(index)">删除</el-button>
- </td>
- </tr>
- <tr style="text-align: center">
- <el-button :disabled="selectPersonState.disabled" type="primary" shape="round" @click="addPersonItem()">
- 选择实验人员
- </el-button>
- </tr>
-</template>
-
-<script setup lang="ts">
-import {nextTick, onMounted, reactive, watchEffect} from "vue";
-import { personApi } from "/@/api/basic/person";
-import {ElMessage} from "element-plus";
-
-let props = defineProps({
- disabled: Boolean,
- data: Array<AllPersonListType>
-
-});
-
-const selectPersonState = reactive<SelectPersonType>({
- disabled: false,
- personList: [],
- allPersonList: [
- ],
-});
-
-watchEffect(() => {
- selectPersonState.personList = props.data as Array<AllPersonListType>
- selectPersonState.disabled = props.disabled
-});
-
-const addPersonItem = () => {
- selectPersonState.personList.push({personId: null, personName: null, personAge: null, personGender:'',personMajor:'',depName:'',phone:'',aptitude:'',training:''});
-};
-
-const deletePersonItem = (index: number) => {
- selectPersonState.personList.splice(index,1);
-};
-
-const getAllPersonList = async () => {
- let res = await personApi().getAllPerson();
- if(res.data.code === 100){
- selectPersonState.allPersonList = JSON.parse(JSON.stringify(res.data.data));
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- })
- }
-};
-
-const giveOtherPersonValue = (value: number, index:number) => {
- // selectPersonState.personList[index] = selectPersonState.allPersonList.find(item => item.id === value) as AllPersonListType
- const data = selectPersonState.allPersonList.find(item => item.id === value) as AllPersonListType
- selectPersonState.personList[index] = {
- personId: data.id,
- personName: data.personName,
- personAge: data.personAge,
- personGender: data.personGender,
- personMajor: data.personMajor,
- depName: data.depName,
- phone: data.phone,
- aptitude: data.aptitude,
- training: data.training,
- };
-};
-
-const formatList = (formatList: Array<AllPersonListType>) => {
- nextTick(() => {
- selectPersonState.personList = formatList
- })
-
-};
-
-defineExpose({
- formatList,
- dataList: selectPersonState.personList,
-});
-
-onMounted(() => {
- getAllPersonList();
-});
-</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;
- }
-
- &.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%;
- }
- }
- }
-
- .b-font {
- font-size: 16px;
- font-weight: bolder;
- }
-}
-
-.m-color {
- color: #0c4995;
-}
-:deep(.el-input__wrapper ){
- box-shadow: none;
-}
-</style>
diff --git a/src/views/experiment/developing/index.vue b/src/views/experiment/developing/index.vue
deleted file mode 100644
index a88ac4b..0000000
--- a/src/views/experiment/developing/index.vue
+++ /dev/null
@@ -1,424 +0,0 @@
-<template>
- <div class="home-container">
- <div style="height: 100%">
- <el-row class="homeCard">
- <div class="basic-line">
- <span>实验名称:</span>
- <el-input v-model="developState.searchQuery.searchParams.experimentName" clearable filterable class="input-box" placeholder="实验名称">
- </el-input>
- </div>
- <div class="basic-line">
- <span>实验类型:</span>
- <el-select v-model="developState.searchQuery.searchParams.experimentType" clearable filterable class="input-box" placeholder="实验类型">
- <el-option v-for="item in developState.experimentTypeList" :key="item.id" :label="item.name" :value="item.id"></el-option>
- </el-select>
- </div>
- <div style="padding-bottom: 10px">
- <el-button type="primary" @click="getdevelopData">查询</el-button>
- <el-button plain @click="reset">重置</el-button>
- </div>
- </el-row>
- <div class="homeCard">
- <div class="main-card">
- <el-row class="cardTop">
- <el-col :span="12" class="mainCardBtn">
- <el-button type="primary" :icon="Plus" size="default" @click="openProjectDialog('新增', {})">录入实验信息</el-button>
- <!-- <el-button type="danger" :icon="Delete" size="default" plain>删除</el-button>-->
- </el-col>
-<!-- <el-button type="primary" :icon="Refresh" size="default" />-->
- </el-row>
- <el-table ref="multipleTableRef" :data="developState.developData" style="width: 100%" height="calc(100% - 100px)" :header-cell-style="{ background: '#fafafa' }">
- <el-table-column prop="experimentCode" label="实验编号"/>
- <el-table-column prop="experimentName" label="实验名称"/>
- <el-table-column prop="createExperimentTime" label="立项时间">
- <template #default="scope">
- <span>{{scope.row.createExperimentTime?scope.row.createExperimentTime.substring(0,16):'--'}}</span>
- </template>
- </el-table-column>
- <el-table-column prop="startTime" label="开展时间" show-overflow-tooltip>
- <template #default="scope">
- <span>{{scope.row.startTime?scope.row.startTime.substring(0,16):'--'}}</span>
- </template>
- </el-table-column>
- <el-table-column prop="liabilityUser" label="负责人"/>
- <el-table-column prop="siteList" label="实验场所" show-overflow-tooltip>
- <template #default="scope">
- <span>{{scope.row.siteList.map(i=>i.siteName).join(',')}}</span>
- </template>
- </el-table-column>
- <el-table-column prop="experimentType" label="实验类别">
- <template #default="scope">
- <span>{{developState.experimentTypeList.find(i=>i.id == scope.row.experimentType)?.name}}</span>
- </template>
- </el-table-column>
- <el-table-column prop="status" label="评估申请">
- <template #default="scope">
- <span>{{scope.row.status == 1?'未申请':scope.row.status == 2?'已申请':'--'}}</span>
- </template>
- </el-table-column>
- <el-table-column prop="status" label="评估申请时间" show-overflow-tooltip>
- <template #default="scope">
- <span>{{scope.row.assessApplyTime?scope.row.assessApplyTime.substring(0,16):'--'}}</span>
- </template>
- </el-table-column>
- <el-table-column prop="stage" label="评估状态">
- <template #default="scope">
- <el-tag :type="scope.row.stage == 4?'success':scope.row.stage == 1?'info':''">
- {{scope.row.stage == 1?'未评估':scope.row.stage == 2?'评估中':scope.row.stage == 3?'评估完成':scope.row.stage == 4?'生成报告':'--'}}
- </el-tag>
- </template>
- </el-table-column>
- <el-table-column prop="assessLevel" label="风险等级">
- <template #default="scope">
- <el-tag :type="scope.row.assessLevel == 4?'danger':scope.row.assessLevel == 3 || scope.row.assessLevel == 2?'warning':''">
- {{scope.row.assessLevel == 1?'重大风险':scope.row.assessLevel == 2?'较大风险':scope.row.assessLevel == 3?'一般风险':scope.row.assessLevel == 4?'低风险':'--'}}
- </el-tag>
- </template>
- </el-table-column>
-<!-- <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 prop="updateTime" label="最后修改时间" show-overflow-tooltip></el-table-column>-->
-<!-- <el-table-column prop="updateByUserName" label="最后修改人" show-overflow-tooltip></el-table-column>-->
- <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>
- </template>
- </el-table-column>
- </el-table>
- <div class="pageBtn">
- <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" :pager-count="5" :page-sizes="[10, 20, 30]" v-model:current-page="developState.searchQuery.pageIndex" background v-model:page-size="developState.searchQuery.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="developState.total" class="page-position"> </el-pagination>
- </div>
- </div>
- </div>
- </div>
- <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>
-
-<script setup lang="ts">
-import {defineAsyncComponent, onMounted, reactive, ref} from "vue";
-import {projectApi} from "/@/api/experiment/project";
-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 ReportDialogRef = ref()
-const developState = reactive<ProjectStateType>({
- developData: [],
- searchQuery: {
- pageIndex: 1,
- pageSize: 10,
- searchParams: {
- experimentName: '',
- experimentType: null,
- }
- },
- total: 0,
- experimentTypeList: [
- {id: 1, name: '化学类'},
- {id: 2, name: '生物类'},
- {id: 3, name: '辐射类'},
- {id: 4, name: '机电类'},
- {id: 5, name: '特种设备类'},
- {id: 6, name: '其它类'},
- ],
- allRoomList: []
-})
-
-const getdevelopData = async () => {
- let res = await projectApi().getDevelopByList(developState.searchQuery);
- if(res.data.code === 100){
- developState.developData = res.data.data;
- developState.total = res.data.total;
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- });
- }
-};
-
-const openProjectDialog = (title: string, value: ProjectType) => {
- 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: '确认',
- cancelButtonText: '取消',
- type: 'warning'
- })
- .then(async () => {
- let res = await projectApi().accessProject([val.id]);
- if (res.data.code === 100) {
- ElMessage({
- type: 'success',
- duration: 2000,
- message: '申请成功'
- });
- await getdevelopData();
- } else {
- ElMessage({
- type: 'warning',
- message: res.data.msg
- });
- }
- })
- .catch((error) => {
- });
-}
-
-const cancelAccess = (val: ProjectType) => {
- ElMessageBox.confirm(`此操作将撤销评估该实验:“${val.experimentName}”,是否继续?`, '提示', {
- confirmButtonText: '确认',
- cancelButtonText: '取消',
- type: 'warning'
- })
- .then(async () => {
- let res = await projectApi().cancelProject([val.id]);
- if (res.data.code === 100) {
- ElMessage({
- type: 'success',
- duration: 2000,
- message: '撤销成功'
- });
- await getdevelopData();
- } else {
- ElMessage({
- type: 'warning',
- message: res.data.msg
- });
- }
- })
- .catch((error) => {
- });
-}
-
-const onDelProject = (val: ProjectType) => {
- ElMessageBox.confirm(`此操作将永久删除该实验:“${val.experimentCode}”,是否继续?`, '提示', {
- confirmButtonText: '确认',
- cancelButtonText: '取消',
- type: 'warning'
- })
- .then(async () => {
- debugger
- let res = await projectApi().deleteProjectById({ id: val.id });
- if (res.data.code === 100) {
- ElMessage({
- type: 'success',
- duration: 2000,
- message: '删除成功'
- });
- await getdevelopData();
- } else {
- ElMessage({
- type: 'warning',
- message: res.data.msg
- });
- }
- })
- .catch((error) => {
- });
-}
-
-const onHandleSizeChange = (val: number) => {
- developState.searchQuery.pageSize = val;
- getdevelopData();
-};
-
-const onHandleCurrentChange = (val: number) => {
- developState.searchQuery.pageIndex = val;
- getdevelopData();
-};
-
-const reset = () => {
- developState.searchQuery = {
- pageIndex: 1,
- pageSize: 10,
- searchParams: {
- experimentName: '',
- experimentType: null,
- }
- }
-};
-
-const getRoomData = async () => {
- let res = await roomApi().getAllRoom();
- if(res.data.code === 100){
- developState.allRoomList = JSON.parse(JSON.stringify(res.data.data));
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- });
- }
-};
-
-onMounted(() => {
- getdevelopData();
- getRoomData();
-})
-
-</script>
-
-<style scoped lang="scss">
-$homeNavLengh: 8;
-.home-container {
- height: calc(100vh - 144px);
- box-sizing: border-box;
- overflow: hidden;
- .homeCard {
- width: 100%;
- padding: 20px;
- box-sizing: border-box;
- background: #fff;
- border-radius: 4px;
-
- .main-card {
- width: 100%;
- height: 100%;
- .cardTop {
- display: flex;
- align-items: center;
- justify-content: space-between;
- margin-bottom: 20px;
- .mainCardBtn {
- margin: 0;
- }
- }
- .pageBtn {
- height: 60px;
- display: flex;
- align-items: center;
- justify-content: right;
-
- .demo-pagination-block + .demo-pagination-block {
- margin-top: 10px;
- }
- .demo-pagination-block .demonstration {
- margin-bottom: 16px;
- }
- }
- }
- &:last-of-type {
- height: calc(100% - 100px);
- }
- }
- .el-row {
- display: flex;
- align-items: center;
- margin-bottom: 20px;
- &:last-child {
- margin-bottom: 0;
- }
- .grid-content {
- align-items: center;
- min-height: 36px;
- }
-
- .topInfo {
- display: flex;
- align-items: center;
- font-size: 16px;
- font-weight: bold;
-
- & > div {
- white-space: nowrap;
- margin-right: 20px;
- }
- }
- }
-}
-.stepItem {
- width: 100%;
- display: flex;
- align-items: flex-start;
- margin-bottom: 30px;
- margin-left: 30px;
- padding-bottom: 30px;
- border-left: 2px solid #ccc;
- &:first-of-type {
- margin-top: 30px;
- }
- &:last-of-type {
- margin-bottom: 0;
- border-left: none;
- }
- .stepNum {
- width: 30px;
- height: 30px;
- border-radius: 15px;
- box-sizing: border-box;
- color: #333;
- border: 1px solid #999;
- line-height: 28px;
- text-align: center;
- margin-right: 10px;
- margin-left: -16px;
- margin-top: -30px;
- }
- .stepCard {
- width: 100%;
- margin-top: -30px;
-
- .box-card {
- width: 100%;
- &:deep(.el-card__header) {
- padding: 10px 15px;
- }
- .card-header {
- width: 100%;
- display: flex;
- justify-content: space-between;
- align-items: center;
- & > div:first-of-type {
- margin-right: 80px;
- font-size: 18px;
- font-weight: bold;
- }
- }
- }
- }
- &:hover .card-header {
- color: #0098f5;
- }
- &:hover .stepNum {
- border: 2px solid #0098f5;
- color: #0098f5;
- }
-}
-
-:deep(.el-date-editor) {
- width: 100%;
-}
-.el-select {
- width: 100%;
-}
-:deep(.el-textarea.is-disabled .el-textarea__inner) {
- background-color: var(--el-card-bg-color);
- color: var(--el-input-text-color, var(--el-text-color-regular));
-}
-:deep(.el-input.is-disabled .el-input__inner) {
- color: var(--el-input-text-color, var(--el-text-color-regular));
-}
-:deep(.el-input.is-disabled .el-input__wrapper) {
- background-color: var(--el-card-bg-color);
- box-shadow: none;
-}
-</style>
diff --git a/src/views/experiment/project/components/applyDialog.vue b/src/views/experiment/project/components/applyDialog.vue
deleted file mode 100644
index 404c391..0000000
--- a/src/views/experiment/project/components/applyDialog.vue
+++ /dev/null
@@ -1,107 +0,0 @@
-<template>
- <div class="system-menu-dialog-container">
- <el-dialog :title="applyStartDialogState.title" v-model="applyStartDialogState.applyStartDialogVisible" width="600px">
- <el-form ref="applyStartFormRef" :rules="applyStartDialogState.applyStartFormRules" :model="applyStartDialogState.applyStartForm" size="default" label-width="160px">
- <el-row :gutter="35">
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="实验开始时间" prop="startTime">
- <el-date-picker type="datetime" format="YYYY/MM/DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" v-model="applyStartDialogState.applyStartForm.startTime" class="input-length"/>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="是否使用安全信息化系统" prop="sisStatus">
- <el-radio-group v-model="applyStartDialogState.applyStartForm.sisStatus">
- <el-radio :label="1">是</el-radio>
- <el-radio :label="2">否</el-radio>
- </el-radio-group>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20" v-if="applyStartDialogState.applyStartForm.sisStatus==1">
- <el-form-item label="安全信息化系统名称" prop="safeInformationSystem">
- <el-input v-model="applyStartDialogState.applyStartForm.safeInformationSystem" placeholder="材料类型" class="input-length">
- </el-input>
- </el-form-item>
- </el-col>
- </el-row>
- </el-form>
- <template #footer>
- <span class="dialog-footer">
- <el-button @click="applyStartDialogState.applyStartDialogVisible = !applyStartDialogState.applyStartDialogVisible" size="default">取 消</el-button>
- <el-button type="primary" @click="onSubmitApplyStart" size="default">确定</el-button>
- </span>
- </template>
- </el-dialog>
- </div>
-</template>
-
-<script setup lang="ts">
-import { reactive, ref } from "vue";
-import {ElMessage} from "element-plus";
-import {projectApi} from "/@/api/experiment/project";
-
-const applyStartFormRef = ref()
-
-const applyStartDialogState = reactive<ApplyStartDialogType>({
- title: '转为已开展',
- applyStartDialogVisible: false,
- applyStartForm: {
- id: null,
- sisStatus: null,
- safeInformationSystem: '',
- startTime: '',
- },
- applyStartFormRules: {
-
- },
-})
-
-const showApplyStartDialog = (value: ProjectType) => {
- applyStartDialogState.applyStartDialogVisible = true;
- applyStartDialogState.applyStartForm = {
- id: null,
- sisStatus: null,
- safeInformationSystem: '',
- startTime: ''
- },
- applyStartDialogState.applyStartForm.id = <number>value.id
-};
-
-const onSubmitApplyStart = () => {
- applyStartFormRef.value.validate(async(valid: boolean) => {
- if(valid){
- if(applyStartDialogState.applyStartForm.sisStatus == 2){
- applyStartDialogState.applyStartForm.safeInformationSystem = ''
- }
- let res = await projectApi().applyProject([applyStartDialogState.applyStartForm]);
- if(res.data.code === 100){
- emit('refresh')
- applyStartDialogState.applyStartDialogVisible = false;
- ElMessage({
- type: 'success',
- message: '申请开展成功'
- })
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg,
- });
- }
- }else{
- ElMessage({
- type: 'warning',
- message: '请完善基本信息',
- });
- }
- })
-};
-
-const emit = defineEmits(['refresh'])
-
-defineExpose({
- showApplyStartDialog
-})
-</script>
-
-<style scoped>
-
-</style>
diff --git a/src/views/experiment/project/components/applyStart.vue b/src/views/experiment/project/components/applyStart.vue
deleted file mode 100644
index 8906f6e..0000000
--- a/src/views/experiment/project/components/applyStart.vue
+++ /dev/null
@@ -1,101 +0,0 @@
-<template>
- <div class="system-menu-dialog-container">
- <el-dialog :title="applyStartDialogState.title" v-model="applyStartDialogState.applyStartDialogVisible" width="600px">
- <el-form ref="applyStartFormRef" :rules="applyStartDialogState.applyStartFormRules" :model="applyStartDialogState.applyStartForm" size="default" label-width="120px">
- <el-row :gutter="35">
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="实验材料" prop="stuffName">
- <el-date-picker type="datetime" format="YYYY/MM/DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" v-model="applyStartDialogState.applyStartForm.startTime" class="input-length"/>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="编号" prop="sisStatus">
- <el-radio-group v-model="applyStartDialogState.applyStartForm.sisStatus">
- <el-radio :label="1">是</el-radio>
- <el-radio :label="2">否</el-radio>
- </el-radio-group>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="材料类型" prop="stuffType">
- <el-select v-model="applyStartDialogState.applyStartForm.safeInformationSystem" placeholder="材料类型" class="input-length">
- </el-select>
- </el-form-item>
- </el-col>
- </el-row>
- </el-form>
- <template #footer>
- <span class="dialog-footer">
- <el-button @click="applyStartDialogState.applyStartDialogVisible = !applyStartDialogState.applyStartDialogVisible" size="default">取 消</el-button>
- <el-button type="primary" @click="onSubmitApplyStart" size="default">确定</el-button>
- </span>
- </template>
- </el-dialog>
- </div>
-</template>
-
-<script setup lang="ts">
-import { reactive, ref } from "vue";
-import {ElMessage} from "element-plus";
-import {projectApi} from "/@/api/experiment/project";
-
-const applyStartFormRef = ref()
-
-const applyStartDialogState = reactive<ApplyStartDialogType>({
- title: '',
- applyStartDialogVisible: false,
- applyStartForm: {
- id: null,
- sisStatus: null,
- safeInformationSystem: '',
- startTime: '',
- },
- applyStartFormRules: {
- stuffCode: [{ required: true, message: '请填写实验材料', trigger: 'blur' }],
- stuffName: [{ required: true, message: '请填写编号', trigger: 'blur' }],
- stuffStorage: [{ required: true, message: '请选择材料类型', trigger: 'change' }],
- stuffType: [{ required: true, message: '请选择材料储存', trigger: 'change' }],
- stuffUnit: [{ required: true, message: '请选择计量单位', trigger: 'change' }]
- },
-})
-
-const showApplyStartDialog = (value: ProjectType) => {
- applyStartDialogState.applyStartDialogVisible = true;
-};
-
-const onSubmitApplyStart = () => {
- applyStartFormRef.value.validate(async(valid: boolean) => {
- if(valid){
- let res = await projectApi().applyProject(applyStartDialogState.applyStartForm);
- if(res.data.code === 100){
- emit('refresh')
- applyStartDialogState.applyStartDialogVisible = false;
- ElMessage({
- type: 'success',
- message: '申请开展成功'
- })
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg,
- });
- }
- }else{
- ElMessage({
- type: 'warning',
- message: '请完善基本信息',
- });
- }
- })
-};
-
-const emit = defineEmits(['refresh'])
-
-defineExpose({
- showApplyStartDialog
-})
-</script>
-
-<style scoped>
-
-</style>
diff --git a/src/views/experiment/project/components/projectDialog.vue b/src/views/experiment/project/components/projectDialog.vue
deleted file mode 100644
index e34c4a4..0000000
--- a/src/views/experiment/project/components/projectDialog.vue
+++ /dev/null
@@ -1,775 +0,0 @@
-<template>
- <div class="system-menu-dialog-container">
- <el-dialog :title="projectDialogState.title" v-model="projectDialogState.projectDialogVisible" width="80%">
- <el-form ref="ProjectFormRef" :rules="projectDialogState.projectFormRules" :model="projectDialogState.projectForm" size="default" label-width="0">
- <table class="report-table">
- <th class="m-color b-font" style="text-align: center">***研究所/***大学<br />科学研究实验项目安全风险基础信息录入表(新立项)(带<span style="color: red">*</span>为必填项)</th>
- <tr>
- <td class="w-25 m-color required">实验名称</td>
- <td class="w-75 m-color">
- <el-form-item prop="experimentName">
- <el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.experimentName" 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="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="3">辐射类</el-radio>
- <el-radio :label="4">机电类</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-25 m-color">
- <el-form-item prop="dep">
- <el-input :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.dep" />
- </el-form-item>
- </td>
- <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>
- </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%" v-model="projectDialogState.projectForm.liabilityUserId" clearable filterable @change="getLiabilityUserPhone($event)">-->
-<!-- <el-option-->
-<!-- v-for="item in projectDialogState.systemPersonList"-->
-<!-- :key="item.id"-->
-<!-- :value="item.id"-->
-<!-- :label="item.realName"-->
-<!-- ></el-option>-->
-<!-- </el-select>-->
- <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>
- <td class="w-25 m-color required">安全负责人</td>
- <td class="w-25 m-color">
-<!-- <el-select style="width: 100%" :disabled="projectDialogState.disabled" v-model="projectDialogState.projectForm.safeLiabilityUser" @change="getSafeLiabilityUserPhone($event)" clearable filterable>-->
-<!-- <el-option-->
-<!-- v-for="item in projectDialogState.allPersonList"-->
-<!-- :key="item.id"-->
-<!-- :value="item.id"-->
-<!-- :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>
- <select-room ref="selectRoomRef" v-model:disabled="projectDialogState.disabled" v-model:data="projectDialogState.projectForm.siteList"></select-room>
- <select-material ref="selectMaterialRef" v-model:disabled="projectDialogState.disabled" v-model:data="projectDialogState.projectForm.stuffList"></select-material>
- <select-equipment ref="selectEquipmentRef" v-model:disabled="projectDialogState.disabled" v-model:data="projectDialogState.projectForm.deviceList"></select-equipment>
- <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" 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" 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>-->
-<!-- <td class="w-25 m-color">安全信息化系统使用情况</td>-->
-<!-- <td class="w-25 m-color">-->
-<!-- <el-radio-group v-model="projectDialogState.projectForm.useIT">-->
-<!-- <el-radio value="1">是</el-radio>-->
-<!-- <el-radio value="2">否</el-radio>-->
-<!-- </el-radio-group>-->
-<!-- </td>-->
-<!-- <td class="w-25 m-color">系统名称</td>-->
-<!-- <td class="w-25 m-color">-->
-<!-- <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-75 m-color">
- <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>
- </el-form>
- <template #footer>
- <span class="dialog-footer" style="padding-top:10px;text-align: center !important;">
- <el-button @click="projectDialogState.projectDialogVisible = !projectDialogState.projectDialogVisible" size="default">取 消</el-button>
- <el-button type="primary" v-if="!projectDialogState.disabled" @click="onSubmitProject" size="default">确定</el-button>
- </span>
- </template>
- </el-dialog>
- </div>
-</template>
-
-<script setup lang="ts">
-import {defineAsyncComponent, nextTick, onMounted, reactive, ref} from "vue";
-import {ElMessage} from "element-plus";
-import {projectApi} from "/@/api/experiment/project";
-import {personApi} from "/@/api/basic/person";
-import {userApi} from "/@/api/systemManage/user";
-import {useUserInfo} from "/@/stores/userInfo";
-import {storeToRefs} from "pinia";
-import {checkChineseName, verifyPhone} from "/@/utils/toolsValidate";
-
-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 ProjectFormRef = ref()
-const selectPersonRef = ref()
-const selectEquipmentRef = ref()
-const selectRoomRef = ref()
-const selectMaterialRef = ref()
-const selectEmergencyRef = ref()
-const selectDangerRef = ref()
-
-const userInfo = useUserInfo();
-const { userInfos } = storeToRefs(userInfo);
-
-const projectDialogState = reactive<ProjectDialogType>({
- title: '',
- disabled: false,
- projectDialogVisible: false,
- projectForm: {
- id: null,
- experimentName: "",
- experimentType: null,
- liabilityUserId: Number(userInfos.value.uid),
- liabilityUserPhone: '',
- safeLiabilityUser: '',
- safeLiabilityUserPhone: '',
- dep: "",
- experimentStep: "",
- experimentMethod: "",
- process: "",
- keyProcess: "",
- measure: "",
- timeout: null,
- timeoutManager: "",
- closed: null,
- unclosedManager: "",
- explosionProof: "",
- fireProof: "",
- poisonProof: "",
- safeManagerMethod: "",
- emergencyList: [],
- partitionCondition: null,
- note: "",
- createExperimentTime: '',
- persons: [],
- siteList: [],
- deviceList: [],
- stuffList: [],
- hazardousWasteList: []
- },
- projectFormRules: {
- 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' }],
- 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' }]
- },
- allPersonList: [],
- allRoomList: [],
- systemPersonList: [],
-})
-
-const getLiabilityUserPhone = (value: number)=>{
- const data = projectDialogState.systemPersonList.find(item => item.id === value) as AllPersonListType
- projectDialogState.projectForm.liabilityUserPhone = data.phone
-}
-
-// const getSafeLiabilityUserPhone = (value: number)=>{
-// const data = projectDialogState.allPersonList.find(item => item.id === value) as AllPersonListType
-// projectDialogState.projectForm.safeLiabilityUserPhone = data.phone
-// }
-
-const showProjectDialog = (title: string, value: ProjectType, allRoomList: RoomType []) => {
- projectDialogState.projectDialogVisible = true;
- projectDialogState.allRoomList = allRoomList
- setTimeout(() => {
- ProjectFormRef.value.clearValidate();
- });
- if(title === '新增'){
- projectDialogState.disabled = false
- projectDialogState.title = '新增';
- projectDialogState.projectForm = {
- id: null,
- experimentName: "",
- experimentType: null,
- liabilityUserId: Number(userInfos.value.uid),
- liabilityUserPhone: '',
- safeLiabilityUser: '',
- safeLiabilityUserPhone: '',
- dep: "",
- experimentStep: "",
- experimentMethod: "",
- process: "",
- keyProcess: "",
- measure: "",
- timeout: null,
- timeoutManager: "",
- closed: null,
- unclosedManager: "",
- explosionProof: "",
- fireProof: "",
- poisonProof: "",
- safeManagerMethod: "",
- emergencyList: [],
- partitionCondition: null,
- note: "",
- createExperimentTime: '',
- persons: [],
- siteList: [],
- deviceList: [],
- stuffList: [],
- hazardousWasteList: []
- };
- }else if(title === '整改'){
- projectDialogState.title = '整改';
- projectDialogState.disabled = false
- for(let i in projectDialogState.projectForm) {
- if(isValidKey(i, projectDialogState.projectForm)) {
- projectDialogState.projectForm[i] = value[i];
- }
- }
- }else{
- projectDialogState.title = '查看';
- projectDialogState.disabled = true
- for(let i in projectDialogState.projectForm) {
- if(isValidKey(i, projectDialogState.projectForm)) {
- projectDialogState.projectForm[i] = value[i];
- }
- }
- }
-};
-
-const isValidKey = (key: string | number | symbol, object:object): key is keyof typeof object =>{
- return key in object;
-};
-
-const onSubmitProject = async() => {
- 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({
- type: 'warning',
- message: '安全负责人姓名格式有误',
- duration: 1000
- });
- return
- }
- if(verifyPhone(projectDialogState.projectForm.safeLiabilityUserPhone) == false || verifyPhone(projectDialogState.projectForm.liabilityUserPhone) == false){
- ElMessage({
- type: 'warning',
- message: '请输入正确的手机号',
- duration: 1000
- });
- return
- }
- if(projectDialogState.projectForm.siteList.length === 0){
- ElMessage({
- type: 'warning',
- message: '请至少添加一处实验场所',
- duration: 1000
- });
- return
- }
- if(projectDialogState.projectForm.stuffList.length === 0){
- ElMessage({
- type: 'warning',
- message: '请至少选择一种试剂/材料',
- duration: 1000
- });
- return
- }
- if(projectDialogState.projectForm.deviceList.length === 0){
- ElMessage({
- type: 'warning',
- message: '请至少选择一种仪器/设备',
- duration: 1000
- });
- return
- }
- if(projectDialogState.projectForm.persons.length === 0){
- ElMessage({
- type: 'warning',
- message: '请至少添加一名实验人员',
- duration: 1000
- });
- return
- }
- projectDialogState.projectForm.emergencyList = selectEmergencyRef.value.dataList
- projectDialogState.projectForm.persons = selectPersonRef.value.dataList
- const roomList = selectRoomRef.value.dataList
- projectDialogState.projectForm.siteList = roomList.map(({siteId}) => ({siteId}))
- projectDialogState.projectForm.stuffList = selectMaterialRef.value.dataList
- projectDialogState.projectForm.deviceList = selectEquipmentRef.value.dataList
- let res = await projectApi().addProject(projectDialogState.projectForm)
- if(res.data.code === 100){
- emit('refresh')
- projectDialogState.projectDialogVisible = false;
- ElMessage({
- type: 'success',
- message: '新增成功'
- })
-
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg,
- });
- }
- }else{
- 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)
- if(res.data.code === 100){
- emit('refresh')
- projectDialogState.projectDialogVisible = false;
- ElMessage({
- type: 'success',
- message: '整改已提交'
- })
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg,
- });
- }
- }
- }else{
- ElMessage({
- type: 'warning',
- message: '请完善基本信息',
- });
- }
- })
-};
-
-const getPersonList = async () => {
- let res = await userApi().getUserList({
- pageIndex: 1,
- pageSize: 99999,
- searchParams:{
- roleId: null,
- name: '',
- realName: ''
- }
- });
- if(res.data.code === 100){
- projectDialogState.systemPersonList = JSON.parse(JSON.stringify(res.data.data));
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- })
- }
-};
-
-const getAllPersonList = async () => {
- let res = await personApi().getAllPerson();
- if(res.data.code === 100){
- projectDialogState.allPersonList = JSON.parse(JSON.stringify(res.data.data));
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- })
- }
-};
-
-const emit = defineEmits(['refresh']);
-
-defineExpose({
- showProjectDialog,
-});
-
-onMounted(() => {
- getAllPersonList();
- getPersonList();
-});
-</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;
-
- :deep(.el-input__wrapper ){
- box-shadow: none;
- margin-top: 6px;
- }
-
-&: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%;
-}
-}
-}
-
-.b-font {
- font-size: 16px;
- font-weight: bolder;
-}
-}
-
-.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{
- height: auto;
- padding: 0;
-
- .roomTable{
- width: 100%;
- display: flex;
- border-bottom: 1px solid #ebeef5;
-
- &:last-of-type{
- border-bottom: none;
- }
-
- &>div{
- width: 25%;
- border-right: 1px dashed #ebeef5;
- &:last-of-type{
- border-right: none;
- }
-
- div{
- width: 100%;
- }
- .roomTit{
- border-bottom: 1px solid #ebeef5;
- }
- }
- }
- }
- .el-select-dropdown__item.selected{
- .roomTit{
- color: #606266;
- font-weight: normal;
- }
- }
- }
-}
-
-:deep(.el-dialog__footer){
- padding-top: 20px;
- display: flex;
- justify-content: center;
-}
-
-
-</style>
diff --git a/src/views/experiment/project/components/selectDanger.vue b/src/views/experiment/project/components/selectDanger.vue
deleted file mode 100644
index 26ade11..0000000
--- a/src/views/experiment/project/components/selectDanger.vue
+++ /dev/null
@@ -1,192 +0,0 @@
-<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 selectDangerState.wasteList" :key="index">
- <td class="w-20">
- {{ index + 1 }}
- </td>
- <td class="w-20">
- <el-select :disabled="selectDangerState.disabled" v-model="item.classify" clearable filterable>
- <el-option v-for="item in selectDangerState.classifyList" :key="item.id" :label="item.name" :value="item.id"></el-option>
- </el-select>
- </td>
- <td class="w-20">
- <el-select :disabled="selectDangerState.disabled" v-model="item.wasteStorage" clearable filterable>
- <el-option v-for="item in selectDangerState.wasteStorageList" :key="item.id" :label="item.name" :value="item.id"></el-option>
- </el-select>
- </td>
- <td class="w-20">
- <el-input type="number" v-model="item.handAmount"></el-input>
- </td>
- <td class="w-20">
- <el-button :disabled="selectDangerState.disabled" type="danger" @click="deleteDangerItem(index)">删除</el-button>
- </td>
- </tr>
- <tr style="text-align: center">
- <el-button :disabled="selectDangerState.disabled" type="primary" shape="round" @click="addDangerItem()">
- 添加行
- </el-button>
- </tr>
-</template>
-
-<script setup lang="ts">
-import {reactive, watchEffect} from "vue";
-
-let props = defineProps({
- disabled: Boolean,
- data: Array<WasteType>
-});
-
-const selectDangerState = reactive<SelectDangerType>({
- disabled: false,
- wasteList: [
- ],
- classifyList:[
- {id:1, name: '有机'},
- {id:2, name: '酸'},
- {id:3, name: '碱性'},
- {id:4, name: '固体废弃物'},
- {id:5, name: '医疗废弃物'},
- {id:6, name: '过期化学品'},
- {id:7, name: '其他'}
- ],
- wasteStorageList: [
- {id:1, name: '吨袋'},
- {id:2, name: '吨桶'},
- {id:3, name: '小桶'},
- {id:4, name: '托盘'},
- {id:5, name: '其他'},
- ]
-})
-
-watchEffect(() => {
- selectDangerState.wasteList = props.data as Array<WasteType>
- selectDangerState.disabled = props.disabled
-});
-
-const addDangerItem = () => {
- selectDangerState.wasteList.push({classify: null, wasteStorage: null, handAmount: null,});
-};
-
-const deleteDangerItem = (index: number) => {
- selectDangerState.wasteList.splice(index,1);
-};
-
-const formatList = (formatList: Array<WasteType>) => {
- selectDangerState.wasteList = formatList
-}
-
-defineExpose({
- formatList,
- dataList: selectDangerState.wasteList,
-});
-
-</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%;
- }
- }
- }
-
- .b-font {
- font-size: 16px;
- font-weight: bolder;
- }
-}
-
-.m-color {
- color: #0c4995;
-}
-:deep(.el-input__wrapper ){
- box-shadow: none;
-}
-</style>
diff --git a/src/views/experiment/project/components/selectEmergency.vue b/src/views/experiment/project/components/selectEmergency.vue
deleted file mode 100644
index 50a3993..0000000
--- a/src/views/experiment/project/components/selectEmergency.vue
+++ /dev/null
@@ -1,181 +0,0 @@
-<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/components/selectEquipment.vue b/src/views/experiment/project/components/selectEquipment.vue
deleted file mode 100644
index 7ddf0b9..0000000
--- a/src/views/experiment/project/components/selectEquipment.vue
+++ /dev/null
@@ -1,247 +0,0 @@
-<template>
- <tr class="m-color b-font" style="text-align: center">实验所用的仪器/设备</tr>
- <tr>
- <td class="w-16 m-color required">设备名称</td>
- <td class="w-16 m-color">编号</td>
- <td class="w-16 m-color">额定功率</td>
- <td class="w-16 m-color">是否特种</td>
- <td class="w-16 m-color required">设备数量</td>
- <td class="w-16 m-color">操作</td>
- </tr>
- <tr v-for="(item,index) in selectEquipmentState.equipmentList" :key="index">
- <td class="w-16">
- <el-select :disabled="selectEquipmentState.disabled" filterable v-model="item.deviceId" @change="giveOtherEquipmentValue($event, index)" @focus="checkAllEquipment($event, index)">
- <el-option
- v-for="item in selectEquipmentState.allEquipmentList"
- :key="item.id"
- :value="item.id"
- :label="item.deviceName"
- >
- </el-option>
- </el-select>
- </td>
- <td class="w-16">
- <el-input disabled v-model="item.deviceCode"/>
- </td>
- <td class="w-16">
- <el-input disabled v-model="item.devicePower" />
- </td>
- <td class="w-16">
-<!-- <el-radio-group disabled v-model="item.specialDevice">-->
-<!-- <el-radio :label="1">是</el-radio>-->
-<!-- <el-radio :label="2">否</el-radio>-->
-<!-- </el-radio-group>-->
- <div>{{item.specialDevice == 1 ? '是' : item.specialDevice == 2 ? '否' : ''}}</div>
- </td>
- <td class="w-16">
- <el-input :disabled="selectEquipmentState.disabled" type="number" v-model="item.deviceUseCount" />
- </td>
- <td class="w-16">
- <el-button :disabled="selectEquipmentState.disabled" type="danger" @click="deleteEquipmentItem(index)">删除</el-button>
- </td>
- </tr>
- <tr style="text-align: center">
- <el-button :disabled="selectEquipmentState.disabled" type="primary" shape="round" @click="addEquipmentItem()">
- 添加现有实验仪器/设备
- </el-button>
- <el-button :disabled="selectEquipmentState.disabled" shape="round" @click="addNewEquipment('新增', {})">
- 新增实验仪器/设备配置
- </el-button>
- </tr>
- <equipment-dialog ref="equipmentDialogRef" :equipmentTypeList="selectEquipmentState.equipmentTypeList"></equipment-dialog>
-</template>
-
-<script setup lang="ts">
-import {defineAsyncComponent, onMounted, reactive, ref, watchEffect} from "vue";
-import {ElMessage} from "element-plus";
-import { equipmentApi } from "/@/api/basic/equipement";
-
-let props = defineProps({
- disabled: Boolean,
- data: Array<AllEquipmentListType>
-});
-const equipmentDialog = defineAsyncComponent(() => import('/@/views/basic/equipment/components/equipmentDialog.vue'));
-const selectEquipmentState = reactive<SelectEquipmentType>({
- disabled: false,
- equipmentList: [],
- allEquipmentList: [],
- equipmentTypeList: [],
- specialDeviceList: [
- {id: 1, name: '是'},
- {id:2, name: '否'}
- ]
-});
-
-watchEffect(() => {
- selectEquipmentState.equipmentList = props.data as Array<AllEquipmentListType>
- selectEquipmentState.disabled = props.disabled
-});
-
-const equipmentDialogRef = ref();
-
-const getAllType = async ()=>{
- const res = await equipmentApi().getAllType();
- if(res.data.code === 100){
- selectEquipmentState.equipmentTypeList = res.data.data
- }
-}
-
-const checkAllEquipment = () => {
- getAllEquipmentList()
-}
-
-const addEquipmentItem = () => {
- selectEquipmentState.equipmentList.push({deviceId: null, deviceUseCount: null, deviceCode: '', deviceName: '', devicePower: '', specialDevice: '',deviceUnit: null, safeProtect: null});
-};
-
-const addNewEquipment = (title: string, value: EquipmentType) => {
- equipmentDialogRef.value.showEquipmentDialog(title, value, selectEquipmentState.specialDeviceList);
-}
-
-const deleteEquipmentItem = (index: number) => {
- selectEquipmentState.equipmentList.splice(index,1);
-};
-
-const getAllEquipmentList = async () => {
- let res = await equipmentApi().getAllEquipment();
- if(res.data.code === 100){
- selectEquipmentState.allEquipmentList = JSON.parse(JSON.stringify(res.data.data));
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- })
- }
-};
-
-const giveOtherEquipmentValue = (value: number, index:number) => {
- const data = selectEquipmentState.allEquipmentList.find(item => item.id === value) as AllEquipmentListType
- selectEquipmentState.equipmentList[index] = {
- deviceId: data.id,
- deviceUseCount: null,
- deviceCode: data.deviceCode,
- deviceName: data.deviceName,
- devicePower: data.devicePower,
- specialDevice: data.specialDevice,
- deviceUnit: data.deviceUnit,
- safeProtect: data.safeProtect,
- }
-};
-
-const formatList = (formatList: Array<AllEquipmentListType>) => {
- selectEquipmentState.equipmentList = formatList
-}
-
-defineExpose({
- dataList: selectEquipmentState.equipmentList,
- formatList
-});
-
-onMounted(() => {
- getAllType();
- getAllEquipmentList();
-});
-</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;
-
- :deep(.el-input__wrapper ){
- box-shadow: none;
- }
-
- &: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%;
- }
- }
- }
-
- .b-font {
- font-size: 16px;
- font-weight: bolder;
- }
-}
-
-.m-color {
- color: #0c4995;
-}
-</style>
diff --git a/src/views/experiment/project/components/selectMaterial.vue b/src/views/experiment/project/components/selectMaterial.vue
deleted file mode 100644
index 8017fb3..0000000
--- a/src/views/experiment/project/components/selectMaterial.vue
+++ /dev/null
@@ -1,248 +0,0 @@
-<template>
- <tr class="m-color b-font" style="text-align: center">实验所用的试剂或材料</tr>
- <tr>
- <td class="w-14 m-color required">实验材料</td>
- <td class="w-14 m-color">耗材ID</td>
- <td class="w-14 m-color">材料类型</td>
- <td class="w-14 m-color">材料储存</td>
- <td class="w-14 m-color">计量单位</td>
- <td class="w-14 m-color required">使用数量</td>
- <td class="w-14 m-color">操作</td>
- </tr>
- <tr v-for="(item,index) in selectMaterialState.materialList" :key="index">
- <td class="w-14">
- <el-select :disabled="selectMaterialState.disabled" filterable v-model="item.stuffId" @change="giveOtherMaterialValue($event, index)" @focus="checkAllMaterial($event, index)">
- <el-option
- v-for="item in selectMaterialState.allMaterialList"
- :key="item.id"
- :value="item.id"
- :label="item.stuffName"
- >
- </el-option>
- </el-select>
- </td>
- <td class="w-14">
- <el-input disabled v-model="item.stuffCode" />
- </td>
- <td class="w-14">
-<!-- <el-input :disabled="selectMaterialState.disabled" v-model="item.stuffType" />-->
- <div>{{selectMaterialState.stuffTypeList.find(i=>i.id == item.stuffType)?.name}}</div>
- </td>
- <td class="w-14">
-<!-- <el-input :disabled="selectMaterialState.disabled" v-model="item.stuffStorage" />-->
- <div>{{selectMaterialState.stuffStorageList.find(i=>i.id == item.stuffStorage)?.name}}</div>
- </td>
- <td class="w-14">
-<!-- <el-input :disabled="selectMaterialState.disabled" v-model="item.stuffUnit" />-->
- <div>{{selectMaterialState.stuffUnitList.find(i=>i.id == item.stuffUnit)?.name}}</div>
- </td>
- <td class="w-14">
- <el-input type="number" :disabled="selectMaterialState.disabled" v-model="item.stuffUseCount" />
- </td>
- <td class="w-14">
- <el-button type="danger" :disabled="selectMaterialState.disabled" @click="deleteMaterialItem(index)">删除</el-button>
- </td>
- </tr>
- <tr style="text-align: center">
- <el-button :disabled="selectMaterialState.disabled" type="primary" shape="round" @click="addMaterialItem()">
- 添加现有实验材料
- </el-button>
- <el-button :disabled="selectMaterialState.disabled" shape="round" @click="addNewMaterial('新增', {})">
- 新增实验材料配置
- </el-button>
- </tr>
- <material-dialog ref="materialDialogRef"></material-dialog>
-</template>
-
-<script setup lang="ts">
-import {defineAsyncComponent, onMounted, reactive, ref, watchEffect} from "vue";
-import { materialApi } from "/@/api/basic/material";
-import {ElMessage} from "element-plus";
-let props = defineProps({
- disabled: Boolean,
- data: Array<AllMaterialListType>
-});
-const MaterialDialog = defineAsyncComponent(() => import('/@/views/basic/material/components/materialDialog.vue'));
-const selectMaterialState = reactive<SelectMaterialType>({
- disabled: false,
- materialList: [],
- allMaterialList: [],
- stuffTypeList: [
- {id: 1, name: '化学试剂'},
- {id:2, name: '基础材料'}
- ],
- stuffStorageList: [
- {id:1, name: '智能试剂柜'},
- {id:2, name: '普通储存柜'},
- ],
- stuffUnitList: [
- {id:1, name: 'g'},
- {id:2, name: 'kg'},
- {id:3, name: 'ml'},
- {id:4, name: 'l'},
- ]
-})
-const materialDialogRef = ref();
-
-const addMaterialItem = () => {
- selectMaterialState.materialList.push({stuffId: null, stuffUseCount: null, stuffName: '',stuffCode:'',stuffType: '', stuffStorage: '', stuffUnit: ''});
-};
-
-watchEffect(() => {
- selectMaterialState.materialList = props.data as Array<AllMaterialListType>
- selectMaterialState.disabled = props.disabled
-});
-
-const deleteMaterialItem = (index: number) => {
- selectMaterialState.materialList.splice(index,1);
-};
-
-const addNewMaterial = (title: string, value: MaterialType) => {
- materialDialogRef.value.showMaterialDialog(title, value);
-}
-
-const checkAllMaterial = () => {
- getAllMaterial()
-}
-
-const getAllMaterial = async () => {
- let res = await materialApi().getAllMaterial();
- if(res.data.code === 100){
- selectMaterialState.allMaterialList = JSON.parse(JSON.stringify(res.data.data));
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- })
- }
-};
-
-const giveOtherMaterialValue = (value: number, index:number) => {
- const data = selectMaterialState.allMaterialList.find(item => item.id === value) as AllMaterialListType
- selectMaterialState.materialList[index] = {
- stuffId: data.id,
- stuffUseCount: data.stuffUseCount,
- stuffName: data.stuffName,
- stuffCode: data.stuffCode,
- stuffType: data.stuffType,
- stuffStorage: data.stuffStorage,
- stuffUnit: data.stuffUnit
- };
-};
-
-const formatList = (formatList: Array<AllMaterialListType>) => {
- selectMaterialState.materialList = formatList
-};
-
-defineExpose({
- dataList: selectMaterialState.materialList,
- formatList
-});
-
-
-onMounted(() => {
- getAllMaterial();
-});
-</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/components/selectPerson.vue b/src/views/experiment/project/components/selectPerson.vue
deleted file mode 100644
index 6677595..0000000
--- a/src/views/experiment/project/components/selectPerson.vue
+++ /dev/null
@@ -1,244 +0,0 @@
-<template>
- <tr class="m-color b-font" style="text-align: center">实验人员</tr>
- <tr>
- <td class="w-14 m-color required">姓名</td>
- <td class="w-14 m-color">年龄</td>
- <td class="w-14 m-color">性别</td>
- <td class="w-14 m-color">专业</td>
- <td class="w-14 m-color">部门</td>
- <td class="w-14 m-color">相关资质</td>
- <td class="w-14 m-color">操作</td>
- </tr>
- <tr v-for="(item,index) in selectPersonState.personList" :key="index">
- <td class="w-14">
- <el-select filterable :disabled="selectPersonState.disabled" v-model="item.personId" @change="giveOtherPersonValue($event, index)" @focus="checkAllPerson($event, index)">
- <el-option
- v-for="item in selectPersonState.allPersonList"
- :key="item.id"
- :value="item.id"
- :label="item.personName"
- >
- </el-option>
- </el-select>
- </td>
- <td class="w-14">
- <el-input disabled v-model="item.personAge" />
- </td>
- <td class="w-14">
-<!-- <el-input disabled v-model="item.personGender" />-->
- <div>{{item.personGender == 1 ? '男' : item.personGender == 2 ? '女' : ''}}</div>
- </td>
- <td class="w-14">
- <el-input disabled v-model="item.personMajor" />
- </td>
- <td class="w-14">
- <el-input disabled v-model="item.depName" />
- </td>
- <td class="w-14">
- <el-input disabled v-model="item.aptitude" />
- </td>
- <td class="w-14">
- <el-button type="danger" :disabled="selectPersonState.disabled" @click="deletePersonItem(index)">删除</el-button>
- </td>
- </tr>
- <tr style="text-align: center">
- <el-button :disabled="selectPersonState.disabled" type="primary" shape="round" @click="addPersonItem()">
- 添加现有实验人员
- </el-button>
- <el-button :disabled="selectPersonState.disabled" shape="round" @click="addNewPerson('新增', {})">
- 新增实验人员配置
- </el-button>
- </tr>
- <person-dialog ref="personDialogRef"></person-dialog>
-</template>
-
-<script setup lang="ts">
-import {defineAsyncComponent, nextTick, onMounted, reactive, ref, watchEffect} from "vue";
-import { personApi } from "/@/api/basic/person";
-import {ElMessage} from "element-plus";
-
-let props = defineProps({
- disabled: Boolean,
- data: Array<AllPersonListType>
-
-});
-
-const personDialog = defineAsyncComponent(() => import('/@/views/basic/person/components/personDialog.vue'));
-
-const selectPersonState = reactive<SelectPersonType>({
- disabled: false,
- personList: [],
- allPersonList: [
- ],
-});
-
-const personDialogRef = ref();
-
-watchEffect(() => {
- selectPersonState.personList = props.data as Array<AllPersonListType>
- selectPersonState.disabled = props.disabled
-});
-
-const addPersonItem = () => {
- selectPersonState.personList.push({personId: null, personName: null, personAge: null, personGender:'',personMajor:'',depName:'',phone:'',aptitude:'',training:''});
-};
-
-const addNewPerson = (title: string, value: PersonType) => {
- personDialogRef.value.showPersonDialog(title, value);
-}
-
-const checkAllPerson = () => {
- getAllPersonList()
-}
-
-const deletePersonItem = (index: number) => {
- selectPersonState.personList.splice(index,1);
-};
-
-const getAllPersonList = async () => {
- let res = await personApi().getAllPerson();
- if(res.data.code === 100){
- selectPersonState.allPersonList = JSON.parse(JSON.stringify(res.data.data));
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- })
- }
-};
-
-const giveOtherPersonValue = (value: number, index:number) => {
- // selectPersonState.personList[index] = selectPersonState.allPersonList.find(item => item.id === value) as AllPersonListType
- const data = selectPersonState.allPersonList.find(item => item.id === value) as AllPersonListType
- selectPersonState.personList[index] = {
- personId: data.id,
- personName: data.personName,
- personAge: data.personAge,
- personGender: data.personGender,
- personMajor: data.personMajor,
- depName: data.depName,
- phone: data.phone,
- aptitude: data.aptitude,
- training: data.training,
- };
-};
-
-const formatList = (formatList: Array<AllPersonListType>) => {
- nextTick(() => {
- selectPersonState.personList = formatList
- })
-
-};
-
-defineExpose({
- formatList,
- dataList: selectPersonState.personList,
-});
-
-onMounted(() => {
- getAllPersonList();
-});
-</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;
- }
- }
-
- :deep(.el-input__wrapper ){
- box-shadow: none;
- }
-
- &.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%;
- }
- }
- }
-
- .b-font {
- font-size: 16px;
- font-weight: bolder;
- }
-}
-
-.m-color {
- color: #0c4995;
-}
-</style>
diff --git a/src/views/experiment/project/components/selectRoom.vue b/src/views/experiment/project/components/selectRoom.vue
deleted file mode 100644
index f2a9cc3..0000000
--- a/src/views/experiment/project/components/selectRoom.vue
+++ /dev/null
@@ -1,268 +0,0 @@
-<template>
- <tr class="m-color b-font" style="text-align: center">实验场所</tr>
- <tr>
- <td class="w-14 m-color required">场所名称</td>
- <td class="w-14 m-color">所在楼栋</td>
- <td class="w-14 m-color">房间</td>
- <td class="w-14 m-color">有无消防设施</td>
- <td class="w-14 m-color">有无隔断</td>
- <td class="w-14 m-color">场所性质</td>
- <td class="w-14 m-color">操作</td>
- </tr>
- <tr v-for="(item,index) in selectRoomState.roomList" :key="index">
- <td class="w-14">
- <el-select :disabled="selectRoomState.disabled" filterable v-model="item.siteId" @change="giveOtherRoomValue($event, index)" @focus="checkAllRoom($event, index)">
- <el-option
- v-for="item in selectRoomState.allRoomList"
- :key="item.id"
- :value="item.id"
- :label="item.siteName"
- >
- </el-option>
- </el-select>
- </td>
- <td class="w-14">
- <el-input disabled v-model="item.floor" />
- </td>
- <td class="w-14">
- <el-input disabled v-model="item.room" />
- </td>
- <td class="w-14">
-<!-- <el-input :disabled="selectRoomState.disabled" v-model="item.stuffStorage" />-->
- <div>{{item.fireFacilities== 1 ? '有' : item.fireFacilities== 2 ? '无' : ''}}</div>
- </td>
- <td class="w-14">
-<!-- <el-input :disabled="selectRoomState.disabled" v-model="item.stuffUnit" />-->
- <div>{{item.partitionStatus == 1 ? '有' : item.partitionStatus == 2 ? '无' : ''}}</div>
- </td>
- <td class="w-14">
-<!-- <el-input type="number" :disabled="selectRoomState.disabled" v-model="item.stuffUseCount" />-->
- <div>{{item.siteType}}</div>
- </td>
- <td class="w-14">
- <el-button type="danger" :disabled="selectRoomState.disabled" @click="deleteRoomItem(index)">删除</el-button>
- </td>
- </tr>
- <tr style="text-align: center">
- <el-button :disabled="selectRoomState.disabled" type="primary" shape="round" @click="addMaterialItem()">
- 添加现有实验场所
- </el-button>
- <el-button :disabled="selectRoomState.disabled" shape="round" @click="addNewRoom('新增', {})">
- 新增实验场所配置
- </el-button>
- </tr>
- <room-dialog ref="roomDialogRef" :memberList="selectRoomState.memberList" :typeList="selectRoomState.typeList"></room-dialog>
-</template>
-
-<script setup lang="ts">
-import {defineAsyncComponent, onMounted, reactive, ref, watchEffect} from "vue";
-import { materialApi } from "/@/api/basic/material";
-import {ElMessage} from "element-plus";
-import {roomApi} from "/@/api/basic/room";
-import {personApi} from "/@/api/basic/person";
-let props = defineProps({
- disabled: Boolean,
- data: Array<roomListType>
-});
-const roomDialog = defineAsyncComponent(() => import('/@/views/basic/room/components/roomDialog.vue'));
-const selectRoomState = reactive<SelectRoomType>({
- disabled: false,
- roomList: [],
- allRoomList: [],
- memberList: [],
- typeList: [],
- specialDeviceList: [
- {id: 1, name: '是'},
- {id:2, name: '否'}
- ],
- stuffStorageList: [
- {id:1, name: '智能试剂柜'},
- {id:2, name: '普通储存柜'},
- ],
- stuffUnitList: [
- {id:1, name: 'g'},
- {id:2, name: 'kg'},
- {id:3, name: 'ml'},
- {id:4, name: 'l'},
- ]
-})
-const roomDialogRef = ref();
-
-const getAllMember = async ()=>{
- const res = await personApi().getAllPerson();
- if(res.data.code === 100){
- selectRoomState.memberList = res.data.data
- }
-}
-
-const getAllType = async ()=>{
- const res = await roomApi().getAllType();
- if(res.data.code === 100){
- selectRoomState.typeList = res.data.data
- }
-}
-
-const addMaterialItem = () => {
- selectRoomState.roomList.push({siteId: null, siteName: '', floor: '',room:'',fireFacilities: null, partitionStatus: null, siteType: ''});
-};
-
-watchEffect(() => {
- selectRoomState.roomList = props.data as Array<roomListType>
- selectRoomState.disabled = props.disabled
-});
-
-const deleteRoomItem = (index: number) => {
- selectRoomState.roomList.splice(index,1);
-};
-
-const addNewRoom = (title: string, value: RoomType) => {
- roomDialogRef.value.showroomDialog(title, value, selectRoomState.specialDeviceList);
-}
-
-const checkAllRoom = () => {
- getAllRoom()
-}
-
-const getAllRoom = async () => {
- let res = await roomApi().getAllRoom();
- if(res.data.code === 100){
- selectRoomState.allRoomList = JSON.parse(JSON.stringify(res.data.data));
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- })
- }
-};
-
-const giveOtherRoomValue = (value: number, index:number) => {
- const data = selectRoomState.allRoomList.find(item => item.id === value) as allRoomListType
- selectRoomState.roomList[index] = {
- siteId: data.id,
- siteName: data.siteName,
- floor: data.floor,
- room: data.room,
- fireFacilities: data.fireFacilities,
- partitionStatus: data.partitionStatus,
- siteType: data.siteType
- };
-};
-
-const formatList = (formatList: Array<roomListType>) => {
- selectRoomState.roomList = formatList
-};
-
-defineExpose({
- dataList: selectRoomState.roomList,
- formatList
-});
-
-
-onMounted(() => {
- getAllMember()
- getAllType()
- getAllRoom()
-});
-</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
deleted file mode 100644
index 5235c46..0000000
--- a/src/views/experiment/project/index.ts
+++ /dev/null
@@ -1,222 +0,0 @@
-declare interface ProjectStateType {
- projectData?: Array<ProjectType>
- developData?: Array<ProjectType>
- searchQuery: {
- pageIndex: number,
- pageSize: number,
- searchParams: {
- experimentName: string,
- experimentType: null | number,
- }
- },
- total: 0,
- experimentTypeList: Type []
- allRoomList: RoomType []
-}
-
-declare interface ProjectType {
- id?: number | null,
- liabilityUserId?: number | null,
- experimentCode: string,
- experimentName: string,
-}
-
-
-declare interface Type {
- id: number,
- name: string,
-}
-
-declare interface ProjectDialogType {
- title: string,
- disabled: boolean,
- projectDialogVisible: boolean,
- projectForm: {
- id: null | number,
- experimentName: string,
- experimentType: null | number,
- liabilityUserId: null | number,
- safeLiabilityUser: string
- liabilityUserPhone: string,
- safeLiabilityUserPhone: string,
- sisStatus?: null | number,
- safeInformationSystem?: string,
- dep: string,
- experimentStep: string,
- experimentMethod: string,
- process: string,
- keyProcess: string,
- measure: string,
- timeout: null | number,
- timeoutManager: string,
- closed: null | number,
- unclosedManager: string,
- explosionProof: string,
- fireProof: string,
- poisonProof: string,
- safeManagerMethod: string,
- emergencyList: Array<emergencyListType>,
- partitionCondition: null | number,
- note: string,
- startTime?: string,
- createExperimentTime: string
- persons: SelectPersonType [],
- siteList: SelectRoomType [],
- deviceList: SelectEquipmentType [],
- stuffList: SelectMaterialType [],
- hazardousWasteList: SelectDangerType []
- },
- projectFormRules: {
-
- },
- allPersonList: Array<AllPersonListType>
- systemPersonList: Array<AllPersonListType>
- allRoomList: Array<RoomType>
-}
-
-declare interface SelectDangerType {
- disabled: boolean
- wasteList: Array<WasteType>
- classifyList: Array<Type>
- wasteStorageList: Array<Type>
-}
-
-declare interface WasteType {
- classify: null | number,
- wasteStorage: null | number,
- handAmount: null | number,
-}
-
-
-declare interface SelectPersonType {
- disabled: boolean
- personList: Array<AllPersonListType>
- allPersonList: Array<AllPersonListType>
-}
-
-declare interface AllPersonListType {
- id?: null | number,
- personId?: null | number,
- personName: null,
- personAge: null,
- personGender:'',
- personMajor:'',
- depName:'',
- phone:'',
- aptitude:'',
- training:''
-}
-
-declare interface NewPersonListType {
- depId: number | null
- depName: string
- id: number
- idSerial: string
- idType: number | null
- name: string
- phone: string
- realName: string
-}
-
-declare interface SelectEquipmentType {
- disabled: boolean
- equipmentList: Array<AllEquipmentListType>,
- allEquipmentList: Array<AllEquipmentListType>,
- equipmentTypeList: Array<any>,
- specialDeviceList: Array<Type>
-}
-
-declare interface AllEquipmentListType {
- id?: null | number,
- deviceId?: null | number,
- deviceUseCount: null | number,
- deviceCode: string,
- deviceName: string,
- devicePower: string,
- specialDevice: string,
- deviceUnit?: null | number,
- safeProtect?: null | number
-}
-
-
-declare interface SelectMaterialType {
- disabled: boolean
- materialList: Array<AllMaterialListType>,
- allMaterialList: Array<AllMaterialListType>,
- stuffTypeList: Array<stuffType>
- stuffStorageList: Array<stuffType>
- 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>,
- allRoomList: Array<allRoomListType>,
- specialDeviceList: Array<stuffType>
- memberList: Array<any>
- typeList: Array<any>
- stuffStorageList: Array<stuffType>
- stuffUnitList: Array<stuffType>
-}
-
-declare interface roomListType {
- siteId: null | number,
- siteName: string,
- floor: string,
- room: string,
- fireFacilities: null | number,
- partitionStatus: null | number,
- siteType: string,
-}
-
-declare interface allRoomListType {
- id: null | number,
- siteName: string,
- floor: string,
- room: string,
- fireFacilities: null | number,
- partitionStatus: null | number,
- siteType: string,
-}
-
-declare interface stuffType {
- id: null | number,
- name: string
-}
-
-declare interface AllMaterialListType {
- id?: null | number,
- stuffId?: null | number,
- stuffUseCount: null | number,
- stuffName: string,
- stuffCode:string,
- stuffType: string,
- stuffStorage: string,
- stuffUnit: string
-}
-
-declare interface ApplyStartDialogType {
- title: string,
- applyStartDialogVisible: boolean,
- applyStartForm: {
- id: number | null,
- sisStatus: number | null,
- safeInformationSystem: string,
- startTime: string,
- },
- applyStartFormRules: {
-
- },
-}
diff --git a/src/views/experiment/project/index.vue b/src/views/experiment/project/index.vue
deleted file mode 100644
index 2918ffa..0000000
--- a/src/views/experiment/project/index.vue
+++ /dev/null
@@ -1,401 +0,0 @@
-<template>
- <div class="home-container">
- <div style="height: 100%">
- <el-row class="homeCard">
- <div class="basic-line">
- <span>实验名称:</span>
- <el-input v-model="projectState.searchQuery.searchParams.experimentName" clearable filterable class="input-box" placeholder="实验名称">
- </el-input>
- </div>
- <div class="basic-line">
- <span>实验类型:</span>
- <el-select v-model="projectState.searchQuery.searchParams.experimentType" clearable filterable class="input-box" placeholder="实验类型">
- <el-option v-for="item in projectState.experimentTypeList" :key="item.id" :label="item.name" :value="item.id"></el-option>
- </el-select>
- </div>
- <div style="padding-bottom: 10px">
- <el-button type="primary" @click="getProjectData">查询</el-button>
- <el-button plain @click="reset">重置</el-button>
- </div>
- </el-row>
- <div class="homeCard">
- <div class="main-card">
- <el-row class="cardTop">
- <el-col :span="12" class="mainCardBtn">
- <el-button type="primary" :icon="Plus" size="default" @click="openProjectDialog('新增', {})">录入实验信息</el-button>
- <!-- <el-button type="danger" :icon="Delete" size="default" plain>删除</el-button>-->
- </el-col>
-<!-- <el-button type="primary" :icon="Refresh" size="default" />-->
- </el-row>
- <el-table ref="multipleTableRef" :data="projectState.projectData" style="width: 100%" height="calc(100% - 100px)" :header-cell-style="{ background: '#fafafa' }">
- <el-table-column prop="experimentCode" label="实验编号"/>
- <el-table-column prop="experimentName" label="实验名称"/>
- <el-table-column prop="createExperimentTime" label="立项时间" show-overflow-tooltip>
- <template #default="scope">
- <span>{{scope.row.createExperimentTime?scope.row.createExperimentTime.substring(0,16):'--'}}</span>
- </template>
- </el-table-column>
-<!-- <el-table-column prop="startTime" label="开展时间" show-overflow-tooltip>-->
-<!-- <template #default="scope">-->
-<!-- <span>{{scope.row.startTime?scope.row.startTime.substring(0,16):'--'}}</span>-->
-<!-- </template>-->
-<!-- </el-table-column>-->
- <el-table-column prop="liabilityUser" label="负责人"/>
- <el-table-column prop="siteList" label="实验场所" show-overflow-tooltip>
- <template #default="scope">
- <span>{{scope.row.siteList.map(i=>i.siteName).join(',')}}</span>
- </template>
- </el-table-column>
- <el-table-column prop="experimentType" label="实验类别">
- <template #default="scope">
- <span>{{projectState.experimentTypeList.find(i=>i.id == scope.row.experimentType)?.name}}</span>
- </template>
- </el-table-column>
- <el-table-column prop="status" label="评估申请">
- <template #default="scope">
- <span>{{scope.row.status == 1?'未申请':scope.row.status == 2?'已申请':'--'}}</span>
- </template>
- </el-table-column>
- <el-table-column prop="status" label="评估申请时间" show-overflow-tooltip>
- <template #default="scope">
- <span>{{scope.row.assessApplyTime?scope.row.assessApplyTime.substring(0,16):'--'}}</span>
- </template>
- </el-table-column>
- <el-table-column prop="stage" label="评估状态">
- <template #default="scope">
- <el-tag :type="scope.row.stage == 4?'success':scope.row.stage == 1?'info':''">
- {{scope.row.stage == 1?'未评估':scope.row.stage == 2?'评估中':scope.row.stage == 3?'评估完成':scope.row.stage == 4?'生成报告':'--'}}
- </el-tag>
- </template>
- </el-table-column>
- <el-table-column prop="assessLevel" label="风险等级">
- <template #default="scope">
- <el-tag :type="scope.row.assessLevel == 4?'danger':scope.row.assessLevel == 3 || scope.row.assessLevel == 2?'warning':''">
- {{scope.row.assessLevel == 1?'重大风险':scope.row.assessLevel == 2?'较大风险':scope.row.assessLevel == 3?'一般风险':scope.row.assessLevel == 4?'低风险':'--'}}
- </el-tag>
- </template>
- </el-table-column>
-<!-- <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 prop="updateTime" label="最后修改时间" show-overflow-tooltip></el-table-column>-->
-<!-- <el-table-column prop="updateByUserName" label="最后修改人" show-overflow-tooltip></el-table-column>-->
- <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" 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" :disabled="scope.row.stage !== 1" @click="onDelProject(scope.row)">删除</el-button>
- </template>
- </el-table-column>
- </el-table>
- <div class="pageBtn">
- <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" :pager-count="5" :page-sizes="[10, 20, 30]" v-model:current-page="projectState.searchQuery.pageIndex" background v-model:page-size="projectState.searchQuery.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="projectState.total" class="page-position"> </el-pagination>
- </div>
- </div>
- </div>
- </div>
- <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>
-
-<script setup lang="ts">
-import {defineAsyncComponent, onMounted, reactive, ref} from "vue";
-import {projectApi} from "/@/api/experiment/project";
-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 ReportDialogRef = ref()
-const projectState = reactive<ProjectStateType>({
- projectData: [],
- searchQuery: {
- pageIndex: 1,
- pageSize: 10,
- searchParams: {
- experimentName: '',
- experimentType: null,
- }
- },
- total: 0,
- experimentTypeList: [
- {id: 1, name: '化学类'},
- {id: 2, name: '生物类'},
- {id: 3, name: '辐射类'},
- {id: 4, name: '机电类'},
- {id: 5, name: '特种设备类'},
- {id: 6, name: '其它类'},
- ],
- allRoomList: []
-})
-
-const getProjectData = async () => {
- let res = await projectApi().getProjectByList(projectState.searchQuery);
- if(res.data.code === 100){
- projectState.projectData = res.data.data;
- projectState.total = res.data.total;
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- });
- }
-};
-
-const openProjectDialog = (title: string, value: ProjectType) => {
- 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: '确认',
- cancelButtonText: '取消',
- type: 'warning'
- })
- .then(async () => {
- let res = await projectApi().deleteProjectById({ id: 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 onHandleSizeChange = (val: number) => {
- projectState.searchQuery.pageSize = val;
- getProjectData();
-};
-
-const onHandleCurrentChange = (val: number) => {
- projectState.searchQuery.pageIndex = val;
- getProjectData();
-};
-
-const reset = () => {
- projectState.searchQuery = {
- pageIndex: 1,
- pageSize: 10,
- searchParams: {
- experimentName: '',
- experimentType: null,
- }
- }
-};
-
-const getRoomData = async () => {
- let res = await roomApi().getAllRoom();
- if(res.data.code === 100){
- projectState.allRoomList = JSON.parse(JSON.stringify(res.data.data));
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg
- });
- }
-};
-
-onMounted(() => {
- getProjectData();
- getRoomData();
-})
-
-</script>
-
-<style scoped lang="scss">
-$homeNavLengh: 8;
-.home-container {
- height: calc(100vh - 144px);
- box-sizing: border-box;
- overflow: hidden;
- .homeCard {
- width: 100%;
- padding: 20px;
- box-sizing: border-box;
- background: #fff;
- border-radius: 4px;
-
- .main-card {
- width: 100%;
- height: 100%;
- .cardTop {
- display: flex;
- align-items: center;
- justify-content: space-between;
- margin-bottom: 20px;
- .mainCardBtn {
- margin: 0;
- }
- }
- .pageBtn {
- height: 60px;
- display: flex;
- align-items: center;
- justify-content: right;
-
- .demo-pagination-block + .demo-pagination-block {
- margin-top: 10px;
- }
- .demo-pagination-block .demonstration {
- margin-bottom: 16px;
- }
- }
- }
- &:last-of-type {
- height: calc(100% - 100px);
- }
- }
- .el-row {
- display: flex;
- align-items: center;
- margin-bottom: 20px;
- &:last-child {
- margin-bottom: 0;
- }
- .grid-content {
- align-items: center;
- min-height: 36px;
- }
-
- .topInfo {
- display: flex;
- align-items: center;
- font-size: 16px;
- font-weight: bold;
-
- & > div {
- white-space: nowrap;
- margin-right: 20px;
- }
- }
- }
-}
-.stepItem {
- width: 100%;
- display: flex;
- align-items: flex-start;
- margin-bottom: 30px;
- margin-left: 30px;
- padding-bottom: 30px;
- border-left: 2px solid #ccc;
- &:first-of-type {
- margin-top: 30px;
- }
- &:last-of-type {
- margin-bottom: 0;
- border-left: none;
- }
- .stepNum {
- width: 30px;
- height: 30px;
- border-radius: 15px;
- box-sizing: border-box;
- color: #333;
- border: 1px solid #999;
- line-height: 28px;
- text-align: center;
- margin-right: 10px;
- margin-left: -16px;
- margin-top: -30px;
- }
- .stepCard {
- width: 100%;
- margin-top: -30px;
-
- .box-card {
- width: 100%;
- &:deep(.el-card__header) {
- padding: 10px 15px;
- }
- .card-header {
- width: 100%;
- display: flex;
- justify-content: space-between;
- align-items: center;
- & > div:first-of-type {
- margin-right: 80px;
- font-size: 18px;
- font-weight: bold;
- }
- }
- }
- }
- &:hover .card-header {
- color: #0098f5;
- }
- &:hover .stepNum {
- border: 2px solid #0098f5;
- color: #0098f5;
- }
-}
-
-:deep(.el-date-editor) {
- width: 100%;
-}
-.el-select {
- width: 100%;
-}
-:deep(.el-textarea.is-disabled .el-textarea__inner) {
- background-color: var(--el-card-bg-color);
- color: var(--el-input-text-color, var(--el-text-color-regular));
-}
-:deep(.el-input.is-disabled .el-input__inner) {
- color: var(--el-input-text-color, var(--el-text-color-regular));
-}
-:deep(.el-input.is-disabled .el-input__wrapper) {
- background-color: var(--el-card-bg-color);
- box-shadow: none;
-}
-</style>
diff --git a/src/views/home/dialog.vue b/src/views/home/dialog.vue
deleted file mode 100644
index b1da6ca..0000000
--- a/src/views/home/dialog.vue
+++ /dev/null
@@ -1,272 +0,0 @@
-<template>
- <div class="system-menu-dialog-container">
- <el-dialog :title="state.dialog.title" v-model="state.dialog.isShowDialog" width="769px">
- <el-form ref="menuDialogFormRef" :model="state.ruleForm" size="default" label-width="80px">
- <el-row :gutter="35">
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
- <el-form-item label="上级菜单">
- <el-cascader
- :options="state.menuData"
- :props="{ emitPath: false, checkStrictly: true, value: 'id', label: 'title' }"
- placeholder="请选择上级菜单"
- clearable
- class="w100"
- @change="test"
- v-model="state.ruleForm.parentId">
- </el-cascader>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
- <el-form-item label="菜单名称">
- <el-input v-model="state.ruleForm.meta.title" placeholder="格式:message.router.xxx" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
- <el-form-item label="路由名称">
- <el-input v-model="state.ruleForm.name" placeholder="路由中的 name 值" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
- <el-form-item label="路由路径">
- <el-input v-model="state.ruleForm.path" placeholder="路由中的 path 值" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
- <el-form-item label="重定向">
- <el-input v-model="state.ruleForm.redirect" placeholder="请输入路由重定向" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
- <el-form-item label="菜单图标">
- <IconSelector placeholder="请输入菜单图标" v-model="state.ruleForm.meta.icon" />
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
- <el-form-item label="组件路径">
- <el-input v-model="state.ruleForm.component" placeholder="组件路径" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
- <el-form-item label="链接地址">
- <el-input
- v-model="state.ruleForm.meta.isLink"
- placeholder="外链/内嵌时链接地址(http:xxx.com)"
- clearable
- >
- </el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
- <el-form-item label="权限标识">
- <el-select v-model="state.ruleForm.meta.roles" multiple placeholder="取角色管理" clearable class="w100">
- <el-option v-for="item in state.roleList" :key="item.id" :value="item.id" :label="item.name"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
- <el-form-item label="菜单排序">
- <el-input-number v-model="state.ruleForm.priority" controls-position="right" placeholder="请输入排序" class="w100" />
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
- <el-form-item label="是否隐藏">
- <el-radio-group v-model="state.ruleForm.meta.isHide">
- <el-radio :label="true">隐藏</el-radio>
- <el-radio :label="false">不隐藏</el-radio>
- </el-radio-group>
- </el-form-item>
- </el-col>
- </el-row>
- </el-form>
- <template #footer>
- <span class="dialog-footer">
- <el-button @click="onCancel" size="default">取 消</el-button>
- <el-button type="primary" @click="onSubmit" size="default">{{ state.dialog.submitTxt }}</el-button>
- </span>
- </template>
- </el-dialog>
- </div>
-</template>
-
-<script setup lang="ts" name="systemMenuDialog">
-import { defineAsyncComponent, reactive, onMounted, ref } from 'vue';
-import { storeToRefs } from 'pinia';
-import { useRoutesList } from '/@/stores/routesList';
-import { i18n } from '/@/i18n/index';
-import {ElMessage} from "element-plus";
-import { useMenuApi } from "/@/api/systemManage/menu";
-import {useRoleApi} from "/@/api/systemManage/role";
-// import { setBackEndControlRefreshRoutes } from "/@/router/backEnd";
-
-// 定义子组件向父组件传值/事件
-const emit = defineEmits(['refresh']);
-
-// 引入组件
-const IconSelector = defineAsyncComponent(() => import('/@/components/iconSelector/index.vue'));
-
-// 定义变量内容
-const menuDialogFormRef = ref();
-const stores = useRoutesList();
-const { routesList } = storeToRefs(stores);
-const state = reactive({
- roleList:[],
- // 参数请参考 `/src/router/route.ts` 中的 `dynamicRoutes` 路由菜单格式
- ruleForm: {
- id: null,
- parentId: null,
- description: '',
- name: '',
- component: '',
- priority: 0,
- path: '',
- redirect: '',
- publicable: null,
- meta: {
- title: '',
- icon: '',
- isHide: false,
- isKeepAlive: true,
- isAffix: false,
- isLink: '',
- isIframe: false,
- roles: '',
- },
- },
- menuData: [] as RouteItems [], // 上级菜单数据
- dialog: {
- isShowDialog: false,
- type: '',
- title: '',
- submitTxt: '',
- },
-});
-
-const test = () => {
- console.log(state.menuData)
-}
-
-// 获取 pinia 中的路由
-const getMenuData = (routes: RouteItems) => {
- const arr: RouteItems = [];
- routes.map((val: RouteItem) => {
- val['title'] = i18n.global.t(val.meta?.title as string);
- arr.push({ ...val });
- if (val.children) getMenuData(val.children);
- });
- return arr;
-};
-// 打开弹窗
-const openDialog = (type: string, row?: any) => {
- if (type === 'edit') {
- for(let i in state.ruleForm){
- state.ruleForm[i] = row[i]
- }
- state.dialog.title = '修改菜单';
- state.dialog.submitTxt = '修 改';
- } else {
- state.dialog.title = '新增菜单';
- state.dialog.submitTxt = '新 增';
- state.ruleForm = {
- id: null,
- parentId: null,
- description: '',
- name: '',
- component: '',
- priority: 0,
- path: '',
- redirect: '',
- publicable: null,
- meta: {
- title: '',
- icon: '',
- isHide: false,
- isKeepAlive: true,
- isAffix: false,
- isLink: '',
- isIframe: false,
- roles: '',
- },
- }
- // 清空表单,此项需加表单验证才能使用
- // nextTick(() => {
- // menuDialogFormRef.value.resetFields();
- // });
- }
- state.dialog.type = type;
- state.dialog.isShowDialog = true;
-};
-// 关闭弹窗
-const closeDialog = () => {
- state.dialog.isShowDialog = false;
-};
-
-// 取消
-const onCancel = () => {
- closeDialog();
-};
-// 提交
-const onSubmit = () => {
- menuDialogFormRef.value.validate(async (valid: boolean) => {
- if(valid){
- if(state.dialog.title === '新增菜单'){
- let res = await useMenuApi().addMenu(state.ruleForm)
- if(res.data.code === 100){
- emit('refresh')
- state.dialog.isShowDialog = false;
- ElMessage({
- type: 'success',
- message: '新增成功'
- })
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg,
- });
- }
- }else{
- let res = await useMenuApi().modMenu(state.ruleForm)
- if(res.data.code === 100){
- emit('refresh')
- state.dialog.isShowDialog = false;
- ElMessage({
- type: 'success',
- message: '编辑成功'
- })
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.msg,
- });
- }
- }
- }else{
- ElMessage({
- type: 'warning',
- message: '请完善基本信息',
- });
- }
- })
-};
-
-const getRoles = async () => {
- let res = await useRoleApi().getRoleList()
- if(res.data.code === 100){
- state.roleList = res.data.data
- }else{
- ElMessage({
- type: 'warning',
- message: res.data.message
- })
- }
-}
-// 页面加载时
-onMounted(() => {
- state.menuData = getMenuData(routesList.value);
- getRoles()
-});
-
-// 暴露变量
-defineExpose({
- openDialog,
-});
-</script>
diff --git a/src/views/home/index.ts b/src/views/home/index.ts
deleted file mode 100644
index 9742bbb..0000000
--- a/src/views/home/index.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-interface EquipmentStateType {
-
-}
diff --git a/src/views/home/index.vue b/src/views/home/index.vue
deleted file mode 100644
index 91d40aa..0000000
--- a/src/views/home/index.vue
+++ /dev/null
@@ -1,144 +0,0 @@
-<template>
- <div class="system-menu-container layout-pd">
- <el-card shadow="hover">
- <div class="system-menu-search mb15">
- <el-input size="default" placeholder="请输入菜单名称" style="max-width: 180px"> </el-input>
- <el-button size="default" type="primary" class="ml10">
- <el-icon>
- <ele-Search />
- </el-icon>
- 查询
- </el-button>
- <el-button size="default" type="success" class="ml10" @click="onOpenAddMenu">
- <el-icon>
- <ele-FolderAdd />
- </el-icon>
- 新增菜单
- </el-button>
- </div>
- <el-table
- :data="state.tableData.data"
- v-loading="state.tableData.loading"
- style="width: 100%"
- row-key="path"
- :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
- >
- <el-table-column label="菜单名称" show-overflow-tooltip>
- <template #default="scope">
- <SvgIcon :name="scope.row.meta.icon" />
- <span class="ml10">{{ $t(scope.row.meta.title) }}</span>
- </template>
- </el-table-column>
- <el-table-column prop="path" label="路由路径" show-overflow-tooltip></el-table-column>
- <el-table-column label="组件路径" show-overflow-tooltip>
- <template #default="scope">
- <span>{{ scope.row.component }}</span>
- </template>
- </el-table-column>
- <el-table-column label="权限标识" show-overflow-tooltip>
- <template #default="scope">
- <span>{{ scope.row.meta.roles }}</span>
- </template>
- </el-table-column>
- <el-table-column label="排序" show-overflow-tooltip width="80">
- <template #default="scope">
- {{ scope.$index }}
- </template>
- </el-table-column>
- <el-table-column label="类型" show-overflow-tooltip width="80">
- <template #default="scope">
- <el-tag type="success" size="small">{{ scope.row.xx }}菜单</el-tag>
- </template>
- </el-table-column>
- <el-table-column label="操作" show-overflow-tooltip width="140">
- <template #default="scope">
- <el-button size="small" text type="primary" @click="onOpenAddMenu('add')">新增</el-button>
- <el-button size="small" text type="primary" @click="onOpenEditMenu('edit', scope.row)">修改</el-button>
- <el-button size="small" text type="primary" @click="onTabelRowDel(scope.row)">删除</el-button>
- </template>
- </el-table-column>
- </el-table>
- </el-card>
- <MenuDialog ref="menuDialogRef" @refresh="getTableData()" />
- </div>
-</template>
-
-<script setup lang="ts" name="systemMenu">
-import { defineAsyncComponent, ref, onMounted, reactive } from 'vue';
-import { RouteRecordRaw } from 'vue-router';
-import { ElMessageBox, ElMessage } from 'element-plus';
-import { storeToRefs } from 'pinia';
-import { useRoutesList } from '/@/stores/routesList';
-import { useMenuApi } from "/@/api/systemManage/menu";
-import { initBackEndControlRoutes } from "/@/router/backEnd";
-import {roomApi} from "/@/api/basic/room";
-// import { setBackEndControlRefreshRoutes } from "/@/router/backEnd";
-
-// 引入组件
-const MenuDialog = defineAsyncComponent(() => import('/@/views/home/dialog.vue'));
-
-// 定义变量内容
-const stores = useRoutesList();
-const { routesList } = storeToRefs(stores);
-const menuDialogRef = ref();
-const state = reactive({
- tableData: {
- data: [] as RouteRecordRaw[],
- loading: false,
- },
-});
-
-// 获取路由数据,真实请从接口获取
-const getTableData = async () => {
- let res = await useMenuApi().getMenuAdmin();
- if (res.data.code === 100) {
- state.tableData.data = res.data.data;
- await initBackEndControlRoutes()
- } else {
- ElMessage({
- type: 'warning',
- message: res.data.msg
- });
- }
-};
-// 打开新增菜单弹窗
-const onOpenAddMenu = (type: string) => {
- menuDialogRef.value.openDialog(type);
-};
-// 打开编辑菜单弹窗
-const onOpenEditMenu = (type: string, row: RouteRecordRaw) => {
- menuDialogRef.value.openDialog(type, row);
-};
-// 删除当前行
-const onTabelRowDel = (row: RouteRecordRaw) => {
- ElMessageBox.confirm(`此操作将永久删除该菜单,是否继续?`, '提示', {
- confirmButtonText: '确认',
- cancelButtonText: '取消',
- type: 'warning'
- })
- .then(async () => {
- let res = await useMenuApi().deleteMenu(row.id );
- if (res.data.code === 100) {
- ElMessage({
- type: 'success',
- duration: 2000,
- message: '删除成功'
- });
- await getTableData();
- } else {
- ElMessage({
- type: 'warning',
- message: res.data.msg
- });
- }
- })
- .catch((error) => {
-
- });
-}
-
-// 页面加载时
-onMounted(() => {
- getTableData();
-});
-</script>
diff --git a/src/views/layoutPage/index.vue b/src/views/layoutPage/index.vue
deleted file mode 100644
index 549c2a3..0000000
--- a/src/views/layoutPage/index.vue
+++ /dev/null
@@ -1,182 +0,0 @@
-<template>
- <div class="home-container">
- <el-row :gutter="15" class="home-card-one mb15">
- <el-col
- :xs="24"
- :sm="12"
- :md="12"
- :lg="4"
- :xl="4"
- v-for="(v, k) in homeOne"
- :key="k"
- :class="{ 'home-media home-media-lg': k > 1, 'home-media-sm': k === 1 }"
- >
- <div class="home-card-item flex" >
- <el-button @click="renderMenu(v.id)">{{v.name}}</el-button>
- </div>
- </el-col>
- </el-row>
- <el-row :gutter="15" class="home-card-two mb15">
- <el-col :xs="24" :sm="14" :md="14" :lg="16" :xl="16">
- <div class="home-card-item">
- <div style="height: 100%">
- <el-button @click="renderMenu('6')">{{'应急管理系统'}}</el-button>
- </div>
- </div>
- </el-col>
- <el-col :xs="24" :sm="10" :md="10" :lg="8" :xl="8" class="home-media">
- <div class="home-card-item">
- <div style="height: 100%">
- <el-button @click="renderMenu('7')">{{'目标责任管理系统'}}</el-button>
- </div>
- </div>
- </el-col>
- </el-row>
- <el-row :gutter="15" class="home-card-three">
- <el-col :xs="24" :sm="10" :md="10" :lg="8" :xl="8">
- <div class="home-card-item">
- <el-button @click="renderMenu('8')">{{'事故管理系统'}}</el-button>
- </div>
- </el-col>
- <el-col :xs="24" :sm="14" :md="14" :lg="16" :xl="16" class="home-media">
- <div class="home-card-item">
- <div style="height: 100%">
- <el-button @click="renderMenu('9')">{{'设备综合管控系统'}}</el-button>
- </div>
- </div>
- </el-col>
- </el-row>
- </div>
-</template>
-
-<script lang="ts">
-import { toRefs, reactive, defineComponent, } from 'vue';
-import { storeToRefs } from 'pinia';
-import { initBackEndControlRoutes } from '/@/router/backEnd';
-import {useUserInfo} from "/@/stores/userInfo";
-import { Session } from '/@/utils/storage';
-let global: any = {
- homeChartOne: null,
- homeChartTwo: null,
- homeCharThree: null,
- dispose: [null, '', undefined],
-};
-
-interface stateType {
- homeOne: Array <type>
-}
-interface type {
- id:number,
- name: string
-}
-export default defineComponent({
- name: 'layoutPage',
- setup() {
- const userInfo = useUserInfo()
- const { userInfos } = storeToRefs(userInfo);
- const state = reactive<stateType>({
- homeOne:[{id:1,name:'安全基础信息系统'},{id:2,name:'双重预防系统'},{id:3,name:'系统2'},{id:4,name:'系统3'},{id:5,name:'系统4'}],
- });
- // 折线图
- const renderMenu = async (value: string) => {
- Session.set('projectId',value)
- userInfos.value.projectId = value
- await initBackEndControlRoutes();
- };
- return {
- renderMenu,
- ...toRefs(state),
- };
- },
-});
-</script>
-
-<style scoped lang="scss">
-$homeNavLengh: 8;
-.home-container {
- overflow: hidden;
- .home-card-one,
- .home-card-two,
- .home-card-three {
- .home-card-item {
- width: 100%;
- height: 130px;
- border-radius: 4px;
- transition: all ease 0.3s;
- padding: 20px;
- overflow: hidden;
- background: var(--el-color-white);
- color: var(--el-text-color-primary);
- border: 1px solid var(--next-border-color-light);
- &:hover {
- box-shadow: 0 2px 12px var(--next-color-dark-hover);
- transition: all ease 0.3s;
- }
- &-icon {
- width: 70px;
- height: 70px;
- border-radius: 100%;
- flex-shrink: 1;
- i {
- color: var(--el-text-color-placeholder);
- }
- }
- &-title {
- font-size: 15px;
- font-weight: bold;
- height: 30px;
- }
- }
- }
- .home-card-one {
- @for $i from 0 through 3 {
- .home-one-animation#{$i} {
- opacity: 0;
- animation-name: error-num;
- animation-duration: 0.5s;
- animation-fill-mode: forwards;
- animation-delay: calc($i/10) + s;
- }
- }
- }
- .home-card-two,
- .home-card-three {
- .home-card-item {
- height: 400px;
- width: 100%;
- overflow: hidden;
- .home-monitor {
- height: 100%;
- .flex-warp-item {
- width: 25%;
- height: 111px;
- display: flex;
- .flex-warp-item-box {
- margin: auto;
- text-align: center;
- color: var(--el-text-color-primary);
- display: flex;
- border-radius: 5px;
- background: var(--next-bg-color);
- cursor: pointer;
- transition: all 0.3s ease;
- &:hover {
- background: var(--el-color-primary-light-9);
- transition: all 0.3s ease;
- }
- }
- @for $i from 0 through $homeNavLengh {
- .home-animation#{$i} {
- opacity: 0;
- animation-name: error-num;
- animation-duration: 0.5s;
- animation-fill-mode: forwards;
- animation-delay: calc($i/10) + s;
- }
- }
- }
- }
- }
- }
-}
-</style>
diff --git a/src/views/loginPage/component/accountLogin.vue b/src/views/loginPage/component/accountLogin.vue
index cf4d1c8..7ba377c 100644
--- a/src/views/loginPage/component/accountLogin.vue
+++ b/src/views/loginPage/component/accountLogin.vue
@@ -190,6 +190,7 @@
state.loading.signIn = true;
// 存储 token 到浏览器缓存
let res = await useLoginApi().signIn(state.ruleForm);
+ console.log(res)
if (res.data.code === 100) {
await userInfo.setUserInfos(res.data.data);
Cookies.set('token', res.data.data.tk);
@@ -230,7 +231,8 @@
let res = await useMenuApi().getMenuAdmin();
if (res.data.code === 100) {
state.menu = JSON.parse(JSON.stringify(res.data.data))
- router.push(state.menu[0].children[0].path);
+ console.log(state.menu,'menu')
+ router.push(state.menu[0].path);
} else {
ElMessage({
type: 'warning',
@@ -332,6 +334,9 @@
border-radius: 2px;
padding: 0 30px;
border: 1px solid rgba(17,254,238,.4);
+ .el-input__inner{
+ color: #fff;
+ }
&:focus-within {
border: 1px solid #11FEEE;
}
diff --git a/src/views/newHome/index.vue b/src/views/newHome/index.vue
deleted file mode 100644
index 8450675..0000000
--- a/src/views/newHome/index.vue
+++ /dev/null
@@ -1,967 +0,0 @@
-<template>
- <div class="login-container" :key="once">
- <div class="topPanel"></div>
- <div class="topPanelBg"></div>
- <div class="topPanelCont">
- <div class="topLogo">
- <img src="../../assets/newMenu/toplogo.png" />
- </div>
- <div class="userInfo">
- <div @click="onScreenfullClick" style="margin-right: 15px; cursor: pointer">
- <i class="iconfont" :title="isScreenfull ? $t('message.user.title6') : $t('message.user.title5')" :class="!isScreenfull ? 'icon-fullscreen' : 'icon-tuichuquanping'"></i>
- </div>
- <div class="loginOut" @click="onLoginOut">退出登录</div>
- <span></span>
- <div class="avator">
- <img src="../../assets/menu/admin.png" />
- <div>{{userName}}</div>
- </div>
- </div>
- </div>
- <div class="leftCont"></div>
- <div class="topCont">
- <div class="topInfo">
- <div class="topTit">新疆国泰新华<br />安全风险预警监测系统(试运行)</div>
- <div class="topTime">
- <div class="time">
- {{ time }}
- </div>
- <span></span>
- <div class="today">
- <div>{{ date }}</div>
- <div>
- <span>{{ weekDay }}</span
- ><span>{{ dayTime }}</span>
- </div>
- </div>
- </div>
- </div>
- <div class="line"></div>
- </div>
- <div class="menuGrid">
- <div class="gridCont">
- <div class="grid-content grid-content-1 cont-bg-1" v-throttle @click="toRiskPlatform">
- <div class="toplayer">
- <div>
- <img class="iconImg" src="../../assets/newMenu/icon1.png" />
- <div>
- <div class="itemTit1">智能安全风险综合预警<br />预报平台</div>
- <div class="enTit1">Intelligent Security Risk Comprehensive Forewarning and Forecasting Platform</div>
- </div>
- </div>
- </div>
- <img class="bgImg1" src="../../assets/newMenu/card-1.png" />
- </div>
- <div class="grid-content cont-bg-1" v-throttle @click="toDoublePrevent">
- <div class="toplayer">
- <img class="iconImg" src="../../assets/newMenu/icon2.png" />
- <div>
- <div class="itemTit">智能安全双重预防系统</div>
- <div class="enTit">Intelligent Security Dual Prevention System</div>
- </div>
- </div>
- <img class="bgImg" src="../../assets/newMenu/card-4.png" />
- </div>
- <div class="grid-content cont-bg-1" v-throttle @click="render('4')">
- <div class="toplayer">
- <img class="iconImg" src="../../assets/newMenu/icon3.png" />
- <div>
- <div class="itemTit">智能安全巡检系统</div>
- <div class="enTit">Intelligent Security Patrol System</div>
- </div>
- </div>
- <img class="bgImg" src="../../assets/newMenu/card-8.png" />
- </div>
- <div class="grid-content cont-bg-1" v-throttle @click="render('3')">
- <div class="toplayer">
- <img class="iconImg" src="../../assets/newMenu/icon4.png" />
- <div>
- <div class="itemTit">智能安全特殊作业系统</div>
- <div class="enTit">Intelligent Security Special Operating System</div>
- </div>
- </div>
- <img class="bgImg" src="../../assets/newMenu/card-7.png" />
- </div>
- <div class="grid-content cont-bg-1" v-throttle @click="render('7')">
- <div class="toplayer">
- <img class="iconImg" src="../../assets/newMenu/icon5.png" />
- <div>
- <div class="itemTit">安全目标责任管理系统</div>
- <div class="enTit">Security Target Responsibility Management System</div>
- </div>
- </div>
- <img class="bgImg" src="../../assets/newMenu/card-2.png" />
- </div>
- <div class="grid-content cont-bg-2" v-throttle @click="render('10')">
- <div class="toplayer">
- <img class="iconImg" src="../../assets/newMenu/icon6.png" />
- <div>
- <div class="itemTit">安全知识图谱系统</div>
- <div class="enTit">Security Knowledge Graph System</div>
- </div>
- </div>
- <img class="bgImg" src="../../assets/newMenu/card-3.png" />
- </div>
- <div class="grid-content cont-bg-2" v-throttle @click="render('9')">
- <div class="toplayer">
- <img class="iconImg" src="../../assets/newMenu/icon7.png" />
- <div>
- <div class="itemTit">设备综合管控系统</div>
- <div class="enTit">Equipment Integrated Management and Control System</div>
- </div>
- </div>
- <img class="bgImg" src="../../assets/newMenu/card-9.png" />
- </div>
- <div class="grid-content cont-bg-2" v-throttle @click="render('6')">
- <div class="toplayer">
- <img class="iconImg" src="../../assets/newMenu/icon8.png" />
- <div>
- <div class="itemTit">应急管理系统</div>
- <div class="enTit">Emergency Management System</div>
- </div>
- </div>
- <img class="bgImg" src="../../assets/newMenu/card-5.png" />
- </div>
- <div class="grid-content cont-bg-2" v-throttle @click="renderToNew('11')">
- <div class="toplayer">
- <img class="iconImg" src="../../assets/newMenu/icon9.png" />
- <div>
- <div class="itemTit">智能安全危险化学品全生命周期管控系统</div>
- <div class="enTit">Intelligent Security Hazardous Chemicals Life Cycle Safety Management System </div>
- </div>
- </div>
- <img class="bgImg" src="../../assets/newMenu/card-10.png" />
- </div>
- <div class="grid-content cont-bg-2" v-throttle @click="render('8')">
- <div class="toplayer">
- <img class="iconImg" src="../../assets/newMenu/icon10.png" />
- <div>
- <div class="itemTit">安全事故管理系统</div>
- <div class="enTit">Security Incident Management System</div>
- </div>
- </div>
- <img class="bgImg" src="../../assets/newMenu/card-6.png" />
- </div>
- <div class="grid-content cont-bg-2" @click="render('1')">
- <div class="toplayer">
- <img class="iconImg" src="../../assets/newMenu/icon11.png" />
- <div>
- <div class="itemTit">安全基础信息系统</div>
- <div class="enTit">Basic Security Information System</div>
- </div>
- </div>
- <img class="bgImg" src="../../assets/newMenu/card-11.png" />
- </div>
- </div>
- </div>
- <div class="bot-rights">
- <img src="../../assets/newMenu/pic_line1.png" />
- <div>技术支持:苏州国科鸿宇智能科技有限公司</div>
- <img src="../../assets/newMenu/pic_line2.png" />
- </div>
- </div>
-</template>
-
-<script lang="ts">
-import { toRefs, reactive, computed, defineComponent, onMounted } from 'vue';
-import { storeToRefs } from 'pinia';
-import { useThemeConfig } from '/@/stores/themeConfig';
-import logoMini from '/@/assets/logo-mini.svg';
-import loginIconTwo from '/@/assets/login-icon-two.svg';
-import { NextLoading } from '/@/utils/loading';
-import { Session } from '/@/utils/storage';
-import { useRoute, useRouter } from 'vue-router';
-import { initBackEndControlRoutes } from '/@/router/backEnd';
-import { useUserInfo } from '/@/stores/userInfo';
-import { useRoutesList } from '/@/stores/routesList';
-import pinia from '/@/stores';
-import { useTagsViewRoutes } from '/@/stores/tagsViewRoutes';
-import { ElMessage } from 'element-plus';
-import { ElMessageBox } from 'element-plus/es';
-import { useLoginApi } from '/@/api/login';
-import { useI18n } from 'vue-i18n';
-import screenfull from 'screenfull';
-import router from '../../router';
-import Cookies from 'js-cookie';
-
-// 定义接口来定义对象的类型
-interface LoginState {
- tabsActiveName: string;
- isScan: boolean;
- count: number;
- projectId: string;
- once: number;
- isScreenfull: boolean;
- time: string;
- date: string;
- weekDay: string;
- dayTime: string;
-}
-
-export default defineComponent({
- name: 'loginIndex',
- components: {},
- setup() {
- const { t } = useI18n();
- const router = useRouter();
- const userInfo = useUserInfo();
- const { userInfos } = storeToRefs(userInfo);
- const routeToStore = useRoutesList(pinia);
- const { routesList } = storeToRefs(routeToStore);
- const storesThemeConfig = useThemeConfig();
- const { themeConfig } = storeToRefs(storesThemeConfig);
- // 时间格式化
- const timeForm = {
- hour12: false,
- year: 'numeric',
- month: '2-digit',
- day: '2-digit',
- hour: '2-digit',
- minute: '2-digit',
- second: '2-digit'
- };
- const state = reactive<LoginState>({
- tabsActiveName: 'account',
- isScan: false,
- count: 0,
- projectId: '1',
- once: 0,
- time: '',
- date: '',
- weekDay: '',
- dayTime: '',
- isScreenfull: false
- });
-
- const userName = computed(() =>{
- return userInfos.value.userName
- })
- // 获取布局配置信息
- const getThemeConfig = computed(() => {
- return themeConfig.value;
- });
-
- // 当前时间
- const getDateTime = () => {
- const curTime = new Date().toLocaleString('zh', timeForm).replace(/\//g, '-');
- state.time = curTime.slice(10, 16);
- state.date = curTime.slice(0, 10);
- let week = ['日', '一', '二', '三', '四', '五', '六'];
- let day = new Date().getDay();
- state.weekDay = '星期' + week[day];
- let curHour = Number(curTime.slice(10, 13));
- if (curHour >= 5 && curHour <= 10) {
- state.dayTime = '上午';
- }
- if (curHour > 10 && curHour <= 12) {
- state.dayTime = '中午';
- }
- if (curHour > 12 && curHour <= 18) {
- state.dayTime = '下午';
- }
- if (curHour > 18 && curHour <= 22) {
- state.dayTime = '晚上';
- }
- if (curHour > 22) {
- state.dayTime = '午夜';
- }
- };
- // 下拉菜单点击时
- const onLoginOut = () => {
- ElMessageBox({
- closeOnClickModal: false,
- closeOnPressEscape: false,
- title: t('message.user.logOutTitle'),
- message: t('message.user.logOutMessage'),
- showCancelButton: true,
- confirmButtonText: t('message.user.logOutConfirm'),
- cancelButtonText: t('message.user.logOutCancel'),
- buttonSize: 'default',
- beforeClose: (action, instance, done) => {
- if (action === 'confirm') {
- instance.confirmButtonLoading = true;
- instance.confirmButtonText = t('message.user.logOutExit');
- setTimeout(() => {
- done();
- setTimeout(() => {
- instance.confirmButtonLoading = false;
- }, 300);
- }, 700);
- } else {
- done();
- }
- }
- })
- .then(async () => {
- let res = await useLoginApi().signOut();
- if (res.data.code === '200') {
- Session.clear(); // 清除缓存/token等
- // 使用 reload 时,不需要调用 resetRoute() 重置路由
- window.location.reload();
- } else {
- ElMessage({
- type: 'warning',
- message: res.data.msg
- });
- }
- })
- .catch(() => {});
- };
- //选择菜单
- const render = (value: string) => {
- state.projectId = value;
- renderMenu();
- };
-
- // 全屏点击时
- const onScreenfullClick = () => {
- if (!screenfull.isEnabled) {
- ElMessage.warning('暂不不支持全屏');
- return false;
- }
- screenfull.toggle();
- screenfull.on('change', () => {
- if (screenfull.isFullscreen) state.isScreenfull = true;
- else state.isScreenfull = false;
- });
- };
- // 去风险大屏
- const toRiskPlatform = () => {
- // router.push({
- // name: "warningScreen"
- // });
- window.open('http://39.104.85.193:8585/');
- };
-
- const toDoublePrevent = () => {
- window.open('http://121.239.169.27:6801');
- };
- const throttle = (renderMenu: any, delay: number) => {
- let flag = true;
- let count = 0;
- return function () {
- if (!flag) return;
- flag = false;
- if (count === 0) {
- renderMenu.apply();
- count++;
- flag = true;
- } else {
- setTimeout(() => {
- renderMenu.apply();
- flag = true;
- }, delay);
- }
- };
- };
-
- //调用菜单方法
- const renderMenu = throttle(() => {
- renderFun();
- }, 2000);
-
- //调后台菜单接口
- const renderFun = async () => {
- Cookies.set('projectId', state.projectId);
- userInfos.value.projectId = state.projectId;
- await initBackEndControlRoutes().then(() => {
- let linkToMenu = [...routesList.value];
- if (linkToMenu && linkToMenu.length > 1) {
- router.push(linkToFirstMenu(JSON.parse(JSON.stringify(linkToMenu))[1]));
- } else {
- ElMessage({ type: 'warning', message: '你没有该子系统的权限' });
- }
- });
- };
-
- const linkToFirstMenu: any = (value: any) => {
- let returnMenu = value;
- if (returnMenu.children?.length > 0) {
- return linkToFirstMenu(returnMenu.children[0]);
- } else {
- return returnMenu.path;
- }
- };
-
- const renderToNew = () => {
- window.open('http://222.92.213.22:18001/smartlab/', '_blank');
- };
- // //点击进入特殊作业
- // const toSpecialWorkSys = () => {
- // router.push('/layoutPage');
- // };
- // 页面加载时
- onMounted(() => {
- state.once += 1;
- NextLoading.done();
- getDateTime();
- setInterval(() => {
- getDateTime();
- }, 1000);
- // loginBg();
- // loginApp()
- });
- return {
- render,
- userName,
- logoMini,
- onLoginOut,
- getDateTime,
- renderToNew,
- toRiskPlatform,
- toDoublePrevent,
- onScreenfullClick,
- loginIconTwo,
- getThemeConfig,
- ...toRefs(state)
- };
- }
-});
-</script>
-
-<style scoped lang="scss">
- @keyframes showDown {
- 100% {
- position: absolute;
- top: 60px;
- }
- }
- @keyframes moveDown {
- 100% {
- position: absolute;
- top: 0;
- }
- }
- @keyframes moveRight {
- 100% {
- position: absolute;
- left: 0;
- }
- }
- @keyframes upDown {
- 50% {
- -webkit-transform: translateY(-8px);
- -ms-transform: translateY(-8px);
- -o-transform: translateY(-8px);
- transform: translateY(-8px);
- }
- 100% {
- -webkit-transform: translateY(0);
- -ms-transform: translateY(0);
- -o-transform: translateY(0);
- transform: translateY(0);
- }
- }
-@media screen and (min-width: 1600px) {
- .gridCont {
- width: 100%;
- height: 100%;
- display: grid;
- grid-gap: 20px;
- grid-template-columns: repeat(3, 1fr);
- grid-auto-flow: row;
- justify-content: center;
- .toplayer {
- width: 100%;
- height: 100%;
- position: absolute;
- left: 0;
- top: 0;
- display: flex;
- align-items: center;
- padding: 0 20px;
- z-index: 99;
-
- .itemTit {
- font-size: 28px;
- line-height: 34px;
- margin-bottom: 2px;
- height: 40%;
- color: #072270;
- }
- .enTit {
- font-size: 16px;
- line-height: 20px;
- color: #072270;
- }
-
- .iconImg {
- width: 88px;
- height: 88px;
- margin-right: 20px;
- }
- }
- .bgImg {
- position: absolute;
- width: 30%;
- height: auto;
- right: -10px;
- top: 15px;
- }
- }
-
- .grid-content-1 {
- grid-row-start: 1;
- grid-row-end: 3;
-
- .toplayer {
- width: 100%;
- height: 100%;
- position: absolute;
- left: 0;
- top: 0;
- display: flex;
- align-items: center;
- z-index: 99;
-
- & > div {
- display: flex;
- align-items: flex-start;
- }
-
- .itemTit1 {
- font-size: 32px;
- line-height: 42px;
- height: 40%;
- letter-spacing: 1px;
- color: #072270;
- margin-bottom: 12px;
- }
- .enTit1 {
- font-size: 18px;
- line-height: 24px;
- color: #072270;
- }
- }
- .bgImg1 {
- position: absolute;
- width: 45%;
- height: auto;
- right: -20px;
- top: 30%;
- }
- }
-
- .bot-rights {
- font-size: 18px;
- color: #333;
- }
-}
-
-@media screen and (min-width: 1200px) and (max-width: 1600px) {
- .gridCont {
- width: 100%;
- height: 100%;
- display: grid;
- grid-gap: 15px;
- grid-template-columns: repeat(3, 1fr);
- grid-auto-flow: row;
- justify-content: center;
-
- .toplayer {
- width: 100%;
- height: 100%;
- position: absolute;
- left: 0;
- top: 0;
- display: flex;
- align-items: center;
- padding: 0 20px;
- z-index: 99;
-
- .itemTit {
- font-size: 22px;
- line-height: 30px;
- height: 40%;
- color: #072270;
- margin-bottom: 2px;
- }
- .enTit {
- font-size: 12px;
- color: #072270;
- }
-
- .iconImg {
- width: 44px;
- height: 44px;
- margin-right: 10px;
- }
- }
- .bgImg {
- position: absolute;
- width: 30%;
- height: auto;
- right: -10px;
- top: 15px;
- }
- }
-
- .grid-content-1 {
- grid-row-start: 1;
- grid-row-end: 3;
-
- .toplayer {
- width: 100%;
- height: 100%;
- position: absolute;
- left: 0;
- top: 0;
- display: flex;
- align-items: center;
- z-index: 99;
-
- & > div {
- display: flex;
- align-items: flex-start;
- }
-
- .itemTit1 {
- font-size: 24px;
- line-height: 36px;
- height: 40%;
- letter-spacing: 1px;
- color: #072270;
- margin-bottom: 12px;
- }
- .enTit1 {
- font-size: 14px;
- color: #072270;
- }
- }
- .bgImg1 {
- position: absolute;
- width: 45%;
- height: auto;
- right: -20px;
- top: 30%;
- }
- }
- .bot-rights {
- font-size: 15px;
- color: #333;
- }
-}
-@media screen and (max-width: 1200px) {
- .gridCont {
- width: 100%;
- height: 100%;
- display: grid;
- grid-gap: 10px;
- grid-template-columns: repeat(3, 1fr);
- grid-auto-flow: row;
- justify-content: center;
-
- .toplayer {
- width: 100%;
- height: 100%;
- position: absolute;
- left: 0;
- top: 0;
- display: flex;
- align-items: center;
- padding: 0 15px;
- z-index: 99;
-
- .itemTit {
- font-size: 14px;
- line-height: 22px;
- color: #072270;
- }
- .enTit {
- font-size: 10px;
- line-height: 14px;
- color: #072270;
- }
-
- .iconImg {
- width: 32px;
- height: 32px;
- margin-right: 10px;
- }
- }
- .bgImg {
- position: absolute;
- width: 45%;
- height: auto;
- right: -10px;
- top: 15px;
- }
- }
-
- .grid-content-1 {
- grid-row-start: 1;
- grid-row-end: 3;
-
- .toplayer {
- width: 100%;
- height: 100%;
- position: absolute;
- left: 0;
- top: 0;
- display: flex;
- align-items: center;
- z-index: 99;
-
- & > div {
- display: flex;
- align-items: flex-start;
- }
-
- .itemTit1 {
- font-size: 16px;
- line-height: 36px;
- height: 40%;
- letter-spacing: 1px;
- color: #072270;
- margin-bottom: 12px;
- }
- .enTit1 {
- font-size: 12px;
- color: #072270;
- }
- }
- .bgImg1 {
- position: absolute;
- width: 45%;
- height: auto;
- right: -20px;
- top: 30%;
- }
- }
- .bot-rights {
- font-size: 12px;
- color: #333;
- }
-}
-.login-container {
- width: 100%;
- height: 100%;
- position: relative;
- background: #fff;
- .topPanel {
- width: 100%;
- height: 260px;
- background: url('../../assets/newMenu/topbg.jpg') no-repeat center;
- background-size: 100% 100%;
- display: flex;
- justify-content: center;
- box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
- }
- .topPanelBg {
- position: absolute;
- width: 100%;
- height: 60px;
- top: -60px;
- left: 0;
- background: rgba(255, 255, 255, 0.8);
- z-index: 9;
- animation: moveDown 0.6s 1 ease forwards;
- }
- .topPanelCont {
- position: absolute;
- width: 100%;
- height: 60px;
- padding: 0 50px;
- top: -60px;
- left: 0;
- display: flex;
- align-items: center;
- justify-content: space-between;
- z-index: 999;
- animation: moveDown 0.6s 1 ease forwards;
-
- .topLogo {
- display: flex;
- align-items: center;
-
- img {
- width: 146px;
- height: auto;
- }
- }
-
- .userInfo {
- display: flex;
- align-items: center;
-
- .avator {
- display: flex;
- justify-content: right;
-
- img {
- width: 20px;
- height: 20px;
- border-radius: 10px;
- }
- div {
- font-size: 15px;
- color: #333333;
- line-height: 20px;
- margin-left: 6px;
- }
- }
- span {
- width: 1px;
- height: 20px;
- background: #999;
- margin: 0 15px;
- }
- .loginOut {
- font-size: 15px;
- color: #333;
- line-height: 20px;
- cursor: pointer;
-
- &:hover {
- color: #006df5;
- }
- }
- }
- }
- .leftCont {
- position: absolute;
- left: -100px;
- top: 0;
- width: 220px;
- height: 100%;
- z-index: 99;
- background: url('../../assets/newMenu/leftbg.png') no-repeat center;
- background-size: 100% 100%;
- animation: moveRight .8s 1 ease forwards;
- }
- .topCont {
- position: absolute;
- width: 100%;
- height: 200px;
- left: 0;
- top: 30px;
- padding: 0 40px 0 120px;
- z-index: 99999;
- display: flex;
- flex-direction: column;
- justify-content: center;
- align-items: flex-start;
- animation: showDown 0.6s 1 ease forwards;
-
- .topInfo {
- width: 100%;
- display: flex;
- align-items: center;
- justify-content: space-between;
- margin-bottom: 10px;
-
- .topTit {
- font-size: 44px;
- font-weight: bolder;
- text-align: left;
- color: #fff;
- text-shadow: 0 3px 8px rgba(0, 0, 0, 0.2);
- }
-
- .topTime {
- padding: 15px 10px;
- box-sizing: border-box;
- background: rgba(6, 64, 195, 0.8);
- border-radius: 8px;
- color: #fff;
- font-family: 'PingFang SC';
- font-weight: 600;
- font-size: 16px;
- display: flex;
- align-items: center;
-
- .time {
- font-size: 48px;
- }
- & > span {
- width: 1px;
- height: 40px;
- margin: 0 15px;
- background: #fff;
- }
- .today {
- display: flex;
- flex-direction: column;
- align-items: flex-start;
-
- span {
- font-size: 14px;
- }
-
- span:first-of-type {
- margin-right: 10px;
- }
- }
- }
- }
- .line {
- width: 120px;
- height: 6px;
- background: #00eeff;
- }
- }
- .menuGrid {
- width: calc(100vw - 220px);
- height: calc(100vh - 320px);
- padding: 20px 20px 0;
- position: absolute;
- top: 260px;
- left: 220px;
- .gridCont {
- .grid-content {
- border-radius: 16px;
- position: relative;
- overflow: hidden;
- cursor: pointer;
- transition: 0.3s;
- border: 2px solid rgba(255,255,255,0);
-
- &:hover {
- border-radius: 16px;
- background-image: radial-gradient(ellipse farthest-side at 50% 100%, #48a3ff 0%, #fff 120%);
- box-shadow: -8px -8px 24px rgba(20, 97, 234, 0.2), 8px 8px 24px rgba(20, 97, 234, 0.2);
- border: 2px solid #fff;
-
- .iconImg{
- animation: upDown 0.3s 1 ease-in-out forwards;
- filter: drop-shadow(0 0 12px rgba(20, 97, 234, 0.4));
- }
- }
- }
- .cont-bg-1 {
- background: #d9eaff;
- }
- .cont-bg-2 {
- background: #cdd6ff;
- }
-
- /*.grid-content-2{*/
- /* background-image: linear-gradient(135deg,#0098F5,#1461EA);*/
- /*}*/
-
- /*.grid-content-3{*/
- /* background-image: linear-gradient(135deg,#006DF5,#1450EA);*/
- /*}*/
- }
- }
- .bot-rights {
- width: calc(100vw - 240px);
- height: 60px;
- position: absolute;
- bottom: 0;
- left: 240px;
- z-index: 9999;
- display: flex;
- align-items: center;
- justify-content: center;
-
- img {
- width: 248px;
- height: 8px;
- }
- div {
- margin: 0 20px;
- }
- }
-}
-</style>
diff --git a/src/views/system/home/index.vue b/src/views/system/home/index.vue
index b49c1c8..e27bde7 100644
--- a/src/views/system/home/index.vue
+++ b/src/views/system/home/index.vue
@@ -76,7 +76,7 @@
// import { setBackEndControlRefreshRoutes } from "/@/router/backEnd";
// 引入组件
-const MenuDialog = defineAsyncComponent(() => import('/@/views/home/dialog.vue'));
+const MenuDialog = defineAsyncComponent(() => import('./dialog.vue'));
// 定义变量内容
const stores = useRoutesList();
diff --git a/src/views/system/role/index.vue b/src/views/system/role/index.vue
index f9b3ded..3e0a041 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" />
@@ -101,7 +101,7 @@
type: 'warning'
})
.then(async () => {
- let res = await useRoleApi().deleteRole({ roleId: row.roleId });
+ let res = await useRoleApi().deleteRole({ roleId: row.id });
if (res.data.code === 100) {
ElMessage({
type: 'success',
diff --git a/src/views/system/user/component/userDialog.vue b/src/views/system/user/component/userDialog.vue
index 12f8b32..fd755e0 100644
--- a/src/views/system/user/component/userDialog.vue
+++ b/src/views/system/user/component/userDialog.vue
@@ -36,43 +36,11 @@
<el-input v-model.trim="userForm.phone" placeholder="手机号" clearable></el-input>
</el-form-item>
</el-col>
- <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
- <el-form-item label="是否专家" prop="identityStatus">
- <el-radio-group v-model="userForm.identityStatus">
- <el-radio :label="0">是</el-radio>
- <el-radio :label="1">否</el-radio>
- </el-radio-group>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20" v-if="userForm.identityStatus == 0">
- <el-form-item label="专家类型" prop="identityIds">
- <el-select v-model="userForm.identityIds" placeholder="专家类型" clearable class="w100" multiple>
- <el-option v-for="item in expData" :key="item.id" :label="item.identity" :value="item.id"> </el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
- <el-form-item label="证件类型" prop="idType">
- <el-select v-model="userForm.idType" placeholder="证件类型" clearable class="w100">
- <el-option :key="1" label="身份证" :value="1"> </el-option>
- </el-select>
- </el-form-item>
- </el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
<el-form-item label="证件号码" prop="idSerial">
<el-input v-model.trim="userForm.idSerial" placeholder="证件号码" clearable></el-input>
</el-form-item>
</el-col>
- <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20" v-if="userForm.identityStatus == 0">
- <el-form-item label="资质证书" prop="">
- <el-upload accept="image/*" :action="uploadUrl" :headers="header" method="post" :data="{module: 'accountPath'}" :on-success="handleAvatarSuccess" :on-exceed="showTip" :on-preview="handlePictureCardPreview" :limit='imgLimit' v-model:file-list="fileList" list-type="picture-card" :before-upload="picSize" :on-remove="handleRemove" :before-remove="beforeRemove">
- <el-icon><Plus /></el-icon>
- <template #tip>
- <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传1张</div>
- </template>
- </el-upload>
- </el-form-item>
- </el-col>
</el-row>
</el-form>
<template #footer>
@@ -112,12 +80,8 @@
roleIds: Array<any>
depId: number | null;
phone: string;
- identityStatus:number|null;
- identityIds: Array<any>
pwd: string;
- idType: number | null;
idSerial: string;
- qualificationAttId: number | null;
};
userFormRules:{},
departmentData: Array<DeptData>;
@@ -150,11 +114,7 @@
roleIds: [], // 关联角色
depId: null, // 部门
phone: '', // 手机号
- identityStatus: null,
- identityIds: [],
- idType: 1,
idSerial: '',
- qualificationAttId: null
},
userFormRules:{
name: [{ required: true, message: '请填写用户名', trigger: 'blur' }],
@@ -162,9 +122,6 @@
roleIds: [{ required: true, message: '请选择用户角色', trigger: 'change' }],
depId: [{ required: true, message: '请选择部门', trigger: 'change' }],
phone: [{ required: true, message: '请填写手机号', trigger: 'blur' }],
- identityStatus: [{ required: true, message: '请选择是否为专家', trigger: 'change' }],
- identityIds: [{ required: true, message: '请选择专家类型', trigger: 'change' }],
- idType: [{ required: true, message: '请选择证件类型', trigger: 'blur' }],
pwd: [{ required: true, message: '请输入账户密码', trigger: 'blur' }],
},
departmentData: [], // 部门数据
@@ -197,19 +154,14 @@
roleIds: [],
depId: null,
phone: '',
- identityStatus: null,
- identityIds: [],
- idType: 1,
idSerial: '',
pwd: '',
- qualificationAttId: null
};
} else {
state.title = '修改用户';
state.isAdd = false
state.userForm = JSON.parse(JSON.stringify(value));
state.userForm.roleIds = JSON.parse(JSON.stringify(value)).roles.map(i=>i.roleId)
- state.userForm.identityIds = JSON.parse(JSON.stringify(value)).userIdentities.map(i=>i.userIdentityId)
}
};
@@ -241,10 +193,6 @@
});
return
}
- if(state.userForm.identityStatus == 1){
- state.userForm.identityIds = []
- state.userForm.qualificationAttId = null
- }
if (state.title === '新增用户') {
let res = await userApi().addUser(state.userForm);
if (res.data.code === 100) {
@@ -262,8 +210,8 @@
});
}
} else {
- const {name, realName, roleIds, depId, phone, idType, idSerial, id, identityStatus, identityIds, qualificationAttId} = state.userForm
- const data = {name, realName, roleIds, depId, phone, idType, idSerial,id, identityStatus, identityIds, qualificationAttId}
+ const {name, realName, roleIds, depId, phone, idSerial, id} = state.userForm
+ const data = {name, realName, roleIds, depId, phone, idSerial,id}
let res = await userApi().modUser(data);
if (res.data.code === 100) {
ElMessage({
@@ -338,44 +286,6 @@
state.userForm.qualificationAttId = res.data.id
}
}
-
- // const beforeRemove = (file: {}, fileList: []) => {
- // const result = new Promise((resolve, reject) => {
- // if(!state.isOverSize){
- // ElMessageBox.confirm('此操作将删除该图片, 是否继续?', '提示', {
- // confirmButtonText: '确定',
- // cancelButtonText: '取消',
- // type: 'warning'
- // })
- // .then(() => {
- // // console.log(state.workDetail.gbPath,'path')
- // const list = JSON.parse(JSON.stringify(state.form.workDetail.gbPath))
- // fileList.map((item,index)=>{
- // if(item.uid === file.uid){
- // fileList.splice(index,1)
- // state.form.workDetail.gbPath.splice(index,1)
- // // 请求删除接口
- // deletePic(false,list[index])
- // }
- // })
- // })
- // .catch(() => {
- // reject(false);
- // });
- // }else{
- // const list = JSON.parse(JSON.stringify(state.form.workDetail.gbPath))
- // fileList.map((item,index)=>{
- // if(item.uid === file.uid){
- // fileList.splice(index,1)
- // state.form.workDetail.gbPath.splice(index,1)
- // deletePic(true,list[index])
- // }
- // })
- // state.isOverSize = false
- // }
- // });
- // return result;
- // };
// 页面加载时
onMounted(() => {
diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue
index 473f805..b662ae7 100644
--- a/src/views/system/user/index.vue
+++ b/src/views/system/user/index.vue
@@ -36,11 +36,6 @@
<span>{{ scope.row.roles.map(obj => obj.roleName).join('、') }}</span>
</template>
</el-table-column>
- <el-table-column prop="idType" label="证件类型">
- <template #default="scope">
- <span>{{idTypeList.find(item=>item.id == scope.row.idType)?.name}}</span>
- </template>
- </el-table-column>
<el-table-column prop="idSerial" label="证件号码"></el-table-column>
<el-table-column label="操作" width="100">
<template #default="scope">
@@ -102,7 +97,6 @@
}
};
};
- idTypeList: Array<idType>
depList: [];
roleList: [];
expList: [];
@@ -130,12 +124,6 @@
}
}
},
- idTypeList:[
- {
- id: 1,
- name: '身份证'
- }
- ],
depList: [],
roleList: [],
expList: [],
--
Gitblit v1.9.2