You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
219 lines
5.8 KiB
219 lines
5.8 KiB
<template>
|
|
<section>
|
|
<!-- <div class="module-item" v-for="(item,index) in topModules" :key="index">
|
|
<div class="module-text" @click="gotolink(item)" >
|
|
<div class="box-icon">
|
|
<img :src="item.icon" height="20px" />
|
|
</div>
|
|
<div class="box-info">{{item.moduleName}}</div>
|
|
</div>
|
|
</div> -->
|
|
<div class="module-item">
|
|
<div class="module-text" @click="menuVisible = true" >
|
|
<div class="box-info">全部应用</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="module-item">
|
|
<div class="module-text" @click="goToMyWork" >
|
|
<div class="box-info">我的工作台</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="drawer-box">
|
|
<all-menus v-model="menuVisible"></all-menus>
|
|
<!-- <el-drawer
|
|
:visible.sync="drawer"
|
|
:modal-append-to-body="false"
|
|
:direction="direction">
|
|
<div class="drawer">
|
|
<div class="drawer-content">
|
|
<div class="drawer-content-category" v-for="(item,index) in categorys" :key="index">
|
|
<div class="category-name" v-text="item.moduleName"></div>
|
|
<div class="category-list">
|
|
<div
|
|
class="category-item"
|
|
v-for="(module,mindex) in item.childrens" :key="index+'_'+mindex"
|
|
@click="gotolink(module)"
|
|
:class="{highlight : module.isHighlight }"
|
|
>
|
|
<div class="module-icon">
|
|
<img :src="module.icon">
|
|
</div>
|
|
<div class="module-name" v-text="module.moduleName"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</el-drawer> -->
|
|
</div>
|
|
|
|
|
|
</section>
|
|
</template>
|
|
|
|
<script>
|
|
|
|
import NProgress from 'nprogress' // progress bar
|
|
const topModulesData = require("./top_modules_"+process.env.CONTEXT+".js")
|
|
const allModulesData = require("./all_modules.js")
|
|
import allMenus from '../ModulesMenu/allMenus'
|
|
|
|
export default {
|
|
components: {allMenus},
|
|
created() {
|
|
},
|
|
data() {
|
|
return {
|
|
levelList: null,
|
|
drawer: false,
|
|
direction: 'rtl',
|
|
key:"",
|
|
topModules: topModulesData.default,
|
|
//模块分类
|
|
categorys:allModulesData.default,
|
|
menuVisible: false,
|
|
}
|
|
},
|
|
watch: {
|
|
key(val){
|
|
this.searchModule();
|
|
}
|
|
},
|
|
methods: {
|
|
goToMyWork(){
|
|
this.$router.push("/my/work/index")
|
|
},
|
|
//路由跳转
|
|
gotolink(module) {
|
|
this.drawer = false
|
|
this.jumpToOtherSystem(module);
|
|
},
|
|
//系统跳转
|
|
jumpToOtherSystem(module) {
|
|
window.open(module.sysLink, module.moduleName,null,true);
|
|
NProgress.done() // if current page is login will not trigger afterEach hook, so manually handle it
|
|
},
|
|
//搜索
|
|
searchModule(){
|
|
for(let i =0 ; i <this.categorys.length; i++){
|
|
for(let j =0 ; j <this.categorys[i].childrens.length; j++){
|
|
let module = this.categorys[i].childrens[j];
|
|
this.categorys[i].childrens[j].isHighlight = false;
|
|
}
|
|
|
|
}
|
|
if(this.key != ""){
|
|
for(let i =0 ; i <this.categorys.length; i++){
|
|
for(let j =0 ; j <this.categorys[i].childrens.length; j++){
|
|
let module = this.categorys[i].childrens[j];
|
|
if(module.moduleName.indexOf(this.key) > -1){
|
|
this.categorys[i].childrens[j].isHighlight = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style rel="stylesheet/scss" lang="scss" scoped>
|
|
.drawer-box{
|
|
.drawer{
|
|
padding-left: 10px;
|
|
padding-right: 10px;
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
z-index: 9 !important;
|
|
.drawer-content{
|
|
width: 900px;
|
|
height: 100%;
|
|
.drawer-content-input{
|
|
display: flex;
|
|
justify-content: center;
|
|
}
|
|
.drawer-content-category{
|
|
.category-name{
|
|
color: #333333;
|
|
font-size: 16px;
|
|
}
|
|
.category-list{
|
|
display: flex;
|
|
justify-content: flex-start;
|
|
flex-wrap: wrap;
|
|
.category-item{
|
|
height: 70px;
|
|
width: 70px;
|
|
margin-right: 20px;
|
|
transition: all 0.3s;
|
|
.module-icon{
|
|
width: 70px;
|
|
height: 38px;
|
|
text-align: center;
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: center;
|
|
align-items: center;
|
|
img{
|
|
width: 20px;
|
|
}
|
|
}
|
|
.module-name{
|
|
height: 32px;
|
|
line-height: 32px;
|
|
color:#666666;
|
|
font-size: 12px;
|
|
text-align: center;
|
|
}
|
|
}
|
|
.category-item:hover{
|
|
background: rgb(240, 241, 245);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
.highlight{
|
|
transform: scale(1.05);
|
|
-webkit-box-shadow: 0 0 30px rgba(0, 0, 0, 0.1);
|
|
border-radius: 50%;
|
|
box-shadow: 0 0 30px rgba(0, 0, 0, 0.15);
|
|
}
|
|
|
|
}
|
|
.module-item {
|
|
display: inline-block;
|
|
cursor: pointer;
|
|
fill: #5a5e66;
|
|
align-items: center;
|
|
text-align: center;
|
|
margin-right: 30px;
|
|
.module-text{
|
|
line-height: 22px;
|
|
font-size: 22px;
|
|
}
|
|
|
|
.box-icon {
|
|
text-align: center;
|
|
}
|
|
|
|
.box-info {
|
|
text-align: center;
|
|
font-size: 14px;
|
|
color: #7D7D7D;
|
|
font-weight: bold;
|
|
}
|
|
}
|
|
|
|
</style>
|
|
<style rel="stylesheet/scss" lang="scss">
|
|
.drawer-box{
|
|
.el-drawer{
|
|
height: 100% !important;
|
|
overflow: auto;
|
|
}
|
|
}
|
|
</style>
|