Explorar el Código

feat(系统模块): 添加系统参数页面

shizhongming hace 2 años
padre
commit
8e5583f725

+ 42 - 0
src/modules/system/views/parameter/SysParameterListView.api.ts

@@ -0,0 +1,42 @@
+import { ApiServiceEnum, defHttp } from '@/utils/http/axios';
+
+enum Api {
+  list = '/sys/parameter/list',
+  getById = '/sys/parameter/getById',
+  batchSaveUpdate = '/sys/parameter/saveUpdateBatch',
+  delete = '/sys/parameter/batchDeleteById',
+}
+
+export const listApi = (params) => {
+  return defHttp.post({
+    service: ApiServiceEnum.SMART_SYSTEM,
+    url: Api.list,
+    data: {
+      ...params,
+    },
+  });
+};
+
+export const batchSaveUpdateApi = (modelList: any[]) => {
+  return defHttp.post({
+    service: ApiServiceEnum.SMART_SYSTEM,
+    url: Api.batchSaveUpdate,
+    data: modelList,
+  });
+};
+
+export const deleteApi = (removeRecords: Recordable[]) => {
+  return defHttp.post({
+    service: ApiServiceEnum.SMART_SYSTEM,
+    url: Api.delete,
+    data: removeRecords.map((item) => item.id),
+  });
+};
+
+export const getByIdApi = (id) => {
+  return defHttp.post({
+    service: ApiServiceEnum.SMART_SYSTEM,
+    url: Api.getById,
+    data: id,
+  });
+};

+ 220 - 0
src/modules/system/views/parameter/SysParameterListView.config.ts

