i18n: 参数管理新增多语言配置
This commit is contained in:
parent
e7af01f084
commit
88467844be
@ -337,6 +337,87 @@ const local: App.I18n.Schema = {
|
|||||||
},
|
},
|
||||||
addClient: 'Add Client',
|
addClient: 'Add Client',
|
||||||
editClient: 'Edit Client'
|
editClient: 'Edit Client'
|
||||||
|
},
|
||||||
|
config: {
|
||||||
|
title: 'Config List',
|
||||||
|
configName: 'Config Name',
|
||||||
|
configKey: 'Config Key',
|
||||||
|
configValue: 'Config Value',
|
||||||
|
configType: 'Built-in',
|
||||||
|
remark: 'Remark',
|
||||||
|
createTime: 'Create Time',
|
||||||
|
refreshCache: 'Refresh Cache',
|
||||||
|
refreshCacheSuccess: 'Refresh cache successfully',
|
||||||
|
form: {
|
||||||
|
configId: {
|
||||||
|
required: 'Please enter Config ID',
|
||||||
|
invalid: 'Config ID cannot be empty'
|
||||||
|
},
|
||||||
|
configName: {
|
||||||
|
required: 'Please enter Config Name',
|
||||||
|
invalid: 'Config Name cannot be empty'
|
||||||
|
},
|
||||||
|
configKey: {
|
||||||
|
required: 'Please enter Config Key',
|
||||||
|
invalid: 'Config Key cannot be empty'
|
||||||
|
},
|
||||||
|
configValue: {
|
||||||
|
required: 'Please enter Config Value',
|
||||||
|
invalid: 'Config Value cannot be empty'
|
||||||
|
},
|
||||||
|
configType: {
|
||||||
|
required: 'Please select Built-in status',
|
||||||
|
invalid: 'Built-in status cannot be empty'
|
||||||
|
},
|
||||||
|
remark: {
|
||||||
|
required: 'Please enter Remark',
|
||||||
|
invalid: 'Remark cannot be empty'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
addConfig: 'Add Config',
|
||||||
|
editConfig: 'Edit Config'
|
||||||
|
},
|
||||||
|
dept: {
|
||||||
|
title: 'Department List',
|
||||||
|
deptName: 'Department Name',
|
||||||
|
leader: 'Leader',
|
||||||
|
phone: 'Phone',
|
||||||
|
email: 'Email',
|
||||||
|
status: 'Status',
|
||||||
|
sort: 'Sort',
|
||||||
|
createTime: 'Create Time',
|
||||||
|
form: {
|
||||||
|
parentId: {
|
||||||
|
required: 'Please select Parent Department',
|
||||||
|
invalid: 'Parent Department cannot be empty'
|
||||||
|
},
|
||||||
|
deptName: {
|
||||||
|
required: 'Please enter Department Name',
|
||||||
|
invalid: 'Department Name cannot be empty'
|
||||||
|
},
|
||||||
|
leader: {
|
||||||
|
required: 'Please enter Leader',
|
||||||
|
invalid: 'Leader cannot be empty'
|
||||||
|
},
|
||||||
|
phone: {
|
||||||
|
required: 'Please enter Phone',
|
||||||
|
invalid: 'Phone cannot be empty'
|
||||||
|
},
|
||||||
|
email: {
|
||||||
|
required: 'Please enter Email',
|
||||||
|
invalid: 'Email cannot be empty'
|
||||||
|
},
|
||||||
|
status: {
|
||||||
|
required: 'Please select Status',
|
||||||
|
invalid: 'Status cannot be empty'
|
||||||
|
},
|
||||||
|
sort: {
|
||||||
|
required: 'Please enter Sort',
|
||||||
|
invalid: 'Sort cannot be empty'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
addDept: 'Add Department',
|
||||||
|
editDept: 'Edit Department'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -337,6 +337,87 @@ const local: App.I18n.Schema = {
|
|||||||
},
|
},
|
||||||
addClient: '新增客户端',
|
addClient: '新增客户端',
|
||||||
editClient: '编辑客户端'
|
editClient: '编辑客户端'
|
||||||
|
},
|
||||||
|
config: {
|
||||||
|
title: '参数配置列表',
|
||||||
|
configName: '参数名称',
|
||||||
|
configKey: '参数键名',
|
||||||
|
configValue: '参数键值',
|
||||||
|
configType: '是否内置',
|
||||||
|
remark: '备注',
|
||||||
|
createTime: '创建时间',
|
||||||
|
refreshCache: '刷新缓存',
|
||||||
|
refreshCacheSuccess: '刷新缓存成功',
|
||||||
|
form: {
|
||||||
|
configId: {
|
||||||
|
required: '请输入参数主键',
|
||||||
|
invalid: '参数主键不能为空'
|
||||||
|
},
|
||||||
|
configName: {
|
||||||
|
required: '请输入参数名称',
|
||||||
|
invalid: '参数名称不能为空'
|
||||||
|
},
|
||||||
|
configKey: {
|
||||||
|
required: '请输入参数键名',
|
||||||
|
invalid: '参数键名不能为空'
|
||||||
|
},
|
||||||
|
configValue: {
|
||||||
|
required: '请输入参数键值',
|
||||||
|
invalid: '参数键值不能为空'
|
||||||
|
},
|
||||||
|
configType: {
|
||||||
|
required: '请选择是否内置',
|
||||||
|
invalid: '是否内置不能为空'
|
||||||
|
},
|
||||||
|
remark: {
|
||||||
|
required: '请输入备注',
|
||||||
|
invalid: '备注不能为空'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
addConfig: '新增参数配置',
|
||||||
|
editConfig: '编辑参数配置'
|
||||||
|
},
|
||||||
|
dept: {
|
||||||
|
title: '部门列表',
|
||||||
|
deptName: '部门名称',
|
||||||
|
leader: '负责人',
|
||||||
|
phone: '联系电话',
|
||||||
|
email: '邮箱',
|
||||||
|
status: '状态',
|
||||||
|
sort: '排序',
|
||||||
|
createTime: '创建时间',
|
||||||
|
form: {
|
||||||
|
parentId: {
|
||||||
|
required: '请选择上级部门',
|
||||||
|
invalid: '上级部门不能为空'
|
||||||
|
},
|
||||||
|
deptName: {
|
||||||
|
required: '请输入部门名称',
|
||||||
|
invalid: '部门名称不能为空'
|
||||||
|
},
|
||||||
|
leader: {
|
||||||
|
required: '请输入负责人',
|
||||||
|
invalid: '负责人不能为空'
|
||||||
|
},
|
||||||
|
phone: {
|
||||||
|
required: '请输入联系电话',
|
||||||
|
invalid: '联系电话不能为空'
|
||||||
|
},
|
||||||
|
email: {
|
||||||
|
required: '请输入邮箱',
|
||||||
|
invalid: '邮箱不能为空'
|
||||||
|
},
|
||||||
|
status: {
|
||||||
|
required: '请选择状态',
|
||||||
|
invalid: '状态不能为空'
|
||||||
|
},
|
||||||
|
sort: {
|
||||||
|
required: '请输入排序',
|
||||||
|
invalid: '排序不能为空'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
addDept: '新增部门',
|
||||||
|
editDept: '编辑部门'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
42
src/typings/app.d.ts
vendored
42
src/typings/app.d.ts
vendored
@ -532,6 +532,48 @@ declare namespace App {
|
|||||||
addClient: string;
|
addClient: string;
|
||||||
editClient: string;
|
editClient: string;
|
||||||
};
|
};
|
||||||
|
config: {
|
||||||
|
title: string;
|
||||||
|
configName: string;
|
||||||
|
configKey: string;
|
||||||
|
configValue: string;
|
||||||
|
configType: string;
|
||||||
|
remark: string;
|
||||||
|
createTime: string;
|
||||||
|
refreshCache: string;
|
||||||
|
refreshCacheSuccess: string;
|
||||||
|
form: {
|
||||||
|
configId: FormMsg;
|
||||||
|
configName: FormMsg;
|
||||||
|
configKey: FormMsg;
|
||||||
|
configValue: FormMsg;
|
||||||
|
configType: FormMsg;
|
||||||
|
remark: FormMsg;
|
||||||
|
};
|
||||||
|
addConfig: string;
|
||||||
|
editConfig: string;
|
||||||
|
};
|
||||||
|
dept: {
|
||||||
|
title: string;
|
||||||
|
deptName: string;
|
||||||
|
leader: string;
|
||||||
|
phone: string;
|
||||||
|
email: string;
|
||||||
|
status: string;
|
||||||
|
sort: string;
|
||||||
|
createTime: string;
|
||||||
|
form: {
|
||||||
|
parentId: FormMsg;
|
||||||
|
deptName: FormMsg;
|
||||||
|
leader: FormMsg;
|
||||||
|
phone: FormMsg;
|
||||||
|
email: FormMsg;
|
||||||
|
status: FormMsg;
|
||||||
|
sort: FormMsg;
|
||||||
|
};
|
||||||
|
addDept: string;
|
||||||
|
editDept: string;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
form: {
|
form: {
|
||||||
|
@ -58,25 +58,25 @@ const {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: 'configName',
|
key: 'configName',
|
||||||
title: '参数名称',
|
title: $t('page.system.config.configName'),
|
||||||
align: 'center',
|
align: 'center',
|
||||||
minWidth: 120
|
minWidth: 120
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: 'configKey',
|
key: 'configKey',
|
||||||
title: '参数键名',
|
title: $t('page.system.config.configKey'),
|
||||||
align: 'center',
|
align: 'center',
|
||||||
minWidth: 120
|
minWidth: 120
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: 'configValue',
|
key: 'configValue',
|
||||||
title: '参数键值',
|
title: $t('page.system.config.configValue'),
|
||||||
align: 'center',
|
align: 'center',
|
||||||
minWidth: 120
|
minWidth: 120
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: 'configType',
|
key: 'configType',
|
||||||
title: '是否内置',
|
title: $t('page.system.config.configType'),
|
||||||
align: 'center',
|
align: 'center',
|
||||||
minWidth: 120,
|
minWidth: 120,
|
||||||
render(row) {
|
render(row) {
|
||||||
@ -85,7 +85,7 @@ const {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: 'remark',
|
key: 'remark',
|
||||||
title: '备注',
|
title: $t('page.system.config.remark'),
|
||||||
align: 'center',
|
align: 'center',
|
||||||
minWidth: 120,
|
minWidth: 120,
|
||||||
ellipsis: {
|
ellipsis: {
|
||||||
@ -94,7 +94,7 @@ const {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: 'createTime',
|
key: 'createTime',
|
||||||
title: '创建时间',
|
title: $t('page.system.config.createTime'),
|
||||||
align: 'center',
|
align: 'center',
|
||||||
minWidth: 120,
|
minWidth: 120,
|
||||||
ellipsis: {
|
ellipsis: {
|
||||||
@ -185,7 +185,7 @@ async function handleExport() {
|
|||||||
async function handleRefreshCache() {
|
async function handleRefreshCache() {
|
||||||
const { error } = await fetchRefreshCache();
|
const { error } = await fetchRefreshCache();
|
||||||
if (error) return;
|
if (error) return;
|
||||||
window.$message?.success('刷新缓存成功');
|
window.$message?.success($t('page.system.config.refreshCacheSuccess'));
|
||||||
await getData();
|
await getData();
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
@ -193,7 +193,7 @@ async function handleRefreshCache() {
|
|||||||
<template>
|
<template>
|
||||||
<div class="min-h-500px flex-col-stretch gap-16px overflow-hidden lt-sm:overflow-auto">
|
<div class="min-h-500px flex-col-stretch gap-16px overflow-hidden lt-sm:overflow-auto">
|
||||||
<ConfigSearch v-model:model="searchParams" @reset="resetSearchParams" @search="getDataByPage" />
|
<ConfigSearch v-model:model="searchParams" @reset="resetSearchParams" @search="getDataByPage" />
|
||||||
<NCard title="参数配置列表" :bordered="false" size="small" class="sm:flex-1-hidden card-wrapper">
|
<NCard :title="$t('page.system.config.title')" :bordered="false" size="small" class="sm:flex-1-hidden card-wrapper">
|
||||||
<template #header-extra>
|
<template #header-extra>
|
||||||
<TableHeaderOperation
|
<TableHeaderOperation
|
||||||
v-model:columns="columnChecks"
|
v-model:columns="columnChecks"
|
||||||
@ -212,7 +212,7 @@ async function handleRefreshCache() {
|
|||||||
<template #icon>
|
<template #icon>
|
||||||
<icon-material-symbols:sync-outline />
|
<icon-material-symbols:sync-outline />
|
||||||
</template>
|
</template>
|
||||||
刷新缓存
|
{{ $t('page.system.config.refreshCache') }}
|
||||||
</NButton>
|
</NButton>
|
||||||
</template>
|
</template>
|
||||||
</TableHeaderOperation>
|
</TableHeaderOperation>
|
||||||
|
@ -32,8 +32,8 @@ const { createRequiredRule } = useFormRules();
|
|||||||
|
|
||||||
const title = computed(() => {
|
const title = computed(() => {
|
||||||
const titles: Record<NaiveUI.TableOperateType, string> = {
|
const titles: Record<NaiveUI.TableOperateType, string> = {
|
||||||
add: '新增参数配置',
|
add: $t('page.system.config.addConfig'),
|
||||||
edit: '编辑参数配置'
|
edit: $t('page.system.config.editConfig')
|
||||||
};
|
};
|
||||||
return titles[props.operateType];
|
return titles[props.operateType];
|
||||||
});
|
});
|
||||||
@ -55,11 +55,11 @@ function createDefaultModel(): Model {
|
|||||||
type RuleKey = Extract<keyof Model, 'configId' | 'configName' | 'configKey' | 'configValue' | 'configType'>;
|
type RuleKey = Extract<keyof Model, 'configId' | 'configName' | 'configKey' | 'configValue' | 'configType'>;
|
||||||
|
|
||||||
const rules: Record<RuleKey, App.Global.FormRule> = {
|
const rules: Record<RuleKey, App.Global.FormRule> = {
|
||||||
configId: createRequiredRule('参数主键不能为空'),
|
configId: createRequiredRule($t('page.system.config.form.configId.required')),
|
||||||
configName: createRequiredRule('参数名称不能为空'),
|
configName: createRequiredRule($t('page.system.config.form.configName.required')),
|
||||||
configKey: createRequiredRule('参数键名不能为空'),
|
configKey: createRequiredRule($t('page.system.config.form.configKey.required')),
|
||||||
configValue: createRequiredRule('参数键值不能为空'),
|
configValue: createRequiredRule($t('page.system.config.form.configValue.required')),
|
||||||
configType: createRequiredRule('是否内置不能为空')
|
configType: createRequiredRule($t('page.system.config.form.configType.required'))
|
||||||
};
|
};
|
||||||
|
|
||||||
function handleUpdateModelWhenEdit() {
|
function handleUpdateModelWhenEdit() {
|
||||||
@ -110,20 +110,29 @@ watch(visible, () => {
|
|||||||
<NDrawer v-model:show="visible" :title="title" display-directive="show" :width="800" class="max-w-90%">
|
<NDrawer v-model:show="visible" :title="title" display-directive="show" :width="800" class="max-w-90%">
|
||||||
<NDrawerContent :title="title" :native-scrollbar="false" closable>
|
<NDrawerContent :title="title" :native-scrollbar="false" closable>
|
||||||
<NForm ref="formRef" :model="model" :rules="rules">
|
<NForm ref="formRef" :model="model" :rules="rules">
|
||||||
<NFormItem label="参数名称" path="configName">
|
<NFormItem :label="$t('page.system.config.configName')" path="configName">
|
||||||
<NInput v-model:value="model.configName" placeholder="请输入参数名称" />
|
<NInput v-model:value="model.configName" :placeholder="$t('page.system.config.form.configName.required')" />
|
||||||
</NFormItem>
|
</NFormItem>
|
||||||
<NFormItem label="参数键名" path="configKey">
|
<NFormItem :label="$t('page.system.config.configKey')" path="configKey">
|
||||||
<NInput v-model:value="model.configKey" placeholder="请输入参数键名" />
|
<NInput v-model:value="model.configKey" :placeholder="$t('page.system.config.form.configKey.required')" />
|
||||||
</NFormItem>
|
</NFormItem>
|
||||||
<NFormItem label="参数键值" path="configValue">
|
<NFormItem :label="$t('page.system.config.configValue')" path="configValue">
|
||||||
<NInput v-model:value="model.configValue" :rows="3" placeholder="请输入参数键值" />
|
<NInput
|
||||||
|
v-model:value="model.configValue"
|
||||||
|
:rows="3"
|
||||||
|
:placeholder="$t('page.system.config.form.configValue.required')"
|
||||||
|
/>
|
||||||
</NFormItem>
|
</NFormItem>
|
||||||
<NFormItem label="是否内置" path="configType">
|
<NFormItem :label="$t('page.system.config.configType')" path="configType">
|
||||||
<DictRadio v-model:value="model.configType" dict-code="sys_yes_no" />
|
<DictRadio v-model:value="model.configType" dict-code="sys_yes_no" />
|
||||||
</NFormItem>
|
</NFormItem>
|
||||||
<NFormItem label="备注" path="remark">
|
<NFormItem :label="$t('page.system.config.remark')" path="remark">
|
||||||
<NInput v-model:value="model.remark" :rows="3" type="textarea" placeholder="请输入备注" />
|
<NInput
|
||||||
|
v-model:value="model.remark"
|
||||||
|
:rows="3"
|
||||||
|
type="textarea"
|
||||||
|
:placeholder="$t('page.system.config.form.remark.required')"
|
||||||
|
/>
|
||||||
</NFormItem>
|
</NFormItem>
|
||||||
</NForm>
|
</NForm>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
|
@ -34,16 +34,29 @@ async function search() {
|
|||||||
<NCollapseItem :title="$t('common.search')" name="user-search">
|
<NCollapseItem :title="$t('common.search')" name="user-search">
|
||||||
<NForm ref="formRef" :model="model" label-placement="left" :label-width="80">
|
<NForm ref="formRef" :model="model" label-placement="left" :label-width="80">
|
||||||
<NGrid responsive="screen" item-responsive>
|
<NGrid responsive="screen" item-responsive>
|
||||||
<NFormItemGi span="6 s:12 m:6" label="参数名称" path="configName" class="pr-24px">
|
<NFormItemGi
|
||||||
<NInput v-model:value="model.configName" placeholder="请输入参数名称" />
|
span="6 s:12 m:6"
|
||||||
|
:label="$t('page.system.config.configName')"
|
||||||
|
path="configName"
|
||||||
|
class="pr-24px"
|
||||||
|
>
|
||||||
|
<NInput
|
||||||
|
v-model:value="model.configName"
|
||||||
|
:placeholder="$t('page.system.config.form.configName.required')"
|
||||||
|
/>
|
||||||
</NFormItemGi>
|
</NFormItemGi>
|
||||||
<NFormItemGi span="6 s:12 m:6" label="参数键名" path="configKey" class="pr-24px">
|
<NFormItemGi span="6 s:12 m:6" :label="$t('page.system.config.configKey')" path="configKey" class="pr-24px">
|
||||||
<NInput v-model:value="model.configKey" placeholder="请输入参数键名" />
|
<NInput v-model:value="model.configKey" :placeholder="$t('page.system.config.form.configKey.required')" />
|
||||||
</NFormItemGi>
|
</NFormItemGi>
|
||||||
<NFormItemGi span="6 s:12 m:6" label="是否内置" path="configType" class="pr-24px">
|
<NFormItemGi
|
||||||
|
span="6 s:12 m:6"
|
||||||
|
:label="$t('page.system.config.configType')"
|
||||||
|
path="configType"
|
||||||
|
class="pr-24px"
|
||||||
|
>
|
||||||
<DictSelect
|
<DictSelect
|
||||||
v-model:value="model.configType"
|
v-model:value="model.configType"
|
||||||
placeholder="请选择是否内置"
|
:placeholder="$t('page.system.config.form.configType.required')"
|
||||||
dict-code="sys_yes_no"
|
dict-code="sys_yes_no"
|
||||||
clearable
|
clearable
|
||||||
/>
|
/>
|
||||||
|
Loading…
Reference in New Issue
Block a user