From ffd0af47ee31a9592cfab56a907e9841a9113c52 Mon Sep 17 00:00:00 2001 From: ludc Date: 星期四, 20 七月 2023 10:37:17 +0800 Subject: [PATCH] 代码提交,前端代码打包 --- 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.9.3