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(); | |
}, | |
}, | |
}); | |