diff --git a/api/pay.js b/api/pay.js new file mode 100644 index 0000000..8634a22 --- /dev/null +++ b/api/pay.js @@ -0,0 +1,9 @@ +import { request } from "@/utils/request.js"; + +export const createOrder = async (data) => { + return request({ + url: "/api/pay/wechat/order/create", + method: "POST", + data, + }); +}; diff --git a/pages.json b/pages.json index ab74f0e..21ad45b 100644 --- a/pages.json +++ b/pages.json @@ -49,6 +49,14 @@ "enablePullDownRefresh": false } }, + { + "path": "pages/mine/vip", + "style": { + "navigationBarTitleText": "会员中心", + "navigationStyle": "custom", + "enablePullDownRefresh": false + } + }, { "path": "pages/mine/mine", "style": { diff --git a/pages/mine/mine.vue b/pages/mine/mine.vue index dfb73ee..0cd6353 100644 --- a/pages/mine/mine.vue +++ b/pages/mine/mine.vue @@ -40,6 +40,26 @@ + + + + + + + + + 祥瑞会员中心 + DIAMOND + + 开通永久会员解锁全部特权 + + + + 立即开通 + + + + 我的创作 @@ -202,6 +222,12 @@ const navTo = (page) => { }); return; } + if (page === "vip") { + uni.navigateTo({ + url: "/pages/mine/vip", + }); + return; + } uni.showToast({ title: "功能开发中", icon: "none" }); }; @@ -325,6 +351,84 @@ const navTo = (page) => { margin-left: 10rpx; } +/* VIP Banner */ +.vip-banner { + background: linear-gradient(135deg, #2e2424 0%, #1a1616 100%); + border-radius: 30rpx; + padding: 30rpx 40rpx; + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 40rpx; + box-shadow: 0 10rpx 30rpx rgba(0, 0, 0, 0.1); +} + +.vip-left { + display: flex; + align-items: center; +} + +.vip-icon-box { + width: 80rpx; + height: 80rpx; + background: #fceea9; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + margin-right: 24rpx; + border: 4rpx solid #bfa46f; +} + +.vip-content { + display: flex; + flex-direction: column; +} + +.vip-title-row { + display: flex; + align-items: center; + margin-bottom: 8rpx; +} + +.vip-title { + font-size: 32rpx; + font-weight: bold; + color: #fceea9; + margin-right: 12rpx; +} + +.diamond-tag { + background: rgba(252, 238, 169, 0.15); + color: #fceea9; + font-size: 18rpx; + padding: 2rpx 8rpx; + border-radius: 6rpx; + border: 1px solid rgba(252, 238, 169, 0.4); +} + +.vip-subtitle { + font-size: 22rpx; + color: rgba(252, 238, 169, 0.6); +} + +.vip-right { + display: flex; + align-items: center; +} + +.open-text { + font-size: 26rpx; + color: #fceea9; + margin-right: 4rpx; + font-weight: 500; +} + +.vip-banner .arrow { + color: #fceea9; + font-size: 32rpx; +} + /* Section Title */ .section-title { font-size: 26rpx; diff --git a/pages/mine/vip.vue b/pages/mine/vip.vue new file mode 100644 index 0000000..cf78d1e --- /dev/null +++ b/pages/mine/vip.vue @@ -0,0 +1,533 @@ + + + + +