This commit is contained in:
zpc 2026-02-08 02:01:01 +08:00
parent 98dddd684b
commit 8f37f268b8
5 changed files with 58 additions and 185 deletions

View File

@ -2,36 +2,23 @@ import { request, type ApiResponse, type PagedResult } from '@/utils/request'
// ==================== 盒子类型枚举 ==================== // ==================== 盒子类型枚举 ====================
/** 盒子类型枚举 */ /**
*
* goods_types value
*/
export enum GoodsType { export enum GoodsType {
YiFanShang = 1, // 一番赏 YiFanShang = 1, // 一番赏
WuXianShang = 2, // 无限赏 WuXianShang = 2, // 无限赏
LeiTaiShang = 3, // 擂台赏 ShangChengShang = 10, // 商城赏
FuDai = 5, // 福袋
XingYunShang = 6, // 幸运赏
LingZhuShang = 8, // 领主赏
LianJiShang = 9, // 连击赏
MangHe = 10, // 盲盒
XingYunShangNew = 11, // 幸运赏(新)
FuLiWu = 15, // 福利屋 FuLiWu = 15, // 福利屋
FanBeiShang = 16, // 翻倍赏
TeShuHeZi = 17, // 特殊盒子
} }
/** 盒子类型标签映射 */ /** 盒子类型标签映射 */
export const GoodsTypeLabels: Record<number, string> = { export const GoodsTypeLabels: Record<number, string> = {
[GoodsType.YiFanShang]: '一番赏', [GoodsType.YiFanShang]: '一番赏',
[GoodsType.WuXianShang]: '无限赏', [GoodsType.WuXianShang]: '无限赏',
[GoodsType.LeiTaiShang]: '擂台赏', [GoodsType.ShangChengShang]: '商城赏',
[GoodsType.FuDai]: '福袋',
[GoodsType.XingYunShang]: '幸运赏',
[GoodsType.LingZhuShang]: '领主赏',
[GoodsType.LianJiShang]: '连击赏',
[GoodsType.MangHe]: '盲盒',
[GoodsType.XingYunShangNew]: '幸运赏(新)',
[GoodsType.FuLiWu]: '福利屋', [GoodsType.FuLiWu]: '福利屋',
[GoodsType.FanBeiShang]: '翻倍赏',
[GoodsType.TeShuHeZi]: '特殊盒子',
} }
// ==================== 盒子相关类型定义 ==================== // ==================== 盒子相关类型定义 ====================

View File

