From 539af26541be7d6434cfa5b1de3bd88873bb123d Mon Sep 17 00:00:00 2001 From: sjeam <359824901@qq.com> Date: Mon, 8 Sep 2025 11:40:28 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- src/App.vue | 24 +++++++- src/pages/about/index.vue | 13 +---- src/pages/index/detail.vue | 36 ++++++------ src/pages/index/index.vue | 27 +++------ src/pages/login/login.vue | 6 +- src/pages/my/components/wx-login.vue | 70 +++------------------- src/pages/my/uploadProduct.vue | 7 +++ src/store/user.ts | 5 ++ src/utils/http.ts | 7 ++- src/utils/index.ts | 87 ++++++++++++++++++---------- 11 files changed, 141 insertions(+), 143 deletions(-) diff --git a/package.json b/package.json index ab121c3..820e52e 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "type": "commonjs", "version": "3.0.0", "description": "unibest - 最好的 uniapp 开发模板", - "update-time": "2025-08-27", + "update-time": "2025-09-08", "author": { "name": "feige996", "zhName": "菲鸽", diff --git a/src/App.vue b/src/App.vue index fc282a1..fec96c8 100644 --- a/src/App.vue +++ b/src/App.vue @@ -2,13 +2,33 @@ import { onHide, onLaunch, onShow } from '@dcloudio/uni-app' import { usePageAuth } from '@/hooks/usePageAuth' import 'abortcontroller-polyfill/dist/abortcontroller-polyfill-only' - +import { useUserStore } from '@/store' +import { getInfoAPI } from '@/service/crmeb/product.ts' usePageAuth() onLaunch(() => { + // 在main.js或App.vue中 + // uni.addInterceptor('switchTab', { + // async invoke(args) { + // console.log('拦截到tab切换', args.url) + // // await useUserStore().getUserInfo + // const res = await getInfoAPI() + // }, + // fail(err) { + // console.error(err) + // }, + // }) + console.log('App Launch') }) -onShow(() => { +onShow(async () => { + // const res = await getInfoAPI() + // if (!uni.getStorageSync('token')) { + // uni.redirectTo({ url: '/pages/login/login' }); + // } else { + // this.fetchData(); // 发起请求 + // } + console.log('App Show') }) onHide(() => { diff --git a/src/pages/about/index.vue b/src/pages/about/index.vue index a787abb..dd3bd24 100644 --- a/src/pages/about/index.vue +++ b/src/pages/about/index.vue @@ -15,7 +15,7 @@ - + - + @@ -157,15 +157,6 @@ export default defineComponent({ goPage(item) { getUrl('/pages/about/detail?id=' + item.id) }, - - more(item) { - console.log(item) - if (item.type == 1) { - getUrl(item.url) - } else if (item.type == 2) { - getWebUrl(item.url) - } - }, }, }) diff --git a/src/pages/index/detail.vue b/src/pages/index/detail.vue index 72572d8..3af7fe4 100644 --- a/src/pages/index/detail.vue +++ b/src/pages/index/detail.vue @@ -164,24 +164,26 @@ export default defineComponent({ // }) // url: '/pages/columnGoods/goods_list/index?id=38&title=名优特产', - more(item) { - this.islogin = hasLogin() - if (this.islogin === false) { - uni.navigateTo({ - url: '/pages/login/login', - }) - return - } - if (this.islogin === true) { - // console.log(item) - if (item.type == 1) { - getUrl(item.url) - } else if (item.type == 2) { - getWebUrl(item.url) - } else if (item.type == 3) { - getShopWebUrl(item.url) - } + async more(item) { + await hasLogin() + + // this.islogin = hasLogin() + // if (this.islogin === false) { + // uni.navigateTo({ + // url: '/pages/login/login', + // }) + // return + // } + // if (this.islogin === true) { + // console.log(item) + if (item.type == 1) { + getUrl(item.url) + } else if (item.type == 2) { + getWebUrl(item.url) + } else if (item.type == 3) { + getShopWebUrl(item.url) } + // } }, }, }) diff --git a/src/pages/index/index.vue b/src/pages/index/index.vue index 4e88d7a..db706e5 100644 --- a/src/pages/index/index.vue +++ b/src/pages/index/index.vue @@ -526,25 +526,16 @@ export default defineComponent({ url: '/pages/about/index?category_id=' + index, }) }, - more(item) { - // const islogin = hasLogin() - const islogin = true - if (islogin === false) { - uni.navigateTo({ - url: '/pages/login/login', - }) - return - } - if (islogin === true) { - // console.log(item) - if (item.type == 1) { - getUrl(item.url) - } else if (item.type == 2) { - getWebUrl(item.url) - } else if (item.type == 3) { - getShopWebUrl(item.url) - } + async more(item) { + await hasLogin() + if (item.type == 1) { + getUrl(item.url) + } else if (item.type == 2) { + getWebUrl(item.url) + } else if (item.type == 3) { + getShopWebUrl(item.url) } + // } }, }, }) diff --git a/src/pages/login/login.vue b/src/pages/login/login.vue index 30bfbf0..7828de1 100644 --- a/src/pages/login/login.vue +++ b/src/pages/login/login.vue @@ -21,7 +21,11 @@ onMounted(() => { }) const userStore = useUserStore() - +function onClose() { + uni.navigateBack({ + delta: 1, + }) +} async function decryptPhoneNumber(e) { if (!e.detail.iv) { toast.error('取消登录') diff --git a/src/pages/my/components/wx-login.vue b/src/pages/my/components/wx-login.vue index 02e5f88..57ad108 100644 --- a/src/pages/my/components/wx-login.vue +++ b/src/pages/my/components/wx-login.vue @@ -129,67 +129,15 @@ const userStore = useUserStore() console.log('userStore', userStore) import { defineComponent } from 'vue' -// export default defineComponent({ -// data() { -// return { -// isLogin: false, -// userIsLogin: false, -// show: false, -// userStore: {}, -// } -// }, -// onLoad(option) { -// this.userStore = useUserStore() -// this.userIsLogin = useUserStore().userInfo.id ? true : false -// console.log('获取用户信息', this.userIsLogin) -// console.log('获取用户信息', this.userStore.userInfo) -// }, -// methods: { -// toLogin() { -// uni.navigateTo({ -// url: '/pages/login/login', -// }) -// }, -// more(item) { -// this.islogin = hasLogin() -// if (this.islogin === false) { -// uni.navigateTo({ -// url: '/pages/login/login', -// }) -// return -// } -// if (this.islogin === true) { -// // console.log(item) -// if (item.type == 1) { -// getUrl(item.url) -// } else if (item.type == 2) { -// getWebUrl(item.url) -// } else if (item.type == 3) { -// getShopWebUrl(item.url) -// } -// } -// }, -// }, -// }) -function more(item) { - const islogin = hasLogin() - // const islogin = true - if (islogin === false) { - uni.navigateTo({ - url: '/pages/login/login', - }) - return - } - - if (islogin === true) { - // console.log(item) - if (item.type == 1) { - getUrl(item.url) - } else if (item.type == 2) { - getWebUrl(item.url) - } else if (item.type == 3) { - getShopWebUrl(item.url) - } +async function more(item) { + await hasLogin() + // console.log(item) + if (item.type == 1) { + getUrl(item.url) + } else if (item.type == 2) { + getWebUrl(item.url) + } else if (item.type == 3) { + getShopWebUrl(item.url) } } const show = ref(false) diff --git a/src/pages/my/uploadProduct.vue b/src/pages/my/uploadProduct.vue index 5817a30..7281b7e 100644 --- a/src/pages/my/uploadProduct.vue +++ b/src/pages/my/uploadProduct.vue @@ -22,8 +22,12 @@ const formData = reactive({ user_id: '', }) +const address = ref('') + function getUserInfo() { userInfoApi().then((res) => { + address.value = '审核通过后商品会自动上架到(' + res.data.village_name + ')' + if (res.data.group_id == 2) { isManager.value = true userListApi({ code: res.data.village }).then((res) => { @@ -147,6 +151,9 @@ getUserInfo() @success="uploadSuccess" /> + + + diff --git a/src/store/user.ts b/src/store/user.ts index d01fb69..c5449a8 100644 --- a/src/store/user.ts +++ b/src/store/user.ts @@ -59,6 +59,11 @@ export const useUserStore = defineStore( const getUserInfo = async () => { const res = await _getUserInfo() const user = res.data + if (res.code === 401) { + toast.error('登录已过期,请重新登录') + _logout() + removeUserInfo() + } const newData = userInfo.value newData.isset = !!user.village newData.avatar = user.avatar diff --git a/src/utils/http.ts b/src/utils/http.ts index a27bc28..02d3f52 100644 --- a/src/utils/http.ts +++ b/src/utils/http.ts @@ -1,5 +1,5 @@ import type { CustomRequestOptions } from '@/interceptors/request' - +import { useUserStore } from '@/store' export function http(options: CustomRequestOptions) { // 1. 返回 Promise 对象 return new Promise>((resolve, reject) => { @@ -10,14 +10,15 @@ export function http(options: CustomRequestOptions) { responseType: 'json', // #endif // 响应成功 - success(res) { + async success(res) { // 状态码 2xx,参考 axios 的设计 if (res.statusCode >= 200 && res.statusCode < 300) { // 2.1 提取核心数据 res.data resolve(res.data as IResData) } else if (res.statusCode === 401) { // 401错误 -> 清理用户信息,跳转到登录页 - // userStore.clearUserInfo() + const userStore = useUserStore() + await userStore.logout() uni.showToast({ icon: 'none', title: (res.data as IResData).msg || '请登录', diff --git a/src/utils/index.ts b/src/utils/index.ts index a0df51d..68b7a6c 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -1,6 +1,7 @@ import { pages, subPackages } from '@/pages.json' import { isMpWeixin } from './platform' - +import { getInfoAPI } from '@/service/crmeb/product.ts' +import { http } from '@/utils/http' export function getLastPage() { // getCurrentPages() 至少有1个元素,所以不再额外判断 // const lastPage = getCurrentPages().at(-1) @@ -219,33 +220,61 @@ export function getShopWebUrl(url) { import { useUserStore } from '@/store' // const userStore = useUserStore() // 代登录跳转 -export function hasLogin() { - const hasLogin = useUserStore().userInfo.id ? true : false - // console.log(useUserStore().userInfo) - // console.log('是否登录', hasLogin) - // console.log('是否登录sss', useUserStore().userInfo) - //强制跳转设置村庄 - if (hasLogin && !useUserStore().userInfo.isset) { - // if (!this.phone) { - // uni.showToast({ - // title: '请填写手机号', - // icon: 'none', - // }) - // return - // } - uni.showModal({ - title: '温馨提示', - content: ' 您尚未完善个人信息,是否前往设置你的个人地址?', - success: function (res) { - if (res.confirm) { - uni.navigateTo({ - url: '/pages/my/setting?type=1', - }) - } - }, - }) - return +export async function hasLogin() { + const res = await getInfoAPI() + // const res = await http.get('/api/user/info', {}) + console.log('hasLogin', res) + if (res.code === 401) { + const hasLogin = false + //强制跳转设置村庄 + if (hasLogin && !useUserStore().userInfo.isset) { + // if (!this.phone) { + // uni.showToast({ + // title: '请填写手机号', + // icon: 'none', + // }) + // return + // } + uni.showModal({ + title: '温馨提示', + content: ' 您尚未完善个人信息,是否前往设置你的个人地址?', + success: function (res) { + if (res.confirm) { + uni.navigateTo({ + url: '/pages/my/setting?type=1', + }) + } + }, + }) + return + } + //返回是否登录 + return hasLogin + } else { + const hasLogin = true + //强制跳转设置村庄 + if (hasLogin && !useUserStore().userInfo.isset) { + // if (!this.phone) { + // uni.showToast({ + // title: '请填写手机号', + // icon: 'none', + // }) + // return + // } + uni.showModal({ + title: '温馨提示', + content: ' 您尚未完善个人信息,是否前往设置你的个人地址?', + success: function (res) { + if (res.confirm) { + uni.navigateTo({ + url: '/pages/my/setting?type=1', + }) + } + }, + }) + return + } + //返回是否登录 + return hasLogin } - //返回是否登录 - return hasLogin }