index.vue 9.0 KB
Newer Older
Mr.奇淼('s avatar
Mr.奇淼( 已提交
1
<template>
L
liuyang 已提交
2
  <el-container class="layout-cont">
J
导航  
jinlan.du 已提交
3
    <el-container :class="[isSider?'openside':'hideside',isMobile ? 'mobile': '']">
L
liuyang 已提交
4
      <el-row :class="[isShadowBg?'shadowBg':'']" @click.native="changeShadow()"></el-row>
Mr.奇淼('s avatar
Mr.奇淼( 已提交
5
      <el-aside class="main-cont main-left">
6 7 8 9
        <div class="tilte">
          <img alt class="logoimg" src="~@/assets/nav_logo.png" />
          <h2 class="tit-text" v-if="isSider">Gin-Vue-Admin</h2>
        </div>
10
        <Aside class="aside" />
Mr.奇淼('s avatar
Mr.奇淼( 已提交
11
      </el-aside>
12
      <!-- 分块滑动功能 -->
Mr.奇淼('s avatar
Mr.奇淼( 已提交
13
      <el-main class="main-cont main-right">
Mr.奇淼('s avatar
Mr.奇淼( 已提交
14
        <transition :duration="{ enter: 800, leave: 100 }" mode="out-in" name="el-fade-in-linear">
Mr.奇淼('s avatar
Mr.奇淼( 已提交
15 16
          <div
            :style="{width: `calc(100% - ${isMobile?'0px':isCollapse?'54px':'220px'})`}"
17
            class="topfix"
Mr.奇淼('s avatar
Mr.奇淼( 已提交
18 19 20 21 22 23 24 25 26 27 28 29 30
          >
            <el-header class="header-cont">
              <div @click="totalCollapse" class="menu-total">
                <i class="el-icon-s-unfold" v-if="isCollapse"></i>
                <i class="el-icon-s-fold" v-else></i>
              </div>
              <el-breadcrumb class="breadcrumb" separator-class="el-icon-arrow-right">
                <el-breadcrumb-item
                  :key="item.path"
                  v-for="item in matched.slice(1,matched.length)"
                >{{item.meta.title}}</el-breadcrumb-item>
              </el-breadcrumb>
              <div class="fl-right right-box">
31
                <Search />
J
jinlan.du 已提交
32
                <Screenfull class="screenfull"></Screenfull>
Mr.奇淼('s avatar
Mr.奇淼( 已提交
33
                <el-dropdown>
34
                  <span class="header-avatar">
1
css  
1319612909 已提交
35
                   <CustomPic/>
36
                    <span style="margin-left: 5px">{{userInfo.nickName}}</span>
Mr.奇淼('s avatar
Mr.奇淼( 已提交
37
                    <i class="el-icon-arrow-down"></i>
Mr.奇淼('s avatar
Mr.奇淼( 已提交
38
                  </span>
Mr.奇淼('s avatar
Mr.奇淼( 已提交
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
                  <el-dropdown-menu class="dropdown-group" slot="dropdown">
                    <el-dropdown-item>
                      <span>
                        更多信息
                        <el-badge is-dot />
                      </span>
                    </el-dropdown-item>
                    <el-dropdown-item @click.native="toPerson" icon="el-icon-s-custom">个人信息</el-dropdown-item>
                    <el-dropdown-item @click.native="LoginOut" icon="el-icon-table-lamp">登 出</el-dropdown-item>
                  </el-dropdown-menu>
                </el-dropdown>
              </div>
            </el-header>
            <!-- 当前面包屑用路由自动生成可根据需求修改 -->
            <!--
            :to="{ path: item.path }" 暂时注释不用-->
            <HistoryComponent />
56 57 58 59
          </div>
        </transition>
        <transition mode="out-in" name="el-fade-in-linear">
          <keep-alive>
Mr.奇淼('s avatar
Mr.奇淼( 已提交
60
            <router-view  v-loading="loadingFlag"  element-loading-text="正在加载中" class="admin-box" v-if="$route.meta.keepAlive"></router-view>
61 62 63
          </keep-alive>
        </transition>
        <transition mode="out-in" name="el-fade-in-linear">
Mr.奇淼('s avatar
Mr.奇淼( 已提交
64
          <router-view  v-loading="loadingFlag"  element-loading-text="正在加载中" class="admin-box" v-if="!$route.meta.keepAlive"></router-view>
65
        </transition>
K
klausY 已提交
66
       <BottomInfo />
67 68
      </el-main>
    </el-container>
69
   
Mr.奇淼('s avatar
Mr.奇淼( 已提交
70
  </el-container>
Mr.奇淼('s avatar
Mr.奇淼( 已提交
71 72 73
</template>

<script>
74 75 76 77
import Aside from '@/view/layout/aside'
import HistoryComponent from '@/view/layout/aside/historyComponent/history'
import Screenfull from '@/view/layout/screenfull'
import Search from '@/view/layout/search/search'
K
klausY 已提交
78
import BottomInfo from '@/view/layout/bottomInfo/bottomInfo'
79
import { mapGetters, mapActions } from 'vuex'
80
import CustomPic from '@/components/customPic'
Mr.奇淼('s avatar
Mr.奇淼( 已提交
81
export default {
82
  name: 'Layout',
83 84
  data() {
    return {
85
      show: false,
J
导航  
jinlan.du 已提交
86 87 88
      isCollapse: false,
      isSider: true,
      isMobile: false,
L
liuyang 已提交
89
      isShadowBg: false,
Mr.奇淼('s avatar
Mr.奇淼( 已提交
90
      loadingFlag:false,
91
      
92 93
      value: ''
    }
Mr.奇淼('s avatar
Mr.奇淼( 已提交
94
  },
Mr.奇淼('s avatar
Mr.奇淼( 已提交
95
  components: {
Mr.奇淼('s avatar
Mr.奇淼( 已提交
96
    Aside,
J
jinlan.du 已提交
97
    HistoryComponent,
98
    Screenfull,
K
klausY 已提交
99
    Search,
100 101
    BottomInfo,
    CustomPic
J
导航  
jinlan.du 已提交
102
  },
103
  methods: {
104
    ...mapActions('user', ['LoginOut']),
105
    totalCollapse() {
106 107 108 109
      this.isCollapse = !this.isCollapse
      this.isSider = !this.isCollapse
      this.isShadowBg = !this.isCollapse
      this.$bus.emit('collapse', this.isCollapse)
110
    },
Mr.奇淼('s avatar
Mr.奇淼( 已提交
111
    toPerson() {
112
      this.$router.push({ name: 'person' })
J
导航  
jinlan.du 已提交
113
    },
L
liuyang 已提交
114
    changeShadow() {
115 116 117
      this.isShadowBg = !this.isShadowBg
      this.isSider = !!this.isCollapse
      this.totalCollapse()
L
liuyang 已提交
118
    },
119
  },
120
  computed: {
121
    ...mapGetters('user', ['userInfo']),
122
    title() {
123
      return this.$route.meta.title || '当前页面'
124
    },
125
    matched() {
126
      return this.$route.matched
127
    }
J
导航  
jinlan.du 已提交
128 129
  },
  mounted() {
130
    let screenWidth = document.body.clientWidth
Mr.奇淼('s avatar
Mr.奇淼( 已提交
131
    if (screenWidth < 1000) {
132 133 134
      this.isMobile = true
      this.isSider = false
      this.isCollapse = true
Mr.奇淼('s avatar
Mr.奇淼( 已提交
135
    } else if (screenWidth >= 1000 && screenWidth < 1200) {
136 137 138
      this.isMobile = false
      this.isSider = false
      this.isCollapse = true
Mr.奇淼('s avatar
Mr.奇淼( 已提交
139
    } else {
140 141 142
      this.isMobile = false
      this.isSider = true
      this.isCollapse = false
Mr.奇淼('s avatar
Mr.奇淼( 已提交
143
    }
144 145
    this.$bus.emit('collapse', this.isCollapse)
    this.$bus.emit('mobile', this.isMobile)
Mr.奇淼('s avatar
Mr.奇淼( 已提交
146 147 148 149 150 151
    this.$bus.on("showLoading",()=>{
      this.loadingFlag = true
    })
    this.$bus.on("closeLoading",()=>{
      this.loadingFlag = false
    })
L
liuyang 已提交
152 153
    window.onresize = () => {
      return (() => {
154
        let screenWidth = document.body.clientWidth
Mr.奇淼('s avatar
Mr.奇淼( 已提交
155
        if (screenWidth < 1000) {
156 157 158
          this.isMobile = true
          this.isSider = false
          this.isCollapse = true
Mr.奇淼('s avatar
Mr.奇淼( 已提交
159
        } else if (screenWidth >= 1000 && screenWidth < 1200) {
160 161 162
          this.isMobile = false
          this.isSider = false
          this.isCollapse = true
L
liuyang 已提交
163
        } else {
164 165 166
          this.isMobile = false
          this.isSider = true
          this.isCollapse = false
L
liuyang 已提交
167
        }
168 169 170 171
        this.$bus.emit('collapse', this.isCollapse)
        this.$bus.emit('mobile', this.isMobile)
      })()
    }
Mr.奇淼('s avatar
Mr.奇淼( 已提交
172
  }
173
}
Mr.奇淼('s avatar
Mr.奇淼( 已提交
174 175
</script>

Mr.奇淼('s avatar
Mr.奇淼( 已提交
176
<style lang="scss">
1
1319612909 已提交
177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205
// $headerHigh: 52px;
// $mainHight: 100vh;
// .dropdown-group {
//   min-width: 100px;
// }
// .topfix {
//   position: fixed;
//   top: 0;
//   box-sizing: border-box;
//   z-index: 999;
// }
// .admin-box {
//   min-height: calc(100vh - 240px);
//   background-color: rgb(255, 255, 255);
//   margin-top: 100px;
// }
// .el-scrollbar__wrap {
//   padding-bottom: 17px;
// }
// .layout-cont {
//   .right-box {
//     text-align: center;
//     vertical-align: middle;
//     img {
//       vertical-align: middle;
//       border: 1px solid #ccc;
//       border-radius: 6px;
//     }
//   }
206

1
1319612909 已提交
207 208 209 210 211 212 213 214 215 216 217 218 219 220
//   .header-cont {
//     height: $headerHigh !important;
//     background: #fff;
//     box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08);
//     line-height: $headerHigh;
//   }
//   .main-cont {
//     .breadcrumb {
//       line-height: 48px;
//       display: inline-block;
//       padding: 0 24px;
//       // padding: 6px;
//       // border-bottom: 1px solid #eee;
//     }
K
klausY 已提交
221

1
1319612909 已提交
222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313
//     &.el-main {
//       overflow: auto;
//       background: #fff;
//       // padding: 0px 10px;
//       // background: #fff;
//     }
//     height: $mainHight !important;
//     overflow: visible;
//     position: relative;
//     .menu-total {
//       // z-index: 5;
//       // position: absolute;
//       // top: 10px;
//       // right: -35px;
//       margin-left: -10px;
//       float: left;
//       margin-top: 10px;
//       width: 30px;
//       height: 30px;
//       line-height: 30px;
//       font-size: 30px;
//       // border: 0 solid #ffffff;
//       // border-radius: 50%;
//       // background: #fff;
//     }
//     .aside {
//       overflow: auto;
//       // background: #fff;
//       &::-webkit-scrollbar {
//         display: none;
//       }
//     }
//     .el-menu-vertical {
//       height: calc(100vh - 64px) !important;
//       visibility: auto;
//       &:not(.el-menu--collapse) {
//         width: 220px;
//       }
//     }
//     .el-menu--collapse {
//       width: 54px;
//       li {
//         .el-tooltip,
//         .el-submenu__title {
//           padding: 0px 15px !important;
//         }
//       }
//     }
//     &::-webkit-scrollbar {
//       display: none;
//     }
//     &.main-left {
//       width: auto !important;
//     }
//     &.main-right {
//       .admin-title {
//         float: left;
//         font-size: 16px;
//         vertical-align: middle;
//         margin-left: 20px;
//         img {
//           vertical-align: middle;
//         }
//         &.collapse {
//           width: 53px;
//         }
//       }
//     }
//   }
// }
// .tilte {
//   background: #001529;
//   min-height: 64px;
//   line-height: 64px;
//   background: #002140;
//   text-align: center;
//   .logoimg {
//     width: 30px;
//     height: 30px;
//     vertical-align: middle;
//     background: #fff;
//     border-radius: 50%;
//     padding: 3px;
//   }
//   .tit-text {
//     display: inline-block;
//     color: #fff;
//     font-weight: 600;
//     font-size: 20px;
//     vertical-align: middle;
//   }
// }
Mr.奇淼('s avatar
Mr.奇淼( 已提交
314

K
klausY 已提交
315

1
1319612909 已提交
316 317 318 319 320 321 322 323
// .screenfull {
//   display: inline-block;
// }
// .header-avatar{
// 	display: flex;
// 	justify-content: center;
// 	align-items: center;
// }
K
klausY 已提交
324
</style>