fix: simplify badge resource form

This commit is contained in:
zhx 2026-05-16 22:36:25 +08:00
parent 5260a674ae
commit 1b835ba52d

View File

@ -25,7 +25,6 @@ import {
import { import {
BADGE_DISPLAY_TYPE_OPTIONS, BADGE_DISPLAY_TYPE_OPTIONS,
BADGE_TYPE_OPTIONS,
NOBLE_VIP_OPTIONS, NOBLE_VIP_OPTIONS,
PROPS_RESOURCE_CONFIG_TYPES, PROPS_RESOURCE_CONFIG_TYPES,
} from '../shared'; } from '../shared';
@ -56,14 +55,10 @@ const form = reactive<Record<string, any>>({
adminFree: false, adminFree: false,
amount: '', amount: '',
badgeDisplayType: 'SHORT', badgeDisplayType: 'SHORT',
badgeKey: '',
badgeLevel: '',
badgeType: 'ACTIVITY',
code: '', code: '',
cover: '', cover: '',
expand: '', expand: '',
id: '', id: '',
milestone: '',
name: '', name: '',
notSelectUrl: '', notSelectUrl: '',
sourceUrl: '', sourceUrl: '',
@ -103,12 +98,6 @@ const nobleVipNameOptions = NOBLE_VIP_OPTIONS.map((item) => ({
label: item.name, label: item.name,
value: item.value as any, value: item.value as any,
})); }));
const badgeTypeOptions = BADGE_TYPE_OPTIONS.filter((item) =>
['VIP', 'ACHIEVEMENT', 'ACTIVITY'].includes(String(item.value)),
).map((item) => ({
label: item.name,
value: item.value as any,
}));
const badgeDisplayTypeOptions = BADGE_DISPLAY_TYPE_OPTIONS.map((item) => ({ const badgeDisplayTypeOptions = BADGE_DISPLAY_TYPE_OPTIONS.map((item) => ({
label: item.name, label: item.name,
value: item.value as any, value: item.value as any,
@ -127,31 +116,17 @@ function parseBadgeExpand(value: unknown) {
function applyBadgeExpand(value: unknown) { function applyBadgeExpand(value: unknown) {
const expand = parseBadgeExpand(value); const expand = parseBadgeExpand(value);
form.badgeKey = expand.badgeKey ?? '';
form.badgeLevel = expand.badgeLevel ?? '';
form.badgeType = expand.badgeType || 'ACTIVITY';
form.badgeDisplayType = normalizeBadgeDisplayType( form.badgeDisplayType = normalizeBadgeDisplayType(
expand.badgeDisplayType || expand.displayType, expand.badgeDisplayType || expand.displayType,
form.badgeType, expand.badgeType,
); );
form.milestone = expand.milestone ?? '';
form.notSelectUrl = expand.notSelectUrl ?? ''; form.notSelectUrl = expand.notSelectUrl ?? '';
} }
function buildBadgeExpand() { function buildBadgeExpand() {
const expand: Record<string, any> = { const expand: Record<string, any> = {
badgeDisplayType: normalizeBadgeDisplayType(form.badgeDisplayType, form.badgeType), badgeDisplayType: normalizeBadgeDisplayType(form.badgeDisplayType),
badgeType: form.badgeType || 'ACTIVITY',
}; };
if (String(form.badgeKey || '').trim()) {
expand.badgeKey = String(form.badgeKey).trim();
}
if (String(form.badgeLevel || '').trim()) {
expand.badgeLevel = Number(form.badgeLevel);
}
if (String(form.milestone || '').trim()) {
expand.milestone = Number(form.milestone);
}
if (String(form.notSelectUrl || '').trim()) { if (String(form.notSelectUrl || '').trim()) {
expand.notSelectUrl = String(form.notSelectUrl).trim(); expand.notSelectUrl = String(form.notSelectUrl).trim();
} }
@ -170,14 +145,10 @@ function resetForm() {
form.adminFree = false; form.adminFree = false;
form.amount = ''; form.amount = '';
form.badgeDisplayType = 'SHORT'; form.badgeDisplayType = 'SHORT';
form.badgeKey = '';
form.badgeLevel = '';
form.badgeType = 'ACTIVITY';
form.code = ''; form.code = '';
form.cover = ''; form.cover = '';
form.expand = ''; form.expand = '';
form.id = ''; form.id = '';
form.milestone = '';
form.name = ''; form.name = '';
form.notSelectUrl = ''; form.notSelectUrl = '';
form.sourceUrl = ''; form.sourceUrl = '';
@ -229,9 +200,6 @@ watch(
form.sourceUrl = ''; form.sourceUrl = '';
form.expand = ''; form.expand = '';
} }
if (value === 'BADGE' && !form.badgeType) {
form.badgeType = 'ACTIVITY';
}
if (value === 'BADGE' && !form.badgeDisplayType) { if (value === 'BADGE' && !form.badgeDisplayType) {
form.badgeDisplayType = 'SHORT'; form.badgeDisplayType = 'SHORT';
} }
@ -307,30 +275,10 @@ function validateForm() {
message.warning('请选择类型'); message.warning('请选择类型');
return false; return false;
} }
if (form.type === 'BADGE' && !form.badgeType) {
message.warning('请选择徽章类型');
return false;
}
if (form.type === 'BADGE' && !form.badgeDisplayType) { if (form.type === 'BADGE' && !form.badgeDisplayType) {
message.warning('请选择徽章展示形态'); message.warning('请选择徽章展示形态');
return false; return false;
} }
if (
form.type === 'BADGE' &&
String(form.badgeLevel || '').trim() &&
Number.isNaN(Number(form.badgeLevel))
) {
message.warning('请输入正确的徽章等级');
return false;
}
if (
form.type === 'BADGE' &&
String(form.milestone || '').trim() &&
Number.isNaN(Number(form.milestone))
) {
message.warning('请输入正确的成就里程碑');
return false;
}
if (!String(form.cover || '').trim()) { if (!String(form.cover || '').trim()) {
message.warning('请上传封面'); message.warning('请上传封面');
return false; return false;
@ -418,22 +366,6 @@ async function handleSubmit() {
option-label-prop="label" option-label-prop="label"
/> />
</FormItem> </FormItem>
<FormItem label="徽章类型">
<Select
v-model:value="form.badgeType"
:options="badgeTypeOptions"
option-label-prop="label"
/>
</FormItem>
<FormItem label="徽章等级">
<Input v-model:value="form.badgeLevel" placeholder="无等级可填 0" />
</FormItem>
<FormItem label="徽章 Key">
<Input v-model:value="form.badgeKey" placeholder="不填则使用编码" />
</FormItem>
<FormItem label="成就里程碑">
<Input v-model:value="form.milestone" placeholder="活动徽章可不填" />
</FormItem>
</template> </template>
<FormItem label="封面"> <FormItem label="封面">
<input <input