Home.vue 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269
  1. <template>
  2. <el-row class="container">
  3. <el-col :span="24" class="header">
  4. <el-col :span="10" class="logo" :class="collapsed?'logo-collapse-width':'logo-width'">
  5. {{collapsed?'':sysName}}
  6. </el-col>
  7. <el-col :span="10">
  8. <div class="tools" @click.prevent="collapse">
  9. <i class="fa fa-align-justify"></i>
  10. </div>
  11. </el-col>
  12. <el-col :span="4" class="userinfo">
  13. <el-dropdown trigger="hover">
  14. <span class="el-dropdown-link userinfo-inner"><img src="../assets/image/userHead.jpg" /> {{sysUserName}}</span>
  15. <el-dropdown-menu slot="dropdown">
  16. <el-dropdown-item>修改密码</el-dropdown-item>
  17. <el-dropdown-item divided @click.native="logout">退出登录</el-dropdown-item>
  18. </el-dropdown-menu>
  19. </el-dropdown>
  20. </el-col>
  21. </el-col>
  22. <el-col :span="24" class="main">
  23. <aside :class="collapsed?'menu-collapsed':'menu-expanded'">
  24. <!--导航菜单-->
  25. <el-menu :default-active="$route.path" class="el-menu-vertical-demo" @open="handleopen" @close="handleclose" @select="handleselect" unique-opened router v-if="!collapsed">
  26. <template v-for="(item,index) in $router.options.routes" v-if="!item.hidden">
  27. <el-submenu :index="index+''" v-if="!item.leaf">
  28. <template slot="title"><i :class="item.iconCls"></i><span class="itemName">{{item.name}}</span></template>
  29. <el-menu-item v-for="child in item.children" :index="child.path" :key="child.path" v-if="!child.hidden">{{child.name}}</el-menu-item>
  30. </el-submenu>
  31. <el-menu-item v-if="item.leaf&&item.children.length>0" :index="item.children[0].path"><i :class="item.iconCls"></i>{{item.children[0].name}}</el-menu-item>
  32. </template>
  33. </el-menu>
  34. <!--导航菜单-折叠后-->
  35. <ul class="el-menu el-menu-vertical-demo collapsed" v-if="collapsed" ref="menuCollapsed">
  36. <li v-for="(item,index) in $router.options.routes" v-if="!item.hidden" class="el-submenu item" :style="{overflow:!item.leaf?'':'hidden'}">
  37. <template v-if="!item.leaf">
  38. <div class="el-submenu__title" style="padding-left: 20px;" @mouseover="showMenu(index,true)" @mouseout="showMenu(index,false)"><i :class="item.iconCls"></i></div>
  39. <ul class="el-menu submenu" :class="'submenu-hook-'+index" @mouseover="showMenu(index,true)" @mouseout="showMenu(index,false)">
  40. <li v-for="child in item.children" v-if="!child.hidden" :key="child.path" class="el-menu-item" style="padding-left: 40px;" :class="$route.path==child.path?'is-active':''" @click="$router.push(child.path)">{{child.name}}</li>
  41. </ul>
  42. </template>
  43. <template v-else>
  44. <li class="el-submenu">
  45. <div class="el-submenu__title el-menu-item" style="padding-left: 20px;height: 56px;line-height: 56px;padding: 0 20px;" :class="$route.path==item.children[0].path?'is-active':''" @click="$router.push(item.children[0].path)"><i :class="item.iconCls"></i></div>
  46. </li>
  47. </template>
  48. </li>
  49. </ul>
  50. </aside>
  51. <section class="content-container">
  52. <div class="grid-content bg-purple-light">
  53. <!-- <el-col :span="24" class="breadcrumb-container">
  54. <strong class="title">{{$route.name}}</strong>
  55. <el-breadcrumb separator="/" class="breadcrumb-inner">
  56. <el-breadcrumb-item v-for="item in $route.matched" :key="item.path">
  57. {{ item.name }}
  58. </el-breadcrumb-item>
  59. </el-breadcrumb>
  60. </el-col> -->
  61. <el-col :span="24" class="content-wrapper">
  62. <transition name="fade" mode="out-in">
  63. <router-view></router-view></router-view>
  64. </transition>
  65. </el-col>
  66. </div>
  67. </section>
  68. </el-col>
  69. </el-row>
  70. </template>
  71. <script>
  72. export default {
  73. data() {
  74. return {
  75. sysName:'云塑网后台管理系统',
  76. collapsed:false,
  77. sysUserName: '',
  78. form: {
  79. name: '',
  80. region: '',
  81. date1: '',
  82. date2: '',
  83. delivery: false,
  84. type: [],
  85. resource: '',
  86. desc: ''
  87. }
  88. }
  89. },
  90. methods: {
  91. onSubmit() {
  92. console.log('submit!');
  93. },
  94. handleopen() {
  95. //console.log('handleopen');
  96. },
  97. handleclose() {
  98. //console.log('handleclose');
  99. },
  100. handleselect: function (a, b) {
  101. },
  102. //退出登录
  103. logout: function () {
  104. var _this = this;
  105. this.$confirm('确认退出吗?', '提示', {
  106. //type: 'warning'
  107. }).then(() => {
  108. sessionStorage.removeItem('user');
  109. _this.$router.push('/login');
  110. }).catch(() => {
  111. });
  112. },
  113. //折叠导航栏
  114. collapse:function(){
  115. this.collapsed=!this.collapsed;
  116. },
  117. showMenu(i,status){
  118. this.$refs.menuCollapsed.getElementsByClassName('submenu-hook-'+i)[0].style.display=status?'block':'none';
  119. }
  120. },
  121. mounted() {
  122. var user = sessionStorage.getItem('user');
  123. if (user) {
  124. user = JSON.parse(user);
  125. this.sysUserName = user.name || '';
  126. }
  127. }
  128. }
  129. </script>
  130. <style scoped lang="scss">
  131. @import '~scss_vars';
  132. .el-menu-vertical-demo i {
  133. margin-right: 10px;
  134. }
  135. .container {
  136. position: absolute;
  137. top: 0px;
  138. bottom: 0px;
  139. width: 100%;
  140. .header {
  141. height: 60px;
  142. line-height: 60px;
  143. background: $color-primary;
  144. color:#fff;
  145. .userinfo {
  146. text-align: right;
  147. padding-right: 35px;
  148. float: right;
  149. .userinfo-inner {
  150. cursor: pointer;
  151. color:#fff;
  152. img {
  153. width: 40px;
  154. height: 40px;
  155. border-radius: 20px;
  156. margin: 10px 10px 10px 10px;
  157. // float: right;
  158. float: left;
  159. }
  160. }
  161. }
  162. .logo {
  163. //width:230px;
  164. height:60px;
  165. font-size: 21px;
  166. padding-left:20px;
  167. padding-right:20px;
  168. border-color: rgba(238,241,146,0.3);
  169. border-right-width: 1px;
  170. border-right-style: solid;
  171. img {
  172. width: 40px;
  173. float: left;
  174. margin: 10px 10px 10px 18px;
  175. }
  176. .txt {
  177. color:#fff;
  178. }
  179. }
  180. .logo-width{
  181. width:230px;
  182. }
  183. .logo-collapse-width{
  184. width:60px
  185. }
  186. .tools{
  187. padding: 0px 23px;
  188. width:14px;
  189. height: 60px;
  190. line-height: 60px;
  191. cursor: pointer;
  192. }
  193. }
  194. .main {
  195. display: flex;
  196. // background: #324057;
  197. position: absolute;
  198. top: 60px;
  199. bottom: 0px;
  200. overflow: hidden;
  201. aside {
  202. flex:0 0 230px;
  203. width: 230px;
  204. // position: absolute;
  205. // top: 0px;
  206. // bottom: 0px;
  207. .el-menu{
  208. height: 100%;
  209. }
  210. .collapsed{
  211. width:60px;
  212. .item{
  213. position: relative;
  214. }
  215. .submenu{
  216. position:absolute;
  217. top:0px;
  218. left:60px;
  219. z-index:99999;
  220. height:auto;
  221. display:none;
  222. }
  223. }
  224. }
  225. .menu-collapsed{
  226. flex:0 0 60px;
  227. width: 60px;
  228. }
  229. .menu-expanded{
  230. flex:0 0 230px;
  231. width: 230px;
  232. }
  233. .content-container {
  234. // background: #f8f8f8;
  235. //f1f2f7
  236. flex:1;
  237. // position: absolute;
  238. // right: 0px;
  239. // top: 0px;
  240. // bottom: 0px;
  241. // left: 230px;
  242. // overflow-y: scroll;
  243. padding: 20px;
  244. .breadcrumb-container {
  245. //margin-bottom: 15px;
  246. .title {
  247. width: 200px;
  248. float: left;
  249. color: #475669;
  250. }
  251. .breadcrumb-inner {
  252. float: right;
  253. }
  254. }
  255. .content-wrapper {
  256. background-color: #fff;
  257. box-sizing: border-box;
  258. }
  259. }
  260. }
  261. }
  262. </style>