@@ -0,0 +1,220 @@
+import type { SmartColumn, SmartSearchFormSchema } from '@/components/SmartTable';
+import type { FormSchema } from '@/components/Form';
+
+export enum Permissions {
+  query = 'sys:parameter:query',
+  save = 'sys:parameter:save',
+  update = 'sys:parameter:update',
+  delete = 'sys:parameter:delete',
+  updateBuildIn = 'sys:parameter:updateBuildIn',
+}
+
+/**
+ * 表格列表
+ */
+export const getTableColumns = (): SmartColumn[] => {
+  return [
+    {
+      type: 'checkbox',
+      width: 60,
+      align: 'center',
+      fixed: 'left',
+    },
+    {
+      field: 'id',
+      visible: false,
+      title: '{system.views.parameter.title.id}',
+      width: 120,
+    },
+    {
+      field: 'code',
+      fixed: 'left',
+      title: '{system.views.parameter.title.code}',
+      width: 160,
+    },
+    {
+      field: 'name',
+      fixed: 'left',
+      title: '{system.views.parameter.title.name}',
+      width: 160,
+    },
+    {
+      field: 'parameter',
+      title: '{system.views.parameter.title.parameter}',
+      minWidth: 200,
+    },
+    {
+      field: 'remark',
+      title: '{common.table.remark}',
+      width: 200,
+    },
+    {
+      field: 'buildIn',
+      sortable: true,
+      title: '{system.views.parameter.title.buildIn}',
+      width: 120,
+      component: 'booleanTag',
+    },
+    {
+      field: 'seq',
+      sortable: true,
+      title: '{common.table.seq}',
+      width: 120,
+    },
+    {
+      field: 'createTime',
+      sortable: true,
+      title: '{common.table.createTime}',
+      width: 160,
+    },
+    {
+      field: 'createBy',
+      title: '{common.table.createUser}',
+      width: 120,
+    },
+    {
+      field: 'updateTime',
+      title: '{common.table.updateTime}',
+      width: 160,
+    },
+    {
+      field: 'updateBy',
+      title: '{common.table.updateUser}',
+      width: 120,
+    },
+    {
+      field: 'useYn',
+      sortable: true,
+      title: '{common.table.useYn}',
+      component: 'booleanTag',
+      width: 120,
+    },
+    {
+      field: 'operation',
+      title: '{common.table.operation}',
+      width: 120,
+      slots: {
+        default: 'table-operation',
+      },
+      fixed: 'right',
+    },
+  ];
+};
+
+/**
+ * 添加修改表单
+ */
+export const getFormSchemas = (t: Function): FormSchema[] => {
+  return [
+    {
+      field: 'id',
+      show: false,
+      label: t('system.views.parameter.title.id'),
+      component: 'Input',
+      componentProps: {},
+    },
+    {
+      field: 'code',
+      label: t('system.views.parameter.title.code'),
+      component: 'Input',
+      componentProps: {},
+      required: true,
+    },
+    {
+      field: 'name',
+      label: t('system.views.parameter.title.name'),
+      component: 'Input',
+      componentProps: {},
+      required: true,
+    },
+    {
+      field: 'parameter',
+      label: t('system.views.parameter.title.parameter'),
+      component: 'InputTextArea',
+      componentProps: {},
+      required: true,
+    },
+    {
+      field: 'remark',
+      label: t('common.table.remark'),
+      component: 'Input',
+      componentProps: {},
+    },
+    {
+      field: 'seq',
+      label: t('common.table.seq'),
+      component: 'InputNumber',
+      componentProps: {},
+      required: true,
+      defaultValue: 1,
+    },
+    {
+      field: 'useYn',
+      label: t('common.table.useYn'),
+      component: 'Switch',
+      componentProps: {},
+      defaultValue: true,
+    },
+  ];
+};
+
+export const getSearchFormSchemas = (t: Function): SmartSearchFormSchema[] => {
+  return [
+    {
+      field: 'code',
+      label: t('system.views.parameter.title.code'),
+      component: 'Input',
+      searchSymbol: 'like',
+      componentProps: {
+        style: { width: '150px' },
+      },
+    },
+    {
+      field: 'name',
+      label: t('system.views.parameter.title.name'),
+      component: 'Input',
+      searchSymbol: 'like',
+      componentProps: {
+        style: { width: '150px' },
+      },
+    },
+    {
+      field: 'buildIn',
+      label: t('system.views.parameter.title.buildIn'),
+      component: 'Select',
+      componentProps: {
+        style: { width: '120px' },
+        options: [
+          {
+            label: 'Y',
+            value: 1,
+          },
+          {
+            label: 'N',
+            value: 0,
+          },
+        ],
+      },
+      searchSymbol: '=',
+    },
+    {
+      field: 'useYn',
+      label: t('common.table.useYn'),
+      component: 'Select',
+      componentProps: {
+        style: { width: '120px' },
+        options: [
+          {
+            label: 'Y',
+            value: 1,
+          },
+          {
+            label: 'N',
+            value: 0,
+          },
+        ],
+      },
+      searchSymbol: '=',
+    },
+  ];
+};

+ 114 - 0
src/modules/system/views/parameter/SysParameterListView.vue

