Переглянути джерело

[Wip 0000] 初步对接问题反馈页面

houzekong 1 місяць тому
батько
коміт
9fef38b4cd

+ 1 - 1
src/layouts/default/feature/SimpleMap.vue

@@ -10,7 +10,7 @@
       position: absolute;
       bottom: 10px;
       left: 500px;
-      z-index: 1000;
+      z-index: 3;
       background: rgba(0, 0, 0, 0.2);
       color: white;
       padding: 2px 5px;

+ 32 - 0
src/views/dashboard/basicInfo/basicInfo.api.ts

@@ -12,6 +12,12 @@ enum Api {
   editDataQuaQue = '/ventanaly-province/province/dataQuaQue/edit',
   // 密闭统计
   getClosedAccessCount = '/ventanaly-province/province/mineData/getZFCGoafAccessCount',
+
+  getGoafQuestionReportList = '/ventanaly-province/province/goafQuestionReport/list',
+  addGoafQuestionReport = '/ventanaly-province/province/goafQuestionReport/add',
+  deleteGoafQuestionReport = '/ventanaly-province/province/goafQuestionReport/delete',
+  editGoafQuestionReport = '/ventanaly-province/province/goafQuestionReport/edit',
+  getGoafQuestionReport = '/ventanaly-province/province/goafQuestionReport/queryById',
 }
 // 矿山信息
 
@@ -79,3 +85,29 @@ export const getClosedAccessCount = (params) =>
     url: Api.getClosedAccessCount,
     params,
   });
+
+export const getGoafQuestionReportList = (params) =>
+  defHttp.get({
+    url: Api.getGoafQuestionReportList,
+    params,
+  });
+export const addGoafQuestionReport = (params) =>
+  defHttp.post({
+    url: Api.addGoafQuestionReport,
+    params,
+  });
+export const deleteGoafQuestionReport = (params) =>
+  defHttp.delete({
+    url: Api.deleteGoafQuestionReport,
+    params,
+  });
+export const editGoafQuestionReport = (params) =>
+  defHttp.get({
+    url: Api.editGoafQuestionReport,
+    params,
+  });
+export const getGoafQuestionReport = (params) =>
+  defHttp.get({
+    url: Api.getGoafQuestionReport,
+    params,
+  });

+ 6 - 4
src/views/dashboard/basicInfo/problemReport/components/ProblemReportModal.vue

@@ -49,17 +49,18 @@
       <!-- 编辑/新增模式 -->
       <div v-else class="edit-container">
         <!-- 动态渲染topFormSchema字段(编辑/新增模式) -->
-        <div class="mine-base-info" v-if="mode === 'add'">
+        <!-- <div class="mine-base-info" v-if="mode === 'add'">
           <a-form-item v-for="schema in topFormSchema" :key="schema.field" :name="schema.field" :label="schema.label" :rules="schema.rules">
             <component
               :is="getComponent(schema.component)"
-              v-model:value="formData[schema.field]"
+              v-model:value="currentRecord[schema.field]"
               v-bind="schema.componentProps"
               :placeholder="`请输入${schema.label}`"
               style="width: 100%"
+              disabled
             />
           </a-form-item>
-        </div>
+        </div> -->
 
         <!-- 问题项编辑区 -->
         <div class="que-item" v-for="(item, index) in queList" :key="item.orderNum || index">
@@ -101,7 +102,7 @@
   import dayjs, { Dayjs } from 'dayjs';
   import MineCascader from '/@/components/Form/src/jeecg/components/MineCascader/MineCascader.vue';
   import type { FormInstance, RuleObject } from 'ant-design-vue/es/form';
-  import { JEditor } from '/@/components/Form';
+  import { JEditor, JImageUpload } from '/@/components/Form';
 
   // 组件映射表
   const componentMap = {
@@ -111,6 +112,7 @@
     InputTextArea: Input.TextArea,
     MineCascader,
     JEditor,
+    JImageUpload,
   };
 
   // 定义事件发射

+ 66 - 9
src/views/dashboard/basicInfo/problemReport/index.vue

@@ -53,6 +53,19 @@
             <SvgIcon name="details" />
           </button>
         </template>
+        <template #form-mine-cascader>
+          <MineCascader
+            v-model:value="innerValue"
+            style="width: 330px"
+            :sync-to-store="false"
+            :init-from-store="false"
+            :change-on-select="false"
+            @change="changeCascader"
+          />
+        </template>
+        <template #form-goaf-select>
+          <a-select v-model:value="goafId" :options="goafOptions" placeholder="请选择" />
+        </template>
       </BasicTable>
     </TabPane>
     <TabPane key="resolved" tab="已解决">
