From b9bd29a1a81f6f7de479e3cc3fdfe3d85fc660bf Mon Sep 17 00:00:00 2001
From: he wei <858544502@qq.com>
Date: 星期三, 23 四月 2025 13:35:06 +0800
Subject: [PATCH] UA 整理提交

---
 src/layout/components/Navbar.vue |  230 +++++++++++++++++++++++++++++++++------------------------
 1 files changed, 134 insertions(+), 96 deletions(-)

diff --git a/src/layout/components/Navbar.vue b/src/layout/components/Navbar.vue
index 01a59d7..1017792 100644
--- a/src/layout/components/Navbar.vue
+++ b/src/layout/components/Navbar.vue
@@ -2,7 +2,7 @@
   <div class="navbar">
     <div class="sys-name-wrapper">
       <div class="sys-icon">
-        <svg-icon icon-class="lock-hdw"></svg-icon>
+        <svg-icon icon-class="lock1"></svg-icon>
       </div>
       <div class="sys-name">{{ title }}</div>
     </div>
@@ -12,11 +12,20 @@
         <div class="label">閿佸叿鎺у埗妯″紡</div>
         <div class="value">{{ ctrlModel ? '鍦ㄧ嚎妯″紡' : '绂荤嚎妯″紡' }}</div>
         <!-- 鍒囨崲妯″紡 -->
-        <div class="btn" v-if="uname == 'admin'" @click="changeModel">鍒囨崲妯″紡</div>
+        <div class="btn" v-if="uname == 'admin'" @click="changeModel">
+          鍒囨崲妯″紡
+        </div>
       </div>
-      <el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click">
+      <el-dropdown
+        class="avatar-container right-menu-item hover-effect"
+        trigger="click"
+      >
         <div class="avatar-wrapper">
-          <img :src="avatar + '?imageView2/1/w/80/h/80'" class="user-avatar" alt="" />
+          <img
+            :src="avatar + '?imageView2/1/w/80/h/80'"
+            class="user-avatar"
+            alt=""
+          />
           <span>{{ uname }}</span>
           <el-icon class="el-icon-caret-bottom" size="small">
             <CaretBottom />
@@ -25,7 +34,7 @@
         <template #dropdown>
           <el-dropdown-menu>
             <router-link to="/">
-              <el-dropdown-item>棣栭〉</el-dropdown-item>
+              <el-dropdown-item @click="pwdVisible = true">淇敼瀵嗙爜</el-dropdown-item>
             </router-link>
             <el-dropdown-item @click="logout">
               <span style="display: block">閫�鍑虹櫥褰�</span>
@@ -34,108 +43,125 @@
         </template>
       </el-dropdown>
     </div>
+    <!-- 瀵嗙爜淇敼 -->
+    <el-dialog
+      title="瀵嗙爜淇敼"
+      width="400px"
+      v-model="pwdVisible"
+      :close-on-click-modal="false"
+      top="0"
+      class="dialog-center"
+      :modal-append-to-body="false"
+    >
+      <pwd-change v-if="pwdVisible" @success="pwdVisible = false"></pwd-change>
+    </el-dialog>
   </div>
 </template>
 
 <script setup name="Navbar">
-	import { computed, ref, watchEffect, onMounted } from "vue";
-	import { useRoute, useRouter } from "vue-router";
-	import { CaretBottom } from "@element-plus/icons-vue";
-	import SvgIcon from "@/components/SvgIcon/index.vue";
-	import useWebSocket from "@/hooks/useWebSocket";
-	import useElement from "@/hooks/useElement.js";
-  import { changeControlMode } from '@/api/system.js';
-  import useUserStore from '@/store/user';
-  import useAppStore from '@/store/app';
-  import { storeToRefs } from 'pinia';
-  const userStore = useUserStore();
-  const appStore = useAppStore();
-  const { sidebar, device } = storeToRefs(appStore);
-  const { avatar, name: uname } = storeToRefs(userStore);
+import { computed, ref, reactive, watchEffect, onMounted } from "vue";
+import { useRoute, useRouter } from "vue-router";
+import { CaretBottom } from "@element-plus/icons-vue";
+import SvgIcon from "@/components/SvgIcon/index.vue";
+import useWebSocket from "@/hooks/useWebSocket";
+import useElement from "@/hooks/useElement.js";
+import { changeControlMode } from '@/api/system.js';
+import { useUserStore } from '@/store/user';
+import { useAppStore } from '@/store/app';
+import { storeToRefs } from 'pinia';
+import { updatePassword } from '@/api/user.js';
+import PwdChange from '@/components/PwdChange.vue';
+const userStore = useUserStore();
+const appStore = useAppStore();
+const { sidebar, device } = storeToRefs(appStore);
+const { avatar, uname } = storeToRefs(userStore);
 
-  const { updateSessionId, logout: _logout } = userStore;
-  const { toggleSidebar: _toggleSidebar } = appStore;
-  
+const { updateSessionId, logout: _logout, getInfo } = userStore;
+const { toggleSidebar: _toggleSidebar } = appStore;
 
-	const { sendData, message } = useWebSocket("appOut");
-	const { message: stateMessage } = useWebSocket("plate");
 
