appointment_system/miniprogram/unpackage/dist/dev/mp-weixin/pages/me/me-page.js
2025-12-19 00:37:31 +08:00

333 lines
11 KiB
JavaScript

"use strict";
const common_vendor = require("../../common/vendor.js");
const utils_tabbarI18n = require("../../utils/tabbar-i18n.js");
const utils_auth = require("../../utils/auth.js");
const modules_api_AppServer = require("../../modules/api/AppServer.js");
const common_assets = require("../../common/assets.js");
const _sfc_main = {
data() {
return {
showLanguagePicker: false,
languages: [
{ code: "zh", name: "中文" },
{ code: "en", name: "English" },
{ code: "pt", name: "Português" }
],
user: null,
isLogin: false,
appointmentStats: {
pending: 0,
inProgress: 0,
completed: 0
},
unreadCount: 0
};
},
computed: {
currentLanguage() {
return this.$i18n.locale;
}
},
onLoad() {
this.checkLoginStatus();
},
onShow() {
utils_tabbarI18n.updateTabBarI18n(this);
this.checkLoginStatus();
if (this.isLogin) {
this.refreshUserInfo();
this.fetchAppointmentStats();
this.fetchUnreadCount();
}
},
methods: {
/**
* 检查登录状态
*/
checkLoginStatus() {
this.isLogin = utils_auth.isLoggedIn();
if (this.isLogin) {
this.user = utils_auth.getCurrentUser();
}
},
/**
* 从服务器刷新用户信息
*/
async refreshUserInfo() {
try {
const appserver = new modules_api_AppServer.AppServer();
const response = await appserver.GetUserProfile();
if (response.code === 0 && response.data) {
this.user = response.data;
utils_auth.saveUserInfo(response.data);
}
} catch (error) {
common_vendor.index.__f__("error", "at pages/me/me-page.vue:303", "刷新用户信息失败:", error);
}
},
/**
* 获取预约统计数据
*/
async fetchAppointmentStats() {
try {
const appserver = new modules_api_AppServer.AppServer();
const response = await appserver.GetAppointmentStats();
if (response.code === 0 && response.data) {
this.appointmentStats = {
pending: response.data.pending || 0,
inProgress: response.data.inProgress || 0,
completed: response.data.completed || 0
};
}
} catch (error) {
common_vendor.index.__f__("error", "at pages/me/me-page.vue:323", "获取预约统计失败:", error);
}
},
/**
* 获取未读通知数量
*/
async fetchUnreadCount() {
try {
const appserver = new modules_api_AppServer.AppServer();
const response = await appserver.GetNotificationUnreadCount();
if (response.code === 0 && response.data) {
this.unreadCount = response.data.all || 0;
this.updateTabBarBadge();
}
} catch (error) {
common_vendor.index.__f__("error", "at pages/me/me-page.vue:341", "获取未读通知数量失败:", error);
}
},
/**
* 更新TabBar红点
*/
updateTabBarBadge() {
if (this.unreadCount > 0) {
common_vendor.index.setTabBarBadge({
index: 2,
text: this.unreadCount > 99 ? "99+" : String(this.unreadCount)
});
} else {
common_vendor.index.removeTabBarBadge({
index: 2
});
}
},
getCurrentLanguageName() {
const current = this.languages.find((lang) => lang.code === this.currentLanguage);
return current ? current.name : "中文";
},
changeLanguage(langCode) {
if (langCode === this.$i18n.locale) {
this.showLanguagePicker = false;
return;
}
this.$i18n.locale = langCode;
common_vendor.index.setStorageSync("language", langCode);
this.showLanguagePicker = false;
common_vendor.index.showToast({
title: this.$t("common.success"),
icon: "success",
duration: 1e3
});
setTimeout(() => {
common_vendor.index.reLaunch({
url: "/pages/index/index"
});
}, 1e3);
},
/**
* 跳转到个人资料编辑页面(需要登录)
*/
goToProfileEdit() {
if (!utils_auth.requireAuth()) {
return;
}
common_vendor.index.navigateTo({
url: "/pages/me/profile-edit-page"
});
},
/**
* 跳转到通知页面(需要登录)
*/
goToNotification() {
if (!utils_auth.requireAuth()) {
return;
}
common_vendor.index.navigateTo({
url: "/pages/me/notification-page"
});
},
/**
* 跳转到我的预约页面(需要登录)
*/
goToMyAppointments(tab = "all") {
if (!utils_auth.requireAuth()) {
return;
}
common_vendor.index.navigateTo({
url: "/pages/me/my-appointments-page?tab=" + tab
});
},
/**
* 跳转到联系我们(不需要登录)
*/
goToContactUs() {
common_vendor.index.navigateTo({
url: "/pages/me/contact-us-page"
});
},
/**
* 跳转到邀请奖励页面(需要登录)
*/
goToInviteReward() {
if (!utils_auth.requireAuth()) {
return;
}
common_vendor.index.navigateTo({
url: "/pages/me/invite-reward-page"
});
},
/**
* 跳转到关于我们页面(不需要登录)
*/
goToAboutUs() {
common_vendor.index.navigateTo({
url: "/pages/me/about-us-page"
});
},
/**
* 跳转到用户协议页面(不需要登录)
*/
goToUserAgreement() {
common_vendor.index.navigateTo({
url: "/pages/me/user-agreement-page"
});
},
/**
* 跳转到隐私政策页面(不需要登录)
*/
goToPrivacyPolicy() {
common_vendor.index.navigateTo({
url: "/pages/me/privacy-policy-page"
});
},
/**
* 退出登录
*/
handleLogout() {
if (!this.isLogin) {
common_vendor.index.navigateTo({
url: "/pages/login/login-page"
});
return;
}
common_vendor.index.showModal({
title: this.$t("common.confirm"),
content: "确定要退出登录吗?",
success: async (res) => {
if (res.confirm) {
await utils_auth.logout();
}
}
});
}
}
};
if (!Array) {
const _easycom_up_popup2 = common_vendor.resolveComponent("up-popup");
_easycom_up_popup2();
}
const _easycom_up_popup = () => "../../node-modules/uview-plus/components/u-popup/u-popup.js";
if (!Math) {
_easycom_up_popup();
}
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return common_vendor.e({
a: $data.isLogin && $data.user
}, $data.isLogin && $data.user ? {
b: $data.user.avatar || "/static/default_avatar.png",
c: common_vendor.t($data.user.nickname || "用户"),
d: common_vendor.t($data.user.uid || ""),
e: common_assets._imports_0$1,
f: common_vendor.o((...args) => $options.goToProfileEdit && $options.goToProfileEdit(...args))
} : {
g: common_assets._imports_1$2,
h: common_assets._imports_0$1,
i: common_vendor.o((...args) => $options.handleLogout && $options.handleLogout(...args))
}, {
j: common_vendor.t($data.isLogin ? $data.appointmentStats.pending : "-"),
k: common_vendor.t(_ctx.$t("me.appointment")),
l: common_vendor.o(($event) => $options.goToMyAppointments("all")),
m: common_vendor.t($data.isLogin ? $data.appointmentStats.inProgress : "-"),
n: common_vendor.t(_ctx.$t("me.inProgress")),
o: common_vendor.o(($event) => $options.goToMyAppointments("inProgress")),
p: common_vendor.t($data.isLogin ? $data.appointmentStats.completed : "-"),
q: common_vendor.t(_ctx.$t("me.completed")),
r: common_vendor.o(($event) => $options.goToMyAppointments("completed")),
s: common_assets._imports_2,
t: common_assets._imports_1$1,
v: common_vendor.t(_ctx.$t("me.notification")),
w: $data.unreadCount > 0
}, $data.unreadCount > 0 ? {
x: common_vendor.t($data.unreadCount > 99 ? "99+" : $data.unreadCount)
} : {}, {
y: common_assets._imports_1,
z: common_vendor.o((...args) => $options.goToNotification && $options.goToNotification(...args)),
A: common_assets._imports_5,
B: common_vendor.t(_ctx.$t("me.customerService")),
C: common_assets._imports_1,
D: common_assets._imports_6,
E: common_vendor.t(_ctx.$t("me.contactUs")),
F: common_assets._imports_1,
G: common_vendor.o((...args) => $options.goToContactUs && $options.goToContactUs(...args)),
H: common_assets._imports_7,
I: common_vendor.t(_ctx.$t("me.inviteReward")),
J: common_assets._imports_1,
K: common_vendor.o((...args) => $options.goToInviteReward && $options.goToInviteReward(...args)),
L: common_assets._imports_8,
M: common_assets._imports_9,
N: common_vendor.t(_ctx.$t("me.language")),
O: common_vendor.t($options.getCurrentLanguageName()),
P: common_assets._imports_1,
Q: common_vendor.o(($event) => $data.showLanguagePicker = true),
R: common_assets._imports_10,
S: common_vendor.t(_ctx.$t("me.about")),
T: common_assets._imports_1,
U: common_vendor.o((...args) => $options.goToAboutUs && $options.goToAboutUs(...args)),
V: common_assets._imports_11,
W: common_vendor.t(_ctx.$t("me.userAgreement")),
X: common_assets._imports_1,
Y: common_vendor.o((...args) => $options.goToUserAgreement && $options.goToUserAgreement(...args)),
Z: common_assets._imports_12,
aa: common_vendor.t(_ctx.$t("me.privacyPolicy")),
ab: common_assets._imports_1,
ac: common_vendor.o((...args) => $options.goToPrivacyPolicy && $options.goToPrivacyPolicy(...args)),
ad: common_assets._imports_13,
ae: common_vendor.t($data.isLogin ? _ctx.$t("me.logout") : "登录"),
af: common_assets._imports_1,
ag: common_vendor.o((...args) => $options.handleLogout && $options.handleLogout(...args)),
ah: common_vendor.t(_ctx.$t("me.language")),
ai: common_vendor.o(($event) => $data.showLanguagePicker = false),
aj: common_vendor.f($data.languages, (lang, k0, i0) => {
return common_vendor.e({
a: common_vendor.t(lang.name),
b: $options.currentLanguage === lang.code
}, $options.currentLanguage === lang.code ? {} : {}, {
c: lang.code,
d: common_vendor.o(($event) => $options.changeLanguage(lang.code), lang.code),
e: $options.currentLanguage === lang.code ? 1 : ""
});
}),
ak: common_vendor.o(($event) => $data.showLanguagePicker = false),
al: common_vendor.p({
show: $data.showLanguagePicker,
mode: "bottom",
["border-radius"]: "20"
})
});
}
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render]]);
wx.createPage(MiniProgramPage);
//# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/me/me-page.js.map