src/layout/component/sidebar/SidebarOther.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/layout/component/sidebar/components/MenuList.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/layout/component/sidebar/components/UserInformation.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/layout/component/sidebar/SidebarOther.vue
@@ -32,7 +32,8 @@ <span class="use_name">{{ firstUserCharacter }}</span> </div> <div class="isShow_Profile" v-show="isShowExitLogin"> <div class="exit" @click="feedbackClick"><i class="ywifont ywicon-youxiang"></i> ç¨æ·åé¦</div> <div class="exit" @click="informationClick"><i class="ywifont ywicon-wode"></i> æçä¿¡æ¯</div> <!-- <div class="exit" @click="feedbackClick"><i class="ywifont ywicon-youxiang"></i> ç¨æ·åé¦</div> --> <div class="exit" @click="logoutClick"><i class="ywifont ywicon-tuichu"></i> éåºç»å½</div> </div> </div> @@ -128,6 +129,7 @@ </div> </template> </el-dialog> <UserInformation v-model="userInformationVisible" /> </div> </template> @@ -138,6 +140,7 @@ import QRCode from 'qrcodejs2-fixes'; import { computed, nextTick, onMounted, ref, watch, watchEffect } from 'vue'; import type { ChatRoomItem } from './components/types'; import UserInformation from './components/UserInformation.vue'; import { DeleteHistoryGroups, setHistoryGroupTitle } from '/@/api/ai/chat'; import { SERVE_URL } from '/@/constants'; import { useSearch } from '/@/hooks/useSearch'; @@ -152,6 +155,7 @@ newChatRoomClick, selectFirstRoom, } from '/@/stores/chatRoom'; import emitter from '/@/utils/mitt'; import { accessSessionKey, userNameKey } from '/@/utils/request'; import { gotoRoute } from '/@/utils/route'; @@ -256,6 +260,12 @@ }; //#endregion //#region ====================== æçä¿¡æ¯ ====================== const userInformationVisible = ref(false); const informationClick = () => { userInformationVisible.value = true; }; //#endregion //#region ====================== æ¾ç¤º/éåºç»å½ ====================== //ç»å½ const openLoginDlg = async () => { @@ -342,7 +352,6 @@ }); onMounted(async () => { selectFirstRoom(); emitter.on('openLoginDlg', () => { if (isShowLogin.value || isLoginStatus.value) return; openLoginDlg(); src/layout/component/sidebar/components/MenuList.vue
@@ -28,6 +28,7 @@ ></span> </div> <div class="pop_up actived" v-show="state.isShowExitLogin"> <div class="exit" @click="informationClick"><i class="ywifont ywicon-wode"></i> æçä¿¡æ¯</div> <div class="exit" @click="logoutClick"><i class="ywifont ywicon-tuichu"></i> éåºç»å½</div> </div> </div> @@ -36,6 +37,7 @@ <span class="text-stone-100 font-medium text-center">ç»å½ / 注å</span> </div> </div> <UserInformation v-model="userInformationVisible" /> </div> </template> @@ -47,6 +49,7 @@ import { accessSessionKey, userNameKey } from '/@/utils/request'; import { gotoRoute } from '/@/utils/route'; import { Local, LoginInfo } from '/@/utils/storage'; import UserInformation from './UserInformation.vue'; const userName = ref(''); const firstUserCharacter = computed(() => userName.value?.[0]?.toUpperCase()); isLoginStatus.value = !!Local.get(accessSessionKey); @@ -122,7 +125,12 @@ state.isShowExitLogin = false; } }; //#region ====================== æçä¿¡æ¯ ====================== const userInformationVisible = ref(false); const informationClick = () => { userInformationVisible.value = true; }; //#endregion onMounted(() => { emitter.on('openLoginDlg', () => { if (isShowLogin.value || isLoginStatus.value) return; src/layout/component/sidebar/components/UserInformation.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,56 @@ <template> <div class="flex flex-col"> <el-dialog v-model="isShowInformation" title="æçä¿¡æ¯" width="500" :before-close="handleCloseInformation"> <el-form :model="userInformationInfo" ref="autoDialogFormRef" label-width="85"> <el-row :gutter="20" class="form_Class"> <el-col :span="12" class="note"> <el-form-item label="ç¨æ·ID" prop="name"> <el-input v-model="userInformationInfo.note" readonly></el-input> </el-form-item ></el-col> <el-col :span="12" class="mb20"> <el-form-item label="å§å" prop="real_name"> <el-input v-model="userInformationInfo.real_name" readonly></el-input> </el-form-item> </el-col> <el-col :span="12" class="mb20"> <el-form-item label="ææºå·" prop="phone"> <el-input v-model="userInformationInfo.phone" readonly></el-input> </el-form-item> </el-col> <el-col :span="12" class="mb20" ><el-form-item label="æ§å«" prop="sex"> <el-input v-model="userInformationInfo.sex" readonly></el-input> </el-form-item ></el-col> <el-col :span="24" class="mb20"> <el-form-item label="é¨é¨" prop="part"> <el-input v-model="userInformationInfo.part" readonly></el-input> </el-form-item ></el-col> <el-col :span="24" class="mb20"> <el-form-item label="é®ç®±" prop="email"> <el-input v-model="userInformationInfo.email" readonly /> </el-form-item> </el-col> </el-row> </el-form> </el-dialog> </div> </template> <script setup lang="ts"> //#region ====================== æçä¿¡æ¯ ====================== import { onMounted, ref } from 'vue'; import { useUserInfo } from '/@/stores/userInfo'; const isShowInformation = defineModel({ type: Boolean, }); const userInformationInfo = ref({}) as any; //å ³é const handleCloseInformation = () => { isShowInformation.value = false; }; //#endregion onMounted(async () => { const stores = useUserInfo(); let userInfo = (await stores.getUserInfo()) as any; userInformationInfo.value = userInfo; }); </script> <style scoped lang="scss"></style>