From 8e91c0ac17e5e317870a4553283a9a11aa10be61 Mon Sep 17 00:00:00 2001 From: Wang Tianci <109196852+Tianci-King@users.noreply.github.com> Date: Sun, 11 Aug 2024 14:31:39 +0800 Subject: [PATCH] =?UTF-8?q?Merge(SuitApply):=E5=90=88=E5=B9=B6=E6=AD=A3?= =?UTF-8?q?=E8=A3=85=E5=80=9F=E7=94=A8=EF=BC=8C=E4=BF=AE=E5=A4=8D=E9=83=A8?= =?UTF-8?q?=E5=88=86=20bug=20(#96)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * perf(login):增加登录密码正则 * fix(suitApply):禁用了朝晖校区线上办理正装借用到功能 * perf(lessonstable):优化课表可以提前查看下学年的课程安排 --- src/app.config.ts | 2 + src/components/TermPicker/index.vue | 2 +- src/constants/copywriting.ts | 15 +- src/constants/updateInfo.ts | 10 +- src/pages/bind/Library/index.vue | 8 ++ src/pages/bind/Oauth/index.vue | 8 ++ src/pages/bind/ZF/index.vue | 10 +- src/pages/bind/index.vue | 1 + .../setting/changePassword/index.config.ts | 5 + src/pages/setting/changePassword/index.scss | 16 +++ src/pages/setting/changePassword/index.vue | 131 ++++++++++++++++++ src/pages/setting/index.scss | 1 + src/pages/setting/index.vue | 24 +++- src/pages/setting/logout/index.config.ts | 5 + src/pages/setting/logout/index.scss | 16 +++ src/pages/setting/logout/index.vue | 119 ++++++++++++++++ src/pages/suit/apply/index.module.scss | 21 +++ src/pages/suit/apply/index.vue | 12 +- src/pages/suit/faq/index.module.scss | 2 +- src/services/api/apiList.ts | 4 +- src/services/services/userService.ts | 31 ++++- 21 files changed, 425 insertions(+), 18 deletions(-) create mode 100644 src/pages/setting/changePassword/index.config.ts create mode 100644 src/pages/setting/changePassword/index.scss create mode 100644 src/pages/setting/changePassword/index.vue create mode 100644 src/pages/setting/logout/index.config.ts create mode 100644 src/pages/setting/logout/index.scss create mode 100644 src/pages/setting/logout/index.vue diff --git a/src/app.config.ts b/src/app.config.ts index 15862523..29388c2b 100644 --- a/src/app.config.ts +++ b/src/app.config.ts @@ -12,6 +12,8 @@ export default { "pages/exam/index", "pages/score/index", "pages/setting/index", + "pages/setting/logout/index", + "pages/setting/changePassword/index", "pages/connect/index", "pages/connect/faq/index", "pages/lab/index", diff --git a/src/components/TermPicker/index.vue b/src/components/TermPicker/index.vue index 98eac168..9cacc24e 100644 --- a/src/components/TermPicker/index.vue +++ b/src/components/TermPicker/index.vue @@ -50,7 +50,7 @@ if (props.selectflag >= 1) let years: string[] = []; -for (let i = 0; i < 4; i++) years.push(`${year - i}/${year - i + 1}`); +for (let i = -1; i < 4; i++) years.push(`${year - i}/${year - i + 1}`); selector.unshift(years); /** Picker 依赖, 索引数组 */ diff --git a/src/constants/copywriting.ts b/src/constants/copywriting.ts index 71e24010..78a8c105 100644 --- a/src/constants/copywriting.ts +++ b/src/constants/copywriting.ts @@ -10,7 +10,7 @@ export const labText = { empty: "当前没有实验功能,尽情期待!😚" }; export const settingText = { - empty: "当前没有可设置功能,尽情期待!😚" + empty: "更多设置功能,尽情期待!😚" }; export const faqText = { qa: [ @@ -58,8 +58,8 @@ export const helpText = { scoreCard: "若信息长时间无法更新或总是刷新失败,可能是因为更改过正方教务系统的密码,请前往我的-绑定-重新绑定正方账号。\n 成绩查询中的信息全部来自正方教务系统,数据录入可能会有延迟,请耐心等待。\n 如有疑问请联系教务处,本程序仅作信息展示。", bind: { - zf: "1.正方教务系统是什么?\n正方教务系统是你的选课系统哦~\n那么密码就是你的选课密码~\n\n2.忘记密码?\n请找自己的辅导员重置密码。", - oauth: "1.统一验证系统是什么?\n统一验证系统是你的选课系统哦~\n那么密码就是你的统一验证密码~\n\n2.忘记密码?\n请找自己的辅导员重置密码。 \n\n 23级及以后的同学改用统一验证系统登录", + zf: "1.正方教务系统是什么?\n正方教务系统是你的选课系统哦~\n那么密码就是你的选课密码~\n\n2.忘记密码?\n请联系学院教务老师重置密码。", + oauth: "1.统一验证系统是什么?\n统一验证系统是你的选课系统哦~\n那么密码就是你的统一验证密码~\n\n2.忘记密码?\n请联系学院教务老师重置密码。 \n\n 23级及以后的同学改用统一验证系统登录", library: "新生图书馆绑定异常——新生需要在接受图书馆培训并通过入馆考试后,才能正常绑定图书馆账号", yxy: "丨绑定此项以使用校园卡查询等功能\n丨请确保已下载过易校园 APP 且将手机号与学号、宿舍绑定\n丨若图形验证码加载失败,请过一段时间再来绑定" @@ -78,6 +78,11 @@ export const helpText = { main: "“正装借用”是由学生事务大厅与精弘网络合作共同开发的一项学生服务功能,您的参与是对我们工作的最大支持,让我们携手共同营造温暖、团结的校园氛围。", help: "感谢您使用由学生事务大厅与精弘网络合作共同开发的“正装借用”,使用时如有疑问请点击您所在的校区,查看详情中“学生事务大厅”的联系方式咨询工作人员。", information: "感谢您使用由学生事务大厅与精弘网络合作共同开发的“正装借用”,请在使用前正确填写您的真实个人信息,以便后续工作的开展。", - warn: "请您再次确认是否提交申请!另外,申请完成后,如果您所申请的正装的尺码目前标注“余量不足”,请您尽早前往学生事务大厅领取。\n “余量不足”的正装可能会被线下借用的同学优先借完,从而导致在“微精弘线上借用”已经申请过的同学无正装可借,微精弘对此概不负责!" - } + warn: "请您再次确认是否提交申请!提交申请后正装请到学生事务大厅领取,领取后将变为申请中状态(建议线下确认尺码后当场提交申请)\n “余量不足”的正装可能会被线下借用的同学优先借完,从而导致在“微精弘线上借用”已经申请过的同学无正装可借,微精弘对此概不负责!" + }, + logout: { + main: "| 您的微精弘账号一旦被注销成功将无法再找回您添加、绑定的任何本账号内容或信息! 若您在注销后仍需要使用微精弘,请重新打开小程序按照“激活”的步骤创建微精弘账号,感谢您的配合!", + check: "注销操作将清除您的在微精弘激活的所有个人信息以及绑定数据,请您确认是否要注销账号?", + }, + changePassword: "请确定您已经记住了新密码,以免忘记密码后无法再次登录,是否确认修改?", }; diff --git a/src/constants/updateInfo.ts b/src/constants/updateInfo.ts index eb5beef8..dbe10fa3 100644 --- a/src/constants/updateInfo.ts +++ b/src/constants/updateInfo.ts @@ -17,13 +17,13 @@ type UpdateInfoType = { } export const updateInfo: UpdateInfoType = { - version: "2.5.6", + version: "2.6.1", title: "微精弘更新公告", - content: `微精弘小程序2.5.6更新 [失物招领] ,注册绑定一卡通以体验! + content: `微精弘小程序2.6.1更新 [正装借用] ! > 更新内容 - 1. 实验室上线切换主题色功能 - 2. 微精弘 x “For You”工程 联合上线失物招领 - 3. 校园资讯功能优化 + 1. 微精弘 x “学生事务大厅” 联合上线正装借用功能 + 2. 设置页面新增修改密码与注销功能 + 3. 优化绑定页面的交互体验 4. 修复了一些已知的bug `, actions: { diff --git a/src/pages/bind/Library/index.vue b/src/pages/bind/Library/index.vue index 0a2139db..ad6f3228 100644 --- a/src/pages/bind/Library/index.vue +++ b/src/pages/bind/Library/index.vue @@ -10,6 +10,14 @@ const helpContent = helpText.bind.library; const isShowHelp = ref(false); async function bindLibClick() { + const regex = /^[a-zA-Z0-9!@#$%^&*()_+-=,.<>?;:'"{}\[\]\\|`~]*$/; + if (!regex.test(libpass.value)) { + Taro.showToast({ + title: "输入存在中文字符或其他非法字符,请重新输入!", + icon: "none" + }); + return; + } Taro.showLoading({ title: "正在绑定", mask: true diff --git a/src/pages/bind/Oauth/index.vue b/src/pages/bind/Oauth/index.vue index 1668d78a..73ac5913 100644 --- a/src/pages/bind/Oauth/index.vue +++ b/src/pages/bind/Oauth/index.vue @@ -12,6 +12,14 @@ const helpContent = helpText.bind.oauth; const isShowHelp = ref(false); async function bindOauthClick() { + const regex = /^[a-zA-Z0-9!@#$%^&*()_+-=,.<>?;:'"{}\[\]\\|`~]*$/; + if (!regex.test(oauthpass.value)) { + Taro.showToast({ + title: "输入存在中文字符或其他非法字符,请重新输入!", + icon: "none" + }); + return; + } Taro.showLoading({ title: "正在绑定", mask: true diff --git a/src/pages/bind/ZF/index.vue b/src/pages/bind/ZF/index.vue index 08ca6617..c364df24 100644 --- a/src/pages/bind/ZF/index.vue +++ b/src/pages/bind/ZF/index.vue @@ -8,10 +8,18 @@ import { ref, computed } from "vue"; const zfpass = ref(""); const user = computed(() => serviceStore.user); -const helpContent = helpText.suit; +const helpContent = helpText.bind.zf; const isShowHelp = ref(false); async function bindZFClick() { + const regex = /^[a-zA-Z0-9!@#$%^&*()_+-=,.<>?;:'"{}\[\]\\|`~]*$/; + if (!regex.test(zfpass.value)) { + Taro.showToast({ + title: "输入存在中文字符或其他非法字符,请重新输入!", + icon: "none" + }); + return; + } Taro.showLoading({ title: "正在绑定", mask: true diff --git a/src/pages/bind/index.vue b/src/pages/bind/index.vue index a03ba9ca..4d787076 100644 --- a/src/pages/bind/index.vue +++ b/src/pages/bind/index.vue @@ -29,6 +29,7 @@ + 输入密码时请注意特殊字符的中英文编码 diff --git a/src/pages/setting/changePassword/index.config.ts b/src/pages/setting/changePassword/index.config.ts new file mode 100644 index 00000000..5117bc23 --- /dev/null +++ b/src/pages/setting/changePassword/index.config.ts @@ -0,0 +1,5 @@ +export default { + navigationBarTitleText: "修改密码", + backgroundColor: "#dfdfdf", + disableScroll: true +}; diff --git a/src/pages/setting/changePassword/index.scss b/src/pages/setting/changePassword/index.scss new file mode 100644 index 00000000..ccf364f4 --- /dev/null +++ b/src/pages/setting/changePassword/index.scss @@ -0,0 +1,16 @@ +@import "@/style/theme"; + +.warn { + font-size: 0.875rem; + color: var(--wjh-color-week); +} + +.input-card { + + input { + border: 2Px solid var(--wjh-color-light); + padding: 0.3rem 0.5rem; + margin: 0.5rem 0; + border-radius: 0.2rem; + } +} diff --git a/src/pages/setting/changePassword/index.vue b/src/pages/setting/changePassword/index.vue new file mode 100644 index 00000000..55bade04 --- /dev/null +++ b/src/pages/setting/changePassword/index.vue @@ -0,0 +1,131 @@ + + + diff --git a/src/pages/setting/index.scss b/src/pages/setting/index.scss index cfce94d2..9fc489b8 100644 --- a/src/pages/setting/index.scss +++ b/src/pages/setting/index.scss @@ -4,6 +4,7 @@ .empty { padding: 1rem; + text-align: center; } .footer-text { diff --git a/src/pages/setting/index.vue b/src/pages/setting/index.vue index 7ed93a7e..1fa327d3 100644 --- a/src/pages/setting/index.vue +++ b/src/pages/setting/index.vue @@ -9,6 +9,20 @@ class="flex-column" :style="isEmpty ? 'justify-content: space-between' : undefined" > + + + + 修改密码 + + + + + + + 注销 + + + diff --git a/src/pages/setting/logout/index.config.ts b/src/pages/setting/logout/index.config.ts new file mode 100644 index 00000000..46c83021 --- /dev/null +++ b/src/pages/setting/logout/index.config.ts @@ -0,0 +1,5 @@ +export default { + navigationBarTitleText: "注销", + backgroundColor: "#dfdfdf", + disableScroll: true +}; diff --git a/src/pages/setting/logout/index.scss b/src/pages/setting/logout/index.scss new file mode 100644 index 00000000..ccf364f4 --- /dev/null +++ b/src/pages/setting/logout/index.scss @@ -0,0 +1,16 @@ +@import "@/style/theme"; + +.warn { + font-size: 0.875rem; + color: var(--wjh-color-week); +} + +.input-card { + + input { + border: 2Px solid var(--wjh-color-light); + padding: 0.3rem 0.5rem; + margin: 0.5rem 0; + border-radius: 0.2rem; + } +} diff --git a/src/pages/setting/logout/index.vue b/src/pages/setting/logout/index.vue new file mode 100644 index 00000000..ee4efba4 --- /dev/null +++ b/src/pages/setting/logout/index.vue @@ -0,0 +1,119 @@ + + + diff --git a/src/pages/suit/apply/index.module.scss b/src/pages/suit/apply/index.module.scss index 8b4e53f9..e380bcf6 100644 --- a/src/pages/suit/apply/index.module.scss +++ b/src/pages/suit/apply/index.module.scss @@ -181,3 +181,24 @@ .card-alarm { margin: 0 30Px; } + +.card-alarmZhaoHui { + margin: 0 20Px; +} + +.title { + word-break: break-word; + font-weight: var(--wjh-font-weight-medium); + text-align: left; + margin-bottom: 12px; +} + +.footer { + margin-top: 12Px; + border-top: 1Px solid var(--wjh-color-border); + padding: 12Px 0; + color: var(--wjh-color-week); + text-align: center; + font-size: .8rem; + font-weight: normal; +} diff --git a/src/pages/suit/apply/index.vue b/src/pages/suit/apply/index.vue index d76f32e4..cb92d741 100644 --- a/src/pages/suit/apply/index.vue +++ b/src/pages/suit/apply/index.vue @@ -27,7 +27,7 @@ {{ suit.name }} - + 尺码 @@ -41,7 +41,7 @@ 剩余数量 {{ suitStock === -1 ? "-" : suitStock }} - 余量不足 + 余量不足 数量 @@ -68,6 +68,13 @@ }" > + + 朝晖校区线上办理暂不可用 + 线下办理借用请前往学生事务大厅 + + 地址:综合楼一楼河畔旁 | 联系电话:88320868 + + 该校区不存在可借用正装 @@ -86,6 +93,7 @@ import { ThemeConfig, WModal } from "@/components"; +import style from "../faq/index.module.scss"; type SpecItem = { id: number, diff --git a/src/pages/suit/faq/index.module.scss b/src/pages/suit/faq/index.module.scss index 6a189914..d9f6ffcf 100644 --- a/src/pages/suit/faq/index.module.scss +++ b/src/pages/suit/faq/index.module.scss @@ -17,7 +17,7 @@ font-weight: var(--wjh-font-weight-medium); justify-content: center; text-align: center; - padding: 12Px 0; + padding-bottom: 12Px; border-bottom: 1Px solid var(--wjh-color-border); } diff --git a/src/services/api/apiList.ts b/src/services/api/apiList.ts index 29021c13..1d4b2e40 100644 --- a/src/services/api/apiList.ts +++ b/src/services/api/apiList.ts @@ -18,7 +18,9 @@ const api = { sendGraphAuthCode: "/api/user/bind/yxy/send/captcha", login: "/api/user/bind/yxy/login", } - } + }, + logout: "/api/user/del", + changePassword: "/api/user/repass", }, card: { balance: "/api/func/card/balance", diff --git a/src/services/services/userService.ts b/src/services/services/userService.ts index d530daad..94928687 100644 --- a/src/services/services/userService.ts +++ b/src/services/services/userService.ts @@ -1,12 +1,41 @@ import Taro from "@tarojs/taro"; -import store from "@/store"; +import store, {serviceStore} from "@/store"; import { fetch, FetchResult } from "@/utils"; import { api } from "../api/apiList"; import { updateDateStateWithSession } from "../utils/updateDateState"; import errCodeHandler from "../utils/errHandler"; import { ServerCode } from "../api/codes"; +import request from "../request"; export default class UserService { + static logout = (data?: { iid: string, stuid: string }) => { + return request<{ + code: number, + msg: string, + data: null; + }>( + api.user.logout, { + method: "POST", + header: { "Cookie": serviceStore.sessionID }, + data + } + ); + }; + + static changePassword = (data?: { iid: string, stuid: string, password: string }) => { + return request<{ + code: number, + msg: string, + data: null; + }>( + api.user.changePassword, { + method: "POST", + header: { "Cookie": serviceStore.sessionID }, + data + } + ); + }; + // fix: param autoLogin is overriden by showModal static async bindLibrary(data?: { password: string }, showModal = true) { return updateDateStateWithSession(