// pages/index/index.js import { wxSetSessionKey } from "../../utils/wxUtils"; import { postApi } from "../../apis/api"; Page({ /** * 页面的初始数据 */ data: { loginStatus: false, regModalVisible: false, bindShipVisible: false, userInfo: {}, shipInfo: {}, shipName: "", // 新增:船舶名称 shipMmsi: "", // 新增:船舶MMSI }, async login() { if (!wx.getStorageSync("openId")) { wx.showToast({ title: "正在初始化登录信息...", icon: "none", duration: 500, }); wxSetSessionKey(); return; } wx.showLoading({ title: "正在登录...", mask: true, }); let { data } = await postApi("/login/openid", { openId: wx.getStorageSync("openId"), }); await new Promise((resolve) => { setTimeout(() => { resolve(); }, 500); }); wx.hideLoading(); if (data.status == 0) { let obj = { ...data.result.userInfo, ...data.result.shipInfo, }; Object.keys(obj).forEach(function (key) { wx.setStorageSync(key, obj[key]); }); wx.setStorageSync( "accessToken", data?.result?.tokenInfo?.tokenValue || "" ); wx.switchTab({ url: "/pages/takePhoto/takePhoto", }); } else { if (data?.result?.userInfo?.userId) { wx.setStorageSync( "accessToken", data?.result?.tokenInfo?.tokenValue || "" ); wx.showModal({ title: "提示", content: "您已注册但尚未绑定船舶,去绑定?", confirmText: "去绑定", cancelText: "取消", success: (res) => { // 使用箭头函数修正this指向 if (res.confirm) { this.setData({ bindShipVisible: true, }); } }, }); } else { this.setData({ regModalVisible: true, }); } } }, async init() { let { data } = await postApi("/login/openid", { openId: wx.getStorageSync("openId"), }); }, hideRegModal() { this.setData({ regModalVisible: false, }); }, async goToRegister(e) { try { if (e.detail.errMsg == "getPhoneNumber:ok") { wx.showLoading({ title: "正在登录...", mask: true, }); let { data } = await postApi("/wx/getPhoneNumber", { code: e.detail.code, }); console.log("data1", data); if (data.status === 0) { // let { phoneNumber: phone } = data.result; let phone = "15136162222"; let { data } = await postApi("/login", { phone, openId: wx.getStorageSync("openId"), }); console.log("data2", data); await new Promise((resolve) => { setTimeout(() => { wx.hideLoading(); resolve(); }, 1500); }); if (data.status === 0) { console.log(data, "data2"); wx.setStorageSync("phone", phone); wx.setStorageSync( "accessToken", data?.result?.tokenInfo?.tokenValue || "" ); } else { console.log(data, "data23"); wx.setStorageSync( "accessToken", data?.result?.tokenInfo?.tokenValue || "" ); if (data?.result?.userInfo?.userId) { console.log(data, "data24"); wx.showModal({ title: "提示", content: "您已注册但尚未绑定船舶,去绑定?", confirmText: "去绑定", cancelText: "取消", success: (res) => { // 使用箭头函数修正this指向 if (res.confirm) { this.setData({ bindShipVisible: true, regModalVisible: false, // 关闭注册弹窗 }); } }, }); } else { console.log(data, "data25"); wx.showToast({ title: data.msg, icon: "none", duration: 5000, }); } this.setData({ regModalVisible: false, }); } } else { wx.hideLoading(); wx.showToast({ title: "获取手机号失败", duration: 5000, }); } } else { wx.showToast({ title: "请授权以登录", icon: "error", }); } } catch (error) { wx.showToast({ title: "系统错误", icon: "none", duration: 5000, }); console.error("Error:", error); } }, onLoad: function (options) {}, onShow() { let v = wx.getAccountInfoSync(); if (v.miniProgram.envVersion != "release") { wx.showToast({ title: `当前环境:${ v.miniProgram.envVersion == "develop" ? "开发版" : "体验版" }`, icon: "none", duration: 1000, }); } }, /** * 用户点击右上角分享 */ onShareAppMessage: function () {}, // 隐藏绑定船舶弹窗 async hideBindShipModal() { this.setData({ bindShipVisible: false, shipName: "", // 清空输入 shipMmsi: "", // 清空输入 }); }, // 确认绑定船舶 async confirmBindShip() { const { shipName, shipMmsi } = this.data; if (!shipName) { wx.showToast({ title: "请输入船舶名称", icon: "none", }); return; } if (!shipMmsi) { wx.showToast({ title: "请输入船舶MMSI", icon: "none", }); return; } wx.showLoading({ title: "正在绑定...", mask: true, }); let { data } = await postApi("/register", { shipName, shipMmsi, }); await new Promise((resolve) => { setTimeout(() => { resolve(); }, 1500); }); wx.hideLoading(); if (data.status === 0) { let obj = { ...data.result.userInfo, ...data.result.shipInfo, }; Object.keys(obj).forEach(function (key) { wx.setStorageSync(key, obj[key]); }); wx.setStorageSync( "accessToken", data?.result?.tokenInfo?.tokenValue || "" ); wx.showToast({ title: "绑定成功", icon: "success", duration: 1500, }); await new Promise((resolve) => { setTimeout(() => { resolve(); }, 1500); }); wx.switchTab({ url: "/pages/takePhoto/takePhoto", }); } else { wx.showToast({ title: data.msg, icon: "none", duration: 5000, }); } }, goToExp() { wx.switchTab({ url: "/pages/takePhoto/takePhoto", }); }, });