From 0dc1e26569ab570259fef29cd5cde70cb96d7f2c Mon Sep 17 00:00:00 2001
From: 李林 <z1292839451@163.com>
Date: 星期二, 09 一月 2024 11:08:44 +0800
Subject: [PATCH] 修订版本3.0

---
 src/view/index.vue |  198 +++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 156 insertions(+), 42 deletions(-)

diff --git a/src/view/index.vue b/src/view/index.vue
index 4ba58ec..90e3a44 100644
--- a/src/view/index.vue
+++ b/src/view/index.vue
@@ -62,6 +62,16 @@
 		padding: 20px 0;
 		transition: .3s;
 		overflow-y: auto;
+		user-select: none;
+	}
+
+	.left::-webkit-scrollbar {
+		width: 0px;
+	}
+
+	.left::-webkit-scrollbar-thumb {
+		background-color: transparent;
+		border-radius: 3px;
 	}
 
 	.left .box {
@@ -87,8 +97,8 @@
 	}
 
 	.left .box i {
-		font-size: 32px;
-		margin-bottom: 8px;
+		font-size: 28px;
+		margin-bottom: 4px;
 	}
 
 	.left .box div {
@@ -177,6 +187,10 @@
 		user-select: none;
 		flex-shrink: 0;
 	}
+	
+	.tab:hover{
+		color: #3A7BFA;
+	}
 
 	.tab i {
 		font-size: 12px;
@@ -204,10 +218,36 @@
 		width: 100%;
 		height: 100%;
 	}
+
+	.right_key_menu {
+		width: 120px;
+		position: absolute;
+		top: 0;
+		left: 0;
+		display: none;
+		z-index: 999;
+	}
+
+	.right_key_menu li {
+		list-style-type: none;
+		padding: 5px 0;
+		padding-left: 10px;
+		font-size: 0.9rem;
+		transition: .5s;
+		cursor: pointer;
+	}
+	
+	.right_key_menu li i{
+		margin-right: 20px;
+	}
+
+	.right_key_menu li:hover {
+		background-color: #dedede;
+	}
 </style>
 <style></style>
 <template>
-	<div class="all">
+	<div class="all" @click="closeRightKey">
 		<div class="title">
 			<div class="logo">
 				<!-- <img src="../../static/img/logo 1.png" /> -->
@@ -221,17 +261,17 @@
 		</div>
 		<div class="left" :style="`width: ${leftOpen?'92':'0'}px;`">
 			<div v-for="(a, ai) in menu" :key="ai">
-				<div :class="`box ${activeBox == a.c[0].k ? 'active_box' : ''}`" @click="addTab(a.c[0], -1)" v-if="a.self">
+				<div :class="`box ${activeBox == a.c[0].k ? 'active_box' : ''}`" @click="addTab(a.c[0], -1)" v-if="a.self && getPower(a.c[0].p)">
 					<i :class="a.i"></i>
 					<div>{{a.v}}</div>
 				</div>
-				<el-popover placement="right-start" width="90" trigger="click" v-if="a.self != true">
+				<el-popover placement="right-start" width="90" trigger="click" v-if="a.self != true && getPower(a.p)">
 					<div :class="`box ${activeBox == a.k ? 'active_box' : ''}`" slot="reference">
 						<i :class="a.i"></i>
 						<div>{{ a.v }}</div>
 					</div>
 					<div class="small_menu">
-						<p v-for="(b, bi) in a.c" :key="bi" :class="activeP == b.k ? 'active_p' : ''" @click="addTab(b, a.k)">
+						<p v-for="(b, bi) in a.c" :key="bi" :class="activeP == b.k ? 'active_p' : ''" @click="addTab(b, a.k)" v-if="getPower(b.p)">
 							<i :class="b.i"></i>
 							<span>{{ b.v }}</span>
 						</p>
@@ -244,7 +284,7 @@
 				<i :class="`${leftOpen?'el-icon-s-unfold':'el-icon-s-fold'}`" @click="leftOpen = !leftOpen"></i>
 				<div class="tabs">
 					<div :class="`tab ${tabActive == a.k ? 'active_tab' : ''}`" v-for="(a, ai) in tabs" :key="ai"
