feat:【system 系统管理】租户管理时,支持填写多个域名 websites

This commit is contained in:
YunaiV
2025-08-19 22:59:07 +08:00
parent fb8179fef2
commit 3b2b0d5438
6 changed files with 56 additions and 16 deletions

View File

@@ -12,7 +12,7 @@ export namespace SystemTenantApi {
contactMobile: string;
accountCount: number;
expireTime: Date;
website: string;
websites: string[];
status: number;
}
}

View File

@@ -90,9 +90,13 @@ export function useFormSchema(): VbenFormSchema[] {
},
{
label: '绑定域名',
fieldName: 'website',
component: 'Input',
rules: 'required',
fieldName: 'websites',
component: 'Textarea',
componentProps: {
placeholder: '请输入绑定域名,多个域名请换行分隔',
rows: 3,
allowClear: true,
},
},
{
fieldName: 'status',
@@ -195,7 +199,7 @@ export function useGridColumns(
formatter: 'formatDateTime',
},
{
field: 'website',
field: 'websites',
title: '绑定域名',
},
{

View File

@@ -42,7 +42,16 @@ const [Modal, modalApi] = useVbenModal({
}
modalApi.lock();
// 提交表单
const data = (await formApi.getValues()) as SystemTenantApi.Tenant;
const formValues = (await formApi.getValues()) as SystemTenantApi.Tenant & {
websites: string;
};
// 将换行符分隔的字符串转换为数组
const data: SystemTenantApi.Tenant = {
...formValues,
websites: formValues.websites
? formValues.websites.split('\n').filter((item) => item.trim())
: [],
};
try {
await (formData.value ? updateTenant(data) : createTenant(data));
// 关闭并提示
@@ -66,8 +75,15 @@ const [Modal, modalApi] = useVbenModal({
modalApi.lock();
try {
formData.value = await getTenant(data.id as number);
// 将数组转换为换行符分隔的字符串
const formValues = {
...formData.value,
websites: Array.isArray(formData.value.websites)
? formData.value.websites.join('\n')
: formData.value.websites || '',
};
// 设置到 values
await formApi.setValues(formData.value);
await formApi.setValues(formValues);
} finally {
modalApi.unlock();
}
@@ -75,7 +91,7 @@ const [Modal, modalApi] = useVbenModal({
});
</script>
<template>
<Modal :title="getTitle" class="w-1/3">
<Modal :title="getTitle" class="w-1/2">
<Form class="mx-4" />
</Modal>
</template>

View File

@@ -12,7 +12,7 @@ export namespace SystemTenantApi {
contactMobile: string;
accountCount: number;
expireTime: Date;
website: string;
websites: string[];
status: number;
}
}

View File

@@ -95,9 +95,13 @@ export function useFormSchema(): VbenFormSchema[] {
},
{
label: '绑定域名',
fieldName: 'website',
component: 'Input',
rules: 'required',
fieldName: 'websites',
component: 'Textarea',
componentProps: {
placeholder: '请输入绑定域名,多个域名请换行分隔',
rows: 3,
allowClear: true,
},
},
{
fieldName: 'status',
@@ -211,7 +215,7 @@ export function useGridColumns<T = SystemTenantApi.Tenant>(
formatter: 'formatDateTime',
},
{
field: 'website',
field: 'websites',
title: '绑定域名',
minWidth: 180,
},

View File

@@ -42,7 +42,16 @@ const [Modal, modalApi] = useVbenModal({
}
modalApi.lock();
// 提交表单
const data = (await formApi.getValues()) as SystemTenantApi.Tenant;
const formValues = (await formApi.getValues()) as SystemTenantApi.Tenant & {
websites: string;
};
// 将换行符分隔的字符串转换为数组
const data: SystemTenantApi.Tenant = {
...formValues,
websites: formValues.websites
? formValues.websites.split('\n').filter((item) => item.trim())
: [],
};
try {
await (formData.value ? updateTenant(data) : createTenant(data));
// 关闭并提示
@@ -66,8 +75,15 @@ const [Modal, modalApi] = useVbenModal({
modalApi.lock();
try {
formData.value = await getTenant(data.id as number);
// 将数组转换为换行符分隔的字符串
const formValues = {
...formData.value,
websites: Array.isArray(formData.value.websites)
? formData.value.websites.join('\n')
: formData.value.websites || '',
};
// 设置到 values
await formApi.setValues(formData.value);
await formApi.setValues(formValues);
} finally {
modalApi.unlock();
}
@@ -75,7 +91,7 @@ const [Modal, modalApi] = useVbenModal({
});
</script>
<template>
<Modal :title="getTitle">
<Modal :title="getTitle" class="w-1/2">
<Form class="mx-4" />
</Modal>
</template>