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