const app = getApp();
|
const storage = require('../../utils/storage.js');
|
const {
|
post
|
} = require('../../api/request.js');
|
const { PROJECT_CONFIG } = require('../../utils/projectConfig.js');
|
const { setBaseUrl } = require('../../api/config.js');
|
|
Page({
|
|
/**
|
* 页面的初始数据
|
*/
|
data: {
|
username: '',
|
password: '',
|
passwordVisible: false,
|
projectName: '嘉峪关项目', // 默认项目名称
|
selectedProject: 'JYG', // 默认项目代码
|
showErrorDialog: false,
|
fromBack: false, // 标记是否是从返回按钮返回的
|
manualNavigate: false // 标记是否是通过编程方式导航的
|
},
|
|
/**
|
* 绑定用户名输入
|
*/
|
bindUsernameInput: function (e) {
|
this.setData({
|
username: e.detail.value
|
});
|
},
|
|
/**
|
* 绑定密码输入
|
*/
|
bindPasswordInput: function (e) {
|
this.setData({
|
password: e.detail.value
|
});
|
},
|
|
/**
|
* 切换密码显示状态
|
*/
|
togglePasswordVisibility: function () {
|
this.setData({
|
passwordVisible: !this.data.passwordVisible
|
});
|
},
|
|
/**
|
* 登录
|
*/
|
login: function () {
|
const {
|
username,
|
password
|
} = this.data;
|
|
// 验证用户名和密码
|
if (!username.trim()) {
|
wx.showToast({
|
title: '请输入用户名',
|
icon: 'none'
|
});
|
return;
|
}
|
|
if (!password.trim()) {
|
wx.showToast({
|
title: '请输入密码',
|
icon: 'none'
|
});
|
return;
|
}
|
|
// 显示加载中
|
wx.showLoading({
|
title: '登录中...',
|
mask: true
|
});
|
|
// 标记为手动导航,确保不会触发返回逻辑
|
console.log('登录按钮点击,设置manualNavigate=true');
|
this.setData({
|
manualNavigate: true
|
});
|
|
this.accountLogin();
|
},
|
|
/**
|
* 跳转到注册页面
|
*/
|
goToRegister: function () {
|
wx.showToast({
|
title: '注册功能暂未开放',
|
icon: 'none',
|
duration: 2000
|
});
|
},
|
|
/**
|
* 跳转到忘记密码页面
|
*/
|
goToForgetPassword: function () {
|
wx.showToast({
|
title: '找回密码功能暂未开放',
|
icon: 'none',
|
duration: 2000
|
});
|
},
|
|
|
/**
|
* 生命周期函数--监听页面加载
|
*/
|
onLoad: function (options) {
|
console.log('accountLogin页面加载,options:', options);
|
|
// 设置页面数据
|
this.setData({
|
fromBack: false, // 标记是否是从返回按钮返回的
|
manualNavigate: false // 标记是否是通过编程方式导航的
|
});
|
|
// 从URL参数获取项目信息
|
if (options && options.project) {
|
const project = options.project;
|
// 直接使用传入的项目名称,不再手动转换
|
const projectName = options.projectName || '默认项目';
|
|
console.log(`从URL参数获取项目信息: ${project} (${projectName})`);
|
|
this.setData({
|
selectedProject: project,
|
projectName: projectName
|
});
|
|
// 同步更新全局项目设置
|
if (getApp().globalData) {
|
getApp().globalData.selectedProject = project;
|
|
// 设置对应的tag
|
if (project === 'JYG') {
|
getApp().globalData.tag = 'ym';
|
} else if (project === 'MQ') {
|
getApp().globalData.tag = 'mq';
|
}
|
|
// 更新 BASEURL
|
try {
|
// 使用导入的setBaseUrl函数设置baseUrl
|
setBaseUrl(project);
|
|
// 从PROJECT_CONFIG中获取serverUrl
|
const serverUrl = PROJECT_CONFIG[project]?.serverUrl;
|
if (serverUrl) {
|
getApp().globalData.baseUrl = serverUrl;
|
console.log('设置baseUrl成功:', serverUrl);
|
}
|
} catch (e) {
|
console.error('设置baseUrl失败:', e);
|
}
|
}
|
|
// 检查项目配置的登录方式是否与当前页面匹配
|
const projectConfig = PROJECT_CONFIG[project];
|
if (projectConfig && projectConfig.loginType !== 'account') {
|
console.log(`当前项目配置的登录方式为${projectConfig.loginType},自动跳转到验证码登录页面`);
|
|
// 设置手动导航标记,避免触发返回逻辑
|
this.setData({ manualNavigate: true });
|
|
// 延迟执行跳转,确保页面完全加载
|
setTimeout(() => {
|
wx.redirectTo({
|
url: `/pages/login/login?project=${project}&projectName=${projectName}`
|
});
|
}, 100);
|
}
|
} else {
|
console.log('未从URL获取到项目信息,使用默认值');
|
}
|
},
|
|
/**
|
* 生命周期函数--监听页面初次渲染完成
|
*/
|
onReady() {
|
|
},
|
|
/**
|
* 生命周期函数--监听页面显示
|
*/
|
onShow() {
|
|
},
|
|
/**
|
* 生命周期函数--监听页面隐藏
|
*/
|
onHide() {
|
// 如果不是通过编程方式导航,则可能是点击了返回按钮
|
// 注意:在某些情况下,微信可能会直接调用onUnload而跳过onHide
|
if (!this.data.manualNavigate) {
|
console.log('页面隐藏,可能是点击了返回按钮');
|
this.setData({
|
fromBack: true
|
});
|
}
|
},
|
|
/**
|
* 生命周期函数--监听页面卸载
|
*/
|
onUnload() {
|
console.log('页面卸载,fromBack=', this.data.fromBack);
|
console.log('页面卸载,manualNavigate=', this.data.manualNavigate);
|
|
// 如果是从返回按钮返回的,且不是通过编程方式导航
|
if (this.data.fromBack && !this.data.manualNavigate) {
|
console.log('检测到从返回按钮返回,跳转到首页');
|
wx.reLaunch({
|
url: '/pages/index/index'
|
});
|
}
|
},
|
|
/**
|
* 页面相关事件处理函数--监听用户下拉动作
|
*/
|
onPullDownRefresh() {
|
|
},
|
|
/**
|
* 页面上拉触底事件的处理函数
|
*/
|
onReachBottom() {
|
|
},
|
|
/**
|
* 用户点击右上角分享
|
*/
|
onShareAppMessage() {
|
return {
|
title: '大禹节水灌溉系统',
|
path: '/pages/index/index',
|
imageUrl: '/images/share-img.jpg' // 自定义分享图片
|
};
|
},
|
|
/**
|
* 账号密码登录
|
*/
|
accountLogin() {
|
const { username, password, selectedProject } = this.data;
|
|
// 构建请求参数
|
const data = {
|
username: username,
|
password: password
|
};
|
|
// 发送登录请求
|
post({
|
url: '/wx/user/passwordLogin',
|
data: data,
|
isShowLoding: true
|
}).then(res => {
|
// 隐藏加载提示
|
wx.hideLoading();
|
|
if (res && res.success) {
|
// 登录成功,保存token等信息
|
storage.set('token', res.content.token);
|
storage.set('userInfo', res.content);
|
|
// 更新全局数据
|
if (app.globalData) {
|
app.globalData.token = res.content.token;
|
app.globalData.userInfo = res.content;
|
}
|
|
// 跳转到首页
|
wx.switchTab({
|
url: '/pages/home/home'
|
});
|
} else {
|
// 登录失败
|
wx.showToast({
|
title: res.msg || '登录失败,请检查账号密码',
|
icon: 'none',
|
duration: 2000
|
});
|
}
|
}).catch(err => {
|
// 隐藏加载提示
|
wx.hideLoading();
|
|
// 显示错误信息
|
wx.showToast({
|
title: '网络错误,请稍后重试',
|
icon: 'none',
|
duration: 2000
|
});
|
|
console.error('登录失败:', err);
|
});
|
}
|
});
|