-	const { $alert, $loading, $message, $confirm } = useElement();
+const { sendData, message } = useWebSocket("appOut");
+const { message: stateMessage } = useWebSocket("plate");
 
-	const router = useRouter();
-	const route = useRoute();
-  const ctrlModel = ref(0);
+const { $alert, $loading, $message, $confirm } = useElement();
 
-	const title = ref("楦胯挋鏅鸿兘鐢靛瓙閿佺鐞嗗钩鍙�");
+const pwdVisible = ref(false);
 
-	watchEffect(() => {
-		if (message.value) {
-			const {
-				code,
-				data,
-        data2,
-        msg
-			} = JSON.parse(message.value);
-      updateSessionId(data2?.sessionid);
-			if (data) {
-				$message(msg);
-				logout();
-        // updateSessionId('');
-				// localStorage.removeItem("uname");
-				// localStorage.removeItem("uid");
-				// setTimeout(() => {
-				//   $router.push("/login");
-				//   location.reload();
-				// }, 2000);
-			}
+const router = useRouter();
+const route = useRoute();
+const ctrlModel = ref(0);
+
+const title = ref("楦胯挋鏅鸿兘鐢靛瓙閿佺鐞嗗钩鍙�");
+
+
+watchEffect(() => {
+	if (message.value) {
+		const {
+			code,
+			data,
+			data2,
+			msg
+		} = JSON.parse(message.value);
+		updateSessionId(data2?.sessionid);
+		if (data) {
+			$message(msg);
+			logout();
+			// updateSessionId('');
+			// localStorage.removeItem("uname");
+			// localStorage.removeItem("uid");
+			// setTimeout(() => {
+			//   $router.push("/login");
+			//   location.reload();
+			// }, 2000);
 		}
-
-    if (stateMessage.value) {
-      const {
-        data2: { plateModel },
-      } = JSON.parse(stateMessage.value);
-      ctrlModel.value = plateModel;
-    }
-
-	});
-
-	function sendMessage() {
-		sendData(uname.value);
-	};
-
-  function changeModel() {
-    let value = !ctrlModel.value * 1;
-    let loading = $loading();
-    changeControlMode(value).then((res) => {
-      let { code, data } = res;
-      loading.close();
-      if (code && data) {
-        $message.success("鎿嶄綔鎴愬姛");
-      } else {
-        $message.error("鎿嶄綔澶辫触");
-      }
-    })
-    .catch((err) => {
-      loading.close();
-      $message.error("鎿嶄綔澶辫触");
-      console.log(err);
-    });
-    
-  }
-
-	function toggleSidebar() {
-		_toggleSidebar();
-	}
-	async function logout() {
-		await _logout();
-		// console.log('logout', '=============');
-
-		router.push(`/login?redirect=${route.fullPath}`);
 	}
 
-  onMounted(() => {
-    sendMessage();
-  });
+	if (stateMessage.value) {
+		const {
+			data2: { plateModel },
+		} = JSON.parse(stateMessage.value);
+		ctrlModel.value = plateModel;
+	}
+
+});
+
+function sendMessage() {
+	sendData(uname.value);
+};
+
+function changeModel() {
+	let value = !ctrlModel.value * 1;
+	let loading = $loading();
+	changeControlMode(value).then((res) => {
+		let { code, data } = res;
+		loading.close();
+		if (code && data) {
+			$message.success("鎿嶄綔鎴愬姛");
+		} else {
+			$message.error("鎿嶄綔澶辫触");
+		}
+	})
+		.catch((err) => {
+			loading.close();
+			$message.error("鎿嶄綔澶辫触");
+			console.log(err);
+		});
+
+}
+
+function toggleSidebar() {
+	_toggleSidebar();
+}
+async function logout() {
+	await _logout();
+	// console.log('logout', '=============');
+
+	router.push(`/login?redirect=${route.fullPath}`);
+}
+
+onMounted(() => {
+	sendMessage();
+});
 </script>
 
 <style lang="less" scoped>
@@ -145,13 +171,21 @@
   position: relative;
   background: #fff;
   box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08);
-
+  background:
+    url("@/assets/images/site-title-bg2.png") right center e('/') auto 100% no-repeat,
+    url("@/assets/images/site-title.png") center center e('/') auto 100% repeat-x;
+  // border-image: url("@/assets/images/site-title-bg2.png") 64  0 780 0 / 64px 0 788px 0;
   .sys-name-wrapper {
     display: inline-block;
     line-height: 64px;
     color: var(--light-color);
-    font-size: 24px;
+    font-size: 34px;
     width: 894px;
+    padding-left: 1.6em;
+
+    //  url("@/assets/images/logo-lock.png") 70px center / auto 60% no-repeat,
+    background:
+     url("@/assets/images/site-title-bg.png") left center / 100% 100% no-repeat;
 
     .sys-icon {
       display: inline-block;
@@ -245,6 +279,7 @@
       }
     }
   }
+
   .flex-inline {
     display: inline-flex;
     line-height: normal;
@@ -252,15 +287,18 @@
     height: 100%;
     margin-right: 2em;
     float: left;
+
     .label {
       &::after {
         content: ':';
       }
 
     }
+
     .value {
       margin-left: 0.4em;
     }
+
     .btn {
       margin-left: 2em;
       background: #0ff;

--
Gitblit v1.9.1