Przeglądaj źródła

登录逻辑适配多语言

xiaohaizhao 1 rok temu
rodzic
commit
f1646eb9bb

+ 1 - 1
app.js

@@ -89,7 +89,7 @@ App({
   }),
   globalData: {
     http: new ApiModel(), //接口文件
-    Language: new Language(), //接口文件
+    Language: new Language(), //语言包
     queryPer: require("./utils/queryPermissions"), //权限查询
     socketEstablish: false, //是否已经建立socket
     SocketTask: '', // Socket方法

+ 4 - 9
pages/login/modules/account.js

@@ -1,7 +1,3 @@
-const loginMsg = require("./login"),
-    md5 = require("../../../utils/md5"),
-    _Http = getApp().globalData.http;
-
 Component({
     properties: {
         language: {
@@ -41,7 +37,7 @@ Component({
         /* 验证是否允许登录 */
         allowOrNot() {
             getCurrentPages()[0].setData({
-                disabled: (this.data.accountno.length > 0 && this.data.password.length > 0) ? false : true
+                disabled: (this.data.accountno.length && this.data.password.length) ? false : true
             })
         },
         /* 改变密码输入框类型 */
@@ -58,9 +54,9 @@ Component({
         },
         /* 处理登录 */
         handleLogin() {
-            _Http.login({
+            getApp().globalData.http.login({
                 "accountno": this.data.accountno,
-                "password": md5.hexMD5(this.data.password),
+                "password": require("../../../utils/md5").md5.hexMD5(this.data.password),
                 "systemclient": "wechatsaletool"
             }).then(res => {
                 getCurrentPages()[0].setData({
@@ -74,8 +70,7 @@ Component({
                     accountno: this.data.accountno,
                     password: (this.data.memory) ? this.data.password : ''
                 })
-                loginMsg.loginMsg(res);
-                console.log('是否为初始密码', res.remindchangepassword == 1)
+                require("./login").loginMsg(res);
                 getApp().globalData.remindchangepassword = res.remindchangepassword == 1;
             })
         }

+ 16 - 17
pages/login/modules/phone.js

@@ -1,11 +1,12 @@
-let loginMsg = require("./login"),
-    md5 = require("../../../utils/md5"),
-    _Http = getApp().globalData.http,
-    deleteMark = require("../../../utils/deleteMark"),
-    downCount = null;
+let downCount = null;
 
 Component({
-    properties: {},
+    properties: {
+        language: {
+            type: Object,
+            value: {}
+        }
+    },
     options: {
         addGlobalClass: true
     },
@@ -30,8 +31,8 @@ Component({
         /* 获取验证码 */
         getPassword() {
             if (this.data.showText != "获取验证码") return;
-            if (!deleteMark.CheckPhoneNumber(this.data.phonenumber)) return;
-            _Http.getpassword({
+            if (!require("../../../utils/deleteMark").CheckPhoneNumber(this.data.phonenumber)) return;
+            getApp().globalData.http.getpassword({
                 "phonenumber": this.data.phonenumber,
                 "systemclient": "wechatsaletool"
             }).then(res => {
@@ -48,6 +49,7 @@ Component({
                     let showText = this.data.showText;
                     if (showText == 0) {
                         clearInterval(downCount)
+                        downCount = null;
                         showText = '获取验证码'
                     } else {
                         showText--
@@ -68,18 +70,16 @@ Component({
         /* 验证是否允许登录 */
         allowOrNot() {
             getCurrentPages().forEach(v => {
-                if (['pages/login/phone'].includes(v.__route__)) {
-                    v.setData({
-                        disabled: this.data.phonenumber.length == 0 || this.data.password.length == 0
-                    })
-                }
+                if (['pages/login/phone'].includes(v.__route__)) v.setData({
+                    disabled: this.data.phonenumber.length == 0 || this.data.password.length == 0
+                })
             })
         },
         /* 处理登录 */
         handleLogin() {
-            _Http.plogin({
+            getApp().globalData.http.plogin({
                 "phonenumber": this.data.phonenumber,
-                "password": md5.hexMD5(this.data.password),
+                "password": require("../../../utils/md5").hexMD5(this.data.password),
                 "systemclient": "wechatsaletool"
             }).then(res => {
                 getCurrentPages()[0].setData({
@@ -92,8 +92,7 @@ Component({
                 wx.setStorageSync('loginMsg', {
                     phonenumber: (this.data.memory) ? this.data.phonenumber : ''
                 })
-                loginMsg.loginMsg(res);
-                console.log('是否为初始密码', res.remindchangepassword == 1)
+                require("./login").loginMsg(res);
                 getApp().globalData.remindchangepassword = res.remindchangepassword == 1;
             })
         },

+ 4 - 4
pages/login/modules/phone.wxml

@@ -1,16 +1,16 @@
 <van-cell>
     <text slot='icon' class="iconfont icon-a-wodemendianxinxidianhua" />
-    <input class="input" type="number" value='{{phonenumber}}' bindinput="inputChange" data-name="phonenumber" placeholder="请输入手机号" />
+    <input class="input" type="number" value='{{phonenumber}}' bindinput="inputChange" data-name="phonenumber" placeholder="{{language['电话号码'] || '请输入手机号'}}" />
 </van-cell>
 <van-cell>
     <text slot='icon' class="iconfont icon-a-biaoqianlanxiaoxixuanzhong" />
-    <input class="input" type="number" bindinput="inputChange" data-name="password" value="{{password}}" placeholder="请输入验证码" />
+    <input class="input" type="number" bindinput="inputChange" data-name="password" value="{{password}}" placeholder="{{language['验证码'] || '请输入验证码'}}" />
     <view slot='right-icon' class="right-icon" catchtap="getPassword">
-        {{showText=='获取验证码'?showText:showText+'s'}}
+        {{showText=='获取验证码' ? (language[showText] || '获取验证码') : showText + 's'}}
     </view>
 </van-cell>
 <view class="box">
     <van-checkbox custom-class='checkbox' label-class='label' icon-size="28rpx" value="{{ memory }}" shape="square" bind:change="isMemory">
-        记住号码
+        {{language['记住号码'] || '记住号码'}}
     </van-checkbox>
 </view>

+ 4 - 9
pages/login/phone.js

@@ -6,7 +6,6 @@ Page({
         disabled: true, //是否禁用
         loading: false, //登陆中
         languages: [],
-
     },
     async onLoad(options) {
         if (wx.getStorageSync('isAgree')) this.setData({
@@ -19,7 +18,7 @@ Page({
             id: "10026401",
             content: {}
         }).then(res => {
-            console.log("支持的语言", res)
+            console.log("语言包列表", res)
             if (res.msg == '成功') {
                 let item = res.data.find(v => v.languagecode == (wx.getStorageSync('languagecode') || 'ZH'))
                 this.setData({
@@ -31,7 +30,6 @@ Page({
             }
         })
         getApp().globalData.Language.getLanguagePackage(this);
-
     },
     changeLanguages(e) {
         let item = this.data.languages[e.detail.value];
@@ -45,14 +43,12 @@ Page({
         })
     },
     changeTitle() {
-        wx.setNavigationBarTitle({
-            title: getApp().globalData.Language.getMapText('账户登录')
-        })
+        getApp().globalData.Language.setNavBarTitle('账户登录')
     },
     /* 微信登录 */
     wechatLogin() {
         if (!this.data.isAgree) return Toast({
-            message: '请阅读并勾选用户协议',
+            message: getApp().globalData.Language.getMapText("确认用户协议") || '请阅读并勾选用户协议',
             position: 'bottom'
         });
         wx.login({
@@ -68,7 +64,6 @@ Page({
                             icon: "none"
                         })
                         require("./modules/login").loginMsg(res);
-                        console.log('是否为初始密码', res.remindchangepassword == 1)
                         getApp().globalData.remindchangepassword = res.remindchangepassword == 1;
                     })
                 } else {
@@ -81,7 +76,7 @@ Page({
     userLogin() {
         if (this.data.loading || this.data.disabled) return;
         if (!this.data.isAgree) return Toast({
-            message: '请阅读并勾选用户协议',
+            message: getApp().globalData.Language.getMapText("确认用户协议") || '请阅读并勾选用户协议',
             position: 'bottom'
         });
         this.setData({

+ 6 - 4
pages/login/phone.wxml

@@ -3,7 +3,7 @@
 </view>
 
 <!-- 手机号登录  -->
-<!-- <phone id='login' /> -->
+<!-- <phone id='login' language='{{language}}' /> -->
 <!-- 账号登录 -->
 <account id='login' language='{{language}}' />
 <view style="width: 100vw; text-align: center;margin-top: 60rpx;margin-bottom: 40rpx;">
@@ -24,6 +24,8 @@
 
 <van-toast id="van-toast" />
 
-<picker mode="selector" range="{{languages}}" range-key='languagename' value="{{rowIndex}}" bindchange='changeLanguages'>
-	{{languagename}}
-</picker>
+<view style="text-align: center; margin-top: 20px;">
+	<picker mode="selector" range="{{languages}}" range-key='languagename' value="{{rowIndex}}" bindchange='changeLanguages'>
+		{{languagename}}
+	</picker>
+</view>

+ 8 - 16
pages/login/retrievePassword.js

@@ -1,12 +1,7 @@
-const _Http = getApp().globalData.http;
 import Toast from '@vant/weapp/toast/toast';
 const md5 = require('../../utils/md5');
 let passwordDowm = null;
 Page({
-
-    /**
-     * 页面的初始数据
-     */
     data: {
         from: {
             accountno: "", //账户名
@@ -19,25 +14,22 @@ Page({
         confirmPassword: "", //两次密码是否一致
         countDown: "", //倒计时
     },
-
-    /**
-     * 生命周期函数--监听页面加载
-     */
     onLoad(options) {
-
+        getApp().globalData.Language.getLanguagePackage(this, '找回密码');
     },
     /* 获取验证码 */
     getPassword() {
         let accountno = this.data.from.accountno;
         if (!accountno) return Toast({
-            message: '您还未填写账户名称',
+            message: getApp().globalData.Language.getMapText('还未填写账号') || '您还未填写账户名称',
             position: 'bottom'
         });
-        if (this.data.countDown != '') return Toast({
+        if (this.data.countDown != '') return;
+        /*  Toast({
             message: '您已发送验证码,请勿重复获取',
             position: 'bottom'
-        });
-        _Http.base({
+        }); */
+        getApp().globalData.http.base({
             "classname": "common.usercenter.usercenter",
             "method": "forgetPassword_getPassWord",
             "content": {
@@ -103,14 +95,14 @@ Page({
     changePassword() {
         if (this.data.disabled || this.data.loading) return;
         if (this.data.confirmPassword != true) return Toast({
-            message: '请检查新密码与确认密码',
+            message: getApp().globalData.Language.getMapText('两次输入的密码不一致') || '请检查新密码与确认密码',
             position: 'bottom'
         });
         let from = this.data.from;
         this.setData({
             loading: true
         })
-        _Http.base({
+        getApp().globalData.http.base({
             "classname": "common.usercenter.usercenter",
             "method": "forgetPassword_changePassWord",
             "content": {

+ 31 - 29
pages/login/retrievePassword.scss

@@ -9,46 +9,48 @@
 	margin: 20rpx auto;
 
 	.icon-box {
-			width: 40rpx;
-			height: 40rpx;
-			margin-right: 50rpx;
+		width: 40rpx;
+		height: 40rpx;
+		margin-right: 50rpx;
 
-			.iconfont {
-					font-size: 40rpx;
-					color: var(--assist);
-			}
+		.iconfont {
+			font-size: 40rpx;
+			color: var(--assist);
+		}
 	}
 
 	.input {
-			flex: 1;
-			font-size: 28rpx;
-			font-family: PingFang SC-Regular, PingFang SC;
-			color: #333333;
-			margin-top: -5rpx;
+		flex: 1;
+		font-size: 28rpx;
+		font-family: PingFang SC-Regular, PingFang SC;
+		color: #333333;
+		margin-top: -5rpx;
 	}
 
 	.auth-code {
-			width: 180rpx;
-			height: 40rpx;
-			line-height: 40rpx;
-			text-align: center;
-			flex-shrink: 0;
-			font-size: 28rpx;
-			font-family: PingFang SC-Regular, PingFang SC;
-			color: #3874F6;
-			border-left: 1rpx solid #EEE;
+		width: 180rpx;
+		height: 40rpx;
+		line-height: 40rpx;
+		text-align: center;
+		flex-shrink: 0;
+		font-size: 28rpx;
+		font-family: PingFang SC-Regular, PingFang SC;
+		color: #3874F6;
+		border-left: 1rpx solid #EEE;
 	}
 
-	.errmsg {
-			font-size: 24rpx;
-			font-family: PingFang SC-Regular, PingFang SC;
-			color: #FF3B30;
+}
+
+.errmsg {
+	font-size: 24rpx;
+	font-family: PingFang SC-Regular, PingFang SC;
+	color: #FF3B30;
 
-			.iconfont {
-					padding-left: 10rpx;
-					color: #BBBBBB;
-			}
+	.iconfont {
+		padding-left: 10rpx;
+		color: #BBBBBB;
 	}
+	margin-left: 40rpx;
 }
 
 .but-style {

+ 9 - 9
pages/login/retrievePassword.wxml

@@ -2,31 +2,31 @@
     <view class="icon-box">
         <text class="iconfont icon-a-biaoqianlanwodexuanzhong" />
     </view>
-    <input class="input" type="text" bindinput="formInput" data-name="accountno" placeholder='请填写账户名' />
+    <input class="input" type="text" bindinput="formInput" data-name="accountno" placeholder="{{language['账户']||'请填写账户名'}}" />
 </view>
 <view class='input-field'>
     <view class="icon-box">
         <text class="iconfont icon-a-biaoqianlanxiaoxixuanzhong" />
     </view>
-    <input class="input" type="number" bindinput="formInput" data-name="password" placeholder='请填写验证码' />
-    <view class="auth-code" bindtap="getPassword">{{countDown?countDown+'s':'获取验证码'}}</view>
+    <input class="input" type="number" bindinput="formInput" data-name="password" placeholder="{{language['验证码']||'请填写验证码'}}" />
+    <view class="auth-code" bindtap="getPassword">{{countDown?countDown+'s':(language['获取验证码']||'获取验证码')}}</view>
 </view>
 <view class='input-field'>
     <view class="icon-box">
         <text class="iconfont icon-a-wodemima" />
     </view>
-    <input class="input" password bindinput="formInput" data-name="newPassword" placeholder='请设置6-20位新密码' />
+    <input class="input" password bindinput="formInput" data-name="newPassword" placeholder="{{language['新密码']||'请设置6-20位新密码'}}" />
 </view>
 <view class='input-field'>
     <view class="icon-box">
         <text class="iconfont icon-a-wodemima" />
     </view>
-    <input class="input" password value="{{from.verifyNewPassword}}" bindinput="formInput" data-name="verifyNewPassword" placeholder='请确认新密码' />
-    <view wx:if="{{confirmPassword===false}}" class="errmsg">两次密码不一致
-        <van-icon class="iconfont" name="clear" bind:click="clearNewPassword" />
-    </view>
+    <input class="input" password value="{{from.verifyNewPassword}}" bindinput="formInput" data-name="verifyNewPassword" placeholder="{{language['确认密码']||'请确认新密码'}}" />
+    <van-icon class="iconfont" style="color: #666;" name="clear" bind:click="clearNewPassword" />
 </view>
+<!-- <view wx:if="{{confirmPassword===false}}" class="errmsg">{{language['两次输入的密码不一致']||'两次输入的密码不一致'}}</view> -->
+
 <view style="width: 100%; text-align: center;margin-top: 100rpx;">
-    <van-button disabled='{{disabled}}' bindtap="changePassword" loading='{{loading}}' loading-text="修改中..." custom-class='but-style'>确定修改</van-button>
+    <van-button disabled='{{disabled}}' bindtap="changePassword" loading='{{loading}}' loading-text="{{(language['修改中']||'修改中')+'...'}}" custom-class='but-style'>{{language['确认修改']||'确定修改'}}</van-button>
 </view>
 <van-toast id="van-toast" />

+ 1 - 3
pages/login/selectSite.js

@@ -7,8 +7,6 @@ Page({
         require('./modules/login').init();
     },
     onShow() {
-        if (wx.getStorageSync('languagecode') != 'ZH') wx.setNavigationBarTitle({
-            title: getApp().globalData.Language.getMapText('选择站点')
-        })
+        if (wx.getStorageSync('languagecode') != 'ZH') getApp().globalData.Language.setNavBarTitle('选择站点')
     }
 })

+ 7 - 0
project.private.config.json

@@ -8,6 +8,13 @@
     "condition": {
         "miniprogram": {
             "list": [
+                {
+                    "name": "找回密码",
+                    "pathName": "pages/login/retrievePassword",
+                    "query": "",
+                    "launchMode": "default",
+                    "scene": null
+                },
                 {
                     "name": "首页",
                     "pathName": "pages/tabbar/home/index",

+ 3 - 3
utils/deleteMark.js

@@ -2,7 +2,7 @@
 const queryStr = (str) => {
     const pattern = new RegExp(/[`$%^&()\=<>"{}|\/;'\\[\]·¥%……&——\={}|]/g);
     if (pattern.test(str) == true) wx.showToast({
-        title: '该符号不可输入!',
+        title: getApp().globalData.Language.getMapText('存在特殊符号') || '该符号不可输入!',
         icon: "none"
     })
     return str.replace(pattern, '');
@@ -12,7 +12,7 @@ const CheckPhoneNumber = (num) => {
     const reg = /^1(3[0-9]|4[01456879]|5[0-35-9]|6[2567]|7[0-8]|8[0-9]|9[0-35-9])\d{8}$/;
     let isAllow = reg.test(num);
     if (!isAllow) wx.showToast({
-        title: '请输入正确的11位手机号码!',
+        title: getApp().globalData.Language.getMapText('号码格式错误') || '请输入正确的11位手机号码!',
         icon: "none"
     })
     return isAllow;
@@ -22,7 +22,7 @@ const CheckEmail = (num) => {
     const reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
     let isAllow = reg.test(num);
     if (!isAllow) wx.showToast({
-        title: '请输入正确的邮箱格式!',
+        title: getApp().globalData.Language.getMapText('邮箱错误') || '请输入正确的邮箱格式!',
         icon: "none"
     })
     return isAllow;

+ 8 - 2
utils/language.js

@@ -22,13 +22,15 @@ class Language {
 		})
 	}
 
-	async getLanguagePackage(that) {
+	async getLanguagePackage(that, setNavBarTitle) {
 		that.setData({
 			language: this.languagePackage || await this.getLanguages(wx.getStorageSync('languagecode'))
 		})
+		if (setNavBarTitle) this.setNavBarTitle(setNavBarTitle)
 	}
 
 	getMapText(text) {
+		console.log("getMapText:", text, this.languagePackage[text] || text)
 		try {
 			return this.languagePackage[text] || text
 		} catch (error) {
@@ -36,7 +38,11 @@ class Language {
 			return text
 		}
 	}
-
+	setNavBarTitle(title) {
+		wx.setNavigationBarTitle({
+			title: this.getMapText(title)
+		})
+	}
 }
 export {
 	Language