Преглед на файлове

feat(系统模块): 添加租户套餐管理页面(未完成)

shizhongming преди 2 години
родител
ревизия
61f5fe0a88

+ 59 - 0
src/modules/smart-kettle/views/SmartKettleRepository/SmartKettleRepositoryListView.api.ts

@@ -0,0 +1,59 @@
+import { ApiServiceEnum, defHttp } from '@/utils/http/axios';
+
+enum Api {
+  list = '/smart/kettle/list',
+  getById = '/smart/kettle/getById',
+  batchSaveUpdate = '/smart/kettle/saveUpdateBatch',
+  delete = '/smart/kettle/batchDeleteById',
+  setUseYn = '/smart/kettle/setUseYn',
+}
+
+export const listApi = (params) => {
+  return defHttp.post({
+    service: ApiServiceEnum.SMART_KETTLE,
+    url: Api.list,
+    data: {
+      ...params,
+    },
+  });
+};
+
+export const batchSaveUpdateApi = (modelList: any[]) => {
+  return defHttp.post({
+    service: ApiServiceEnum.SMART_KETTLE,
+    url: Api.batchSaveUpdate,
+    data: modelList,
+  });
+};
+
+export const deleteApi = (removeRecords: Recordable[]) => {
+  return defHttp.post({
+    service: ApiServiceEnum.SMART_KETTLE,
+    url: Api.delete,
+    data: removeRecords.map((item) => item.id),
+  });
+};
+
+export const getByIdApi = (id: number) => {
+  return defHttp.post({
+    service: ApiServiceEnum.SMART_KETTLE,
+    url: Api.getById,
+    data: id,
+  });
+};
+
+/**
+ * 启用停用接口
+ * @param rows 选中的数据
+ * @param useYn 启用停用
+ */
+export const setUseYnApi = (rows: any[], useYn: boolean) => {
+  return defHttp.post({
+    service: ApiServiceEnum.SMART_KETTLE,
+    url: Api.setUseYn,
+    data: {
+      idList: rows.map((item) => item.id),
+      useYn,
+    },
+  });
+};

+ 305 - 0
src/modules/smart-kettle/views/SmartKettleRepository/SmartKettleRepositoryListView.config.ts

