60 lines
1.9 KiB
JavaScript
60 lines
1.9 KiB
JavaScript
const { clearSession, refreshMe, requireLogin } = require("../../utils/auth");
|
|
const { get } = require("../../utils/api");
|
|
const { showError } = require("../../utils/page-helpers");
|
|
|
|
Page({
|
|
data: { user: null, classes: [], activeClassId: null, activeClassName: "" },
|
|
|
|
async onShow() {
|
|
if (!requireLogin()) return;
|
|
try {
|
|
const user = await refreshMe();
|
|
const classRes = await get("/api/classes/");
|
|
const app = getApp();
|
|
const activeClassId = app.globalData.activeClassId;
|
|
const memberships = Array.isArray(user.memberships) ? user.memberships : [];
|
|
const activeMembership = memberships.find((item) => item.class_id === activeClassId) || user.active_membership;
|
|
this.setData({
|
|
user,
|
|
activeClassName: (activeMembership && activeMembership.class_name) || "",
|
|
classes: (classRes.items || []).map((item) => ({
|
|
...item,
|
|
is_active: item.id === activeClassId
|
|
})),
|
|
activeClassId
|
|
});
|
|
} catch (error) {
|
|
showError(error);
|
|
}
|
|
},
|
|
|
|
openProfile() {
|
|
wx.navigateTo({ url: "/pages/profile-edit/index" });
|
|
},
|
|
|
|
logout() {
|
|
clearSession();
|
|
wx.removeStorageSync("active_class");
|
|
wx.navigateTo({ url: "/pages/bind/index" });
|
|
},
|
|
|
|
switchClass(event) {
|
|
const classId = Number(event.currentTarget.dataset.id);
|
|
const classItem = this.data.classes.find((item) => item.id === classId);
|
|
if (!classItem) return;
|
|
wx.setStorageSync("active_class", classItem);
|
|
const app = getApp();
|
|
app.globalData.activeClassId = classItem.id;
|
|
app.globalData.enabledModules = classItem.enabled_modules || null;
|
|
this.setData({
|
|
activeClassId: classItem.id,
|
|
activeClassName: classItem.name,
|
|
classes: this.data.classes.map((item) => ({
|
|
...item,
|
|
is_active: item.id === classItem.id
|
|
}))
|
|
});
|
|
wx.showToast({ title: "已切换班级", icon: "success" });
|
|
}
|
|
});
|