main
ts 94 lines 2.34 KB
Raw
1 import type { AxiosResponse } from "axios"
2 import type { FlaskBaseResponse } from "@/types/flask"
3 import { acceptHMRUpdate, defineStore } from "pinia"
4 import Api from "@/api"
5
6 export const useCaseReportTemplateStore = defineStore("caseReportTemplate", {
7 state: () => ({
8 templatesList: [] as string[],
9 checkedAt: 0,
10 loading: false
11 }),
12 actions: {
13 init() {
14 if (!this.checkedAt && !this.loading) {
15 this.refreshTemplates()
16 }
17 },
18 setTemplatesList(templatesList: string[]) {
19 this.templatesList = templatesList
20 this.checkedAt = Date.now()
21 },
22 addTemplate(templateName: string) {
23 this.templatesList.push(templateName)
24 this.checkedAt = Date.now()
25 },
26 removeTemplate(templateName: string) {
27 this.templatesList = this.templatesList.filter(o => o !== templateName)
28 this.checkedAt = Date.now()
29 },
30 setLoading(value: boolean) {
31 this.loading = value
32 },
33 refreshTemplates(): Promise<AxiosResponse<FlaskBaseResponse>> {
34 return new Promise((resolve, reject) => {
35 this.setLoading(true)
36
37 Api.incidentManagement.cases
38 .getCaseReportTemplate()
39 .then(res => {
40 if (res.data.success) {
41 this.setTemplatesList(res.data.case_report_template_data_store)
42 resolve(res)
43 } else {
44 reject(res)
45 }
46 })
47 .catch(err => {
48 reject(err)
49 })
50 .finally(() => {
51 this.setLoading(false)
52 })
53 })
54 },
55 uploadCustomTemplate(file: File): Promise<AxiosResponse<FlaskBaseResponse>> {
56 return new Promise((resolve, reject) => {
57 Api.incidentManagement.cases
58 .uploadCustomCaseReportTemplate(file)
59 .then(res => {
60 if (res.data.success) {
61 this.addTemplate(res.data.case_report_template_data_store.file_name)
62 resolve(res)
63 } else {
64 reject(res)
65 }
66 })
67 .catch(err => {
68 reject(err)
69 })
70 })
71 },
72 deleteTemplate(templateName: string): Promise<AxiosResponse<FlaskBaseResponse>> {
73 return new Promise((resolve, reject) => {
74 Api.incidentManagement.cases
75 .deleteCaseReportTemplate(templateName)
76 .then(res => {
77 if (res.data.success) {
78 this.removeTemplate(templateName)
79 resolve(res)
80 } else {
81 reject(res)
82 }
83 })
84 .catch(err => {
85 reject(err)
86 })
87 })
88 }
89 }
90 })
91
92 if (import.meta.hot) {
93 import.meta.hot.accept(acceptHMRUpdate(useCaseReportTemplateStore, import.meta.hot))
94 }