-						@click="upTabActive(a.k)">
+						@click="upTabActive(a.k)" @contextmenu.prevent="rightKeyMenu(ai, $event)">
 						{{ a.v }}
 						<i class="el-icon-close" @click="removeTab(ai)" v-if="tabActive!=0"></i>
 					</div>
@@ -252,10 +292,22 @@
 				<i class="el-icon-delete" @click="allDel" title="鍒犻櫎鎵�鏈夋爣绛鹃〉"></i>
 			</div>
 			<div class="component_view">
-				<component class="com_index" v-for="(com, index) in tabs" :is="com.u" :key="upIndex + '|' + index"
-					v-show="com.k == tabActive">
+				<component class="com_index" v-for="(com, index) in tabs" :is="com.u" :key="com.k"
+					v-show="com.k == tabActive" :ref="`com-${com.k}`">
 				</component>
 			</div>
+		</div>
+		<!-- 鍙抽敭鑿滃崟 -->
+		<div class="right_key_menu">
+			<el-col :span="24">
+				<el-card :body-style="{padding: '6px 0'}">
+					<ul>
+						<li style="color: red;" @click="removeTab(activeIndex)"><i class="el-icon-close"></i>鍏抽棴</li>
+						<el-divider></el-divider>
+						<li @click="refreshTable"><i class="el-icon-refresh"></i>鍒锋柊</li>
+					</ul>
+				</el-card>
+			</el-col>
 		</div>
 	</div>
 </template>
@@ -280,103 +332,124 @@
 				menu: [{
 						k: 0,
 						v: "棣栭〉",
-						i: "font icon-shouye",
+						i: "font icon-shouyefill",
 						self: true,
 						c: [{
 							k: 0,
 							v: "棣栭〉",
-							i: "font icon-shouye",
+							i: "font icon-shouyefill",
 							u: "index-index"
 						}]
 					},
 					{
 						k: 2,
 						v: "鏁版嵁涓婃姤",
-						i: "font icon-shouye",
+						i: "font icon-a-Group1118",
 						self: true,
 						c: [{
 							k: 2,
 							v: "鏁版嵁涓婃姤",
-							i: "font icon-shouye",
-							u: "index-index"
+							i: "font icon-a-Group1118",
+							u: "data-reporting",
+							p: "selectDataReportingList"
 						}]
 					},
 					{
 						k: 3,
 						v: "鏁版嵁缁熻",
-						i: "font icon-shouye",
-						self: true,
+						i: "font icon-a-Group1120",
+						p: "selectProductCountDtoPageList selectRegistrantCountDtoPageList",
 						c: [{
-							k: 3,
-							v: "鏁版嵁缁熻",
-							i: "font icon-shouye",
-							u: "index-index"
+							k: 9,
+							v: "椤圭洰鏁版嵁缁熻",
+							i: "font icon-24gl-clipboardList",
+							u: "product-count",
+							p: "selectProductCountDtoPageList"
+						},{
+							k: 10,
+							v: "鍛樺伐鏁版嵁缁熻",
+							i: "font icon-24gl-clipboardList",
+							u: "registrant-count",
+							p: "selectRegistrantCountDtoPageList"
+						},{
+							k: 12,
+							v: "鍛樺伐鏁版嵁瀵规瘮",
+							i: "font icon-24gl-clipboardList",
+							u: "data-comparison",
+							p: "selectDataComparisonDtoPageList"
 						}]
 					},
 					{
 						k: 5,
 						v: "杩涚矇涓婃姤",
-						i: "font icon-shouye",
+						i: "font icon-a-Group1122",
 						self: true,
 						c: [{
 							k: 5,
 							v: "杩涚矇涓婃姤",
-							i: "font icon-shouye",
-							u: "index-index"
+							i: "font icon-a-Group1122",
+							u: "fans-submit",
+							p: "selectFansSubmitList"
 						}]
 					},
 					{
 						k: 6,
 						v: "璐㈠姟涓婃姤",
-						i: "font icon-shouye",
+						i: "font icon-a-Group1236",
 						self: true,
 						c: [{
 							k: 6,
 							v: "璐㈠姟涓婃姤",
-							i: "font icon-shouye",
-							u: "index-index"
+							i: "font icon-a-Group1236",
+							u: "finance-submit",
+							p: "selectFinanceSubmitList"
 						}]
 					},
 					{
 						k: 7,
 						v: "瑙掕壊绠$悊",
-						i: "font icon-shouye",
+						i: "font icon-a-Group1126",
 						self: true,
 						c: [{
 							k: 7,
 							v: "瑙掕壊绠$悊",
-							i: "font icon-shouye",
-							u: "index-index"
+							i: "font icon-a-Group1126",
+							u: "role-manage",
+							p: "selectRoleLists"
 						}]
 					},
 					{
 						k: 4,
 						v: "鏁版嵁瀛楀吀",
-						i: "font icon-shouye",
+						i: "font icon-odbc-full",
+						p: "selectCustomEnumLists selectProductEnumLists",
 						c: [{
 								k: 4,
 								v: "瀹㈡埛绠$悊",
-								i: "font icon-shouye",
-								u: ""
+								i: "font icon-24gl-clipboardList",
+								u: "custom-enum",
+								p: "selectCustomEnumLists"
 							},
 							{
-								k: 5,
-								v: "鐥呯绠$悊",
-								i: "font icon-shouye",
-								u: ""
+								k: 11,
+								v: "椤圭洰绠$悊",
+								i: "font icon-24gl-clipboardList",
+								u: "product-enum",
+								p: "selectProductEnumLists"
 							}
 						]
 					},
 					{
 						k: 8,
 						v: "浜哄憳绠$悊",
-						i: "font icon-shouye",
+						i: "font icon-a-Group1124",
 						self: true,
 						c: [{
 							k: 8,
 							v: "浜哄憳绠$悊",
-							i: "font icon-shouye",
-							u: "person-manage"
+							i: "font icon-a-Group1124",
+							u: "person-manage",
+							p: "selectUserList"
 						}]
 					}
 				],