@@ -75,6 +88,19 @@
             <SvgIcon name="details" />
           </button>
         </template>
+        <template #form-mine-cascader>
+          <MineCascader
+            v-model:value="innerValue"
+            style="width: 330px"
+            :sync-to-store="false"
+            :init-from-store="false"
+            :change-on-select="false"
+            @change="changeCascader"
+          />
+        </template>
+        <template #form-goaf-select>
+          <a-select v-model:value="goafId" :options="goafOptions" placeholder="请选择" />
+        </template>
       </BasicTable>
     </TabPane>
   </Tabs>
@@ -127,17 +153,22 @@
   import ProblemReportModal from './components/ProblemReportModal.vue';
   import { SvgIcon } from '/@/components/Icon';
   import { columns, searchFormSchema, exportFormSchema } from './problemReport.data';
-  import { getDataQuaQueList, addDataQuaQue, deleteDataQuaQue, editDataQuaQue } from '../basicInfo.api';
+  import { getGoafQuestionReportList, addGoafQuestionReport, deleteGoafQuestionReport, editGoafQuestionReport } from '../basicInfo.api';
   import { findNode } from '/@/utils/helper/treeHelper';
   import { useMineDepartmentStore } from '/@/store/modules/mine';
   // import { getDictItemsByCode } from '/@/utils/dict';
   import dayjs, { Dayjs } from 'dayjs';
   import { useListPage } from '/@/hooks/system/useListPage';
+  import { useInitForm } from '/@/views/analysis/warningAnalysis/connectAnalysis/hooks/form';
+  import MineCascader from '@/components/Form/src/jeecg/components/MineCascader/MineCascader.vue';
 
   // 路由实例
   const router = useRouter();
   // 实例化矿井Store
   const mineStore = useMineDepartmentStore();
+
+  const { goafOptions, goafId, innerValue, initGoafOptions } = useInitForm();
+
   // 响应式数据
   const activeKey = ref('unresolved'); // 激活的Tab键
   const pageMode = ref('add');
@@ -148,12 +179,14 @@
   const exportConfirmLoading = ref(false);
   const exportType = ref<'resolved' | 'unresolved'>('unresolved'); // 记录当前导出类型
   const exportConfig = ref({
-    url: '/province/dataQuaQue/exportDataQuaQueList',
+    url: '/province/goafQuestionReport/exportDataQuaQueList',
     name: '数据质量',
     params: {
       isOk: 0,
       startTime: '',
       endTime: '',
+      goafId: '',
+      deptId: '',
     },
   });
 
