feat:更新美食和旅游模块
This commit is contained in:
@@ -1,7 +1,8 @@
|
||||
<template>
|
||||
<div class="mobile-anniversary-detail common-mobile-view">
|
||||
<el-form ref="formRef" :model="anniversaryStore.currentAnniversary"
|
||||
:rules="rules" label-width="60px">
|
||||
:rules="rules" label-position="top" label-width="60px"
|
||||
class="form-item">
|
||||
<el-form-item label="标题" prop="title">
|
||||
<el-input v-model="anniversaryStore.currentAnniversary.title" autocomplete="off"
|
||||
placeholder="请输入标题" clearable
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
<template>
|
||||
<div class="mobile-asset-detail common-mobile-view">
|
||||
<el-form ref="formRef" :model="assetStore.currentAssetRecord"
|
||||
:rules="rules" label-width="auto">
|
||||
:rules="rules" label-position="top" label-width="auto"
|
||||
class="form-item">
|
||||
<el-form-item label="类别" prop="category">
|
||||
<el-radio-group v-model="assetStore.currentAssetRecord.category"
|
||||
@change="changeCategoryEvent">
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
<template>
|
||||
<div class="bill-detail-mobile common-mobile-view">
|
||||
<el-form ref="formRef" :model="billStore.currentBillRecord"
|
||||
:rules="rules" label-width="80px">
|
||||
:rules="rules" label-position="top" label-width="80px"
|
||||
class="form-item">
|
||||
<el-form-item label="账本类型" prop="bookName">
|
||||
<el-radio-group v-model="billStore.currentBillRecord.bookName"
|
||||
@change="changeBillBookNameEvent">
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
<template>
|
||||
<div class="mobile-food-recipe-form common-mobile-view">
|
||||
<el-form ref="formRef" :model="foodStore.currentFoodRecipe"
|
||||
:rules=rules label-width="80px">
|
||||
:rules=rules label-position="top" label-width="80px"
|
||||
class="form-item">
|
||||
<el-steps :active="activeStep" align-center
|
||||
style="margin-bottom: 10px;" >
|
||||
<el-step title="基础信息" />
|
||||
<el-step title="Step 2" />
|
||||
<el-step title="Step 3" />
|
||||
<el-step title="食材信息" />
|
||||
<el-step title="步骤信息" />
|
||||
</el-steps>
|
||||
|
||||
<div v-if="activeStep === 0">
|
||||
@@ -104,6 +105,7 @@ const confirmClick = () => {
|
||||
formRef.value.validate().then(() => {
|
||||
foodStore.handleFoodRecipeApi(foodStore.currentFoodRecipe)
|
||||
history.back()
|
||||
appStore.isShowMobileBack = false
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
<template>
|
||||
<div class="mobile-food-record-form common-mobile-view">
|
||||
<el-form ref="formRef" :model="foodStore.currentFoodRecord"
|
||||
:rules="rules" label-width="80">
|
||||
:rules="rules" label-position="top" label-width="80"
|
||||
class="form-item">
|
||||
<el-form-item label="菜谱名称" prop="name">
|
||||
<el-select
|
||||
v-model="foodStore.currentFoodRecord.name"
|
||||
|
||||
107
src/views/food/timeline.vue
Normal file
107
src/views/food/timeline.vue
Normal file
@@ -0,0 +1,107 @@
|
||||
<template>
|
||||
<div class="mobile-food-timeline common-mobile-view ">
|
||||
<div class="button-container">
|
||||
<el-button :icon="CaretLeft" circle
|
||||
type="primary" size="small"
|
||||
@click="previousYearClick"/>
|
||||
|
||||
<el-date-picker
|
||||
v-model="foodStore.queryRecord.year"
|
||||
type="year" placeholder="请选择年份"
|
||||
:editable="false"
|
||||
style="width: 100px;"
|
||||
@change="changeDateEvent"
|
||||
/>
|
||||
|
||||
<el-button :icon="CaretRight" circle
|
||||
type="primary" size="small"
|
||||
@click="nextYearClick"/>
|
||||
</div>
|
||||
|
||||
<el-timeline v-if="foodStore.foodRecordList.length > 0">
|
||||
<el-timeline-item v-for="(item, index) in foodStore.foodRecordList"
|
||||
:key="index" :timestamp="formatDate(item.date)"
|
||||
placement="top">
|
||||
<div class="timeline-info card-item">
|
||||
<span>{{ item.name }}</span>
|
||||
<el-image :src="AListUrl + item.imageUrl"
|
||||
fit="contain" alt="暂无成果">
|
||||
<template #error>
|
||||
<div class="image-slot">
|
||||
<span>暂无图片</span>
|
||||
</div>
|
||||
</template>
|
||||
</el-image>
|
||||
</div>
|
||||
</el-timeline-item>
|
||||
</el-timeline>
|
||||
|
||||
<el-empty v-else description="暂无记录"/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { CaretLeft, CaretRight } from '@element-plus/icons-vue'
|
||||
import { useFoodStore } from '@/store/food.ts'
|
||||
import { formatDate, getLastDate, getNextDate } from 'vue3-common/utils/dateUtil'
|
||||
import { AListUrl } from '@/utils'
|
||||
import { onMounted } from 'vue'
|
||||
|
||||
const foodStore = useFoodStore()
|
||||
|
||||
onMounted(async () => {
|
||||
foodStore.queryDateType = 'year'
|
||||
await foodStore.queryFoodRecordList()
|
||||
})
|
||||
|
||||
const changeDateEvent = async (value: Date) => {
|
||||
foodStore.queryRecord.year = String(value.getFullYear())
|
||||
await foodStore.queryFoodRecordList()
|
||||
}
|
||||
|
||||
const previousYearClick = async () => {
|
||||
const lastYear = getLastDate(foodStore.queryRecord.year, 1, 'years')
|
||||
foodStore.queryRecord.year = String(new Date(lastYear).getFullYear())
|
||||
await foodStore.queryFoodRecordList()
|
||||
}
|
||||
|
||||
const nextYearClick = async () => {
|
||||
const lastYear = getNextDate(foodStore.queryRecord.year, 1, 'years')
|
||||
foodStore.queryRecord.year = String(new Date(lastYear).getFullYear())
|
||||
await foodStore.queryFoodRecordList()
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.mobile-food-timeline {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
.button-container {
|
||||
align-self: center;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.el-timeline {
|
||||
padding: 10px;
|
||||
|
||||
.el-timeline-item__timestamp {
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
.timeline-info {
|
||||
padding: 10px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 10px;
|
||||
|
||||
.el-image {
|
||||
height: 300px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -1,7 +1,8 @@
|
||||
<template>
|
||||
<div class="mobile-journal-detail common-mobile-view">
|
||||
<el-form ref="formRef" :model="journalStore.currentJournal"
|
||||
:rules="rules" label-width="60px">
|
||||
:rules="rules" label-position="top" label-width="60px"
|
||||
class="form-item">
|
||||
<el-form-item label="日期" prop="date">
|
||||
<el-date-picker
|
||||
v-model="journalStore.currentJournal.date"
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
<template>
|
||||
<div class="mobile-ledger-detail common-mobile-view">
|
||||
<el-form ref="formRef" :model="ledgerStore.currentLedgerRecord"
|
||||
:rules="rules" label-width="auto">
|
||||
:rules="rules" label-position="top" label-width="auto"
|
||||
class="form-item">
|
||||
<el-form-item label="账本" prop="book">
|
||||
<el-input v-model="ledgerStore.currentLedgerRecord.book"
|
||||
placeholder="请输入账本名称" clearable
|
||||
|
||||
@@ -37,6 +37,10 @@ export const mobileHomeMeta: IRouteMetaConfig = {
|
||||
title: '菜谱',
|
||||
icon: ''
|
||||
},
|
||||
'/food/timeline': {
|
||||
title: '时间轴',
|
||||
icon: ''
|
||||
},
|
||||
'/food/record': {
|
||||
title: '记录',
|
||||
icon: ''
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
<template>
|
||||
<div class="mobile-product-detail common-mobile-view">
|
||||
<el-form ref="formRef" :model="productStore.currentProduct"
|
||||
:rules="rules" label-width="80px">
|
||||
:rules="rules" label-position="top" label-width="80px"
|
||||
class="form-item">
|
||||
<el-form-item label="物品名称" prop="name">
|
||||
<el-input v-model="productStore.currentProduct.name" autocomplete="off"
|
||||
placeholder="请输入物品名称" clearable
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
<template>
|
||||
<div class="mobile-travel-record-form common-mobile-view">
|
||||
<el-form ref="formRef" :model="travelStore.currentTravelRecord"
|
||||
:rules="rules" label-width="80">
|
||||
:rules="rules" label-position="top" label-width="auto"
|
||||
class="form-item">
|
||||
<el-form-item label="景点名称" prop="name">
|
||||
<el-select
|
||||
v-model="travelStore.currentTravelRecord.name"
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
<template>
|
||||
<div class="mobile-travel-spot-form common-mobile-view">
|
||||
<el-form ref="formRef" :model="travelStore.currentTravelSpot"
|
||||
:rules=rules label-width="100px">
|
||||
:rules=rules label-position="top" label-width="auto"
|
||||
class="form-item">
|
||||
<el-form-item label="景点名称" prop="name">
|
||||
<el-input
|
||||
v-model="travelStore.currentTravelSpot.name"
|
||||
|
||||
Reference in New Issue
Block a user