commit
81c08aadac
20
README.md
20
README.md
|
@ -5,7 +5,9 @@
|
||||||
|
|
||||||
[更新日志](https://github.com/lin-xin/vue-manage-system/releases)
|
[更新日志](https://github.com/lin-xin/vue-manage-system/releases)
|
||||||
|
|
||||||
## 捐赠
|
## 赞赏
|
||||||
|
请作者喝杯咖啡吧!
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## 前言 ##
|
## 前言 ##
|
||||||
|
@ -28,6 +30,7 @@
|
||||||
- [x] 列表拖拽排序
|
- [x] 列表拖拽排序
|
||||||
- [x] 权限测试
|
- [x] 权限测试
|
||||||
- [x] 404 / 403
|
- [x] 404 / 403
|
||||||
|
- [x] 三级菜单
|
||||||
|
|
||||||
|
|
||||||
## 目录结构介绍 ##
|
## 目录结构介绍 ##
|
||||||
|
@ -87,13 +90,12 @@
|
||||||
vue.js封装sChart.js的图表组件。访问地址:[vue-schart](https://github.com/linxin/vue-schart)
|
vue.js封装sChart.js的图表组件。访问地址:[vue-schart](https://github.com/linxin/vue-schart)
|
||||||
<p><a href="https://www.npmjs.com/package/vue-schart"><img src="https://img.shields.io/npm/dm/vue-schart.svg" alt="Downloads"></a></p>
|
<p><a href="https://www.npmjs.com/package/vue-schart"><img src="https://img.shields.io/npm/dm/vue-schart.svg" alt="Downloads"></a></p>
|
||||||
|
|
||||||
```JavaScript
|
```html
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<schart :canvasId="canvasId"
|
<schart class="wrapper"
|
||||||
|
:canvasId="canvasId"
|
||||||
:type="type"
|
:type="type"
|
||||||
:width="width"
|
|
||||||
:height="height"
|
|
||||||
:data="data"
|
:data="data"
|
||||||
:options="options"
|
:options="options"
|
||||||
></schart>
|
></schart>
|
||||||
|
@ -107,8 +109,6 @@ vue.js封装sChart.js的图表组件。访问地址:[vue-schart](https://githu
|
||||||
return {
|
return {
|
||||||
canvasId: 'myCanvas', // canvas的id
|
canvasId: 'myCanvas', // canvas的id
|
||||||
type: 'bar', // 图表类型
|
type: 'bar', // 图表类型
|
||||||
width: 500,
|
|
||||||
height: 400,
|
|
||||||
data: [
|
data: [
|
||||||
{name: '2014', value: 1342},
|
{name: '2014', value: 1342},
|
||||||
{name: '2015', value: 2123},
|
{name: '2015', value: 2123},
|
||||||
|
@ -125,6 +125,12 @@ vue.js封装sChart.js的图表组件。访问地址:[vue-schart](https://githu
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
<style>
|
||||||
|
.wrapper{
|
||||||
|
width: 7rem;
|
||||||
|
height: 5rem;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
```
|
```
|
||||||
|
|
||||||
### element-ui ###
|
### element-ui ###
|
||||||
|
|
|
@ -250,9 +250,9 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"async-validator": {
|
"async-validator": {
|
||||||
"version": "1.8.4",
|
"version": "1.8.5",
|
||||||
"resolved": "https://registry.npmjs.org/async-validator/-/async-validator-1.8.4.tgz",
|
"resolved": "https://registry.npmjs.org/async-validator/-/async-validator-1.8.5.tgz",
|
||||||
"integrity": "sha512-9M6Q6Q3iqFKSdyhliLG8gUH9E73p/TQU1XNH/qiybX5eFIgwB++IIZ/wcPM1f+x9WeqemxGkm0CCx69Mkx3EEg==",
|
"integrity": "sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"babel-runtime": "6.26.0"
|
"babel-runtime": "6.26.0"
|
||||||
}
|
}
|
||||||
|
@ -2739,14 +2739,15 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"element-ui": {
|
"element-ui": {
|
||||||
"version": "2.3.3",
|
"version": "2.4.5",
|
||||||
"resolved": "https://registry.npmjs.org/element-ui/-/element-ui-2.3.3.tgz",
|
"resolved": "https://registry.npmjs.org/element-ui/-/element-ui-2.4.5.tgz",
|
||||||
"integrity": "sha512-0Xa0GlwR57+6XBQlHkzutgIgiupAM2O9XNI7y6A1vdDhKmvZM8IBSqrqb9gQ5+onKuQ5afh69vkX2eeumFF5rA==",
|
"integrity": "sha512-gl1awKncY8HISSh9dmX+VR597T/JoLypanlnheiXPAMRlnBfuYncrrog5ep8qYmhAsss2tQ5KB3zNJV2wu3+XA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"async-validator": "1.8.4",
|
"async-validator": "1.8.5",
|
||||||
"babel-helper-vue-jsx-merge-props": "2.0.3",
|
"babel-helper-vue-jsx-merge-props": "2.0.3",
|
||||||
"deepmerge": "1.5.2",
|
"deepmerge": "1.5.2",
|
||||||
"normalize-wheel": "1.0.1",
|
"normalize-wheel": "1.0.1",
|
||||||
|
"resize-observer-polyfill": "1.5.0",
|
||||||
"throttle-debounce": "1.1.0"
|
"throttle-debounce": "1.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -5540,11 +5541,6 @@
|
||||||
"brorand": "1.1.0"
|
"brorand": "1.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"mime": {
|
|
||||||
"version": "1.4.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
|
|
||||||
"integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ=="
|
|
||||||
},
|
|
||||||
"mime-db": {
|
"mime-db": {
|
||||||
"version": "1.35.0",
|
"version": "1.35.0",
|
||||||
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.35.0.tgz",
|
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.35.0.tgz",
|
||||||
|
@ -8913,6 +8909,11 @@
|
||||||
"integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
|
"integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"resize-observer-polyfill": {
|
||||||
|
"version": "1.5.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.0.tgz",
|
||||||
|
"integrity": "sha512-M2AelyJDVR/oLnToJLtuDJRBBWUGUvvGigj1411hXhAdyFWqMaqHp7TixW3FpiLuVaikIcR1QL+zqoJoZlOgpg=="
|
||||||
|
},
|
||||||
"resolve": {
|
"resolve": {
|
||||||
"version": "1.8.1",
|
"version": "1.8.1",
|
||||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz",
|
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "vue-manage-system",
|
"name": "vue-manage-system",
|
||||||
"version": "3.1.0",
|
"version": "3.1.1",
|
||||||
"description": "基于Vue.js 2.x系列 + element-ui 内容管理系统解决方案",
|
"description": "基于Vue.js 2.x系列 + element-ui 内容管理系统解决方案",
|
||||||
"author": "lin-xin <2981207131@qq.com>",
|
"author": "lin-xin <2981207131@qq.com>",
|
||||||
"private": true,
|
"private": true,
|
||||||
|
@ -12,7 +12,7 @@
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"axios": "^0.15.3",
|
"axios": "^0.15.3",
|
||||||
"babel-polyfill": "^6.23.0",
|
"babel-polyfill": "^6.23.0",
|
||||||
"element-ui": "2.3.3",
|
"element-ui": "^2.4.5",
|
||||||
"mavon-editor": "^2.5.4",
|
"mavon-editor": "^2.5.4",
|
||||||
"vue": "^2.5.16",
|
"vue": "^2.5.16",
|
||||||
"vue-cropperjs": "^2.2.0",
|
"vue-cropperjs": "^2.2.0",
|
||||||
|
|
|
@ -8,9 +8,17 @@
|
||||||
<template slot="title">
|
<template slot="title">
|
||||||
<i :class="item.icon"></i><span slot="title">{{ item.title }}</span>
|
<i :class="item.icon"></i><span slot="title">{{ item.title }}</span>
|
||||||
</template>
|
</template>
|
||||||
<el-menu-item v-for="(subItem,i) in item.subs" :key="i" :index="subItem.index">
|
<template v-for="subItem in item.subs">
|
||||||
|
<el-submenu v-if="subItem.subs" :index="subItem.index" :key="subItem.index">
|
||||||
|
<template slot="title">{{ subItem.title }}</template>
|
||||||
|
<el-menu-item v-for="(threeItem,i) in subItem.subs" :key="i" :index="threeItem.index">
|
||||||
|
{{ threeItem.title }}
|
||||||
|
</el-menu-item>
|
||||||
|
</el-submenu>
|
||||||
|
<el-menu-item v-else :index="subItem.index" :key="subItem.index">
|
||||||
{{ subItem.title }}
|
{{ subItem.title }}
|
||||||
</el-menu-item>
|
</el-menu-item>
|
||||||
|
</template>
|
||||||
</el-submenu>
|
</el-submenu>
|
||||||
</template>
|
</template>
|
||||||
<template v-else>
|
<template v-else>
|
||||||
|
@ -54,6 +62,10 @@
|
||||||
index: 'form',
|
index: 'form',
|
||||||
title: '基本表单'
|
title: '基本表单'
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
index: '3-2',
|
||||||
|
title: '编辑器',
|
||||||
|
subs: [
|
||||||
{
|
{
|
||||||
index: 'editor',
|
index: 'editor',
|
||||||
title: '富文本编辑器'
|
title: '富文本编辑器'
|
||||||
|
@ -62,6 +74,8 @@
|
||||||
index: 'markdown',
|
index: 'markdown',
|
||||||
title: 'markdown编辑器'
|
title: 'markdown编辑器'
|
||||||
},
|
},
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
index: 'upload',
|
index: 'upload',
|
||||||
title: '文件上传'
|
title: '文件上传'
|
||||||
|
|
|
@ -61,11 +61,16 @@
|
||||||
const isExist = this.tagsList.some(item => {
|
const isExist = this.tagsList.some(item => {
|
||||||
return item.path === route.fullPath;
|
return item.path === route.fullPath;
|
||||||
})
|
})
|
||||||
!isExist && this.tagsList.push({
|
if(!isExist){
|
||||||
|
if(this.tagsList.length >= 8){
|
||||||
|
this.tagsList.shift();
|
||||||
|
}
|
||||||
|
this.tagsList.push({
|
||||||
title: route.meta.title,
|
title: route.meta.title,
|
||||||
path: route.fullPath,
|
path: route.fullPath,
|
||||||
name: route.matched[1].components.default.name
|
name: route.matched[1].components.default.name
|
||||||
})
|
})
|
||||||
|
}
|
||||||
bus.$emit('tags', this.tagsList);
|
bus.$emit('tags', this.tagsList);
|
||||||
},
|
},
|
||||||
handleTags(command){
|
handleTags(command){
|
||||||
|
@ -97,6 +102,7 @@
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
padding-right: 120px;
|
padding-right: 120px;
|
||||||
|
box-shadow: 0 5px 10px #ddd;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tags ul {
|
.tags ul {
|
||||||
|
|
|
@ -26,7 +26,6 @@ a {
|
||||||
right: 0;
|
right: 0;
|
||||||
top: 70px;
|
top: 70px;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
overflow-y: scroll;
|
|
||||||
-webkit-transition: left .3s ease-in-out;
|
-webkit-transition: left .3s ease-in-out;
|
||||||
transition: left .3s ease-in-out;
|
transition: left .3s ease-in-out;
|
||||||
background: #f0f0f0;
|
background: #f0f0f0;
|
||||||
|
@ -34,7 +33,10 @@ a {
|
||||||
|
|
||||||
.content {
|
.content {
|
||||||
width: auto;
|
width: auto;
|
||||||
|
height: 100%;
|
||||||
padding: 40px;
|
padding: 40px;
|
||||||
|
overflow-y: scroll;
|
||||||
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
|
|
||||||
.content-collapse {
|
.content-collapse {
|
||||||
|
|
Loading…
Reference in New Issue