From f2e0a0b50e5f628abdfe6c1e4cc4a9f682003ece Mon Sep 17 00:00:00 2001
From: 祖安之光 <11848914+light-of-zuan@user.noreply.gitee.com>
Date: 星期三, 15 十月 2025 13:30:09 +0800
Subject: [PATCH] 提交

---
 src/views/saftyCheckMng/dailyCheck/index.vue |  180 ++++++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 116 insertions(+), 64 deletions(-)

diff --git a/src/views/saftyCheckMng/dailyCheck/index.vue b/src/views/saftyCheckMng/dailyCheck/index.vue
index 18aa4b5..a72a2c2 100644
--- a/src/views/saftyCheckMng/dailyCheck/index.vue
+++ b/src/views/saftyCheckMng/dailyCheck/index.vue
@@ -11,24 +11,44 @@
           >新增</el-button>
         </el-form-item>
         <el-form-item label="被检查部门/研究组:" >
-          <el-select v-model="queryParams.researchGroup" placeholder="请选择" clearable>
+<!--          <el-select v-model="queryParams.researchGroup" placeholder="请选择" clearable>-->
+<!--            <el-option-->
+<!--                v-for="item in deptList"-->
+<!--                :key="item.deptId"-->
+<!--                :label="item.deptName"-->
+<!--                :value="item.deptId">-->
+<!--            </el-option>-->
+<!--          </el-select>-->
+          <el-cascader v-model="queryParams.researchGroup" placeholder="请选择" :options="deptList" :show-all-levels="false" :props="{value: 'deptId',label: 'deptName',children: 'children',emitPath: false,checkStrictly: true}"/>
+        </el-form-item>
+        <el-form-item label="参加检查人员" >
+          <el-input v-model.trim="queryParams.checkUser" placeholder="参加检查人员"></el-input>
+        </el-form-item>
+        <el-form-item label="检查类型" >
+          <el-select v-model="queryParams.checkType" placeholder="请选择" clearable>
             <el-option
-                v-for="item in deptList"
-                :key="item.deptId"
-                :label="item.deptName"
-                :value="item.deptId">
+                v-for="item in checkTypeList"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value">
             </el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="参加检查人员:" >
-          <el-select v-model="queryParams.searchCheckUserId" placeholder="请选择" clearable>
-            <el-option
-                v-for="item in userList"
-                :key="item.userId"
-                :label="item.userName"
-                :value="item.userId">
-            </el-option>
+        <el-form-item label="隐患" >
+          <el-select v-model="queryParams.haveMainHazard" placeholder="请选择" clearable>
+            <el-option :key="1" label="有" :value="1"></el-option>
+            <el-option :key="0" label="无" :value="0"></el-option>
           </el-select>
+        </el-form-item>
+        <el-form-item label="检查日期" >
+          <el-date-picker
+              v-model="checkDate"
+              type="daterange"
+              value-format="YYYY-MM-DD"
+              range-separator="至"
+              start-placeholder="开始日期"
+              end-placeholder="结束日期"
+          />
         </el-form-item>
         <el-form-item >
           <el-button type="primary" @click="getList">查询</el-button>
@@ -43,12 +63,12 @@
       <el-table-column prop="checkDate" align="center" label="检查时间"/>
       <el-table-column prop="checkPlace" align="center" label="检查地点"/>
       <el-table-column prop="checkRoom" align="center" label="检查房间号"/>
-      <el-table-column prop="enactmentDate" align="center" label="参加检查人员">
+      <el-table-column prop="checkUser" align="center" label="参加检查人员"/>
+      <el-table-column prop="researchGroupName" align="center" label="被检查部门/研究组">
         <template #default="scope">
-          {{scope.row.dailySafetyInspectionUsers.map(i=>i.checkUser).join('、')}}
+          {{ scope.row.dailySafetyInspectionDepts.filter(item=>item.deptName && item.deptName !== '').map(i=>i.deptName).join('、') }}
         </template>
       </el-table-column>
