feat: align gift challenge editing rules

This commit is contained in:
zhx 2026-07-20 16:48:19 +08:00
parent 8cc2614fb3
commit 8e2e3feaca

View File

@ -97,7 +97,21 @@
type="warning"
:closable="false"
show-icon
title="活动已经开始:仅名称和说明可修改;时间、榜单容量、结算窗口、任务和奖励均被服务端锁定。"
title="总榜已进入结算:仅名称和说明可修改;时间、榜单容量、结算窗口、任务和奖励均已冻结。"
/>
<el-alert
v-else-if="activeEditable"
type="info"
:closable="false"
show-icon
title="活动已进入或经过时间窗,但总榜尚未结算,全部配置仍可编辑。新配置只影响后续事件和尚未物化或冻结的任务、榜奖;历史积分、已生成任务、已冻结榜单和发奖记录不回算。历史数据已引用的同一奖励资源组继续使用旧快照,如需修改奖励内容请更换为新资源组。"
/>
<el-alert
v-else-if="expiredDisabledDraft"
type="info"
:closable="false"
show-icon
title="该活动未启用且尚未结算,虽然原开始时间已过,仍可编辑全部配置;启用前请把活动时间调整到未来。"
/>
<div class="section-title">基础活动配置</div>
@ -622,9 +636,27 @@ export default {
if (!this.form.id) {
return false
}
// serverTime
//
//
return this.form.overallSettlementStatus !== 'NOT_STARTED'
},
activeEditable() {
if (!this.form.id || !this.form.enabled || this.startedLocked) {
return false
}
// 使serverTime
//
return ['ACTIVE', 'ENDED'].indexOf(this.backendActivityStatus) >= 0 ||
(this.serverTime > 0 && this.originalStartTime > 0 && this.serverTime >= this.originalStartTime)
(!this.backendActivityStatus && this.serverTime > 0 && this.originalStartTime > 0 &&
this.serverTime >= this.originalStartTime)
},
editableDisabledDraft() {
return Boolean(this.form.id) && !this.form.enabled &&
this.form.overallSettlementStatus === 'NOT_STARTED'
},
expiredDisabledDraft() {
return this.editableDisabledDraft && this.serverTime > 0 && this.originalStartTime > 0 &&
this.serverTime >= this.originalStartTime
},
editorReadOnly() {
return !this.canEdit || this.startedLocked
@ -647,6 +679,7 @@ export default {
overallSettlementDelayMinutes: 30,
displayTopN: 100,
enabled: false,
overallSettlementStatus: 'NOT_STARTED',
version: null,
tasks: this.emptyTasks(),
dailyRankRewards: [this.emptyRankReward(PERIOD_DAILY, 1)],
@ -781,7 +814,8 @@ export default {
}
const payload = this.buildSavePayload()
this.saveLoading = true
//
//
//
saveAslanGiftChallengeActivity(payload).then(() => {
this.$message.success('礼物挑战配置已保存')
this.editorVisible = false
@ -810,7 +844,7 @@ export default {
this.$message.error('日榜和总榜晚到窗口必须是 0 到 1440 的整数分钟')
return false
}
// tasks/rankRewards
// tasks/rankRewards
if (this.startedLocked) {
return true
}