diff --git a/package.json b/package.json
index 681661e..553ecf6 100644
--- a/package.json
+++ b/package.json
@@ -19,15 +19,15 @@
"clipboard": "^2.0.6",
"core-js": "^3.6.5",
"echarts": "^4.9.0",
- "element-plus": "1.0.1-beta.11",
+ "element-plus": "1.0.1-beta.14",
"highlight.js": "^10.4.0",
"lodash-es": "^4.17.15",
+ "mitt": "^2.1.0",
"mockjs": "^1.1.0",
"normalize.css": "^8.0.1",
"nprogress": "^0.2.0",
"path-to-regexp": "^6.2.0",
"qs": "^6.9.4",
- "resize-observer-polyfill": "^1.5.1",
"screenfull": "^5.0.2",
"vditor": "^3.7.0",
"vue": "3.0.4",
diff --git a/src/components/More/index.vue b/src/components/More/index.vue
new file mode 100644
index 0000000..0972698
--- /dev/null
+++ b/src/components/More/index.vue
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+
diff --git a/src/components/Setting/index.vue b/src/components/Setting/index.vue
index 72cdc17..cbf3742 100644
--- a/src/components/Setting/index.vue
+++ b/src/components/Setting/index.vue
@@ -35,14 +35,6 @@
顶部菜单主题
-->
-
界面显示
@@ -116,16 +108,6 @@ export default defineComponent({
appStore.SetCollapsed(false)
}
- // const fixedNavbar = ref
(appStore.fixedNavbar)
- // function setFixedNavbar(fixedNavbar: boolean) {
- // appStore.SetFixedNavbar(fixedNavbar)
- // }
-
- // const fixedTags = ref(appStore.fixedTags)
- // function setFixedTags(fixedTags: boolean) {
- // appStore.SetFixedTags(fixedTags)
- // }
-
const fixedHeader = ref(appStore.fixedHeader)
function setFixedHeader(fixedHeader: boolean) {
appStore.SetFixedHeader(fixedHeader)
@@ -179,8 +161,6 @@ export default defineComponent({
return {
drawer, toggleClick,
layout, setLayout,
- // fixedNavbar, setFixedNavbar,
- // fixedTags, setFixedTags,
fixedHeader, setFixedHeader,
navbar, setNavbar,
hamburger, setHamburger,
diff --git a/src/pages/index/layout/components/AppMain.vue b/src/pages/index/layout/components/AppMain.vue
index dbdaf89..83a210c 100644
--- a/src/pages/index/layout/components/AppMain.vue
+++ b/src/pages/index/layout/components/AppMain.vue
@@ -26,7 +26,7 @@ export default defineComponent({
diff --git a/src/pages/index/router/index.ts b/src/pages/index/router/index.ts
index 721975c..10466eb 100644
--- a/src/pages/index/router/index.ts
+++ b/src/pages/index/router/index.ts
@@ -24,6 +24,8 @@ const Layout = () => import('../layout/index.vue')
affix: true 如果设置为true,则会一直固定在tag项中(默认 false)
noTagsView: true 如果设置为true,则不会出现在tag中(默认 false)
activeMenu: '/dashboard' 显示高亮的路由路径
+ followAuth: '/dashboard' 跟随哪个路由进行权限过滤
+ showMainRoute: true 设置为true即使hidden为true,也依然可以进行路由跳转(默认 false)
}
**/
@@ -178,6 +180,14 @@ export const asyncRouterMap: AppRouteRecordRaw[] = [
meta: {
title: '弹窗'
}
+ },
+ {
+ path: 'more',
+ component: () => import('_p/index/views/components-demo/more/index.vue'),
+ name: 'MoreDemo',
+ meta: {
+ title: '显示更多'
+ }
}
]
},
@@ -499,11 +509,45 @@ export const asyncRouterMap: AppRouteRecordRaw[] = [
},
children: [
{
- path: 'example',
- component: () => import('_p/index/views/example-demo/example/index.vue'),
- name: 'Example',
+ path: 'example-dialog',
+ component: () => import('_p/index/views/example-demo/example-dialog/index.vue'),
+ name: 'ExampleDialog',
meta: {
- title: '列表综合实例'
+ title: '列表综合实例-弹窗'
+ }
+ },
+ {
+ path: 'example-page',
+ component: () => import('_p/index/views/example-demo/example-page/index.vue'),
+ name: 'ExamplePage',
+ meta: {
+ title: '列表综合实例-页面'
+ }
+ },
+ {
+ path: 'example-add',
+ component: () => import('_p/index/views/example-demo/example-page/example-add.vue'),
+ name: 'ExampleAdd',
+ meta: {
+ title: '列表综合实例-新增',
+ noTagsView: true,
+ noCache: true,
+ hidden: true,
+ showMainRoute: true,
+ activeMenu: '/example-demo/example-page'
+ }
+ },
+ {
+ path: 'example-edit',
+ component: () => import('_p/index/views/example-demo/example-page/example-edit.vue'),
+ name: 'ExampleEdit',
+ meta: {
+ title: '列表综合实例-编辑',
+ noTagsView: true,
+ noCache: true,
+ hidden: true,
+ showMainRoute: true,
+ activeMenu: '/example-demo/example-page'
}
}
]
diff --git a/src/pages/index/router/types.d.ts b/src/pages/index/router/types.d.ts
index 8de6f8f..43586ec 100644
--- a/src/pages/index/router/types.d.ts
+++ b/src/pages/index/router/types.d.ts
@@ -10,6 +10,8 @@ export interface RouteMeta {
activeMenu?: string
parent?: string
noTagsView?: boolean
+ followAuth?: string
+ showMainRoute?: boolean
}
export interface AppRouteRecordRaw extends Omit {
diff --git a/src/pages/index/store/modules/app.ts b/src/pages/index/store/modules/app.ts
index ee3b584..97d8705 100644
--- a/src/pages/index/store/modules/app.ts
+++ b/src/pages/index/store/modules/app.ts
@@ -7,8 +7,6 @@ export interface AppState {
showLogo: Boolean
showNavbar: Boolean
fixedHeader: Boolean
- // fixedTags: Boolean
- // fixedNavbar: Boolean
layout: String
showBreadcrumb: Boolean
showHamburger: Boolean
@@ -25,8 +23,6 @@ class App extends VuexModule implements AppState {
public showLogo = true // 是否显示logo
public showTags = true // 是否显示标签栏
public showNavbar = true // 是否显示navbar
- // public fixedTags = true // 是否固定标签栏
- // public fixedNavbar = true // 是否固定navbar
public fixedHeader = true // 是否固定header
public layout = 'Classic' // layout布局
public showBreadcrumb = true // 是否显示面包屑
@@ -53,14 +49,6 @@ class App extends VuexModule implements AppState {
private SET_NAVBAR(showNavbar: boolean): void {
this.showNavbar = showNavbar
}
- // @Mutation
- // private SET_FIXEDTAGS(fixedTags: boolean): void {
- // this.fixedTags = fixedTags
- // }
- // @Mutation
- // private SET_FIXEDNAVBAR(fixedNavbar: boolean): void {
- // this.fixedNavbar = fixedNavbar
- // }
@Mutation
private SET_FIXEDHEADER(fixedHeader: boolean): void {
this.fixedHeader = fixedHeader
@@ -114,14 +102,6 @@ class App extends VuexModule implements AppState {
public SetFixedHeader(fixedHeader: boolean): void {
this.SET_FIXEDHEADER(fixedHeader)
}
- // @Action
- // public SetFixedTags(fixedTags: boolean): void {
- // this.SET_FIXEDTAGS(fixedTags)
- // }
- // @Action
- // public SetFixedNavbar(fixedNavbar: boolean): void {
- // this.SET_FIXEDNAVBAR(fixedNavbar)
- // }
@Action
public SetLayout(layout: 'Classic' | 'LeftTop' | 'Top' | 'Test'): void {
this.SET_LAYOUT(layout)
diff --git a/src/pages/index/store/modules/permission.ts b/src/pages/index/store/modules/permission.ts
index f46d092..d3c7a95 100644
--- a/src/pages/index/store/modules/permission.ts
+++ b/src/pages/index/store/modules/permission.ts
@@ -51,45 +51,13 @@ class Permission extends VuexModule implements PermissionState {
}
}
-// // 二级以上的菜单降级成二级菜单
-// function formatRouter(routes: AppRouteRecordRaw[], basePath = '/', list: AppRouteRecordRaw[] = [], parent: AppRouteRecordRaw) {
-// routes.map((item: AppRouteRecordRaw) => {
-// item.path = path.resolve(basePath, item.path)
-// const meta: RouteMeta = item.meta || {}
-// if (!meta.parent && parent) {
-// meta.parent = parent.path
-// item.meta = meta
-// }
-// if (item.redirect && item.redirect !== 'noredirect') {
-// item.redirect = path.resolve(basePath, item.redirect as any)
-// }
-// if (item.children && item.children.length > 0) {
-// const arr: AppRouteRecordRaw[] = formatRouter(item.children, item.path, list, item)
-// delete item.children
-// list.concat(arr)
-// }
-// list.push(item)
-// })
-// return list
-// }
-
-// // 菜单降级
-// function getFlatRoutes(routes: AppRouteRecordRaw[]): AppRouteRecordRaw[] {
-// return routes.map((child: AppRouteRecordRaw) => {
-// if (child.children && child.children.length > 0) {
-// child.children = formatRouter(child.children, child.path, [], child)
-// }
-// return child
-// })
-// }
-
// 路由过滤,主要用于权限控制
function generateRoutes(routes: AppRouteRecordRaw[]): AppRouteRecordRaw[] {
const res: AppRouteRecordRaw[] = []
for (const route of routes) {
// skip some route
- if (route.meta && route.meta.hidden) {
+ if (route.meta && route.meta.hidden && !route.meta.showMainRoute) {
continue
}
diff --git a/src/pages/index/views/components-demo/more/index.vue b/src/pages/index/views/components-demo/more/index.vue
new file mode 100644
index 0000000..de9af5c
--- /dev/null
+++ b/src/pages/index/views/components-demo/more/index.vue
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
diff --git a/src/pages/index/views/example-demo/example/api.ts b/src/pages/index/views/example-demo/example-dialog/api.ts
similarity index 100%
rename from src/pages/index/views/example-demo/example/api.ts
rename to src/pages/index/views/example-demo/example-dialog/api.ts
diff --git a/src/pages/index/views/example-demo/example/components/IfnoWrite.vue b/src/pages/index/views/example-demo/example-dialog/components/IfnoWrite.vue
similarity index 100%
rename from src/pages/index/views/example-demo/example/components/IfnoWrite.vue
rename to src/pages/index/views/example-demo/example-dialog/components/IfnoWrite.vue
diff --git a/src/pages/index/views/example-demo/example/components/types.ts b/src/pages/index/views/example-demo/example-dialog/components/types.ts
similarity index 100%
rename from src/pages/index/views/example-demo/example/components/types.ts
rename to src/pages/index/views/example-demo/example-dialog/components/types.ts
diff --git a/src/pages/index/views/example-demo/example/index.vue b/src/pages/index/views/example-demo/example-dialog/index.vue
similarity index 99%
rename from src/pages/index/views/example-demo/example/index.vue
rename to src/pages/index/views/example-demo/example-dialog/index.vue
index f2aa74d..ef2a8df 100644
--- a/src/pages/index/views/example-demo/example/index.vue
+++ b/src/pages/index/views/example-demo/example-dialog/index.vue
@@ -112,7 +112,7 @@ const columns = [
]
export default defineComponent({
- // name: 'Example',
+ // name: 'ExampleDialog',
components: {
IfnoWrite
},
diff --git a/src/pages/index/views/example-demo/example-page/api.ts b/src/pages/index/views/example-demo/example-page/api.ts
new file mode 100644
index 0000000..f07d7e3
--- /dev/null
+++ b/src/pages/index/views/example-demo/example-page/api.ts
@@ -0,0 +1,22 @@
+import { fetch } from '_p/index/axios-config/axios'
+
+interface PropsData {
+ params?: any
+ data?: any
+}
+
+export const getExampleListApi = ({ params }: PropsData): any => {
+ return fetch({ url: '/example/list', method: 'get', params })
+}
+
+export const delsExampApi = ({ data }: PropsData): any => {
+ return fetch({ url: '/example/delete', method: 'post', data })
+}
+
+export const saveExampApi = ({ data }: PropsData): any => {
+ return fetch({ url: '/example/save', method: 'post', data })
+}
+
+export const getExampDetApi = ({ params }: PropsData): any => {
+ return fetch({ url: '/example/detail', method: 'get', params })
+}
diff --git a/src/pages/index/views/example-demo/example-page/components/IfnoWrite.vue b/src/pages/index/views/example-demo/example-page/components/IfnoWrite.vue
new file mode 100644
index 0000000..7c5905d
--- /dev/null
+++ b/src/pages/index/views/example-demo/example-page/components/IfnoWrite.vue
@@ -0,0 +1,188 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 取消
+ 保存
+
+
+
+
+
+
+
diff --git a/src/pages/index/views/example-demo/example-page/components/types.ts b/src/pages/index/views/example-demo/example-page/components/types.ts
new file mode 100644
index 0000000..2e5d6bb
--- /dev/null
+++ b/src/pages/index/views/example-demo/example-page/components/types.ts
@@ -0,0 +1,18 @@
+export interface InfoWriteParams {
+ title: string
+ id?: string
+ author: string
+ content: string
+ importance: string
+ display_time: string
+ pageviews: number
+}
+
+export interface InfoWriteRules {
+ title?: any[]
+ author?: any[]
+ content?: any[]
+ importance?: any[]
+ display_time?: any[]
+ pageviews?: any[]
+}
diff --git a/src/pages/index/views/example-demo/example-page/example-add.vue b/src/pages/index/views/example-demo/example-page/example-add.vue
new file mode 100644
index 0000000..e1dd3aa
--- /dev/null
+++ b/src/pages/index/views/example-demo/example-page/example-add.vue
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
diff --git a/src/pages/index/views/example-demo/example-page/example-edit.vue b/src/pages/index/views/example-demo/example-page/example-edit.vue
new file mode 100644
index 0000000..8e09987
--- /dev/null
+++ b/src/pages/index/views/example-demo/example-page/example-edit.vue
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
diff --git a/src/pages/index/views/example-demo/example-page/index.vue b/src/pages/index/views/example-demo/example-page/index.vue
new file mode 100644
index 0000000..dfa7b99
--- /dev/null
+++ b/src/pages/index/views/example-demo/example-page/index.vue
@@ -0,0 +1,229 @@
+
+
+
+
+
+
+
+ 新增
+ 删除
+
+
+
+
+ {{ scope.row.importance === 3
+ ? '重要'
+ : (scope.row.importance === 2
+ ? '良好'
+ : '一般') }}
+
+
+
+ 编辑
+ 删除
+
+
+
+
+
+
+
+
diff --git a/src/vue-bus/index.ts b/src/vue-bus/index.ts
new file mode 100644
index 0000000..cb8b25b
--- /dev/null
+++ b/src/vue-bus/index.ts
@@ -0,0 +1,13 @@
+// 通过mitt实现vue-bus通信
+
+import mitt from 'mitt'
+
+const bus: any = {}
+
+const emitter = mitt()
+
+bus.$on = emitter.on
+bus.$off = emitter.off
+bus.$emit = emitter.emit
+
+export default bus
diff --git a/yarn.lock b/yarn.lock
index 6c47ede..f3183e7 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3990,10 +3990,10 @@ electron-to-chromium@^1.3.621:
resolved "https://registry.npm.taobao.org/electron-to-chromium/download/electron-to-chromium-1.3.622.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Felectron-to-chromium%2Fdownload%2Felectron-to-chromium-1.3.622.tgz#9726bd2e67a5462154750ce9701ca6af07d07877"
integrity sha1-lya9LmelRiFUdQzpcBymrwfQeHc=
-element-plus@1.0.1-beta.11:
- version "1.0.1-beta.11"
- resolved "https://registry.yarnpkg.com/element-plus/-/element-plus-1.0.1-beta.11.tgz#bcced187b44748b8d597c2681923c5097ee95fbe"
- integrity sha512-qmael6DKlhJsOaEi/n7Zpw10qOCRO1irCXJ1LO8eqtl/7UCPZQNiOIIu6Gd1SgsJWbiW55NrFbHiRpfx37ZLIg==
+element-plus@1.0.1-beta.14:
+ version "1.0.1-beta.14"
+ resolved "https://registry.yarnpkg.com/element-plus/-/element-plus-1.0.1-beta.14.tgz#67e6742ef0a380156d306d519d474220f8c3e03e"
+ integrity sha512-iqc8lAmj4yYTVQFlxwm5IWj3vxufgmF8FVwKgEKJfy1qQQVqA34R81IgywQpYh3jO/d+ofmHXhsm+z3ojXVp0A==
dependencies:
"@popperjs/core" "^2.4.4"
async-validator "^3.4.0"