refine code && document
This commit is contained in:
parent
f82ec2d5d7
commit
bd607b4728
|
@ -8,11 +8,9 @@
|
||||||
**注意:该项目目前使用element-ui@1.3.3版本,所以最低兼容 Vue 2.3.0**
|
**注意:该项目目前使用element-ui@1.3.3版本,所以最低兼容 Vue 2.3.0**
|
||||||
|
|
||||||
## 前言
|
## 前言
|
||||||
> 这半年来一直在用vue写管理后台,目前后台已经有七十多个页面,十几种权限,但维护成本依然很低,所以准备开源分享一下后台开发的经验和成果。目前的技术栈主要的采用vue+element+axios.由于是个人项目,所以数据请求都是用了mockjs模拟。注意:在次项目基础上改造开发时请移除mock文件。
|
> 这半年来一直在用vue写管理后台,目前后台已经有百来个个页面,十几种权限,但维护成本依然很低,所以准备开源分享一下后台开发的经验和成果。目前的技术栈主要的采用vue+element+axios由webpack2打包.由于是个人项目,所以数据请求都是用了mockjs模拟。注意:在次项目基础上改造开发时请移除mock文件。
|
||||||
|
|
||||||
后续会出一系列的教程配套文章,如如何从零构建后台项目框架,如何做完整的用户系统(如权限验证,二次登录等),如何二次开发组件(如富文本),如何整合七牛等等文章,各种后台开发经验等等。莫急~~
|
写了一个系列的教程配套文章,如何从零构建后一个完整的后台项目:
|
||||||
|
|
||||||
相应需求,开了一个qq群 591724180 方便大家交流
|
|
||||||
|
|
||||||
- [wiki](https://github.com/PanJiaChen/vue-element-admin/wiki)
|
- [wiki](https://github.com/PanJiaChen/vue-element-admin/wiki)
|
||||||
- [手摸手,带你用 vue 撸后台 系列一(基础篇)](https://juejin.im/post/59097cd7a22b9d0065fb61d2)
|
- [手摸手,带你用 vue 撸后台 系列一(基础篇)](https://juejin.im/post/59097cd7a22b9d0065fb61d2)
|
||||||
|
@ -20,6 +18,8 @@
|
||||||
- [手摸手,带你用 vue 撸后台 系列三 (实战篇)](https://juejin.im/post/593121aa0ce4630057f70d35)
|
- [手摸手,带你用 vue 撸后台 系列三 (实战篇)](https://juejin.im/post/593121aa0ce4630057f70d35)
|
||||||
- [手摸手,带你封装一个vue component](https://segmentfault.com/a/1190000009090836)
|
- [手摸手,带你封装一个vue component](https://segmentfault.com/a/1190000009090836)
|
||||||
|
|
||||||
|
相应需求,开了一个qq群 591724180 方便大家交流
|
||||||
|
|
||||||
**如有问题请先看上述文章和Wiki,若不能满足,欢迎issue和pr~**
|
**如有问题请先看上述文章和Wiki,若不能满足,欢迎issue和pr~**
|
||||||
|
|
||||||
**该项目并不是一个脚手架,更倾向于是一个集成解决方案方案**
|
**该项目并不是一个脚手架,更倾向于是一个集成解决方案方案**
|
||||||
|
@ -47,6 +47,7 @@
|
||||||
- table example
|
- table example
|
||||||
- 动态table example
|
- 动态table example
|
||||||
- 拖拽table example
|
- 拖拽table example
|
||||||
|
- 内联编辑table example
|
||||||
- form example
|
- form example
|
||||||
- 多环境发布
|
- 多环境发布
|
||||||
- dashboard
|
- dashboard
|
||||||
|
|
|
@ -51,7 +51,6 @@
|
||||||
backgroundColor: '#344b58',
|
backgroundColor: '#344b58',
|
||||||
title: {
|
title: {
|
||||||
text: '统计',
|
text: '统计',
|
||||||
subtext: 'from http://gallery.echartsjs.com',
|
|
||||||
x: '4%',
|
x: '4%',
|
||||||
textStyle: {
|
textStyle: {
|
||||||
color: '#fff',
|
color: '#fff',
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="components-container" >
|
<div class="components-container" >
|
||||||
<code>
|
<code>
|
||||||
这里的所有的图表都基于echarts,实例代码来源<a href='http://gallery.echartsjs.com/explore.html#sort=rank~timeframe=all~author=all' target='_blank'>gallery</a><br/>其实echarts封装的很好了,用vue封装是很简单的事情,建议大家自己来封装。
|
这里的所有的图表都基于ECharts,实例代码来源<a href='http://gallery.echartsjs.com/explore.html#sort=rank~timeframe=all~author=all' target='_blank'>gallery</a><br/>其实ECharts封装的很好了,用vue封装是很简单的事情,建议大家自己来封装。<a target='_blank' class='lin' href="https://segmentfault.com/a/1190000009762198#articleHeader16">相关教程</a>
|
||||||
</code>
|
</code>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -3,12 +3,11 @@
|
||||||
<div class='chart-container'>
|
<div class='chart-container'>
|
||||||
<keyboardChart height='100%' width='100%' />
|
<keyboardChart height='100%' width='100%' />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import keyboardChart from 'components/Charts/keyboard';
|
import keyboardChart from 'components/Charts/keyboard';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: { keyboardChart }
|
components: { keyboardChart }
|
||||||
};
|
};
|
||||||
|
|
|
@ -3,12 +3,11 @@
|
||||||
<div class='chart-container'>
|
<div class='chart-container'>
|
||||||
<keyboardChart2 id='apple' height='100%' width='100%' />
|
<keyboardChart2 id='apple' height='100%' width='100%' />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import keyboardChart2 from 'components/Charts/keyboard2';
|
import keyboardChart2 from 'components/Charts/keyboard2';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: { keyboardChart2 }
|
components: { keyboardChart2 }
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,16 +1,13 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="components-container" style='height:100vh'>
|
<div class="components-container" style='height:100vh'>
|
||||||
https://github.com/ecomfe/echarts/blob/master/index.js
|
|
||||||
http://echarts.baidu.com/tutorial.html
|
|
||||||
<div class='chart-container'>
|
<div class='chart-container'>
|
||||||
<lineMarker height='100%' width='100%' />
|
<lineMarker height='100%' width='100%' />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import lineMarker from 'components/Charts/lineMarker';
|
import lineMarker from 'components/Charts/lineMarker';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: { lineMarker }
|
components: { lineMarker }
|
||||||
};
|
};
|
||||||
|
|
|
@ -3,12 +3,11 @@
|
||||||
<div class='chart-container'>
|
<div class='chart-container'>
|
||||||
<mixchart id='apple' height='100%' width='100%' />
|
<mixchart id='apple' height='100%' width='100%' />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import mixchart from 'components/Charts/mixchart';
|
import mixchart from 'components/Charts/mixchart';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: { mixchart }
|
components: { mixchart }
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="components-container">
|
<div class="components-container">
|
||||||
<code>countTo 组件 <a href='https://github.com/PanJiaChen/vue-countTo' target='_blank'>线上地址</a></code>
|
<code> <a href='https://github.com/PanJiaChen/vue-countTo' target='_blank'>countTo component</a></code>
|
||||||
|
|
||||||
<count-to ref='example' class='example' :start-val='_startVal' :end-val='_endVal' :duration='_duration' :decimals='_decimals'
|
<count-to ref='example' class='example' :start-val='_startVal' :end-val='_endVal' :duration='_duration' :decimals='_decimals'
|
||||||
:separator='_separator' :prefix='_prefix' :suffix='_suffix' :autoplay='false' />
|
:separator='_separator' :prefix='_prefix' :suffix='_suffix' :autoplay='false' />
|
||||||
|
@ -20,9 +20,9 @@
|
||||||
:separator='{{_separator}}' :prefix='{{_prefix}}' :suffix='{{_suffix}}' :autoplay=false></code>
|
:separator='{{_separator}}' :prefix='{{_prefix}}' :suffix='{{_suffix}}' :autoplay=false></code>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import countTo from 'vue-count-to';
|
import countTo from 'vue-count-to';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: { countTo },
|
components: { countTo },
|
||||||
data() {
|
data() {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="components-container">
|
<div class="components-container">
|
||||||
<code>拖拽https://github.com/SortableJS/Vue.Draggable 项目:Vue.Draggable</code>
|
<code>drag-list base on <a href="https://github.com/SortableJS/Vue.Draggable" target="_blank">Vue.Draggable</a></code>
|
||||||
<div class="editor-container">
|
<div class="editor-container">
|
||||||
<DndList :list1="list1" :list2="list2" list1Title="头条列表" list2Title="文章池" />
|
<DndList :list1="list1" :list2="list2" list1Title="头条列表" list2Title="文章池" />
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="components-container">
|
<div class="components-container">
|
||||||
<code>这里暂时列出了自己在项目中自己封装和用到的组件,如有补充可以提<a href='https://github.com/PanJiaChen/vue-element-admin/issues' target='_blank'>issue</a><br/>
|
<code>这里暂时列出了自己在项目中用到的组件和一些自己封装的组件,如有补充可以提<a target='_blank' href='https://github.com/PanJiaChen/vue-element-admin/issues'> issue </a><br/>
|
||||||
我个人崇尚自己封装组件,因为很多组件会和业务后高度的耦合,很多时候第三方封装是满足不了需求的,如有需要可以看楼主之前写过的一篇<a href='https://segmentfault.com/a/1190000009090836' target='_blank'>文章</a>
|
我个人崇尚自己封装组件,因为很多组件会和业务后高度的耦合,而且第三方封装的组件灵活性可控性都不高,如有需要可以看楼主之前写过的一篇<a href='https://segmentfault.com/a/1190000009090836' target='_blank'>文章</a>
|
||||||
</code>
|
</code>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -1,11 +1,12 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="components-container" style='height:100vh'>
|
<div class="components-container" style='height:100vh'>
|
||||||
<code>有校验</code>
|
<code>jsonEditor is base on <a href="https://github.com/codemirror/CodeMirror" target="_blank">CodeMirrorr</a>,lint base on json-lint </code>
|
||||||
<div class="editor-container">
|
<div class="editor-container">
|
||||||
<json-editor ref="jsonEditor" v-model="value"></json-editor>
|
<json-editor ref="jsonEditor" v-model="value"></json-editor>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import jsonEditor from 'components/jsonEditor';
|
import jsonEditor from 'components/jsonEditor';
|
||||||
const jsonData = '[{"items":[{"market_type":"forexdata","symbol":"XAUUSD"},{"market_type":"forexdata","symbol":"UKOIL"},{"market_type":"forexdata","symbol":"CORN"}],"name":""},{"items":[{"market_type":"forexdata","symbol":"XAUUSD"},{"market_type":"forexdata","symbol":"XAGUSD"},{"market_type":"forexdata","symbol":"AUTD"},{"market_type":"forexdata","symbol":"AGTD"}],"name":"贵金属"},{"items":[{"market_type":"forexdata","symbol":"CORN"},{"market_type":"forexdata","symbol":"WHEAT"},{"market_type":"forexdata","symbol":"SOYBEAN"},{"market_type":"forexdata","symbol":"SUGAR"}],"name":"农产品"},{"items":[{"market_type":"forexdata","symbol":"UKOIL"},{"market_type":"forexdata","symbol":"USOIL"},{"market_type":"forexdata","symbol":"NGAS"}],"name":"能源化工"}]';
|
const jsonData = '[{"items":[{"market_type":"forexdata","symbol":"XAUUSD"},{"market_type":"forexdata","symbol":"UKOIL"},{"market_type":"forexdata","symbol":"CORN"}],"name":""},{"items":[{"market_type":"forexdata","symbol":"XAUUSD"},{"market_type":"forexdata","symbol":"XAGUSD"},{"market_type":"forexdata","symbol":"AUTD"},{"market_type":"forexdata","symbol":"AGTD"}],"name":"贵金属"},{"items":[{"market_type":"forexdata","symbol":"CORN"},{"market_type":"forexdata","symbol":"WHEAT"},{"market_type":"forexdata","symbol":"SOYBEAN"},{"market_type":"forexdata","symbol":"SUGAR"}],"name":"农产品"},{"items":[{"market_type":"forexdata","symbol":"UKOIL"},{"market_type":"forexdata","symbol":"USOIL"},{"market_type":"forexdata","symbol":"NGAS"}],"name":"能源化工"}]';
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="components-container">
|
<div class="components-container">
|
||||||
<code>公司做的后台主要是一个cms系统,公司也是以自媒体为核心的,所以富文本是后台很核心的功能。在选择富文本的过程中也走了不少的弯路,市面上常见的富文本都基本用过了,最终选择了tinymce</code>
|
<code>Markdown 我们这里选用了 <a href="https://github.com/sparksuite/simplemde-markdown-editor" target="_blank">simplemde-markdown-editor</a> ,简单的用vue封装了一下<a target='_blank' href='https://segmentfault.com/a/1190000009762198#articleHeader14'> 相关文章 </a></code>
|
||||||
<div class="editor-container">
|
<div class="editor-container">
|
||||||
<MdEditor id='contentEditor' ref="contentEditor" v-model='content' :height="300" :zIndex='20'></MdEditor>
|
<MdEditor id='contentEditor' ref="contentEditor" v-model='content' :height="300" :zIndex='20'></MdEditor>
|
||||||
</div>
|
</div>
|
||||||
|
@ -8,14 +8,14 @@
|
||||||
<div v-html="html"></div>
|
<div v-html="html"></div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import MdEditor from 'components/MdEditor';
|
import MdEditor from 'components/MdEditor';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: { MdEditor },
|
components: { MdEditor },
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
content: 'Simplemde',
|
content: '## Simplemde',
|
||||||
html: ''
|
html: ''
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,26 +1,19 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="errPage-container">
|
<div class="errPage-container">
|
||||||
<!--error code-->
|
|
||||||
<err-code/>
|
<err-code/>
|
||||||
<!--error code-->
|
|
||||||
<h3>请点击右上角bug小图表</h3>
|
<h3>请点击右上角bug小图表</h3>
|
||||||
<code>
|
<code>
|
||||||
现在的管理后台基本都是spa的形式了,它增强了用户体验,但同时也会怎增加页面出问题的可能性,可能一个小小的疏忽就导致整个页面的死锁。好在Vue官网提供了一个方法来捕获处理异常
|
现在的管理后台基本都是spa的形式了,它增强了用户体验,但同时也会怎增加页面出问题的可能性,可能一个小小的疏忽就导致整个页面的死锁。好在Vue官网提供了一个方法来捕获处理异常
|
||||||
</code>
|
</code>
|
||||||
<a href="#"><img src='../../../documentImg/code1.png'></a>
|
<a href="#"><img src='../../../documentImg/code1.png'></a>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import errCode from './errcode';
|
import errCode from './errcode';
|
||||||
// import code1Img from
|
|
||||||
export default {
|
export default {
|
||||||
components: { errCode },
|
components: { errCode },
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
|
|
||||||
}
|
|
||||||
},
|
|
||||||
methods: {
|
methods: {
|
||||||
back() {
|
back() {
|
||||||
this.$router.go(-1)
|
this.$router.go(-1)
|
||||||
|
@ -28,6 +21,7 @@
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
.errPage-container{
|
.errPage-container{
|
||||||
padding: 30px;
|
padding: 30px;
|
||||||
|
|
|
@ -26,9 +26,9 @@
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import errGif from 'assets/401.gif';
|
import errGif from 'assets/401.gif';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
@ -61,7 +61,7 @@
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
.pan-img{
|
.pan-img {
|
||||||
display: block;
|
display: block;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
computed: {
|
computed: {
|
||||||
|
@ -26,6 +27,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style rel="stylesheet/scss" lang="scss" scoped>
|
<style rel="stylesheet/scss" lang="scss" scoped>
|
||||||
.wscn-http404 {
|
.wscn-http404 {
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
|
@ -18,10 +18,9 @@
|
||||||
</el-table>
|
</el-table>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
export default {
|
||||||
|
|
||||||
export default {
|
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
tableData: [{
|
tableData: [{
|
||||||
|
@ -34,6 +33,6 @@ export default {
|
||||||
formThead: ['apple', 'banana']
|
formThead: ['apple', 'banana']
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
@ -58,7 +58,6 @@
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
|
|
||||||
<el-table-column width="80px" label="重要性">
|
<el-table-column width="80px" label="重要性">
|
||||||
<template scope="scope">
|
<template scope="scope">
|
||||||
<wscn-icon-svg v-for="n in +scope.row.importance" icon-class="wujiaoxing" class="meta-item__icon" :key="n" />
|
<wscn-icon-svg v-for="n in +scope.row.importance" icon-class="wujiaoxing" class="meta-item__icon" :key="n" />
|
||||||
|
@ -91,8 +90,8 @@
|
||||||
</el-table>
|
</el-table>
|
||||||
|
|
||||||
<div v-show="!listLoading" class="pagination-container">
|
<div v-show="!listLoading" class="pagination-container">
|
||||||
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page.sync="listQuery.page" :page-sizes="[10,20,30, 50]"
|
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page.sync="listQuery.page"
|
||||||
:page-size="listQuery.limit" layout="total, sizes, prev, pager, next, jumper" :total="total">
|
:page-sizes="[10,20,30, 50]" :page-size="listQuery.limit" layout="total, sizes, prev, pager, next, jumper" :total="total">
|
||||||
</el-pagination>
|
</el-pagination>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -145,7 +144,7 @@
|
||||||
<span slot="footer" class="dialog-footer">
|
<span slot="footer" class="dialog-footer">
|
||||||
<el-button type="primary" @click="dialogPvVisible = false">确 定</el-button>
|
<el-button type="primary" @click="dialogPvVisible = false">确 定</el-button>
|
||||||
</span>
|
</span>
|
||||||
</el-dialog >
|
</el-dialog>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -32,6 +32,7 @@
|
||||||
</el-table>
|
</el-table>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { getList } from 'api/article';
|
import { getList } from 'api/article';
|
||||||
export default {
|
export default {
|
||||||
|
|
|
@ -11,9 +11,7 @@
|
||||||
name: 'AppMain',
|
name: 'AppMain',
|
||||||
computed: {
|
computed: {
|
||||||
key() {
|
key() {
|
||||||
return this.$route.name !== undefined
|
return this.$route.name !== undefined ? this.$route.name + +new Date() : this.$route + +new Date()
|
||||||
? this.$route.name + +new Date()
|
|
||||||
: this.$route + +new Date()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="app-wrapper" :class="{hideSidebar:!sidebar.opened}">
|
<div class="app-wrapper" :class="{hideSidebar:!sidebar.opened}">
|
||||||
<div class="sidebar-wrapper">
|
<div class="sidebar-wrapper">
|
||||||
<Sidebar class="sidebar-container"/>
|
<Sidebar class="sidebar-container" />
|
||||||
</div>
|
</div>
|
||||||
<div class="main-container">
|
<div class="main-container">
|
||||||
<Navbar/>
|
<Navbar/>
|
||||||
|
@ -27,9 +27,9 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style rel="stylesheet/scss" lang="scss" scoped>
|
<style rel="stylesheet/scss" lang="scss" scoped>
|
||||||
@import "src/styles/mixin.scss";
|
@import "src/styles/mixin.scss";
|
||||||
|
|
||||||
.app-wrapper {
|
.app-wrapper {
|
||||||
@include clearfix;
|
@include clearfix;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
|
@ -34,6 +34,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style rel="stylesheet/scss" lang="scss" scoped>
|
<style rel="stylesheet/scss" lang="scss" scoped>
|
||||||
.app-levelbar.el-breadcrumb {
|
.app-levelbar.el-breadcrumb {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<el-dropdown class="avatar-container" trigger="click">
|
<el-dropdown class="avatar-container" trigger="click">
|
||||||
<div class="avatar-wrapper">
|
<div class="avatar-wrapper">
|
||||||
<img class="user-avatar" :src="avatar+'?imageView2/1/w/80/h/80'">
|
<img class="user-avatar" :src="avatar+'?imageView2/1/w/80/h/80'">
|
||||||
<i class="el-icon-caret-bottom"/>
|
<i class="el-icon-caret-bottom" />
|
||||||
</div>
|
</div>
|
||||||
<el-dropdown-menu class="user-dropdown" slot="dropdown">
|
<el-dropdown-menu class="user-dropdown" slot="dropdown">
|
||||||
<router-link class='inlineBlock' to="/">
|
<router-link class='inlineBlock' to="/">
|
||||||
|
@ -62,6 +62,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style rel="stylesheet/scss" lang="scss" scoped>
|
<style rel="stylesheet/scss" lang="scss" scoped>
|
||||||
.navbar {
|
.navbar {
|
||||||
height: 50px;
|
height: 50px;
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style rel="stylesheet/scss" lang="scss" scoped>
|
<style rel="stylesheet/scss" lang="scss" scoped>
|
||||||
.el-menu {
|
.el-menu {
|
||||||
min-height: 100%;
|
min-height: 100%;
|
||||||
|
|
|
@ -34,6 +34,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style rel="stylesheet/scss" lang="scss" scoped>
|
<style rel="stylesheet/scss" lang="scss" scoped>
|
||||||
.wscn-icon {
|
.wscn-icon {
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
|
|
|
@ -76,17 +76,17 @@ export default {
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
.box-card{
|
.box-card{
|
||||||
width: 400px;
|
width: 400px;
|
||||||
margin: 20px auto;
|
margin: 20px auto;
|
||||||
}
|
}
|
||||||
.block{
|
.block{
|
||||||
padding: 30px 24px;
|
padding: 30px 24px;
|
||||||
}
|
}
|
||||||
.alert-item{
|
.alert-item{
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
}
|
}
|
||||||
.tag-item{
|
.tag-item{
|
||||||
margin-right: 15px;
|
margin-right: 15px;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
Loading…
Reference in New Issue