-      <el-table-column prop="researchGroupName" align="center" label="被检查部门/研究组"/>
       <el-table-column prop="checkContent" align="center" label="检查内容"/>
       <el-table-column label="操作" align="center">
         <template #default="scope">
@@ -89,11 +109,35 @@
     pageNum: 1,
     pageSize: 10,
     researchGroup: null,
-    searchCheckUserId: null
+    checkUser: '',
+    checkType: null,
+    haveMainHazard: null,
+    checkBeginDate: '',
+    checkEndDate: ''
   },
+  originDeptList: [],
   dataList: [],
   deptList: [],
+  safetyDeptList: [],
   userList: [],
+  checkTypeList: [
+    {
+      value: 1,
+      label: '综合检查'
+    },
+    {
+      value: 2,
+      label: '部门检查'
+    },
+    {
+      value: 3,
+      label: '实验室自查'
+    },
+    {
+      value: 4,
+      label: '专项检查'
+    }
+  ],
   total: 0,
   formConfig: {
     formItems: [
@@ -107,17 +151,9 @@
       },
       {
         label: '参加检查人员',
-        prop: 'dailySafetyInspectionUsers',
-        type: 'select',
-        multiple: true,
-        filterable: true,
-        rules: [{ required: true, message: '请选择人员', trigger: 'change' }],
-        options: () => {
-          return state.userList.map(user => ({
-            value: user.userId,
-            label: user.userName
-          }))
-        }
+        prop: 'checkUser',
+        type: 'text',
+        rules: [{ required: true, message: '请输入人员', trigger: 'blur' }],
       },
       {
         label: '检查地点',
@@ -133,15 +169,27 @@
       },
       {
         label: '被检查部门/研究组',
-        prop: 'researchGroup',
-        type: 'select',
+        prop: 'dailySafetyInspectionDepts',
+        type: 'cascader',
+        showAllLevels: false,
+        props: {
+          value: 'deptId',
+          label: 'deptName',
+          children: 'children',
+          emitPath: false,
+          checkStrictly: true,
+          multiple: true
+        },
         rules: [{ required: true, message: '请选择部门', trigger: 'blur' }],
-        options: () => {
-          return state.deptList.map(dept => ({
-            value: dept.deptId,
-            label: dept.deptName
-          }))
-        }
+        options: () => state.safetyDeptList
+      },
+      {
+        label: '检查类型',
+        prop: 'checkType',
+        type: 'select',
+        filterable: true,
+        rules: [{ required: true, message: '请选择检查类型', trigger: 'change' }],
+        options: () => state.checkTypeList
       },
       {
         label: '检查内容',
@@ -154,6 +202,7 @@
         label: '存在的主要隐患/问题',
         prop: 'mainHazard',
         type: 'textarea',
+        placeholder: '没有则填“无”',
         autosize: { minRows: 3 },
         rules: [{ required: true, message: '请输入存在的主要隐患/问题', trigger: 'blur' }]
       },
@@ -161,6 +210,7 @@
         label: '整改措施',
         prop: 'rectificationMeasures',
         type: 'textarea',
+        placeholder: '没有则填“无”',
         autosize: { minRows: 3 },
         rules: [{ required: true, message: '请输入整改措施', trigger: 'blur' }]
       },
@@ -168,25 +218,22 @@
         label: '复查结果',
         prop: 'examinationResults',
         type: 'textarea',
-        autosize: { minRows: 3 }
+        autosize: { minRows: 3 },
+        rules: [{ required: true, message: '请输入复查结果', trigger: 'blur' }]
       },
       {
         label: '复查人员',
-        prop: 'reCheckUserId',
-        type: 'select',
-        options: () => {
-          return state.userList.map(user => ({
-            value: user.userId,
-            label: user.userName
-          }))
-        }
+        prop: 'reCheckUser',
+        type: 'text',
+        rules: [{ required: true, message: '请输入复查人员', trigger: 'blur' }]
       },
       {
         label: '复查时间',
         prop: 'reCheckDate',
         type: 'date',
         dateType: 'date',
-        valueFormat: 'YYYY-MM-DD'
+        valueFormat: 'YYYY-MM-DD',
+        rules: [{ required: true, message: '请选择复查时间', trigger: 'blur' }]
       },
       {
         label: '备注',
@@ -197,10 +244,11 @@
     ]
   },
   dataLoader: {},
