Merge branch 'v2' into mini
This commit is contained in:
commit
97c293bc6e
|
@ -0,0 +1,246 @@
|
||||||
|
import config from '@/config/axios/config'
|
||||||
|
import { MockMethod } from 'vite-plugin-mock'
|
||||||
|
import Mock from 'mockjs'
|
||||||
|
import { toAnyString } from '@/utils'
|
||||||
|
|
||||||
|
const { code } = config
|
||||||
|
|
||||||
|
const timeout = 1000
|
||||||
|
|
||||||
|
export default [
|
||||||
|
// 列表接口
|
||||||
|
{
|
||||||
|
url: '/menu/list',
|
||||||
|
method: 'get',
|
||||||
|
timeout,
|
||||||
|
response: () => {
|
||||||
|
return {
|
||||||
|
data: {
|
||||||
|
code: code,
|
||||||
|
data: {
|
||||||
|
list: [
|
||||||
|
{
|
||||||
|
path: '/dashboard',
|
||||||
|
component: '#',
|
||||||
|
redirect: '/dashboard/analysis',
|
||||||
|
name: 'Dashboard',
|
||||||
|
status: Mock.Random.integer(0, 1),
|
||||||
|
id: toAnyString(),
|
||||||
|
meta: {
|
||||||
|
title: '首页',
|
||||||
|
icon: 'ant-design:dashboard-filled',
|
||||||
|
alwaysShow: true
|
||||||
|
},
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: 'analysis',
|
||||||
|
component: 'views/Dashboard/Analysis',
|
||||||
|
name: 'Analysis',
|
||||||
|
status: Mock.Random.integer(0, 1),
|
||||||
|
id: toAnyString(),
|
||||||
|
meta: {
|
||||||
|
title: '分析页',
|
||||||
|
noCache: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'workplace',
|
||||||
|
component: 'views/Dashboard/Workplace',
|
||||||
|
name: 'Workplace',
|
||||||
|
status: Mock.Random.integer(0, 1),
|
||||||
|
id: toAnyString(),
|
||||||
|
meta: {
|
||||||
|
title: '工作台',
|
||||||
|
noCache: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/external-link',
|
||||||
|
component: '#',
|
||||||
|
meta: {
|
||||||
|
title: '文档',
|
||||||
|
icon: 'clarity:document-solid'
|
||||||
|
},
|
||||||
|
name: 'ExternalLink',
|
||||||
|
status: Mock.Random.integer(0, 1),
|
||||||
|
id: toAnyString(),
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: 'https://element-plus-admin-doc.cn/',
|
||||||
|
name: 'DocumentLink',
|
||||||
|
status: Mock.Random.integer(0, 1),
|
||||||
|
id: toAnyString(),
|
||||||
|
meta: {
|
||||||
|
title: '文档'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/level',
|
||||||
|
component: '#',
|
||||||
|
redirect: '/level/menu1/menu1-1/menu1-1-1',
|
||||||
|
name: 'Level',
|
||||||
|
status: Mock.Random.integer(0, 1),
|
||||||
|
id: toAnyString(),
|
||||||
|
meta: {
|
||||||
|
title: '菜单',
|
||||||
|
icon: 'carbon:skill-level-advanced'
|
||||||
|
},
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: 'menu1',
|
||||||
|
name: 'Menu1',
|
||||||
|
component: '##',
|
||||||
|
status: Mock.Random.integer(0, 1),
|
||||||
|
id: toAnyString(),
|
||||||
|
redirect: '/level/menu1/menu1-1/menu1-1-1',
|
||||||
|
meta: {
|
||||||
|
title: '菜单1'
|
||||||
|
},
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: 'menu1-1',
|
||||||
|
name: 'Menu11',
|
||||||
|
component: '##',
|
||||||
|
status: Mock.Random.integer(0, 1),
|
||||||
|
id: toAnyString(),
|
||||||
|
redirect: '/level/menu1/menu1-1/menu1-1-1',
|
||||||
|
meta: {
|
||||||
|
title: '菜单1-1',
|
||||||
|
alwaysShow: true
|
||||||
|
},
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: 'menu1-1-1',
|
||||||
|
name: 'Menu111',
|
||||||
|
component: 'views/Level/Menu111',
|
||||||
|
status: Mock.Random.integer(0, 1),
|
||||||
|
id: toAnyString(),
|
||||||
|
meta: {
|
||||||
|
title: '菜单1-1-1',
|
||||||
|
permission: ['edit', 'add']
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'menu1-2',
|
||||||
|
name: 'Menu12',
|
||||||
|
component: 'views/Level/Menu12',
|
||||||
|
status: Mock.Random.integer(0, 1),
|
||||||
|
id: toAnyString(),
|
||||||
|
meta: {
|
||||||
|
title: '菜单1-2',
|
||||||
|
permission: ['edit', 'add']
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'menu2',
|
||||||
|
name: 'Menu2Demo',
|
||||||
|
component: 'views/Level/Menu2',
|
||||||
|
status: Mock.Random.integer(0, 1),
|
||||||
|
id: toAnyString(),
|
||||||
|
meta: {
|
||||||
|
title: '菜单2',
|
||||||
|
permission: ['edit', 'add']
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/example',
|
||||||
|
component: '#',
|
||||||
|
redirect: '/example/example-dialog',
|
||||||
|
name: 'Example',
|
||||||
|
status: Mock.Random.integer(0, 1),
|
||||||
|
id: toAnyString(),
|
||||||
|
meta: {
|
||||||
|
title: '综合示例',
|
||||||
|
icon: 'ep:management',
|
||||||
|
alwaysShow: true
|
||||||
|
},
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: 'example-dialog',
|
||||||
|
component: 'views/Example/Dialog/ExampleDialog',
|
||||||
|
name: 'ExampleDialog',
|
||||||
|
status: Mock.Random.integer(0, 1),
|
||||||
|
id: toAnyString(),
|
||||||
|
meta: {
|
||||||
|
title: '综合示例-弹窗',
|
||||||
|
permission: ['edit', 'add', 'delete']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'example-page',
|
||||||
|
component: 'views/Example/Page/ExamplePage',
|
||||||
|
name: 'ExamplePage',
|
||||||
|
status: Mock.Random.integer(0, 1),
|
||||||
|
id: toAnyString(),
|
||||||
|
meta: {
|
||||||
|
title: '综合示例-页面',
|
||||||
|
permission: ['edit', 'add', 'delete']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'example-add',
|
||||||
|
component: 'views/Example/Page/ExampleAdd',
|
||||||
|
name: 'ExampleAdd',
|
||||||
|
status: Mock.Random.integer(0, 1),
|
||||||
|
id: toAnyString(),
|
||||||
|
meta: {
|
||||||
|
title: '综合示例-新增',
|
||||||
|
noTagsView: true,
|
||||||
|
noCache: true,
|
||||||
|
hidden: true,
|
||||||
|
showMainRoute: true,
|
||||||
|
activeMenu: '/example/example-page',
|
||||||
|
permission: ['edit', 'add', 'delete']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'example-edit',
|
||||||
|
component: 'views/Example/Page/ExampleEdit',
|
||||||
|
name: 'ExampleEdit',
|
||||||
|
status: Mock.Random.integer(0, 1),
|
||||||
|
id: toAnyString(),
|
||||||
|
meta: {
|
||||||
|
title: '综合示例-编辑',
|
||||||
|
noTagsView: true,
|
||||||
|
noCache: true,
|
||||||
|
hidden: true,
|
||||||
|
showMainRoute: true,
|
||||||
|
activeMenu: '/example/example-page',
|
||||||
|
permission: ['edit', 'add', 'delete']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'example-detail',
|
||||||
|
component: 'views/Example/Page/ExampleDetail',
|
||||||
|
name: 'ExampleDetail',
|
||||||
|
status: Mock.Random.integer(0, 1),
|
||||||
|
id: toAnyString(),
|
||||||
|
meta: {
|
||||||
|
title: '综合示例-详情',
|
||||||
|
noTagsView: true,
|
||||||
|
noCache: true,
|
||||||
|
hidden: true,
|
||||||
|
showMainRoute: true,
|
||||||
|
activeMenu: '/example/example-page',
|
||||||
|
permission: ['edit', 'add', 'delete']
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
] as MockMethod[]
|
|
@ -105,14 +105,6 @@ const adminList = [
|
||||||
meta: {
|
meta: {
|
||||||
title: 'UseForm'
|
title: 'UseForm'
|
||||||
}
|
}
|
||||||
},
|
|
||||||
{
|
|
||||||
path: 'ref-form',
|
|
||||||
component: 'views/Components/Form/RefForm',
|
|
||||||
name: 'RefForm',
|
|
||||||
meta: {
|
|
||||||
title: 'RefForm'
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
|
@ -52,8 +52,7 @@
|
||||||
"vue": "3.3.4",
|
"vue": "3.3.4",
|
||||||
"vue-i18n": "9.2.2",
|
"vue-i18n": "9.2.2",
|
||||||
"vue-router": "^4.2.4",
|
"vue-router": "^4.2.4",
|
||||||
"vue-types": "^5.1.0",
|
"vue-types": "^5.1.0"
|
||||||
"web-storage-cache": "^1.1.1"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@commitlint/cli": "^17.6.7",
|
"@commitlint/cli": "^17.6.7",
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export const getMenuListApi = () => {
|
||||||
|
return request.get({ url: '/menu/list' })
|
||||||
|
}
|
|
@ -12,7 +12,7 @@ interface UseTableConfig {
|
||||||
immediate?: boolean
|
immediate?: boolean
|
||||||
fetchDataApi: () => Promise<{
|
fetchDataApi: () => Promise<{
|
||||||
list: any[]
|
list: any[]
|
||||||
total: number
|
total?: number
|
||||||
}>
|
}>
|
||||||
fetchDelApi?: () => Promise<boolean>
|
fetchDelApi?: () => Promise<boolean>
|
||||||
}
|
}
|
||||||
|
@ -83,7 +83,7 @@ export const useTable = (config: UseTableConfig) => {
|
||||||
console.log('fetchDataApi res', res)
|
console.log('fetchDataApi res', res)
|
||||||
if (res) {
|
if (res) {
|
||||||
dataList.value = res.list
|
dataList.value = res.list
|
||||||
total.value = res.total
|
total.value = res.total || 0
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log('fetchDataApi error')
|
console.log('fetchDataApi error')
|
||||||
|
|
|
@ -161,7 +161,8 @@ export default {
|
||||||
sticky: 'Sticky',
|
sticky: 'Sticky',
|
||||||
treeTable: 'Tree table',
|
treeTable: 'Tree table',
|
||||||
PicturePreview: 'Table Image Preview',
|
PicturePreview: 'Table Image Preview',
|
||||||
department: 'Department management'
|
department: 'Department management',
|
||||||
|
menuManagement: 'Menu management'
|
||||||
},
|
},
|
||||||
permission: {
|
permission: {
|
||||||
hasPermission: 'Please set the operation permission value'
|
hasPermission: 'Please set the operation permission value'
|
||||||
|
@ -504,6 +505,24 @@ export default {
|
||||||
disable: 'Disable',
|
disable: 'Disable',
|
||||||
superiorDepartment: 'Superior department'
|
superiorDepartment: 'Superior department'
|
||||||
},
|
},
|
||||||
|
menu: {
|
||||||
|
menuName: 'Menu name',
|
||||||
|
icon: 'Icon',
|
||||||
|
// 权限
|
||||||
|
permission: 'Permission',
|
||||||
|
component: 'Component',
|
||||||
|
path: 'Path',
|
||||||
|
status: 'Status',
|
||||||
|
hidden: 'Hidden',
|
||||||
|
alwaysShow: 'Always show',
|
||||||
|
noCache: 'No cache',
|
||||||
|
breadcrumb: 'Breadcrumb',
|
||||||
|
affix: 'Affix',
|
||||||
|
noTagsView: 'No tags view',
|
||||||
|
activeMenu: 'Active menu',
|
||||||
|
canTo: 'Can to',
|
||||||
|
name: 'Name'
|
||||||
|
},
|
||||||
inputPasswordDemo: {
|
inputPasswordDemo: {
|
||||||
title: 'InputPassword',
|
title: 'InputPassword',
|
||||||
inputPasswordDes: 'Secondary packaging of Input components based on ElementPlus'
|
inputPasswordDes: 'Secondary packaging of Input components based on ElementPlus'
|
||||||
|
|
|
@ -161,7 +161,8 @@ export default {
|
||||||
sticky: '黏性',
|
sticky: '黏性',
|
||||||
treeTable: '树形表格',
|
treeTable: '树形表格',
|
||||||
PicturePreview: '表格图片预览',
|
PicturePreview: '表格图片预览',
|
||||||
department: '部门管理'
|
department: '部门管理',
|
||||||
|
menuManagement: '菜单管理'
|
||||||
},
|
},
|
||||||
permission: {
|
permission: {
|
||||||
hasPermission: '请设置操作权限值'
|
hasPermission: '请设置操作权限值'
|
||||||
|
@ -499,6 +500,23 @@ export default {
|
||||||
// 上级部门
|
// 上级部门
|
||||||
superiorDepartment: '上级部门'
|
superiorDepartment: '上级部门'
|
||||||
},
|
},
|
||||||
|
menu: {
|
||||||
|
menuName: '菜单名称',
|
||||||
|
icon: '图标',
|
||||||
|
permission: '权限标识',
|
||||||
|
component: '组件',
|
||||||
|
path: '路径',
|
||||||
|
status: '状态',
|
||||||
|
hidden: '是否隐藏',
|
||||||
|
alwaysShow: '是否一直显示',
|
||||||
|
noCache: '是否清除缓存',
|
||||||
|
breadcrumb: '是否显示面包屑',
|
||||||
|
affix: '是否固定在标签页',
|
||||||
|
noTagsView: '是否隐藏标签页',
|
||||||
|
activeMenu: '高亮菜单',
|
||||||
|
canTo: '是否可跳转',
|
||||||
|
name: '组件名称'
|
||||||
|
},
|
||||||
inputPasswordDemo: {
|
inputPasswordDemo: {
|
||||||
title: '密码输入框',
|
title: '密码输入框',
|
||||||
inputPasswordDes: '基于 ElementPlus 的 Input 组件二次封装'
|
inputPasswordDes: '基于 ElementPlus 的 Input 组件二次封装'
|
||||||
|
|
|
@ -27,9 +27,9 @@ import { defineComponent } from 'vue'
|
||||||
|
|
||||||
activeMenu: '/dashboard' 显示高亮的路由路径
|
activeMenu: '/dashboard' 显示高亮的路由路径
|
||||||
|
|
||||||
followAuth: '/dashboard' 跟随哪个路由进行权限过滤
|
|
||||||
|
|
||||||
canTo: true 设置为true即使hidden为true,也依然可以进行路由跳转(默认 false)
|
canTo: true 设置为true即使hidden为true,也依然可以进行路由跳转(默认 false)
|
||||||
|
|
||||||
|
permission: ['edit','add', 'delete'] 设置该路由的权限
|
||||||
}
|
}
|
||||||
**/
|
**/
|
||||||
declare module 'vue-router' {
|
declare module 'vue-router' {
|
||||||
|
@ -45,6 +45,7 @@ declare module 'vue-router' {
|
||||||
noTagsView?: boolean
|
noTagsView?: boolean
|
||||||
followAuth?: string
|
followAuth?: string
|
||||||
canTo?: boolean
|
canTo?: boolean
|
||||||
|
permission?: string[]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue