diff --git a/src/mock/data.js b/src/mock/data.js index 90ae0b3..2498961 100644 --- a/src/mock/data.js +++ b/src/mock/data.js @@ -1,9 +1,9 @@ // 南京场地示例仅供交互演示,不代表实时价格或可订状态。 export const venues = [ - { id: 'lining', name: '李宁迪拓运动馆', district: '雨花台', address: '雨花台区示意路 1 号', distance: '1.2km', surface: '室内木地板', price: 80, rating: '4.9', courts: 6, band: 'main', note: '室内木地板 · 配套更衣室', color: 'green', mapX: 55, mapY: 55, features: ['室内木地板', '更衣室', '停车场', '饮水区'] }, - { id: 'olympic', name: '奥体全民健身园', district: '建邺', address: '建邺区示意路 2 号', distance: '3.8km', surface: '户外塑胶', price: 30, rating: '4.7', courts: 4, band: 'budget', note: '户外塑胶 · 配套夜间照明', color: 'mint', mapX: 23, mapY: 39, features: ['户外塑胶', '夜间照明', '公共交通'] }, - { id: 'honey', name: '蜜糖体育中心', district: '雨花台', address: '雨花台区示意路 3 号', distance: '2.5km', surface: '4 人包场', price: 75, rating: '4.8', courts: 4, band: 'main', note: '室内场地 · 配套休息区', color: 'deep', mapX: 72, mapY: 76, features: ['室内场地', '更衣室', '休息区'] }, - { id: 'sky', name: '金鹰 51FLOOR 空中馆', district: '建邺', address: '建邺区示意路 4 号', distance: '4.2km', surface: '云端景观', price: 129, rating: '5.0', courts: 11, band: 'premium', note: '室内场地 · 配套淋浴', color: 'gold', mapX: 38, mapY: 21, features: ['室内场地', '淋浴', '休息区', '停车场'] } + { id: 'lining', name: '李宁迪拓运动馆', district: '雨花台', address: '雨花台区示意路 1 号', distance: '1.2km', surface: '室内木地板', price: 80, rating: '4.9', courts: 6, band: 'main', note: '室内木地板 · 配套更衣室', color: 'green', image: '/static/visuals/indoor-court.jpg', mapX: 55, mapY: 55, features: ['室内木地板', '更衣室', '停车场', '饮水区'] }, + { id: 'olympic', name: '奥体全民健身园', district: '建邺', address: '建邺区示意路 2 号', distance: '3.8km', surface: '户外塑胶', price: 30, rating: '4.7', courts: 4, band: 'budget', note: '户外塑胶 · 配套夜间照明', color: 'mint', image: '/static/visuals/outdoor-court.jpg', mapX: 23, mapY: 39, features: ['户外塑胶', '夜间照明', '公共交通'] }, + { id: 'honey', name: '蜜糖体育中心', district: '雨花台', address: '雨花台区示意路 3 号', distance: '2.5km', surface: '4 人包场', price: 75, rating: '4.8', courts: 4, band: 'main', note: '室内场地 · 配套休息区', color: 'deep', image: '/static/visuals/indoor-court.jpg', mapX: 72, mapY: 76, features: ['室内场地', '更衣室', '休息区'] }, + { id: 'sky', name: '金鹰 51FLOOR 空中馆', district: '建邺', address: '建邺区示意路 4 号', distance: '4.2km', surface: '云端景观', price: 129, rating: '5.0', courts: 11, band: 'premium', note: '室内场地 · 配套淋浴', color: 'gold', image: '/static/visuals/indoor-court.jpg', mapX: 38, mapY: 21, features: ['室内场地', '淋浴', '休息区', '停车场'] } ]; // 根据指定的演示时间生成客户端当地日期。 diff --git a/src/mock/shop.js b/src/mock/shop.js index 7203839..70fb2ba 100644 --- a/src/mock/shop.js +++ b/src/mock/shop.js @@ -1,6 +1,6 @@ // 商品数据来自演示配置,真实项目可替换为小程序商城或一件代发服务的接口。 export const shopProducts = [ - { id: 'starter-kit', name: '新球友入门礼包', category: 'all', tag: '官方补贴', price: 9.9, originalPrice: 29.9, stock: 99, sales: '已售 2,480', color: 'teal', icon: 'P', desc: '木拍 ×1 · 匹克球 ×2 · 护腕 · 入门手册' }, + { id: 'starter-kit', name: '新球友入门礼包', category: 'all', tag: '官方补贴', price: 9.9, originalPrice: 29.9, stock: 99, sales: '已售 2,480', color: 'teal', icon: 'P', image: '/static/visuals/starter-kit.jpg', desc: '木拍 ×1 · 匹克球 ×2 · 护腕 · 入门手册' }, { id: 'indoor-balls', name: '户外专用匹克球 · 40孔 × 3 只装', category: 'ball', tag: '耗材回购', price: 19.9, originalPrice: 35, stock: 35, sales: '已售 1,246', color: 'green', icon: 'O', desc: '耐打耐磨 · 适合日常训练与户外对局' }, { id: 'paddle', name: '玻纤入门拍 · 蓝白 235g', category: 'paddle', tag: '官方补贴', price: 49, originalPrice: 89, stock: 18, sales: '已售 860', color: 'blue', icon: '◐', desc: '轻量玻纤面 · 新手好上手 · 含拍套' }, { id: 'grip', name: '吸汗手胶 3 条装', category: 'accessory', tag: '新 人 专享', price: 12.9, originalPrice: 19.9, stock: 50, sales: '已售 738', color: 'amber', icon: '≈', desc: '防滑吸汗 · 适配主流球拍手柄' }, diff --git a/src/pages/index/index.vue b/src/pages/index/index.vue index a82eb3a..0365779 100644 --- a/src/pages/index/index.vue +++ b/src/pages/index/index.vue @@ -37,10 +37,10 @@ function openTab(url) { uni.switchTab({ url }); } + 赛事报名中 南京站 拍立方杯 CPC 积分赛 分级别公开赛 · 冠军直通年度总决赛 - P @@ -64,8 +64,7 @@ function openTab(url) { uni.switchTab({ url }); } 没有找到符合条件的场地 - {{ venue.courts }} 片⊕ + {{ venue.courts }} 片 · 示意 {{ venue.name }} {{ venue.district }} ⌖ {{ venue.distance }} · {{ venue.surface }} @@ -131,7 +130,14 @@ function openTab(url) { uni.switchTab({ url }); } padding: 29rpx; border-radius: 18rpx; color: #fff; - background: linear-gradient(120deg, #216c37, #4cae5d); + background: #075059; +} + +.event-image { + position: absolute; + inset: 0; + width: 100%; + height: 100%; } .event-top { @@ -164,16 +170,6 @@ function openTab(url) { uni.switchTab({ url }); } margin-top: 12rpx; } -.event-mark { - position: absolute; - right: -18rpx; - bottom: -70rpx; - font-weight: 900; - font-size: 300rpx; - line-height: 1; - color: rgba(255, 255, 255, .12); -} - .quick-grid { display: flex; justify-content: space-around; @@ -227,6 +223,7 @@ function openTab(url) { uni.switchTab({ url }); } .venue-art { position: relative; width: 152rpx; + height: 148rpx; flex: none; border-radius: 13rpx; display: flex; @@ -235,6 +232,12 @@ function openTab(url) { uni.switchTab({ url }); } color: #fff; } +.venue-art image { + width: 100%; + height: 100%; + border-radius: inherit; +} + .venue-art.green { background: #55aa5d; } @@ -261,11 +264,6 @@ function openTab(url) { uni.switchTab({ url }); } font-size: 19rpx; } -.court-symbol { - font-size: 69rpx; - font-weight: 200; -} - .venue-main { flex: 1; min-width: 0; diff --git a/src/pages/shop/shop.vue b/src/pages/shop/shop.vue index 5576038..e992b61 100644 --- a/src/pages/shop/shop.vue +++ b/src/pages/shop/shop.vue @@ -101,8 +101,8 @@ function openOrders() { uni.navigateTo({ url: '/pages/shop/orders' }); } - {{ product.tag }}{{ product.icon }} + {{ product.tag }}{{ product.icon }} {{ product.name }} {{ product.desc }} @@ -119,7 +119,7 @@ function openOrders() { uni.navigateTo({ url: '/pages/shop/orders' }); } 商品详情× - {{ selectedProduct.icon }} + {{ selectedProduct.icon }} {{ selectedProduct.name }} ¥{{ selectedProduct.price }} ¥{{ selectedProduct.originalPrice }} 库存 {{ selectedProduct.stock }} · {{ selectedProduct.tag }} @@ -133,7 +133,7 @@ function openOrders() { uni.navigateTo({ url: '/pages/shop/orders' }); } 购物车还是空的 - {{ line.product.icon }} + {{ line.product.icon }} {{ line.product.name }} ¥{{ line.product.price }} @@ -373,6 +373,18 @@ function openOrders() { uni.navigateTo({ url: '/pages/shop/orders' }); } color: rgba(255, 255, 255, .9); } +.product-art image, +.detail-art image, +.cart-thumb image { + width: 100%; + height: 100%; +} + +.product-art image { + position: absolute; + inset: 0; +} + .product-art.teal, .cart-thumb.teal, .detail-art.teal { background: #49b3ad; } @@ -532,6 +544,7 @@ function openOrders() { uni.navigateTo({ url: '/pages/shop/orders' }); } border-radius: 12rpx; color: #fff; font-size: 43rpx; + overflow: hidden; } .cart-main { @@ -607,6 +620,7 @@ function openOrders() { uni.navigateTo({ url: '/pages/shop/orders' }); } justify-content: center; border-radius: 18rpx; color: rgba(255, 255, 255, .9); + overflow: hidden; } .detail-art text { diff --git a/src/static/visuals/indoor-court.jpg b/src/static/visuals/indoor-court.jpg new file mode 100644 index 0000000..2c9ce47 Binary files /dev/null and b/src/static/visuals/indoor-court.jpg differ diff --git a/src/static/visuals/outdoor-court.jpg b/src/static/visuals/outdoor-court.jpg new file mode 100644 index 0000000..fb1b3f3 Binary files /dev/null and b/src/static/visuals/outdoor-court.jpg differ diff --git a/src/static/visuals/starter-kit.jpg b/src/static/visuals/starter-kit.jpg new file mode 100644 index 0000000..953dd4b Binary files /dev/null and b/src/static/visuals/starter-kit.jpg differ diff --git a/src/static/visuals/tournament.jpg b/src/static/visuals/tournament.jpg new file mode 100644 index 0000000..dd66bc7 Binary files /dev/null and b/src/static/visuals/tournament.jpg differ diff --git a/src/subpackages/venue/detail.vue b/src/subpackages/venue/detail.vue index 67341fb..9486341 100644 --- a/src/subpackages/venue/detail.vue +++ b/src/subpackages/venue/detail.vue @@ -47,9 +47,7 @@ function startMatch() {