From d0d78b9fbe144326f136ee048bb59d314413032e Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: 星期二, 27 五月 2025 08:45:29 +0800
Subject: [PATCH] 修改导出

---
 src/views/analyse/assessApply/components/riskUnitDialog.vue |  340 ++++++++++++++++++++++++++++++--------------------------
 1 files changed, 180 insertions(+), 160 deletions(-)

diff --git a/src/views/analyse/assessApply/components/riskUnitDialog.vue b/src/views/analyse/assessApply/components/riskUnitDialog.vue
index 22aee6c..60a19d0 100644
--- a/src/views/analyse/assessApply/components/riskUnitDialog.vue
+++ b/src/views/analyse/assessApply/components/riskUnitDialog.vue
@@ -1,59 +1,60 @@
 <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" placeholder="风险单元编号" clearable class="input-length"></el-input>
-                        </el-form-item>
-                    </el-col>
-                    <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
-                        <el-form-item label="风险单元名称" prop="riskName">
-                            <el-input v-model="riskUnitDialogState.riskUnitForm.riskName" placeholder="风险单元名称" clearable class="input-length"></el-input>
-                        </el-form-item>
-                    </el-col>
-                    <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
-                      <el-form-item label="风险单元类型" prop="riskUnitTypeId">
-                        <el-select v-model="riskUnitDialogState.riskUnitForm.riskUnitTypeId" placeholder="风险单元类型" clearable class="input-length">
-                          <el-option v-for="item in riskUnitDialogState.riskTypeList" :key="item.id" :label="item.riskType" :value="item.id"></el-option>
-                        </el-select>
-                      </el-form-item>
-                    </el-col>
-                    <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
-                        <el-form-item label="负责人" prop="liabilityUserId">
-                            <el-select v-model="riskUnitDialogState.riskUnitForm.liabilityUserId" placeholder="负责人" clearable class="input-length">
-                                <el-option v-for="item in riskUnitDialogState.allPersonList" :key="item.id" :label="item.personName" :value="item.id"></el-option>
-                            </el-select>
-                        </el-form-item>
-                    </el-col>
-                    <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
-                        <el-form-item label="负责部门" prop="liabilityDep">
-                            <el-input v-model="riskUnitDialogState.riskUnitForm.liabilityDep" placeholder="负责部门" clearable class="input-length"></el-input>
-                        </el-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-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
-                        <el-form-item label="风险单元描述">
-                            <el-input type="textarea" :rows="3" v-model="riskUnitDialogState.riskUnitForm.description" placeholder="风险单元描述" clearable class="input-length"></el-input>
-                        </el-form-item>
-                    </el-col>
-                </el-row>
-            </el-form>
-            <template #footer>
+  <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="liabilityDepId">
+              <el-cascader :options="riskUnitDialogState.departmentData" :disabled="riskUnitDialogState.disabled" :props="{ emitPath: false, checkStrictly: true, value: 'id', label: 'depName' }" placeholder="负责部门" clearable v-model="riskUnitDialogState.riskUnitForm.liabilityDepId"> </el-cascader>
+<!--              <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" size="default">确定</el-button>
+					<el-button type="primary" @click="onSubmitRiskUnit" v-if="!riskUnitDialogState.disabled" size="default">确定</el-button>
 				</span>
-            </template>
-        </el-dialog>
-    </div>
+      </template>
+    </el-dialog>
+  </div>
 </template>
 
 <script setup lang="ts">
@@ -61,132 +62,151 @@
 import { isValidKey } from "/@/utils/methods";
 import {ElMessage} from "element-plus";
 import {riskUnitApi} from "/@/api/analyse/riskUnit";
+import {departmentApi} from "/@/api/systemManage/department";
 
 const riskUnitFormRef = ref()
 
 const riskUnitDialogState = reactive<RiskUnitDialogType>({
-    title: '新增',
-    experimentType: 2,
-    riskUnitDialogVisible: false,
-    riskUnitForm: {
-        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: '固有风险'},
-    ],
+  title: '',
+  experimentType: 2,
+  disabled: false,
+  riskUnitDialogVisible: false,
+  riskUnitForm: {
+    id: null,
+    experimentId: null,
+    riskCode: '',
+    riskName: '',
+    riskUnitTypeId: null,
+    liabilityUserId: null,
+    liabilityDepId: null,
+    description: '',
+    basicRiskUnitId: null,
+  },
+  departmentData: [],
+  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 = (id: number, liabilityUserId: number, basicUnitList: UnitType [], allPersonList: AllPersonListType [], allRiskTypeList: RiskType []) => {
-
-    riskUnitDialogState.riskUnitDialogVisible = true;
-    riskUnitDialogState.basicUnitList = basicUnitList
-    riskUnitDialogState.allPersonList = allPersonList
-    riskUnitDialogState.riskTypeList = allRiskTypeList
-    setTimeout(() => {
-        riskUnitFormRef.value.clearValidate();
-    });
+const showRiskUnitDialog = (title: string, val, id: number, basicUnitList: UnitType [], allPersonList: AllPersonListType [], allRiskTypeList: RiskType []) => {
+  getDeptData()
+  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 = {
-        experimentId: id,
-        riskCode: '',
-        riskName: '',
-        riskUnitTypeId: null,
-        liabilityUserId: liabilityUserId,
-        liabilityDep: '',
-        description: '',
-        basicRiskUnitId: null,
+      id: null,
+      experimentId: id,
+      riskCode: '',
+      riskName: '',
+      riskUnitTypeId: null,
+      liabilityUserId: null,
+      liabilityDepId: null,
+      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 getDeptData =async () => {
+  let res = await departmentApi().getDepartmentList()
+  if (res.data.code === 100) {
+    riskUnitDialogState.departmentData = res.data.data
+  } else {
+    ElMessage({
+      type: 'warning',
+      message: res.data.msg
+    });
+  }
+}
+
 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,
-                    });
-                }
-            }
+  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: '请完善基本信息',
-            });
+          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
+  showRiskUnitDialog
 })
 </script>
 

--
Gitblit v1.9.2