客户端按语义码判断板块归属(如推荐页「上新」横滑),标签改名或换语言 都不再影响;新增/编辑弹窗增加语义码输入并做格式校验,留空则按名称兜底。
This commit is contained in:
1 parent
d13bdd5dc8
commit
dea414739e
1 file changed
+25
@@ -33,6 +33,7 @@ const DEFAULT_TAG_COLOR = '#E5484D'
|
||||
const emptyForm = () => ({
|
||||
locales: { zh: '' },
|
||||
bgColor: DEFAULT_TAG_COLOR,
|
||||
code: '',
|
||||
sort: 1,
|
||||
status: 1
|
||||
})
|
||||
@@ -66,6 +67,7 @@ function openEdit(row) {
|
||||
Object.assign(form, {
|
||||
locales,
|
||||
bgColor: row.bgColor || DEFAULT_TAG_COLOR,
|
||||
code: row.code || '',
|
||||
sort: row.sort ?? 0,
|
||||
status: row.status ?? 1
|
||||
})
|
||||
@@ -83,12 +85,18 @@ async function save() {
|
||||
ElMessage.warning(`请填写${languageLabel(missing)}名称`)
|
||||
return
|
||||
}
|
||||
const code = (form.code || '').trim().toUpperCase()
|
||||
if (code && !/^[A-Z][A-Z0-9_]{0,31}$/.test(code)) {
|
||||
ElMessage.warning('语义码需为大写字母、数字或下划线,且以字母开头')
|
||||
return
|
||||
}
|
||||
saving.value = true
|
||||
try {
|
||||
const payload = {
|
||||
name: locales.zh,
|
||||
locales,
|
||||
bgColor: form.bgColor || DEFAULT_TAG_COLOR,
|
||||
code,
|
||||
sort: form.sort,
|
||||
status: form.status
|
||||
}
|
||||
@@ -209,6 +217,16 @@ onMounted(load)
|
||||
<el-form-item label="背景色">
|
||||
<el-color-picker v-model="form.bgColor" color-format="hex" />
|
||||
</el-form-item>
|
||||
<el-form-item label="语义码">
|
||||
<el-input
|
||||
v-model="form.code"
|
||||
maxlength="32"
|
||||
placeholder="如 NEW_ARRIVAL,留空则按名称匹配"
|
||||
/>
|
||||
<div class="form-hint">
|
||||
客户端按语义码判断板块(如「上新」横滑),改名或换语言都不受影响。
|
||||
</div>
|
||||
</el-form-item>
|
||||
<div class="form-row">
|
||||
<el-form-item label="排序">
|
||||
<el-input-number v-model="form.sort" :min="0" :max="999" />
|
||||
@@ -236,4 +254,11 @@ onMounted(load)
|
||||
height: 16px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.form-hint {
|
||||
margin-top: 4px;
|
||||
font-size: 12px;
|
||||
line-height: 1.5;
|
||||
color: var(--el-text-color-secondary);
|
||||
}
|
||||
</style>
|
||||
Reference in new issue
Block a user