var app = getApp() Page({ data: { persons: [], currentPersonName: "", items: [], inputDate: "", values: {}, existingRecords: [] }, onLoad: function () { var today = this.formatDate(new Date()) var person = app.getCurrentPerson() this.setData({ persons: app.globalData.persons, currentPersonName: person ? person.name : "", inputDate: today, items: app.getCurrentData().items }) this.loadExisting(today) }, onShow: function () { var person = app.getCurrentPerson() var items = app.getCurrentData().items this.setData({ persons: app.globalData.persons, currentPersonName: person ? person.name : "" }) if (items.length !== this.data.items.length || items.some(function (v, i) { return v !== this.data.items[i] }, this)) { this.setData({ items: items }) } this.loadExisting(this.data.inputDate) }, loadExisting: function (date) { var data = app.getCurrentData() var records = data.records.filter(function (r) { return r.date === date }) this.setData({ existingRecords: records }) }, onDateChange: function (e) { var date = e.detail.value this.setData({ inputDate: date, values: {} }) this.loadExisting(date) }, onValueInput: function (e) { var item = e.currentTarget.dataset.item var value = e.detail.value var update = {} update["values." + item] = value this.setData(update) }, onSubmit: function () { var items = this.data.items var inputDate = this.data.inputDate var values = this.data.values var savedCount = 0 var that = this var data = app.getCurrentData() items.forEach(function (item) { var raw = values[item] if (!raw || raw.trim() === "") return var v = parseFloat(raw) if (isNaN(v) || v <= 0) return var existing = data.records.find(function (r) { return r.item === item && r.date === inputDate }) if (existing) { existing.value = v } else { app.addRecord({ item: item, date: inputDate, value: v }) } savedCount++ }) if (savedCount === 0) { wx.showToast({ title: "请至少输入一项有效数值", icon: "none" }) return } app.saveData() this.setData({ values: {} }) this.loadExisting(inputDate) wx.showToast({ title: "已保存 " + savedCount + " 项", icon: "success", duration: 1500 }) }, goItems: function () { wx.navigateTo({ url: '/pages/items/items' }) }, formatDate: function (d) { var y = d.getFullYear() var m = String(d.getMonth() + 1) if (m.length === 1) m = "0" + m var day = String(d.getDate()) if (day.length === 1) day = "0" + day return y + "-" + m + "-" + day } })