1
0
mirror of synced 2025-12-13 02:11:01 +08:00
Files
cook/app/pages/recipes/history.vue
2025-10-06 23:16:00 +08:00

82 lines
2.3 KiB
Vue

<script lang="ts" setup>
import type { RecipeItem } from '~/types'
import { Dialog } from '@capacitor/dialog'
import dayjs from 'dayjs'
import { recipeHistories } from '~/composables/store/history'
definePageMeta({
layout: 'child',
title: '历史记录',
})
// todo
// clear one history
async function clearAllHistory() {
await Dialog.confirm({
title: '清空历史记录',
message: '确定要清空所有历史记录吗?此操作不可撤销。',
okButtonTitle: '确认',
cancelButtonTitle: '取消',
}).then((result) => {
if (result.value) {
recipeHistories.value = []
}
})
}
function clearOneHistory(history: typeof recipeHistories.value[0]) {
recipeHistories.value = recipeHistories.value.filter(h => h !== history)
}
function openDishLink(dish: RecipeItem) {
const href = dish.link || `https://www.bilibili.com/video/${dish.bv}`
window.open(href, '_blank')
}
</script>
<template>
<ion-page>
<ion-header>
<ion-toolbar>
<ion-buttons slot="start">
<ion-back-button default-href="/my" />
</ion-buttons>
<ion-title>历史记录</ion-title>
<ion-buttons slot="end">
<ion-button title="清空记录" @click="clearAllHistory">
<ion-icon slot="icon-only" :icon="ioniconsTrashOutline" />
</ion-button>
</ion-buttons>
</ion-toolbar>
</ion-header>
<ion-content>
<ion-list>
<template v-for="history in recipeHistories" :key="history.recipe.name">
<ion-item-sliding>
<ion-item @click="openDishLink(history.recipe)">
<ion-label class="truncate">
<DishLabel class="text-sm" :dish="history.recipe" />
</ion-label>
<ion-text class="text-xs">
{{ dayjs(history.time).format('YYYY-MM-DD HH:mm:ss') }}
</ion-text>
</ion-item>
<ion-item-options>
<!-- TODO -->
<!-- <ion-item-option>
收藏
</ion-item-option> -->
<ion-item-option color="danger" @click="clearOneHistory(history)">
删除
</ion-item-option>
</ion-item-options>
</ion-item-sliding>
</template>
</ion-list>
</ion-content>
</ion-page>
</template>