Browse Source

feat: 驿站人员头像修改跨页面通知

zhangying 10 months ago
parent
commit
e2343f332d

+ 1 - 1
vue/src/api/account/model.d.ts

@@ -43,7 +43,7 @@ declare namespace API {
     status: number;
     roles: number[];
     departmentName: string;
-    userId: string,
+    userID: string,
     userName: string,
     loginId: string
   };

+ 11 - 2
vue/src/layout/logo/index.vue

@@ -2,12 +2,12 @@
   <div class="logo">
     <img v-if="!avtImageUrl" src="~@/assets/images/admin.png" alt=""/>
     <img v-else :src="avtImageUrl" alt="" style="border-radius: 50%"/>
-    <h2 v-show="!collapsed" class="title">{{ userInfo.name }}</h2>
+    <h2 v-show="!collapsed" class="title">{{ userInfo.name }}{{ num }}</h2>
   </div>
 </template>
 
 <script setup lang="ts">
-import {onMounted, reactive, ref, toRef} from 'vue';
+import {computed, onMounted, reactive, ref, toRef, watch} from 'vue';
 import { useUserStore } from '@/store/modules/user';
 import {getFileBase64, getList} from "@/api/system/file";
 import {base64ToBlob} from "@/utils/imageUtils";
@@ -23,6 +23,15 @@ const userInfo=reactive(userStore.getUserInfo);
 
 const avtImageUrl = ref<any>("")
 
+const avtImageNum = computed(() => {
+  const userStore = useUserStore();
+  return userStore.getAvtImage;
+})
+
+watch(() => avtImageNum.value, () => {
+  getAvtImag(userInfo.userID)
+}, {deep: true})
+
 function getAvtImag(fileRefID) {
   getList({fileRefID}).then((res) => {
     if (!res) {

+ 10 - 0
vue/src/store/modules/user.ts

@@ -19,6 +19,7 @@ interface UserState {
   menus: RouteRecordRaw[];
   userInfo: Partial<API.AdminUserInfo>;
   dataRangeList: Partial<API.DataRange>[];
+  avtImage: number;
 }
 
 export const useUserStore = defineStore({
@@ -31,6 +32,7 @@ export const useUserStore = defineStore({
     menus: [],
     userInfo: {},
     dataRangeList: Storage.get(ACCESS_DATA_RANGE_KEY, null),
+    avtImage: 0,
   }),
   getters: {
     getToken(): string {
@@ -52,6 +54,9 @@ export const useUserStore = defineStore({
       //return Storage.get(USER_INFO_KEY, null);
       return this.userInfo;
     },
+    getAvtImage(): number {
+      return this.avtImage;
+    }
   },
   actions: {
     /** 清空token及用户信息 */
@@ -146,6 +151,11 @@ export const useUserStore = defineStore({
       this.resetToken();
       resetRouter();
     },
+    /** 修改头像通知 */
+    setAvtImageNum() {
+      this.avtImage += 1;
+      console.log(this.avtImage);
+    }
   },
 });
 

+ 6 - 0
vue/src/views/baseSettings/siteUser/edit.vue

@@ -168,6 +168,7 @@ import {message} from "ant-design-vue";
 import {getSysDictionaryList} from "@/api/system/dictionary";
 import {getSiteList} from "@/api/baseSettings/siteInfo";
 import {get} from "@/api/common";
+import {useUserStore} from "@/store/modules/user";
 
 interface siteUserModel {
   dataModel: any;
@@ -183,6 +184,8 @@ export default defineComponent({
     }
   },
   setup() {
+    const userStore = useUserStore();
+    const userInfo = ref(userStore.getUserInfo);
     const title = ref();
     const opCategory = ref<any>();
     const tabsViewStore = useTabsViewStore();
@@ -311,6 +314,9 @@ export default defineComponent({
       if(isAllowCommit.value){
         saveSiteUser(formData.dataModel).then(result => {
           if (result) {
+            if (formData.dataModel.userID == userInfo.value.userID) {
+              userStore.setAvtImageNum();
+            }
             onClose(1);
           }
         });