55 lines
1.6 KiB
TypeScript
55 lines
1.6 KiB
TypeScript
|
export interface Notice {
|
|||
|
state: "loading" | "pending" | "error" | "success"
|
|||
|
title: string
|
|||
|
desc: string
|
|||
|
time: Date
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
export const useNoticeStore = defineStore('notice', {
|
|||
|
state: (): {
|
|||
|
notices: Notice[]
|
|||
|
} => ({
|
|||
|
notices: [],
|
|||
|
}),
|
|||
|
actions: {
|
|||
|
update(title: string, desc: string, state: "loading" | "pending" | "error" | "success") {
|
|||
|
const index = this.notices.findIndex((i) => i.title === title)
|
|||
|
if (index !== -1) {
|
|||
|
this.notices.splice(index, 1, { state: "loading", title, desc, time: new Date() })
|
|||
|
}
|
|||
|
},
|
|||
|
noticePending(title: string, desc: string) {
|
|||
|
this.notices.push({ state: "pending", title, desc, time: new Date() })
|
|||
|
},
|
|||
|
async filesPending(path: string, files: File[]) {
|
|||
|
files.map((file) => {
|
|||
|
this.noticePending(file.name, `${merticKB(file.size)},${file.type}`)
|
|||
|
})
|
|||
|
},
|
|||
|
// async filesUpload() {
|
|||
|
// const res = await bucketApi.detail.uploadUrl({ Path: path })
|
|||
|
// for (const file of Array.from(files)) {
|
|||
|
// try {
|
|||
|
// this.update(file.name, `${merticKB(file.size)},${file.type},文件上传中...`, 'loading')
|
|||
|
// await bucketApi.detail.upload(file, res.url, res.token)
|
|||
|
// } catch (e: any) {
|
|||
|
// // 单个文件上传失败报错信息
|
|||
|
// this.update(file.name, `${merticKB(file.size)},${file.type},文件上传失败!`, 'error')
|
|||
|
// }
|
|||
|
// }
|
|||
|
// }
|
|||
|
},
|
|||
|
persist: {
|
|||
|
storage: persistedState.sessionStorage
|
|||
|
}
|
|||
|
})
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
// @ts-ignore
|
|||
|
if (import.meta.hot)
|
|||
|
// @ts-ignore
|
|||
|
import.meta.hot.accept(acceptHMRUpdate(useUserStore, import.meta.hot))
|