-  api: {}
+  api: {},
+  checkDate: []
 });
 
-const { queryParams, total, dataList,deptList, userList, formConfig, dataLoader, api } = toRefs(state);
+const { queryParams, total, dataList,deptList, userList, formConfig, dataLoader, api, checkTypeList, checkDate } = toRefs(state);
 onMounted(async ()=>{
   await getList()
   await getDeptList()
@@ -212,20 +260,23 @@
 })
 
 function getDeptList() {
-  listDept({}).then(response => {
-    state.deptList = response.data
-  });
+  listDept().then(response => {
+    state.originDeptList = response.data
+    state.deptList = proxy.handleTree(response.data, "deptId")
+    state.safetyDeptList = proxy.handleTree(response.data.filter(item=>item.safety == '1'), "deptId")
+  })
 }
 
 function getUserList() {
-  listUser().then(res => {
+  listUser({pageNum: 1,pageSize: 999}).then(res => {
     state.userList = res.rows;
-    state.total = res.total;
   })
 };
 
 const getList = async () => {
   loading.value = true
+  state.queryParams.checkBeginDate = state.checkDate[0] || ''
+  state.queryParams.checkEndDate = state.checkDate[1] || ''
   const res = await getDailySafetyInspectList(state.queryParams)
   if(res.code == 200){
     state.dataList = res.rows || []
@@ -238,7 +289,6 @@
 
 const downloadFile = async (val)=>{
     let tableData = val
-    tableData.checkNames = val.dailySafetyInspectionUsers.map(item=>item.checkUser).join('、')
     try {
       generateWordDocument('/dailyCheckSheet.docx', tableData, '日常安全检查记录表.docx');
     } catch (error){
@@ -250,10 +300,7 @@
 }
 
 const openDialog = (type, value) => {
-  let initalData = JSON.parse(JSON.stringify(value))
-  if(type == 'edit' || type == 'view'){
-    initalData.dailySafetyInspectionUsers = value.dailySafetyInspectionUsers.map(i=>i.checkUserId)
-  }
+  const initalData = JSON.parse(JSON.stringify(value))
   dialogRef.value.openDialog(type, initalData)
 }
 
@@ -263,8 +310,13 @@
     pageNum: 1,
     pageSize: 10,
     researchGroup: null,
-    searchCheckUserId: null
+    checkUser: '',
+    checkType: null,
+    haveMainHazard: null,
+    checkBeginDate: '',
+    checkEndDate: ''
   }
+  state.checkDate = []
   await getList()
 }
 const handleDelete = (val) => {
@@ -289,14 +341,14 @@
 
 const handleSubmit = async (data, type) => {
   const params = JSON.parse(JSON.stringify(data))
-  params.dailySafetyInspectionUsers = params.dailySafetyInspectionUsers.map(item=>{
+  console.log(state.originDeptList,'ori')
+  params.dailySafetyInspectionDepts = params.dailySafetyInspectionDepts.map(i=>{
     return {
-      checkUserId: item,
-      checkUser: state.userList.find(i=>i.userId == item)?.userName,
-      dailySafetyInspectionId: params.id
+      deptId: i,
+      deptName: state.originDeptList.find(item=>item.deptId == i)?.deptName
     }
   })
-  params.reCheckUser = state.userList.find(i=>i.userId == params.reCheckUserId)?.userName
+  // params.reCheckUser = state.userList.find(i=>i.userId == params.reCheckUserId)?.nickName
   // 调用API保存数据
   if (type === '新增') {
     delete params.id

--
Gitblit v1.9.2