@@ -386,15 +459,19 @@
 				tabs: [{
 					k: 0,
 					v: "棣栭〉",
-					i: "font icon-shouye",
+					i: "font icon-a-Group1124",
 					u: "index-index"
 				}],
-				upIndex: 0
+				upIndex: 0,
+				activeIndex: 0,
+				power: []
 			};
 		},
 		created() {},
 		mounted() {
 			this.userName = JSON.parse(localStorage.getItem("user")).name;
+			this.power = JSON.parse(sessionStorage.getItem('power'))
+			this.getPower()
 		},
 		methods: {
 			addTab(ob, self) {
@@ -425,7 +502,7 @@
 				this.tabs = [{
 					k: 0,
 					v: " 棣栭〉",
-					i: "font icon-shouye",
+					i: "font icon-a-Group1124",
 					u: "index-index"
 				}]
 			},
@@ -445,6 +522,43 @@
 				sessionStorage.clear();
 				localStorage.removeItem("autoenter");
 				this.$router.push("/enter");
+			},
+			// 鍏抽棴鍙抽敭鑿滃崟
+			closeRightKey() {
+				$('.right_key_menu').css({
+					'display': 'none'
+				})
+			},
+			// 鍙抽敭鑿滃崟
+			rightKeyMenu(id, e) {
+				if (id == 0) return
+				this.activeIndex = id
+				var x = e.clientX + 'px'
+				var y = e.clientY + 'px'
+				$('.right_key_menu').css({
+					'top': y,
+					'left': x,
+					'display': 'block'
+				})
+			},
+			// 鍒锋柊琛ㄦ牸鍐呭
+			refreshTable(){
+				var thing = this.tabs.splice(this.activeIndex, 1)
+				setTimeout(()=>{
+					this.tabs.splice(this.activeIndex, 0, thing[0])
+				}, 0)
+			},
+			// 鏉冮檺鍒嗛厤
+			getPower(p){
+				if(p==undefined) return true
+				let str = p.split(' ')
+				for (var a = 0; a < str.length; a++) {
+					for (var i = 0; i < this.power.length; i++) {
+						if(this.power[i].menuMethod == str[a]) {
+							return true
+						}
+					}
+				}
 			}
 		}
 	};

--
Gitblit v1.9.3