Przeglądaj źródła

fix:修复自查问题入账问题

sunqijun 1 miesiąc temu
rodzic
commit
c0b0de3f42

+ 225 - 56
src/views/production-safety/hiddenTroubleInvestigationAndGovernance/areaCheckPlanManagementDept/components/areaCheckPlanManagementDeptDetail.vue

@@ -248,7 +248,179 @@
     width="900px"
     destroy-on-close
   >
-    <BasicForm
+    <el-form ref="sandHiddenDangerFormRefDept" label-width="150px" :model="sandHiddenDangerFormDataDept" :rules="sandHiddenDangerFormRulesDept">
+        <el-form-item prop="typeId" label="隐患问题类别:" style="width: 70%;">
+          <el-select
+            v-model="sandHiddenDangerFormDataDept.typeId"
+            placeholder="请选择隐患问题类别"
+            filterable
+            clearable
+            style="width: 100%"
+          >
+            <el-option
+              v-for="item in dangerTypeList"
+              :key="item.id"
+              :label="item.categoryName"
+              :value="item.id"
+            />
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="隐患问题:" prop="dangerProblem">
+            <el-input
+            v-model="sandHiddenDangerFormDataDept.dangerProblem"
+            placeholder="请输入隐患问题描述"
+            style="width: 450px"
+            />
+      </el-form-item>
+
+      <el-form-item label="问题主要原因:" prop="reasonId">
+        <el-select
+          v-model="sandHiddenDangerFormDataDept.reasonId"
+          placeholder="请选择问题主要原因"
+          clearable
+          filterable
+          style="width: 450px"
+        >
+          <el-option
+            v-for="option in REASON_OPTIONS"
+            :key="option.value"
+            :label="option.label"
+            :value="option.value"
+          />
+        </el-select>
+      </el-form-item>
+
+      <el-form-item label="任务来源:" prop="taskSource">
+        <el-input
+          v-model="sandHiddenDangerFormDataDept.taskSource"
+          placeholder="如:上级检查、院内自查"
+          style="width: 450px"
+        />
+      </el-form-item>
+
+      <el-form-item label="整改要求:" prop="rectificationRequirement">
+        <el-input
+          v-model="sandHiddenDangerFormDataDept.rectificationRequirement"
+          placeholder="请输入整改要求"
+          style="width: 450px"
+        />
+      </el-form-item>
+
+      <el-form-item prop="rectificationDepartmentIds" label="整改责任部门:">
+          <el-cascader
+            ref="cascaderDeptRef"
+            v-model="sandHiddenDangerFormDataDept.rectificationDepartmentIds"
+            :options="issueDeptTree"
+            :props="cascaderDeptProp"
+            :show-all-levels="false"
+            placeholder="请选择整改责任部门"
+            filterable
+            clearable
+            style="width: 450px"
+            @change="onIssueDeptChange"
+          />
+        </el-form-item>
+
+        <el-form-item prop="rectificationResponsibleIds" label="整改负责人">
+          <el-select
+            v-model="sandHiddenDangerFormDataDept.rectificationResponsibleIds"
+            placeholder="选择整改负责人"
+            filterable
+            clearable
+            style="width: 450px"
+          >
+            <el-option
+              v-for="user in issueUserList"
+              :key="user.id"
+              :label="user.realname ?? user.username"
+              :value="user.id"
+            />
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="整改日期:" prop="rectificationDeadline">
+            <el-date-picker
+            v-model="sandHiddenDangerFormDataDept.rectificationDeadline"
+            type="date"
+            value-format="YYYY-MM-DD"
+            placeholder="请选择整改日期"
+            style="width: 450px"
+            />
+      </el-form-item>
+
+      <el-form-item prop="reviewDepartmentId" label="复查人员所属部门:">
+          <el-cascader
+            v-model="sandHiddenDangerFormDataDept.reviewDepartmentId"
+            :options="deptTree"
+            :props="cascaderDeptProp"
+            :show-all-levels="false"
+            placeholder="请选择复查人员所属部门"
+            filterable
+            clearable
+            style="width: 450px"
+        />
+      </el-form-item>
+
+      <el-form-item label="复查人员:" prop="reviewPersonId">
+        <el-select
+          v-model="sandHiddenDangerFormDataDept.reviewPersonId"
+          placeholder="请选择复查人员"
+          clearable
+          filterable
+          style="width: 450px"
+        >
+          <el-option
+            v-for="u in reviewUserListDept"
+            :key="u.id"
+            :label="u.realname || u.username"
+            :value="u.id"
+          />
+        </el-select>
+      </el-form-item>
+
+      <el-form-item label="举一反三是否推送:" prop="isDrawLessonsPush">
+        <el-radio-group v-model="sandHiddenDangerFormDataDept.isDrawLessonsPush" >
+          <el-radio :value="0">否</el-radio>
+          <el-radio :value="1">是</el-radio>
+        </el-radio-group>
+      </el-form-item>
+
+        <el-form-item label-width="150px" v-if="sandHiddenDangerFormDataDept.isDrawLessonsPush === 1">
+            <el-input placeholder="如:上级检查、院内自查" style="width: 450px"  v-model="sandHiddenDangerFormDataDept.drawLessonsContent" />
+        </el-form-item>
+        <el-form-item prop="drawLessonsDepartmentIds" v-if="sandHiddenDangerFormDataDept.isDrawLessonsPush === 1" label="举一反三责任部门:">
+            <el-select
+                v-model="drawLessonsDeptIdsArrayDept"
+                placeholder="请选择举一反三责任部门,可多选"
+                clearable
+                filterable
+                multiple
+                collapse-tags
+                collapse-tags-tooltip
+                style="width: 450px"
+                @change="() => { sandHiddenDangerFormDataDept.drawLessonsDepartmentIds = drawLessonsDeptIdsArrayDept.join(','); }"
+                >
+                <el-option
+                    v-for="d in deptOptions"
+                    :key="d.id"
+                    :label="d.deptName"
+                    :value="d.id"
+                />
+                </el-select>
+        </el-form-item>
+        
+        <el-form-item prop="drawLessonsDeadline" label="举一反三时限:" v-if="sandHiddenDangerFormDataDept.isDrawLessonsPush === 1">
+          <el-date-picker
+            v-model="sandHiddenDangerFormDataDept.drawLessonsDeadline"
+            type="date"
+            style="width: 450px"
+            value-format="YYYY-MM-DD"
+            placeholder="请选择举一反三截止日期(选填)"
+          />
+        </el-form-item>
+    </el-form>
+    <!-- <BasicForm
       ref="sandHiddenDangerFormRefDept"
       :formData="sandHiddenDangerFormDataDept"
       :formRules="sandHiddenDangerFormRulesDept"
