From 48c94b0905022920cb2b458c7530ff4e2c8463e0 Mon Sep 17 00:00:00 2001 From: yangzhe Date: Wed, 30 Jul 2025 16:32:38 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9B=B4=E6=96=B0=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E9=80=BB=E8=BE=91=EF=BC=8C=E6=94=AF=E6=8C=81=E6=95=99=E5=B8=88?= =?UTF-8?q?=E5=92=8C=E5=AD=A6=E7=94=9F=E7=9A=84=E4=B8=8D=E5=90=8C=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App.vue | 3 +- common/http.api.js | 362 ++++++++++++++++++++---------------- pages/home/index/index.vue | 44 ++--- pages/login/login/index.vue | 123 ++++++++---- store/index.js | 3 +- 5 files changed, 322 insertions(+), 213 deletions(-) diff --git a/App.vue b/App.vue index ab2d988..e5201c2 100644 --- a/App.vue +++ b/App.vue @@ -36,11 +36,12 @@ export default { }); if (!that.vuex_token) { + const type = that.vuex_userType || 0; // 0:学生 1:教师 this.$u.vuex("vuex_user", ""); this.$u.vuex("vuex_token", ""); uni.clearStorage(); uni.reLaunch({ - url: "/pages/login/login/index", + url: `/pages/login/login/index?type=${type}`, }); return; } diff --git a/common/http.api.js b/common/http.api.js index 9f58e68..a74fff7 100644 --- a/common/http.api.js +++ b/common/http.api.js @@ -1,172 +1,220 @@ // 此处第二个参数vm,就是我们在页面使用的this,你可以通过vm获取vuex等操作 const install = (Vue, vm) => { - // ******** - // 获取教师信息 - let getTeacherInfo = (params = {}) => vm.$u.get('api/BasicDataMaintenance/GetTeacher', params); + // ******** + // 获取教师信息 + let getTeacherInfo = (params = {}) => + vm.$u.get("api/BasicDataMaintenance/GetTeacher", params); - let updateTeacherInfo = (params = {}) => vm.$u.post('api/BasicDataMaintenance/UpdateTeacher', params); + let updateTeacherInfo = (params = {}) => + vm.$u.post("api/BasicDataMaintenance/UpdateTeacher", params); - let getData = (params = {}) => vm.$u.get('api/BasicDataMaintenance/GetData', params); + let getData = (params = {}) => + vm.$u.get("api/BasicDataMaintenance/GetData", params); - // 登录 - let LoginApp = (params = {}) => vm.$u.post('api/Token/LoginApp', params) - // 注册 - let RegisterUser = (params = {}) => vm.$u.post('api/Token/RegisterUser', params); - // 基础资料以及保存用户头像 - let saveUserInfo = (params = {}) => vm.$u.post('app/User/UploadingFormFileHead', params); - // 更新用户定位信息 - let upPosition = (params = {}) => vm.$u.post('app/Position/InsertPosition', params); - // 获取用户当前定位信息 - let getPosition = (params = {}) => vm.$u.get('app/Position/GetPositionByUser', { - userId: vm.vuex_user.id + // 登录 + let LoginApp = (params = {}) => vm.$u.post("api/Token/LoginApp", params); + // 注册 + let RegisterUser = (params = {}) => + vm.$u.post("api/Token/RegisterUser", params); + // 基础资料以及保存用户头像 + let saveUserInfo = (params = {}) => + vm.$u.post("app/User/UploadingFormFileHead", params); + // 更新用户定位信息 + let upPosition = (params = {}) => + vm.$u.post("app/Position/InsertPosition", params); + // 获取用户当前定位信息 + let getPosition = (params = {}) => + vm.$u.get("app/Position/GetPositionByUser", { + userId: vm.vuex_user.id, }); - // 获取所有学校 - let GetAllSchool = (params = {}) => vm.$u.get('app/User/GetSchoolList', params); - //获取首页地图信息 - let HomeMap = (params = {}) => vm.$u.get('/app/User/HomeMap', params); - //修改密码 - let ChangePassword = (params = {}) => vm.$u.post('app/User/ChangePassword', params); - //修改密码 - let myChangePassword = (params = {}) => vm.$u.post('app/My/ChangePassword', params); - // 获取搜索页面相关信息 - let SearchInfo = (params = {}) => vm.$u.get('app/User/SearchRelevant', params); - //获取搜索结果页面 - let getSearch = (params = {}) => vm.$u.get('app/User/GetSearchList', params); - // 获取用户信息 - let getUserInfo = (params = {}) => vm.$u.get('app/User/HomePage', params); - // 获取校友帮帮列表 - let GetHelpList = (params = {}) => vm.$u.get('app/HelpArticle/GetHelpArticleListByKey', params); - // 获取学校资讯 - let GetSchoolList = (params = {}) => vm.$u.get('app/AlumnRange/AlumnRangeSchool', params); - //获取最新的用户信息(更新用户数据) - let getUser = (params = {}) => vm.$u.get('app/User/GetUser', {userId: vm.vuex_user.id}).then(res => { - vm.$u.get('/app/User/GetUserSchool').then(ress => { - // res.isAttestationGLY = ress.isAttestationGLY - // res.isAttestationJZG = ress.isAttestationJZG - // res.isAttestationQY = ress.isAttestationQY - // res.isAttestationXY = res.isAttestationXY - // res.isAttestationZXS = ress.isAttestationZXS - res.schoolId = ress.items.schoolId - vm.$u.vuex('vuex_user', {...res.user,...res.userExtension}) - vm.$u.vuex('vuex_user_hobby', res.lableList) - }) - }) - //获取用户消息列表 - let getcharList = (params = {}) => vm.$u.get('app/Chat/GetUserMessageList', params); - //获取用户获取关注列表 - let getFollowList = (params = {}) => vm.$u.get('app/Chat/GetFollowList', {id: vm.vuex_user.id}); - // 获取系统消息列表 - let getSysList = (params = {}) => vm.$u.get('app/Chat/GetSystemMessageList', {id: vm.vuex_user.id}); - //获取管理消息列表 - let getAdminList = (params = {}) => vm.$u.get('app/Chat/GetManageMessageList', {schoolId: vm.vuex_user.id}); - //获取互动信息列表 - let getinteractionList = (params) => vm.$u.get('app/Chat/GetInterMessageList', {id: vm.vuex_user.id, type: params}); - //校友找找推荐列表 - let getAlumnSearch = (params = {}) => vm.$u.get('app/AlumnRange/AlumnSearch', params); - //获取聊天记录 - let getChatRecord = (params = {}) => vm.$u.get('app/Chat/GetChatRecord', params); - //校友找找列表 - let AlumnSearchList = (params = {}) => vm.$u.get('app/AlumnRange/AlumnSearchList', params); - // 初始化的数据调用微信接口返回参数 - let GetInfoMation = (params = {}) => vm.$u.get('api/Token/GetInfoMation', params); - // 回复绑定 - let toBind = (params = {}) => vm.$u.get('app/Chat/ReplyBind', params); - //我的资讯 - let MyAlumnRange = (params = {}) => vm.$u.get('app/My/MyAlumnRange', params); - // 解除绑定 - let colseBind = (params = {}) => vm.$u.get('app/Chat/UnbindReply', params); - // 删除评论 - let DelateComment = (params = {}) => vm.$u.get('app/AlumnRange/DelateComment', params); - let userVerify = (params = {}) => vm.$u.post('api/Token/IsIdentityCard', params) + // 获取所有学校 + let GetAllSchool = (params = {}) => + vm.$u.get("app/User/GetSchoolList", params); + //获取首页地图信息 + let HomeMap = (params = {}) => vm.$u.get("/app/User/HomeMap", params); + //修改密码 + let ChangePassword = (params = {}) => + vm.$u.post("app/User/ChangePassword", params); + //修改密码 + let myChangePassword = (params = {}) => + vm.$u.post("app/My/ChangePassword", params); + // 获取搜索页面相关信息 + let SearchInfo = (params = {}) => + vm.$u.get("app/User/SearchRelevant", params); + //获取搜索结果页面 + let getSearch = (params = {}) => vm.$u.get("app/User/GetSearchList", params); + // 获取用户信息 + let getUserInfo = (params = {}) => vm.$u.get("app/User/HomePage", params); + // 获取校友帮帮列表 + let GetHelpList = (params = {}) => + vm.$u.get("app/HelpArticle/GetHelpArticleListByKey", params); + // 获取学校资讯 + let GetSchoolList = (params = {}) => + vm.$u.get("app/AlumnRange/AlumnRangeSchool", params); + //获取最新的用户信息(更新用户数据) + let getUser = (params = {}) => + vm.$u.get("app/User/GetUser", { userId: vm.vuex_user.id }).then((res) => { + vm.$u.get("/app/User/GetUserSchool").then((ress) => { + // res.isAttestationGLY = ress.isAttestationGLY + // res.isAttestationJZG = ress.isAttestationJZG + // res.isAttestationQY = ress.isAttestationQY + // res.isAttestationXY = res.isAttestationXY + // res.isAttestationZXS = ress.isAttestationZXS + res.schoolId = ress.items.schoolId; + vm.$u.vuex("vuex_user", { ...res.user, ...res.userExtension }); + vm.$u.vuex("vuex_user_hobby", res.lableList); + }); + }); + //获取用户消息列表 + let getcharList = (params = {}) => + vm.$u.get("app/Chat/GetUserMessageList", params); + //获取用户获取关注列表 + let getFollowList = (params = {}) => + vm.$u.get("app/Chat/GetFollowList", { id: vm.vuex_user.id }); + // 获取系统消息列表 + let getSysList = (params = {}) => + vm.$u.get("app/Chat/GetSystemMessageList", { id: vm.vuex_user.id }); + //获取管理消息列表 + let getAdminList = (params = {}) => + vm.$u.get("app/Chat/GetManageMessageList", { schoolId: vm.vuex_user.id }); + //获取互动信息列表 + let getinteractionList = (params) => + vm.$u.get("app/Chat/GetInterMessageList", { + id: vm.vuex_user.id, + type: params, + }); + //校友找找推荐列表 + let getAlumnSearch = (params = {}) => + vm.$u.get("app/AlumnRange/AlumnSearch", params); + //获取聊天记录 + let getChatRecord = (params = {}) => + vm.$u.get("app/Chat/GetChatRecord", params); + //校友找找列表 + let AlumnSearchList = (params = {}) => + vm.$u.get("app/AlumnRange/AlumnSearchList", params); + // 初始化的数据调用微信接口返回参数 + let GetInfoMation = (params = {}) => + vm.$u.get("api/Token/GetInfoMation", params); + // 回复绑定 + let toBind = (params = {}) => vm.$u.get("app/Chat/ReplyBind", params); + //我的资讯 + let MyAlumnRange = (params = {}) => vm.$u.get("app/My/MyAlumnRange", params); + // 解除绑定 + let colseBind = (params = {}) => vm.$u.get("app/Chat/UnbindReply", params); + // 删除评论 + let DelateComment = (params = {}) => + vm.$u.get("app/AlumnRange/DelateComment", params); + let userVerify = (params = {}) => + vm.$u.post("api/Token/IsIdentityCard", params); - // 获取人脸验证token - let getAPIToken = (params = {}) => vm.$u.post('app/My/GetVerifyToken', params) - // 查询人脸核验结果 - let getVerifyInfo = (params = {}) => vm.$u.post('app/My/GetDetailInfo?VerifyToken=' + params) - // 根据身份证获取信息 - let getInfoByCard = (params = {}) => vm.$u.get('app/User/GetCardByPreConfiguredUser', params); - // 更新身份信息 - let updateCard = (params = {}) => vm.$u.post('api/Token/UpdateCard', params) + // 获取人脸验证token + let getAPIToken = (params = {}) => + vm.$u.post("app/My/GetVerifyToken", params); + // 查询人脸核验结果 + let getVerifyInfo = (params = {}) => + vm.$u.post("app/My/GetDetailInfo?VerifyToken=" + params); + // 根据身份证获取信息 + let getInfoByCard = (params = {}) => + vm.$u.get("app/User/GetCardByPreConfiguredUser", params); + // 更新身份信息 + let updateCard = (params = {}) => vm.$u.post("api/Token/UpdateCard", params); - //【手机端】添加心愿 - let PushWishDan = (params = {}) => vm.$u.post("app/My/PushWishDan", params) + //【手机端】添加心愿 + let PushWishDan = (params = {}) => vm.$u.post("app/My/PushWishDan", params); - //【手机端】获取个人心愿列表 - let GetWishListAsync_mobile = (params = {}) => vm.$u.get("app/My/GetWishListAsync_mobile", params) - //【手机端】删除心愿 删除=失效 - let DeleteWish = (params = {}) => vm.$u.post("app/My/DeleteWish", params) - //【管理端】获取当前是否开启匿名 开启true 关闭false - let CheckNM = (params = {}) => vm.$u.get("/app/My/CheckNM", params) + //【手机端】获取个人心愿列表 + let GetWishListAsync_mobile = (params = {}) => + vm.$u.get("app/My/GetWishListAsync_mobile", params); + //【手机端】删除心愿 删除=失效 + let DeleteWish = (params = {}) => vm.$u.post("app/My/DeleteWish", params); + //【管理端】获取当前是否开启匿名 开启true 关闭false + let CheckNM = (params = {}) => vm.$u.get("/app/My/CheckNM", params); - /** 首页ai对话 */ - // 发送消息 - let SendMessageApi = (params = {}) => vm.$u.post('api/ChatAI/CreateChat', params, {showLoading: false}); - // 获取历史对话列表 - let GetConversationPage = (params = {}) => vm.$u.get('api/ChatAI/GetConversationPage', params); - // 获取对话详情 - let GetConversationDetail = (params = {}) => vm.$u.get('api/ChatAI/GetHistoricalConversations', params); + /** 首页ai对话 */ + // 发送消息 + let SendMessageApi = (params = {}) => + vm.$u.post("api/ChatAI/CreateChat", params, { showLoading: false }); + // 获取历史对话列表 + let GetConversationPage = (params = {}) => + vm.$u.get("api/ChatAI/GetConversationPage", params); + // 获取对话详情 + let GetConversationDetail = (params = {}) => + vm.$u.get("api/ChatAI/GetHistoricalConversations", params); - /** 登录 */ - // 获取图形验证码 - let GetCaptcha = (params = {}) => vm.$u.get('api/Login/GetCaptcha', params); - // 发送验证码 - let GetStuVerifyCode = (params = {}) => vm.$u.post('api/Login/GetSMSCodeAccountRegister', params); - // 学生登录 - let StuLogin = (params = {}) => vm.$u.post('api/Login/PhoneLoginExpertUser', params); + /** 登录 */ + // 获取图形验证码 + let GetCaptcha = (params = {}) => vm.$u.get("api/Login/GetCaptcha", params); + // 发送验证码-学生 + let GetStuVerifyCode = (params = {}) => + vm.$u.post("api/Login/GetSMSCodeAccountRegister", params); + // 登录-学生 + let StuLogin = (params = {}) => + vm.$u.post("api/Login/PhoneLoginExpertUser", params); - // 将各个定义的接口名称,统一放进对象挂载到vm.$u.api(因为vm就是this,也即this.$u.api)下 - vm.$u.api = { - getTeacherInfo, - getData, - updateTeacherInfo, + // 发送验证码-教师 + let GetTeacherVerifyCode = (params = {}) => + vm.$u.post("api/Login/RequestLoginSMSCode", params); + // 密码登录-教师 + let TeacherLogin = (params = {}) => + vm.$u.post("api/Login/LoginManagementEnd", params); + // 验证码登录-教师 + let TeacherLoginByCode = (params = {}) => + vm.$u.post("api/Login/PhoneLoginManagementEnd", params); - - LoginApp, - RegisterUser, - saveUserInfo, - upPosition, - getPosition, - GetAllSchool, - HomeMap, - ChangePassword, - myChangePassword, - SearchInfo, - getSearch, - getUserInfo, - GetHelpList, - GetSchoolList, - getUser, - getcharList, - getFollowList, - getSysList, - getAdminList, - getinteractionList, - getAlumnSearch, - getChatRecord, - AlumnSearchList, - GetInfoMation, - toBind, - colseBind, - MyAlumnRange, - DelateComment, - userVerify, - GetWishListAsync_mobile, - DeleteWish, - CheckNM, - PushWishDan, - getAPIToken, - getVerifyInfo, - getInfoByCard, - updateCard, - SendMessageApi, - GetCaptcha, - GetStuVerifyCode, - StuLogin, - GetConversationPage, - GetConversationDetail - }; -} + // 将各个定义的接口名称,统一放进对象挂载到vm.$u.api(因为vm就是this,也即this.$u.api)下 + vm.$u.api = { + getTeacherInfo, + getData, + updateTeacherInfo, + LoginApp, + RegisterUser, + saveUserInfo, + upPosition, + getPosition, + GetAllSchool, + HomeMap, + ChangePassword, + myChangePassword, + SearchInfo, + getSearch, + getUserInfo, + GetHelpList, + GetSchoolList, + getUser, + getcharList, + getFollowList, + getSysList, + getAdminList, + getinteractionList, + getAlumnSearch, + getChatRecord, + AlumnSearchList, + GetInfoMation, + toBind, + colseBind, + MyAlumnRange, + DelateComment, + userVerify, + GetWishListAsync_mobile, + DeleteWish, + CheckNM, + PushWishDan, + getAPIToken, + getVerifyInfo, + getInfoByCard, + updateCard, + SendMessageApi, + GetCaptcha, + GetStuVerifyCode, + StuLogin, + GetConversationPage, + GetConversationDetail, + GetTeacherVerifyCode, + TeacherLogin, + TeacherLoginByCode, + }; +}; export default { - install -} + install, +}; diff --git a/pages/home/index/index.vue b/pages/home/index/index.vue index ce10478..8a15070 100644 --- a/pages/home/index/index.vue +++ b/pages/home/index/index.vue @@ -111,7 +111,7 @@ - + 已经到顶了 @@ -279,7 +279,7 @@ export default { isLoadingMore: false, // 是否正在加载更多的标志位 noMoreData: false, // 是否已加载全部历史消息 isSwitchingConversation: false, // 是否正在切换对话的标志位 - + pageQuery: { PageIndex: 1, PageSize: 20, @@ -505,7 +505,7 @@ export default { // 添加到消息列表 this.messageGroups.push(userMessage); this.messageValue = ""; - + // 立即添加一个AI回复的加载状态消息 const loadingMessage = { id: "loading_" + Math.random().toString(36).substring(2, 15), @@ -519,7 +519,7 @@ export default { displayTime: "", isLoading: true, // 标记为加载状态 }; - + // 添加加载状态消息到列表 this.messageGroups.push(loadingMessage); @@ -559,12 +559,12 @@ export default { }) .catch((error) => { console.error("API请求失败:", error); - + // 从消息列表中移除加载状态消息 this.messageGroups = this.messageGroups.filter( (msg) => !msg.isLoading ); - + // 添加错误消息 const errorMessage = { id: "error_" + Math.random().toString(36).substring(2, 15), @@ -577,7 +577,7 @@ export default { timeLabel: 0, displayTime: "", }; - + this.messageGroups.push(errorMessage); }); }, @@ -645,18 +645,18 @@ export default { // 关闭弹窗 this.popupShow = false; this.isChat = true; - + // 设置切换对话标志位,防止触发上拉刷新 this.isSwitchingConversation = true; - + this.currentConversationId = ""; this.messageGroups = []; - + // 重置分页和加载状态 this.pageQuery.PageIndex = 1; this.isLoadingMore = false; this.noMoreData = false; - + // 延迟重置切换对话标志位 setTimeout(() => { this.isSwitchingConversation = false; @@ -666,18 +666,18 @@ export default { // 开始新对话 handleStartChat() { this.isChat = true; - + // 设置切换对话标志位,防止触发上拉刷新 this.isSwitchingConversation = true; - + this.currentConversationId = ""; this.messageGroups = []; - + // 重置分页和加载状态 this.pageQuery.PageIndex = 1; this.isLoadingMore = false; this.noMoreData = false; - + // 延迟重置切换对话标志位 setTimeout(() => { this.isSwitchingConversation = false; @@ -692,7 +692,7 @@ export default { // 滚动到顶部事件处理 onScrollToUpper() { console.log("触发上拉刷新"); - + // 如果已经没有更多数据或正在切换对话,不再触发上拉刷新 if (this.noMoreData || this.isSwitchingConversation) { return; @@ -982,7 +982,7 @@ export default { text-align: center; margin-bottom: 32rpx; } - + .no-more-data { text-align: center; font-size: 24rpx; @@ -1030,7 +1030,7 @@ export default { display: flex; align-items: center; justify-content: flex-start; - + .dot { display: inline-block; width: 12rpx; @@ -1040,20 +1040,20 @@ export default { margin: 0 6rpx; opacity: 0.6; animation: dot-flashing 1.5s infinite linear alternate; - + &:nth-child(1) { animation-delay: 0s; } - + &:nth-child(2) { animation-delay: 0.5s; } - + &:nth-child(3) { animation-delay: 1s; } } - + @keyframes dot-flashing { 0% { opacity: 0.6; diff --git a/pages/login/login/index.vue b/pages/login/login/index.vue index 83df457..94fb769 100644 --- a/pages/login/login/index.vue +++ b/pages/login/login/index.vue @@ -151,6 +151,7 @@