@@ -0,0 +1,305 @@
+import type { SmartColumn, SmartSearchFormSchema } from '@/components/SmartTable';
+import type { FormSchema } from '@/components/Form';
+import { getUseYnSelectOptions } from '@/utils/form';
+
+/**
+ * 表格列表
+ */
+export const getTableColumns = (): SmartColumn[] => {
+  return [
+    {
+      type: 'checkbox',
+      width: 60,
+      align: 'center',
+      fixed: 'left',
+      field: 'checkbox',
+    },
+    {
+      field: 'repositoryCode',
+      sortable: true,
+      title: '{smart.kettle.repository.title.repositoryCode}',
+      width: 120,
+      fixed: 'left',
+    },
+    {
+      field: 'repositoryName',
+      title: '{smart.kettle.repository.title.repositoryName}',
+      width: 120,
+    },
+    {
+      field: 'type',
+      sortable: true,
+      title: '{smart.kettle.repository.title.type}',
+      width: 120,
+    },
+    {
+      field: 'defaultYn',
+      sortable: true,
+      title: '{smart.kettle.repository.title.defaultYn}',
+      width: 120,
+    },
+    {
+      field: 'useYn',
+      sortable: true,
+      component: 'switch',
+      title: '{common.table.useYn}',
+      width: 120,
+    },
+    {
+      field: 'createTime',
+      sortable: true,
+      title: '{common.table.createTime}',
+      width: 165,
+    },
+    {
+      field: 'createBy',
+      title: '{common.table.createUser}',
+      width: 120,
+    },
+    {
+      field: 'updateTime',
+      sortable: true,
+      title: '{common.table.updateTime}',
+      width: 165,
+    },
+    {
+      field: 'updateBy',
+      title: '{common.table.updateUser}',
+      width: 120,
+    },
+  ];
+};
+
+/**
+ * 添加修改表单
+ */
+export const getFormSchemas = (t: Function): FormSchema[] => {
+  return [
+    {
+      field: 'id',
+      show: false,
+      label: t('smart.kettle.repository.title.id'),
+      component: 'Input',
+      componentProps: {},
+    },
+    {
+      field: 'repositoryCode',
+      label: t('smart.kettle.repository.title.repositoryCode'),
+      component: 'Input',
+      componentProps: {},
+      required: true,
+    },
+    {
+      field: 'repositoryName',
+      label: t('smart.kettle.repository.title.repositoryName'),
+      component: 'Input',
+      componentProps: {},
+      required: true,
+    },
+    {
+      field: 'type',
+      label: t('smart.kettle.repository.title.type'),
+      component: 'SmartApiSelectDict',
+      required: true,
+      componentProps: {
+        dictCode: 'SMART_KETTLE_REPOSITORY_TYPE',
+      },
+      defaultValue: '10',
+    },
+    {
+      field: '',
+      component: 'Divider',
+      colProps: { span: 24 },
+    },
+    ...getDatabaseTypeSchemas(t),
+  ];
+};
+
+/**
+ * 获取数据库资源库编辑参数
+ */
+const getDatabaseTypeSchemas = (t: Function): FormSchema[] => {
+  return [
+    {
+      label: t('smart.kettle.repository.form.properties.type'),
+      field: 'properties.type',
+      component: 'SmartApiSelectDict',
+      componentProps: {
+        dictCode: 'SMART_KETTLE_DATABASE_TYPE',
+      },
+      show({ model }) {
+        return model.type === '10';
+      },
+      required({ model }) {
+        return model.type === '10';
+      },
+    },
+    {
+      label: t('smart.kettle.repository.form.properties.access'),
+      field: 'properties.access',
+      component: 'Input',
+      show({ model }) {
+        return model.type === '10';
+      },
+      required({ model }) {
+        return model.type === '10';
+      },
+    },
+    {
+      label: t('smart.kettle.repository.form.properties.name'),
+      field: 'properties.name',
+      component: 'Input',
+      show({ model }) {
+        return model.type === '10';
+      },
+      required({ model }) {
+        return model.type === '10';
+      },
+    },
+    {
+      label: t('smart.kettle.repository.form.properties.host'),
+      field: 'properties.host',
+      component: 'Input',
+      show({ model }) {
+        return model.type === '10';
+      },
+      required({ model }) {
+        return model.type === '10';
+      },
+    },
+    {
+      label: t('smart.kettle.repository.form.properties.db'),
+      field: 'properties.db',
+      component: 'Input',
+      show({ model }) {
+        return model.type === '10';
+      },
+      required({ model }) {
+        return model.type === '10';
+      },
+    },
+    {
+      label: t('smart.kettle.repository.form.properties.port'),
+      field: 'properties.port',
+      component: 'Input',
+      show({ model }) {
+        return model.type === '10';
+      },
+      required({ model }) {
+        return model.type === '10';
+      },
+    },
+    {
+      label: t('smart.kettle.repository.form.properties.dbUser'),
+      field: 'properties.dbUser',
+      component: 'Input',
+      show({ model }) {
+        return model.type === '10';
+      },
+      required({ model }) {
+        return model.type === '10';
+      },
+    },
+    {
+      label: t('smart.kettle.repository.form.properties.dbPassword'),
+      field: 'properties.dbPassword',
+      component: 'Input',
+      show({ model }) {
+        return model.type === '10';
+      },
+      required({ model }) {
+        return model.type === '10';
+      },
+    },
+    {
+      label: t('smart.kettle.repository.form.properties.id'),
+      field: 'properties.id',
+      component: 'Input',
+      show({ model }) {
+        return model.type === '10';
+      },
+      required({ model }) {
+        return model.type === '10';
+      },
+    },
+    {
+      label: t('smart.kettle.repository.form.properties.repositoryName'),
+      field: 'properties.repositoryName',
+      component: 'Input',
+      show({ model }) {
+        return model.type === '10';
+      },
+      required({ model }) {
+        return model.type === '10';
+      },
+    },
+    {
+      label: t('smart.kettle.repository.form.properties.resUser'),
+      field: 'properties.resUser',
+      component: 'Input',
+      show({ model }) {
+        return model.type === '10';
+      },
+      required({ model }) {
+        return model.type === '10';
+      },
+    },
+    {
+      label: t('smart.kettle.repository.form.properties.resPassword'),
+      field: 'properties.resPassword',
+      component: 'InputPassword',
+      show({ model }) {
+        return model.type === '10';
+      },
+      required({ model }) {
+        return model.type === '10';
+      },
+    },
+    {
+      label: t('smart.kettle.repository.form.properties.description'),
+      field: 'properties.description',
+      component: 'InputTextArea',
+      show({ model }) {
+        return model.type === '10';
+      },
+    },
+  ];
+};
+
+export const getSearchFormSchemas = (t: Function): SmartSearchFormSchema[] => {
+  return [
+    {
+      field: 'repositoryCode',
+      label: t('smart.kettle.repository.title.repositoryCode'),
+      component: 'Input',
+      searchSymbol: 'like',
+    },
+    {
+      field: 'repositoryName',
+      label: t('smart.kettle.repository.title.repositoryName'),
+      component: 'Input',
+      searchSymbol: 'like',
+    },
+    {
+      field: 'type',
+      label: t('smart.kettle.repository.title.type'),
+      component: 'SmartApiSelectDict',
+      componentProps: {
+        dictCode: 'SMART_KETTLE_REPOSITORY_TYPE',
+        style: { width: '140px' },
+      },
+      searchSymbol: '=',
+    },
+    {
+      field: 'useYn',
+      label: t('common.table.useYn'),
+      component: 'Select',
+      searchSymbol: '=',
+      componentProps: {
+        options: getUseYnSelectOptions(),
+        style: { width: '100px' },
+      },
+      defaultValue: 1,
+    },
+  ];
+};

