feat(verbal-trick): 新增增强话术功能
This commit is contained in:
@@ -1,122 +1,134 @@
|
||||
import { defineStore } from "pinia";
|
||||
import { ref } from "vue";
|
||||
import { getRouters } from "@/api/system/menu";
|
||||
import {defineStore} from "pinia";
|
||||
import {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";
|
||||
import {getUserInfo} from "@/api/login";
|
||||
|
||||
const VueComUrl = import.meta.glob('../views/**/*.vue')
|
||||
|
||||
export const usePermisstionStroe = defineStore('permisstion', () => {
|
||||
const asyncRouters = ref([])
|
||||
//定义是否加载路由变量
|
||||
const isLoadRoutes = ref(false)
|
||||
const menuList = ref([{
|
||||
name: 'home',
|
||||
path: '/home',
|
||||
icon: 'home',
|
||||
title: '工作台',
|
||||
meta: {
|
||||
breadcrumb: true
|
||||
}
|
||||
}])
|
||||
|
||||
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)
|
||||
menuList.value = [...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
|
||||
const asyncRouters = ref([])
|
||||
const userinfo = ref()
|
||||
//定义是否加载路由变量
|
||||
const isLoadRoutes = ref(false)
|
||||
const menuList = ref([{
|
||||
name: 'home',
|
||||
path: '/home',
|
||||
icon: 'home',
|
||||
title: '工作台',
|
||||
meta: {
|
||||
breadcrumb: true
|
||||
}
|
||||
else {
|
||||
route.component = loadView(route.component)
|
||||
}])
|
||||
|
||||
const setIsLoadRoutes = (status) => {
|
||||
return isLoadRoutes.value = status
|
||||
}
|
||||
const getUser=async ()=>{
|
||||
let {data}= await getUserInfo()
|
||||
return data.user.roles[0].roleKey == 'voice';
|
||||
}
|
||||
const setAsyncRouters = async () => {
|
||||
await getRouters().then(async 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)
|
||||
let role = await getUser()
|
||||
if(role){
|
||||
generateMenu(mData).map(item => {
|
||||
if (item.path == '/voice/management') {
|
||||
item.children = item.children.filter(item => item.name !== "Speech")
|
||||
}
|
||||
})
|
||||
}
|
||||
menuList.value = [...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.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)
|
||||
}
|
||||
if (item.pathParams != null) {
|
||||
item.path = formatPath(item.path, JSON.parse(item.pathParams))
|
||||
}
|
||||
item.title = item.meta.title
|
||||
item.icon = item.meta.icon
|
||||
return true
|
||||
})
|
||||
}
|
||||
|
||||
// 拼接地址
|
||||
const formatPath = (path, query) => {
|
||||
const queryArr = []
|
||||
let newPath = path
|
||||
for (const key in query) {
|
||||
queryArr.push({label: key, value: query[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)
|
||||
}
|
||||
if (item.pathParams != null) {
|
||||
item.path = formatPath(item.path, JSON.parse(item.pathParams))
|
||||
}
|
||||
item.title = item.meta.title
|
||||
item.icon = item.meta.icon
|
||||
return true
|
||||
})
|
||||
}
|
||||
|
||||
// 拼接地址
|
||||
const formatPath = (path, query) => {
|
||||
const queryArr = []
|
||||
let newPath = path
|
||||
for (const key in query) {
|
||||
queryArr.push({label: key, value: query[key]})
|
||||
queryArr.forEach((item, index) => {
|
||||
if (!index) {
|
||||
newPath += `?${item.label}=${item.value}`
|
||||
} else {
|
||||
newPath += `&${item.label}=${item.value}`
|
||||
}
|
||||
})
|
||||
return newPath
|
||||
}
|
||||
queryArr.forEach((item, index)=>{
|
||||
if(!index) {
|
||||
newPath += `?${item.label}=${item.value}`
|
||||
} else {
|
||||
newPath += `&${item.label}=${item.value}`
|
||||
}
|
||||
})
|
||||
return newPath
|
||||
}
|
||||
|
||||
|
||||
const loadView = (view) => {
|
||||
if (import.meta.env.MODE === 'development') {
|
||||
return () => import(/* @vite-ignore */`/src/views/${view}.vue`)
|
||||
} else {
|
||||
return VueComUrl['../views/' + view + '.vue']
|
||||
const loadView = (view) => {
|
||||
if (import.meta.env.MODE === 'development') {
|
||||
return () => import(/* @vite-ignore */`/src/views/${view}.vue`)
|
||||
} else {
|
||||
return VueComUrl['../views/' + view + '.vue']
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const removeMenu = () => {
|
||||
menuList.value.length = 0
|
||||
asyncRouters.value.length = 0
|
||||
}
|
||||
const removeMenu = () => {
|
||||
menuList.value.length = 0
|
||||
asyncRouters.value.length = 0
|
||||
}
|
||||
|
||||
|
||||
return {
|
||||
asyncRouters,
|
||||
menuList,
|
||||
isLoadRoutes,
|
||||
setAsyncRouters,
|
||||
setIsLoadRoutes,
|
||||
removeMenu
|
||||
}
|
||||
return {
|
||||
asyncRouters,
|
||||
menuList,
|
||||
isLoadRoutes,
|
||||
setAsyncRouters,
|
||||
setIsLoadRoutes,
|
||||
removeMenu
|
||||
}
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user