@ -18,11 +18,7 @@
v-model="formData.title" v-model="formData.title"
placeholder="请输入标题" placeholder="请输入标题"
maxlength="100" maxlength="100"
:disabled="!isTitleEditable"
/> />
<div v-if="!isTitleEditable" class="form-tip">
系统预设单页标题不可编辑
</div>
</el-form-item> </el-form-item>
<el-form-item label="内容" prop="content"> <el-form-item label="内容" prop="content">
@ -140,11 +136,6 @@ const editorConfig: Partial<IEditorConfig> = {
const formRef = ref<FormInstance>() const formRef = ref<FormInstance>()
const submitLoading = ref(false) const submitLoading = ref(false)
//
const isTitleEditable = computed(() => {
return props.danye?.isTitleEditable ?? true
})
// //
const formData = reactive({ const formData = reactive({
title: '', title: '',
@ -276,14 +267,10 @@ const handleSubmit = async () => {
submitLoading.value = true submitLoading.value = true
try { try {
const submitData: DanyeUpdateRequest = { const submitData: DanyeUpdateRequest = {
title: formData.title,
content: formData.content content: formData.content
} }
//
if (isTitleEditable.value) {
submitData.title = formData.title
}
await updateDanye(props.danye.id, submitData) await updateDanye(props.danye.id, submitData)
ElMessage.success('保存成功') ElMessage.success('保存成功')
emit('success') emit('success')

View File

@ -295,38 +295,32 @@ const prizeLevelOptions = ref<PrizeLevelOptionResponse[]>([])
// //
const showQuantity = computed(() => { const showQuantity = computed(() => {
//
return [ return [
GoodsType.YiFanShang, GoodsType.YiFanShang,
GoodsType.LeiTaiShang, GoodsType.ShangChengShang,
GoodsType.FuDai, GoodsType.FuLiWu
GoodsType.XingYunShang,
GoodsType.MangHe,
GoodsType.XingYunShangNew,
GoodsType.FuLiWu,
GoodsType.TeShuHeZi
].includes(props.goodsType) ].includes(props.goodsType)
}) })
const showProbability = computed(() => { const showProbability = computed(() => {
return [ //
GoodsType.WuXianShang, return [GoodsType.WuXianShang].includes(props.goodsType)
GoodsType.LingZhuShang,
GoodsType.LianJiShang,
GoodsType.FanBeiShang,
GoodsType.TeShuHeZi
].includes(props.goodsType)
}) })
const showDoubling = computed(() => { const showDoubling = computed(() => {
return [GoodsType.FanBeiShang, GoodsType.TeShuHeZi].includes(props.goodsType) //
return false
}) })
const showLingzhu = computed(() => { const showLingzhu = computed(() => {
return props.goodsType === GoodsType.LingZhuShang //
return false
}) })
const showLianji = computed(() => { const showLianji = computed(() => {
return props.goodsType === GoodsType.LianJiShang //
return false
}) })
// //

View File

@ -291,38 +291,32 @@ const prizeLevelOptions = ref<PrizeLevelOptionResponse[]>([])
// //
const showQuantity = computed(() => { const showQuantity = computed(() => {
//
return [ return [
GoodsType.YiFanShang, GoodsType.YiFanShang,
GoodsType.LeiTaiShang, GoodsType.ShangChengShang,
GoodsType.FuDai, GoodsType.FuLiWu
GoodsType.XingYunShang,
GoodsType.MangHe,
GoodsType.XingYunShangNew,
GoodsType.FuLiWu,
GoodsType.TeShuHeZi
].includes(props.goodsType) ].includes(props.goodsType)
}) })
const showProbability = computed(() => { const showProbability = computed(() => {
return [ //
GoodsType.WuXianShang, return [GoodsType.WuXianShang].includes(props.goodsType)
GoodsType.LingZhuShang,
GoodsType.LianJiShang,
GoodsType.FanBeiShang,
GoodsType.TeShuHeZi
].includes(props.goodsType)
}) })
const showDoubling = computed(() => { const showDoubling = computed(() => {
return [GoodsType.FanBeiShang, GoodsType.TeShuHeZi].includes(props.goodsType) //
return false
}) })
const showLingzhu = computed(() => { const showLingzhu = computed(() => {
return props.goodsType === GoodsType.LingZhuShang //
return false
}) })
const showLianji = computed(() => { const showLianji = computed(() => {
return props.goodsType === GoodsType.LianJiShang //
return false
}) })
// //

View File

@ -7,20 +7,13 @@
/** /**
* *
* goods_types value
*/ */
export enum GoodsType { export enum GoodsType {
YiFanShang = 1, // 一番赏 YiFanShang = 1, // 一番赏
WuXianShang = 2, // 无限赏 WuXianShang = 2, // 无限赏
LeiTaiShang = 3, // 擂台赏 ShangChengShang = 10, // 商城赏(原盲盒)
FuDai = 5, // 福袋
XingYunShang = 6, // 幸运赏
LingZhuShang = 8, // 领主赏
LianJiShang = 9, // 连击赏
MangHe = 10, // 盲盒
XingYunShangNew = 11, // 幸运赏(新)
FuLiWu = 15, // 福利屋 FuLiWu = 15, // 福利屋
FanBeiShang = 16, // 翻倍赏
TeShuHeZi = 17, // 特殊盒子
} }
/** /**
@ -29,16 +22,8 @@ export enum GoodsType {
export const GoodsTypeLabels: Record<number, string> = { export const GoodsTypeLabels: Record<number, string> = {
[GoodsType.YiFanShang]: '一番赏', [GoodsType.YiFanShang]: '一番赏',
[GoodsType.WuXianShang]: '无限赏', [GoodsType.WuXianShang]: '无限赏',
[GoodsType.LeiTaiShang]: '擂台赏', [GoodsType.ShangChengShang]: '商城赏',
[GoodsType.FuDai]: '福袋',
[GoodsType.XingYunShang]: '幸运赏',
[GoodsType.LingZhuShang]: '领主赏',
[GoodsType.LianJiShang]: '连击赏',
[GoodsType.MangHe]: '盲盒',
[GoodsType.XingYunShangNew]: '幸运赏(新)',
[GoodsType.FuLiWu]: '福利屋', [GoodsType.FuLiWu]: '福利屋',
[GoodsType.FanBeiShang]: '翻倍赏',
[GoodsType.TeShuHeZi]: '特殊盒子',
} }
/** /**
@ -150,9 +135,15 @@ export const defaultFieldConfig: GoodsTypeFieldConfig = {
/** /**
* *
* / * /
*
* 使 goods_types
* - value=1: 一番赏 - HH币
* - value=2: 无限赏 - HH币
* - value=10: 商城赏 -
* - value=15: 福利屋 -
*/ */
export const GoodsTypeFieldConfigs: Record<number, GoodsTypeFieldConfig> = { export const GoodsTypeFieldConfigs: Record<number, GoodsTypeFieldConfig> = {
// 一番赏:套数、锁箱、每日限购 // 一番赏:套数、锁箱、每日限购、首抽五折、首页显示
[GoodsType.YiFanShang]: { [GoodsType.YiFanShang]: {
showStock: true, showLock: true, showDailyLimit: true, showStock: true, showLock: true, showDailyLimit: true,
showRage: false, showItemCard: false, showLingzhu: false, showRage: false, showItemCard: false, showLingzhu: false,
@ -162,116 +153,36 @@ export const GoodsTypeFieldConfigs: Record<number, GoodsTypeFieldConfig> = {
showCoverImage: true, showDetailImage: true, showCoverImage: true, showDetailImage: true,
showPrice: true, showShouZhe: true, showPrice: true, showShouZhe: true,
}, },
// 无限赏:怒气值、道具卡 // 无限赏:不需要套数、锁箱,需要首抽五折
[GoodsType.WuXianShang]: { [GoodsType.WuXianShang]: {
showStock: false, showLock: false, showDailyLimit: false,
showRage: true, showItemCard: true, showLingzhu: false,
showLianji: false, showTimeConfig: false, showAutoXiajia: false,
showCoupon: true, showIntegral: true, showDescription: false,
showQuanjuXiangou: false, showShowIs: false, showUnlockAmount: true,
showCoverImage: true, showDetailImage: true,
showPrice: true, showShouZhe: true,
},
// 擂台赏(商城赏):不需要详情图
[GoodsType.LeiTaiShang]: {
showStock: false, showLock: false, showDailyLimit: false, showStock: false, showLock: false, showDailyLimit: false,
showRage: false, showItemCard: false, showLingzhu: false, showRage: false, showItemCard: false, showLingzhu: false,
showLianji: false, showTimeConfig: false, showAutoXiajia: false, showLianji: false, showTimeConfig: false, showAutoXiajia: false,
showCoupon: true, showIntegral: true, showDescription: false, showCoupon: true, showIntegral: true, showDescription: false,
showQuanjuXiangou: false, showShowIs: false, showUnlockAmount: true, showQuanjuXiangou: false, showShowIs: false, showUnlockAmount: true,
showCoverImage: true, showDetailImage: false,
showPrice: true, showShouZhe: true,
},
// 福袋:套数
[GoodsType.FuDai]: {
showStock: true, showLock: false, showDailyLimit: false,
showRage: false, showItemCard: false, showLingzhu: false,
showLianji: false, showTimeConfig: false, showAutoXiajia: false,
showCoupon: false, showIntegral: false, showDescription: false,
showQuanjuXiangou: false, showShowIs: false, showUnlockAmount: true,
showCoverImage: true, showDetailImage: true, showCoverImage: true, showDetailImage: true,
showPrice: true, showShouZhe: true, showPrice: true, showShouZhe: true,
}, },
// 幸运赏:套数、锁箱、每日限购 // 商城赏:套数、盒子描述,不需要详情图、首抽五折
[GoodsType.XingYunShang]: { [GoodsType.ShangChengShang]: {
showStock: true, showLock: true, showDailyLimit: true,
showRage: false, showItemCard: false, showLingzhu: false,
showLianji: false, showTimeConfig: false, showAutoXiajia: false,
showCoupon: true, showIntegral: true, showDescription: false,
showQuanjuXiangou: false, showShowIs: true, showUnlockAmount: true,
showCoverImage: true, showDetailImage: true,
showPrice: true, showShouZhe: true,
},
// 领主赏:领主开关、领主返还、领主奖品
[GoodsType.LingZhuShang]: {
showStock: false, showLock: false, showDailyLimit: false,
showRage: false, showItemCard: false, showLingzhu: true,
showLianji: false, showTimeConfig: false, showAutoXiajia: false,
showCoupon: true, showIntegral: true, showDescription: false,
showQuanjuXiangou: false, showShowIs: true, showUnlockAmount: true,
showCoverImage: true, showDetailImage: true,
showPrice: true, showShouZhe: true,
},
// 连击赏:连击次数、连击奖品
[GoodsType.LianJiShang]: {
showStock: false, showLock: false, showDailyLimit: false,
showRage: false, showItemCard: false, showLingzhu: false,
showLianji: true, showTimeConfig: false, showAutoXiajia: false,
showCoupon: true, showIntegral: true, showDescription: false,
showQuanjuXiangou: false, showShowIs: true, showUnlockAmount: true,
showCoverImage: true, showDetailImage: true,
showPrice: true, showShouZhe: true,
},
// 盲盒:套数、盒子描述
[GoodsType.MangHe]: {
showStock: true, showLock: false, showDailyLimit: false, showStock: true, showLock: false, showDailyLimit: false,
showRage: false, showItemCard: false, showLingzhu: false, showRage: false, showItemCard: false, showLingzhu: false,
showLianji: false, showTimeConfig: false, showAutoXiajia: false, showLianji: false, showTimeConfig: false, showAutoXiajia: false,
showCoupon: false, showIntegral: false, showDescription: true, showCoupon: false, showIntegral: false, showDescription: true,
showQuanjuXiangou: false, showShowIs: false, showUnlockAmount: true, showQuanjuXiangou: false, showShowIs: false, showUnlockAmount: true,
showCoverImage: true, showDetailImage: true, showCoverImage: true, showDetailImage: false,
showPrice: true, showShouZhe: true, showPrice: true, showShouZhe: false,
}, },
// 幸运赏(新):套数、锁箱、每日限购 // 福利屋:时间配置、盒子描述,不需要封面图、详情图、价格、首抽五折
[GoodsType.XingYunShangNew]: {
showStock: true, showLock: true, showDailyLimit: true,
showRage: false, showItemCard: false, showLingzhu: false,
showLianji: false, showTimeConfig: false, showAutoXiajia: false,
showCoupon: true, showIntegral: true, showDescription: false,
showQuanjuXiangou: false, showShowIs: true, showUnlockAmount: true,
showCoverImage: true, showDetailImage: true,
showPrice: true, showShouZhe: true,
},
// 福利屋:开始/结束/开奖时间,不需要封面图、详情图、价格、首抽五折、限购次数
[GoodsType.FuLiWu]: { [GoodsType.FuLiWu]: {
showStock: false, showLock: false, showDailyLimit: false, showStock: false, showLock: false, showDailyLimit: false,
showRage: false, showItemCard: false, showLingzhu: false, showRage: false, showItemCard: false, showLingzhu: false,
showLianji: false, showTimeConfig: true, showAutoXiajia: false, showLianji: false, showTimeConfig: true, showAutoXiajia: false,
showCoupon: false, showIntegral: false, showDescription: true, showCoupon: false, showIntegral: false, showDescription: true,
showQuanjuXiangou: false, showShowIs: false, showUnlockAmount: true, showQuanjuXiangou: false, showShowIs: false, showUnlockAmount: false,
showCoverImage: false, showDetailImage: false, showCoverImage: false, showDetailImage: false,
showPrice: false, showShouZhe: false, showPrice: false, showShouZhe: false,
}, },
// 翻倍赏:怒气值、道具卡
[GoodsType.FanBeiShang]: {
showStock: false, showLock: false, showDailyLimit: false,
showRage: true, showItemCard: true, showLingzhu: false,
showLianji: false, showTimeConfig: false, showAutoXiajia: false,
showCoupon: true, showIntegral: true, showDescription: false,
showQuanjuXiangou: false, showShowIs: false, showUnlockAmount: true,
showCoverImage: true, showDetailImage: true,
showPrice: true, showShouZhe: true,
},
// 特殊盒子
[GoodsType.TeShuHeZi]: {
showStock: false, showLock: false, showDailyLimit: true,
showRage: false, showItemCard: false, showLingzhu: false,
showLianji: false, showTimeConfig: false, showAutoXiajia: false,
showCoupon: false, showIntegral: false, showDescription: false,
showQuanjuXiangou: false, showShowIs: false, showUnlockAmount: false,
showCoverImage: true, showDetailImage: true,
showPrice: true, showShouZhe: true,
},
} }
// ==================== 奖品列表动态列配置 ==================== // ==================== 奖品列表动态列配置 ====================
@ -291,14 +202,14 @@ export interface PrizeColumnConfig {
* *
*/ */
export function getPrizeColumnConfig(goodsType: number): PrizeColumnConfig { export function getPrizeColumnConfig(goodsType: number): PrizeColumnConfig {
// 显示数量列的类型:一番赏、擂台赏、福袋、幸运赏、盲盒、幸运赏(新)、福利屋、特殊盒子 // 显示数量列的类型:一番赏、商城赏、福利屋
const showQuantityTypes = [1, 3, 5, 6, 10, 11, 15, 17] const showQuantityTypes = [1, 10, 15]
// 显示概率列的类型:无限赏、领主赏、连击赏、翻倍赏、特殊盒子 // 显示概率列的类型:无限赏
const showProbabilityTypes = [2, 8, 9, 16, 17] const showProbabilityTypes = [2]
// 显示赠送倍率的类型:翻倍赏、特殊盒子 // 显示赠送倍率的类型:暂无
const showGiftMultipleTypes = [16, 17] const showGiftMultipleTypes: number[] = []
// 显示是否领主的类型:领主赏 // 显示是否领主的类型:暂无
const showIsLingzhuTypes = [8] const showIsLingzhuTypes: number[] = []
return { return {
showQuantity: showQuantityTypes.includes(goodsType), showQuantity: showQuantityTypes.includes(goodsType),
@ -335,14 +246,14 @@ export function getPrizeCategoryName(category: number): string {
* 使 * 使
*/ */
export function isProbabilityMode(goodsType: number): boolean { export function isProbabilityMode(goodsType: number): boolean {
// 无限赏、领主赏、连击赏、翻倍赏使用概率模式 // 无限赏使用概率模式
return [2, 8, 9, 16].includes(goodsType) return [2].includes(goodsType)
} }
/** /**
* *
*/ */
export function supportsTreasureBox(goodsType: number): boolean { export function supportsTreasureBox(goodsType: number): boolean {
// 一番赏、幸运赏、幸运赏(新)支持宝箱 // 一番赏支持宝箱
return [1, 6, 11].includes(goodsType) return [1].includes(goodsType)
} }