From 6006f5cd2845c5cf6021747e18445fe3b7b21fa2 Mon Sep 17 00:00:00 2001 From: hanguangpu01 Date: Mon, 8 Dec 2025 21:17:05 +0800 Subject: [PATCH] =?UTF-8?q?feat(auth):=20=E5=AE=9E=E7=8E=B0=E7=AC=AC?= =?UTF-8?q?=E4=B8=89=E6=96=B9=E7=99=BB=E5=BD=95=E9=9B=86=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 careerfair.vue 中新增 thirdLogin 方法处理单点登录逻辑 - 修改 goDetail 方法,在跳转前执行第三方登录验证 - 在 packageB/train/index.vue 中增加 onLoad 钩子调用 thirdLogin - 修改 jumps 方法,确保页面跳转前完成登录验证 - 在 request.js 中注释掉全局错误提示,避免重复提示 - 优化 videoDetail.vue 中的 getHeart 方法,移除冗余跳转逻辑 - 在 videoList.vue 中新增 playVideo 前的登录校验 - 统一多个页面中的 thirdLogin 实现,确保登录态一致性 --- packageB/train/index.vue | 53 +++++++++++++++++++- packageB/train/video/videoDetail.vue | 28 ++++++----- packageB/train/video/videoList.vue | 52 +++++++++++++++++-- pages/careerfair/careerfair.vue | 75 +++++++++++++++++++++++----- utils/request.js | 8 +-- 5 files changed, 182 insertions(+), 34 deletions(-) diff --git a/packageB/train/index.vue b/packageB/train/index.vue index 4703b17..578970f 100644 --- a/packageB/train/index.vue +++ b/packageB/train/index.vue @@ -58,8 +58,57 @@ const { $api, navTo, vacanciesTo, formatTotal, config } = inject('globalFunction import useUserStore from '@/stores/useUserStore'; import useDictStore from '@/stores/useDictStore'; -function jumps(url){ - navTo(url); +onLoad(() => { + thirdLogin() +}); + +async function jumps(url){ + if(await thirdLogin()){ + navTo(url); + } +} + + +async function thirdLogin(){ + let form={} + if (uni.getStorageSync('userInfo').isCompanyUser=='1') { + form={ + usertype: '1', + idno: uni.getStorageSync('userInfo').idCard, + name: uni.getStorageSync('userInfo').name, + enterprisecode:"", + enterprisename: "", + contactperson: "", + contactphone: "", + } + }else if (uni.getStorageSync('userInfo').isCompanyUser=='0') { + form={ + usertype: "2", + enterprisecode: uni.getStorageSync('userInfo').idCard, + enterprisename: uni.getStorageSync('userInfo').name, + contactperson: "", + contactphone: "", + idno: "", + name: "" + } + }else{ + uni.showToast({ + icon: 'none', + title: '请先登录' + }) + return false; + } + var resLogin = await $api.myRequest('/auth/login2/ks',form,'post',10100); + if (resLogin.code=='200') { + uni.setStorageSync('Padmin-Token', resLogin.data.access_token) + return true; + }else{ + uni.showToast({ + icon: 'none', + title: '单点异常' + }) + return false; + } } diff --git a/packageB/train/video/videoDetail.vue b/packageB/train/video/videoDetail.vue index fea32f3..d17e85c 100644 --- a/packageB/train/video/videoDetail.vue +++ b/packageB/train/video/videoDetail.vue @@ -202,12 +202,10 @@ function getData() { function getHeart() { const raw = uni.getStorageSync("Padmin-Token"); const token = typeof raw === "string" ? raw.trim() : ""; - const headers = token ? { Authorization: raw.startsWith("Bearer ") ? raw : `Bearer ${token}` }: {} + const headers = token ? { Authorization: raw.startsWith("Bearer ") ? raw : `Bearer ${token}` }: {}; $api.myRequest("/dashboard/auth/heart", {}, "POST", 10100, headers).then((resData) => { if (resData.code == 200) { getUserInfo(); - } else { - navTo('/packageB/login') } }); } @@ -218,6 +216,7 @@ function getUserInfo(){ $api.myRequest('/system/user/login/user/info', {},'get',10100,header).then((resData) => { userId.value=resData.info.userId getData() + updateVideoInfo() }); } function getDictionary(){ @@ -277,15 +276,20 @@ function updateVideoInfo(){ 'Authorization':uni.getStorageSync('Padmin-Token'), 'Content-Type': "application/x-www-form-urlencoded" } - if(videoInfo.value.isCollect===null && videoInfo.value.process ===null){ - $api.myRequest('/train/public/videoUser/add', paramsData,'post',9100,header).then((resData) => { - console.log("视频播放时长更新成功") - }); - }else{ - $api.myRequest('/train/public/videoUser/update', paramsData,'post',9100,header).then((resData) => { - console.log("视频播放时长更新成功") - }); - } + + $api.myRequest("/dashboard/auth/heart", {}, "POST", 10100, header).then((resData) => { + if (resData.code == 200) { + if(videoInfo.value.isCollect===null && videoInfo.value.process ===null){ + $api.myRequest('/train/public/videoUser/add', paramsData,'post',9100,header).then((resData) => { + console.log("视频播放时长更新成功") + }); + }else{ + $api.myRequest('/train/public/videoUser/update', paramsData,'post',9100,header).then((resData) => { + console.log("视频播放时长更新成功") + }); + } + } + }) } // 计算并上报停留时长 function reportPageDuration() { diff --git a/packageB/train/video/videoList.vue b/packageB/train/video/videoList.vue index 90996a5..5efd2d0 100644 --- a/packageB/train/video/videoList.vue +++ b/packageB/train/video/videoList.vue @@ -80,7 +80,8 @@ const getItemBackgroundStyle = (imageName) => ({ }); const trainVideoImgUrl=config.trainVideoImgUrl -onLoad(() => { +onLoad(async () => { + await thirdLogin() getDataList('refresh'); }); @@ -135,8 +136,53 @@ function getDataList(type = 'add') { // 播放视频 -function playVideo(video) { - navTo(`/packageB/train/video/videoDetail?id=${video.videoId}`); +async function playVideo(video) { + if(await thirdLogin()){ + navTo(`/packageB/train/video/videoDetail?id=${video.videoId}`); + } +} + + +async function thirdLogin(){ + let form={} + if (uni.getStorageSync('userInfo').isCompanyUser=='1') { + form={ + usertype: '1', + idno: uni.getStorageSync('userInfo').idCard, + name: uni.getStorageSync('userInfo').name, + enterprisecode:"", + enterprisename: "", + contactperson: "", + contactphone: "", + } + }else if (uni.getStorageSync('userInfo').isCompanyUser=='0') { + form={ + usertype: "2", + enterprisecode: uni.getStorageSync('userInfo').idCard, + enterprisename: uni.getStorageSync('userInfo').name, + contactperson: "", + contactphone: "", + idno: "", + name: "" + } + }else{ + uni.showToast({ + icon: 'none', + title: '请先登录' + }) + return false; + } + var resLogin = await $api.myRequest('/auth/login2/ks',form,'post',10100); + if (resLogin.code=='200') { + uni.setStorageSync('Padmin-Token', resLogin.data.access_token) + return true; + }else{ + uni.showToast({ + icon: 'none', + title: '单点异常' + }) + return false; + } } diff --git a/pages/careerfair/careerfair.vue b/pages/careerfair/careerfair.vue index a816058..8b35cf7 100644 --- a/pages/careerfair/careerfair.vue +++ b/pages/careerfair/careerfair.vue @@ -143,13 +143,59 @@ // startDate: currentDate, // }); // weekList.value = result; - getHeart(); + if(thirdLogin()){ + getHeart(); + } }); onShow(() => { // 更新自定义tabbar选中状态 tabbarManager.updateSelected(1); - }); + });// + + + + async function thirdLogin(){ + let form={} + if (uni.getStorageSync('userInfo').isCompanyUser=='1') { + form={ + usertype: '1', + idno: uni.getStorageSync('userInfo').idCard, + name: uni.getStorageSync('userInfo').name, + enterprisecode:"", + enterprisename: "", + contactperson: "", + contactphone: "", + } + }else if (uni.getStorageSync('userInfo').isCompanyUser=='0') { + form={ + usertype: "2", + enterprisecode: uni.getStorageSync('userInfo').idCard, + enterprisename: uni.getStorageSync('userInfo').name, + contactperson: "", + contactphone: "", + idno: "", + name: "" + } + }else{ + uni.showToast({ + icon: 'none', + title: '请先登录' + }) + return false; + } + var resLogin = await $api.myRequest('/auth/login2/ks',form,'post',10100); + if (resLogin.code=='200') { + uni.setStorageSync('Padmin-Token', resLogin.data.access_token) + return true; + }else{ + uni.showToast({ + icon: 'none', + title: '单点异常' + }) + return false; + } + } onMounted(() => { // 监听退出登录事件,显示微信登录弹窗 @@ -168,19 +214,22 @@ // 可以在这里添加登录成功后的处理逻辑 }; - function goDetail(jobFairId){ - if(state.current != 3){ - navTo('/packageA/pages/exhibitors/exhibitors?jobFairId=' + jobFairId) - }else{ - console.log(userInfo.value, 'userInfo'); - if(userInfo.value){ - if(userInfo.value.userType=='ent'){ - navTo('/packageB/jobFair/detailCom?jobFairId=' + jobFairId) - }else{ - navTo('/packageB/jobFair/detailPerson?jobFairId=' + jobFairId) + async function goDetail(jobFairId){ + if(await thirdLogin()){ + debugger + if(state.current != 3){ + navTo('/packageA/pages/exhibitors/exhibitors?jobFairId=' + jobFairId) + }else{ + console.log(userInfo.value, 'userInfo'); + if(userInfo.value){ + if(userInfo.value.userType=='ent'){ + navTo('/packageB/jobFair/detailCom?jobFairId=' + jobFairId) + }else{ + navTo('/packageB/jobFair/detailPerson?jobFairId=' + jobFairId) + } } } - } + } } function toSelectDate() { diff --git a/utils/request.js b/utils/request.js index 573cce0..85bf0da 100644 --- a/utils/request.js +++ b/utils/request.js @@ -246,10 +246,10 @@ export function myRequest(url, data = {}, method = 'GET', port = 9100, headers = } // 显示具体的错误信息 const errorMsg = msg || '请求出现异常,请联系工作人员' - uni.showToast({ - title: errorMsg, - icon: 'none' - }) + // uni.showToast({ + // title: errorMsg, + // icon: 'none' + // }) const err = new Error(errorMsg) err.error = resData reject(err)