From 2582f000556d04a4d508cbd7c6d11b5d3610883e Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Fri, 12 Nov 2021 09:28:58 +0800
Subject: [PATCH] 服务许可备案审批,数量消息提示
---
src/page/index/sidebar/sidebarItem.vue | 295 ++++++++++++++++++++++++------------------
src/page/index/sidebar/index.vue | 104 ++++++++------
2 files changed, 224 insertions(+), 175 deletions(-)
diff --git a/src/page/index/sidebar/index.vue b/src/page/index/sidebar/index.vue
index bba6289..6c310eb 100644
--- a/src/page/index/sidebar/index.vue
+++ b/src/page/index/sidebar/index.vue
@@ -1,61 +1,69 @@
<template>
- <div class="avue-sidebar" id="menuLeft">
- <logo></logo>
- <el-scrollbar style="height: 100%">
- <div v-if="validatenull(menu)" class="avue-sidebar--tip">
- {{ $t("menuTip") }}
- </div>
- <el-menu
- unique-opened
- :default-active="nowTagValue"
- mode="vertical"
- :show-timeout="200"
- :collapse="keyCollapse"
- background-color="#fff"
- >
- <sidebar-item
- :menu="menu"
- :screen="screen"
- first
- :props="website.menu.props"
- :collapse="keyCollapse"
- ></sidebar-item>
- </el-menu>
- </el-scrollbar>
- </div>
+ <div class="avue-sidebar"
+ id="menuLeft">
+ <logo></logo>
+ <el-scrollbar style="height: 100%">
+ <div v-if="validatenull(menu)"
+ class="avue-sidebar--tip">
+ {{ $t("menuTip") }}
+ </div>
+ <el-menu unique-opened
+ :default-active="nowTagValue"
+ mode="vertical"
+ :show-timeout="200"
+ :collapse="keyCollapse"
+ background-color="#fff">
+ <sidebar-item :menu="menu"
+ :screen="screen"
+ first
+ :props="website.menu.props"
+ :xkTotal="xkTotal"
+ :collapse="keyCollapse"></sidebar-item>
+ </el-menu>
+ </el-scrollbar>
+ </div>
</template>
<script>
import { mapGetters } from "vuex";
import logo from "../logo";
import sidebarItem from "./sidebarItem";
+import {
+ getList,
+} from "@/api/licenseApproval/permit";
export default {
- name: "sidebar",
- components: { sidebarItem, logo },
- inject: ["index"],
- data() {
- return {};
- },
- created() {
- this.index.openMenu();
- // var menuDom = document.getElementById("menuLeft");
- // menuDom.
- },
- computed: {
- ...mapGetters([
- "website",
- "menu",
- "tag",
- "keyCollapse",
- "screen",
- "menuId",
- ]),
- nowTagValue: function () {
- return this.$router.$avueRouter.getValue(this.$route);
+ name: "sidebar",
+ components: { sidebarItem, logo },
+ inject: ["index"],
+ data () {
+ return {
+ xkTotal: 0
+ };
},
- },
- methods: {},
+ created () {
+ getList().then(res => {
+ this.xkTotal = res.data.data.total
+ })
+
+ this.index.openMenu();
+ // var menuDom = document.getElementById("menuLeft");
+ // menuDom.
+ },
+ computed: {
+ ...mapGetters([
+ "website",
+ "menu",
+ "tag",
+ "keyCollapse",
+ "screen",
+ "menuId",
+ ]),
+ nowTagValue: function () {
+ return this.$router.$avueRouter.getValue(this.$route);
+ },
+ },
+ methods: {},
};
</script>
<style lang="scss" scoped>
diff --git a/src/page/index/sidebar/sidebarItem.vue b/src/page/index/sidebar/sidebarItem.vue
index 2693e31..9f7bc95 100644
--- a/src/page/index/sidebar/sidebarItem.vue
+++ b/src/page/index/sidebar/sidebarItem.vue
@@ -1,146 +1,187 @@
<template>
- <div class="menu-wrapper">
- <template v-for="item in menu">
- <el-menu-item v-if="validatenull(item[childrenKey]) && vaildRoles(item)"
- :index="item[pathKey]"
- @click="open(item)"
- :key="item[labelKey]"
- :class="{'is-active':vaildActive(item)}">
- <i :class="item[iconKey]"></i>
- <span slot="title"
- :alt="item[pathKey]">{{generateTitle(item)}}</span>
- </el-menu-item>
- <el-submenu v-else-if="!validatenull(item[childrenKey])&&vaildRoles(item)"
- :index="item[pathKey]"
- :key="item[labelKey]">
- <template slot="title">
- <i :class="item[iconKey]"></i>
- <span slot="title"
- :class="{'el-menu--display':collapse && first}">{{generateTitle(item)}}</span>
+ <div class="menu-wrapper">
+ <template v-for="item in menu">
+ <el-menu-item v-if="validatenull(item[childrenKey]) && vaildRoles(item)"
+ :index="item[pathKey]"
+ @click="open(item)"
+ :key="item[labelKey]"
+ :class="{'is-active':vaildActive(item)}">
+ <i :class="item[iconKey]"></i>
+ <span slot="title"
+ :alt="item[pathKey]">{{generateTitle(item)}}</span>
+
+ </el-menu-item>
+ <el-submenu v-else-if="!validatenull(item[childrenKey])&&vaildRoles(item)"
+ :index="item[pathKey]"
+ :key="item[labelKey]">
+ <template slot="title">
+ <i :class="item[iconKey]"></i>
+ <span slot="title"
+ :class="{'el-menu--display':collapse && first}">{{generateTitle(item)}}</span>
+ <div v-show="generateTitle(item) == '保安单位许可备案审批'"
+ style="position: absolute;
+ top: -2px;
+ z-index: 99;
+ width: 28px;
+ height: 28px;
+ border-radius: 50%;
+ background: red;
+ font-size: 12px;
+ color: #fff;
+ text-align: center;
+ line-height: 28px !important;
+ transform: translate(-80%, 0) scale(0.8)">
+ {{xkTotal}}
+ </div>
+ </template>
+ <template v-for="(child,cindex) in item[childrenKey]">
+ <el-menu-item :index="child[pathKey],cindex"
+ @click="open(child)"
+ :class="{'is-active':vaildActive(child)}"
+ v-if="validatenull(child[childrenKey])"
+ :key="child[labelKey]">
+ <i :class="child[iconKey]"></i>
+ <span slot="title">{{generateTitle(child)}}</span>
+ <div v-show="generateTitle(child) == '保安服务许可申请'"
+ style="position: absolute;
+ top: -2px;
+ z-index: 99;
+ width: 28px;
+ height: 28px;
+ border-radius: 50%;
+ background: red;
+ font-size: 12px;
+ color: #fff;
+ text-align: center;
+ line-height: 28px !important;
+ transform: translate(-80%, 0) scale(0.8)">
+ {{xkTotal}}
+ </div>
+ </el-menu-item>
+ <sidebar-item v-else
+ :menu="[child]"
+ :key="cindex"
+ :props="props"
+ :screen="screen"
+ :collapse="collapse"></sidebar-item>
+
+ </template>
+ </el-submenu>
</template>
- <template v-for="(child,cindex) in item[childrenKey]">
- <el-menu-item :index="child[pathKey],cindex"
- @click="open(child)"
- :class="{'is-active':vaildActive(child)}"
- v-if="validatenull(child[childrenKey])"
- :key="child[labelKey]">
- <i :class="child[iconKey]"></i>
- <span slot="title">{{generateTitle(child)}}</span>
- </el-menu-item>
- <sidebar-item v-else
- :menu="[child]"
- :key="cindex"
- :props="props"
- :screen="screen"
- :collapse="collapse"></sidebar-item>
- </template>
- </el-submenu>
- </template>
- </div>
+ </div>
</template>
<script>
- import {mapGetters} from "vuex";
- import {isURL, validatenull} from "@/util/validate";
- import config from "./config.js";
- export default {
+import { mapGetters } from "vuex";
+import { isURL, validatenull } from "@/util/validate";
+import config from "./config.js";
+
+export default {
name: "sidebarItem",
- data() {
- return {
- config: config
- };
+ data () {
+ return {
+ config: config
+ };
},
props: {
- menu: {
- type: Array
- },
- screen: {
- type: Number
- },
- first: {
- type: Boolean,
- default: false
- },
- props: {
- type: Object,
- default: () => {
- return {};
+ menu: {
+ type: Array
+ },
+ screen: {
+ type: Number
+ },
+ first: {
+ type: Boolean,
+ default: false
+ },
+ props: {
+ type: Object,
+ default: () => {
+ return {};
+ }
+ },
+ collapse: {
+ type: Boolean
+ },
+ xkTotal: {
+ type: Number
}
- },
- collapse: {
- type: Boolean
- }
},
- created() {
+ beforeCreate () {
+
},
- mounted() {
+ created () {
+
+ },
+ mounted () {
+
},
computed: {
- ...mapGetters(["roles"]),
- labelKey() {
- return this.props.label || this.config.propsDefault.label;
- },
- pathKey() {
- return this.props.path || this.config.propsDefault.path;
- },
- iconKey() {
- return this.props.icon || this.config.propsDefault.icon;
- },
- childrenKey() {
- return this.props.children || this.config.propsDefault.children;
- },
- isOpenKey() {
- return this.props.isOpen || this.config.propsDefault.isOpen;
- },
- nowTagValue() {
- return this.$router.$avueRouter.getValue(this.$route);
- }
+ ...mapGetters(["roles"]),
+ labelKey () {
+ return this.props.label || this.config.propsDefault.label;
+ },
+ pathKey () {
+ return this.props.path || this.config.propsDefault.path;
+ },
+ iconKey () {
+ return this.props.icon || this.config.propsDefault.icon;
+ },
+ childrenKey () {
+ return this.props.children || this.config.propsDefault.children;
+ },
+ isOpenKey () {
+ return this.props.isOpen || this.config.propsDefault.isOpen;
+ },
+ nowTagValue () {
+ return this.$router.$avueRouter.getValue(this.$route);
+ }
},
methods: {
- generateTitle(item) {
- return this.$router.$avueRouter.generateTitle(
- item[this.labelKey],
- (item.meta || {}).i18n
- );
- },
- vaildActive(item) {
- if (this.validIsOpen(item)) {
- return false;
+ generateTitle (item) {
+ return this.$router.$avueRouter.generateTitle(
+ item[this.labelKey],
+ (item.meta || {}).i18n
+ );
+ },
+ vaildActive (item) {
+ if (this.validIsOpen(item)) {
+ return false;
+ }
+ const groupFlag = (item["group"] || []).some(ele =>
+ this.$route.path.includes(ele)
+ );
+ return this.nowTagValue === item[this.pathKey] || groupFlag;
+ },
+ vaildRoles (item) {
+ item.meta = item.meta || {};
+ return item.meta.roles ? item.meta.roles.includes(this.roles) : true;
+ },
+ validatenull (val) {
+ return validatenull(val);
+ },
+ validIsOpen (item) {
+ if (item[this.isOpenKey] === 2 && isURL(item[this.pathKey])) {
+ return true;
+ }
+ },
+ open (item) {
+ if (this.screen <= 1) this.$store.commit("SET_COLLAPSE");
+ if (this.validIsOpen(item)) {
+ window.open(item[this.pathKey]);
+ } else {
+ this.$router.$avueRouter.group = item.group;
+ this.$router.$avueRouter.meta = item.meta;
+ this.$router.push({
+ path: this.$router.$avueRouter.getPath({
+ name: item[this.labelKey],
+ src: item[this.pathKey]
+ }, item.meta),
+ query: item.query
+ });
+ }
}
- const groupFlag = (item["group"] || []).some(ele =>
- this.$route.path.includes(ele)
- );
- return this.nowTagValue === item[this.pathKey] || groupFlag;
- },
- vaildRoles(item) {
- item.meta = item.meta || {};
- return item.meta.roles ? item.meta.roles.includes(this.roles) : true;
- },
- validatenull(val) {
- return validatenull(val);
- },
- validIsOpen(item) {
- if (item[this.isOpenKey] === 2 && isURL(item[this.pathKey])) {
- return true;
- }
- },
- open(item) {
- if (this.screen <= 1) this.$store.commit("SET_COLLAPSE");
- if (this.validIsOpen(item)) {
- window.open(item[this.pathKey]);
- } else {
- this.$router.$avueRouter.group = item.group;
- this.$router.$avueRouter.meta = item.meta;
- this.$router.push({
- path: this.$router.$avueRouter.getPath({
- name: item[this.labelKey],
- src: item[this.pathKey]
- }, item.meta),
- query: item.query
- });
- }
- }
}
- };
+};
</script>
--
Gitblit v1.9.3