Просмотр исходного кода

feat(系统模块-异常信息): 异常信息功能完善

shizhongming 2 лет назад
Родитель
Сommit
2e276c26c6

+ 9 - 0
src/modules/system/views/exception/SysExceptionListView.api.ts

@@ -3,6 +3,7 @@ import { ApiServiceEnum, defHttp } from '@/utils/http/axios';
 enum Api {
 enum Api {
   list = 'sys/exception/list',
   list = 'sys/exception/list',
   getById = 'sys/exception/getById',
   getById = 'sys/exception/getById',
+  markResolved = 'sys/exception/markResolved',
 }
 }
 
 
 export const listApi = (params) => {
 export const listApi = (params) => {
@@ -20,3 +21,11 @@ export const getById = (id) => {
     data: id,
     data: id,
   });
   });
 };
 };
+
+export const markResolvedApi = (data) => {
+  return defHttp.post({
+    service: ApiServiceEnum.SMART_SYSTEM,
+    url: Api.markResolved,
+    data,
+  });
+};

+ 4 - 1
src/modules/system/views/exception/SysExceptionListView.config.ts

@@ -37,7 +37,7 @@ export const getTableColumns = (): SmartColumn[] => {
       width: 200,
       width: 200,
     },
     },
     {
     {
-      field: 'operateBy',
+      field: 'operationBy',
       title: '{system.views.exception.title.operateUser}',
       title: '{system.views.exception.title.operateUser}',
       width: 120,
       width: 120,
     },
     },
