From b3cd7aff280e982322ab24304448fc817016f66e Mon Sep 17 00:00:00 2001 From: zzp <34701892@qq.com> Date: Sun, 17 Aug 2025 11:08:27 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat(login):=20=E6=B7=BB=E5=8A=A0=E8=BF=B7?= =?UTF-8?q?=E4=BD=A0=E7=99=BB=E5=BD=95=E9=A1=B5=E9=9D=A2=E5=B9=B6=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E7=9B=B8=E5=85=B3=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增迷你登录页面 indexMini.vue - 更新 Tabbar.vue 组件样式和图片路径 - 修改 mineMini.vue 组件跳转逻辑至迷你登录页 --- src/components/mineMini.vue | 80 ++++++++++------ src/components/mini/Tabbar.vue | 127 ++++++++++++++------------ src/pages.json | 3 + src/pages/login/indexMini.vue | 162 +++++++++++++++++++++++++++++++++ 4 files changed, 290 insertions(+), 82 deletions(-) create mode 100644 src/pages/login/indexMini.vue diff --git a/src/components/mineMini.vue b/src/components/mineMini.vue index 6a42030..972c274 100644 --- a/src/components/mineMini.vue +++ b/src/components/mineMini.vue @@ -3,12 +3,13 @@ - + {{ - !isLoginStatus - ? "未登录用户" - : maskPhoneNumber() + !isLoginStatus ? "未登录用户" : maskPhoneNumber() }} - + }" + @click="handleClick(-1)" + > - + }" + @click="handleClick(0)" + > - + }" + @click="handleClick(1)" + > - + }" + @click="handleClick(2)" + > @@ -103,26 +131,23 @@ const isLoginStatus = ref(false); const LoginShow = ref(false); onMounted(() => { - console.log("🚀 ~ uni.getStorageSync('token'):", uni.getStorageSync('token')) + console.log("🚀 ~ uni.getStorageSync('token'):", uni.getStorageSync("token")); - if (uni.getStorageSync('token')) { + if (uni.getStorageSync("token")) { isLoginStatus.value = true; } }); // 将手机号的中间四位用 * 代替 const maskPhoneNumber = (phoneNumber: string) => { - if (!phoneNumber && uni.getStorageSync('userPhone')) { - phoneNumber = uni.getStorageSync('userPhone') + if (!phoneNumber && uni.getStorageSync("userPhone")) { + phoneNumber = uni.getStorageSync("userPhone"); } if (phoneNumber) { return phoneNumber.replace(/(\d{3})\d{4}(\d{4})/, "$1****$2"); - } else { return "未登录用户"; - } - }; // 关闭弹框 @@ -146,7 +171,10 @@ const loginBtnStatus = () => { // 登录状态,点击就是退出登录 loginOut(); } else { - LoginShow.value = true; + // LoginShow.value = true; + uni.navigateTo({ + url: "/pages/login/indexMini", + }); } }; diff --git a/src/components/mini/Tabbar.vue b/src/components/mini/Tabbar.vue index 64d517e..dddeceb 100644 --- a/src/components/mini/Tabbar.vue +++ b/src/components/mini/Tabbar.vue @@ -1,25 +1,41 @@ diff --git a/src/pages.json b/src/pages.json index e155aeb..e92d312 100644 --- a/src/pages.json +++ b/src/pages.json @@ -22,6 +22,9 @@ { "path": "pages/login/index" }, + { + "path": "pages/login/indexMini" + }, { "path": "pages/realtimeInfo/rankDetail" }, diff --git a/src/pages/login/indexMini.vue b/src/pages/login/indexMini.vue new file mode 100644 index 0000000..4f7dca0 --- /dev/null +++ b/src/pages/login/indexMini.vue @@ -0,0 +1,162 @@ + + + + + From 13e67b8aa9a5881e40d076d97c3ff66087875f15 Mon Sep 17 00:00:00 2001 From: zzp <34701892@qq.com> Date: Sun, 17 Aug 2025 17:09:04 +0800 Subject: [PATCH 2/3] =?UTF-8?q?feat(login):=20=E6=B7=BB=E5=8A=A0=E9=9A=90?= =?UTF-8?q?=E7=A7=81=E6=94=BF=E7=AD=96=E7=82=B9=E5=87=BB=E4=BA=8B=E4=BB=B6?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit refactor: 移除mock数据引用并优化代码格式 style: 统一代码缩进和换行格式 --- src/components/article/index.vue | 10 ++++-- src/components/article/indexNewsInfo.vue | 42 ++++++++++++++++-------- src/pages/login/indexMini.vue | 10 +++++- src/pages/news/index.vue | 27 +++++++++++---- 4 files changed, 65 insertions(+), 24 deletions(-) diff --git a/src/components/article/index.vue b/src/components/article/index.vue index 980587c..20c6199 100644 --- a/src/components/article/index.vue +++ b/src/components/article/index.vue @@ -24,7 +24,11 @@ - + @@ -38,12 +42,12 @@ import { onShareAppMessage, onShareTimeline, } from "@dcloudio/uni-app"; -import articleMock from "@/mock/article.js"; +// import articleMock from "@/mock/article.js"; const props = defineProps({ data: { type: Object, - default: () => { }, + default: () => {}, }, }); diff --git a/src/components/article/indexNewsInfo.vue b/src/components/article/indexNewsInfo.vue index 1b68820..3e41c80 100644 --- a/src/components/article/indexNewsInfo.vue +++ b/src/components/article/indexNewsInfo.vue @@ -16,17 +16,31 @@ - + - {{ item }} + {{ item }} - + - {{ item }} + {{ item }} @@ -42,15 +56,17 @@ - - + - - + @@ -32,7 +41,12 @@ - + @@ -44,7 +58,7 @@ import { onLoad, onShow } from "@dcloudio/uni-app"; import List from "@/components/articleList/index.vue"; import Pay from "@/components/pay/index.vue"; import articleListMock from "@/mock/articleList.js"; -import { newsList } from "@/mock/list.js"; +// import { newsList } from "@/mock/list.js"; const articleList = ref([...articleListMock]); @@ -88,8 +102,7 @@ function back() { }); } -onShow(() => { -}); +onShow(() => {}); function handleSubListItem(id: any) { uni.setStorageSync("newsItem", id); From b3038281649556db3e6ac233e99a88aec5368f3b Mon Sep 17 00:00:00 2001 From: zzp <34701892@qq.com> Date: Sun, 17 Aug 2025 17:26:24 +0800 Subject: [PATCH 3/3] =?UTF-8?q?feat(login):=20=E6=B7=BB=E5=8A=A0=E5=BE=AE?= =?UTF-8?q?=E4=BF=A1=E6=8E=88=E6=9D=83=E7=99=BB=E5=BD=95=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增微信授权API接口 - 替换立即进入按钮为微信获取手机号按钮 - 实现微信授权登录流程,包括获取code和用户信息 - 处理授权成功后的token和用户信息存储 --- src/api/index.ts | 5 +++ src/pages/login/indexMini.vue | 64 ++++++++++++++++++++++++++++++++++- 2 files changed, 68 insertions(+), 1 deletion(-) diff --git a/src/api/index.ts b/src/api/index.ts index 0e466a5..ccf3ca3 100644 --- a/src/api/index.ts +++ b/src/api/index.ts @@ -62,3 +62,8 @@ export const searchNews = (data: any) => { return Request.post("/news/search", data); }; +// 微信授权 +export const doWxAuth = (data: any) => { + return Request.post("/common/auth", data); +}; + diff --git a/src/pages/login/indexMini.vue b/src/pages/login/indexMini.vue index 1de62d0..8ba0623 100644 --- a/src/pages/login/indexMini.vue +++ b/src/pages/login/indexMini.vue @@ -5,7 +5,18 @@ - 立即进入 + + + + @@ -28,6 +39,7 @@ import { onShareTimeline, onUnload, } from "@dcloudio/uni-app"; +import { doWxAuth } from "@/api/index"; import { onPullDownRefresh, onReachBottom } from "@dcloudio/uni-app"; import { useShareStore } from "@/stores/shareStore"; @@ -52,6 +64,56 @@ function goIndex() { }); } +// 微信获取手机号 +function getPhoneNumber(phoneObj) { + uni.showLoading(); + getWxCode(phoneObj.detail); +} +const codeWx = ref(); +function getWxCode(phoneObj) { + console.log("🚀 ~ getWxCode ~ phoneObj:", phoneObj); + uni.login({ + success: (res) => { + console.log("🚀 ~ getWxCode ~ res:", res); + if (res.code) { + //微信登录成功 已拿到code + codeWx.value = res.code; + + doWxAuthFn(phoneObj, res.code); + } else { + console.log("登录失败!" + res.errMsg); + } + }, + }); +} + +/** + * 微信授权 + * @param userInfo + */ +async function doWxAuthFn(phoneObj, jsCode) { + let { code, data } = await doWxAuth({ + jsCode: jsCode, + encryptedData: phoneObj.encryptedData, + siv: phoneObj.iv, + }); + uni.hideLoading(); + if (code == 200) { + uni.setStorageSync("token", data.token); + uni.setStorageSync("userId", data.userId); + // #ifdef MP-WEIXIN + uni.setStorageSync("unionId", data.unionId); + // #endif + // #ifdef MP-ALIPAY + uni.setStorageSync("openId", data.openId); + // #endif + + emit("authFinish", true); + } else { + emit("authFinish", false); + } +} + onShareAppMessage((res) => { return {}; });