333 lines
11 KiB
JavaScript
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
|