|
@@ -7,7 +7,8 @@
|
|
|
</div>
|
|
</div>
|
|
|
<div class="user-info">
|
|
<div class="user-info">
|
|
|
<img src="@/assets/images/home/Group@2x.png" alt="User" class="user-avatar" />
|
|
<img src="@/assets/images/home/Group@2x.png" alt="User" class="user-avatar" />
|
|
|
- <span class="username">张小明</span>
|
|
|
|
|
|
|
+ <span class="username">{{ userName }}</span>
|
|
|
|
|
+
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
@@ -31,22 +32,31 @@
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
<script setup name="Index" lang="ts">
|
|
<script setup name="Index" lang="ts">
|
|
|
-import { ref, onMounted } from 'vue';
|
|
|
|
|
|
|
+import { ref, onMounted, computed } from 'vue';
|
|
|
|
|
+import { storeToRefs } from 'pinia';
|
|
|
import { getHomeApp, jumpToPage } from '@/api/app';
|
|
import { getHomeApp, jumpToPage } from '@/api/app';
|
|
|
|
|
+import useUserStore from '@/store/modules/user';
|
|
|
|
|
|
|
|
interface AppPage {
|
|
interface AppPage {
|
|
|
pageId: number;
|
|
pageId: number;
|
|
|
appName: string;
|
|
appName: string;
|
|
|
|
|
+ pageIcon?: string;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
interface AppInfo {
|
|
interface AppInfo {
|
|
|
appId: number;
|
|
appId: number;
|
|
|
- appName: string;
|
|
|
|
|
- pageIcon?: string;
|
|
|
|
|
|
|
+ appName: string;
|
|
|
appPages: AppPage[];
|
|
appPages: AppPage[];
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
const appList = ref<AppInfo[]>([]);
|
|
const appList = ref<AppInfo[]>([]);
|
|
|
|
|
+const userStore = useUserStore();
|
|
|
|
|
+const { userInfo, nickname } = storeToRefs(userStore);
|
|
|
|
|
+
|
|
|
|
|
+// 获取用户姓名,优先显示真实姓名,如果没有则显示用户名
|
|
|
|
|
+const userName = computed(() => {
|
|
|
|
|
+ return userInfo.value?.realName || nickname.value || '用户';
|
|
|
|
|
+});
|
|
|
|
|
|
|
|
// Helper to get icon path
|
|
// Helper to get icon path
|
|
|
const getIconPath = (name: string) => {
|
|
const getIconPath = (name: string) => {
|