diff --git a/src/api/tenant/index.ts b/src/api/tenant/index.ts new file mode 100644 index 0000000..07ef128 --- /dev/null +++ b/src/api/tenant/index.ts @@ -0,0 +1,155 @@ +// 租户/子账号管理 + +import { id } from 'element-plus/es/locale'; +import request from '/@/utils/request'; + +// 获取租户列表参数 +type TenantListDTO = { + accountType: number; // 账号类型 + companyType: number; // 企业类型 + status: number; // 状态 + accountName: string; // 账号名称 + page: number; // 页码 + size: number; // 页数 + orderBy: string; // 排序字段 + direction: string; // 排序方式 +}; +// 获取租户列表 +export const getTenantList = (params: Partial) => { + return request({ + url: '/tenant/list', + method: 'get', + params, + }); +}; +// 创建租户参数 +type CreateTenantDTO = { + id?: number; // 租户id + companyType: number | string; // 企业类型 + companyName: string; // 企业名称 + accountName: string; // 账号名称 + accountType: number | string; // 账号类型 + phone: string; // 手机号 + validStart: string; // 有效期开始 + validEnd: string; // 有效期结束 + accountLimit: number; // 子账号最大数量 +}; +// 创建租户 +export const createTenant = (data: CreateTenantDTO) => { + return request({ + url: '/tenant/create', + method: 'post', + data, + }); +}; +// 修改租户 +export const updateTenant = (data: CreateTenantDTO) => { + return request({ + url: '/tenant/update', + method: 'post', + data, + }); +}; +// 租户禁用 +export const disableTenant = (data: { id: number }) => { + return request({ + url: '/tenant/disable', + method: 'post', + data, + }); +}; +// 租户启用 +export const enableTenant = (data: { id: number }) => { + return request({ + url: '/tenant/enable', + method: 'post', + data, + }); +}; +// 租户导出 +export const exportTenant = (params: Partial) => { + return request({ + url: '/tenant/export', + method: 'get', + params, + }); +}; + +// 获取子账号列表参数 +type TenantUserListDTO = { + phone: string; // 手机号 + companyName: string; // 企业名称 + accountType: number; // 账号类型 + active: number; // 状态 + page: number; // 页码 + size: number; // 页数 + orderBy: string; // 排序字段 + direction: string; // 排序方式 +}; +// 获取子账号列表 +export const getTenantUserList = (params: Partial) => { + return request({ + url: '/tenant/user/list', + method: 'get', + params, + }); +}; + +// 创建租户子账号参数 +type CreateTenantUserDTO = { + id?: number; // 子账号id + name: string; // 姓名 + mobile: string; // 手机号 + companyName: number; // 企业名称 + department: string; // 部门 + accountType: string; // 账号类型 +}; +// 创建租户子账号 +export const createTenantUser = (data: CreateTenantUserDTO) => { + return request({ + url: '/tenant/user/create', + method: 'post', + data, + }); +}; +// 修改租户子账号 +export const updateTenantUser = (data: CreateTenantUserDTO) => { + return request({ + url: '/tenant/user/update', + method: 'post', + data, + }); +}; +// 租户子账号批量导入 +export const importTenantUser = (data: any) => { + return request({ + url: '/tenant/user/import', + method: 'post', + headers: { 'Content-Type': 'multipart/form-data' }, + data, + }); +}; +// 租户子账号导出 +export const exportTenantUser = (params: Partial) => { + return request({ + url: '/tenant/user/export', + method: 'get', + params, + }); +}; +// 租户子账号禁用 +export const disableTenantUser = (data: { id: number }) => { + return request({ + url: '/tenant/disable', + method: 'post', + data, + }); +}; +// 租户子账号启用 +export const enableTenantUser = (data: { id: number }) => { + return request({ + url: '/tenant/user/enable', + method: 'post', + data, + }); +}; \ No newline at end of file diff --git a/src/router/route.ts b/src/router/route.ts index 899639c..9c4789e 100644 --- a/src/router/route.ts +++ b/src/router/route.ts @@ -358,6 +358,36 @@ export const dynamicRoutes: Array = [ // }, // children: [], // }, + { + path: '/tenant', + name: 'tenant', + component: () => import('/@/views/pages/tenant/index.vue'), + meta: { + title: '租户管理', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: true, + isIframe: false, + roles: ['common'], + icon: 'ele-UserFilled', + }, + }, + { + path: '/tenant/user', + name: 'tenantUser', + component: () => import('/@/views/pages/tenantUser/index.vue'), + meta: { + title: '子账号管理', + isLink: '', + isHide: false, + isKeepAlive: true, + isAffix: true, + isIframe: false, + roles: ['common'], + icon: 'ele-User', + }, + }, ], }, ]; diff --git a/src/views/pages/tenant/add.vue b/src/views/pages/tenant/add.vue new file mode 100644 index 0000000..d2fe092 --- /dev/null +++ b/src/views/pages/tenant/add.vue @@ -0,0 +1,191 @@ + + + + + diff --git a/src/views/pages/tenant/constant.ts b/src/views/pages/tenant/constant.ts new file mode 100644 index 0000000..124370b --- /dev/null +++ b/src/views/pages/tenant/constant.ts @@ -0,0 +1,49 @@ +type IValue = { + label: string; + value: number; +}; + +export const COMPANYTYPE_CONST: Record = { + '0': { + label: '内部', + value: 0, + }, + '1': { + label: '银行', + value: 1, + }, + '2': { + label: '券商', + value: 2, + }, + '3': { + label: '上市公司', + value: 3, + }, + '4': { + label: '其他机构', + value: 4, + }, +}; + +export const ACCOUNTTYPE_CONST: Record = { + '0': { + label: '试用', + value: 0, + }, + '1': { + label: '正式', + value: 1, + }, +}; + +export const STATUS_CONST: Record = { + '0': { + label: '启用', + value: 0, + }, + '1': { + label: '禁用', + value: 1, + }, +}; diff --git a/src/views/pages/tenant/import.vue b/src/views/pages/tenant/import.vue new file mode 100644 index 0000000..96dcc1b --- /dev/null +++ b/src/views/pages/tenant/import.vue @@ -0,0 +1,147 @@ + + + + + diff --git a/src/views/pages/tenant/index.vue b/src/views/pages/tenant/index.vue new file mode 100644 index 0000000..b54d4af --- /dev/null +++ b/src/views/pages/tenant/index.vue @@ -0,0 +1,264 @@ + + + + + diff --git a/src/views/pages/tenantUser/add.vue b/src/views/pages/tenantUser/add.vue new file mode 100644 index 0000000..9c72578 --- /dev/null +++ b/src/views/pages/tenantUser/add.vue @@ -0,0 +1,134 @@ + + + + + diff --git a/src/views/pages/tenantUser/import.vue b/src/views/pages/tenantUser/import.vue new file mode 100644 index 0000000..64ca09a --- /dev/null +++ b/src/views/pages/tenantUser/import.vue @@ -0,0 +1,146 @@ + + + + + diff --git a/src/views/pages/tenantUser/index.vue b/src/views/pages/tenantUser/index.vue new file mode 100644 index 0000000..b7729ee --- /dev/null +++ b/src/views/pages/tenantUser/index.vue @@ -0,0 +1,255 @@ + + + + +