Commit be8c4f4b authored by spc's avatar spc

feedingIndex

parent b30f907d
......@@ -96,6 +96,13 @@
<text class="edit-btn" @click="editRecord(index)">修改</text>
</view>
<view class="record-details">
<!-- 优先显示 foodDetails,如果存在则显示,否则显示原有字段 -->
<view v-if="record.foodDetails" class="content-info">
<view class="content-text">{{ record.foodDetails }}</view>
</view>
<!-- 如果没有 foodDetails,则显示原有字段 -->
<view v-else>
<!-- 母乳亲喂:显示左右时间,时间加粗 -->
<view v-if="record.type === '母乳亲喂' && (record.leftDuration || record.rightDuration)"
class="duration-info">
......@@ -132,6 +139,7 @@
</view>
</view>
</view>
</view>
<!-- 在两个记录之间添加连接线 -->
<view v-if="index < todayRecords.length - 1" class="timeline-connector"></view>
</template>
......@@ -520,12 +528,14 @@ async function loadRecordsByDate(date) {
return {
id: record.id, // 保留原始记录ID,用于修改时传递
recordId: record.recordId, // 添加recordId字段用于编辑
time: formatTimeFromTimestamp(record.recordTime),
type: getFeedingTypeLabel(record.feedingType),
leftDuration: record.durationLeftSeconds ? formatDuration(record.durationLeftSeconds) : '',
rightDuration: record.durationRightSeconds ? formatDuration(record.durationRightSeconds) : '',
amount: record.volume ? `${record.volume}ml` : '',
content: record.foodDetails || ''
content: record.foodDetails || '',
foodDetails: record.foodDetails || '' // 添加foodDetails字段
}
}).filter(record => record !== null) // 过滤掉无效记录
......@@ -712,7 +722,7 @@ function editRecord(index) {
editForm.value = {
time: record.time || '',
type: record.type || '',
content: record.content || '',
content: record.foodDetails || record.content || '', // 优先使用foodDetails
leftDuration: record.leftDuration || '',
rightDuration: record.rightDuration || '',
amount: record.amount || ''
......@@ -873,7 +883,10 @@ function saveEditRecord() {
apiData.durationRightSeconds = parseDurationToSeconds(editForm.value.rightDuration)
} else if (editForm.value.type === '母乳瓶喂' || editForm.value.type === '奶粉喂养') {
apiData.volume = parseVolumeToNumber(editForm.value.amount)
} else if (editForm.value.type === '辅食') {
}
// 统一添加 foodDetails 字段
if (editForm.value.content) {
apiData.foodDetails = editForm.value.content
}
......@@ -894,18 +907,9 @@ async function saveRecordToAPI(apiData, index) {
title: '保存中...'
})
// Mock 数据模拟
const mockResponse = {
code: '000000',
message: '保存成功'
}
const response = await feedingRecordsAPI(apiData)
if (response && response.code === '000000') {
// 更新本地数据
updateLocalRecord(index, editForm.value)
uni.showToast({
title: '保存成功',
icon: 'success'
......@@ -913,10 +917,16 @@ async function saveRecordToAPI(apiData, index) {
closeEditPopup()
// 刷新当前日期的记录
// 清空缓存,确保获取最新数据
clearCache()
// 重新加载当前日期的记录
if (selectedDate.value) {
loadRecordsByDate(selectedDate.value)
await loadRecordsByDate(selectedDate.value)
}
// 更新图表数据
updateChartData()
} else {
throw new Error(response?.message || '保存失败')
}
......@@ -1026,13 +1036,28 @@ watch(selectedDate, () => {
updateChartData()
})
// 页面卸载时清理资源
onUnmounted(() => {
// 清理缓存
// 格式化月份字符串
function formatMonthString(date) {
const year = date.getFullYear()
const month = String(date.getMonth() + 1).padStart(2, '0')
return `${year}-${month}`
}
// 清空缓存函数
function clearCache() {
console.log('清空缓存...')
statisticsCache.value.clear()
recordsCache.value.clear()
loadingStatistics.value.clear()
loadingRecords.value.clear()
apiStatistics.value = {}
apiRecords.value = {}
}
// 页面卸载时清理资源
onUnmounted(() => {
// 清理缓存
clearCache()
})
// 测试函数(开发时使用)
......
This diff is collapsed.
......@@ -89,6 +89,13 @@
<text class="edit-btn" @click="editRecord(index)">修改</text>
</view>
<view class="record-details">
<!-- 优先显示 foodDetails,如果存在则显示,否则显示原有字段 -->
<view v-if="record.foodDetails" class="content-info">
<view class="content-text">{{ record.foodDetails }}</view>
</view>
<!-- 如果没有 foodDetails,则显示原有字段 -->
<view v-else>
<!-- 母乳亲喂:显示左右时间,时间加粗 -->
<view v-if="record.type === '母乳亲喂' && (record.leftDuration || record.rightDuration)"
class="duration-info">
......@@ -125,6 +132,7 @@
</view>
</view>
</view>
</view>
<!-- 在两个记录之间添加连接线 -->
<view v-if="index < todayRecords.length - 1" class="timeline-connector"></view>
</template>
......@@ -269,6 +277,17 @@ const newRecord = ref({
content: ''
})
// 编辑表单
const editForm = ref({
time: '',
type: '',
content: ''
})
// 编辑状态
const showEditPopup = ref(false)
const editingRecord = ref(null)
// 喂养类型选项
const feedingTypes = ['母乳亲喂', '母乳瓶喂', '奶粉喂养', '辅食']
......@@ -597,7 +616,7 @@ function editRecord(index) {
editForm.value = {
time: record.time || '',
type: record.type || '',
content: record.content || ''
content: record.foodDetails || record.content || '' // 优先使用foodDetails
}
editingRecord.value = { index, record }
showEditPopup.value = true
......@@ -630,17 +649,54 @@ async function saveEditRecord() {
uni.showToast({ title: '编辑记录不存在', icon: 'none' })
return
}
try {
uni.showLoading({
title: '保存中...'
})
const { index, record } = editingRecord.value
const apiData = {
recordId: record.recordId,
babyId: feedStore.getCurrentBabyId(),
recordTime: formatDateTimeString(currentSelectedDate.value, editForm.value.time),
feedingType: getFeedingTypeId(editForm.value.type),
foodDetails: editForm.value.content
foodDetails: editForm.value.content // 统一使用foodDetails字段
}
await feedingRecordsAPI(apiData)
const response = await feedingRecordsAPI(apiData)
if (response && response.code === '000000') {
uni.showToast({
title: '保存成功',
icon: 'success'
})
closeEditPopup()
if (currentSelectedDate.value) loadRecordsByDate(currentSelectedDate.value)
// 清空缓存,确保获取最新数据
clearCache()
// 重新加载当前日期的记录
if (currentSelectedDate.value) {
await loadRecordsByDate(currentSelectedDate.value)
}
// 重新加载当前月份的日历状态
const currentMonth = formatMonthString(currentDate.value)
await loadCalendarStatus(currentMonth)
} else {
throw new Error(response?.message || '保存失败')
}
} catch (error) {
console.error('保存记录失败:', error)
uni.showToast({
title: error.message || '保存失败',
icon: 'none'
})
} finally {
uni.hideLoading()
}
}
function goToFeedingAnalysis() {
......@@ -759,12 +815,14 @@ async function loadRecordsByDate(date) {
return {
id: record.id, // 保留原始记录ID,用于修改时传递
recordId: record.recordId, // 添加recordId字段用于编辑
time: formatTimeFromTimestamp(record.recordTime),
type: getFeedingTypeLabel(record.feedingType),
leftDuration: record.durationLeftSeconds ? formatDuration(record.durationLeftSeconds) : '',
rightDuration: record.durationRightSeconds ? formatDuration(record.durationRightSeconds) : '',
amount: record.volume ? `${record.volume}ml` : '',
content: record.foodDetails || ''
content: record.foodDetails || '',
foodDetails: record.foodDetails || '' // 添加foodDetails字段
}
}).filter(record => record !== null) // 过滤掉无效记录
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment