|
|
<template> <el-dialog top="5vh" class="moduleset" :visible.sync="visible" width="60%" append-to-body> <div slot="title" class="dialog-title"> <p>全部应用</p> <el-divider style="margin: 0 !important;"></el-divider> </div>
<div class="toolBox"> <el-input v-model="keyWords" @change="searchMenu" placeholder="模糊搜索, enter回车键搜索"> <i slot="prefix" class="el-input__icon el-icon-search"></i> </el-input> <div class="selectItem"> <div class="item" :class="{active: active == 'xmgl' }" @click="active = 'xmgl'"> <span>项目管理系统</span> </div> <div class="item" :class="{active: active == 'oa' }" @click="active = 'oa'"> <span>智慧协同办公系统</span> </div> <div class="item" :class="{active: active == 'mall' }" @click="active = 'mall'"> <span>电商定制系统</span> </div> </div> </div>
<div class="nav" v-loading="menuLoading"> <div class="nav_item" v-for="(item, index) in (selectMenus.length > 0 ? selectMenus : menus[active])" :key="index" @click="selectItem(item, index)"> <img :src="item.logoUrl" alt=""> <span>{{item.name}}</span> <el-divider></el-divider> <div class="desc" v-if="item.billMode!=='0'"> <el-button @click="goBuy(item)" v-if="!item.isBuy" style="width:70px;" type="primary" round>购买</el-button> <span class="buyAfter" v-else>(已购买)</span> </div> <div class="desc" v-else> <span class="buyAfter">(免费)</span> </div> </div> </div> </el-dialog></template>
<script>import { mapGetters } from 'vuex';import {getAllMenuModule, getBuyMenuModule} from '@/api/mdp/sys/modules'import {modulesOfIcon} from "./modulesOfIcon.js";import {modulesOfRouter} from "./modulesOfRouter.js";
export default { props: ['value'], computed: { ...mapGetters([ 'userInfo' ]), visible: { get() { return this.value }, set(val) { this.$emit('input', val) } } }, watch: { 'value': { handler(nval, oval) { if(nval) { this.getAllModules(); } } }, 'keyWords': 'filterModule' },
data() { return { menuLoading: false, selectMenus: [], active: "xmgl", menus: {}, keyWords: null, filterVal: '', } },
methods: { searchMenu(val) { this.keyWords = val; },
filterModule() { if(this.keyWords == null || this.keyWords == "" || this.keyWords == undefined) { this.selectMenus = []; return; } let val = this.keyWords; let tempArr = []; this.menus.mall.forEach(element => { if(element.name.indexOf(val) != -1) { tempArr.push(element); } }); this.menus.oa.forEach(element => { if(element.name.indexOf(val) != -1) { tempArr.push(element); } }); this.menus.xmgl.forEach(element => { if(element.name.indexOf(val) != -1) { tempArr.push(element); } }); this.selectMenus = tempArr; }, selectItem(item) { if(item.isBuy||item.billMode=='0') { //路由跳转
let name = ""; modulesOfRouter.forEach(e => { if(e.id == item.id) { name = e.path; item.type = e.type; } })
if(name != "") { if(item.type == "link") { window.open(name); }else { this.$router.push({path: name}) } } this.visible = false; } },
goBuy(item) { this.visible = false; //前往购买页面
this.$router.push({path:'/my/order/index',query:{moduleId:item.id}}) },
//获取所有模块
getAllModules() { this.menuLoading = true getAllMenuModule({}).then(res => { let tempData = res.data.data; tempData.forEach(i=>{ i.isBuy=false; }) getBuyMenuModule({}).then(res2 => { let branchModules = res2.data.data; tempData.forEach(k => { branchModules.forEach(element => { if(k.id == element.moduleId && element.status=='1') { k.isBuy = true; } });
modulesOfIcon.forEach(element => { if(k.id == element.id) { k.logoUrl = element.logoUrl; } }); }) let xmMenus = tempData.filter(res => {return res.mcate == '2'}) let oaMunus = tempData.filter(res => {return res.mcate == '1'}) let mallMenus = tempData.filter(res => {return res.mcate == '3'}) this.menus = { "xmgl": xmMenus, "oa" : oaMunus, "mall": mallMenus } }) }).finally(() => this.menuLoading = false) },
},
created() { }
}</script>
<style lang="scss">.moduleset .el-dialog__header { padding: 0;}.moduleset .el-divider--horizontal { margin: 0 !important;}</style>
<style lang="scss" scoped>@import './index.scss';
</style>
|