| | |
| | | </el-tooltip> |
| | | |
| | | <div class="agent_line"></div> |
| | | <div class="cursor-pointer m-0" @click="toggleShowExitLogin" v-if="isLoginStatus" ref="toggleExitLoginBtnRef"> |
| | | <div class="cursor-pointer m-0 relative" @click="toggleShowExitLogin" v-if="isLoginStatus" ref="toggleExitLoginBtnRef"> |
| | | <div class="nav__profile"> |
| | | <span class="use_name">{{ firstUserCharacter }}</span> |
| | | </div> |
| | | <div class="isShow_Profile" v-show="isShowExitLogin"> |
| | | <el-popover placement="right" :width="200" trigger="hover" popper-class="set-theme"> |
| | | <template #reference> |
| | | <div class="exit"><i class="ywifont ywicon-yingyongzhongxin"></i> 界面主题</div> |
| | | </template> |
| | | <template #default> |
| | | <div class="px-0 m-0 relative"> |
| | | <div class="set-theme-content"> |
| | | <div |
| | | v-for="(theme, index) in THEME_LIST" |
| | | :key="index" |
| | | :style="{ backgroundColor: theme.bgColor }" |
| | | class="theme-item flex items-center justify-center text-[#fff] text-[12px] px-1 py-0" |
| | | @click="changeTheme(theme.themeCss)" |
| | | > |
| | | {{ theme.name }}主题 |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | </el-popover> |
| | | <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> |
| | |
| | | </el-popover> |
| | | </div> |
| | | </div> |
| | | <div class="nav_history_list bg-[#1c1e1d]" v-show="isShowHistoryChatRoom" ref="historyChatRoomRef"> |
| | | <div class="nav_history_list bg-[var(--color-bg-side)]" v-show="isShowHistoryChatRoom" ref="historyChatRoomRef"> |
| | | <div class="flex flex-col flex-auto w-[210.98px] rounded-t-lg box-border relative opacity-100 overflow-y-auto h100 p-[12px]"> |
| | | <div class="group flex-0 relative w100 h-[34px] bg-[#2b2c30]"> |
| | | <div class="group flex-0 relative w100 h-[34px] bg-[var(--color-bg-base-exr)]"> |
| | | <el-input clearable v-model="queryParams.title" placeholder="搜索" class="set-input"> |
| | | <template #prefix> |
| | | <el-icon><search /></el-icon> |
| | | <el-icon> |
| | | <search /> |
| | | </el-icon> |
| | | </template> |
| | | </el-input> |
| | | <div |
| | |
| | | |
| | | <div class="flex-auto text-[#ccc] flex flex-col items-center mt-6 overflow-y-auto" ref="chatRoomRef"> |
| | | <div |
| | | :class="{ 'bg-[#41424a]': item.id === activeRoomId }" |
| | | :class="{ 'text-btn-base bg-[var(--color-bg-base)]': item.id === activeRoomId }" |
| | | class="group flex items-center w-full h-10 rounded-md cursor-pointer px-2 py-2 flex-0" |
| | | v-for="(item, index) in queryData" |
| | | :key="index" |
| | | @click="roomClick(item)" |
| | | > |
| | | <div class="ywifont ywicon-xiaoxi1 flex-0 mr-2.5"></div> |
| | | <div class="flex-auto text-ellipsis text-nowrap group-hover:text-[#0084ff]">{{ item.title }}</div> |
| | | <div class="flex-auto text-ellipsis text-nowrap group-hover:text-btn-base">{{ item.title }}</div> |
| | | <div class="text-gray-100 flex items-center space-x-2 ml-1"> |
| | | <div class="ywifont invisible ywicon-bianji group-hover:visible !" @click="editChat(item)"></div> |
| | | <el-popconfirm title="确定删除聊天记录?" @confirm.stop="confirmDeleteChatRoom(item)" width="180"> |
| | |
| | | }; |
| | | |
| | | //#endregion |
| | | //#region ====================== 界面主题 ====================== |
| | | const THEME_LIST = ref([ |
| | | { name: '默认', themeCss: 'theme-default', bgColor: '#1c1e1d' }, |
| | | { name: '粉色', themeCss: 'theme-pink', bgColor: '#ec4899' }, |
| | | { name: '蓝色', themeCss: 'theme-blue', bgColor: '#3b82f6' }, |
| | | ]); |
| | | |
| | | const changeTheme = (theme = '') => { |
| | | const classList = document.documentElement.classList; |
| | | // 移除所有主题类 |
| | | THEME_LIST.value.forEach((item) => { |
| | | if (item.themeCss !== 'theme-default') { |
| | | classList.remove(item.themeCss); |
| | | } |
| | | // 如果提供了主题,则添加它 |
| | | if (theme && theme !== 'theme-default') { |
| | | classList.add(theme); |
| | | } |
| | | }); |
| | | }; |
| | | //#endregion |
| | | //#region ====================== 我的信息 ====================== |
| | | const userInformationVisible = ref(false); |
| | | const informationClick = () => { |
| | |
| | | |
| | | const toggleExitLoginBtnRef = ref<HTMLDivElement>(null); |
| | | |
| | | onClickOutside(toggleExitLoginBtnRef, () => { |
| | | isShowExitLogin.value = false; |
| | | }); |
| | | onClickOutside( |
| | | toggleExitLoginBtnRef, |
| | | () => { |
| | | isShowExitLogin.value = false; |
| | | }, |
| | | { |
| | | ignore: ['.set-theme'], |
| | | } |
| | | ); |
| | | //#endregion |
| | | //#region ====================== 日期筛选 ====================== |
| | | const activeDateFilter = ref<DateFilter>(DateFilter.All); |
| | |
| | | height: 100%; |
| | | position: relative; |
| | | transition: width 0.2s ease; |
| | | |
| | | .layoutNav__item___1y99z { |
| | | position: absolute; |
| | | top: 0; |
| | | z-index: 101; |
| | | |
| | | .nav__content { |
| | | width: 60px; |
| | | display: flex; |
| | |
| | | padding: 14px 0 1px; |
| | | transition: all 0.3s ease; |
| | | transform: all ease 0.3s; |
| | | |
| | | .agent_img { |
| | | width: 28px; |
| | | height: 28px; |
| | |
| | | |
| | | margin-bottom: 16px; |
| | | } |
| | | |
| | | .agent_line { |
| | | width: 24px; |
| | | height: 1px; |
| | |
| | | margin-bottom: 16px; |
| | | cursor: pointer; |
| | | } |
| | | |
| | | .nav__chat { |
| | | width: 40px; |
| | | height: 40px; |
| | | border-radius: 12px; |
| | | margin-bottom: 10px; |
| | | cursor: pointer; |
| | | |
| | | &:hover { |
| | | background-color: #41424a; |
| | | background-color: var(--color-bg-base); |
| | | } |
| | | |
| | | .nav__chat-icon { |
| | | background-position: 8px 8px; |
| | | font-size: 25px; |
| | | line-height: 40px; |
| | | text-align: center; |
| | | color: #fff; |
| | | |
| | | &:hover { |
| | | color: #0084ff; |
| | | } |
| | | |
| | | .chat_img { |
| | | display: inline-flex; |
| | | align-items: center; |
| | |
| | | justify-content: center; |
| | | -webkit-box-align: center; |
| | | align-items: center; |
| | | |
| | | .use_name { |
| | | width: 30px; |
| | | height: 30px; |
| | | border-radius: 50%; |
| | | overflow: hidden; |
| | | background-color: #1d86ff; |
| | | background-color: var(--color-bg-avatar); |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | .isShow_Profile { |
| | | color: rgba(0, 0, 0, 0.87); |
| | | border-radius: 8px; |
| | |
| | | min-height: 50px; |
| | | max-width: calc(100% - 32px); |
| | | outline: 0px; |
| | | max-height: calc(100% - 96px); |
| | | // max-height: 100%; |
| | | opacity: 1; |
| | | transform: none; |
| | | transition: opacity 274ms cubic-bezier(0.4, 0, 0.2, 1), transform 182ms cubic-bezier(0.4, 0, 0.2, 1); |
| | | // top: 105px; |
| | | top: 204px; |
| | | left: 72px; |
| | | top: 0; |
| | | left: 60px; |
| | | transform-origin: 0px 181px; |
| | | |
| | | .exit { |
| | | height: 44px; |
| | | padding: 16px 12px; |
| | | gap: 8px; |
| | | cursor: pointer; |
| | | |
| | | &:hover { |
| | | background-color: rgba(0, 0, 0, 0.04); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | .set-theme-content { |
| | | width: 200px; |
| | | height: 124px; |
| | | display: flex; |
| | | border-radius: 8px; |
| | | gap: 4px; |
| | | overflow: visible; |
| | | .theme-item { |
| | | position: relative; |
| | | flex-shrink: 0; |
| | | flex-grow: 0; |
| | | cursor: pointer; |
| | | border-radius: 5px; |
| | | overflow: hidden; |
| | | } |
| | | } |
| | | .nav_history_list { |
| | |
| | | opacity: 1; |
| | | transition: opacity 0.2s; |
| | | } |
| | | |
| | | .set-input { |
| | | :deep(.el-input__wrapper) { |
| | | width: 100%; |
| | |
| | | transition: color 0.2s ease-in-out; |
| | | box-shadow: unset; |
| | | } |
| | | |
| | | :deep(.el-input__inner) { |
| | | &::placeholder { |
| | | color: white; |
| | | } |
| | | |
| | | color: white; |
| | | } |
| | | } |
| | | |
| | | ::-webkit-scrollbar { |
| | | height: 0; |
| | | width: 0; |
| | | color: transparent; |
| | | } |
| | | |
| | | .expand-sidebar { |
| | | width: 20px; |
| | | height: 48px; |