Przeglądaj źródła

Main页面添加UserProfile组件

画安 6 dni temu
rodzic
commit
fec20ba880

+ 0 - 26
extract_status_coords.js

@@ -1,26 +0,0 @@
-const fs = require('fs');
-
-const data = JSON.parse(fs.readFileSync('src/mock/map_data_gaode.json', 'utf8'));
-const totalData = data.length;
-
-const normalStatusCount = 6;
-const abnormalStatusCount = 3;
-const chunkSize = Math.floor(totalData / (normalStatusCount + abnormalStatusCount));
-const maxAbnormalCount = 10;
-
-const offlineData = data.slice(chunkSize * 6, Math.min(chunkSize * 7, chunkSize * 6 + maxAbnormalCount));
-const degradedData = data.slice(chunkSize * 7, Math.min(chunkSize * 8, chunkSize * 7 + maxAbnormalCount));
-const faultData = data.slice(chunkSize * 8, Math.min(chunkSize * 9, chunkSize * 8 + maxAbnormalCount));
-
-const offlineCoords = offlineData.map(item => [item['位置-经度'], item['位置-纬度']]);
-const degradedCoords = degradedData.map(item => [item['位置-经度'], item['位置-纬度']]);
-const faultCoords = faultData.map(item => [item['位置-经度'], item['位置-纬度']]);
-
-console.log('总数据量:', totalData);
-console.log('chunkSize:', chunkSize);
-console.log('\n离线状态坐标点:');
-console.log(JSON.stringify(offlineCoords, null, 2));
-console.log('\n降级状态坐标点:');
-console.log(JSON.stringify(degradedCoords, null, 2));
-console.log('\n故障状态坐标点:');
-console.log(JSON.stringify(faultCoords, null, 2));

+ 9 - 2
src/components/ui/UserProfile.vue

@@ -23,7 +23,9 @@
 <script>
 export default {
   name: 'UserProfile',
-  inject: ['dialogManager'],
+  inject: {
+    dialogManager: { default: null }
+  },
   props: {
     username: {
       type: String,
@@ -56,7 +58,12 @@ export default {
     },
     onChangePassword() {
       this.isOpen = false;
-      
+
+      if (!this.dialogManager) {
+        this.$emit('change-password');
+        return;
+      }
+
       this.dialogManager.openDialog({
         id: 'dialog-change-password',
         title: '修改密码',

+ 1 - 0
src/layouts/LoginLayout.vue

@@ -7,6 +7,7 @@
             <div class="title glow-text" :data-text="brand.title">{{ brand.title }}</div>
             <div class="top-right-actions">
                 <FullscreenToggle />
+                <slot name="top-actions"></slot>
             </div>
         </div>
 

+ 6 - 0
src/views/Main.vue

@@ -1,5 +1,9 @@
 <template>
   <LoginLayout>
+    <template #top-actions>
+      <UserProfile />
+    </template>
+
     <template #background>
       <div class="bg-image"></div>
       <video v-if="ui.mainBgVideo" class="bg-video" autoplay muted loop playsinline>
@@ -65,6 +69,7 @@
 <script>
 import LoginLayout from "@/layouts/LoginLayout.vue";
 import BottomDock from "@/components/ui/BottomDock.vue";
+import UserProfile from "@/components/ui/UserProfile.vue";
 import { allMenus, toDockItems } from "@/config/menus";
 import { ui } from "@/utils/brand";
 
@@ -73,6 +78,7 @@ export default {
   components: {
     LoginLayout,
     BottomDock,
+    UserProfile,
   },
   data() {
     return {