+ 118 - 0
src/modules/smart-kettle/views/SmartKettleRepository/SmartKettleRepositoryListView.vue

@@ -0,0 +1,118 @@
+<template>
+  <SmartPageProvider :class="prefixCls">
+    <div class="full-height page-container">
+      <SmartTable @register="registerTable" :size="getTableSize" />
+    </div>
+  </SmartPageProvider>
+</template>
+
+<script lang="ts" setup>
+  import { useI18n } from '@/hooks/web/useI18n';
+  import { useSizeSetting } from '@/hooks/setting/UseSizeSetting';
+
+  import { SmartTable, useSmartTable } from '@/components/SmartTable';
+
+  import {
+    getTableColumns,
+    getFormSchemas,
+    getSearchFormSchemas,
+  } from './SmartKettleRepositoryListView.config';
+  import {
+    listApi,
+    deleteApi,
+    getByIdApi,
+    batchSaveUpdateApi,
+    setUseYnApi,
+  } from './SmartKettleRepositoryListView.api';
+  import { SmartPageProvider } from '@/components/SmartPageProvider';
+  import { useDesign } from '@/hooks/web/useDesign';
+
+  const { t } = useI18n();
+  const { getTableSize } = useSizeSetting();
+
+  const { prefixCls } = useDesign('smart-kettle-repository');
+  const { prefixCls: modalPrefixCls } = useDesign('smart-kettle-repository-addEditModal');
+
+  const [registerTable] = useSmartTable({
+    id: 'smart-kettle-repository',
+    columns: getTableColumns(),
+    height: 'auto',
+    border: true,
+    sortConfig: {
+      remote: true,
+    },
+    showOverflow: 'tooltip',
+    rowConfig: {
+      isHover: true,
+      isCurrent: true,
+    },
+    pagerConfig: true,
+    useSearchForm: true,
+    searchFormConfig: {
+      schemas: getSearchFormSchemas(t),
+      searchWithSymbol: true,
+      colon: true,
+      compact: true,
+      layout: 'inline',
+      actionColOptions: {
+        span: undefined,
+      },
+    },
+    addEditConfig: {
+      modalConfig: {
+        width: 900,
+        wrapClassName: modalPrefixCls,
+      },
+      formConfig: {
+        schemas: getFormSchemas(t),
+        colon: true,
+        baseColProps: { span: 12 },
+        labelCol: { style: { width: '120px' } },
+        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),
+        useYn: setUseYnApi,
+      },
+    },
+    toolbarConfig: {
+      zoom: true,
+      refresh: true,
+      custom: true,
+      column: {
+        columnOrder: true,
+      },
+      buttons: [
+        {
+          code: 'ModalAdd',
+        },
+        {
+          code: 'delete',
+        },
+        {
+          code: 'useYnFalse',
+        },
+        {
+          code: 'useYnTrue',
+        },
+      ],
+    },
+  });
+</script>
+
+<style lang="less">
+  @prefix-cls-modal: ~'@{namespace}-smart-kettle-repository-addEditModal';
+
+  .@{prefix-cls-modal} {
+    .ant-divider-horizontal {
+      margin: 0;
+      padding: 0 0 15px;
+    }
+  }
+</style>

