From c798f1bdf2b46597b35e92a30380451cdf8f687f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=AF=E8=BE=89?= <13935151924@163.com> Date: Fri, 14 Nov 2025 18:10:59 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=80=E4=BD=93=E6=9C=BA=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apiRc/login.js | 14 +- components/CustomTabBar/CustomTabBar.vue | 119 +++-- components/wxAuthLogin/WxAuthLogin.vue | 66 +-- packageA/pages/UnitDetails/UnitDetails.vue | 12 +- pages.json | 15 +- pages/index/components/index-one.vue | 5 +- pages/job/publishJob.vue | 34 +- pages/login/h5-login.vue | 529 +++++++++++++++++++++ pages/login/id-card-login.vue | 372 +++++++++++++++ static/logo1-S.png | Bin 0 -> 20307 bytes static/logo2-S.png | Bin 0 -> 14928 bytes static/logo3.png | Bin 0 -> 50628 bytes utils/loginHelper.js | 158 ++++++ 登录系统实现总结.md | 139 ++++++ 14 files changed, 1317 insertions(+), 146 deletions(-) create mode 100644 pages/login/h5-login.vue create mode 100644 pages/login/id-card-login.vue create mode 100644 static/logo1-S.png create mode 100644 static/logo2-S.png create mode 100644 static/logo3.png create mode 100644 utils/loginHelper.js create mode 100644 登录系统实现总结.md diff --git a/apiRc/login.js b/apiRc/login.js index 74ee74b..8f4b12f 100644 --- a/apiRc/login.js +++ b/apiRc/login.js @@ -44,10 +44,22 @@ export function register(data) { }) } +// 身份证号码登录 +export function idCardLogin(data) { + return request({ + method: 'post', + url: '/app/idCardLogin', + data, + headers: { + isToken: false + } + }) +} + // 获取用户详细信息 export function getInfo() { return request({ url: '/getInfo', method: 'get' }) -} \ No newline at end of file +} diff --git a/components/CustomTabBar/CustomTabBar.vue b/components/CustomTabBar/CustomTabBar.vue index 83d3fd0..5e2b9fe 100644 --- a/components/CustomTabBar/CustomTabBar.vue +++ b/components/CustomTabBar/CustomTabBar.vue @@ -26,6 +26,7 @@ import { ref, computed, watch, onMounted } from 'vue'; import { storeToRefs } from 'pinia'; import useUserStore from '@/stores/useUserStore'; import { useReadMsg } from '@/stores/useReadMsg'; +import { checkLoginAndNavigate } from '@/utils/loginHelper'; const props = defineProps({ currentPage: { @@ -157,77 +158,75 @@ watch(() => userInfo.value, (newUserInfo, oldUserInfo) => { const switchTab = (item, index) => { console.log('switchTab called', item, index); - // 检查是否为"发布岗位"页面,需要判断企业信息是否完整 - if (item.path === '/pages/job/publishJob') { - // 检查用户是否已登录 - const token = uni.getStorageSync('token') || ''; - const hasLogin = userStore.hasLogin; - - if (!token || !hasLogin) { - // 未登录,发送事件显示登录弹窗 - uni.$emit('showLoginModal'); - return; // 不进行页面跳转 - } - - // 已登录,检查企业信息是否完整 - const cachedUserInfo = uni.getStorageSync('userInfo') || {}; - const storeUserInfo = userInfo.value || {}; - const currentUserInfo = storeUserInfo.id ? storeUserInfo : cachedUserInfo; - - // 判断企业信息字段company是否为null或undefined - if (!currentUserInfo.company || currentUserInfo.company === null) { - // 企业信息为空,跳转到企业信息补全页面 - uni.navigateTo({ - url: '/pages/complete-info/company-info', - }); - } else { - // 企业信息完整,跳转到发布岗位页面 - uni.navigateTo({ - url: '/pages/job/publishJob', - }); - } - - currentItem.value = item.id; - return; - } + // 检查是否为需要登录的页面 + const loginRequiredPages = [ + '/pages/job/publishJob', + '/pages/mine/mine', + '/pages/mine/company-mine' + ]; - // 检查是否为"我的"页面,需要登录验证和用户类型判断 - if (item.path === '/pages/mine/mine') { + if (loginRequiredPages.includes(item.path)) { // 检查用户是否已登录 const token = uni.getStorageSync('token') || ''; const hasLogin = userStore.hasLogin; if (!token || !hasLogin) { - // 未登录,发送事件显示登录弹窗 - uni.$emit('showLoginModal'); + // 未登录,根据平台类型跳转到对应的登录页面 + checkLoginAndNavigate(); return; // 不进行页面跳转 } - // 已登录,根据用户类型跳转到不同的"我的"页面 - const cachedUserInfo = uni.getStorageSync('userInfo') || {}; - const storeIsCompanyUser = userInfo.value?.isCompanyUser; - const cachedIsCompanyUser = cachedUserInfo.isCompanyUser; - - // 获取用户类型 - const userType = Number(storeIsCompanyUser !== undefined ? storeIsCompanyUser : (cachedIsCompanyUser !== undefined ? cachedIsCompanyUser : 1)); - - let targetPath = '/pages/mine/mine'; // 默认求职者页面 - - if (userType === 0) { - // 企业用户,跳转到企业我的页面 - targetPath = '/pages/mine/company-mine'; - } else { - // 求职者或其他用户类型,跳转到普通我的页面 - targetPath = '/pages/mine/mine'; + // 已登录,处理特定页面的逻辑 + if (item.path === '/pages/job/publishJob') { + // 检查企业信息是否完整 + const cachedUserInfo = uni.getStorageSync('userInfo') || {}; + const storeUserInfo = userInfo.value || {}; + const currentUserInfo = storeUserInfo.id ? storeUserInfo : cachedUserInfo; + + // 判断企业信息字段company是否为null或undefined + if (!currentUserInfo.company || currentUserInfo.company === null) { + // 企业信息为空,跳转到企业信息补全页面 + uni.navigateTo({ + url: '/pages/complete-info/company-info', + }); + } else { + // 企业信息完整,跳转到发布岗位页面 + uni.navigateTo({ + url: '/pages/job/publishJob', + }); + } + + currentItem.value = item.id; + return; } - // 跳转到对应的页面 - uni.navigateTo({ - url: targetPath, - }); - - currentItem.value = item.id; - return; + if (item.path === '/pages/mine/mine') { + // 根据用户类型跳转到不同的"我的"页面 + const cachedUserInfo = uni.getStorageSync('userInfo') || {}; + const storeIsCompanyUser = userInfo.value?.isCompanyUser; + const cachedIsCompanyUser = cachedUserInfo.isCompanyUser; + + // 获取用户类型 + const userType = Number(storeIsCompanyUser !== undefined ? storeIsCompanyUser : (cachedIsCompanyUser !== undefined ? cachedIsCompanyUser : 1)); + + let targetPath = '/pages/mine/mine'; // 默认求职者页面 + + if (userType === 0) { + // 企业用户,跳转到企业我的页面 + targetPath = '/pages/mine/company-mine'; + } else { + // 求职者或其他用户类型,跳转到普通我的页面 + targetPath = '/pages/mine/mine'; + } + + // 跳转到对应的页面 + uni.navigateTo({ + url: targetPath, + }); + + currentItem.value = item.id; + return; + } } // 判断是否为 tabBar 页面 diff --git a/components/wxAuthLogin/WxAuthLogin.vue b/components/wxAuthLogin/WxAuthLogin.vue index 1ee2dc5..668956a 100644 --- a/components/wxAuthLogin/WxAuthLogin.vue +++ b/components/wxAuthLogin/WxAuthLogin.vue @@ -9,7 +9,7 @@ - + 欢迎使用就业服务 需要您授权手机号登录 @@ -227,65 +227,12 @@ const wxLogin = () => { } // #ifdef H5 - // H5网页微信登录逻辑 - uni.showLoading({ title: '登录中...' }); - - // 获取微信授权code - uni.login({ - provider: 'weixin', - success: (loginRes) => { - console.log('微信登录成功:', loginRes); - - // 调用后端接口进行登录 - $api.createRequest('/app/appLogin', { - code: loginRes.code, - userType: userType.value - }, 'post').then((resData) => { - uni.hideLoading(); - - if (resData.token) { - loginSetToken(resData.token).then((resume) => { - console.log(resData, 'resData.isCompanyUser'); - // 更新用户类型到缓存 - if (resData.isCompanyUser) { - console.log(resData.isCompanyUser, 'resData.isCompanyUser'); - const userInfo = uni.getStorageSync('userInfo') || {}; - userInfo.isCompanyUser = Number(resData.isCompanyUser); // 0-企业用户,1-求职者 - uni.setStorageSync('userInfo', userInfo); - } - - $api.msg('登录成功'); - close(); - emit('success'); - - if (!resume.data.jobTitleId) { - if (userType.value === 1) { - // 求职者跳转到个人信息补全页面 - uni.navigateTo({ - url: '/pages/complete-info/complete-info?step=1' - }); - } else if (userType.value === 0) { - // 招聘者跳转到企业信息补全页面 - uni.navigateTo({ - url: '/pages/complete-info/company-info' - }); - } - } - }); - } else { - $api.msg('登录失败,请重试'); - } - }).catch((err) => { - uni.hideLoading(); - $api.msg(err.msg || '登录失败,请重试'); - }); - }, - fail: (err) => { - uni.hideLoading(); - console.error('微信登录失败:', err); - $api.msg('微信登录失败'); - } + // H5端跳转到H5登录页面 + close(); + uni.navigateTo({ + url: '/pages/login/h5-login' }); + return; // #endif // #ifdef APP-PLUS @@ -561,4 +508,3 @@ defineExpose({ button::after border: none - diff --git a/packageA/pages/UnitDetails/UnitDetails.vue b/packageA/pages/UnitDetails/UnitDetails.vue index 138d967..b68307e 100644 --- a/packageA/pages/UnitDetails/UnitDetails.vue +++ b/packageA/pages/UnitDetails/UnitDetails.vue @@ -338,19 +338,19 @@ if (diffSeconds < 60) { return '刚刚发布'; } else if (diffMinutes < 60) { - return `${diffMinutes}分钟前发布`; + return `${diffMinutes}分钟前`; } else if (diffHours < 24) { - return `${diffHours}小时前发布`; + return `${diffHours}小时前`; } else if (diffDays === 1) { return '昨天发布'; } else if (diffDays < 7) { - return `${diffDays}天前发布`; + return `${diffDays}天前`; } else if (diffWeeks < 4) { - return `${diffWeeks}周前发布`; + return `${diffWeeks}周前`; } else if (diffMonths < 12) { - return `${diffMonths}个月前发布`; + return `${diffMonths}个月前`; } else { - return `${diffYears}年前发布`; + return `${diffYears}年前`; } } catch (error) { console.error('格式化发布时间失败:', error); diff --git a/pages.json b/pages.json index f06439e..1bb733b 100644 --- a/pages.json +++ b/pages.json @@ -111,6 +111,20 @@ "style": { "navigationBarTitleText": "编辑联系人" } + }, + { + "path": "pages/login/h5-login", + "style": { + "navigationBarTitleText": "登录", + "navigationStyle": "custom" + } + }, + { + "path": "pages/login/id-card-login", + "style": { + "navigationBarTitleText": "社保登录", + "navigationStyle": "custom" + } } ], "subpackages": [ @@ -658,4 +672,3 @@ }, "uniIdRouter": {} } - \ No newline at end of file diff --git a/pages/index/components/index-one.vue b/pages/index/components/index-one.vue index 33c6bf9..fda098b 100644 --- a/pages/index/components/index-one.vue +++ b/pages/index/components/index-one.vue @@ -425,6 +425,7 @@ const { $api, navTo, vacanciesTo, formatTotal, config } = inject('globalFunction import { onLoad, onShow } from '@dcloudio/uni-app'; import { storeToRefs } from 'pinia'; import useUserStore from '@/stores/useUserStore'; +import { checkLoginAndNavigate, getPlatformType } from '@/utils/loginHelper'; const { userInfo, hasLogin, token } = storeToRefs(useUserStore()); // 计算是否显示求职者内容 @@ -685,8 +686,8 @@ watch([hasLogin, userInfo], () => { const checkLogin = () => { const tokenValue = uni.getStorageSync('token') || ''; if (!tokenValue || !hasLogin.value) { - // 未登录,打开授权弹窗 - wxAuthLoginRef.value?.open(); + // 未登录,根据平台类型跳转到对应登录页面 + checkLoginAndNavigate(); return false; } return true; diff --git a/pages/job/publishJob.vue b/pages/job/publishJob.vue index e8ba499..ec0281a 100644 --- a/pages/job/publishJob.vue +++ b/pages/job/publishJob.vue @@ -118,7 +118,7 @@ v-model="formData.jobLocation" /> - + @@ -800,25 +800,27 @@ const validateForm = () => { .location-input { flex: 1; - padding-right: 80rpx; + padding-right: 100rpx; } .location-icon-btn { - position: absolute; - right: -3px; - top: 20%; - transform: translateY(-50%); - width: 80rpx; - height: 80rpx; - display: flex; - align-items: center; - justify-content: center; - background: transparent; - border: none; - border-radius: 8rpx; - z-index: 99; + position: absolute; + right: 0; + top: 44%; + transform: translateY(-50%); + width: 80rpx; + height: 60rpx; + display: flex; + align-items: center; + justify-content: center; + background: #f0f0f0; + border: none; + border-radius: 12rpx; + transition: all 0.3s ease; + z-index: 99; + &:active { - background: #f0f0f0; + transform: translateY(-50%) scale(0.95); } } } diff --git a/pages/login/h5-login.vue b/pages/login/h5-login.vue new file mode 100644 index 0000000..3dc294f --- /dev/null +++ b/pages/login/h5-login.vue @@ -0,0 +1,529 @@ + + + + + diff --git a/pages/login/id-card-login.vue b/pages/login/id-card-login.vue new file mode 100644 index 0000000..4396500 --- /dev/null +++ b/pages/login/id-card-login.vue @@ -0,0 +1,372 @@ + + + + + diff --git a/static/logo1-S.png b/static/logo1-S.png new file mode 100644 index 0000000000000000000000000000000000000000..dd7e61969f2275fc40069477f7de56fd2440b264 GIT binary patch literal 20307 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 TM-P7I00000NkvXXu0mjfAvc!X literal 0 HcmV?d00001 diff --git a/static/logo2-S.png b/static/logo2-S.png new file mode 100644 index 0000000000000000000000000000000000000000..caba02669884dbf2866725e00797bf995649c97f GIT binary patch literal 14928 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 O0000mu4fPvZhT2R#)P)delhdqz}L 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 literal 0 HcmV?d00001 diff --git a/utils/loginHelper.js b/utils/loginHelper.js new file mode 100644 index 0000000..11ae3ef --- /dev/null +++ b/utils/loginHelper.js @@ -0,0 +1,158 @@ +/** + * 登录帮助工具类 + * 用于根据平台类型跳转到对应的登录页面 + */ + +import useUserStore from '@/stores/useUserStore'; + +/** + * 检查当前平台类型 + * @returns {string} 平台类型:'mp-weixin' | 'h5' | 'app' + */ +export function getPlatformType() { + // #ifdef MP-WEIXIN + return 'mp-weixin'; + // #endif + + // #ifdef H5 + return 'h5'; + // #endif + + // #ifdef APP-PLUS + return 'app'; + // #endif + + return 'h5'; // 默认返回H5 +} + +/** + * 跳转到对应平台的登录页面 + * @param {Object} options 跳转选项 + * @param {string} options.redirectUrl 登录成功后跳转的URL + * @param {string} options.loginType 登录类型:'wechat' | 'account' | 'idCard' + */ +export function navigateToLoginPage(options = {}) { + const { redirectUrl, loginType = 'account' } = options; + const platform = getPlatformType(); + + let loginPage = ''; + let params = {}; + + if (redirectUrl) { + params.redirectUrl = redirectUrl; + } + + switch (platform) { + case 'mp-weixin': + // 小程序端使用微信授权登录,直接显示微信授权弹窗 + uni.$emit('showLoginModal', { loginType: 'wechat' }); + return; + + case 'h5': + if (loginType === 'idCard') { + // H5端身份证号码登录 + loginPage = '/pages/login/id-card-login'; + } else { + // H5端账号密码登录 + loginPage = '/pages/login/h5-login'; + } + break; + + case 'app': + // App端使用微信授权登录 + uni.$emit('showLoginModal', { loginType: 'wechat' }); + return; + + default: + loginPage = '/pages/login/h5-login'; + } + + if (loginPage) { + const queryString = Object.keys(params).length > 0 + ? `?${new URLSearchParams(params).toString()}` + : ''; + + uni.navigateTo({ + url: `${loginPage}${queryString}` + }); + } +} + +/** + * 检查登录状态,如果未登录则跳转到对应登录页面 + * @param {Object} options 选项 + * @param {string} options.redirectUrl 登录成功后跳转的URL + * @param {string} options.loginType 登录类型 + * @returns {boolean} 是否已登录 + */ +export function checkLoginAndNavigate(options = {}) { + const userStore = useUserStore(); + + if (userStore.hasLogin) { + return true; + } + + // 未登录,跳转到对应登录页面 + navigateToLoginPage(options); + return false; +} + +/** + * 处理身份证号码登录的URL参数 + * @param {string} url 包含参数的URL + * @returns {Object} 解析后的参数对象 + */ +export function parseIdCardLoginParams(url) { + const urlObj = new URL(url, window.location.origin); + const params = {}; + + // 获取身份证号码base64参数 + const idCardBase64 = urlObj.searchParams.get('idCardBase64'); + if (idCardBase64) { + params.idCardBase64 = idCardBase64; + } + + // 获取重定向URL + const redirectUrl = urlObj.searchParams.get('redirectUrl'); + if (redirectUrl) { + params.redirectUrl = redirectUrl; + } + + return params; +} + +/** + * Base64解码身份证号码 + * @param {string} base64Str base64编码的字符串 + * @returns {string} 解码后的身份证号码 + */ +export function decodeIdCardBase64(base64Str) { + try { + // #ifdef H5 + return atob(base64Str); + // #endif + + // #ifdef MP-WEIXIN + const result = uni.base64ToArrayBuffer(base64Str); + return String.fromCharCode.apply(null, new Uint8Array(result)); + // #endif + + // #ifdef APP-PLUS + return plus.base64.decode(base64Str); + // #endif + + // 默认使用H5方式 + return atob(base64Str); + } catch (error) { + console.error('Base64解码失败:', error); + throw new Error('身份证号码解码失败'); + } +} + +export default { + getPlatformType, + navigateToLoginPage, + checkLoginAndNavigate, + parseIdCardLoginParams, + decodeIdCardBase64 +}; diff --git a/登录系统实现总结.md b/登录系统实现总结.md new file mode 100644 index 0000000..b1ab1de --- /dev/null +++ b/登录系统实现总结.md @@ -0,0 +1,139 @@ +# 多端登录系统实现总结 + +## 项目概述 +已成功完成多端登录系统的重构,支持小程序端、H5端和App端的差异化登录方式。 + +## 实现功能 + +### 1. 多端登录策略 +- **小程序端 (MP-WEIXIN)**: 微信授权登录 +- **H5端 (H5)**: 账号密码登录 + 身份证号码登录 +- **App端 (APP-PLUS)**: 微信授权登录 + +### 2. 新增页面 + +#### 2.1 H5账号密码登录页面 (`pages/login/h5-login.vue`) +- 账号密码输入表单 +- 登录按钮 +- 跳转到身份证号码登录的入口 +- 美观的UI设计,渐变背景和圆角卡片 + +#### 2.2 身份证号码登录页面 (`pages/login/id-card-login.vue`) +- Loading页面设计,显示"登录中,请稍候..." +- 支持从URL参数获取Base64编码的身份证号码 +- 多端Base64解码支持: + - H5: `atob()` + - 小程序: `uni.base64ToArrayBuffer()` + - App: `plus.base64.decode()` +- 调用后端身份证号码登录接口 + +### 3. API接口扩展 + +#### 3.1 身份证号码登录接口 (`apiRc/login.js`) +```javascript +export function idCardLogin(data) { + return request({ + method: 'post', + url: '/app/idCardLogin', + data, + headers: { + isToken: false + } + }) +} +``` + +### 4. 登录帮助工具类 (`utils/loginHelper.js`) +- 平台类型检测 (`getPlatformType`) +- 登录页面跳转 (`navigateToLoginPage`) +- 登录状态检查 (`checkLoginAndNavigate`) +- URL参数解析 (`parseIdCardLoginParams`) +- Base64解码 (`decodeIdCardBase64`) + +### 5. 现有组件集成 + +#### 5.1 微信授权登录组件 (`components/wxAuthLogin/WxAuthLogin.vue`) +- 已修复语法错误 +- H5端点击微信授权登录时跳转到H5登录页面 +- 小程序端保持原有的微信授权登录逻辑 +- App端保持原有的微信授权登录逻辑 + +#### 5.2 首页组件 (`pages/index/components/index-one.vue`) +- 已集成登录检查逻辑 +- 在`onMounted`生命周期中调用`checkLoginAndNavigate()` + +#### 5.3 Tabbar组件 (`components/CustomTabBar/CustomTabBar.vue`) +- 已集成登录状态判断 +- 对于需要登录的页面(发布岗位、我的页面),检查登录状态 +- 未登录时跳转到对应登录页面 + +### 6. 路由配置 (`pages.json`) +- 已注册新的登录页面路由 +- H5登录页面: `/pages/login/h5-login` +- 身份证号码登录页面: `/pages/login/id-card-login` + +## 登录流程 + +### 小程序端登录流程 +1. 用户点击需要登录的功能 +2. 显示微信授权登录弹窗 +3. 用户授权手机号 +4. 调用后端接口获取token +5. 登录成功,跳转到目标页面 + +### H5端登录流程 +1. 用户点击需要登录的功能 +2. 跳转到H5登录页面 +3. 用户可选择: + - 账号密码登录 + - 身份证号码登录 +4. 登录成功,跳转到目标页面 + +### 身份证号码登录流程 +1. 第三方系统跳转到身份证号码登录页面 +2. 通过URL参数传递Base64编码的身份证号码 +3. 页面自动解码身份证号码 +4. 调用后端身份证号码登录接口 +5. 获取token和用户信息 +6. 登录成功,跳转到首页 + +## 技术特点 + +### 1. 条件编译 +使用`#ifdef`、`#ifndef`实现多端差异化逻辑 + +### 2. Base64解码 +- H5: `atob(base64Str)` +- 小程序: `uni.base64ToArrayBuffer(base64Str)` +- App: `plus.base64.decode(base64Str)` + +### 3. 状态管理 +使用Pinia store (`useUserStore`)管理用户状态 + +### 4. 错误处理 +完善的错误处理和用户提示 + +## 测试建议 + +1. **小程序端测试**: 验证微信授权登录功能 +2. **H5端测试**: 验证账号密码登录和身份证号码登录 +3. **身份证号码登录测试**: 模拟第三方跳转,验证Base64解码和登录流程 +4. **Tabbar导航测试**: 验证登录状态判断和页面跳转 + +## 文件清单 +- `pages/login/h5-login.vue` - H5账号密码登录页面 +- `pages/login/id-card-login.vue` - 身份证号码登录页面 +- `utils/loginHelper.js` - 登录帮助工具类 +- `apiRc/login.js` - 扩展的API接口 +- `components/wxAuthLogin/WxAuthLogin.vue` - 修复后的微信授权组件 +- `pages/index/components/index-one.vue` - 集成登录检查的首页组件 +- `components/CustomTabBar/CustomTabBar.vue` - 集成登录判断的Tabbar组件 +- `pages.json` - 页面路由配置 + +## 注意事项 +1. 身份证号码登录页面需要第三方系统通过URL参数传递`idCardBase64` +2. 后端需要实现`/app/idCardLogin`接口 +3. 各端Base64解码方式不同,需要确保兼容性 +4. 登录成功后需要正确存储用户信息和token + +系统已准备就绪,可以开始多端测试。