@@ -275,6 +447,7 @@
       <template #rectificationDepartmentIds>
         <el-form-item prop="rectificationDepartmentIds" style="width: 100%;">
           <el-cascader
+            ref="cascaderDeptRef"
             v-model="sandHiddenDangerFormDataDept.rectificationDepartmentIds"
             :options="issueDeptTree"
             :props="cascaderDeptProp"
@@ -338,28 +511,36 @@
           <el-radio :value="1">是</el-radio>
         </el-radio-group>
       </template>
-      <template #drawLessonsDepartmentIds> 
-        <el-select
-          v-model="drawLessonsDeptIdsArrayDept"
-          placeholder="请选择举一反三责任部门,可多选"
-          clearable
-          filterable
-          multiple
-          collapse-tags
-          collapse-tags-tooltip
-          style="width: 100%"
-          @change="() => { sandHiddenDangerFormDataDept.drawLessonsDepartmentIds = drawLessonsDeptIdsArrayDept.join(','); }"
-        >
-          <el-option
-            v-for="d in deptOptions"
-            :key="d.id"
-            :label="d.deptName"
-            :value="d.id"
-          />
-        </el-select>
+      <template #drawLessonsContent v-if="sandHiddenDangerFormDataDept.isDrawLessonsPush === 1">
+        <el-form-item label-width="136.5px" style="width:100%">
+            <el-input placeholder="如:上级检查、院内自查"  v-model="sandHiddenDangerFormDataDept.drawLessonsContent" />
+        </el-form-item>
       </template>
