// pages/home/home.js
|
const storage = require('../../utils/storage.js');
|
const {
|
get,
|
post
|
} = require('../../api/request.js');
|
const config = require('../../api/config.js');
|
const {
|
PROJECT_CONFIG
|
} = require('../../utils/projectConfig.js');
|
const {
|
ENV
|
} = require('../../api/env.js');
|
|
Page({
|
|
/**
|
* 页面的初始数据
|
*/
|
data: {
|
sessionId: "",
|
showConfirm: false,
|
myItem: {},
|
waterIntakeName: "",
|
image: "/images/ic_head_bg.jpg",
|
userPhone: "",
|
userName: "请点击登录",
|
scrollViewHeight: 0,
|
listData: [],
|
isRefreshing: false,
|
isWXRefreshing: false,
|
errorData: '', //错误内容
|
showErrorDialog: false,
|
confirmBtn: {
|
content: '确认'
|
},
|
errorDialogTitle: "关阀错误",
|
showForceConfirm: false, //是否强制开阀
|
lastIntakeName: "",
|
showProjectDialog: false,
|
selectedProject: '',
|
avatarTapCount: 0,
|
isFromLogin: false,
|
showTipDialog: '',
|
projectConfig: PROJECT_CONFIG, // 添加项目配置到data中
|
showInfoDialog: false,
|
projectList: []
|
},
|
|
openValve: function (e) {
|
const app = getApp();
|
if (app.globalData.isLoggedIn) {
|
wx.navigateTo({
|
url: '/pages/waterIntake/waterIntake',
|
})
|
} else {
|
wx.showToast({
|
title: '请先登录',
|
icon: 'error'
|
})
|
}
|
},
|
// calculateScrollViewHeight: function () {
|
// wx.createSelectorQuery().selectAll('.list-item').boundingClientRect((rects) => {
|
// let totalHeight = rects.reduce((sum, rect) => sum + rect.height, 0);
|
// this.setData({
|
// scrollViewHeight: totalHeight,
|
// });
|
// }).exec();
|
// },
|
startPullDownRefresh() {
|
if (getApp().globalData.isLoggedIn) {
|
if (!this.data.isWXRefreshing) {
|
var self = this;
|
console.log(this.data.isRefreshing);
|
this.setData({
|
isRefreshing: true
|
});
|
this.getOpenList();
|
}
|
} else {
|
wx.showToast({
|
title: '请先登录',
|
icon: 'error'
|
})
|
}
|
|
|
},
|
|
|
|
/**
|
* 生命周期函数--监听页面加载
|
*/
|
onLoad(options) {
|
console.log('home页面onLoad开始,参数:', options);
|
|
// 初始化项目列表数据
|
this.initProjectList();
|
|
//当开阀成功后调用刷新
|
if (options.param === "1" || options.param === "2") {
|
this.setData({
|
options: options
|
})
|
}
|
// 检查是否从登录页面返回
|
let fromLogin = false;
|
|
// 检查URL参数
|
if (options && options.fromLogin === 'true') {
|
console.log('检测到URL参数fromLogin=true');
|
fromLogin = true;
|
}
|
|
console.log('home页面加载,fromLogin:', fromLogin, '参数:', options);
|
|
// 设置fromLogin标志
|
if (fromLogin) {
|
console.log('设置isFromLogin=true');
|
this.setData({
|
isFromLogin: true
|
});
|
}
|
|
// 延迟执行剩余的初始化过程,以确保临时标记和URL参数能被正确处理
|
setTimeout(() => {
|
this.initializePage(options, fromLogin);
|
}, 100);
|
},
|
|
// 初始化项目列表数据
|
initProjectList() {
|
// 将PROJECT_CONFIG对象转换为数组,方便在视图中遍历
|
const projectList = Object.entries(PROJECT_CONFIG).map(([key, config]) => ({
|
key: key, // 使用key作为项目标识(JYG、MQ等)
|
tag: config.tag, // 保留tag字段(原配置中已有的标识,如ym、mq等)
|
displayName: config.displayName, // 显示名称
|
...config // 其他配置属性
|
}));
|
|
// 获取当前已选择的项目,默认为JYG
|
let currentSelectedProject = 'JYG';
|
|
// 尝试从全局变量获取
|
const app = getApp();
|
if (app && app.globalData && app.globalData.selectedProject) {
|
currentSelectedProject = app.globalData.selectedProject;
|
} else {
|
// 尝试从本地存储获取
|
try {
|
const savedProject = wx.getStorageSync('selectedProject');
|
if (savedProject) {
|
currentSelectedProject = savedProject;
|
}
|
} catch (e) {
|
console.error('从本地存储获取项目失败:', e);
|
}
|
}
|
|
// 设置到页面数据中
|
this.setData({
|
projectList,
|
selectedProject: currentSelectedProject
|
});
|
|
console.log('项目列表已初始化:', projectList, '当前选中项目:', currentSelectedProject);
|
},
|
|
// 新增的初始化页面辅助函数,分离出onLoad中的逻辑以便延迟执行
|
initializePage(options, fromLogin) {
|
// 检查是否已选择项目
|
const {
|
PROJECT_URLS
|
} = require('../../api/config.js');
|
|
// 确保全局变量存在
|
getApp().globalData = getApp().globalData || {};
|
|
storage.getItemSafe('selectedProject')
|
.then((project) => {
|
if (project) {
|
this.setData({
|
selectedProject: project
|
});
|
|
// 设置 baseUrl
|
const serverUrl = PROJECT_CONFIG[project]?.serverUrl;
|
if (serverUrl) {
|
getApp().globalData.baseUrl = serverUrl;
|
getApp().globalData.selectedProject = project;
|
console.log('设置baseUrl:', serverUrl);
|
}
|
|
// 根据项目设置对应的tag
|
const projectConfig = PROJECT_CONFIG[project];
|
if (projectConfig) {
|
getApp().globalData.tag = projectConfig.tag;
|
this.setData({
|
userName: projectConfig.displayName
|
});
|
}
|
|
// 根据项目设置对应的operator和clientId
|
if (projectConfig && projectConfig.operatorId) {
|
getApp().globalData.operator = projectConfig.operatorId;
|
getApp().globalData.clientId = projectConfig.operatorId;
|
getApp().globalData.isLoggedIn = true;
|
getApp().globalData.sessionId = projectConfig.operatorId;
|
|
// 如果有vcId,也设置
|
if (projectConfig.vcId) {
|
getApp().globalData.vcId = projectConfig.vcId;
|
}
|
|
// 持久化存储项目参数
|
const params = {
|
operator: projectConfig.operatorId,
|
clientId: projectConfig.operatorId,
|
isLoggedIn: true,
|
sessionId: projectConfig.operatorId
|
};
|
|
if (projectConfig.vcId) {
|
params.vcId = projectConfig.vcId;
|
}
|
|
storage.setItem(`${project}_params`, params);
|
}
|
|
// 继续初始化页面
|
this.continueInitPage(options);
|
} else {
|
// 首次进入,显示项目选择弹窗
|
this.setData({
|
showProjectDialog: true
|
});
|
return Promise.reject({
|
type: 'project_not_selected',
|
message: '未选择项目'
|
}); // 终止后续处理
|
}
|
})
|
.then(() => {
|
// 继续初始化页面
|
this.continueInitPage(options);
|
})
|
.catch(err => {
|
// 将错误对象规范化
|
const error = typeof err === 'object' ? err : {
|
type: 'unknown',
|
message: String(err)
|
};
|
console.log('获取存储数据中断:', error.message);
|
|
// 如果是从登录页返回或已登录,不再跳转
|
if (fromLogin) {
|
console.log('从登录页返回或已登录,继续初始化页面');
|
this.continueInitPage(options);
|
return;
|
}
|
|
// 处理未选择项目的情况
|
if (error.type === 'project_not_selected') {
|
console.log('未选择项目,显示项目选择弹窗');
|
this.setData({
|
showProjectDialog: true
|
});
|
return;
|
}
|
|
// 其他未知错误,尝试继续初始化页面
|
console.warn('未知错误,尝试继续初始化页面:', error);
|
this.continueInitPage(options);
|
});
|
},
|
|
/**
|
* 生命周期函数--监听页面初次渲染完成
|
*/
|
onReady() {
|
// 检查是否有options和param
|
if (this.data.options && this.data.options.param) {
|
if (this.data.options.param === "1" || this.data.options.param === "2") {
|
this.getOpenList();
|
}
|
}
|
},
|
|
/**
|
* 生命周期函数--监听页面显示
|
*/
|
onShow() {
|
console.log('home页面onShow开始');
|
|
// 获取当前页面的参数
|
const pages = getCurrentPages();
|
const currentPage = pages[pages.length - 1];
|
|
let fromLogin = false;
|
|
// 检查是否有fromLogin参数
|
if (currentPage && currentPage.options && currentPage.options.fromLogin === 'true') {
|
console.log('onShow: 检测到fromLogin参数,设置isFromLogin标记');
|
fromLogin = true;
|
this.setData({
|
isFromLogin: true
|
});
|
}
|
|
// 初始化处理
|
if (fromLogin || this.data.isFromLogin) {
|
console.log('onShow: 从登录页返回,不进行登录检查');
|
} else {
|
console.log('onShow: 正常显示页面');
|
// 延迟检查登录状态,确保能正确识别临时标记
|
setTimeout(() => {
|
this.checkLoginStatusIfNeeded();
|
}, 300);
|
}
|
},
|
|
// 检查登录状态(仅在需要时)
|
checkLoginStatusIfNeeded() {
|
// 再次确认是否从登录页返回
|
if (this.getFromLogin()) {
|
console.log('检测到从登录页返回的标记,不进行登录检查');
|
return;
|
}
|
|
console.log('执行登录状态检查');
|
this.checkLoginStatus();
|
},
|
|
/**
|
* 生命周期函数--监听页面隐藏
|
*/
|
onHide() {
|
// 页面隐藏时考虑清理临时标记
|
this.cleanupTempMarkers();
|
},
|
|
/**
|
* 生命周期函数--监听页面卸载
|
*/
|
onUnload() {
|
// 页面卸载时清理临时标记
|
this.cleanupTempMarkers();
|
},
|
|
/**
|
* 页面相关事件处理函数--监听用户下拉动作
|
*/
|
onPullDownRefresh() {
|
// 下拉刷新触发的逻辑,可以是请求数据等操作
|
// 例如,请求数据后更新页面内容
|
console.log(this.data.isRefreshing);
|
this.setData({
|
isWXRefreshing: true
|
});
|
console.log(this.data.isRefreshing);
|
// 数据请求完成后,停止下拉刷新的动画
|
this.getOpenList();
|
},
|
|
/**
|
* 页面上拉触底事件的处理函数
|
*/
|
onReachBottom() {
|
|
},
|
|
/**
|
* 用户点击右上角分享
|
*/
|
onShareAppMessage() {
|
|
},
|
recharge() {
|
// wx.navigateTo({
|
// url: '/pages/rechargeCard/rechargeCard',
|
// })
|
wx.showToast({
|
title: '暂未开放',
|
icon: 'none'
|
})
|
},
|
openValveList() {
|
const app = getApp();
|
if (app.globalData.isLoggedIn) {
|
wx.navigateTo({
|
url: '/pages/valveList/valveList',
|
})
|
} else {
|
wx.showToast({
|
title: '请先登录',
|
icon: 'error'
|
})
|
}
|
},
|
feedBack() {
|
wx.showToast({
|
title: '暂未开放',
|
icon: 'none'
|
})
|
},
|
//解绑用户
|
unbind() {
|
// 检查当前项目是否需要登录
|
const currentProject = getApp().globalData.selectedProject;
|
const projectConfig = PROJECT_CONFIG[currentProject];
|
|
// 如果当前项目配置为不需要登录,则提示用户并打开项目选择弹窗
|
if (projectConfig && !projectConfig.needLogin) {
|
wx.showModal({
|
title: '切换项目',
|
content: '是否确定解绑?',
|
confirmText: '确认',
|
cancelText: '取消',
|
success: (res) => {
|
if (res.confirm) {
|
// 显示项目选择弹窗
|
this.setData({
|
showProjectDialog: true
|
});
|
}
|
}
|
});
|
return;
|
}
|
|
// 如果已登录,显示解绑确认对话框
|
if (getApp().globalData.isLoggedIn) {
|
wx.showModal({
|
title: '解绑确认',
|
content: '确定要解绑当前账号吗?解绑后将无法使用相关功能,需重新绑定。',
|
confirmText: '确认解绑',
|
confirmColor: '#e34d59',
|
cancelText: '取消',
|
success: (res) => {
|
if (res.confirm) {
|
this.unBindPost();
|
}
|
}
|
});
|
} else {
|
wx.showToast({
|
title: '还未绑定',
|
icon: 'error'
|
});
|
}
|
},
|
//轮灌
|
irrigation() {
|
if (getApp().globalData.isLoggedIn) {
|
wx.navigateTo({
|
url: '/pages/irrigation/irrigation',
|
})
|
} else {
|
wx.showToast({
|
title: '请先登录',
|
icon: 'error'
|
})
|
}
|
},
|
handleChange(e) {
|
const item = e.currentTarget.dataset.item;
|
console.log(item);
|
this.setData({
|
showConfirm: true,
|
waterIntakeName: item.intakeNum,
|
myItem: item
|
});
|
},
|
closeDialog() {
|
console.log("closeDialog");
|
this.setData({
|
showConfirm: false,
|
showErrorDialog: false,
|
showForceConfirm: false
|
});
|
},
|
cancelDialog() {
|
this.setData({
|
showForceConfirm: false,
|
showConfirm: false
|
});
|
},
|
/**
|
* 关闭阀门
|
* @param {*} orderNo 订单号
|
* @param {*} rtuAddr 阀控器地址
|
* @param {*} vcNum 虚拟卡编号
|
*/
|
postCloseValaue(orderNo, rtuAddr, vcNum) {
|
wx.showLoading({
|
title: '正在关阀请稍候...', // 加载提示文字
|
mask: true // 是否显示透明蒙层,防止触摸穿透,默认为 false
|
});
|
const app = getApp();
|
const data = {
|
rtuAddr: rtuAddr,
|
vcNum: vcNum, //虚拟卡ID
|
orderNo: orderNo,
|
operator: app.globalData.clientId //操作员
|
};
|
console.log("postCloseValaue" + data);
|
post({
|
url: "wx/valve/close_wx",
|
data: data,
|
isShowLoding: false,
|
timeout: 185000
|
}).then(response => {
|
|
// 处理成功响应
|
console.log('请求成功:', response);
|
// 加载完成后隐藏加载动画
|
wx.hideLoading();
|
this.getOpenList();
|
wx.showToast({
|
title: '关阀成功',
|
icon: 'success',
|
duration: 3000
|
})
|
}).catch(error => {
|
wx.hideLoading();
|
// 处理错误响应
|
console.error('请求失败:', error);
|
if (error.code === "ECONNABORTED" || error.message?.includes('timeout')) {
|
// 处理超时错误
|
this.setData({
|
showErrorDialog: true,
|
errorData: "通信超时,请稍后再试",
|
errorDialogTitle: "关阀错误"
|
})
|
} else {
|
this.setData({
|
showErrorDialog: true,
|
errorData: error.msg,
|
errorDialogTitle: "关阀错误"
|
})
|
}
|
});
|
},
|
/**
|
* 获取为关阀记录
|
*/
|
getOpenList() {
|
const app = getApp();
|
if (!getApp().globalData.isLoggedIn) {
|
wx.showToast({
|
title: '请先登录',
|
icon: 'error'
|
})
|
this.setData({
|
isRefreshing: false, // 将triggered属性设置为false,表示下拉刷新已完成
|
isWXRefreshing: false, // 将triggered属性设置为false,表示下拉刷新已完成
|
});
|
return;
|
}
|
// 检查是否从登录页返回
|
const fromLogin = this.getFromLogin();
|
|
// 检查clientId是否存在
|
if (!app.globalData.clientId) {
|
console.log('getOpenList: clientId不存在,不执行API请求');
|
|
// 如果是从登录页返回,就显示空列表而不是错误提示
|
this.setData({
|
listData: [],
|
isRefreshing: false,
|
isWXRefreshing: false
|
});
|
|
// 如果不是从登录页返回且不处于刷新状态,考虑检查登录状态
|
if (!fromLogin && !this.data.isRefreshing && !this.data.isWXRefreshing) {
|
console.log('getOpenList: 非刷新状态下检测到无clientId,尝试自动登录');
|
// 延迟调用微信登录,尝试自动恢复会话
|
setTimeout(() => {
|
if (!getApp().globalData.clientId && !this.getFromLogin()) {
|
this.wxLogin();
|
}
|
}, 1000);
|
}
|
return;
|
}
|
|
console.log('getOpenList: 开始获取列表数据, clientId:', app.globalData.clientId);
|
|
const params = {
|
url: 'wx/valve/get',
|
data: {
|
operator: app.globalData.clientId
|
}
|
};
|
|
get(params).then(data => {
|
console.log('获取列表数据成功:', data);
|
this.setData({
|
listData: data.content,
|
isRefreshing: false, // 将triggered属性设置为false,表示下拉刷新已完成
|
isWXRefreshing: false, // 将triggered属性设置为false,表示下拉刷新已完成
|
});
|
this.updateDisplayText();
|
|
}).catch(err => {
|
console.error('获取列表数据失败:', err);
|
// 错误回调
|
this.setData({
|
isRefreshing: false, // 将triggered属性设置为false,表示下拉刷新已完成
|
isWXRefreshing: false, // 将triggered属性设置为false,表示下拉刷新已完成
|
});
|
|
// 检查错误类型
|
if (err && err.code === '0003') {
|
console.log('会话无效或过期,但不进行跳转');
|
|
// 如果不是从登录页返回,显示错误提示
|
if (!fromLogin) {
|
wx.showToast({
|
title: '登录已过期,请刷新重试',
|
icon: 'none',
|
duration: 3000
|
});
|
}
|
} else {
|
// 一般错误,显示错误信息
|
wx.showToast({
|
title: err.msg || '获取列表数据失败',
|
icon: 'none',
|
duration: 3000
|
});
|
}
|
});
|
},
|
/**
|
* 确认关闭回调
|
* @param {} item
|
*/
|
confirmDialog() {
|
this.setData({
|
showConfirm: false
|
});
|
this.postCloseValaue(this.data.myItem.orderNo, this.data.myItem.rtuAddr, this.data.myItem.vcNum);
|
},
|
//根据session获取农户信息
|
getUserDataBySession() {
|
// 先检查是否从登录页返回
|
if (this.getFromLogin()) {
|
console.log('getUserDataBySession: 检测到从登录页返回的标记,不执行API请求');
|
return;
|
}
|
|
const app = getApp();
|
|
// 检查是否有sessionId
|
if (!app.globalData.sessionId) {
|
console.log('getUserDataBySession: sessionId不存在,不执行API请求');
|
return;
|
}
|
|
console.log('getUserDataBySession: 开始获取用户数据, sessionId:', app.globalData.sessionId);
|
|
const params = {
|
url: 'wx/client/simple_info',
|
data: {
|
sessionId: app.globalData.sessionId
|
}
|
};
|
|
get(params).then(data => {
|
console.log('获取用户数据成功:', data);
|
this.setData({
|
userName: data.content.clientName,
|
userPhone: this.maskPhoneNumber(data.content.phone)
|
});
|
}).catch(err => {
|
console.error('获取用户数据失败:', err);
|
// 错误回调,但不进行页面跳转
|
|
// 检查错误类型
|
if (err && err.code === '0003') {
|
console.log('会话无效或过期,但不进行跳转');
|
// 不再直接跳转到登录页
|
|
// 清除会话信息
|
app.globalData.sessionId = '';
|
app.globalData.isLoggedIn = false;
|
|
// 如果不是从登录页返回,显示错误提示
|
if (!this.getFromLogin()) {
|
wx.showToast({
|
title: '登录已过期,请重新登录',
|
icon: 'none',
|
duration: 3000
|
});
|
}
|
} else {
|
// 其他错误,显示错误信息
|
wx.showToast({
|
title: err.msg || '获取用户信息失败',
|
icon: 'none',
|
duration: 3000
|
});
|
}
|
});
|
},
|
maskPhoneNumber(phoneNumber) {
|
if (phoneNumber.length !== 11) {
|
throw new Error("Phone number must be 11 digits");
|
}
|
// 使用正则表达式替换中间四位数字为星号
|
const maskedPhoneNumber = phoneNumber.replace(/^(\d{3})\d{4}(\d{4})$/, "$1****$2");
|
return maskedPhoneNumber;
|
},
|
|
closeDialog() {
|
this.setData({
|
showErrorDialog: false
|
})
|
},
|
/**
|
* 扫码开阀
|
*/
|
scenCode() {
|
const that = this;
|
wx.scanCode({
|
success(res) {
|
console.log(res.result); // 当且仅当扫码为非微信二维码时,会返回result
|
if (res.result.startsWith("content://")) {
|
let jsonStr = res.result.replace("content://", "")
|
try {
|
|
that.saveData(jsonStr)
|
} catch (error) {
|
console.error('Error parsing JSON:', error);
|
}
|
|
} else {
|
that.postOppenValva(res.result)
|
}
|
|
},
|
fail(err) {
|
console.error(err);
|
}
|
})
|
},
|
confirmForceDialog() {
|
console.log("confirmForceDialog");
|
this.setData({
|
showForceConfirm: false
|
})
|
this.postOppenValva(this.data.lastIntakeName, true)
|
},
|
/**
|
*
|
* @param {*} intakeName
|
*/
|
postOppenValva(intakeName, isforce) {
|
const that = this;
|
wx.showLoading({
|
title: '正在开阀请稍候...', // 加载提示文字
|
mask: true // 是否显示透明蒙层,防止触摸穿透,默认为 false
|
});
|
const app = getApp();
|
that.setData({
|
lastIntakeName: intakeName
|
})
|
const data = {
|
intakeName: intakeName, //取水口ID
|
// vcId: vcId, //虚拟卡ID
|
operator: app.globalData.clientId, //操作员
|
forceOpen: !!isforce // 使用逻辑非操作符 !! 来确保 isForce 是布尔值
|
};
|
post({
|
url: "wx/valve/open_wx",
|
data: data,
|
timeout: 180000
|
}).then(response => {
|
|
// 处理成功响应
|
console.log('请求成功:', response);
|
// 加载完成后隐藏加载动画
|
wx.hideLoading();
|
//完成后回到首页
|
wx.reLaunch({
|
url: '/pages/home/home?param=true' // 首页的路径,根据实际情况填写
|
});
|
}).catch(error => {
|
// 加载完成后隐藏加载动画
|
wx.hideLoading();
|
// 处理错误响应
|
console.error('请求失败:', error);
|
if (error.code === "10005") {
|
that.setData({
|
showForceConfirm: true
|
})
|
} else {
|
that.setData({
|
showErrorDialog: true,
|
errorData: error.msg,
|
errorDialogTitle: "开阀错误"
|
})
|
}
|
});
|
},
|
/**
|
* 扫描后保存用户id和tag
|
*/
|
saveData(userData) {
|
storage.setItem("userData", userData).then(() => {
|
this.initData();
|
}).catch((error) => { });
|
|
},
|
//进入界面获取界面数据
|
initData() {
|
const app = getApp();
|
console.log("initData开始,tag:", app.globalData.tag);
|
|
// 首先检查是否从登录页返回
|
if (this.getFromLogin()) {
|
console.log('initData: 检测到从登录页返回的标记,仅获取基本数据');
|
|
// 即使从登录页返回,也尝试获取开阀列表以显示基本UI
|
// 但先检查是否有客户端ID可用
|
if (!app.globalData.clientId) {
|
console.log('initData: 从登录页返回且无clientId,尝试从存储恢复');
|
// 尝试从存储恢复clientId
|
storage.getItemSafe('clientId')
|
.then(clientId => {
|
if (clientId) {
|
console.log('initData: 从存储恢复clientId成功:', clientId);
|
app.globalData.clientId = clientId;
|
this.getOpenList();
|
} else {
|
console.log('initData: 无法恢复clientId,显示空列表');
|
this.setData({
|
listData: []
|
});
|
}
|
})
|
.catch(err => {
|
console.error('initData: 恢复clientId失败:', err);
|
this.setData({
|
listData: []
|
});
|
});
|
} else {
|
this.getOpenList();
|
}
|
return;
|
}
|
|
// 检查当前项目是否需要登录
|
const currentProject = app.globalData.selectedProject;
|
const projectConfig = PROJECT_CONFIG[currentProject];
|
const needLogin = projectConfig && projectConfig.needLogin;
|
|
// 尝试获取用户数据和已开阀记录
|
try {
|
// 优先检查全局变量中是否有sessionId
|
if (app.globalData.sessionId) {
|
console.log('initData: 使用全局sessionId获取数据');
|
|
// 只有需要登录的项目才调用getUserDataBySession
|
if (needLogin) {
|
console.log('initData: 当前项目需要登录,获取用户数据');
|
this.getUserDataBySession();
|
} else {
|
console.log('initData: 当前项目不需要登录,跳过获取用户数据');
|
}
|
|
this.getOpenList();
|
return;
|
}
|
|
// 检查是否有存储的userData
|
const hasUserData = storage.isHasKeySync("userData");
|
console.log('initData: 是否存在userData:', hasUserData);
|
|
if (hasUserData) {
|
storage.getItemSafe('userData')
|
.then((data) => {
|
console.log('initData: 成功读取userData');
|
if (data) {
|
try {
|
let jsonObj = JSON.parse(data);
|
app.globalData.sessionId = jsonObj.sessionId;
|
app.globalData.tag = jsonObj.tag;
|
console.log("userData已加载:", data);
|
} catch (e) {
|
console.error('userData解析失败:', e);
|
}
|
}
|
|
// 只有需要登录的项目才调用getUserDataBySession
|
if (needLogin) {
|
console.log('initData: 当前项目需要登录,获取用户数据');
|
this.getUserDataBySession();
|
} else {
|
console.log('initData: 当前项目不需要登录,跳过获取用户数据');
|
}
|
|
this.getOpenList();
|
})
|
.catch((err) => {
|
console.error('加载userData失败:', err);
|
|
// 再次检查是否从登录页返回
|
if (this.getFromLogin()) {
|
console.log('initData:catch: 检测到从登录页返回的标记,只获取开阀列表');
|
this.getOpenList();
|
} else {
|
// 只有需要登录的项目才调用getUserDataBySession
|
if (needLogin) {
|
console.log('initData:catch: 当前项目需要登录,获取用户数据');
|
this.getUserDataBySession();
|
} else {
|
console.log('initData:catch: 当前项目不需要登录,跳过获取用户数据');
|
}
|
|
this.getOpenList();
|
}
|
});
|
} else {
|
console.log('未找到userData,直接获取数据');
|
|
// 再次检查是否从登录页返回
|
if (this.getFromLogin()) {
|
console.log('initData:else: 检测到从登录页返回的标记,只获取开阀列表');
|
this.getOpenList();
|
} else {
|
// 只有需要登录的项目才调用getUserDataBySession
|
if (needLogin) {
|
console.log('initData:else: 当前项目需要登录,获取用户数据');
|
this.getUserDataBySession();
|
} else {
|
console.log('initData:else: 当前项目不需要登录,跳过获取用户数据');
|
}
|
|
this.getOpenList();
|
}
|
}
|
} catch (e) {
|
console.error('initData执行出错:', e);
|
|
// 再次检查是否从登录页返回
|
if (this.getFromLogin()) {
|
console.log('initData:error: 检测到从登录页返回的标记,只获取开阀列表');
|
this.getOpenList();
|
} else {
|
// 只有需要登录的项目才调用getUserDataBySession
|
if (needLogin) {
|
console.log('initData:error: 当前项目需要登录,获取用户数据');
|
this.getUserDataBySession();
|
} else {
|
console.log('initData:error: 当前项目不需要登录,跳过获取用户数据');
|
}
|
|
this.getOpenList();
|
}
|
}
|
},
|
// 处理头像点击
|
handleAvatarTap() {
|
this.setData({
|
avatarTapCount: this.data.avatarTapCount + 1
|
});
|
|
if (this.data.avatarTapCount >= 5) {
|
this.setData({
|
showProjectDialog: true,
|
avatarTapCount: 0
|
});
|
}
|
},
|
|
// 处理弹窗可见性变化
|
onVisibleChange(e) {
|
// 如果尝试关闭弹窗且没有选择项目,则阻止关闭
|
if (!e.detail.visible && !this.data.selectedProject) {
|
return;
|
}
|
this.setData({
|
showProjectDialog: e.detail.visible
|
});
|
},
|
|
// 处理项目选择变化
|
onProjectChange(event) {
|
console.log('选择的项目:', event.detail.value);
|
this.setData({
|
selectedProject: event.detail.value
|
});
|
},
|
|
// 处理项目选择确认
|
handleProjectConfirm() {
|
console.log('开始处理项目选择确认', this.data.selectedProject, this.data.projectList);
|
|
if (!this.data.selectedProject) {
|
wx.showToast({
|
title: '请选择项目',
|
icon: 'none'
|
});
|
return;
|
}
|
|
// 获取当前已选项目和新选择的项目
|
const currentProject = getApp().globalData.selectedProject;
|
const newProject = this.data.selectedProject;
|
console.log('当前项目:', currentProject, '新选择项目:', newProject);
|
console.log('PROJECT_CONFIG 内容:', PROJECT_CONFIG);
|
|
const projectConfig = PROJECT_CONFIG[newProject];
|
console.log('选择的项目配置:', projectConfig);
|
|
if (!projectConfig) {
|
wx.showToast({
|
title: '项目配置错误',
|
icon: 'none'
|
});
|
return;
|
}
|
|
// 检查是否切换了项目(如果当前项目不同于新选择的项目)
|
const isProjectChanged = currentProject && currentProject !== newProject;
|
|
// 添加二次确认
|
const confirmText = isProjectChanged
|
? `确定要将项目从"${PROJECT_CONFIG[currentProject]?.displayName || '当前项目'}"切换到"${projectConfig.displayName}"吗?`
|
: `确定选择"${projectConfig.displayName}"项目吗?`;
|
|
wx.showModal({
|
title: isProjectChanged ? '确认切换项目' : '确认选择项目',
|
content: confirmText,
|
confirmText: isProjectChanged ? '确认切换' : '确认',
|
cancelText: '取消',
|
success: (res) => {
|
if (res.confirm) {
|
// 用户确认选择,继续处理
|
this.processProjectSelection(currentProject, newProject, projectConfig, isProjectChanged);
|
} else {
|
// 用户取消,不进行任何操作
|
console.log('用户取消了项目选择');
|
}
|
}
|
});
|
},
|
|
// 处理项目选择的后续操作
|
processProjectSelection(currentProject, newProject, projectConfig, isProjectChanged) {
|
// 如果切换了项目,先清除登录状态
|
if (isProjectChanged) {
|
console.log(`正在从项目 ${currentProject} 切换到 ${newProject},将清除登录状态`);
|
|
// 清除全局登录状态
|
getApp().globalData.sessionId = '';
|
getApp().globalData.clientId = '';
|
getApp().globalData.isLoggedIn = false;
|
getApp().globalData.userInfo = null;
|
|
// 清除存储中的登录状态
|
try {
|
wx.removeStorageSync('sessionId');
|
wx.removeStorageSync('clientId');
|
wx.removeStorageSync('userData');
|
wx.removeStorageSync('isLoggedIn');
|
console.log('已清除登录相关的存储数据');
|
} catch (e) {
|
console.error('清除存储数据失败:', e);
|
}
|
|
// 重置UI显示状态
|
this.setData({
|
userName: "请登录",
|
userPhone: "",
|
listData: []
|
});
|
}
|
|
// 保存项目选择到本地存储
|
storage.setItem('selectedProject', newProject).then(() => {
|
// 调用setBaseUrl来更新基础URL
|
try {
|
console.log('尝试设置基础URL,项目:', newProject);
|
const result = config.setBaseUrl(newProject);
|
console.log('设置基础URL结果:', result);
|
} catch (error) {
|
console.error('设置基础URL出错:', error);
|
// 继续执行,不中断流程
|
}
|
|
// 更新全局变量
|
getApp().globalData = getApp().globalData || {};
|
getApp().globalData.selectedProject = newProject;
|
getApp().globalData.baseUrl = projectConfig.serverUrl;
|
getApp().globalData.serverId = projectConfig.serverId;
|
|
// 通过配置对象统一设置项目参数
|
getApp().globalData.tag = projectConfig.tag;
|
|
// 设置用户界面显示的项目名称
|
this.setData({
|
userName: projectConfig.displayName
|
});
|
|
// 对于不需要登录的项目,直接设置operator和clientId
|
if (!projectConfig.needLogin && projectConfig.operatorId) {
|
const operatorId = projectConfig.operatorId;
|
getApp().globalData.operator = operatorId;
|
getApp().globalData.clientId = operatorId;
|
getApp().globalData.isLoggedIn = true;
|
getApp().globalData.sessionId = operatorId;
|
|
// 如果有vcId,也设置
|
if (projectConfig.vcId) {
|
getApp().globalData.vcId = projectConfig.vcId;
|
}
|
|
// 持久化存储项目参数
|
const params = {
|
operator: operatorId,
|
clientId: operatorId,
|
isLoggedIn: true,
|
sessionId: operatorId
|
};
|
|
if (projectConfig.vcId) {
|
params.vcId = projectConfig.vcId;
|
}
|
|
storage.setItem(`${newProject}_params`, params);
|
}
|
|
console.log('已切换到项目:', projectConfig.displayName, '服务器:', projectConfig.serverId, 'tag:', getApp().globalData.tag);
|
|
this.setData({
|
showProjectDialog: false
|
});
|
|
// 显示切换成功提示
|
wx.showToast({
|
title: `已选择${projectConfig.displayName}`,
|
icon: 'success',
|
duration: 2000
|
});
|
setTimeout(() => {
|
console.log('项目已切换,正在初始化数据');
|
this.initData();
|
}, 1000);
|
|
}).catch(err => {
|
console.error('保存项目选择失败:', err);
|
wx.showToast({
|
title: '保存失败,请重试',
|
icon: 'none',
|
duration: 2000
|
});
|
});
|
},
|
|
// 检查登录状态
|
checkLoginStatus() {
|
const app = getApp();
|
|
// 检查是否已登录
|
if (app.globalData.isLoggedIn && app.globalData.sessionId) {
|
console.log('已从全局变量检测到登录状态');
|
return;
|
}
|
|
// 检查本页面是否正在处理返回逻辑
|
const fromLogin = this.getFromLogin();
|
if (fromLogin) {
|
console.log('从登录页返回,不再重定向');
|
return;
|
}
|
|
// 检查当前项目是否需要登录
|
const currentProject = app.globalData.selectedProject;
|
if (currentProject && PROJECT_CONFIG[currentProject] && !PROJECT_CONFIG[currentProject].needLogin) {
|
console.log('当前项目不需要登录:', currentProject);
|
return;
|
}
|
|
// 获取当前页面路由和参数
|
const pages = getCurrentPages();
|
const currentPage = pages[pages.length - 1];
|
const currentRoute = currentPage ? currentPage.route : '';
|
const currentOptions = currentPage ? currentPage.options || {} : {};
|
|
console.log('当前页面路由:', currentRoute, '参数:', currentOptions);
|
|
// 检查URL参数中是否有fromLogin
|
if (currentOptions.fromLogin === 'true') {
|
console.log('URL参数中检测到fromLogin=true,不执行跳转');
|
this.setData({
|
isFromLogin: true
|
});
|
return;
|
}
|
|
// 如果当前已在登录页,不再跳转
|
if (currentRoute === 'pages/login/login') {
|
console.log('当前已在登录页,不再跳转');
|
return;
|
}
|
|
// Promise链处理存储检查
|
Promise.all([
|
storage.getItemSafe('sessionId'),
|
storage.getItemSafe('clientId'),
|
storage.getItemSafe('isLoggedIn')
|
])
|
.then(([sessionId, clientId, isLoggedIn]) => {
|
if (sessionId) {
|
// 从存储中恢复登录状态
|
app.globalData.sessionId = sessionId;
|
app.globalData.isLoggedIn = true;
|
|
if (clientId) {
|
app.globalData.clientId = clientId;
|
}
|
|
console.log('已从存储恢复登录状态');
|
// 已登录,刷新页面
|
wx.reLaunch({
|
url: '/pages/home/home'
|
});
|
} else {
|
// 标记当前页面正在处理返回逻辑
|
this.setData({
|
isFromLogin: true
|
});
|
|
// 未登录,可能需要跳转到登录页面
|
console.log('未检测到登录状态,可能需要跳转到登录页');
|
|
// 最后再检查一次是否已从登录页返回
|
const finalCheck = this.getFromLogin();
|
if (finalCheck) {
|
console.log('最终检查: 已从登录页返回,不再跳转');
|
return;
|
}
|
|
// 检查项目是否需要登录
|
if (currentProject && PROJECT_CONFIG[currentProject] && !PROJECT_CONFIG[currentProject].needLogin) {
|
console.log('最终检查: 当前项目不需要登录:', currentProject);
|
return;
|
}
|
|
console.log('确认需要跳转到登录页');
|
|
// 跳转前再次检查登录页面临时标记
|
try {
|
wx.setStorageSync('_attempted_login_redirect', 'true');
|
} catch (e) { }
|
|
// wx.navigateTo({
|
// url: `/pages/login/login?project=${this.data.selectedProject}`,
|
// success: () => console.log('成功跳转到登录页'),
|
// fail: (err) => console.error('跳转到登录页失败:', err)
|
// });
|
}
|
})
|
.catch(err => {
|
console.error('检查登录状态时出错:', err);
|
|
// 标记当前页面正在处理返回逻辑
|
this.setData({
|
isFromLogin: true
|
});
|
|
// 再次检查是否已从登录页返回
|
if (this.getFromLogin()) {
|
console.log('错误处理: 已从登录页返回,不再跳转');
|
return;
|
}
|
|
// 检查项目是否需要登录
|
if (currentProject && PROJECT_CONFIG[currentProject] && !PROJECT_CONFIG[currentProject].needLogin) {
|
console.log('错误处理: 当前项目不需要登录:', currentProject);
|
return;
|
}
|
|
// 出错时也跳转到登录页
|
// wx.navigateTo({
|
// url: `/pages/login/login?project=${this.data.selectedProject}`,
|
// success: () => console.log('错误后成功跳转到登录页'),
|
// fail: (err) => console.error('错误后跳转到登录页失败:', err)
|
// });
|
});
|
},
|
|
// 辅助函数:检查是否从登录页返回
|
getFromLogin() {
|
// 检查当前页面的options
|
const pages = getCurrentPages();
|
const currentPage = pages[pages.length - 1];
|
if (currentPage && currentPage.options && currentPage.options.fromLogin === 'true') {
|
console.log('getFromLogin: 检测到URL参数fromLogin=true');
|
// 设置标志,确保下次检查时能识别
|
this.setData({
|
isFromLogin: true
|
});
|
return true;
|
}
|
console.log('getFromLogin: 未检测到从登录页返回的标记');
|
return false;
|
},
|
|
// 继续初始化页面
|
continueInitPage(options) {
|
console.log('继续初始化页面,options:', options);
|
|
// 检查是否从登录页返回
|
let fromLogin = false;
|
|
// 从URL参数中检查
|
if (options && options.fromLogin === 'true') {
|
console.log('continueInitPage: 从URL参数检测到fromLogin=true');
|
fromLogin = true;
|
this.setData({
|
isFromLogin: true
|
});
|
}
|
|
// 从页面数据中检查
|
if (this.data.isFromLogin) {
|
console.log('continueInitPage: 从页面数据中检测到isFromLogin=true');
|
fromLogin = true;
|
}
|
// 当开阀成功后调用刷新
|
if (options && options.param) {
|
console.log("开阀成功参数:", options.param);
|
wx.showToast({
|
title: '开阀成功',
|
icon: 'success',
|
duration: 3000
|
});
|
this.getOpenList();
|
}
|
|
// 初始化数据
|
this.initData();
|
|
// 如果不是从登录页返回,则设置延迟检查登录状态
|
if (!fromLogin) {
|
console.log('不是从登录页返回,延迟检查登录状态');
|
setTimeout(() => {
|
// 仅在未登录且不是从登录页返回时检查登录状态
|
if (!getApp().globalData.isLoggedIn) {
|
console.log('延迟检查:未登录且不是从登录页返回,执行登录状态检查');
|
this.checkLoginStatus();
|
}
|
}, 500);
|
} else {
|
console.log('从登录页返回,不检查登录状态');
|
}
|
},
|
|
// 微信登录
|
wxLogin() {
|
// 检查当前项目是否需要登录
|
const currentProject = getApp().globalData.selectedProject;
|
if (currentProject && PROJECT_CONFIG[currentProject] && !PROJECT_CONFIG[currentProject].needLogin) {
|
console.log('wxLogin: 当前项目不需要登录:', currentProject);
|
return;
|
}
|
|
if (!getApp().globalData.isLoggedIn) {
|
wx.showLoading({
|
title: '正在登录请稍候...',
|
mask: true
|
});
|
|
wx.login({
|
success: (res) => {
|
if (res.code) {
|
// 将code发送到服务器获取openid
|
post({
|
url: "wx/client/code_login",
|
data: {
|
code: res.code
|
}
|
}).then(response => {
|
wx.hideLoading();
|
if (response.code === "0001") {
|
if (response.content.client.clientId === "") {
|
// 未绑定账号,跳转到登录页面
|
// wx.navigateTo({
|
// url: `/pages/login/login?project=${this.data.selectedProject}`
|
// });
|
} else {
|
this.setData({
|
userName: response.content.client.clientName,
|
userPhone: response.content.client.userPhone
|
})
|
// 已有账号,保存数据并初始化
|
const sessionId = response.content.client.sessionId;
|
const clientId = response.content.client.clientId;
|
|
// 设置全局变量
|
getApp().globalData.sessionId = sessionId;
|
getApp().globalData.clientId = clientId;
|
getApp().globalData.isLoggedIn = true;
|
|
// 设置正确的项目tag
|
const projectConfig = PROJECT_CONFIG[this.data.selectedProject];
|
if (projectConfig) {
|
getApp().globalData.tag = projectConfig.tag;
|
}
|
|
// 保存到存储
|
storage.setItem("sessionId", sessionId);
|
storage.setItem("clientId", clientId);
|
storage.setItem("isLoggedIn", "true");
|
|
// 保存userData信息,包含sessionId和tag
|
const userData = JSON.stringify({
|
sessionId: sessionId,
|
tag: projectConfig ? projectConfig.tag : 'ym',
|
project: this.data.selectedProject,
|
userName: response.content.client.clientName,
|
userPhone: response.content.client.userPhone
|
});
|
storage.setItem("userData", userData)
|
.then(() => {
|
console.log('用户数据保存成功,包含项目信息:', this.data.selectedProject, 'tag:', projectConfig ? projectConfig.tag : 'ym');
|
this.initData();
|
})
|
.catch(err => {
|
console.warn('保存userData失败,但继续初始化:', err);
|
this.initData();
|
});
|
|
}
|
} else {
|
wx.showToast({
|
title: '登录失败',
|
icon: 'error',
|
duration: 2000
|
});
|
// wx.navigateTo({
|
// url: `/pages/login/login?project=${this.data.selectedProject}`
|
// });
|
}
|
}).catch(error => {
|
wx.hideLoading();
|
console.error('登录请求失败:', error);
|
wx.showToast({
|
title: '登录失败,请重试',
|
icon: 'none'
|
});
|
// wx.redirectTo({
|
// url: `/pages/login/login?project=${this.data.selectedProject}`
|
// });
|
});
|
} else {
|
wx.hideLoading();
|
console.log('登录失败!' + res.errMsg);
|
wx.showToast({
|
title: '微信登录失败',
|
icon: 'none'
|
});
|
}
|
},
|
fail: (err) => {
|
wx.hideLoading();
|
console.error('微信登录API调用失败:', err);
|
wx.showToast({
|
title: '登录失败,请重试',
|
icon: 'none'
|
});
|
}
|
});
|
}
|
},
|
|
// 辅助函数:清理临时标记
|
cleanupTempMarkers() {
|
// 只有在isFromLogin为true时才进行清理
|
if (this.data.isFromLogin) {
|
|
|
// 重设isFromLogin为false,但添加延迟,避免影响当前页面的返回逻辑
|
setTimeout(() => {
|
this.setData({
|
isFromLogin: false
|
});
|
console.log('重置isFromLogin=false');
|
}, 5000);
|
}
|
}, //确认解绑
|
unBindPost() {
|
this.setData({
|
showUnBind: false
|
})
|
wx.showLoading({
|
title: '正在解绑请稍候...', // 加载提示文字
|
mask: true // 是否显示透明蒙层,防止触摸穿透,默认为 false
|
});
|
const data = {
|
sessionId: getApp().globalData.sessionId //取水口ID
|
};
|
post({
|
url: 'wx/client/unbind',
|
data: data,
|
useParams: true
|
}).then(response => {
|
// 处理成功响应
|
console.log('请求成功:', response);
|
// 加载完成后隐藏加载动画
|
wx.hideLoading();
|
const app = getApp();
|
|
// 清除全局登录状态
|
app.globalData.sessionId = '';
|
app.globalData.clientId = '';
|
app.globalData.isLoggedIn = false;
|
app.globalData.userInfo = null;
|
|
// 清除存储中的登录状态
|
const storage = require('../../utils/storage.js');
|
storage.removeItem('sessionId')
|
.then(() => storage.removeItem('clientId'))
|
.then(() => storage.removeItem('userData'))
|
.then(() => storage.removeItem('isLoggedIn'))
|
.then(() => {
|
wx.showToast({
|
title: '解绑成功',
|
icon: 'success',
|
duration: 2000
|
});
|
|
// 重置UI显示状态
|
this.setData({
|
userName: "请点击登录",
|
userPhone: "",
|
listData: []
|
});
|
})
|
.catch(err => {
|
console.error('解绑过程中出错:', err);
|
wx.showToast({
|
title: '解绑失败,请重试',
|
icon: 'none',
|
duration: 2000
|
});
|
});
|
}).catch(error => {
|
// 加载完成后隐藏加载动画
|
wx.hideLoading();
|
// 处理错误响应
|
console.error('请求失败:', error);
|
wx.showToast({
|
title: '解绑失败',
|
icon: 'error',
|
duration: 3000
|
})
|
});
|
},
|
onShareAppMessage: function (options) {
|
// 设置分享内容
|
return {
|
title: '大禹灌溉助手', // 分享标题
|
path: '/pages/home/home', // 分享路径,该路径需要是当前小程序存在的页面路径
|
imageUrl: '/images/logo2.jpg', // 分享图标,可以是网络图片路径或本地图片路径
|
success: function (res) {
|
// 分享成功的回调函数
|
},
|
fail: function (res) {
|
// 分享失败的回调函数
|
}
|
};
|
},
|
//点击提示按钮
|
infoShow() {
|
this.setData({
|
showInfoDialog: true
|
})
|
},
|
//提示窗确认按钮
|
confirmBtnInfoDialog() {
|
this.setData({
|
showInfoDialog: false
|
})
|
},
|
//强制删除
|
onDelete(e) {
|
const item = e.currentTarget.dataset.item;
|
const that = this;
|
|
if (this.data.useTestData) {
|
// 测试数据模式下,模拟删除操作
|
wx.showLoading({
|
title: '正在强制删除请稍候...',
|
mask: true
|
});
|
|
// 模拟请求延迟
|
setTimeout(() => {
|
wx.hideLoading();
|
|
// 从列表中移除被删除的项
|
const updatedList = this.data.listData.filter(listItem =>
|
listItem.orderNo !== item.orderNo
|
);
|
|
this.setData({
|
listData: updatedList
|
});
|
|
wx.showToast({
|
title: '删除成功',
|
icon: 'success',
|
duration: 2000
|
});
|
}, 1500);
|
return;
|
}
|
|
wx.showLoading({
|
title: '正在强制删除请稍候...', // 加载提示文字
|
mask: true // 是否显示透明蒙层,防止触摸穿透,默认为 false
|
});
|
const data = {
|
vcNum: item.vcNum, //取水口ID
|
rtuAddr: item.rtuAddr, //阀控器地址
|
};
|
post({
|
url: "wx/valve/deleteUnclosed",
|
data: data,
|
timeout: 180000
|
}).then(response => {
|
// 处理成功响应
|
console.log('请求成功:', response);
|
// 加载完成后隐藏加载动画
|
wx.hideLoading();
|
//重新获取列表刷新数据
|
this.getOpenList();
|
}).catch(error => {
|
// 加载完成后隐藏加载动画
|
wx.hideLoading();
|
// 处理错误响应
|
console.error('请求失败:', error);
|
});
|
},
|
//修改按钮文字
|
updateDisplayText() {
|
const updatedList = this.data.listData.map(item => {
|
let displayText = '';
|
if (item.planned) {
|
displayText = '取消';
|
} else {
|
displayText = "关阀"
|
}
|
let deleteText = "删除"
|
let time;
|
if (!item.dt) {
|
time = "暂无"
|
} else {
|
time = this.extractTime(item.dt)
|
}
|
if (item.waterInstant===null) {
|
item.waterInstant = "暂无"
|
}
|
|
return {
|
...item,
|
displayText,
|
deleteText,
|
time
|
}; // 保留所有其他字段,并添加 displayText 字段
|
});
|
// 更新列表数据
|
this.setData({
|
listData: updatedList
|
});
|
},
|
//处理时间去掉年月日
|
extractTime(datetimeString) {
|
const formattedDate = datetimeString.replace(" ", "T");
|
const date = new Date(formattedDate);
|
// 获取小时、分钟和秒
|
const hours = date.getHours().toString().padStart(2, '0');
|
const minutes = date.getMinutes().toString().padStart(2, '0');
|
const seconds = date.getSeconds().toString().padStart(2, '0');
|
return `${hours}:${minutes}:${seconds}`;
|
},
|
|
// 切换项目
|
switchProject(e) {
|
const project = e.currentTarget.dataset.project;
|
|
if (config.setBaseUrl(project)) {
|
this.setData({
|
selectedProject: project
|
});
|
|
// 保存选择到本地存储
|
try {
|
wx.setStorageSync('selectedProject', project);
|
} catch (e) {
|
console.error('保存项目选择失败:', e);
|
}
|
|
// 更新全局变量
|
const app = getApp();
|
if (app && app.globalData) {
|
app.globalData.selectedProject = project;
|
|
// 根据项目配置设置相关参数
|
const projectConfig = PROJECT_CONFIG[project];
|
if (projectConfig) {
|
app.globalData.tag = projectConfig.tag;
|
if (!projectConfig.needLogin) {
|
app.globalData.operator = projectConfig.operatorId;
|
app.globalData.clientId = projectConfig.operatorId;
|
app.globalData.isLoggedIn = true;
|
app.globalData.sessionId = projectConfig.operatorId;
|
// 如果有vcId,也设置
|
if (projectConfig.vcId) {
|
app.globalData.vcId = projectConfig.vcId;
|
}
|
}
|
}
|
}
|
|
// 重新加载页面数据
|
this.initData();
|
} else {
|
wx.showToast({
|
title: '切换项目失败',
|
icon: 'none'
|
});
|
}
|
},
|
})
|