From e989421722e522f4879a354a15ba14912d7acaaa Mon Sep 17 00:00:00 2001 From: Your Name <123456> Date: 星期五, 24 二月 2023 16:49:38 +0800 Subject: [PATCH] Merge branch 'master' of https://sinanoaq.cn:8888/r/scienceexperimentweb --- src/views/analyse/riskUnit/components/riskUnitDialog.vue | 209 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 209 insertions(+), 0 deletions(-) diff --git a/src/views/analyse/riskUnit/components/riskUnitDialog.vue b/src/views/analyse/riskUnit/components/riskUnitDialog.vue new file mode 100644 index 0000000..9ae8873 --- /dev/null +++ b/src/views/analyse/riskUnit/components/riskUnitDialog.vue @@ -0,0 +1,209 @@ +<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="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: '', + 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' }], + liabilityUserId: [{ required: true, message: '请选择负责人', trigger: 'change' }], + basicRiskUnitId: [{ required: true, message: '请选择基础风险单元', trigger: 'change' }] + }, + specialDeviceList: [], + deviceUnitList: [ + {id:1, name: '台'}, + {id:2, name: '个'}, + {id:3, name: '件'} + ], + basicUnitList: [], + allPersonList: [], + allExperimentList: [], + experimentTypeList: [ + {id: 2, name: '实验风险'}, + {id: 1, name: '固有风险'}, + ], +}) + +const showRiskUnitDialog = (title: string, value: RiskUnitType, basicUnitList: UnitType [], allPersonList: AllPersonListType [], allExperimentList: ProjectType []) => { + riskUnitDialogState.riskUnitDialogVisible = true; + riskUnitDialogState.basicUnitList = basicUnitList + riskUnitDialogState.allPersonList = allPersonList + riskUnitDialogState.allExperimentList = allExperimentList + setTimeout(() => { + riskUnitFormRef.value.clearValidate(); + }); + if(title === '新增'){ + riskUnitDialogState.title = '新增'; + riskUnitDialogState.riskUnitForm = { + experimentId: null, + riskCode: '', + riskName: '', + 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 { 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 if(riskUnitDialogState.title === '新增' && riskUnitDialogState.experimentType === 2){ + let { riskCode, riskName, liabilityUserId, liabilityDep, description, ...query} = riskUnitDialogState.riskUnitForm + 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{ + 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> -- Gitblit v1.9.2