-      <template #drawLessonsDeadline>
-        <el-form-item prop="drawLessonsDeadline" style="width: 100%;">
+      <template #drawLessonsDepartmentId v-if="sandHiddenDangerFormDataDept.isDrawLessonsPush === 1"> 
+        <el-form-item prop="drawLessonsDepartmentIds" style="width: 100%" label="举一反三责任部门:">
+            <el-select
+                v-model="drawLessonsDeptIdsArrayDept"
+                placeholder="请选择举一反三责任部门,可多选"
+                clearable
+                filterable
+                multiple
+                collapse-tags
+                collapse-tags-tooltip
+                style="width: 100%"
+                @change="() => { sandHiddenDangerFormDataDept.drawLessonsDepartmentIds = drawLessonsDeptIdsArrayDept.join(','); }"
+                >
+                <el-option
+                    v-for="d in deptOptions"
+                    :key="d.id"
+                    :label="d.deptName"
+                    :value="d.id"
+                />
+                </el-select>
+        </el-form-item>
+        
+      </template>
+      <template #drawLessonsDeadline v-if="sandHiddenDangerFormDataDept.isDrawLessonsPush === 1">
+        <el-form-item prop="drawLessonsDeadline" label="举一反三时限:" style="width: 100%;">
           <el-date-picker
             v-model="sandHiddenDangerFormDataDept.drawLessonsDeadline"
             type="date"
@@ -368,7 +549,7 @@
           />
         </el-form-item>
       </template>
-    </BasicForm>
+    </BasicForm> -->
     <template #footer>
       <el-button @click="showSandConfirmDialogDept = false">取消</el-button>
       <el-button type="primary" :loading="sandConfirmLoadingDept" @click="confirmSandToHiddenDangerDept">
@@ -390,7 +571,7 @@
   import { downloadFile } from '@/views/disaster/utils';
   import useTableConfig from '@/hooks/useTableConfigHook';
   import type { TableColumnProps } from '@/types/basic-table';
-  import { AREA_CHECK_PLAN_STATUS_LABEL } from '../../areaCheckPlanManagement/configs/status';
+  import { AREA_CHECK_PLAN_STATUS_LABEL} from '../../areaCheckPlanManagement/configs/status';
   import {
     queryAreaCheckPlanManageDeptDetail,
     queryAreaCheckPlanDetailDeptPage,
@@ -401,21 +582,21 @@
     type UnqualifiedItemNumRecord,
     type SandAreaCheckRecordToHiddenDangerReq,
   } from '@/api/production-safety-system';
+  import { HIDDEN_DANGER_FORM_CONFIG, HIDDEN_DANGER_FORM_RULES, REASON_OPTIONS, HIDDEN_DANGER_FORM_DATA } from "../configs/form"
   import BasicForm from '@/components/BasicForm.vue';
   import { useFormConfigHook } from '@/hooks/useFormConfigHook';
   import { getAllDepartments } from '@/api/auth/dept';
   import type { DeptTree } from '@/types/dept/type';
-  import {
-    HIDDEN_DANGER_FORM_CONFIG,
-    HIDDEN_DANGER_FORM_DATA,
-    HIDDEN_DANGER_FORM_RULES,
-  } from '@/views/production-safety/hiddenTroubleInvestigationAndGovernance/hiddenTroubleAccountManagement/configs/form';
+
   import { queryAvailableUserList } from '@/api/production-safety/responsibility-implementation';
   import { downloadByData } from '@/utils/file/download';
   import {
     queryDangerTypePage,
   } from '@/api/production-safety';
 
+  import type { CascaderInstance } from 'element-plus'
+import { rules } from '../../../../../types/camera/constant';
+
   const router = useRouter();
   const route = useRoute();
 
@@ -743,7 +924,8 @@
 
   const validateSandHiddenDangerFormDept = async () => {
     if (!sandHiddenDangerFormRefDept.value) return false;
-    return await sandHiddenDangerFormRefDept.value.validateForm();
+    console.log(sandHiddenDangerFormRefDept.value)
+    return await sandHiddenDangerFormRefDept.value.validate();
   };
 
   const confirmSandToHiddenDangerDept = async () => {
@@ -858,33 +1040,20 @@
     }
   };
 
