import type { ProColumns, ProFormColumnsType, } from '@ant-design/pro-components'; import { Tag } from 'antd'; import dayjs from 'dayjs'; import type { TenantVO } from '@/services/system/tenant/list'; import { getTenantPackageList } from '@/services/system/tenant/package'; export const baseTenantColumns: ProColumns[] = [ { title: '租户编号', dataIndex: 'id', tip: '租户编号', width: 100, hideInSearch: true, // 在搜索表单中隐藏 }, { title: '租户名', dataIndex: 'name', tip: '租户名', // 提示信息 }, { title: '租户套餐', dataIndex: 'packageId', valueType: 'select', hideInSearch: true, // 在搜索表单中隐藏 request: async () => { const packageList: { id: number; name: string }[] = await getTenantPackageList(); const newData = packageList.map((item) => ({ label: item.name, value: item.id, })); const defData = [{ value: 0, label: '系统' }]; return [...defData, ...newData]; }, render: (dom, record) => { return ( {dom} ); }, // valueEnum: { // all: { text: "全部", status: "Default" }, // open: { text: "未解决", status: "Error" }, // closed: { text: "已解决", status: "Success" }, // }, }, { title: '联系人', dataIndex: 'contactName', }, { title: '联系手机', dataIndex: 'contactMobile', }, { title: '账号额度', dataIndex: 'accountCount', hideInSearch: true, // 在搜索表单中隐藏 }, { title: '过期时间', dataIndex: 'expireTime', valueType: 'dateTime', hideInSearch: true, // 在搜索表单中隐藏 }, { title: '绑定域名', dataIndex: 'website', width: 100, hideInSearch: true }, { title: '租户状态', dataIndex: 'status', valueType: 'select', fieldProps: { options: [ { label: '开启', value: 0, }, { label: '关闭', value: 1, }, ], }, }, { title: '创建时间', dataIndex: 'createTime', valueType: 'dateRange', search: { transform: (value) => { return { 'createTime[0]': dayjs(value[0]) .startOf('day') .format('YYYY-MM-DD HH:mm:ss'), 'createTime[1]': dayjs(value[1]) .endOf('day') .format('YYYY-MM-DD HH:mm:ss'), }; }, }, render: (_, record: TenantVO) => dayjs(record.createTime).format('YYYY-MM-DD HH:mm:ss'), }, ]; export const formColumns = (type: string): ProFormColumnsType[] => [ { title: '租户名', dataIndex: 'name', tip: '租户名', // 提示信息 formItemProps: { rules: [ { required: true, message: '请输入用户名', }, // { // min: 2, // max: 20, // message: "用户名长度为2-20个字符", // }, ], }, }, { title: '租户套餐', dataIndex: 'packageId', valueType: 'select', formItemProps: { rules: [ { required: true, message: '请选择租户套餐', }, ], }, fieldProps: { placeholder: '请选择套餐类型', options: [ { label: '普通套餐', value: 111, }, ], }, }, { title: '联系人', dataIndex: 'contactName', }, { title: '联系手机', dataIndex: 'contactMobile', formItemProps: { rules: [ { required: true, message: '请输入联系手机', }, ], }, }, { title: '用户名称', dataIndex: 'username', hideInForm: type === 'update', formItemProps: { rules: [ { required: true, message: '请输入用户名称', }, { pattern: /^[a-zA-Z0-9]+$/, message: '用户账号由 0-9、a-z、A-Z 组成', }, // 用户账号由 数字、字母组成 ], }, }, { title: '用户密码', dataIndex: 'password', valueType: 'password', hideInForm: type === 'update', fieldProps: { placeholder: '请输入用户密码', autoComplete: 'new-password', }, formItemProps: { rules: [ { required: true, message: '请输入用户密码', }, { min: 4, max: 16, message: '密码长度为4-16个字符', }, ], }, }, { title: '账号额度', dataIndex: 'accountCount', valueType: 'digit', }, { title: '过期时间', dataIndex: 'expireTime', valueType: 'date', fieldProps: { placeholder: '请选择过期时间', format: 'YYYY-MM-DD', }, }, { title: '绑定域名', dataIndex: 'website' }, { title: '租户状态', dataIndex: 'status', valueType: 'radio', formItemProps: { rules: [ { required: true, message: '请选择租户状态', }, ], }, fieldProps: { placeholder: '请选择套餐类型', options: [ { label: '启用', value: 1, }, { label: '禁用', value: 0, }, ], }, }, ];