From b5a86072f24bddb51bb6a131120c2cfb88654747 Mon Sep 17 00:00:00 2001 From: zhx Date: Wed, 15 Jul 2026 16:56:22 +0800 Subject: [PATCH] feat: select rocket prop rewards from drawer --- .../data/PropsSourceSelectDrawer/index.vue | 19 ++- src/lang/messages/pages/en.js | 5 + src/lang/messages/pages/zh.js | 5 + src/views/rocket/config/index.vue | 159 +++++++++++++----- tests/unit/views/rocket-config.spec.js | 64 +++++++ 5 files changed, 212 insertions(+), 40 deletions(-) diff --git a/src/components/data/PropsSourceSelectDrawer/index.vue b/src/components/data/PropsSourceSelectDrawer/index.vue index b55882e..aa2d1de 100644 --- a/src/components/data/PropsSourceSelectDrawer/index.vue +++ b/src/components/data/PropsSourceSelectDrawer/index.vue @@ -73,6 +73,10 @@ export default { type: String, return: true, default: '' + }, + propsTypes: { + type: Array, + default: () => [] } }, data() { @@ -92,6 +96,7 @@ export default { { propsType: 'EMOJI', nameKey: 'pages.propsSourceGroupForm.resourceType.emoji', loading: false, loadData: false, list: [], placeholderKey: 'pages.propsSourceSelectDrawer.unit.quantity' }, { propsType: 'CHAT_BUBBLE', nameKey: 'pages.propsSourceGroupForm.resourceType.chatBubble', loading: false, loadData: false, list: [], placeholderKey: 'pages.propsSourceSelectDrawer.unit.days' }, { propsType: 'FLOAT_PICTURE', nameKey: 'pages.propsSourceGroupForm.resourceType.floatPicture', loading: false, loadData: false, list: [], placeholderKey: 'pages.propsSourceSelectDrawer.unit.days' }, + { propsType: 'DATA_CARD', nameKey: 'pages.propsSourceGroupForm.resourceType.dataCard', loading: false, loadData: false, list: [], placeholderKey: 'pages.propsSourceSelectDrawer.unit.days' }, { propsType: 'CUSTOMIZE', nameKey: 'pages.propsSourceGroupForm.resourceType.customizeReadonly', loading: false, loadData: false, list: [], placeholderKey: 'pages.propsSourceSelectDrawer.unit.description' }, { propsType: 'FRAGMENTS', nameKey: 'pages.propsSourceGroupForm.resourceType.fragments', loading: false, loadData: false, list: [], placeholderKey: 'pages.propsSourceSelectDrawer.unit.quantity' } ], @@ -135,8 +140,17 @@ export default { } }, created() { + // 业务页面可限制抽屉里的资源类型,避免选到当前发奖链路不支持的资源。 + if (this.propsTypes.length > 0) { + this.configPropsTypes = this.configPropsTypes.filter(item => this.propsTypes.includes(item.propsType)) + if (!this.configPropsTypes.some(item => item.propsType === this.listQuery.propsType)) { + this.listQuery.propsType = this.configPropsTypes[0] ? this.configPropsTypes[0].propsType : '' + } + } this.configPropsTypesMap = this.configPropsTypesToMap() - this.propsTypeChange() + if (this.listQuery.propsType) { + this.propsTypeChange() + } }, methods: { configPropsTypesToMap() { @@ -151,6 +165,9 @@ export default { }, loadSource(type) { const that = this + if (!that.configPropsTypesMap[type]) { + return + } if (that.configPropsTypesMap[type].loadData === true) { return } diff --git a/src/lang/messages/pages/en.js b/src/lang/messages/pages/en.js index bdc88cb..39b2ba4 100644 --- a/src/lang/messages/pages/en.js +++ b/src/lang/messages/pages/en.js @@ -8028,6 +8028,11 @@ export default { rewardType: 'Type', rewardName: 'Name', quantity: 'Quantity/Days', + days: 'Days', + selectedProp: 'Selected Prop', + selectProp: 'Select Prop', + changeProp: 'Change', + selected: 'Selected', detailType: 'Prop Type', detailTypePlaceholder: 'Enter a prop type recognized by the server', cover: 'Cover URL', diff --git a/src/lang/messages/pages/zh.js b/src/lang/messages/pages/zh.js index d94cf8c..2c09a11 100644 --- a/src/lang/messages/pages/zh.js +++ b/src/lang/messages/pages/zh.js @@ -8025,6 +8025,11 @@ export default { rewardType: '类型', rewardName: '名称', quantity: '数量/天数', + days: '天数', + selectedProp: '已选道具', + selectProp: '选择道具', + changeProp: '更换', + selected: '已选择', detailType: '道具类型', detailTypePlaceholder: '请输入服务端识别的道具类型', cover: '封面地址', diff --git a/src/views/rocket/config/index.vue b/src/views/rocket/config/index.vue index d531a8c..886d603 100644 --- a/src/views/rocket/config/index.vue +++ b/src/views/rocket/config/index.vue @@ -111,7 +111,7 @@ {{ $t('pages.rocketConfig.removeReward') }} - + - + - + - +
+ +
+ +
+
+ {{ reward.name || $t('pages.rocketConfig.selected') }} + + {{ $t('pages.rocketConfig.changeProp') }} + +
+ + {{ $t('pages.rocketConfig.selectProp') }} +
- - - - - - - - - - - - + +