ng / frontend /src /stores /douban.ts
epii-1
222222
f0953a4
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();
},
},
});