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

<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>