From 69aa02da782d634c4a4ca8164b71b04ba7d177a5 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 30 May 2024 01:20:31 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=8F=90=E7=8E=B0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages.json | 14 + pages/index/login.vue | 287 +++++---- pages/user/wallet/money.vue | 492 ++++++--------- peach/api/pay/wallet.js | 7 + peach/components/p-empty/p-empty.vue | 130 ++-- peach/store/user.js | 221 +++---- peach/ui/pb-inner-navbar/pb-inner-navbar.vue | 599 ++++++++++--------- peach/ui/pb-layout/pb-layout.vue | 299 +++++---- static/data-empty.png | Bin 0 -> 5053 bytes 9 files changed, 981 insertions(+), 1068 deletions(-) create mode 100644 peach/api/pay/wallet.js create mode 100644 static/data-empty.png diff --git a/pages.json b/pages.json index 2350076..316737f 100644 --- a/pages.json +++ b/pages.json @@ -101,6 +101,20 @@ } } ] + }, + { + "root": "pages/user", + "pages": [ + { + "path": "wallet/money", + "style": { + "navigationBarTitleText": "余额" + }, + "meta": { + "auth": false + } + } + ] } ], "tabBar": { diff --git a/pages/index/login.vue b/pages/index/login.vue index 31525cf..47e169d 100644 --- a/pages/index/login.vue +++ b/pages/index/login.vue @@ -1,60 +1,39 @@ diff --git a/pages/user/wallet/money.vue b/pages/user/wallet/money.vue index 5c4e324..80d561e 100644 --- a/pages/user/wallet/money.vue +++ b/pages/user/wallet/money.vue @@ -1,71 +1,48 @@ - diff --git a/peach/api/pay/wallet.js b/peach/api/pay/wallet.js new file mode 100644 index 0000000..92843c0 --- /dev/null +++ b/peach/api/pay/wallet.js @@ -0,0 +1,7 @@ +import request from "@/peach/request"; + +const PayWalletApi = { + getWalletTransactionPage: () => {}, +}; + +export default PayWalletApi; diff --git a/peach/components/p-empty/p-empty.vue b/peach/components/p-empty/p-empty.vue index 0a0b66d..b0b4dd2 100644 --- a/peach/components/p-empty/p-empty.vue +++ b/peach/components/p-empty/p-empty.vue @@ -1,87 +1,99 @@ diff --git a/peach/store/user.js b/peach/store/user.js index 37913bc..065d97a 100644 --- a/peach/store/user.js +++ b/peach/store/user.js @@ -1,124 +1,125 @@ -import { ref } from 'vue' -import { defineStore } from 'pinia' -import $share from '@/peach/platform/share' -import $router from '@/peach/router' -import UserUtil from '@/peach/api/member/user' -import { isEmpty, cloneDeep, clone } from 'lodash' +import { ref } from "vue"; +import { defineStore } from "pinia"; +import $share from "@/peach/platform/share"; +import $router from "@/peach/router"; +import UserUtil from "@/peach/api/member/user"; +import { isEmpty, cloneDeep, clone } from "lodash"; // 默认用户信息 const defaultUserInfo = { - avatar: '', // 头像 - nickname: '', // 昵称 - mobile: '', // 手机号 - point: 0, // 积分 - particulars: null, -} + avatar: "", // 头像 + nickname: "", // 昵称 + mobile: "", // 手机号 + point: 0, // 积分 + particulars: null, +}; // 默认钱包信息 const defaultWallet = { - balance: 0, // 余额 - totalExpense: 0, // 总消费 - totalRecharge: 0, // 总充值 -} + balance: 0, // 余额 + totalExpense: 0, // 总消费 + totalRecharge: 0, // 总充值 +}; // 默认订单信息 const defaultNumData = { - unusedCouponCount: 0, - orderCount: { - allCount: 0, - unpaidCount: 0, - undeliveredCount: 0, - deliveredCount: 0, - uncommentedCount: 0, - afterSaleCount: 0, - }, -} + unusedCouponCount: 0, + orderCount: { + allCount: 0, + unpaidCount: 0, + undeliveredCount: 0, + deliveredCount: 0, + uncommentedCount: 0, + afterSaleCount: 0, + }, +}; const useUserStore = defineStore( - 'user', - () => { - const userInfo = ref(cloneDeep(defaultUserInfo)) - const userWallet = ref(clone(defaultWallet)) - const userNumData = ref(cloneDeep(defaultNumData)) - const isLogin = ref(!!uni.getStorageSync('token')) - const lastUpdateTime = ref(0) - const lastRoutePage = ref(null) + "user", + () => { + const userInfo = ref(cloneDeep(defaultUserInfo)); + const userWallet = ref(clone(defaultWallet)); + const userNumData = ref(cloneDeep(defaultNumData)); + const isLogin = ref(!!uni.getStorageSync("token")); + const lastUpdateTime = ref(0); + const lastRoutePage = ref(null); - async function getUserInfo() { - let res = await UserUtil.getUserInfo() - userInfo.value = res.data - } - - async function getWallet() { - let res = await UserUtil.getWalletInfo() - userWallet.value = res.data - } - - function getNumData() {} - - function setToken(token, refreshToken) { - if (token === '') { - isLogin.value = false - uni.removeStorageSync('token') - uni.removeStorageSync('refresh-token') - } else { - isLogin.value = true - uni.setStorageSync('token', token) - uni.setStorageSync('refresh-token', refreshToken) - // 成功后处理 - loginAfter() - } - return isLogin.value - } - - function resetUserData() { - setToken('') - userInfo.value = cloneDeep(defaultUserInfo) - userWallet.value = clone(defaultWallet) - userNumData.value = cloneDeep(defaultNumData) - } - - async function updateUserData() { - const nowTime = new Date().getTime() - if (lastUpdateTime.value + 5000 > nowTime) { - return - } - lastUpdateTime.value = nowTime - await Promise.all([getUserInfo(), getWallet(), getNumData()]) - return userInfo.value - } - - async function loginAfter() { - await updateUserData() - $share.getShareInfo() - $router.go('/pages/index/index') - } - - function logOut() { - resetUserData() - return !isLogin.value - } - - return { - userInfo, - userWallet, - isLogin, - setToken, - logOut, - loginAfter, - lastRoutePage, - } - }, - { - persist: { - enabled: true, - strategies: [ - { - key: 'user-store', - }, - ], - }, + async function getUserInfo() { + let res = await UserUtil.getUserInfo(); + userInfo.value = res.data; } -) -export default useUserStore + async function getWallet() { + let res = await UserUtil.getWalletInfo(); + userWallet.value = res.data; + } + + function getNumData() {} + + function setToken(token, refreshToken) { + if (token === "") { + isLogin.value = false; + uni.removeStorageSync("token"); + uni.removeStorageSync("refresh-token"); + } else { + isLogin.value = true; + uni.setStorageSync("token", token); + uni.setStorageSync("refresh-token", refreshToken); + // 成功后处理 + loginAfter(); + } + return isLogin.value; + } + + function resetUserData() { + setToken(""); + userInfo.value = cloneDeep(defaultUserInfo); + userWallet.value = clone(defaultWallet); + userNumData.value = cloneDeep(defaultNumData); + } + + async function updateUserData() { + const nowTime = new Date().getTime(); + if (lastUpdateTime.value + 5000 > nowTime) { + return; + } + lastUpdateTime.value = nowTime; + await Promise.all([getUserInfo(), getWallet(), getNumData()]); + return userInfo.value; + } + + async function loginAfter() { + await updateUserData(); + $share.getShareInfo(); + $router.go("/pages/index/index"); + } + + function logOut() { + resetUserData(); + return !isLogin.value; + } + + return { + userInfo, + userWallet, + isLogin, + lastRoutePage, + setToken, + logOut, + loginAfter, + getWallet, + }; + }, + { + persist: { + enabled: true, + strategies: [ + { + key: "user-store", + }, + ], + }, + } +); + +export default useUserStore; diff --git a/peach/ui/pb-inner-navbar/pb-inner-navbar.vue b/peach/ui/pb-inner-navbar/pb-inner-navbar.vue index 78fb0dc..81fa822 100644 --- a/peach/ui/pb-inner-navbar/pb-inner-navbar.vue +++ b/peach/ui/pb-inner-navbar/pb-inner-navbar.vue @@ -1,43 +1,30 @@ diff --git a/peach/ui/pb-layout/pb-layout.vue b/peach/ui/pb-layout/pb-layout.vue index a9743cb..5de598f 100644 --- a/peach/ui/pb-layout/pb-layout.vue +++ b/peach/ui/pb-layout/pb-layout.vue @@ -1,40 +1,31 @@ diff --git a/static/data-empty.png b/static/data-empty.png new file mode 100644 index 0000000000000000000000000000000000000000..a682ff73f0547c497ca1d766c39a514872063508 GIT binary patch literal 5053 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 Wu;Hoc{`Y%=!P3;uq}j+j_5T2+^XVf1 literal 0 HcmV?d00001