feat(道具商店、资源配置): 道具商品类型和道具类型新增“CP戒指”

This commit is contained in:
hzj 2026-06-03 11:05:38 +08:00
parent c8ea35e51c
commit 7f068b35be
3 changed files with 76 additions and 2 deletions

View File

@ -4066,6 +4066,7 @@ export default {
quantityOrDays: 'Quantity / Days' quantityOrDays: 'Quantity / Days'
}, },
resourceType: { resourceType: {
cpRing: 'CP Ring',
avatarFrame: 'Avatar Frame', avatarFrame: 'Avatar Frame',
ride: 'Ride', ride: 'Ride',
nobleVip: 'Noble', nobleVip: 'Noble',
@ -6797,7 +6798,8 @@ export default {
LAYOUT: 'Decoration', LAYOUT: 'Decoration',
FLOAT_PICTURE: 'Floating Image', FLOAT_PICTURE: 'Floating Image',
CHAT_BUBBLE: 'Chat Bubble', CHAT_BUBBLE: 'Chat Bubble',
DATA_CARD: 'Profile Card' DATA_CARD: 'Profile Card',
CP_RING: 'CP Ring'
}, },
currencyTypes: { currencyTypes: {
GOLD: 'Gold', GOLD: 'Gold',

View File

@ -4063,6 +4063,7 @@ export default {
quantityOrDays: '数量/天数' quantityOrDays: '数量/天数'
}, },
resourceType: { resourceType: {
cpRing: 'CP戒指',
avatarFrame: '头像框', avatarFrame: '头像框',
ride: '座驾', ride: '座驾',
nobleVip: '贵族', nobleVip: '贵族',
@ -6794,7 +6795,8 @@ export default {
LAYOUT: '装扮', LAYOUT: '装扮',
FLOAT_PICTURE: '飘窗', FLOAT_PICTURE: '飘窗',
CHAT_BUBBLE: '聊天气泡', CHAT_BUBBLE: '聊天气泡',
DATA_CARD: '资料卡' DATA_CARD: '资料卡',
CP_RING: 'CP戒指'
}, },
currencyTypes: { currencyTypes: {
GOLD: '金币', GOLD: '金币',

View File

@ -244,6 +244,52 @@
<el-button v-if="!sourceMap['AVATAR_FRAME'].isChangeSource" type="text" @click="clickChangeSource('AVATAR_FRAME')">{{ $t('pages.propsStore.action.changeResource') }}</el-button> <el-button v-if="!sourceMap['AVATAR_FRAME'].isChangeSource" type="text" @click="clickChangeSource('AVATAR_FRAME')">{{ $t('pages.propsStore.action.changeResource') }}</el-button>
</div> </div>
</el-form-item> </el-form-item>
<el-form-item :label="$t('pages.propsStore.propsTypes.CP_RING')">
<el-row v-loading="sourceMap['CP_RING'].loading" :gutter="10">
<el-col v-if="sourceMap['CP_RING'].isChangeSource" :span="15">
<el-form-item>
<el-select
v-model="form.tmpCpRingIndex"
:placeholder="$t('pages.propsStore.placeholder.type')"
style="width:100%;"
class="filter-item"
@change="changeCpRingSource"
>
<el-option v-for="(item, index) in sourceMap['CP_RING'].list" :key="item.id" :label="item.name" :value="index">
<div style="float: left;">
<img :src="item.cover" width="40px" height="40px">
</div>
<div style="float: left;margin-left:10px">
{{ item.name }}
</div>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="4">
<div style="width: 36px; height: 36px">
<el-image
style="width: 100%; height: 100%"
:src="cpRingSouceSelect.cover"
:preview-src-list="[cpRingSouceSelect.cover]"
>
<div slot="error" class="image-slot" style="text-align: center;">
<i class="el-icon-picture-outline" />
</div>
</el-image>
</div>
</el-col>
<el-col :span="4">
<svgaplayer
type="popover"
:url="cpRingSouceSelect.sourceUrl"
/>
</el-col>
</el-row>
<div>
<el-button v-if="!sourceMap['CP_RING'].isChangeSource" type="text" @click="clickChangeSource('CP_RING')">{{ $t('pages.propsStore.action.changeResource') }}</el-button>
</div>
</el-form-item>
<el-form-item :label="$t('pages.propsStore.propsTypes.DATA_CARD')"> <el-form-item :label="$t('pages.propsStore.propsTypes.DATA_CARD')">
<el-row v-loading="sourceMap['DATA_CARD'].loading" :gutter="10"> <el-row v-loading="sourceMap['DATA_CARD'].loading" :gutter="10">
<el-col v-if="sourceMap['DATA_CARD'].isChangeSource" :span="15"> <el-col v-if="sourceMap['DATA_CARD'].isChangeSource" :span="15">
@ -436,6 +482,7 @@ export default {
loginRewardsAmount: '', loginRewardsAmount: '',
roomMaxMember: '', roomMaxMember: '',
avatarFrameId: '', avatarFrameId: '',
cpRingId: '',
chatBubbleId: '', chatBubbleId: '',
carId: '', carId: '',
dataCardId: '' dataCardId: ''
@ -444,6 +491,7 @@ export default {
tmpValidDays: [], tmpValidDays: [],
tmpSourceIndex: '', tmpSourceIndex: '',
tmpAvatarIndex: '', tmpAvatarIndex: '',
tmpCpRingIndex: '',
tmpDataCardIndex: '', tmpDataCardIndex: '',
tmpChatBubbleIndex: '', tmpChatBubbleIndex: '',
tmpFloatPictureIndex: '', tmpFloatPictureIndex: '',
@ -458,6 +506,7 @@ export default {
sourceSelect: {}, sourceSelect: {},
carSouceSelect: {}, carSouceSelect: {},
avatarSouceSelect: {}, avatarSouceSelect: {},
cpRingSouceSelect: {},
dataCardSouceSelect: {}, dataCardSouceSelect: {},
chatBubbleSouceSelect: {}, chatBubbleSouceSelect: {},
@ -468,6 +517,12 @@ export default {
isChangeSource: false, isChangeSource: false,
list: [] list: []
}, },
'CP_RING': {
loading: false,
isLoadSourceTypeList: false,
isChangeSource: false,
list: []
},
'RIDE': { 'RIDE': {
loading: false, loading: false,
isLoadSourceTypeList: false, isLoadSourceTypeList: false,
@ -570,12 +625,14 @@ export default {
'propsAbility.loginRewardsAmount': commonRules, 'propsAbility.loginRewardsAmount': commonRules,
'propsAbility.roomMaxMember': commonRules, 'propsAbility.roomMaxMember': commonRules,
'propsAbility.avatarFrameId': commonRules, 'propsAbility.avatarFrameId': commonRules,
'propsAbility.cpRingId': commonRules,
'propsAbility.carId': commonRules, 'propsAbility.carId': commonRules,
'propsAbility.chatBubbleId': commonRules, 'propsAbility.chatBubbleId': commonRules,
'propsAbility.dataCardId': commonRules, 'propsAbility.dataCardId': commonRules,
tmpCarIndex: commonRules, tmpCarIndex: commonRules,
tmpDataCardIndex: commonRules, tmpDataCardIndex: commonRules,
tmpAvatarIndex: commonRules, tmpAvatarIndex: commonRules,
tmpCpRingIndex: commonRules,
tmpChatBubbleIndex: commonRules, tmpChatBubbleIndex: commonRules,
tmpFloatPictureIndex: commonRules, tmpFloatPictureIndex: commonRules,
tmpSourceIndex: commonRules tmpSourceIndex: commonRules
@ -632,6 +689,15 @@ export default {
} }
} }
const cpRing = newVal.propsAbility.cpRing
if (cpRing) {
this.cpRingSouceSelect = {
id: cpRing.id,
cover: cpRing.cover,
sourceUrl: cpRing.sourceUrl
}
}
const chatBubble = newVal.propsAbility.chatBubble const chatBubble = newVal.propsAbility.chatBubble
if (chatBubble) { if (chatBubble) {
this.chatBubbleSouceSelect = { this.chatBubbleSouceSelect = {
@ -681,6 +747,10 @@ export default {
this.avatarSouceSelect = this.sourceMap['AVATAR_FRAME'].list[index] this.avatarSouceSelect = this.sourceMap['AVATAR_FRAME'].list[index]
this.form.propsAbility.avatarFrameId = this.avatarSouceSelect.id this.form.propsAbility.avatarFrameId = this.avatarSouceSelect.id
}, },
changeCpRingSource(index) {
this.cpRingSouceSelect = this.sourceMap['CP_RING'].list[index]
this.form.propsAbility.cpRingId = this.cpRingSouceSelect.id
},
changeDataCardSource(index) { changeDataCardSource(index) {
this.dataCardSouceSelect = this.sourceMap['DATA_CARD'].list[index] this.dataCardSouceSelect = this.sourceMap['DATA_CARD'].list[index]
this.form.propsAbility.dataCardId = this.dataCardSouceSelect.id this.form.propsAbility.dataCardId = this.dataCardSouceSelect.id