From 6a972c54fe99a186b5885db1b1319643ce9679dd Mon Sep 17 00:00:00 2001
From: shinnosuke <tantao@1hoper.com>
Date: 星期三, 26 八月 2026 18:43:38 +0800
Subject: [PATCH] 又又更新
---
talent-card-admin/src/views/MovieTicketView.vue | 32 ++++++++++++++++++++++----------
1 files changed, 22 insertions(+), 10 deletions(-)
diff --git a/talent-card-admin/src/views/MovieTicketView.vue b/talent-card-admin/src/views/MovieTicketView.vue
index c9ee280..0992ee4 100644
--- a/talent-card-admin/src/views/MovieTicketView.vue
+++ b/talent-card-admin/src/views/MovieTicketView.vue
@@ -73,7 +73,7 @@
const form = reactive({
packageName: '',
- totalQuantity: 0,
+ totalQuantity: 1,
merchantIds: [] as Array<number | string>,
validStart: '',
validEnd: '',
@@ -83,7 +83,7 @@
usageText: '',
status: 1,
sortNo: 0,
- levelRules: ticketRuleLevels.map(level => ({ talentLevel: level, enabled: 1, claimableCount: undefined as number | undefined, resetCycle: '每天' })),
+ levelRules: ticketRuleLevels.map(level => ({ talentLevel: level, enabled: 1, claimableCount: 1, resetCycle: '每天' })),
})
const codeForm = reactive({ batchNo: '', codesText: '', remark: '' })
@@ -237,7 +237,7 @@
editingId.value = row ? rowId(row) : null
Object.assign(form, {
packageName: row?.packageName || '',
- totalQuantity: Number(row?.totalQuantity || row?.totalCount || row?.totalCodes || 0),
+ totalQuantity: Number(row?.totalQuantity || row?.totalCount || row?.totalCodes || 1),
merchantIds: Array.isArray(row?.merchantIds) && row.merchantIds.length ? row.merchantIds.map(String) : row?.merchantId ? [String(row.merchantId)] : [],
validStart: row?.validStart || '',
validEnd: row?.validEnd || '',
@@ -254,7 +254,7 @@
return {
talentLevel: level,
enabled: Number(found?.enabled ?? 1),
- claimableCount: found?.claimableCount === undefined ? undefined : Number(found.claimableCount),
+ claimableCount: Number(found?.claimableCount) > 0 ? Number(found?.claimableCount) : 1,
resetCycle: found?.resetCycle || '每天',
}
})
@@ -275,17 +275,30 @@
ElMessage.warning('请输入票包名称')
return
}
+ const totalQuantity = Number(form.totalQuantity)
+ if (!Number.isInteger(totalQuantity) || totalQuantity < 1) {
+ ElMessage.warning('数量必须为正整数')
+ return
+ }
+ const invalidLevelRule = form.levelRules.find(rule => {
+ const claimableCount = Number(rule.claimableCount)
+ return !Number.isInteger(claimableCount) || claimableCount < 1
+ })
+ if (invalidLevelRule) {
+ ElMessage.warning(`${invalidLevelRule.talentLevel}可领数量必须为正整数`)
+ return
+ }
saving.value = true
try {
const levelRules = form.levelRules.map(rule => ({
talentLevel: rule.talentLevel,
enabled: rule.enabled,
- claimableCount: Number(rule.claimableCount || 1),
+ claimableCount: Number(rule.claimableCount),
resetCycle: rule.resetCycle || '每天',
}))
const payload = {
packageName: form.packageName.trim(),
- totalQuantity: Number(form.totalQuantity || 0),
+ totalQuantity,
merchantId: form.merchantIds[0] ? Number(form.merchantIds[0]) : undefined,
merchantIds: form.merchantIds.map(item => Number(item)).filter(Boolean),
talentLevels: levelRules.filter(rule => Number(rule.enabled) === 1).map(rule => rule.talentLevel),
@@ -535,10 +548,9 @@
<el-button :icon="Refresh" @click="resetCodeFilters">重置</el-button>
</div>
</el-form>
- <div class="movie-ticket-package-tools">
+ <div class="movie-ticket-package-tools movie-ticket-code-pool-tools">
<el-button v-permission="'admin.movie-tickets.import'" type="primary" @click="openImport(selectedPackage || {})">导入码</el-button>
<el-button @click="openGenerate(selectedPackage || {})">批量生成</el-button>
- <span />
</div>
<el-table v-loading="loading" :data="rows" border class="movie-ticket-package-table" empty-text="暂无兑换码">
<el-table-column label="码ID" min-width="90" align="center"><template #default="{ row }">{{ text(row.codeId || row.id) }}</template></el-table-column>
@@ -569,7 +581,7 @@
<span>票包名称</span>
<el-input v-model="form.packageName" />
<span>数量</span>
- <el-input-number v-model="form.totalQuantity" :min="0" controls-position="right" />
+ <el-input-number v-model="form.totalQuantity" :min="1" :step="1" :precision="0" controls-position="right" />
<el-button type="primary" @click="merchantDialogVisible = true">可用商家</el-button>
</div>
<div v-if="selectedMerchantNames" class="movie-ticket-selected-merchants">已选商家:{{ selectedMerchantNames }}</div>
@@ -587,7 +599,7 @@
<strong>{{ rule.talentLevel }}</strong>
<el-switch v-model="rule.enabled" :active-value="1" :inactive-value="0" />
<span>可领数量</span>
- <el-input-number v-model="rule.claimableCount" :min="1" controls-position="right" placeholder="请输入" />
+ <el-input-number v-model="rule.claimableCount" :min="1" :step="1" :precision="0" controls-position="right" placeholder="请输入" />
<span>张</span>
<span>重置周期</span>
<el-select v-model="rule.resetCycle">
--
Gitblit v1.7.1