feat:增加后端接口

This commit is contained in:
2025-06-24 23:34:00 +08:00
parent 69c0bfa4c7
commit 71c107f2e5
17 changed files with 141 additions and 191 deletions

View File

@@ -4,15 +4,23 @@ import type {
IFoodStats, IFoodRecord
} from '@/types/food'
import {
addFoodRecipeApi, addFoodRecordApi, deleteFoodRecipeApi, deleteFoodRecordApi,
queryFoodNameListApi, queryFoodRecipeByIdApi, queryFoodRecipeApi, queryFoodRecordApi,
queryFoodStatsApi, updateFoodRecipeApi, updateFoodRecordApi, queryFoodCategoryApi
addFoodRecipeApi,
addFoodRecordApi,
deleteFoodRecipeApi,
deleteFoodRecordApi,
queryFoodNameListApi,
queryFoodRecipeByIdApi,
queryFoodRecordApi,
queryFoodStatsApi,
updateFoodRecipeApi,
updateFoodRecordApi,
queryFoodCategoryApi,
queryFoodRecordStatsApi,
queryFoodCategoryStatsApi, queryFoodRankStatsApi, queryFoodRecipeApi
} from '@/apis/food.ts'
// import { IDateType, ImagePathEnum } from '@/types'
import type { IDialog, IHandleApi } from 'vue3-common/types'
import type { IDialog, IHandleApi, IStatsChart } from 'vue3-common/types'
import { ElMessage } from 'element-plus'
import { getCurrentMonth, getCurrentYear, getStartEndDate } from 'vue3-common/utils/dateUtil'
import { isMobile } from 'vue3-common/utils/layoutUtil'
export const useFoodStore = defineStore('food', {
state: () => ({
@@ -44,7 +52,7 @@ export const useFoodStore = defineStore('food', {
year: getCurrentYear(),
month: getCurrentMonth()
},
queryDateType: 'month',
queryDateType: 'month' as 'month' | 'year',
queryDateList: [] as string[],
foodRecipeApiType: 'ADD' as IHandleApi,
foodMaterialApiType: 'ADD' as IHandleApi,
@@ -67,7 +75,7 @@ export const useFoodStore = defineStore('food', {
rateColorList: ['#E2DEDC', '#F7BA2A', '#009FA8'],
pageInfo: {
currentPage: 1,
pageSize: 3,
pageSize: 2,
totalSize: 1
},
isScrollEnd: false,
@@ -77,96 +85,78 @@ export const useFoodStore = defineStore('food', {
categoryCount: 0,
workCount: 0
} as IFoodStats,
foodRecordStats: [] as IStatsChart[],
foodCategoryStats: [] as IStatsChart[],
foodRankStats: [] as IStatsChart[],
isRefresh: false
}),
actions: {
async queryFoodRecipeList() {
const { currentPage, pageSize } = this.pageInfo
const result = await queryFoodRecipeApi(currentPage, pageSize, this.queryRecipe)
this.foodRecipeList.push(...result.records)
this.pageInfo.totalSize = result.total
// const { currentPage, pageSize } = this.pageInfo
// const result = await queryFoodRecipeByPageApi(currentPage, pageSize, this.queryRecipe)
// this.foodRecipeList.push(...result.records)
// this.pageInfo.totalSize = result.total
this.foodRecipeList = await queryFoodRecipeApi(this.queryRecipe)
},
async queryFoodRecordList() {
const { year, month } = this.queryRecord
const date = this.queryDateType === 'year' ? year : month
this.queryDateList = getStartEndDate(date, this.queryDateType)
const foodRecord: IFoodRecord = {
category: '家常菜',
date: '2025-06-23',
id: 0,
imageUrl: 'https://ts2.tc.mm.bing.net/th/id/OSK.277ab994364a7e09543c78379bab1d05?w=612&h=408&c=7&rs=1&qlt=80&o=6&cdv=1&cb=ircwebp1&pid=16.1',
name: '红烧鱼',
person: '哥哥'
}
const foodRecord2: IFoodRecord = {
category: '家常菜',
date: '2025-06-22',
id: 0,
imageUrl: 'https://ts2.tc.mm.bing.net/th/id/OSK.277ab994364a7e09543c78379bab1d05?w=612&h=408&c=7&rs=1&qlt=80&o=6&cdv=1&cb=ircwebp1&pid=16.1',
name: '红烧鱼',
person: '哥哥'
}
this.foodRecordList = []
this.foodRecordList.push(foodRecord)
this.foodRecordList.push(foodRecord2)
// this.foodRecordList = await queryFoodRecordApi(this.queryDateList[0], this.queryDateList[1])
this.foodRecordList = await queryFoodRecordApi(this.queryDateList[0], this.queryDateList[1])
},
async queryFoodNameList() {
// this.foodNameList = await queryFoodNameListApi()
this.foodNameList = await queryFoodNameListApi()
},
async queryFoodRecipe(id: number) {
// this.currentFoodRecipe = await queryFoodRecipeByIdApi(id)
this.currentFoodRecipe = await queryFoodRecipeByIdApi(id)
},
async queryFoodStats() {
// this.foodStats = await queryFoodStatsApi()
this.foodStats = await queryFoodStatsApi()
this.foodRecordStats = await queryFoodRecordStatsApi()
this.foodCategoryStats = await queryFoodCategoryStatsApi()
this.foodRankStats = await queryFoodRankStatsApi()
this.isRefresh = !this.isRefresh
},
async queryFoodCategory() {
// this.foodCategoryList = await queryFoodCategoryApi()
this.foodCategoryList = await queryFoodCategoryApi()
},
async handleFoodRecipeApi(foodRecipe: IFoodRecipe) {
switch (this.foodRecipeApiType) {
case 'ADD':
// await addFoodRecipeApi(foodRecipe)
await addFoodRecipeApi(foodRecipe)
ElMessage.success('新增菜谱成功')
break
case 'UPDATE':
// await updateFoodRecipeApi(foodRecipe.id as number, foodRecipe)
await updateFoodRecipeApi(foodRecipe.id as number, foodRecipe)
ElMessage.success('更新菜谱成功')
break
case 'DELETE':
// await deleteFoodRecipeApi(foodRecipe.id as number)
await deleteFoodRecipeApi(foodRecipe.id as number)
ElMessage.success('删除菜谱成功')
break
default:
break
}
this.foodRecipeDialog.visible = false
await this.refreshInfo()
},
async handleFoodRecordApi(foodRecord: IFoodRecord) {
switch (this.foodRecordApiType) {
case 'ADD':
// await addFoodRecordApi(foodRecord)
await addFoodRecordApi(foodRecord)
ElMessage.success('新增成果成功')
break
case 'UPDATE':
// await updateFoodRecordApi(foodRecord.id as number, foodRecord)
await updateFoodRecordApi(foodRecord.id as number, foodRecord)
ElMessage.success('更新成果成功')
break
case 'DELETE':
// await deleteFoodRecordApi(foodRecord.id as number)
await deleteFoodRecordApi(foodRecord.id as number)
ElMessage.success('删除成果成功')
break
default:
break
}
this.foodRecordDialog.visible = false
if (!isMobile()) {
await this.refreshInfo()
}
await this.refreshInfo()
},
async refreshInfo() {
await this.queryFoodRecipeList()
@@ -201,7 +191,6 @@ export const useFoodStore = defineStore('food', {
getEmptyFoodRecord(): IFoodRecord {
return {
category: '',
person: '',
date: '',
id: 0,
imageUrl: '',