init
This commit is contained in:
47
src/stores/cache.js
Normal file
47
src/stores/cache.js
Normal file
@@ -0,0 +1,47 @@
|
||||
import {defineStore} from "pinia";
|
||||
import {ref} from "vue";
|
||||
import {getCacheOpt, getCacheType} from "../api/cache";
|
||||
|
||||
export const useCacheStore = defineStore('cache',()=>{
|
||||
const cacheKeyOpt = ref(new Map())
|
||||
const cacheKeyType = ref(new Map())
|
||||
|
||||
const setCacheKey = async (key) => {
|
||||
try {
|
||||
const { code, data } = await getCacheType(key)
|
||||
if(code === 1000) {
|
||||
cacheKeyType.value.set(key, data[key])
|
||||
}
|
||||
} catch(err) {
|
||||
new Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
const getDict = (key) => {
|
||||
let dict
|
||||
if (!cacheKeyType.value.has(key)) {
|
||||
setCacheKey(key)
|
||||
} else {
|
||||
dict = cacheKeyType.value.get(key)
|
||||
}
|
||||
return dict
|
||||
}
|
||||
|
||||
|
||||
const checkKey = (keys) => {
|
||||
let result = []
|
||||
for (let key of keys) {
|
||||
if (!cacheKeyType.value.has(key) ) {
|
||||
result.push(key)
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
return {
|
||||
cacheKeyOpt,
|
||||
cacheKeyType,
|
||||
setCacheKey,
|
||||
getDict,
|
||||
}
|
||||
})
|
||||
95
src/stores/permisstion.js
Normal file
95
src/stores/permisstion.js
Normal file
@@ -0,0 +1,95 @@
|
||||
import { defineStore } from "pinia";
|
||||
import { defineAsyncComponent, ref } from "vue";
|
||||
import { getRouters } from "@/api/system/menu";
|
||||
import Layout from '@/layout/index.vue'
|
||||
import ParentView from '@/components/ParentView.vue'
|
||||
import router from "../router";
|
||||
const VueComUrl = import.meta.glob('../views/**/*.vue')
|
||||
|
||||
export const usePermisstionStroe = defineStore('permisstion', () => {
|
||||
const asyncRouters = ref([])
|
||||
//定义是否加载路由变量
|
||||
const isLoadRoutes = ref(false)
|
||||
const menuList = ref([])
|
||||
|
||||
const setIsLoadRoutes = (status) => {
|
||||
return isLoadRoutes.value = status
|
||||
}
|
||||
const setAsyncRouters = async () => {
|
||||
await getRouters().then(res => {
|
||||
if (res.code === 1000) {
|
||||
const sRouter = JSON.parse(JSON.stringify(res.data))
|
||||
const mData = JSON.parse(JSON.stringify(res.data))
|
||||
asyncRouters.value = formatAsyncRouters(sRouter)
|
||||
menuList.value = generateMenu(mData)
|
||||
addAsyncRouters(asyncRouters.value)
|
||||
isLoadRoutes.value = false
|
||||
} else {
|
||||
isLoadRoutes.value = true
|
||||
setTimeout(() => setAsyncRouters(), 3000)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
const formatAsyncRouters = (routers) => {
|
||||
return routers.filter(route => {
|
||||
if (route.component) {
|
||||
if (route.component === 'Layout') {
|
||||
route.component = Layout
|
||||
} else if (route.component === 'ParentView') {
|
||||
route.component = ParentView
|
||||
}
|
||||
else {
|
||||
route.component = loadView(route.component)
|
||||
}
|
||||
}
|
||||
if (route.pathParams != null) {
|
||||
let pathParams = route.pathParams
|
||||
route.pathParams = JSON.parse(route.pathParams)
|
||||
route.query = {}
|
||||
for (const key in route.pathParams) {
|
||||
route.query = {[key]: route.pathParams[key]}
|
||||
}
|
||||
}
|
||||
if (route.children !== null && route.children && route.children.length !== 0) {
|
||||
route.children = formatAsyncRouters(route.children)
|
||||
}
|
||||
return true
|
||||
})
|
||||
}
|
||||
|
||||
const addAsyncRouters = (routers) => {
|
||||
routers.forEach(route => {
|
||||
router.addRoute(route)
|
||||
})
|
||||
}
|
||||
|
||||
const generateMenu = (routes) => {
|
||||
return routes.filter(item => {
|
||||
if (item.children && item.children.length !== 0) {
|
||||
generateMenu(item.children)
|
||||
}
|
||||
item.title = item.meta.title
|
||||
item.icon = item.meta.icon
|
||||
return true
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
const loadView = (view) => {
|
||||
if (import.meta.env.MODE === 'development') {
|
||||
return () => import(/* @vite-ignore */`/src/views/${view}.vue`)
|
||||
} else {
|
||||
return VueComUrl['../views/' + view + '.vue']
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return {
|
||||
asyncRouters,
|
||||
menuList,
|
||||
isLoadRoutes,
|
||||
setAsyncRouters,
|
||||
setIsLoadRoutes
|
||||
}
|
||||
})
|
||||
112
src/stores/processStore.js
Normal file
112
src/stores/processStore.js
Normal file
@@ -0,0 +1,112 @@
|
||||
import {defineStore} from "pinia";
|
||||
import {ref} from "vue";
|
||||
|
||||
|
||||
export const useProcessStore = defineStore('process', () => {
|
||||
const nodeMap = ref(new Map())
|
||||
const parentMap = ref(new Map())
|
||||
const selectUserMap = ref(new Map())
|
||||
const isEdit = ref(null)
|
||||
const selectFormItem = ref(null)
|
||||
const selectedNode = ref([])
|
||||
const runningList = ref([])
|
||||
const endList = ref([])
|
||||
const noTakeList = ref([])
|
||||
const refuseList = ref([])
|
||||
const passList = ref([])
|
||||
const processData = ref({})
|
||||
const userTaskOption = ref({})
|
||||
|
||||
const getSelectedNode = () => {
|
||||
return selectedNode.value
|
||||
}
|
||||
const setSelectedNode = (val) => {
|
||||
selectedNode.value = val
|
||||
}
|
||||
const getSelectedFormItem = () => {
|
||||
return selectFormItem.value
|
||||
}
|
||||
const setSelectedFormItem = (val) => {
|
||||
selectFormItem.value = val
|
||||
}
|
||||
|
||||
const getProcess = () => {
|
||||
return processData.value.process;
|
||||
}
|
||||
|
||||
const addProcess = (val) => {
|
||||
console.log("添加节点成功")
|
||||
processData.value.process.push(val)
|
||||
}
|
||||
const delProcess = (delNode) => {
|
||||
processData.value.process.splice(processData.value.process.indexOf(delNode), 1)
|
||||
console.log("删除数据")
|
||||
console.log(processData.value.process)
|
||||
}
|
||||
|
||||
const getDesign = () => {
|
||||
return processData.value
|
||||
}
|
||||
const getAssignedUser = () => {
|
||||
return selectedNode.value.props.assignedUser || []
|
||||
}
|
||||
|
||||
|
||||
const addAssignedUser = (val) => {
|
||||
selectedNode.value.props.assignedUser.push(val)
|
||||
}
|
||||
|
||||
|
||||
const getFormMap = () => {
|
||||
//表单映射对象
|
||||
const map = new Map();
|
||||
processData.value.formItems.forEach(item => itemToMap(map, item))
|
||||
return map
|
||||
}
|
||||
|
||||
const itemToMap = (map, item) => {
|
||||
//对象转map
|
||||
map.set(item.id, item)
|
||||
if (item.name === 'SpanLayout') {
|
||||
item.props.items.forEach(sub => itemToMap(map, sub))
|
||||
}
|
||||
}
|
||||
|
||||
const setDesign = (val) => {
|
||||
processData.value = val
|
||||
}
|
||||
|
||||
const init = () => {
|
||||
nodeMap.value.clear()
|
||||
parentMap.value.clear()
|
||||
}
|
||||
|
||||
return {
|
||||
nodeMap,
|
||||
parentMap,
|
||||
selectUserMap,
|
||||
isEdit,
|
||||
selectFormItem,
|
||||
runningList,
|
||||
endList,
|
||||
noTakeList,
|
||||
refuseList,
|
||||
passList,
|
||||
design: processData,
|
||||
selectedNode,
|
||||
userTaskOption,
|
||||
init,
|
||||
getSelectedNode,
|
||||
setSelectedNode,
|
||||
getSelectedFormItem,
|
||||
setSelectedFormItem,
|
||||
getDesign,
|
||||
setDesign,
|
||||
getProcess,
|
||||
addProcess,
|
||||
delProcess,
|
||||
getFormMap,
|
||||
getAssignedUser,
|
||||
addAssignedUser
|
||||
}
|
||||
})
|
||||
20
src/stores/siderbar.js
Normal file
20
src/stores/siderbar.js
Normal file
@@ -0,0 +1,20 @@
|
||||
import { defineStore } from "pinia";
|
||||
import { reactive, ref } from "vue";
|
||||
export const useSiderBar = defineStore('siderbar',()=>{
|
||||
//定义控制侧边栏是否展开变量默认展开
|
||||
const isCollapse = ref(false)
|
||||
//获取侧边栏状态
|
||||
const getSiderBarStatus = () => {
|
||||
return isCollapse.value
|
||||
}
|
||||
//设置侧边栏状态
|
||||
const setSiderBarStatus = () => {
|
||||
isCollapse.value = !isCollapse.value
|
||||
}
|
||||
|
||||
return {
|
||||
isCollapse,
|
||||
getSiderBarStatus,
|
||||
setSiderBarStatus,
|
||||
}
|
||||
})
|
||||
54
src/stores/tagsview.js
Normal file
54
src/stores/tagsview.js
Normal file
@@ -0,0 +1,54 @@
|
||||
import { defineStore } from "pinia";
|
||||
import { ref } from "vue";
|
||||
import { useRouter } from "vue-router";
|
||||
|
||||
export const useTagsView = defineStore('tagsView',()=>{
|
||||
const router = useRouter()
|
||||
//已显示的标签页list
|
||||
const visitedViews = ref([])
|
||||
|
||||
//添加标签页面
|
||||
const addVisitedViews = ({path,meta}) => {
|
||||
if(visitedViews.value.length == 0) {
|
||||
visitedViews.value.push({path,meta})
|
||||
}else {
|
||||
const paths = visitedViews.value.map(item => item.path)
|
||||
if(paths.includes(path) == false) {
|
||||
visitedViews.value.push({path,meta})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//删除标签页
|
||||
const delVisitedViews = (path) => {
|
||||
if(visitedViews.value.length - 1 == 0) {
|
||||
return
|
||||
}
|
||||
visitedViews.value.forEach((item,index)=>{
|
||||
if(item.path == path) {
|
||||
visitedViews.value.splice(index,1)
|
||||
}
|
||||
})
|
||||
toLastTagView(visitedViews)
|
||||
}
|
||||
|
||||
//删除其他标签页
|
||||
const delOtherVisitedViews = ({path,meta}) => {
|
||||
visitedViews.value = []
|
||||
visitedViews.value.push({path,meta})
|
||||
toLastTagView(visitedViews)
|
||||
}
|
||||
|
||||
//路由到末尾标签页
|
||||
const toLastTagView = (view) => {
|
||||
const lastTagView = view.value.slice(-1)[0]
|
||||
router.push(lastTagView.path)
|
||||
}
|
||||
|
||||
return {
|
||||
visitedViews,
|
||||
addVisitedViews,
|
||||
delVisitedViews,
|
||||
delOtherVisitedViews,
|
||||
}
|
||||
})
|
||||
42
src/stores/userstore.js
Normal file
42
src/stores/userstore.js
Normal file
@@ -0,0 +1,42 @@
|
||||
import { defineStore } from "pinia";
|
||||
import { ref } from "vue";
|
||||
import { getUserInfo, login } from "../api/login";
|
||||
import { ElMessage } from "element-plus";
|
||||
import { removeToken, setToken} from "../utils/auth";
|
||||
|
||||
export const useAuthStore = defineStore('auth',()=>{
|
||||
const userinfo = ref({})
|
||||
const permisstions = ref([])
|
||||
const roles = ref([])
|
||||
const userLogin = async (data) => {
|
||||
let flag
|
||||
await login(data).then(res=>{
|
||||
if(res?.code === 1000) {
|
||||
setToken(res.data)
|
||||
flag = true
|
||||
}else {
|
||||
ElMessage.error(res.msg)
|
||||
flag = false
|
||||
}
|
||||
})
|
||||
return flag
|
||||
}
|
||||
const userLogout = () => {
|
||||
removeToken()
|
||||
}
|
||||
const setUserInfo = async () => {
|
||||
await getUserInfo().then(res=>{
|
||||
userinfo.value = res.data.user
|
||||
permisstions.value = res.data.permissions
|
||||
roles.value = res.data.roles
|
||||
})
|
||||
}
|
||||
|
||||
return {
|
||||
userinfo,
|
||||
permisstions,
|
||||
userLogin,
|
||||
userLogout,
|
||||
setUserInfo
|
||||
}
|
||||
})
|
||||
Reference in New Issue
Block a user