import { DateFormat, IBestToast, userInfo, UserInfo, YTAvoid, YTDateUtil, yTRouter } from "basic" import { BabyFoodApi } from "../Apis/BabyFoodApi" import { routerUtils } from "../utils/RouterUtils" import { AppStorageV2 } from "@kit.ArkUI" import { BabyInfo, Cuisine, WeeklyPlan, WeeklyPlanPurchaseList } from "../model/Index" @ObservedV2 export class MainViewModel{ @Trace safeTop: number = 0 @Trace babyList: BabyInfo[] = [] // 当前选择的宝宝信息 @Trace selectedBabyIndex: number = 0 // 当前的宝宝信息 @Trace babyInfo: BabyInfo = new BabyInfo() // 用户信息 @Trace userInfo: UserInfo = AppStorageV2.connect(UserInfo, 'UserInfo', () => userInfo)! // 菜品下拉菜单 @Trace dishList: Cuisine[] = [] // 本周的食谱计划 @Trace allPlan: WeeklyPlan = {} @Trace planList?: WeeklyPlanPurchaseList // 一周 week: string[] = ['周一', '周二', '周三', '周四', '周五', '周六', '周日'] constructor() { this.safeTop = AppStorage.get(YTAvoid.SAFE_TOP_KEY) as number } // 登录状态改变 async LoginStatusChange(){ this.userInfo.setUserInfoAndLogin(userInfo, false) if(this.userInfo.checkLogin()){ // 如果需要同步操作记得加 await await this.getBabyList() await this.getWeeklyPlan() await this.getDishList() } else { this.babyList = [] } } // 登录校验函数 checkLogin(f: () => void, isCheckBaby: boolean = true) { if(this.userInfo.checkLogin()) { if(this.babyInfo?.id || !isCheckBaby){ f() } else { IBestToast.show('请先添加宝宝信息吧!') this.increaseBabyInfo() } } else { yTRouter.router2LoginPage(true) } } // 修改选中的宝宝信息 updateBabyInfo(index: number) { this.babyInfo = this.babyList[index] this.selectedBabyIndex = index } // 获取本周食谱计划 async getWeeklyPlan(startDate?: string){ if(!startDate) startDate = YTDateUtil.formatDate(new Date(), DateFormat.UNDERLINE) this.allPlan = await BabyFoodApi.getWeeklyPlan(this.babyInfo.id, startDate) this.planList = this.allPlan.weeklyPlan } // 获取菜品列表 async getDishList(){ this.dishList = await BabyFoodApi.getDishList() } // 获取宝宝信息列表 async getBabyList(){ this.babyList = await BabyFoodApi.getBabyList() this.updateBabyInfo(0) } // 进入添加宝宝信息页面 increaseBabyInfo(){ routerUtils.router2IncreaseBabyInfo((res) => { this.getBabyList() }) } /** * 重写的返回逻辑 * @returns */ _onBackPressed(){ yTRouter.pop('') return true; } }