"use strict"; const common_vendor = require("../../common/vendor.js"); const common_assets = require("../../common/assets.js"); const stores_user = require("../../stores/user.js"); const utils_auth = require("../../utils/auth.js"); const utils_crypto = require("../../utils/crypto.js"); if (!Array) { const _easycom_uni_load_more2 = common_vendor.resolveComponent("uni-load-more"); const _easycom_uni_icons2 = common_vendor.resolveComponent("uni-icons"); (_easycom_uni_load_more2 + _easycom_uni_icons2)(); } const _easycom_uni_load_more = () => "../../node-modules/@dcloudio/uni-ui/lib/uni-load-more/uni-load-more.js"; const _easycom_uni_icons = () => "../../node-modules/@dcloudio/uni-ui/lib/uni-icons/uni-icons.js"; if (!Math) { (_easycom_uni_load_more + _easycom_uni_icons)(); } const _sfc_main = { __name: "Login", setup(__props) { let isAutoLogining = false; let hasAutoLogin = false; const username = common_vendor.ref(""); const password = common_vendor.ref(""); const showPassword = common_vendor.ref(false); const redirect = common_vendor.ref(""); const tabBarPages = [ "/pages/index/index", "/pages/appointment/index", "/pages/consultation/index", "/pages/my/index" ]; common_vendor.onLoad(async (options) => { common_vendor.index.__f__("log", "at pages/login/Login.vue:69", "登录页onLoad,原始参数:", options); const launchQuery = common_vendor.index.getLaunchOptionsSync().query || {}; const allParams = { ...launchQuery, ...options }; common_vendor.index.__f__("log", "at pages/login/Login.vue:72", "合并后参数:", allParams); if (allParams.redirect) { redirect.value = decodeURIComponent(allParams.redirect); } const code = allParams.code; if (code) { common_vendor.index.__f__("log", "at pages/login/Login.vue:82", "检测到免登码,开始解析:", code); common_vendor.index.showLoading({ title: "解析免登信息...", mask: true }); try { const res = await common_vendor.index.$uapi.get("/GiLink/getCode", { code }); common_vendor.index.hideLoading(); common_vendor.index.__f__("log", "at pages/login/Login.vue:89", res.data); res.data.passWord = res.data.userPhone; if (!res.data || !res.data.userName || !res.data.passWord) { throw new Error("解析免登码失败"); } let obj = JSON.parse(res.data.extContent); common_vendor.index.__f__("log", "at pages/login/Login.vue:96", res.data.userName); const userName = res.data.userName; const passWord = res.data.passWord; const otherParams = { id: obj.infoId, type: obj.type, status: obj.status, fcid: obj.id }; common_vendor.index.__f__("log", "at pages/login/Login.vue:106", "解析结果:", { userName, otherParams }); if (utils_auth.getToken()) common_vendor.index.removeStorageSync("token"); await handleSSOLogin(userName, passWord, otherParams); } catch (err) { common_vendor.index.hideLoading(); common_vendor.index.__f__("error", "at pages/login/Login.vue:113", "免登码解析失败:", err); common_vendor.index.showToast({ title: "免登录失败,请手动登录", icon: "none" }); } return; } if (utils_auth.getToken()) { setTimeout(() => navigateToTarget(), 100); return; } username.value = ""; password.value = ""; }); common_vendor.onShow(() => { if (hasAutoLogin) hasAutoLogin = false; }); const handleSSOLogin = async (userName, passWord, pageParams = {}) => { var _a; if (isAutoLogining) return; isAutoLogining = true; common_vendor.index.__f__("log", "at pages/login/Login.vue:140", "开始SSO免登:", { userName, pageParams }); common_vendor.index.showLoading({ title: "自动登录中...", mask: true }); try { const tokenRes = await common_vendor.index.$uapi.post("/getToken", { userName, passWord }); common_vendor.index.hideLoading(); if (!((_a = tokenRes.data) == null ? void 0 : _a.token)) throw new Error("获取token失败"); utils_auth.setToken(tokenRes.data.token); const userStore = stores_user.useUserStore(); const userInfo = await common_vendor.index.$uapi.get("/getInfo"); if (userInfo && userInfo.user) { userStore.setUserInfo(userInfo.user); if (userInfo.roles) userStore.setroleKey(userInfo.roles); } let targetPage = redirect.value; if (!targetPage) { const launchOptions = common_vendor.index.getLaunchOptionsSync(); const originalPath = launchOptions.path; if (originalPath && !originalPath.includes("login/Login")) { targetPage = "/" + originalPath; } } if (!targetPage) targetPage = "/pages/index/index"; hasAutoLogin = true; await navigateToTargetPage(targetPage, pageParams); } catch (err) { common_vendor.index.hideLoading(); common_vendor.index.__f__("error", "at pages/login/Login.vue:175", "SSO免登失败:", err); common_vendor.index.showToast({ title: err.message || "自动登录失败,请手动登录", icon: "none", duration: 3e3 }); common_vendor.index.removeStorageSync("token"); } finally { isAutoLogining = false; } }; const handleLogin = async () => { try { if (!username.value || !password.value) { common_vendor.index.showToast({ title: "请输入账号密码", icon: "none" }); return; } common_vendor.index.showLoading({ title: "登录中...", mask: true }); const userStore = stores_user.useUserStore(); const encryptedPassword = utils_crypto.encrypt(password.value); const encryptedUsername = utils_crypto.encrypt(username.value); const loginRes = await common_vendor.index.$uapi.post("/login", { username: encryptedUsername, password: encryptedPassword }); if (!loginRes || !loginRes.token) throw new Error("登录失败"); utils_auth.setToken(loginRes.token); const userInfo = await common_vendor.index.$uapi.get("/getInfo"); if (userInfo && userInfo.user) { userStore.setUserInfo(userInfo.user); if (userInfo.roles) userStore.setroleKey(userInfo.roles); } common_vendor.index.hideLoading(); await navigateToTarget(); } catch (err) { common_vendor.index.hideLoading(); common_vendor.index.__f__("error", "at pages/login/Login.vue:221", "登录失败:", err); common_vendor.index.showToast({ title: err.message || "登录失败", icon: "none", duration: 3e3 }); } }; const navigateToTarget = () => { if (redirect.value) { return navigateToTargetPage(redirect.value, {}); } else { common_vendor.index.__f__("log", "at pages/login/Login.vue:237", "没有目标页面,跳转首页"); common_vendor.index.switchTab({ url: "/pages/index/index" }); return Promise.resolve(true); } }; const navigateToTargetPage = (targetPage, pageParams = {}) => { return new Promise((resolve) => { if (!targetPage) { common_vendor.index.__f__("log", "at pages/login/Login.vue:251", "目标页为空,跳转首页"); common_vendor.index.switchTab({ url: "/pages/index/index" }); resolve(true); return; } let finalUrl = targetPage; const paramKeys = Object.keys(pageParams).filter( (key) => pageParams[key] !== void 0 && pageParams[key] !== null ); if (paramKeys.length > 0) { const queryStr = paramKeys.map((key) => `${key}=${encodeURIComponent(pageParams[key])}`).join("&"); finalUrl += (finalUrl.includes("?") ? "&" : "?") + queryStr + "&sso=1"; } common_vendor.index.__f__("log", "at pages/login/Login.vue:268", "最终跳转目标URL:", finalUrl); const baseUrl = finalUrl.split("?")[0]; const isTabBar = tabBarPages.includes(baseUrl); setTimeout(() => { if (isTabBar) { common_vendor.index.switchTab({ url: baseUrl, success: () => resolve(true), fail: (err) => { common_vendor.index.__f__("error", "at pages/login/Login.vue:279", "switchTab失败:", err); common_vendor.index.switchTab({ url: "/pages/index/index" }); resolve(false); } }); } else { common_vendor.index.redirectTo({ url: finalUrl, success: () => resolve(true), fail: (err) => { common_vendor.index.__f__("error", "at pages/login/Login.vue:289", "redirectTo失败:", err); common_vendor.index.switchTab({ url: "/pages/index/index" }); resolve(false); } }); } }, 300); }); }; return (_ctx, _cache) => { return common_vendor.e({ a: common_vendor.unref(isAutoLogining) }, common_vendor.unref(isAutoLogining) ? { b: common_vendor.p({ status: "loading", ["content-text"]: { contentdown: "自动登录中..." } }) } : {}, { c: common_assets._imports_0, d: common_vendor.p({ type: "contact", size: "24", color: "#409EFF" }), e: username.value, f: common_vendor.o(($event) => username.value = $event.detail.value), g: common_vendor.p({ type: "locked", size: "24", color: "#409EFF" }), h: !showPassword.value, i: password.value, j: common_vendor.o(($event) => password.value = $event.detail.value), k: common_vendor.o(($event) => showPassword.value = !showPassword.value), l: common_vendor.p({ type: showPassword.value ? "eye" : "eye-slash", size: "22", color: "#999" }), m: username.value && password.value ? 1 : "", n: common_vendor.o(handleLogin), o: common_vendor.gei(_ctx, "") }); }; } }; const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["__scopeId", "data-v-0a03bc64"]]); wx.createPage(MiniProgramPage); //# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/login/Login.js.map