122 lines
3.1 KiB
JavaScript
122 lines
3.1 KiB
JavaScript
const birthProfile = require('../../utils/birth-profile.js');
|
|
|
|
Page({
|
|
data: {
|
|
loggedIn: false,
|
|
profiles: [],
|
|
activeProfileId: '',
|
|
maxFree: birthProfile.MAX_PROFILES,
|
|
canAdd: true,
|
|
showAddForm: false,
|
|
formName: '',
|
|
formGender: 'male',
|
|
formDate: '1990-01-01',
|
|
formTime: '12:00'
|
|
},
|
|
|
|
onShow() {
|
|
this.setData({ loggedIn: birthProfile.isLoggedIn() });
|
|
this.loadProfiles();
|
|
},
|
|
|
|
loadProfiles() {
|
|
const render = () => {
|
|
const profiles = birthProfile.getProfiles();
|
|
const active = birthProfile.getActiveProfile();
|
|
this.setData({
|
|
profiles,
|
|
activeProfileId: active ? active.id : '',
|
|
canAdd: profiles.length < this.data.maxFree
|
|
});
|
|
};
|
|
// 已登录时先从服务端同步,失败静默回退本地
|
|
if (birthProfile.isLoggedIn()) {
|
|
birthProfile.syncFromServer().then(render).catch(render);
|
|
} else {
|
|
render();
|
|
}
|
|
},
|
|
|
|
toggleAddForm() {
|
|
if (!this.data.showAddForm && !this.data.canAdd) {
|
|
wx.showToast({ title: `最多可免费绑定 ${this.data.maxFree} 个生辰`, icon: 'none' });
|
|
return;
|
|
}
|
|
this.setData({ showAddForm: !this.data.showAddForm });
|
|
},
|
|
|
|
onFormName(e) {
|
|
this.setData({ formName: e.detail.value });
|
|
},
|
|
|
|
setFormGender(e) {
|
|
this.setData({ formGender: e.currentTarget.dataset.g });
|
|
},
|
|
|
|
onFormDate(e) {
|
|
this.setData({ formDate: e.detail.value });
|
|
},
|
|
|
|
onFormTime(e) {
|
|
this.setData({ formTime: e.detail.value });
|
|
},
|
|
|
|
submitProfile() {
|
|
const { formName, formGender, formDate, formTime } = this.data;
|
|
if (!formDate || !formTime) {
|
|
wx.showToast({ title: '请选择出生日期和时间', icon: 'none' });
|
|
return;
|
|
}
|
|
const result = birthProfile.addProfile({
|
|
name: formName.trim() || '未命名',
|
|
gender: formGender,
|
|
birthday: formDate,
|
|
birthTime: formTime
|
|
});
|
|
if (!result.ok) {
|
|
wx.showToast({ title: result.msg, icon: 'none' });
|
|
return;
|
|
}
|
|
// 已登录时推送到服务端(静默失败,不影响本地)
|
|
birthProfile.pushProfileToServer(result.profile);
|
|
this.setData({ showAddForm: false, formName: '' });
|
|
wx.showToast({ title: '绑定成功', icon: 'success' });
|
|
this.loadProfiles();
|
|
},
|
|
|
|
removeProfile(e) {
|
|
const id = e.currentTarget.dataset.id;
|
|
const profile = this.data.profiles.find(p => p.id === id);
|
|
if (!profile) return;
|
|
wx.showModal({
|
|
title: '删除生辰',
|
|
content: `确定删除「${profile.name}」的生辰信息吗?`,
|
|
success: (res) => {
|
|
if (!res.confirm) return;
|
|
birthProfile.removeProfile(id);
|
|
birthProfile.removeProfileFromServer(profile);
|
|
wx.showToast({ title: '已删除', icon: 'success' });
|
|
this.loadProfiles();
|
|
}
|
|
});
|
|
},
|
|
|
|
// 未登录时引导回个人中心登录
|
|
goLogin() {
|
|
wx.navigateBack();
|
|
},
|
|
|
|
onShareAppMessage() {
|
|
return {
|
|
title: '生辰档案 - 老黄历',
|
|
path: '/pages/birth-profiles/birth-profiles'
|
|
};
|
|
},
|
|
|
|
onShareTimeline() {
|
|
return {
|
|
title: '生辰档案 - 老黄历'
|
|
};
|
|
}
|
|
});
|