Files
danyang-match/miniapp/pages/activity-mutual-waiting/activity-mutual-waiting.ts
T

83 lines
3.0 KiB
TypeScript

import { request } from '../../utils/requestPromise'
const app = getApp<{ globalData: { apiBase: string; uploadBase: string; token: string } }>();
Page({
data: {
activityId: '', partnerId: '',
partnerName: '', partnerAvatar: '',
myConfirmed: false, bothConfirmed: false, partnerDeclined: false
},
onLoad(options: any) {
this.setData({ activityId: options.activityId, partnerId: options.partnerId });
this.loadStatus();
},
async loadStatus() {
try {
const res = await request<any>({
url: `${app.globalData.apiBase}/activities/${this.data.activityId}/mutual/status/${this.data.partnerId}`,
header: { 'Authorization': `Bearer ${app.globalData.token}` }
});
if (res.statusCode === 200 && res.data.success) {
const d = res.data.data;
this.setData({
myConfirmed: d.myStatus === 'accepted',
bothConfirmed: d.bothConfirmed,
partnerDeclined: d.partnerStatus === 'declined'
});
}
// 加载对方信息
this.loadPartnerInfo();
} catch (e) { console.error(e); }
},
async loadPartnerInfo() {
try {
const res = await request<any>({
url: `${app.globalData.apiBase}/profiles/${this.data.partnerId}`,
header: { 'Authorization': `Bearer ${app.globalData.token}` }
});
if (res.statusCode === 200 && res.data.success) {
this.setData({ partnerName: res.data.data?.displayName || '新朋友',
partnerAvatar: res.data.data?.avatarFileId ? `${app.globalData.uploadBase}/files/${res.data.data.avatarFileId}` : '' });
}
} catch (e) { /* ignore */ }
},
async onConfirm() {
try {
const res = await request<any>({
url: `${app.globalData.apiBase}/activities/${this.data.activityId}/mutual/confirm`,
method: 'POST',
header: { 'Authorization': `Bearer ${app.globalData.token}`, 'Content-Type': 'application/json' },
data: { partnerId: this.data.partnerId }
});
if (res.statusCode === 200 && res.data.success) {
this.setData({ myConfirmed: true, bothConfirmed: res.data.data.bothConfirmed });
if (res.data.data.bothConfirmed) {
wx.showToast({ title: '双方已确认!', icon: 'success' });
setTimeout(() => this.openChat(), 1500);
}
}
} catch (e) { wx.showToast({ title: '操作失败', icon: 'none' }); }
},
async onDecline() {
try {
await request<any>({
url: `${app.globalData.apiBase}/activities/${this.data.activityId}/mutual/decline`,
method: 'POST',
header: { 'Authorization': `Bearer ${app.globalData.token}`, 'Content-Type': 'application/json' },
data: { partnerId: this.data.partnerId }
});
this.setData({ myConfirmed: false, bothConfirmed: false });
wx.navigateBack();
} catch (e) { wx.showToast({ title: '操作失败', icon: 'none' }); }
},
openChat() {
wx.navigateTo({ url: `/pages/chat/chat?partnerId=${this.data.partnerId}` });
}
});