Files
wxserver/pages/settings/settings.js
T
yuming 3965e542fc
部署到群晖 / deploy (push) Failing after 6m22s
接入自建后端 + Gitea CI/CD
- 新增 server/:Node + Express + SQLite + node-cron 实现登录、纪念日 CRUD 和定时订阅消息推送
- 新增 .gitea/workflows/deploy.yml:推送即触发群晖 Docker 部署,监听 15002
- utils/api.js:自动按 envVersion 切换本地/线上 BASE_URL
- app.js 与 add-anniversary.js 移除 wx.cloud 调用,改走自建后端
- cloudfunctions/ 暂保留以便回滚
- 一并提交此前未入库的首页 / 设置页 / 日历 / 万年历等改造

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-01 15:44:09 +08:00

121 lines
2.7 KiB
JavaScript

// settings.js
const storage = require('../../utils/storage')
Page({
data: {
dataCount: {
persons: 0,
anniversaries: 0
}
},
onLoad() {
this.loadDataCount()
},
onShow() {
this.loadDataCount()
},
/**
* 加载数据统计
*/
loadDataCount() {
const persons = storage.getPersons()
const anniversaries = storage.getAnniversaries()
this.setData({
dataCount: {
persons: persons.length,
anniversaries: anniversaries.length
}
})
},
/**
* 导出数据
*/
onExportData() {
const data = storage.exportData()
// 转换为JSON字符串
const jsonStr = JSON.stringify(data, null, 2)
// 在小程序中,可以通过提示用户复制
wx.setClipboardData({
data: jsonStr,
success: () => {
wx.showToast({
title: '数据已复制到剪贴板',
icon: 'success'
})
}
})
},
/**
* 导入数据
*/
onImportData() {
wx.showModal({
title: '导入数据',
content: '将从剪贴板读取数据并导入。注意:导入会覆盖现有数据,请先备份!',
confirmText: '确认导入',
cancelText: '取消',
success: (res) => {
if (res.confirm) {
// 读取剪贴板
wx.getClipboardData({
success: (res) => {
try {
const data = JSON.parse(res.data)
const result = storage.importData(data)
if (result.success) {
wx.showToast({ title: '导入成功', icon: 'success' })
setTimeout(() => wx.reLaunch({ url: '/pages/index/index' }), 1500)
} else {
wx.showToast({ title: result.error || '导入失败,请检查数据格式', icon: 'none' })
}
} catch (e) {
wx.showToast({ title: '数据格式错误', icon: 'none' })
}
}
})
}
}
})
},
/**
* 清空所有数据
*/
onClearData() {
wx.showModal({
title: '确认清空',
content: '确定要清空所有数据吗?此操作不可恢复!',
confirmText: '确认清空',
confirmColor: '#ff5722',
success: (res) => {
if (res.confirm) {
const success = storage.clearAllData()
if (success) {
wx.showToast({
title: '已清空',
icon: 'success'
})
setTimeout(() => {
wx.reLaunch({
url: '/pages/index/index'
})
}, 1500)
}
}
}
})
}
})