App({ globalData: { currentPersonId: null, persons: [], dataMap: {} }, onLaunch() { // 清除旧版存储,避免残留 wx.removeStorageSync("health_data") var data = wx.getStorageSync("health_data_v2") if (data) { this.globalData.persons = data.persons || [] this.globalData.dataMap = data.dataMap || {} this.globalData.currentPersonId = data.currentPersonId || (this.globalData.persons[0] && this.globalData.persons[0].id) || null } // 无存储或 persons 为空时,由首页弹窗引导创建首个用户 }, _defaultItems() { return ["血红蛋白", "尿素", "肌酐", "尿酸", "血钾", "血钙", "血磷", "β2微球蛋白", "体重"] }, saveData() { wx.setStorageSync("health_data_v2", { persons: this.globalData.persons, dataMap: this.globalData.dataMap, currentPersonId: this.globalData.currentPersonId }) }, getCurrentData() { var id = this.globalData.currentPersonId if (!id || !this.globalData.dataMap[id]) return { items: [], records: [] } return this.globalData.dataMap[id] }, getCurrentPerson() { var id = this.globalData.currentPersonId var persons = this.globalData.persons for (var i = 0; i < persons.length; i++) { if (persons[i].id === id) return persons[i] } return null }, switchPerson(id) { if (!this.globalData.dataMap[id]) return false this.globalData.currentPersonId = id this.saveData() return true }, addPerson(name) { var id = Date.now().toString(36) + Math.random().toString(36).slice(2, 6) this.globalData.persons.push({ id: id, name: name }) // 新用户默认有一份默认项目列表 this.globalData.dataMap[id] = { items: this._defaultItems(), records: [] } this.saveData() return id }, removePerson(id) { var persons = this.globalData.persons if (persons.findIndex(function(p){return p.id===id}) < 0) return false this.globalData.persons = persons.filter(function (p) { return p.id !== id }) delete this.globalData.dataMap[id] if (this.globalData.currentPersonId === id) { this.globalData.currentPersonId = this.globalData.persons.length > 0 ? this.globalData.persons[0].id : null } this.saveData() return true }, renamePerson(id, newName) { var persons = this.globalData.persons for (var i = 0; i < persons.length; i++) { if (persons[i].id === id) { persons[i].name = newName this.saveData() return true } } return false }, addRecord(record) { var data = this.getCurrentData() data.records.push({ id: Date.now().toString(36) + Math.random().toString(36).slice(2, 6), item: record.item, date: record.date, value: parseFloat(record.value) }) this.saveData() }, deleteRecord(id) { var data = this.getCurrentData() data.records = data.records.filter(function (r) { return r.id !== id }) this.saveData() }, addItem(name) { var data = this.getCurrentData() if (data.items.indexOf(name) === -1) { data.items.push(name) this.saveData() } }, removeItem(name) { var data = this.getCurrentData() data.items = data.items.filter(function (i) { return i !== name }) data.records = data.records.filter(function (r) { return r.item !== name }) this.saveData() } })