AIoT前端公共UI

Header.vue 5.7KB

    <!-- * @Author: Devin * @Date: 2023-01-11 17:15:27 * @LastEditors: Devin * @LastEditTime: 2023-02-22 14:50:55 * @Description: 公共页头 --> <template> <div class="common-panel-header"> <div class="h-l"> <!-- logo --> <img class="__header-info-logo" :style="headerInfo.style" :src="headerInfo?.logo || ''" alt="" /> <!-- title --> <span class="__header-info-title">{{ headerInfo?.title }}</span> </div> <!-- menu --> <div v-if="headerInfo?.menus" class="h-m"> <slot name="menu"></slot> </div> <div class="h-r"> <!-- fnction icon --> <el-input v-if="showSearch" size="small" placeholder="请输入关键词搜索" class="__header-search" ></el-input> <span v-if="showMore" class="__header-text m-r-16" @click.stop="handelShowMore" > 更多 </span> <span v-if="showLang" class="__header-text m-r-16" @click.stop="changeLanguage" > 简体中文 </span> <span v-if="showSearch || showMore || showLang" class="__header-line m-r-16" ></span> <!-- 说明 --> <common-icon v-if="showInformation" class="m-r-16" name="common-gongnengshuoming" ></common-icon> <common-icon v-if="showMessage" class="m-r-16" name="common-liuyan" @click.stop="handelShowMessage" ></common-icon> <span v-if="showInformation || showMessage" class="__header-line m-r-16" ></span> <!-- user info --> <div class="__header-user-info"> <el-avatar :size="24" :src="userInfo?.src"></el-avatar> <el-dropdown class="user-name" trigger="click" @visible-change="changeType" @command="handleCommand" > <h5 class="__header-user"> <span class="__header-user-account"> {{ userInfo?.userAccount }} </span> <common-icon v-if="isDropDown" name="common-shangjiantou" ></common-icon> <common-icon v-else name="common-xiajiantou"></common-icon> </h5> <template #dropdown> <el-dropdown-menu> <template v-for="(commond, index) in commonds" :key="index"> <el-dropdown-item :command="commond['commond']"> {{ commond['label'] }} </el-dropdown-item> </template> </el-dropdown-menu> </template> </el-dropdown> </div> </div> </div> </template> <script setup lang="ts"> import { ref } from 'vue'; defineProps({ headerInfo: { type: Object, default: () => {} }, userInfo: { type: Object, default: () => {} }, commonds: { type: Array<any>, default: () => [] }, showMore: { type: Boolean, default: () => true }, showLang: { type: Boolean, default: () => true }, showInformation: { type: Boolean, default: () => true }, showMessage: { type: Boolean, default: () => true }, showSearch: { type: Boolean, default: () => true } }); const isDropDown = ref<any>(true); const emits = defineEmits([ 'handelCommond', 'handelShowMessage', 'handelShowMore' ]); // 加载更多 // 国际化 function changeLanguage() {} const handleCommand = (command: any) => { emits('handelCommond', command); }; // 展示信息 const handelShowMessage = () => { emits('handelShowMessage'); }; // 显示更多 const handelShowMore = () => { emits('handelShowMore'); }; const changeType = (val: any) => { isDropDown.value = val; }; </script> <script lang="ts"> export default { name: 'CommonHeader' }; </script> <style scoped lang="scss"> .common-panel-header { width: 100%; height: 60px; background: #2a2b3c; display: flex; padding: 0 10px; box-sizing: border-box; justify-content: space-between; align-items: center; .h-l { min-width: 240px; color: #fff; display: flex; align-items: center; height: 100%; .__header-info-logo { max-height: 60px; width: auto; margin-right: 10px; } .__header-info-title { color: #fff; font-size: 16px; font-weight: 500; } } .h-m { flex: 1; } .h-r { display: flex; align-items: center; color: #fff; flex-shrink: 0; min-width: 300px; justify-content: flex-end; font-size: 12px; .__header-search { margin-right: 16px; background-color: #2d3e53; color: #fff; } :deep(.el-input) { --el-input-focus-border: transparent; --el-input-transparent-border: 0 0 0 0px; --el-input-border-color: transparent; --el-input-hover-border: 0px !important; --el-input-hover-border-color: transparent; --el-input-focus-border-color: transparent; --el-input-clear-hover-color: transparent; box-shadow: 0 0 0 0px !important; --el-input-border: 0px; background-color: #2d3e53; color: #fff; } :deep(.el-input__wrapper) { background-color: #2d3e53; color: #fff; } .__header-search { width: 120px; } .__header-text { color: #fff; cursor: pointer; } .__header-line { width: 1px; height: 12px; background-color: #b3bcc5; } .__header-user-info { display: flex; align-items: center; cursor: pointer; user-select: none; color: #fff; .__header-user { display: flex; align-items: center; } .__header-user-account { color: #fff; font-size: 14px; margin-left: 6px; line-height: 24px; } } } } </style>