Spaces:
Sleeping
Sleeping
| import { defineStore } from "pinia"; | |
| import { doubanApi } from "@/api/douban"; | |
| import { HotListItem } from "@/types/douban"; | |
| import { ElMessage } from "element-plus"; | |
| interface StoreType { | |
| hotList: HotListItem[]; | |
| loading: boolean; | |
| currentParams: CurrentParams; | |
| } | |
| interface CurrentParams { | |
| type: string; | |
| tag?: string; | |
| } | |
| export const useDoubanStore = defineStore("douban", { | |
| state: (): StoreType => ({ | |
| hotList: [], | |
| loading: false, | |
| currentParams: { | |
| type: "movie", | |
| tag: "热门", | |
| }, | |
| }), | |
| actions: { | |
| async getHotList() { | |
| this.loading = true; | |
| try { | |
| const params = { | |
| type: this.currentParams.type, | |
| tag: this.currentParams.tag || "热门", | |
| page_limit: "20", | |
| page_start: "0", | |
| }; | |
| const result = await doubanApi.getHotList(params); | |
| if (result && result.length > 0) { | |
| this.hotList = result; | |
| } else { | |
| console.log("获取热门列表失败"); | |
| ElMessage.warning("获取热门列表失败"); | |
| } | |
| } catch (error) { | |
| ElMessage.error(error || "获取热门列表失败"); | |
| } finally { | |
| this.loading = false; | |
| } | |
| }, | |
| setCurrentParams(currentParams: CurrentParams) { | |
| this.currentParams = currentParams; | |
| this.getHotList(); | |
| }, | |
| }, | |
| }); | |