@@ -0,0 +1,114 @@
+<template>
+  <div class="full-height page-container">
+    <SmartTable @register="registerTable" :size="getTableSize">
+      <template #table-operation="{ row }">
+        <SmartVxeTableAction :actions="getActions(row)" />
+      </template>
+    </SmartTable>
+  </div>
+</template>
+
+<script lang="ts" setup>
+  import { useI18n } from '@/hooks/web/useI18n';
+  import { useSizeSetting } from '@/hooks/setting/UseSizeSetting';
+
+  import {
+    ActionItem,
+    SmartTable,
+    SmartVxeTableAction,
+    useSmartTable,
+  } from '@/components/SmartTable';
+
+  import {
+    getFormSchemas,
+    getSearchFormSchemas,
+    getTableColumns,
+    Permissions,
+  } from './SysParameterListView.config';
+  import { batchSaveUpdateApi, deleteApi, getByIdApi, listApi } from './SysParameterListView.api';
+
+  const { t } = useI18n();
+  const { getTableSize } = useSizeSetting();
+
+  const getActions = (row): ActionItem[] => {
+    const { buildIn } = row;
+    const result: ActionItem[] = [
+      {
+        label: t('common.button.edit'),
+        auth: buildIn ? Permissions.updateBuildIn : Permissions.update,
+        onClick: () => editByRowModal(row),
+      },
+    ];
+    if (!buildIn) {
+      result.push({
+        label: t('common.button.delete'),
+        auth: Permissions.delete,
+        danger: true,
+        onClick: () => deleteByRow(row),
+      });
+    }
+    return result;
+  };
+
+  const [registerTable, { editByRowModal, deleteByRow }] = useSmartTable({
+    columns: getTableColumns(),
+    height: 'auto',
+    pagerConfig: true,
+    border: true,
+    highlightHoverRow: true,
+    stripe: true,
+    useSearchForm: true,
+    columnConfig: {
+      resizable: true,
+    },
+    rowConfig: {
+      keyField: 'id',
+    },
+    sortConfig: {
+      remote: true,
+    },
+    showOverflow: 'tooltip',
+    searchFormConfig: {
+      schemas: getSearchFormSchemas(t),
+      searchWithSymbol: true,
+      colon: true,
+      layout: 'inline',
+      actionColOptions: {
+        span: undefined,
+      },
+      compact: true,
+    },
+    addEditConfig: {
+      formConfig: {
+        schemas: getFormSchemas(t),
+        baseColProps: { span: 24 },
+        labelCol: { span: 6 },
+        wrapperCol: { span: 17 },
+      },
+    },
+    proxyConfig: {
+      ajax: {
+        query: (params) => listApi(params.ajaxParameter),
+        save: ({ body: { insertRecords, updateRecords } }) =>
+          batchSaveUpdateApi([...insertRecords, ...updateRecords]),
+        delete: ({ body: { removeRecords } }) => deleteApi(removeRecords),
+        getById: (params) => getByIdApi(params.id),
+      },
+    },
+    exportConfig: {},
+    toolbarConfig: {
+      zoom: true,
+      refresh: true,
+      custom: true,
+      export: true,
+      buttons: [
+        {
+          code: 'ModalAdd',
+        },
+        {
+          code: 'delete',
+        },
+      ],
+    },
+  });
+</script>

+ 26 - 0
src/modules/system/views/parameter/lang/en_US.ts

@@ -0,0 +1,26 @@
+/**
+ * 系统参数表 国际化信息
+ */
+export default {
+  trans: true,
+  key: 'system.views.parameter',
+  data: {
+    title: {
+      code: 'Code',
+      name: 'Name',
+      parameter: 'Parameter value',
+      buildIn: 'build in',
+    },
+    validate: {
+      code: 'Please enter code',
+      name: 'Please enter name',
+      parameter: 'Please enter parameter value',
+    },
+    rules: {},
+    search: {
+      code: 'Please enter code',
+      name: 'Please enter name',
+      buildIn: 'Please select',
+    },
+  },
+};

+ 30 - 0
src/modules/system/views/parameter/lang/zh_CN.ts

@@ -0,0 +1,30 @@
+/**
+ * 系统参数表 国际化信息
+ */
+export default {
+  trans: true,
+  key: 'system.views.parameter',
+  data: {
+    title: {
+      id: 'id',
+      code: '参数编码',
+      name: '参数名字',
+      parameter: '参数值',
+      buildIn: '系统内置',
+      createBy: 'createBy',
+      updateBy: 'updateBy',
+    },
+    validate: {
+      id: '请输入',
+      code: '请输入参数编码',
+      name: '请输入参数名字',
+      parameter: '请输入参数值',
+    },
+    rules: {},
+    search: {
+      code: '请输入参数编码',
+      name: '请输入参数名字',
+      buildIn: '请输入系统内置',
+    },
+  },
+};