2025-06-30 09:38:03 +08:00

254 lines
5.5 KiB
JavaScript

import {
defineStore
} from 'pinia';
import {
getDictionaryDataAll,
getOrganizeSelector,
getDepartmentSelector,
getGroupSelector,
getRoleSelector,
getPositionSelector,
getUserSelector,
getUserAll
} from '@/api/common.js'
export const useBaseStore = defineStore({
id: ' app-base',
state: () => ({
dictionaryList: [],
organizeTree: [],
departmentTree: [],
positionTree: [],
groupTree: [],
roleTree: [],
userTree: [],
userList: [],
relationData: {},
}),
getters: {
getDictionaryList() {
return this.dictionaryList
},
getRelationData() {
return this.relationData
},
},
actions: {
setDictionaryList(dictionaryList) {
this.dictionaryList = dictionaryList || []
},
setOrganizeTree(organizeTree) {
this.organizeTree = organizeTree
},
setDepartmentTree(departmentTree) {
this.departmentTree = departmentTree
},
setPositionTree(positionTree) {
this.positionTree = positionTree
},
setGroupTree(groupTree) {
this.groupTree = groupTree
},
setRoleTree(roleTree) {
this.roleTree = roleTree
},
setUserTree(userTree) {
this.userTree = userTree
},
setUserList(userList) {
this.userList = userList
},
updateRelationData(val) {
this.relationData = val
},
getDictionaryDataAll() {
return new Promise((resolve, reject) => {
if (this.dictionaryList.length) {
resolve(this.dictionaryList)
} else {
getDictionaryDataAll().then(res => {
this.setDictionaryList(res.data.list)
resolve(res.data.list)
}).catch(error => {
reject(error)
})
}
})
},
getDictionaryData(info) {
return new Promise(async resolve => {
let list = [],
data = [],
json = []
if (!this.dictionaryList.length) {
list = await this.getDictionaryDataAll()
} else {
list = this.dictionaryList
}
if (info.sort) {
data = list.filter(o => o.enCode === info.sort)[0]
if (!info.id) {
json = data?.dictionaryList || []
} else {
let rowData = [];
if (!data.isTree) {
rowData = data.dictionaryList.fliter(o => o.id == info.id)
} else {
const findData = list => {
for (let i = 0; i < list.length; i++) {
const e = list[i];
if (e.id == info.id) {
rowData[0] = e
break
}
if (e.children && e.children.length) {
findData(e.children)
}
}
}
findData(data.dictionaryList)
}
if (rowData.length) {
json = rowData[0]
} else {
json = {
id: "",
fullName: ""
};
}
}
}
resolve(json)
})
},
getDicDataSelector(value, key = 'id') {
return new Promise(async resolve => {
let list = [],
data = {},
json = [];
if (!this.dictionaryList.length) {
list = await this.getDictionaryDataAll()
} else {
list = this.dictionaryList
}
if (!value) return resolve([])
let arr = list.filter(o => o[key] === value);
if (!arr.length) return resolve([])
data = arr[0];
json = data.dictionaryList;
resolve(json)
})
},
getOrganizeTree() {
return new Promise((resolve, reject) => {
if (!this.organizeTree.length) {
getOrganizeSelector().then(res => {
this.setOrganizeTree(res.data.list)
resolve(res.data.list)
}).catch(error => {
reject(error)
})
} else {
resolve(this.organizeTree)
}
})
},
getDepartmentTree() {
return new Promise((resolve, reject) => {
if (!this.departmentTree.length) {
getDepartmentSelector().then(res => {
this.setDepartmentTree(res.data.list)
resolve(res.data.list)
}).catch(error => {
reject(error)
})
} else {
resolve(this.departmentTree)
}
})
},
getPositionTree() {
return new Promise((resolve, reject) => {
if (!this.positionTree.length) {
getPositionSelector().then(res => {
this.setPositionTree(res.data.list)
resolve(res.data.list)
}).catch(error => {
reject(error)
})
} else {
resolve(this.positionTree)
}
})
},
getGroupTree() {
return new Promise((resolve, reject) => {
if (!this.groupTree.length) {
getGroupSelector().then(res => {
this.setGroupTree(res.data)
resolve(res.data)
}).catch(error => {
reject(error)
})
} else {
resolve(this.groupTree)
}
})
},
getRoleTree() {
return new Promise((resolve, reject) => {
if (!this.roleTree.length) {
getRoleSelector().then(res => {
this.setRoleTree(res.data.list)
resolve(res.data.list)
}).catch(error => {
reject(error)
})
} else {
resolve(this.roleTree)
}
})
},
getUserTree() {
return new Promise((resolve, reject) => {
if (!this.userTree.length) {
getUserSelector().then(res => {
this.setUserTree(res.data.list)
resolve(res.data.list)
}).catch(error => {
reject(error)
})
} else {
resolve(this.userTree)
}
})
},
getUserList() {
return new Promise((resolve, reject) => {
if (!this.userList.length) {
getUserAll().then(res => {
this.setUserList(res.data.list)
resolve(res.data.list)
}).catch(error => {
reject(error)
})
} else {
resolve(this.userList)
}
})
},
getUserInfo(id) {
return new Promise(async resolve => {
let list = []
if (!this.userList.length) {
list = await this.getUserList()
} else {
list = this.userList
}
let item = list.filter(o => o.id === id)[0]
resolve(item || {})
})
},
},
});