|
|
@@ -1,13 +1,16 @@
|
|
|
import type { SmartColumn, SmartSearchFormSchema } from '@/components/SmartTable';
|
|
|
import type { FormSchema } from '@/components/Form';
|
|
|
+import { tableUseYnClass } from '@/components/SmartTable';
|
|
|
+import { Ref, unref } from 'vue';
|
|
|
|
|
|
export enum Permission {
|
|
|
- query = 'sys:tenant:query',
|
|
|
- save = 'sys:tenant:save',
|
|
|
- update = 'sys:tenant:update',
|
|
|
- delete = 'sys:tenant:delete',
|
|
|
+ save = 'sys:tenant:manager:save',
|
|
|
+ update = 'sys:tenant:manager:update',
|
|
|
+ delete = 'sys:tenant:manager:delete',
|
|
|
+ useYn = 'sys:tenant:manager:setUseYn',
|
|
|
}
|
|
|
|
|
|
+export const SYSTEM_TENANT_TYPE_DICT = 'SYSTEM_TENANT_TYPE';
|
|
|
/**
|
|
|
* 表格列表
|
|
|
*/
|
|
|
@@ -17,63 +20,98 @@ export const getTableColumns = (): SmartColumn[] => {
|
|
|
type: 'checkbox',
|
|
|
width: 60,
|
|
|
align: 'center',
|
|
|
- field: 'checkbox',
|
|
|
fixed: 'left',
|
|
|
+ field: 'checkbox',
|
|
|
},
|
|
|
{
|
|
|
field: 'tenantCode',
|
|
|
+ title: '{system.views.tenant.manager.title.tenantCode}',
|
|
|
+ width: 120,
|
|
|
fixed: 'left',
|
|
|
- title: '{system.views.tenant.title.tenantCode}',
|
|
|
- width: 180,
|
|
|
},
|
|
|
{
|
|
|
field: 'tenantName',
|
|
|
+ title: '{system.views.tenant.manager.title.tenantName}',
|
|
|
+ width: 120,
|
|
|
fixed: 'left',
|
|
|
- title: '{system.views.tenant.title.tenantName}',
|
|
|
- width: 180,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ field: 'tenantShortName',
|
|
|
+ title: '{system.views.tenant.manager.title.tenantShortName}',
|
|
|
+ width: 120,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ field: 'type',
|
|
|
+ title: '{system.views.tenant.manager.title.type}',
|
|
|
+ width: 120,
|
|
|
+ sortable: true,
|
|
|
+ slots: {
|
|
|
+ default: 'table-type',
|
|
|
+ },
|
|
|
},
|
|
|
{
|
|
|
field: 'contacts',
|
|
|
- title: '{system.views.tenant.title.contacts}',
|
|
|
+ title: '{system.views.tenant.manager.title.contacts}',
|
|
|
width: 120,
|
|
|
},
|
|
|
{
|
|
|
field: 'contactPhone',
|
|
|
- title: '{system.views.tenant.title.contactPhone}',
|
|
|
+ title: '{system.views.tenant.manager.title.contactPhone}',
|
|
|
+ width: 120,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ field: 'email',
|
|
|
+ title: '{system.views.tenant.manager.title.email}',
|
|
|
+ width: 120,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ field: 'isolationStrategy',
|
|
|
+ title: '{system.views.tenant.manager.title.isolationStrategy}',
|
|
|
+ width: 120,
|
|
|
+ slots: {
|
|
|
+ default: 'table-isolationStrategy',
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ field: 'industry',
|
|
|
+ title: '{system.views.tenant.manager.title.industry}',
|
|
|
width: 120,
|
|
|
},
|
|
|
{
|
|
|
field: 'domain',
|
|
|
- title: '{system.views.tenant.title.domain}',
|
|
|
- width: 160,
|
|
|
+ title: '{system.views.tenant.manager.title.domain}',
|
|
|
+ width: 120,
|
|
|
},
|
|
|
{
|
|
|
field: 'availableUserNum',
|
|
|
- title: '{system.views.tenant.title.availableUserNum}',
|
|
|
- width: 160,
|
|
|
- sortable: true,
|
|
|
+ title: '{system.views.tenant.manager.title.availableUserNum}',
|
|
|
+ width: 120,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ field: 'region',
|
|
|
+ title: '{system.views.tenant.manager.title.region}',
|
|
|
+ width: 120,
|
|
|
},
|
|
|
{
|
|
|
field: 'address',
|
|
|
- title: '{system.views.tenant.title.address}',
|
|
|
+ title: '{system.views.tenant.manager.title.address}',
|
|
|
width: 120,
|
|
|
},
|
|
|
{
|
|
|
field: 'logoId',
|
|
|
- visible: false,
|
|
|
- title: '{system.views.tenant.title.logoId}',
|
|
|
+ title: '{system.views.tenant.manager.title.logoId}',
|
|
|
width: 120,
|
|
|
},
|
|
|
{
|
|
|
- field: 'startTime',
|
|
|
- title: '{system.views.tenant.title.startTime}',
|
|
|
- width: 160,
|
|
|
+ field: 'effectTime',
|
|
|
+ title: '{system.views.tenant.manager.title.effectTime}',
|
|
|
+ width: 165,
|
|
|
sortable: true,
|
|
|
},
|
|
|
{
|
|
|
- field: 'endTime',
|
|
|
- title: '{system.views.tenant.title.endTime}',
|
|
|
- width: 160,
|
|
|
+ field: 'expireTime',
|
|
|
+ title: '{system.views.tenant.manager.title.expireTime}',
|
|
|
+ width: 165,
|
|
|
sortable: true,
|
|
|
},
|
|
|
{
|
|
|
@@ -87,10 +125,14 @@ export const getTableColumns = (): SmartColumn[] => {
|
|
|
width: 120,
|
|
|
sortable: true,
|
|
|
},
|
|
|
+ {
|
|
|
+ ...tableUseYnClass(),
|
|
|
+ sortable: true,
|
|
|
+ },
|
|
|
{
|
|
|
field: 'createTime',
|
|
|
title: '{common.table.createTime}',
|
|
|
- width: 160,
|
|
|
+ width: 165,
|
|
|
sortable: true,
|
|
|
},
|
|
|
{
|
|
|
@@ -101,119 +143,145 @@ export const getTableColumns = (): SmartColumn[] => {
|
|
|
{
|
|
|
field: 'updateTime',
|
|
|
title: '{common.table.updateTime}',
|
|
|
- width: 160,
|
|
|
+ width: 165,
|
|
|
+ sortable: true,
|
|
|
},
|
|
|
{
|
|
|
field: 'updateBy',
|
|
|
title: '{common.table.updateUser}',
|
|
|
width: 120,
|
|
|
},
|
|
|
- {
|
|
|
- field: 'useYn',
|
|
|
- title: '{common.table.useYn}',
|
|
|
- component: 'booleanTag',
|
|
|
- sortable: true,
|
|
|
- width: 120,
|
|
|
- },
|
|
|
- {
|
|
|
- title: '{common.table.operation}',
|
|
|
- field: 'operation',
|
|
|
- width: 120,
|
|
|
- fixed: 'right',
|
|
|
- slots: {
|
|
|
- default: 'table-operation',
|
|
|
- },
|
|
|
- },
|
|
|
];
|
|
|
};
|
|
|
|
|
|
/**
|
|
|
* 添加修改表单
|
|
|
*/
|
|
|
-export const getFormSchemas = (t: Function): FormSchema[] => {
|
|
|
+export const getFormSchemas = (t: Function, isolationStrategyListRef: Ref): FormSchema[] => {
|
|
|
return [
|
|
|
{
|
|
|
field: 'id',
|
|
|
- label: t('system.views.tenant.title.id'),
|
|
|
- component: 'Input',
|
|
|
show: false,
|
|
|
+ label: t('system.views.tenant.manager.title.id'),
|
|
|
+ component: 'Input',
|
|
|
componentProps: {},
|
|
|
},
|
|
|
{
|
|
|
field: 'tenantCode',
|
|
|
- label: t('system.views.tenant.title.tenantCode'),
|
|
|
+ label: t('system.views.tenant.manager.title.tenantCode'),
|
|
|
component: 'Input',
|
|
|
componentProps: {},
|
|
|
required: true,
|
|
|
},
|
|
|
{
|
|
|
field: 'tenantName',
|
|
|
- label: t('system.views.tenant.title.tenantName'),
|
|
|
+ label: t('system.views.tenant.manager.title.tenantName'),
|
|
|
component: 'Input',
|
|
|
componentProps: {},
|
|
|
required: true,
|
|
|
},
|
|
|
+ {
|
|
|
+ field: 'tenantShortName',
|
|
|
+ label: t('system.views.tenant.manager.title.tenantShortName'),
|
|
|
+ component: 'Input',
|
|
|
+ componentProps: {},
|
|
|
+ },
|
|
|
+ {
|
|
|
+ field: 'type',
|
|
|
+ label: t('system.views.tenant.manager.title.type'),
|
|
|
+ component: 'SmartApiSelectDict',
|
|
|
+ componentProps: {
|
|
|
+ dictCode: SYSTEM_TENANT_TYPE_DICT,
|
|
|
+ labelWithCode: true,
|
|
|
+ },
|
|
|
+ required: true,
|
|
|
+ defaultValue: '10',
|
|
|
+ },
|
|
|
{
|
|
|
field: 'contacts',
|
|
|
- label: t('system.views.tenant.title.contacts'),
|
|
|
+ label: t('system.views.tenant.manager.title.contacts'),
|
|
|
component: 'Input',
|
|
|
componentProps: {},
|
|
|
},
|
|
|
{
|
|
|
field: 'contactPhone',
|
|
|
- label: t('system.views.tenant.title.contactPhone'),
|
|
|
+ label: t('system.views.tenant.manager.title.contactPhone'),
|
|
|
component: 'Input',
|
|
|
componentProps: {},
|
|
|
},
|
|
|
{
|
|
|
- field: 'domain',
|
|
|
- label: t('system.views.tenant.title.domain'),
|
|
|
+ field: 'email',
|
|
|
+ label: t('system.views.tenant.manager.title.email'),
|
|
|
component: 'Input',
|
|
|
componentProps: {},
|
|
|
},
|
|
|
{
|
|
|
- field: 'availableUserNum',
|
|
|
- label: t('system.views.tenant.title.availableUserNum'),
|
|
|
- component: 'InputNumber',
|
|
|
- componentProps: {},
|
|
|
+ field: 'isolationStrategy',
|
|
|
+ label: t('system.views.tenant.manager.title.isolationStrategy'),
|
|
|
+ component: 'Select',
|
|
|
+ componentProps: () => {
|
|
|
+ return {
|
|
|
+ options: unref(isolationStrategyListRef),
|
|
|
+ };
|
|
|
+ },
|
|
|
+ required: true,
|
|
|
},
|
|
|
{
|
|
|
- field: 'address',
|
|
|
- label: t('system.views.tenant.title.address'),
|
|
|
+ field: 'industry',
|
|
|
+ label: t('system.views.tenant.manager.title.industry'),
|
|
|
component: 'Input',
|
|
|
componentProps: {},
|
|
|
},
|
|
|
{
|
|
|
- field: 'logoId',
|
|
|
- label: t('system.views.tenant.title.logoId'),
|
|
|
+ field: 'domain',
|
|
|
+ label: t('system.views.tenant.manager.title.domain'),
|
|
|
component: 'Input',
|
|
|
componentProps: {},
|
|
|
},
|
|
|
{
|
|
|
- field: 'validatedTime',
|
|
|
- component: 'RangePicker',
|
|
|
- label: t('system.views.tenant.title.validatedTime'),
|
|
|
+ field: 'availableUserNum',
|
|
|
+ label: t('system.views.tenant.manager.title.availableUserNum'),
|
|
|
+ component: 'Input',
|
|
|
+ componentProps: {},
|
|
|
},
|
|
|
{
|
|
|
- field: 'remark',
|
|
|
- label: t('common.table.remark'),
|
|
|
- component: 'Input',
|
|
|
+ field: 'region',
|
|
|
+ label: t('system.views.tenant.manager.title.region'),
|
|
|
+ component: 'Cascader',
|
|
|
componentProps: {},
|
|
|
},
|
|
|
+ {
|
|
|
+ field: 'effectExpireTime',
|
|
|
+ label: t('system.views.tenant.manager.title.effectTime'),
|
|
|
+ component: 'RangePicker',
|
|
|
+ componentProps: {
|
|
|
+ showTime: true,
|
|
|
+ },
|
|
|
+ },
|
|
|
{
|
|
|
field: 'seq',
|
|
|
label: t('common.table.seq'),
|
|
|
- component: 'InputNumber',
|
|
|
+ component: 'Input',
|
|
|
componentProps: {},
|
|
|
defaultValue: 1,
|
|
|
- required: true,
|
|
|
},
|
|
|
{
|
|
|
- field: 'useYn',
|
|
|
- label: t('common.table.useYn'),
|
|
|
- component: 'Switch',
|
|
|
+ field: 'address',
|
|
|
+ label: t('system.views.tenant.manager.title.address'),
|
|
|
+ component: 'InputTextArea',
|
|
|
+ componentProps: {},
|
|
|
+ },
|
|
|
+ {
|
|
|
+ field: 'remark',
|
|
|
+ label: t('common.table.remark'),
|
|
|
+ component: 'InputTextArea',
|
|
|
+ componentProps: {},
|
|
|
+ },
|
|
|
+ {
|
|
|
+ field: 'logoId',
|
|
|
+ label: t('system.views.tenant.manager.title.logoId'),
|
|
|
+ component: 'Input',
|
|
|
componentProps: {},
|
|
|
- defaultValue: true,
|
|
|
},
|
|
|
];
|
|
|
};
|
|
|
@@ -222,34 +290,44 @@ export const getSearchFormSchemas = (t: Function): SmartSearchFormSchema[] => {
|
|
|
return [
|
|
|
{
|
|
|
field: 'tenantCode',
|
|
|
- label: t('system.views.tenant.title.tenantCode'),
|
|
|
+ label: t('system.views.tenant.manager.title.tenantCode'),
|
|
|
component: 'Input',
|
|
|
searchSymbol: '=',
|
|
|
},
|
|
|
{
|
|
|
field: 'tenantName',
|
|
|
- label: t('system.views.tenant.title.tenantName'),
|
|
|
+ label: t('system.views.tenant.manager.title.tenantName'),
|
|
|
component: 'Input',
|
|
|
- searchSymbol: 'like',
|
|
|
+ searchSymbol: '=',
|
|
|
},
|
|
|
{
|
|
|
- field: 'useYn',
|
|
|
- label: t('common.table.useYn'),
|
|
|
- component: 'Select',
|
|
|
- defaultValue: 1,
|
|
|
- componentProps: {
|
|
|
- style: { width: '120px' },
|
|
|
- options: [
|
|
|
- {
|
|
|
- label: 'Y',
|
|
|
- value: 1,
|
|
|
- },
|
|
|
- {
|
|
|
- label: 'N',
|
|
|
- value: 0,
|
|
|
- },
|
|
|
- ],
|
|
|
- },
|
|
|
+ field: 'tenantShortName',
|
|
|
+ label: t('system.views.tenant.manager.title.tenantShortName'),
|
|
|
+ component: 'Input',
|
|
|
+ searchSymbol: '=',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ field: 'type',
|
|
|
+ label: t('system.views.tenant.manager.title.type'),
|
|
|
+ component: 'Input',
|
|
|
+ searchSymbol: '=',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ field: 'isolationStrategy',
|
|
|
+ label: t('system.views.tenant.manager.title.isolationStrategy'),
|
|
|
+ component: 'Input',
|
|
|
+ searchSymbol: '=',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ field: 'effectTime',
|
|
|
+ label: t('system.views.tenant.manager.title.effectTime'),
|
|
|
+ component: 'Input',
|
|
|
+ searchSymbol: '=',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ field: 'expireTime',
|
|
|
+ label: t('system.views.tenant.manager.title.expireTime'),
|
|
|
+ component: 'Input',
|
|
|
searchSymbol: '=',
|
|
|
},
|
|
|
];
|