From b921e333300a26393291ffac44e9d9a2ed2d92ed Mon Sep 17 00:00:00 2001
From: wang1 <844966816@qq.com>
Date: 星期四, 13 七月 2023 18:18:49 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
Source/UBCS-WEB/dist/src/page/index/sidebar/sidebarItem.vue | 146 ++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 146 insertions(+), 0 deletions(-)
diff --git a/Source/UBCS-WEB/dist/src/page/index/sidebar/sidebarItem.vue b/Source/UBCS-WEB/dist/src/page/index/sidebar/sidebarItem.vue
new file mode 100644
index 0000000..2693e31
--- /dev/null
+++ b/Source/UBCS-WEB/dist/src/page/index/sidebar/sidebarItem.vue
@@ -0,0 +1,146 @@
+<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>
+ </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>
+</template>
+<script>
+ import {mapGetters} from "vuex";
+ import {isURL, validatenull} from "@/util/validate";
+ import config from "./config.js";
+
+ export default {
+ name: "sidebarItem",
+ data() {
+ return {
+ config: config
+ };
+ },
+ props: {
+ menu: {
+ type: Array
+ },
+ screen: {
+ type: Number
+ },
+ first: {
+ type: Boolean,
+ default: false
+ },
+ props: {
+ type: Object,
+ default: () => {
+ return {};
+ }
+ },
+ collapse: {
+ type: Boolean
+ }
+ },
+ 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);
+ }
+ },
+ methods: {
+ 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
+ });
+ }
+ }
+ }
+ };
+</script>
+
--
Gitblit v1.10.0