From 2d5ce655ef8d228a96d5d7db2fc4cb0b1100cfe1 Mon Sep 17 00:00:00 2001 From: Dawn1Ocean <1785590531@qq.com> Date: Fri, 15 Mar 2024 01:58:59 +0800 Subject: [PATCH] add member status judgement --- mock/api.ts | 8 +- src/custom-tab-bar/index.tsx | 126 ++++++++++++++++++------------- src/pages/user/member/member.tsx | 54 ++++--------- src/pages/user/user.tsx | 3 +- src/plain-text/Button.ts | 15 ++++ src/service/memberLogin.ts | 93 +++++++++++++++++++++++ src/wechat/index.ts | 2 +- 7 files changed, 203 insertions(+), 98 deletions(-) create mode 100644 src/service/memberLogin.ts diff --git a/mock/api.ts b/mock/api.ts index cfc9328..916629a 100644 --- a/mock/api.ts +++ b/mock/api.ts @@ -50,10 +50,16 @@ export default { data: {}, }, 'POST /member/login': { - data: {}, + success: true, + data: { + isMember: true, + }, }, 'GET /member/tickets/uncompleted': { success: true, data: uncompleted, }, + 'POST /member/logout': { + success: true, + }, }; diff --git a/src/custom-tab-bar/index.tsx b/src/custom-tab-bar/index.tsx index 8001521..03968ea 100644 --- a/src/custom-tab-bar/index.tsx +++ b/src/custom-tab-bar/index.tsx @@ -6,65 +6,85 @@ import wechatUser from '@/wechat'; import 'taro-ui/dist/style/index.scss'; import './index.scss'; -const navList: Array = [ - { - pagePath: '/pages/index/index', - text: pt.get().tabBar.indexText, - }, - { - pagePath: '/pages/repair/repair', - text: pt.get().tabBar.repairText, - }, - { - pagePath: '/pages/member/member', - text: pt.get().tabBar.memberText, - }, - { - pagePath: '/pages/user/user', - text: pt.get().tabBar.userText, - }, -]; +const navList: () => Array = () => { + return wechatUser.getAccess() + ? [ + { + pagePath: '/pages/index/index', + text: pt.get().tabBar.indexText, + }, + { + pagePath: '/pages/repair/repair', + text: pt.get().tabBar.repairText, + }, + { + pagePath: '/pages/member/member', + text: pt.get().tabBar.memberText, + }, + { + pagePath: '/pages/user/user', + text: pt.get().tabBar.userText, + }, + ] + : [ + { + pagePath: '/pages/index/index', + text: pt.get().tabBar.indexText, + }, + { + pagePath: '/pages/repair/repair', + text: pt.get().tabBar.repairText, + }, + { + pagePath: '/pages/user/user', + text: pt.get().tabBar.userText, + }, + ]; +}; + +const tabList = () => { + return wechatUser.getAccess() + ? [ + { + title: pt.get().tabBar.indexText, + iconType: 'home', + }, + { + title: pt.get().tabBar.repairText, + iconType: 'settings', + }, + { + title: pt.get().tabBar.memberText, + iconType: 'sketch', + }, + { + title: pt.get().tabBar.userText, + iconType: 'user', + }, + ] + : [ + { + title: pt.get().tabBar.indexText, + iconType: 'home', + }, + { + title: pt.get().tabBar.repairText, + iconType: 'settings', + }, + { + title: pt.get().tabBar.userText, + iconType: 'user', + }, + ]; +}; export default class Index extends Component { state = { selected: 0, - tabList: wechatUser.getAccess() - ? [ - { - title: pt.get().tabBar.indexText, - iconType: 'home', - }, - { - title: pt.get().tabBar.repairText, - iconType: 'settings', - }, - { - title: pt.get().tabBar.memberText, - iconType: 'sketch', - }, - { - title: pt.get().tabBar.userText, - iconType: 'user', - }, - ] - : [ - { - title: pt.get().tabBar.indexText, - iconType: 'home', - }, - { - title: pt.get().tabBar.repairText, - iconType: 'settings', - }, - { - title: pt.get().tabBar.userText, - iconType: 'user', - }, - ], }; handleClick(idx: number) { - this.switchTab(idx, navList[idx].pagePath); + this.switchTab(idx, navList()[idx].pagePath); } switchTab(idx: number, url: string) { @@ -82,7 +102,7 @@ export default class Index extends Component { return ( diff --git a/src/pages/user/member/member.tsx b/src/pages/user/member/member.tsx index f0237c2..cd43f80 100644 --- a/src/pages/user/member/member.tsx +++ b/src/pages/user/member/member.tsx @@ -1,13 +1,12 @@ import { Component, ReactNode } from 'react'; import { AtForm, AtInput, AtButton, AtMessage } from 'taro-ui'; -import { getUrl } from '@/service'; import Taro from '@tarojs/taro'; import pt from '@/plain-text'; +import { memberLogin, memberLogout } from '@/service/memberLogin'; +import wechatUser from '@/wechat'; import './member.scss'; -const loginInterval = 5000; - -export default class MemberPage extends Component { +export default class UserMemberPage extends Component { state = { stuid: '', passwd: '', @@ -32,46 +31,15 @@ export default class MemberPage extends Component { return passwd; } onSubmit() { - this.setState({ - isLoading: true, - isDisable: true, - }); - console.log([this.state.stuid, this.state.passwd]); - Taro.request({ - url: getUrl('/member/login'), - method: 'POST', - data: { - token: 'token_test', - name: this.state.stuid, - passwd: this.state.passwd, - }, - }) - .then((res) => { - console.log(res.data); - Taro.atMessage({ - message: pt.get().button.loginText.success, - type: 'success', - }); - }) - .catch((err) => { - console.log(err); - Taro.atMessage({ - message: pt.get().button.loginText.error + err.toString(), - type: 'error', - }); - }); - this.setState({ - isLoading: false, - }); - setTimeout(() => { - this.setState({ - isDisable: false, - }); - }, loginInterval); + memberLogin(this); + } + + onLogout() { + memberLogout(this); } render(): ReactNode { - return ( + return !wechatUser.getAccess() ? ( + ) : ( + + {pt.get().button.buttonText.logout} + ); } } diff --git a/src/pages/user/user.tsx b/src/pages/user/user.tsx index 84f7bdc..e7300f4 100644 --- a/src/pages/user/user.tsx +++ b/src/pages/user/user.tsx @@ -24,14 +24,13 @@ export default class UserPage extends Component { clicks: memberClickTimes, isToastOpen: false, toastText: '', - haveAccess: wechatUser.getAccess(), }; // 以下是TabBar相关 pageCtx = Taro.getCurrentInstance().page; componentDidShow() { const tabbar = Taro.getTabBar(this.pageCtx); - tabbar?.setSelected(this.state.haveAccess ? 3 : 2); + tabbar?.setSelected(wechatUser.getAccess() ? 3 : 2); } // 以上是TabBar相关 diff --git a/src/plain-text/Button.ts b/src/plain-text/Button.ts index a6daadc..2efd33b 100644 --- a/src/plain-text/Button.ts +++ b/src/plain-text/Button.ts @@ -3,6 +3,7 @@ export interface ButtonText { submit: string; reset: string; login: string; + logout: string; }; submitText: { success: string; @@ -12,6 +13,10 @@ export interface ButtonText { success: string; error: string; }; + logoutText: { + success: string; + error: string; + }; } export const buttonZhCn: ButtonText = { @@ -19,6 +24,7 @@ export const buttonZhCn: ButtonText = { submit: '提交', reset: '清空', login: '登录', + logout: '登出', }, submitText: { success: '提交成功', @@ -28,6 +34,10 @@ export const buttonZhCn: ButtonText = { success: '登录成功', error: '登录失败', }, + logoutText: { + success: '登出成功', + error: '登出失败', + }, }; export const buttonEnUs: ButtonText = { @@ -35,6 +45,7 @@ export const buttonEnUs: ButtonText = { submit: 'Submit', reset: 'Reset', login: 'Login', + logout: 'Logout', }, submitText: { success: 'Success', @@ -44,4 +55,8 @@ export const buttonEnUs: ButtonText = { success: 'Login Success', error: 'Login Failed', }, + logoutText: { + success: 'Logout Success', + error: 'Logout Failed', + }, }; diff --git a/src/service/memberLogin.ts b/src/service/memberLogin.ts new file mode 100644 index 0000000..f8c3c89 --- /dev/null +++ b/src/service/memberLogin.ts @@ -0,0 +1,93 @@ +import UserMemberPage from '@/pages/user/member/member'; +import Taro from '@tarojs/taro'; +import pt from '@/plain-text'; +import wechatUser from '@/wechat'; +import { getUrl } from '.'; + +const logInterval = 5000; + +export function memberLogin(that: UserMemberPage) { + that.setState({ + isLoading: true, + }); + Taro.request({ + url: getUrl('/member/login'), + method: 'POST', + data: { + token: 'token_test', + name: that.state.stuid, + phone: that.state.passwd, + }, + }) + .then((res) => { + console.log(res.data); + that.setState({ + isLoading: false, + }); + Taro.atMessage({ + message: pt.get().button.loginText.success, + type: 'success', + }); + wechatUser.setAccess(true); + Taro.reLaunch({ + url: '/pages/member/member', + }); + }) + .catch((err) => { + console.log(err); + that.setState({ + isLoading: false, + }); + Taro.atMessage({ + message: pt.get().button.loginText.error + err.toString(), + type: 'error', + }); + setTimeout(() => { + this.setState({ + isDisable: false, + }); + }, logInterval); + }); +} + +export function memberLogout(that: UserMemberPage) { + that.setState({ + isLoading: true, + }); + Taro.request({ + url: getUrl('/member/logout'), + method: 'POST', + data: { + token: 'token_test', + }, + }) + .then((res) => { + console.log(res.data); + that.setState({ + isLoading: false, + }); + Taro.atMessage({ + message: pt.get().button.logoutText.success, + type: 'success', + }); + wechatUser.setAccess(false); + Taro.reLaunch({ + url: '/pages/index/index', + }); + }) + .catch((err) => { + console.log(err); + that.setState({ + isLoading: false, + }); + Taro.atMessage({ + message: pt.get().button.logoutText.error + err.toString(), + type: 'error', + }); + setTimeout(() => { + this.setState({ + isDisable: false, + }); + }, logInterval); + }); +} diff --git a/src/wechat/index.ts b/src/wechat/index.ts index b78d136..f3e566b 100644 --- a/src/wechat/index.ts +++ b/src/wechat/index.ts @@ -6,7 +6,7 @@ class WechatUser { constructor() { this.userInfo = ''; this.hasUserInfo = false; - this.isMember = true; + this.isMember = false; } getAccess() {