3965e542fc
部署到群晖 / deploy (push) Failing after 6m22s
- 新增 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>
121 lines
2.7 KiB
JavaScript
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)
|
|
}
|
|
}
|
|
}
|
|
})
|
|
}
|
|
})
|
|
|