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'
},
resourceType: {
cpRing: 'CP Ring',
avatarFrame: 'Avatar Frame',
ride: 'Ride',
nobleVip: 'Noble',
@ -6797,7 +6798,8 @@ export default {
LAYOUT: 'Decoration',
FLOAT_PICTURE: 'Floating Image',
CHAT_BUBBLE: 'Chat Bubble',
DATA_CARD: 'Profile Card'
DATA_CARD: 'Profile Card',
CP_RING: 'CP Ring'
},
currencyTypes: {
GOLD: 'Gold',

View File

@ -4063,6 +4063,7 @@ export default {
quantityOrDays: '数量/天数'
},
resourceType: {
cpRing: 'CP戒指',
avatarFrame: '头像框',
ride: '座驾',
nobleVip: '贵族',
@ -6794,7 +6795,8 @@ export default {
LAYOUT: '装扮',
FLOAT_PICTURE: '飘窗',
CHAT_BUBBLE: '聊天气泡',
DATA_CARD: '资料卡'
DATA_CARD: '资料卡',
CP_RING: 'CP戒指'
},
currencyTypes: {
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>
</div>
</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-row v-loading="sourceMap['DATA_CARD'].loading" :gutter="10">
<el-col v-if="sourceMap['DATA_CARD'].isChangeSource" :span="15">
@ -436,6 +482,7 @@ export default {
loginRewardsAmount: '',
roomMaxMember: '',
avatarFrameId: '',
cpRingId: '',
chatBubbleId: '',
carId: '',
dataCardId: ''
@ -444,6 +491,7 @@ export default {
tmpValidDays: [],
tmpSourceIndex: '',
tmpAvatarIndex: '',
tmpCpRingIndex: '',
tmpDataCardIndex: '',
tmpChatBubbleIndex: '',
tmpFloatPictureIndex: '',
@ -458,6 +506,7 @@ export default {
sourceSelect: {},
carSouceSelect: {},
avatarSouceSelect: {},
cpRingSouceSelect: {},
dataCardSouceSelect: {},
chatBubbleSouceSelect: {},
@ -468,6 +517,12 @@ export default {
isChangeSource: false,
list: []
},
'CP_RING': {
loading: false,
isLoadSourceTypeList: false,
isChangeSource: false,
list: []
},
'RIDE': {
loading: false,
isLoadSourceTypeList: false,
@ -570,12 +625,14 @@ export default {
'propsAbility.loginRewardsAmount': commonRules,
'propsAbility.roomMaxMember': commonRules,
'propsAbility.avatarFrameId': commonRules,
'propsAbility.cpRingId': commonRules,
'propsAbility.carId': commonRules,
'propsAbility.chatBubbleId': commonRules,
'propsAbility.dataCardId': commonRules,
tmpCarIndex: commonRules,
tmpDataCardIndex: commonRules,
tmpAvatarIndex: commonRules,
tmpCpRingIndex: commonRules,
tmpChatBubbleIndex: commonRules,
tmpFloatPictureIndex: 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
if (chatBubble) {
this.chatBubbleSouceSelect = {
@ -681,6 +747,10 @@ export default {
this.avatarSouceSelect = this.sourceMap['AVATAR_FRAME'].list[index]
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) {
this.dataCardSouceSelect = this.sourceMap['DATA_CARD'].list[index]
this.form.propsAbility.dataCardId = this.dataCardSouceSelect.id