feat: complete V1 phases 0-7

This commit is contained in:
2026-08-12 14:35:12 +08:00
commit c3dd9be674
311 changed files with 38750 additions and 0 deletions
@@ -0,0 +1,78 @@
import { AUTH_READY_MESSAGE, MINI_PROGRAM_TITLE } from '../../constants/app-info';
import { MiniProgramApiError } from '../../services/api-client';
import { loginWithWechat, restoreCurrentSession } from '../../services/auth';
Page({
data: {
authStatus: 'loading',
message: '正在安全登录,请稍候…',
title: MINI_PROGRAM_TITLE,
canCollaborate: false,
},
onLoad() {
void this.authenticate();
},
async authenticate() {
this.setData({ authStatus: 'loading', message: '正在安全登录,请稍候…' });
try {
const session = await restoreCurrentSession();
const user = session?.user ?? (await loginWithWechat()).user;
this.setData({
authStatus: 'success',
message: AUTH_READY_MESSAGE,
canCollaborate: user.permissions.includes('assigned_cases:read'),
});
} catch (error) {
const message =
error instanceof MiniProgramApiError && error.requestId
? `${error.message}(编号:${error.requestId})`
: error instanceof Error
? error.message
: '登录失败,请稍后重试';
this.setData({ authStatus: 'error', message });
}
},
retryLogin() {
void this.authenticate();
},
applyForSelf() {
void wx.navigateTo({ url: '/pages/application-form/application-form?mode=SELF' });
},
applyForFamily() {
void wx.navigateTo({ url: '/pages/application-form/application-form?mode=FAMILY' });
},
viewMyApplications() {
void wx.navigateTo({ url: '/pages/my-applications/my-applications' });
},
viewAssignedCases() {
void wx.navigateTo({ url: '/pages/assigned-cases/assigned-cases' });
},
viewProjects() {
void wx.navigateTo({ url: '/pages/projects/projects' });
},
viewActivities() {
void wx.navigateTo({ url: '/pages/activities/activities' });
},
viewVolunteerCenter() {
void wx.navigateTo({ url: '/pages/volunteer-center/volunteer-center' });
},
viewContent() {
void wx.navigateTo({ url: '/pages/content/content' });
},
viewOrganization() {
void wx.navigateTo({ url: '/pages/content/content?type=ORGANIZATION_INTRO' });
},
viewNotifications() {
void wx.navigateTo({ url: '/pages/notifications/notifications' });
},
});