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

pull/203/head
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>