diff --git a/src/apis.js b/src/apis.js index eb20f8f..ae037b4 100644 --- a/src/apis.js +++ b/src/apis.js @@ -770,6 +770,21 @@ export const getGiftDetailAPI = (id) => { ); }; +// 分页获取启用门店及当前用户在各店的会员状态。 +export const getStoreVipListAPI = ({page = 1, pageSize = 20} = {}) => { + return request("GET", "/store/list", {page, pageSize}); +}; + +// 查询当前用户在指定门店的会员状态及权益剩余次数。 +export const getStoreBenefitAPI = (storeId) => { + return request("GET", "/store/benefit", {storeId}); +}; + +// 获取体验中心 VIP 介绍纯文本,无需登录。 +export const getStoreVipIntroAPI = () => { + return request("GET", "/store/vip-intro"); +}; + // 根据用户定位分页获取附近门店。 export const getNearbyStoresAPI = ({ longitude, diff --git a/src/pages.json b/src/pages.json index 87fe3da..a2184f4 100644 --- a/src/pages.json +++ b/src/pages.json @@ -1,5 +1,5 @@ -{ - "pages": [ +{ + "pages": [ { "path": "pages/index" }, @@ -9,118 +9,136 @@ { "path": "pages/friend-battle" }, - { - "path": "pages/point-book" - }, - { - "path": "pages/point-book-rank" - }, - { - "path": "pages/my-like-list" - }, - { - "path": "pages/audio-test" - }, - { - "path": "pages/about-us" - }, - { - "path": "pages/webview", - "style": { - "navigationBarTitleText": "" - } - }, - { - "path": "pages/melee-battle" - }, - { - "path": "pages/battle-result" - }, - { - "path": "pages/friend-battle-result" - }, - { - "path": "pages/point-book-edit" - }, - { - "path": "pages/point-book-create" - }, - { - "path": "pages/point-book-list" - }, - { - "path": "pages/point-book-detail" - }, - { - "path": "pages/point-book-detail-share" - }, - { - "path": "pages/match-page" - }, - { - "path": "pages/user" - }, - { - "path": "pages/grade-intro" - }, - { - "path": "pages/rank-intro" - }, - { - "path": "pages/my-growth" - }, - { - "path": "pages/first-try" - }, - { - "path": "pages/practise" - }, - { - "path": "pages/practise-one" - }, - { - "path": "pages/practise-two" - }, - { - "path": "pages/battle-room" - }, - { - "path": "pages/ranking" - }, - { - "path": "pages/rank-list" - }, - { - "path": "pages/match-detail" - }, - { - "path": "pages/melee-bow-data" - }, + { + "path": "pages/point-book" + }, + { + "path": "pages/point-book-rank" + }, + { + "path": "pages/my-like-list" + }, + { + "path": "pages/audio-test" + }, + { + "path": "pages/calibration" + }, + { + "path": "pages/about-us" + }, + { + "path": "pages/webview", + "style": { + "navigationBarTitleText": "" + } + }, + { + "path": "pages/melee-battle" + }, + { + "path": "pages/battle-result" + }, + { + "path": "pages/friend-battle-result" + }, + { + "path": "pages/point-book-edit" + }, + { + "path": "pages/point-book-create" + }, + { + "path": "pages/point-book-list" + }, + { + "path": "pages/point-book-detail" + }, + { + "path": "pages/point-book-detail-share" + }, + { + "path": "pages/match-page" + }, + { + "path": "pages/my-device" + }, + { + "path": "pages/device-intro" + }, + { + "path": "pages/user" + }, + { + "path": "pages/grade-intro" + }, + { + "path": "pages/rank-intro" + }, + { + "path": "pages/my-growth" + }, + { + "path": "pages/first-try" + }, + { + "path": "pages/practise" + }, + { + "path": "pages/practise-one" + }, + { + "path": "pages/practise-two" + }, + { + "path": "pages/battle-room" + }, + { + "path": "pages/ranking" + }, + { + "path": "pages/rank-list" + }, + { + "path": "pages/match-detail" + }, + { + "path": "pages/melee-bow-data" + }, { "path": "pages/mine-bow-data" + }, + { + "path": "pages/ota-wifi", + "style": { + "navigationStyle": "custom" + } } ], - "globalStyle": { - "backgroundColor": "@bgColor", - "backgroundColorBottom": "@bgColorBottom", - "backgroundColorTop": "@bgColorTop", - "backgroundTextStyle": "@bgTxtStyle", - "navigationBarBackgroundColor": "#000000", - "navigationBarTextStyle": "@navTxtStyle", - "navigationBarTitleText": "Uni Creator", - "navigationStyle": "custom", - "enablePullDownRefresh": false - }, - "easycom": { - "autoscan": true, - "custom": { - "^uni-(.*)": "@dcloudio/uni-ui/lib/uni-$1/uni-$1.vue" - } - }, + "globalStyle": { + "backgroundColor": "@bgColor", + "backgroundColorBottom": "@bgColorBottom", + "backgroundColorTop": "@bgColorTop", + "backgroundTextStyle": "@bgTxtStyle", + "navigationBarBackgroundColor": "#000000", + "navigationBarTextStyle": "@navTxtStyle", + "navigationBarTitleText": "Uni Creator", + "navigationStyle": "custom", + "enablePullDownRefresh": false + }, + "easycom": { + "autoscan": true, + "custom": { + "^uni-(.*)": "@dcloudio/uni-ui/lib/uni-$1/uni-$1.vue" + } + }, "subPackages": [ { "root": "pages/coin", "pages": [ + { + "path": "vip-intro" + }, { "path": "index" }, @@ -178,48 +196,48 @@ }, { "root": "pages/member", - "pages": [ - { - "path": "orders" - }, - { - "path": "order-detail" - }, - { - "path": "be-vip" - }, - { - "path": "vip-intro" - }, - { - "path": "agreement" - } - ] - }, - { - "root": "pages/team-battle", - "pages": [ - { - "path": "index" - }, - { - "path": "team-bow-data" - } - ] - }, - { - "root": "pages/training", - "pages": [ - { - "path": "index" - }, - { - "path": "difficulty" - }, - { - "path": "practise-one" - } - ] - } - ] -} + "pages": [ + { + "path": "orders" + }, + { + "path": "order-detail" + }, + { + "path": "be-vip" + }, + { + "path": "vip-intro" + }, + { + "path": "agreement" + } + ] + }, + { + "root": "pages/team-battle", + "pages": [ + { + "path": "index" + }, + { + "path": "team-bow-data" + } + ] + }, + { + "root": "pages/training", + "pages": [ + { + "path": "index" + }, + { + "path": "difficulty" + }, + { + "path": "practise-one" + } + ] + } + ] +} diff --git a/src/pages/coin/components/CoinBalancePanel.vue b/src/pages/coin/components/CoinBalancePanel.vue index 746a514..dea506e 100644 --- a/src/pages/coin/components/CoinBalancePanel.vue +++ b/src/pages/coin/components/CoinBalancePanel.vue @@ -38,13 +38,12 @@ defineProps({ display: flex; align-items: center; justify-content: center; - width: 706rpx; + width: 100%; height: 60rpx; margin-top: 0; - border: 2rpx solid rgba(255, 217, 71, 0.25); border-radius: 12rpx; box-sizing: border-box; - background-color: rgba(255, 217, 71, 0.06); + background: linear-gradient(90deg, transparent, rgba(4, 4, 4, 0.7), transparent); } .balance-item { @@ -69,7 +68,7 @@ defineProps({ .balance-list__line { width: 2rpx; - height: 28rpx; + height: 16rpx; background-color: rgba(255, 255, 255, 0.5); margin: 0 22rpx; } diff --git a/src/pages/coin/components/CoinHeader.vue b/src/pages/coin/components/CoinHeader.vue index 284b68c..142328b 100644 --- a/src/pages/coin/components/CoinHeader.vue +++ b/src/pages/coin/components/CoinHeader.vue @@ -10,11 +10,13 @@ const props = defineProps({ type: String, default: "", }, + switchable: { type: Boolean, default: false }, onBack: { type: Function, default: null, }, }); +const emit = defineEmits(["select-store"]); - diff --git a/src/pages/coin/components/StoreSectionTabs.vue b/src/pages/coin/components/StoreSectionTabs.vue new file mode 100644 index 0000000..4960cbd --- /dev/null +++ b/src/pages/coin/components/StoreSectionTabs.vue @@ -0,0 +1,61 @@ + + + + + diff --git a/src/pages/coin/components/StoreVipCard.vue b/src/pages/coin/components/StoreVipCard.vue new file mode 100644 index 0000000..598deec --- /dev/null +++ b/src/pages/coin/components/StoreVipCard.vue @@ -0,0 +1,135 @@ + + + + + diff --git a/src/pages/coin/components/StoreVipFooter.vue b/src/pages/coin/components/StoreVipFooter.vue new file mode 100644 index 0000000..50053eb --- /dev/null +++ b/src/pages/coin/components/StoreVipFooter.vue @@ -0,0 +1,62 @@ + + + + + diff --git a/src/pages/coin/data.js b/src/pages/coin/data.js index 24f7efc..945fcc9 100644 --- a/src/pages/coin/data.js +++ b/src/pages/coin/data.js @@ -1,3 +1,4 @@ +// 金币快捷入口保持原有路由与图标配置。 export const quickMenus = [ { key: "rules", @@ -20,3 +21,30 @@ export const quickMenus = [ icon: "https://static.shelingxingqiu.com/shootmini/static/coin/icon-nearby-store.png", }, ]; + +// 体验中心业务 Tab。 +export const storeSections = [ + { key: "vip", label: "体验中心VIP" }, + { key: "coin", label: "我的金币" }, +]; + +export const storeVipBenefits = [ + { + key: "trial", + title: "免费体验权益", + description: "使用该权益可免费体验智能弓箭30分钟1次,加入官方社群还可以额外获赠1次。", + icon: "https://static.shelingxingqiu.com/shootmini/static/coin/store-vip-benefit-trial.png", + }, + { + key: "discount", + title: "特惠购买权益", + description: "使用该权益可以19.9元的特惠价格购买30分钟体验服务1次。", + icon: "https://static.shelingxingqiu.com/shootmini/static/coin/store-vip-benefit-discount.png", + }, + { + key: "drink", + title: "到店赠饮权益", + description: "使用该权益每次到店后可获得免费赠送的指定饮品一支。", + icon: "https://static.shelingxingqiu.com/shootmini/static/coin/store-vip-benefit-drink.png", + }, +]; diff --git a/src/pages/coin/index.vue b/src/pages/coin/index.vue index 019abcf..5ac9dce 100644 --- a/src/pages/coin/index.vue +++ b/src/pages/coin/index.vue @@ -1,14 +1,53 @@ - diff --git a/src/pages/user.vue b/src/pages/user.vue index 1aaef37..c79d088 100644 --- a/src/pages/user.vue +++ b/src/pages/user.vue @@ -1,5 +1,7 @@