@@ -76,6 +76,9 @@ export const getTableColumns = (): SmartColumn[] => {
       field: 'resolvedUserId',
       field: 'resolvedUserId',
       title: '{system.views.exception.title.resolvedUserId}',
       title: '{system.views.exception.title.resolvedUserId}',
       width: 120,
       width: 120,
+      formatter({ row }) {
+        return row.resolvedUser?.fullName;
+      },
     },
     },
     {
     {
       field: 'resolvedTime',
       field: 'resolvedTime',

+ 52 - 3
src/modules/system/views/exception/SysExceptionListView.vue

@@ -9,7 +9,7 @@
   </div>
   </div>
 </template>
 </template>
 
 
-<script lang="ts" setup>
+<script lang="tsx" setup>
   import {
   import {
     useSmartTable,
     useSmartTable,
     SmartTable,
     SmartTable,
@@ -19,10 +19,13 @@
   import { useModal } from '@/components/Modal';
   import { useModal } from '@/components/Modal';
   import { useI18n } from '@/hooks/web/useI18n';
   import { useI18n } from '@/hooks/web/useI18n';
   import { useSizeSetting } from '@/hooks/setting/UseSizeSetting';
   import { useSizeSetting } from '@/hooks/setting/UseSizeSetting';
+  import { Textarea } from 'ant-design-vue';
 
 
   import { getSearchFormSchemas, getTableColumns } from './SysExceptionListView.config';
   import { getSearchFormSchemas, getTableColumns } from './SysExceptionListView.config';
-  import { listApi } from './SysExceptionListView.api';
+  import { listApi, markResolvedApi } from './SysExceptionListView.api';
   import ExceptionDetailModal from './components/ExceptionDetailModal.vue';
   import ExceptionDetailModal from './components/ExceptionDetailModal.vue';
+  import { createConfirm, successMessage, warnMessage } from '@/utils/message/SystemNotice';
+  import { ref, unref } from 'vue';
 
 
   const { t } = useI18n();
   const { t } = useI18n();
   const { getTableSize } = useSizeSetting();
   const { getTableSize } = useSizeSetting();
@@ -40,7 +43,42 @@
 
 
   const [registerModal, { openModal }] = useModal();
   const [registerModal, { openModal }] = useModal();
 
 
-  const [registerTable] = useSmartTable({
+  const resolvedMessageRef = ref('');
+  /**
+   * 标记已处理
+   */
+  const handlerMarkResolved = () => {
+    const selectRows = getCheckboxRecords();
+    console.log(selectRows);
+    if (selectRows.length === 0) {
+      warnMessage(t('system.views.exception.message.noSelect'));
+      return false;
+    }
+    resolvedMessageRef.value = '';
+    createConfirm({
+      iconType: 'warning',
+      title: t('system.views.exception.button.markResolved'),
+      content: () => {
+        return (
+          <Textarea
+            rows={4}
+            v-model={[resolvedMessageRef.value, 'value']}
+            placeholder={t('system.views.exception.validate.resolvedMessage')}
+          />
+        );
+      },
+      onOk: async () => {
+        await markResolvedApi({
+          resolvedMessage: unref(resolvedMessageRef),
+          exceptionIdList: selectRows.map((item) => item.id),
+        });
+        successMessage(t('system.views.exception.message.resolvedSuccess'));
+        query();
+      },
+    });
+  };
+
+  const [registerTable, { getCheckboxRecords, query }] = useSmartTable({
     id: 'smart-system-tool-exception',
     id: 'smart-system-tool-exception',
     customConfig: { storage: true },
     customConfig: { storage: true },
     border: true,
     border: true,
@@ -63,6 +101,17 @@
       refresh: true,
       refresh: true,
       zoom: true,
       zoom: true,
       column: { columnOrder: true },
       column: { columnOrder: true },
+      buttons: [
+        {
+          name: t('system.views.exception.button.markResolved'),
+          customRender: 'ant',
+          props: {
+            type: 'primary',
+            preIcon: 'ant-design:check-outlined',
+            onClick: handlerMarkResolved,
+          },
+        },
+      ],
     },
     },
     sortConfig: {
     sortConfig: {
       remote: true,
       remote: true,

+ 10 - 1
src/modules/system/views/exception/lang/en_US.ts

@@ -21,12 +21,21 @@ export default {
       showStackTrace: 'Show stackTrace',
       showStackTrace: 'Show stackTrace',
       stackTrace: 'Stack trace',
       stackTrace: 'Stack trace',
     },
     },
-    validate: {},
+    validate: {
+      resolvedMessage: 'Please enter processing information',
+    },
     rules: {},
     rules: {},
     search: {
     search: {
       exceptionMessage: 'Please select the error message',
       exceptionMessage: 'Please select the error message',
       requestIp: 'Please select the request IP',
       requestIp: 'Please select the request IP',
       serverIp: 'Please select the server IP',
       serverIp: 'Please select the server IP',
     },
     },
+    button: {
+      markResolved: 'Processed',
+    },
+    message: {
+      noSelect: 'Please select record',
+      resolvedSuccess: 'Mark success',
+    },
   },
   },
 };
 };

+ 11 - 2
src/modules/system/views/exception/lang/zh_CN.ts

@@ -16,17 +16,26 @@ export default {
       feedbackTime: '反馈时间',
       feedbackTime: '反馈时间',
       resolved: '是否已处理',
       resolved: '是否已处理',
       resolvedMessage: '处理信息',
       resolvedMessage: '处理信息',
-      resolvedUserId: '处理人员ID',
+      resolvedUserId: '处理人员',
       resolvedTime: '处理时间',
       resolvedTime: '处理时间',
       showStackTrace: '查看堆栈信息',
       showStackTrace: '查看堆栈信息',
       stackTrace: '堆栈信息',
       stackTrace: '堆栈信息',
     },
     },
-    validate: {},
+    validate: {
+      resolvedMessage: '请输入处理信息',
+    },
     rules: {},
     rules: {},
     search: {
     search: {
       exceptionMessage: '请输入异常信息',
       exceptionMessage: '请输入异常信息',
       requestIp: '请输入请求IP',
       requestIp: '请输入请求IP',
       serverIp: '请输入服务器IP',
       serverIp: '请输入服务器IP',
     },
     },
+    button: {
+      markResolved: '标记已处理',
+    },
+    message: {
+      noSelect: '请选择记录',
+      resolvedSuccess: '标记成功',
+    },
   },
   },
 };
 };

+ 1 - 0
src/modules/system/views/userGroup/UserGroupListView.vue

@@ -85,6 +85,7 @@
       actionColOptions: {
       actionColOptions: {
         span: undefined,
         span: undefined,
       },
       },
+      compact: true,
     },
     },
     addEditConfig: {
     addEditConfig: {
       formConfig: {
       formConfig: {