-  const isDrawLessonsPushChange = () => {
-    console.log(sandHiddenDangerFormDataDept.isDrawLessonsPush)
-    console.log('HIDDEN_DANGER_FORM_CONFIG', HIDDEN_DANGER_FORM_CONFIG)
-    let data = [
-        {
-          prop: 'drawLessonsContent',
-          label: '举一反三内容:',
-          component: 'ElInput',
-          componentProps: {
-            placeholder: '如:上级检查、院内自查',
-          },
-        },
-        {
-          prop: 'drawLessonsDepartmentIds',
-          label: '举一反三责任部门:',
-          slot: 'drawLessonsDepartmentIds',
-        },
-        {
-          prop: 'drawLessonsDeadline',
-          label: '举一反三时限:',
-          slot: 'drawLessonsDeadline',
-        },
-    ]
-  };
-
-  const onIssueDeptChange = () => {
+  const cascaderDeptRef = ref<CascaderInstance | null>(null)
+  const onIssueDeptChange = async () => {
+    const nodes = cascaderDeptRef.value?.getCheckedNodes()
+  
+    if (!nodes || nodes.length === 0) return
+    const currentDept = nodes[0]
     sandHiddenDangerFormDataDept.rectificationResponsibleIds = undefined;
+    try {
+      const userRes = await queryAvailableUserList({ pageNumber: 1, pageSize: 9999, queryParam: {deptName: currentDept.data.deptName||undefined} });
+      issueUserList.value = (userRes as any)?.records ?? [];
+    } catch (e:any) {
+      ElMessage.error(e?.message || e?.data || '加载部门或负责人列表失败');
+      issueUserList.value = [];
+    }
   };
 
   onMounted(() => {

+ 192 - 0
src/views/production-safety/hiddenTroubleInvestigationAndGovernance/areaCheckPlanManagementDept/configs/form.ts

@@ -69,6 +69,153 @@ export const ACADEMY_FILE_FORM_CONFIG: FormConfig[] = [
   },
 ];
 
+/** 问题主要原因:1-人的不安全行为,2-物的不安全状态,3-环境的不利影响,4-管理缺陷 */
+export const REASON_OPTIONS = [
+  { label: '人的不安全行为', value: 1 },
+  { label: '物的不安全状态', value: 2 },
+  { label: '环境的不利影响', value: 3 },
+  { label: '管理缺陷', value: 4 },
+];
+
+// 检查记录入账隐患台账
+export const HIDDEN_DANGER_FORM_CONFIG: FormConfig[] = [
+//   {
+//     prop: 'typeId',
+//     label: '隐患问题类别:',
+//     component: 'ElSelect',
+//     slot: 'typeId',
+//     componentProps: {
+//       placeholder: '请选择隐患问题类别',
+//       style: { width: '100%' },
+//     },
+//     // selectOptions: DANGER_TYPE_OPTIONS,
+//   },
+//   {
+//     prop: 'dangerProblem',
+//     label: '隐患问题:',
+//     component: 'ElInput',
+//     componentProps: {
+//       placeholder: '请输入隐患问题描述',
+//     },
+//   },
+//   {
+//     prop: 'reasonId',
+//     label: '问题主要原因:',
+//     component: 'ElSelect',
+//     componentProps: {
+//       placeholder: '请选择问题主要原因',
+//       style: { width: '100%' },
+//     },
+//     selectOptions: REASON_OPTIONS,
+//   },
+//   {
+//     prop: 'taskSource',
+//     label: '任务来源:',
+//     component: 'ElInput',
+//     componentProps: {
+//       placeholder: '如:上级检查、院内自查',
+//     },
+//   },
+//   {
+//     prop: 'rectificationRequirement',
+//     label: '整改要求:',
+//     component: 'ElInput',
+//     componentProps: {
+//       placeholder: '请输入整改要求',
+//     },
+//   },
+//   {
+//     prop: 'rectificationDepartmentIds',
+//     label: '整改责任部门:',
+//     slot: 'rectificationDepartmentIds',
+//   }, 
+//   {
+//     prop: 'rectificationResponsibleIds',
+//     label: '整改负责人:',
+//     slot: 'rectificationResponsibleIds',
+//   },
+//   {
+//     prop: 'rectificationDeadline',
+//     label: '整改日期:',
+//     component: 'ElDatePicker',
+//     componentProps: {
+//       type: 'date',
+//       placeholder: '请选择整改日期',
+//       valueFormat: 'YYYY-MM-DD',
+//       style: { width: '100%' },
+//     },
+//   },
+//   {
+//     prop: 'reviewDepartmentId',
+//     label: '复查人员所属部门:',
+//     slot: 'reviewDepartmentId',
+//     componentProps: {
+//       placeholder: '请选择复查人员所属部门',
+//       style: { width: '100%' },
+//     },
+//   },
+//   {
+//     prop: 'reviewPersonId',
+//     label: '复查人员:',
+//     slot: 'reviewPerson',
+//     componentProps: {
+//       placeholder: '请选择复查人员',
+//       style: { width: '100%' },
+//     },
+//   },
+  {
+    prop: 'isDrawLessonsPush',
+    label: '举一反三是否推送:',
+    slot: 'isDrawLessonsPush',
+  },
+  {
+    prop: 'drawLessonsContent',
+    slot:'drawLessonsContent',
+    label: '',
+    component: 'ElInput',
+    componentProps: {
+      placeholder: '如:上级检查、院内自查',
+      style: { paddingLeft: '136.5px' },
+    },
+  },
+  {
+    prop: 'drawLessonsDepartmentIds',
+    label: '', //举一反三责任部门:
+    slot: 'drawLessonsDepartmentIds',
+  },
+  {
+    prop: 'drawLessonsDeadline',
+    label: '', //举一反三时限:
+    slot: 'drawLessonsDeadline',
+  },
+];
+
+export const HIDDEN_DANGER_FORM_DATA = {
+  typeId: undefined as number | undefined,
+  dangerProblem: '',
+  reasonId: undefined as number | undefined,
+  taskSource: '', // 任务来源
+  rectificationRequirement: '', // 整改要求
+  rectificationDepartmentIds: '', // 整改责任部门
+  rectificationResponsibleIds: '', // 整改负责人
+  rectificationDeadline: '', //整改日期
+  reviewDepartmentId: undefined as number | undefined, // 复查人员所属部门
+  reviewPersonId: undefined as number | undefined, // 复查人员
+  reviewPersonName: '',
+  isDrawLessonsPush: 0, // 举一反三是否推送
+  drawLessonsContent: '', // 举一反三内容
+  drawLessonsDepartmentIds: '', // 举一反三责任部门
+  drawLessonsDeadline: '', // 举一反三时限
+  // 提交接口需要,下发时再填
+  rectificationResponsiblePerson: '',
+  // 整改详情展示(接口可能返回)
+  rectificationCompletionStatus: '',
+  rectificationCompletionTime: '',
+  attachments: '',
+  reviewComments: '',
+  rectificationResponsibleUserId: '',
+};
+
 export const ACADEMY_FILE_FORM_DATA = {
   fileName: '',
   classifyName: '',
@@ -89,3 +236,48 @@ export const ACADEMY_FILE_FORM_RULES = {
   fileFormat: [{ required: true, message: '请选择文件格式', trigger: 'change' }],
   releaseDate: [{ required: true, message: '请选择发布日期', trigger: 'change' }],
 };
+
+export const HIDDEN_DANGER_FORM_RULES = {
+  typeId: [{ required: true, message: '请选择隐患问题类别', trigger: 'change' }],
+  dangerProblem: [{ required: true, message: '请输入隐患问题', trigger: 'blur' }],
+  reasonId: [{ required: true, message: '请选择问题主要原因', trigger: 'change' }],
+  taskSource: [{ required: true, message: '请输入任务来源', trigger: 'blur' }],
+  rectificationRequirement: [{ required: true, message: '请输入整改要求', trigger: 'blur' }],
+  rectificationDeadline: [{ required: true, message: '请选择整改日期', trigger: 'change' }],
+  reviewDepartmentId: [{ required: true, message: '请选择复查人员所属部门', trigger: 'change' }],
+  reviewPersonId: [{ required: true, message: '请选择复查人员', trigger: 'change' }],
+  isDrawLessonsPush: [{ required: true, message: '请选择举一反三是否推送', trigger: 'change' }],
+  drawLessonsContent: [
+    {
+      required: true,
+      message: '请输入举一反三内容',
+      trigger: 'blur',
+    },
+  ],
+  drawLessonsDepartmentIds: [
+    {
+      required: true,
+      message: '请选择举一反三责任部门',
+      trigger: 'change',
+    },
+  ],
+  drawLessonsDeadline: [
+    {
+      required: true,
+      message: '请选择举一反三截止日期',
+      trigger: 'change',
+    },
+  ],
+  rectificationCompletionStatus:[
+    { required: true, message: '请输入整改完成情况', trigger: 'blur' }
+  ],
+  rectificationCompletionTime: [
+    { required: true, message: '请选择整改完成时间', trigger: 'change' }
+  ],
+  rectificationDepartmentIds: [
+    { required: true, message: '请选择整改责任部门', trigger: 'change' }
+  ],
+  rectificationResponsibleIds: [
+    { required: true, message: '请选择整改负责人', trigger: 'change' }
+  ],
+};