weixinxiaochengxu/pages/entry/entry.js

91 lines
2.3 KiB
JavaScript

var app = getApp()
Page({
data: {
items: [],
inputDate: "",
values: {},
existingRecords: []
},
onLoad: function () {
var today = this.formatDate(new Date())
this.setData({ inputDate: today, items: app.globalData.items })
this.loadExisting(today)
},
onShow: function () {
var items = app.globalData.items
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 records = app.globalData.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
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 = app.globalData.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
}
})