"use strict"; const common_vendor = require("../../common/vendor.js"); const api_user = require("../../api/user.js"); const common_assets = require("../../common/assets.js"); const _sfc_main = { data() { return { isAgreed: false, wxLoginCode: "" }; }, methods: { toggleAgreement() { this.isAgreed = !this.isAgreed; }, handleLogin() { if (!this.isAgreed) { common_vendor.index.showToast({ title: "请先阅读并同意相关协议", icon: "none" }); return; } this.getWxLoginCode(); }, getWxLoginCode() { common_vendor.index.showLoading({ title: "登录中..." }); common_vendor.index.login({ provider: "weixin", success: (loginRes) => { console.log("获取微信登录code成功:", loginRes.code); this.wxLoginCode = loginRes.code; common_vendor.index.hideLoading(); this.getUserProfile(); }, fail: (err) => { common_vendor.index.hideLoading(); console.error("获取微信登录code失败:", err); common_vendor.index.showToast({ title: "微信登录失败", icon: "none" }); } }); }, getUserProfile() { common_vendor.wx$1.getUserProfile({ desc: "用于完善用户资料", success: (profileRes) => { console.log("获取用户信息成功:", profileRes); const loginParams = { code: this.wxLoginCode, userInfo: profileRes.userInfo, signature: profileRes.signature, rawData: profileRes.rawData, encryptedData: profileRes.encryptedData, iv: profileRes.iv }; this.wxLoginRequest(loginParams); }, fail: (err) => { console.error("获取用户信息失败:", err); this.wxLoginRequest({ code: this.wxLoginCode, userInfo: { nickName: "微信用户", avatarUrl: "", gender: 0, province: "", city: "", country: "" } }); } }); }, async wxLoginRequest(loginParams) { try { common_vendor.index.showLoading({ title: "登录中..." }); console.log("发送登录请求,参数:", loginParams); const data = await api_user.wxLogin(loginParams); console.log("登录成功,返回数据:", data); const userData = this.buildUserData(data, loginParams); this.saveLoginState(data, userData); } catch (error) { this.handleLoginError(error, loginParams); } }, buildUserData(data, loginParams) { console.log("构建用户数据,服务器返回:", data); let userData = { username: data.username || data.nickName || (loginParams.userInfo ? loginParams.userInfo.nickName : "微信用户"), name: data.name || data.username || data.nickName || (loginParams.userInfo ? loginParams.userInfo.nickName : ""), id: data.id || data.userId || data.user_id || data.openid || "", userId: data.userId || data.user_id || data.id || data.openid || "", avatar: data.avatar || data.avatarUrl || (loginParams.userInfo ? loginParams.userInfo.avatarUrl : "/static/avatar.png"), phone: data.phone || data.mobile || "", gender: data.gender || (loginParams.userInfo ? loginParams.userInfo.gender : 0), openid: data.openid || "", unionid: data.unionid || "", session_key: data.session_key || "", is_new_user: data.is_new_user || false, loginTime: (/* @__PURE__ */ new Date()).getTime() }; console.log("构建的用户数据:", userData); return userData; }, saveLoginState(data, userData) { const token = data.token || data.session_key || ""; if (token) { common_vendor.index.setStorageSync("token", token); console.log("Token已保存:", token); } if (userData.avatar) { console.log("用户头像已保存:", userData.avatar); } else if (data.avatarUrl) { userData.avatar = data.avatarUrl; } common_vendor.index.setStorageSync("userInfo", JSON.stringify(userData)); console.log("基本用户信息已保存"); if (userData.id) { this.fetchUserDetail(userData.id, userData); } else { this.completeLogin(); } }, // 获取用户详细信息 async fetchUserDetail(userId, basicUserData) { try { console.log("获取用户详细信息,用户ID:", userId); const userDetail = await api_user.getUserInfo(userId); console.log("获取用户详细信息成功:", userDetail); if (userDetail) { const updatedUserInfo = { ...basicUserData, // 更新基本信息 name: userDetail.name || basicUserData.name, phone: userDetail.phone || userDetail.mobile || basicUserData.phone, gender: userDetail.gender || basicUserData.gender, // 添加详细信息 id_card: userDetail.id_card || "", emergency_contact: userDetail.emergency_contact || "", emergency_phone: userDetail.emergency_phone || "", relation: userDetail.relation || "", // 其他可能的字段 ...userDetail }; common_vendor.index.setStorageSync("userInfo", JSON.stringify(updatedUserInfo)); console.log("用户详细信息已更新并保存"); } } catch (error) { console.error("获取用户详细信息失败:", error); } finally { this.completeLogin(); } }, // 完成登录流程 completeLogin() { common_vendor.index.hideLoading(); common_vendor.index.showToast({ title: "登录成功", icon: "success", success: () => { setTimeout(() => { common_vendor.index.switchTab({ url: "/pages/index/index" }); }, 1500); } }); }, handleLoginError(error, loginParams) { common_vendor.index.hideLoading(); if (error.message && (error.message.includes("code无效") || error.message.includes("已过期") || error.message.includes("已被使用") || error.status === 999)) { console.error("微信登录code无效,重新获取:", error); common_vendor.index.showToast({ title: "code已过期,请重试", icon: "none", duration: 2e3 }); setTimeout(() => { this.getWxLoginCode(); }, 1e3); return; } console.error("微信登录失败:", error); common_vendor.index.showToast({ title: error.message || "登录失败", icon: "none" }); } } }; function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { return { a: common_assets._imports_0, b: common_vendor.o((...args) => $options.handleLogin && $options.handleLogin(...args)), c: $data.isAgreed, d: common_vendor.o((...args) => $options.toggleAgreement && $options.toggleAgreement(...args)) }; } const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render]]); wx.createPage(MiniProgramPage);