contentData.ts
1.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import { defineStore } from 'pinia'
import { store } from '..'
import type { NodeDataType } from '@/api/node/model'
import type { ProductAndDevice } from '@/api/content/model'
interface ContentDataStoreType {
contentData: NodeDataType[]
configurationId: Nullable<string>
currentNodeData: Nullable<Recordable>
productAndDevice: ProductAndDevice[]
isTemplate?: number | null | string
configurationContentList?: any
configurationContentId: Nullable<string>
}
export const useContentDataStore = defineStore('app-content-data', {
state: (): ContentDataStoreType => ({
contentData: [],
configurationId: null,
currentNodeData: null,
isTemplate: null,
productAndDevice: [],
configurationContentList: [],
configurationContentId: null,
}),
actions: {
getNodeDataById(id: string): Undefineable<NodeDataType> {
const data = this.contentData.find(item => item.id === id)
return data
},
setNodeDataById(id: string, nodeData: NodeDataType) {
const index = this.contentData.findIndex(item => item.id === id)
this.contentData.splice(index, 1, nodeData)
},
saveContentData(contentData: NodeDataType[]) {
this.contentData = contentData
},
setConfigurationContentId(string: Nullable<string>) {
this.configurationContentId = string
},
setIsTemplate(string?: string | number) {
this.isTemplate = string
},
setProductAndDevice(string: ProductAndDevice[]) {
return this.productAndDevice = string
},
},
getters: {
getProductIds(): string[] {
return this.productAndDevice.map(item => item.profileId)
},
getProductAndDevice(): Nullable<ProductAndDevice[]> {
return this.productAndDevice || []
},
getIsTemplate(): number | null | string | undefined {
return this.isTemplate
},
},
})
export function useContentDataStoreWithOut() {
return useContentDataStore(store)
}