+ 50 - 0
src/modules/smart-kettle/views/SmartKettleRepository/lang/zh_CN.ts

@@ -0,0 +1,50 @@
+/**
+ * kettle资源库 国际化信息
+ */
+export default {
+  trans: true,
+  key: 'smart.kettle.repository',
+  data: {
+    title: {
+      id: 'id',
+      repositoryCode: '编码',
+      repositoryName: '名称',
+      type: '类型',
+      properties: '资源库参数',
+      defaultYn: '是否默认',
+      createBy: 'createBy',
+      updateBy: 'updateBy',
+    },
+    validate: {
+      id: '请输入id',
+      repositoryCode: '请输入编码',
+      repositoryName: '请输入名称',
+      type: '请输入类型',
+      defaultYn: '请输入是否默认',
+      properties: '请输入资源库参数',
+    },
+    rules: {},
+    search: {
+      repositoryCode: '请输入编码',
+      repositoryName: '请输入名称',
+      type: '请输入类型',
+    },
+    form: {
+      properties: {
+        type: '数据库类型',
+        access: '连接方式',
+        name: '连接名称',
+        host: '主机名称',
+        db: '数据库名称',
+        port: '端口',
+        dbUser: '数据库用户',
+        dbPassword: '数据库密码',
+        id: '资源库ID',
+        repositoryName: '资源库名称',
+        description: '资源库描述',
+        resUser: '资源库用户',
+        resPassword: '资源库密码',
+      },
+    },
+  },
+};

+ 8 - 0
src/modules/smart-kettle/views/constants/AuthPermission.ts

@@ -0,0 +1,8 @@
+/**
+ * 资源库页面权限
+ */
+export const repositoryPermission = {
+  save: 'smart:kettle:save',
+  edit: 'smart:kettle:edit',
+  delete: 'smart:kettle:delete',
+};

+ 0 - 0
src/modules/smart-system/views/tenant/list/SysTenantListView.api.ts → src/modules/smart-system/views/tenant/tenantManager/SysTenantListView.api.ts


+ 0 - 0
src/modules/smart-system/views/tenant/list/SysTenantListView.config.ts → src/modules/smart-system/views/tenant/tenantManager/SysTenantListView.config.ts


+ 0 - 0
src/modules/smart-system/views/tenant/list/SysTenantListView.vue → src/modules/smart-system/views/tenant/tenantManager/SysTenantListView.vue


+ 0 - 0
src/modules/smart-system/views/tenant/lang/en_US.ts → src/modules/smart-system/views/tenant/tenantManager/lang/en_US.ts


+ 0 - 0
src/modules/smart-system/views/tenant/lang/zh_CN.ts → src/modules/smart-system/views/tenant/tenantManager/lang/zh_CN.ts