add /member/login service; beautify member page with name&avatar

main
Dawn1Ocean 2024-03-19 23:39:01 +08:00
parent 4f914a7563
commit 5c78139d5a
6 changed files with 46 additions and 24 deletions

View File

@ -65,7 +65,10 @@ export default {
'POST /member/login': { 'POST /member/login': {
success: true, success: true,
data: { data: {
isMember: true, avatar:
'https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png',
name: '宇航员',
phone: '13311451419',
}, },
}, },
'GET /tickets/uncompleted': { 'GET /tickets/uncompleted': {

View File

@ -1,23 +1,23 @@
import React from 'react'; import React from 'react';
import { View, Image } from '@tarojs/components'; import { View, Image } from '@tarojs/components';
import pt from '@/plain-text'; import pt from '@/plain-text';
import logo from '@/assets/images/UserPage/logo.png'; import wechatUser from '@/wechat';
export default class MemberTitleCard extends React.Component { export default class MemberTitleCard extends React.Component {
render(): React.ReactNode { render(): React.ReactNode {
const memberPage = pt.get().memberPage; const memberPage = pt.get().memberPage;
return ( return (
<View className='at-row at-row__align--center'> <View className='at-row at-row__align--end'>
<View className='at-col at-col-1 at-col--auto'> <View className='at-col at-col-1 at-col--auto'>
<Image <Image
style='width: 100rpx; height: 100rpx; margin-left: 30rpx;' style='width: 150rpx; height: 150rpx; margin-left: 60rpx;'
src={logo} src={wechatUser.getInfo().avatar}
mode='aspectFit' mode='aspectFit'
/> />
</View> </View>
<View className='page-title'> <View className='page-title' style={{ marginLeft: '30rpx' }}>
<View className='at-article__h1' style={{ fontWeight: 'bold' }}> <View className='at-article__h1' style={{ fontWeight: 'bold' }}>
{memberPage.mainTitleLine} {memberPage.mainTitleLine + wechatUser.getInfo().name}
</View> </View>
<View className='at-article__h2'>{memberPage.subTitleLine}</View> <View className='at-article__h2'>{memberPage.subTitleLine}</View>
</View> </View>

View File

@ -13,6 +13,7 @@ export interface ButtonText {
loginText: { loginText: {
success: string; success: string;
error: string; error: string;
fail: string;
}; };
logoutText: { logoutText: {
success: string; success: string;
@ -35,6 +36,7 @@ export const buttonZhCn: ButtonText = {
loginText: { loginText: {
success: '登录成功', success: '登录成功',
error: '登录失败', error: '登录失败',
fail: '请检查用户名或密码!',
}, },
logoutText: { logoutText: {
success: '登出成功', success: '登出成功',
@ -57,6 +59,7 @@ export const buttonEnUs: ButtonText = {
loginText: { loginText: {
success: 'Login Success', success: 'Login Success',
error: 'Login Failed', error: 'Login Failed',
fail: 'Please check username or password!',
}, },
logoutText: { logoutText: {
success: 'Logout Success', success: 'Logout Success',

View File

@ -38,7 +38,7 @@ export interface MemberPageText {
} }
export const memberPageZhCn: MemberPageText = { export const memberPageZhCn: MemberPageText = {
mainTitleLine: '您好,这里是E志者协会', mainTitleLine: '您好,',
subTitleLine: '祝你满绩每一天', subTitleLine: '祝你满绩每一天',
dutyCount: { dutyCount: {
button: '更新值班人数', button: '更新值班人数',
@ -100,7 +100,7 @@ export const memberPageZhCn: MemberPageText = {
}; };
export const memberPageEnUs: MemberPageText = { export const memberPageEnUs: MemberPageText = {
mainTitleLine: 'Hi! This is EVA.', mainTitleLine: 'Hi! ',
subTitleLine: 'Have a great day!', subTitleLine: 'Have a great day!',
dutyCount: { dutyCount: {
button: 'Update Duty Count', button: 'Update Duty Count',

View File

@ -1,7 +1,7 @@
import UserMemberPage from '@/pages/user/member/member'; import UserMemberPage from '@/pages/user/member/member';
import Taro from '@tarojs/taro'; import Taro from '@tarojs/taro';
import pt from '@/plain-text'; import pt from '@/plain-text';
import wechatUser from '@/wechat'; import wechatUser, { UserInfo } from '@/wechat';
import { getUrl } from '.'; import { getUrl } from '.';
export function memberLogin(that: UserMemberPage) { export function memberLogin(that: UserMemberPage) {
@ -22,14 +22,22 @@ export function memberLogin(that: UserMemberPage) {
that.setState({ that.setState({
isLoading: false, isLoading: false,
}); });
Taro.atMessage({ if (res.data.success) {
message: pt.get().button.loginText.success, Taro.atMessage({
type: 'success', message: pt.get().button.loginText.success,
}); type: 'success',
wechatUser.setAccess(true); });
Taro.reLaunch({ wechatUser.setInfo(res.data.data as UserInfo);
url: '/pages/member/member', wechatUser.setAccess(true);
}); Taro.reLaunch({
url: '/pages/member/member',
});
} else {
Taro.atMessage({
message: pt.get().button.loginText.fail,
type: 'error',
});
}
}) })
.catch((err) => { .catch((err) => {
console.log(err); console.log(err);

View File

@ -1,11 +1,20 @@
export interface UserInfo {
name: string;
phone: string;
avatar: string;
}
class WechatUser { class WechatUser {
private userInfo: any; private userInfo: UserInfo;
private isMember: boolean; private isMember: boolean;
hasUserInfo: boolean;
constructor() { constructor() {
this.userInfo = ''; this.userInfo = {
this.hasUserInfo = false; name: '亦可',
phone: '12345678901',
avatar:
'https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png',
};
this.isMember = false; this.isMember = false;
} }
@ -17,9 +26,8 @@ class WechatUser {
return this.userInfo; return this.userInfo;
} }
setInfo(userInfo: any) { setInfo(userInfo: UserInfo) {
this.userInfo = userInfo; this.userInfo = userInfo;
this.hasUserInfo = true;
} }
setAccess(isMember: boolean) { setAccess(isMember: boolean) {