@@ -183,7 +216,12 @@
   const { tableContext: tableContextA, onExportXls: onExportXlsA } = useListPage({
     tableProps: {
       api: async (params: any) => {
-        return await getDataQuaQueList({ ...params, isOk: false });
+        return await getGoafQuestionReportList({
+          ...params,
+          isOk: false,
+          goafId: goafId.value,
+          deptId: innerValue.value,
+        });
       },
       columns: columns, // 绑定动态列
       formConfig: {
@@ -216,7 +254,12 @@
   const { tableContext: tableContextB, onExportXls: onExportXlsB } = useListPage({
     tableProps: {
       api: async (params: any) => {
-        return await getDataQuaQueList({ ...params, isOk: true });
+        return await getGoafQuestionReportList({
+          ...params,
+          isOk: true,
+          goafId: goafId.value,
+          deptId: innerValue.value,
+        });
       },
       columns: columns,
       formConfig: {
@@ -290,6 +333,8 @@
         isOk: exportType.value === 'resolved' ? 1 : 0,
         startTime,
         endTime,
+        goafId: goafId.value,
+        deptId: innerValue.value,
       };
 
       if (exportType.value === 'unresolved') {
@@ -389,7 +434,14 @@
    */
   function handleOpenModal(record: any, mode: 'view' | 'edit' | 'add' = 'view') {
     pageMode.value = mode;
-    openModal(true, { record, mode });
+    openModal(true, {
+      record: {
+        deptId: innerValue.value,
+        goafId: goafId.value,
+        ...record,
+      },
+      mode,
+    });
   }
 
   /**
@@ -399,9 +451,9 @@
   async function handleModalSuccess(result: any) {
     try {
       if (pageMode.value === 'add') {
-        await addDataQuaQue(result);
+        await addGoafQuestionReport(result);
       } else if (pageMode.value === 'edit') {
-        await editDataQuaQue(result);
+        await editGoafQuestionReport(result);
       }
       await safeReloadActiveTable();
     } catch (error) {
@@ -455,7 +507,7 @@
    */
   async function handleDeleteRecord(record: any) {
     try {
-      await deleteDataQuaQue({ id: record.id });
+      await deleteGoafQuestionReport({ id: record.id });
       await nextTick();
       await safeReloadActiveTable();
     } catch (error) {
@@ -474,7 +526,7 @@
       updateTime: dayjs().format('YYYY-MM-DD HH:mm:ss'),
     };
     try {
-      await editDataQuaQue(copyRecord);
+      await editGoafQuestionReport(copyRecord);
       await safeReloadActiveTable();
       message.success('标记为已解决成功');
     } catch (error) {
@@ -483,6 +535,11 @@
     }
   }
 
+  function changeCascader(val) {
+    innerValue.value = val;
+    initGoafOptions(val);
+  }
+
   // ========== 初始化:先获取状态数据,再加载表格 ==========
   onMounted(async () => {
     await safeReloadActiveTable();

+ 57 - 14
src/views/dashboard/basicInfo/problemReport/problemReport.data.ts

@@ -100,9 +100,18 @@ export const searchFormSchema: FormSchema[] = [
   {
     field: 'deptId',
     label: '煤矿名称',
-    component: 'MineCascader',
+    component: 'Input',
+    colProps: { span: 6 },
+    groupName: '常规查询',
+    slot: 'mine-cascader',
+  },
+  {
+    field: 'goafId',
+    label: '密闭名称',
+    component: 'Input',
     colProps: { span: 6 },
     groupName: '常规查询',
+    slot: 'goaf-select',
   },
   // 启用生产状态下拉框(动态options)
   {
@@ -133,29 +142,29 @@ export const searchFormSchema: FormSchema[] = [
 
 export const topFormSchema: FormSchema[] = [
   {
-    field: 'deptId',
+    field: 'mineName',
+    label: '煤矿名称',
+    component: 'Input',
+    componentProps: {},
+  },
+  {
+    field: 'devicePos',
     label: '密闭名称',
-    component: 'MineCascader',
-    componentProps: {
-      changeOnSelect: false,
-      initFromStore: false,
-      syncToStore: false,
-    },
-    required: true,
-    rules: [{ required: true, message: '请选择煤矿名称', trigger: 'change' }],
+    component: 'Input',
+    componentProps: {},
   },
 ];
 
 /** 弹框表单配置 */
 export const formSchema: FormSchema[] = [
   {
-    field: 'goafName',
-    label: '不完整类型',
+    field: 'queTitle',
+    label: '问题简述',
     component: 'Input',
     required: true,
     rules: [
-      { required: true, message: '请输入不完整类型', trigger: 'blur' },
-      { max: 100, message: '不完整类型长度不能超过100个字符', trigger: 'blur' },
+      { required: true, message: '请输入问题简述', trigger: 'blur' },
+      { max: 100, message: '问题简述长度不能超过100个字符', trigger: 'blur' },
     ],
   },
   {
@@ -199,6 +208,40 @@ export const formSchema: FormSchema[] = [
       { max: 500, message: '问题描述长度不能超过500个字符', trigger: 'blur' },
     ],
   },
+  {
+    label: '密闭墙问题照片',
+    field: 'queFileUrls',
+    component: 'JImageUpload',
+    componentProps: {
+      //按钮显示文字
+      text: '图片上传',
+      //支持两种基本样式picture和picture-card
+      listType: 'picture-card',
+      //用于控制文件上传的业务路径,默认temp
+      bizPath: 'webfile',
+      //是否禁用
+      disabled: false,
+      //最大上传数量
+      fileMax: 9,
+    },
+  },
+  {
+    label: '密闭墙确认照片',
+    field: 'okQueFileUrls',
+    component: 'JImageUpload',
+    componentProps: {
+      //按钮显示文字
+      text: '图片上传',
+      //支持两种基本样式picture和picture-card
+      listType: 'picture-card',
+      //用于控制文件上传的业务路径,默认temp
+      bizPath: 'webfile',
+      //是否禁用
+      disabled: false,
+      //最大上传数量
+      fileMax: 9,
+    },
+  },
   // {
   //   field: 'param',
   //   label: '参数',