From 91751b1b9b16c0044e16ad80c237b7275a409046 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期四, 06 三月 2025 14:47:12 +0800
Subject: [PATCH] 修改首页和登录相关
---
pages/login/login.js | 318 +++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 270 insertions(+), 48 deletions(-)
diff --git a/pages/login/login.js b/pages/login/login.js
index a957679..a4dd503 100644
--- a/pages/login/login.js
+++ b/pages/login/login.js
@@ -1,4 +1,8 @@
const app = getApp();
+const storage = require('../../utils/storage.js');
+const {
+ post
+} = require('../../api/request.js');
Page({
@@ -6,79 +10,217 @@
* 椤甸潰鐨勫垵濮嬫暟鎹�
*/
data: {
- mobile: '',
- code: '',
- codeSent: false,
- countdown: 60,
+ phone: '',
+ verificationCode: '',
+ codeText: '鑾峰彇楠岃瘉鐮�',
+ counting: false,
+ countDown: 60,
+ projectName: '鍢夊唱鍏抽」鐩�', // 榛樿椤圭洰鍚嶇О
+ selectedProject: 'JYG', // 榛樿椤圭洰浠g爜
+ showErrorDialog: false
},
- bindMobileInput: function (e) {
+ /**
+ * 缁戝畾鎵嬫満鍙疯緭鍏�
+ */
+ bindPhoneInput: function (e) {
this.setData({
- mobile: e.detail.value,
+ phone: e.detail.value
});
},
- sendCode: function () {
- if (!this.data.mobile) {
+
+ /**
+ * 缁戝畾楠岃瘉鐮佽緭鍏�
+ */
+ bindCodeInput: function (e) {
+ this.setData({
+ verificationCode: e.detail.value
+ });
+ },
+
+ /**
+ * 鍙戦�侀獙璇佺爜
+ */
+ sendVerificationCode: function () {
+ const {
+ phone,
+ counting
+ } = this.data;
+
+ // 濡傛灉姝e湪鍊掕鏃讹紝鍒欎笉鍏佽鍐嶆鍙戦��
+ if (counting) {
+ return;
+ }
+
+ // 楠岃瘉鎵嬫満鍙锋牸寮�
+ if (!/^1\d{10}$/.test(phone)) {
wx.showToast({
- title: '璇疯緭鍏ユ墜鏈哄彿',
- icon: 'none',
- duration: 2000,
+ title: '璇疯緭鍏ユ纭殑鎵嬫満鍙�',
+ icon: 'none'
});
return;
}
- // 鍦ㄨ繖閲屽鐞嗗彂閫侀獙璇佺爜鐨勯�昏緫锛屽彲浠ヨ皟鐢ㄥ悗鍙版帴鍙e疄鐜�
- // 浠ヤ笅鏄竴涓畝鍗曠殑绀轰緥锛屼粎浣滃弬鑰�
- wx.showToast({
- title: '楠岃瘉鐮佸凡鍙戦��',
- icon: 'success',
- duration: 2000,
- });
+ // 寮�濮嬪�掕鏃�
+ this.startCountDown();
- this.setData({
- codeSent: true,
- });
-
- // 鍚姩鍊掕鏃�
- this.startCountdown();
+ // 鍙戦�侀獙璇佺爜璇锋眰
+ this.postCode();
},
- //鍊掕鏃�
- startCountdown: function () {
- let that = this;
- let timer = setInterval(function () {
- let countdown = that.data.countdown - 1;
- that.setData({
- countdown: countdown,
- });
- if (countdown <= 0) {
+ /**
+ * 寮�濮嬪�掕鏃�
+ */
+ startCountDown: function () {
+ this.setData({
+ counting: true,
+ countDown: 60
+ });
+
+ const timer = setInterval(() => {
+ if (this.data.countDown <= 1) {
clearInterval(timer);
- that.setData({
- codeSent: false,
- countdown: 60,
+ this.setData({
+ counting: false,
+ codeText: '鑾峰彇楠岃瘉鐮�'
+ });
+ } else {
+ this.setData({
+ countDown: this.data.countDown - 1,
+ codeText: `${this.data.countDown - 1}绉掑悗閲嶅彂`
});
}
}, 1000);
+
+ // 淇濆瓨timer寮曠敤锛屼互渚垮湪椤甸潰鍗歌浇鏃舵竻闄�
+ this.countDownTimer = timer;
+ },
+
+ /**
+ * 鍋滄鍊掕鏃�
+ */
+ stopCountDown: function () {
+ if (this.countDownTimer) {
+ clearInterval(this.countDownTimer);
+ }
+ this.setData({
+ counting: false,
+ codeText: '鑾峰彇楠岃瘉鐮�'
+ });
},
/**
* 鐧诲綍
*/
- login: function (e) {
- console.log("login")
- let userName = "寮犱笁"
- wx.navigateTo({
- url: '/pages/wxbind/wxbind'
- })
+ login: function () {
+ const {
+ phone,
+ verificationCode
+ } = this.data;
+
+ // 楠岃瘉鎵嬫満鍙峰拰楠岃瘉鐮�
+ if (!/^1\d{10}$/.test(phone)) {
+ wx.showToast({
+ title: '璇疯緭鍏ユ纭殑鎵嬫満鍙�',
+ icon: 'none'
+ });
+ return;
+ }
+
+ if (!/^\d{6}$/.test(verificationCode)) {
+ wx.showToast({
+ title: '璇疯緭鍏�6浣嶉獙璇佺爜',
+ icon: 'none'
+ });
+ return;
+ }
+
+ // 鏄剧ず鍔犺浇涓�
+ wx.showLoading({
+ title: '鐧诲綍涓�...',
+ mask: true
+ });
+ this.wsLogin();
+
+
+ // 鍙戦�佺櫥褰曡姹�
+ post('/api/loginByCode', {
+ phone: phone,
+ code: verificationCode,
+ projectCode: this.data.selectedProject
+ }).then(res => {
+ wx.hideLoading();
+
+ if (res.code === 0 && res.data) {
+ // 淇濆瓨鐢ㄦ埛淇℃伅鍜宼oken
+ storage.setUserInfo(res.data);
+ storage.setToken(res.data.token);
+
+ // 璺宠浆鍒伴椤�
+ wx.switchTab({
+ url: '/pages/index/index'
+ });
+ } else {
+ wx.showToast({
+ title: res.msg || '鐧诲綍澶辫触锛岃閲嶈瘯',
+ icon: 'none'
+ });
+ }
+ }).catch(err => {
+ wx.hideLoading();
+ console.error('鐧诲綍澶辫触', err);
+ wx.showToast({
+ title: '缃戠粶寮傚父锛岃閲嶈瘯',
+ icon: 'none'
+ });
+ });
},
+ /**
+ * 璺宠浆鍒版敞鍐岄〉闈�
+ */
+ goToRegister: function () {
+ wx.showToast({
+ title: '娉ㄥ唽鍔熻兘鏆傛湭寮�鏀�',
+ icon: 'none',
+ duration: 2000
+ });
+ },
+ /**
+ * 璺宠浆鍒板繕璁板瘑鐮侀〉闈�
+ */
+ goToForgetPassword: function () {
+ wx.showToast({
+ title: '鎵惧洖瀵嗙爜鍔熻兘鏆傛湭寮�鏀�',
+ icon: 'none',
+ duration: 2000
+ });
+ },
/**
* 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇
*/
- onLoad(options) {
-
+ onLoad: function (options) {
+ // 鑾峰彇閫夋嫨鐨勯」鐩�
+ if (options.project) {
+ this.setData({
+ selectedProject: options.project,
+ projectName: options.project === 'JYG' ? '鍢夊唱鍏抽」鐩�' : '姘戝嫟椤圭洰'
+ });
+ } else {
+ // 灏濊瘯浠庢湰鍦板瓨鍌ㄨ幏鍙栧凡閫夋嫨鐨勯」鐩�
+ storage.getItem('selectedProject').then(project => {
+ if (project) {
+ this.setData({
+ selectedProject: project,
+ projectName: project === 'JYG' ? '鍢夊唱鍏抽」鐩�' : '姘戝嫟椤圭洰'
+ });
+ }
+ }).catch(err => {
+ console.error('鑾峰彇宸查�夋嫨椤圭洰澶辫触:', err);
+ });
+ }
},
/**
@@ -106,7 +248,11 @@
* 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍗歌浇
*/
onUnload() {
-
+ // 娓呴櫎楠岃瘉鐮佸�掕鏃跺畾鏃跺櫒
+ if (this.countDownTimer) {
+ clearInterval(this.countDownTimer);
+ this.countDownTimer = null;
+ }
},
/**
@@ -129,7 +275,83 @@
onShareAppMessage() {
},
-
-
-
+ //鑾峰彇楠岃瘉鐮�
+ postCode: function () {
+ const params = {
+ url: 'wx/client/send_sms?phoneNumber=' + this.data.phone
+ };
+ post(params)
+ .then((data) => {
+ wx.showToast({
+ title: '楠岃瘉鐮佸凡鍙戦��',
+ icon: 'success',
+ duration: 2000,
+ });
+ this.setData({
+ codeSent: true,
+ });
+ // 鍚姩鍊掕鏃�
+ this.startCountdown();
+ })
+ .catch((error) => {
+ wx.showToast({
+ title: error.msg,
+ icon: 'none'
+ });
+ console.error('Failed to add item:', error);
+ });
+ },
+ wsLogin() {
+ wx.login({
+ success: res => {
+ if (res.code) {
+ console.log('鐧诲綍鎴愬姛锛岃幏鍙栧埌鐨刢ode:', res.code);
+ // 鍙戦�� res.code 鍒板悗鍙版湇鍔″櫒鎹㈠彇 openId, sessionKey, unionId
+ this.verify(res.code)
+ } else {
+ console.log('鐧诲綍澶辫触锛�' + res.errMsg);
+ }
+ }
+ });
+ },
+ //鐢ㄦ埛缁戝畾
+ verify(wxCode) {
+ const params = {
+ url: 'wx/client/verify',
+ data: {
+ phoneNumber: this.data.phone,
+ securityCode: this.data.verificationCode,
+ code: wxCode
+ }
+ };
+ post(params)
+ .then((data) => {
+ wx.hideLoading();
+ getApp().globalData.sessionId = String(data.content.sessionId)
+ storage.setItem("sessionId", String(data.content.sessionId))
+ getApp().globalData.clientId = String(data.content.clientId)
+ storage.setItem("clientId", String(data.content.clientId))
+ this.bindSuccess();
+ })
+ .catch((error) => {
+ wx.hideLoading();
+ wx.showToast({
+ title: error.msg,
+ icon: 'error',
+ duration: 3000,
+ });
+ console.error('Failed to add item:', error);
+ });
+ },
+ bindSuccess: function () {
+ if (!this.data.isButtonEnabled) return;
+ wx.showToast({
+ title: '缁戝畾鎴愬姛',
+ icon: 'success'
+ });
+ // 璺宠浆鍒� TabBar 椤甸潰
+ wx.redirectTo({
+ url: '/pages/home/home' // 杩欓噷濉啓浣犳兂瑕佽烦杞殑 TabBar 椤甸潰璺緞
+ });
+ },
})
\ No newline at end of file
--
Gitblit v1.8.0