| | |
| | | <template> |
| | | <div class="avue-top"> |
| | | <div class="top-bar__left"> |
| | | <div class="avue-breadcrumb" :class="[{ 'avue-breadcrumb--active': isCollapse }]" v-if="showCollapse"> |
| | | <i class="icon-navicon" @click="setCollapse"></i> |
| | | </div> |
| | | </div> |
| | | <div class="top-bar__title"> |
| | | <div class="top-bar__item top-bar__item--show" v-if="showMenu"> |
| | | <top-menu ref="topMenu"></top-menu> |
| | | </div> |
| | | </div> |
| | | <div class="top-bar__right"> |
| | | <!-- <el-tooltip v-if="showColor" |
| | | <div class="avue-top"> |
| | | <div class="top-bar__left"> |
| | | <div class="avue-breadcrumb" :class="[{ 'avue-breadcrumb--active': isCollapse }]" v-if="showCollapse"> |
| | | <i class="icon-navicon" @click="setCollapse"></i> |
| | | </div> |
| | | </div> |
| | | <div class="top-bar__title"> |
| | | <div class="top-bar__item top-bar__item--show" v-if="showMenu"> |
| | | <top-menu ref="topMenu"></top-menu> |
| | | </div> |
| | | </div> |
| | | <div class="top-bar__right"> |
| | | <!-- <el-tooltip v-if="showColor" |
| | | effect="dark" |
| | | :content="$t('navbar.color')" |
| | | placement="bottom"> |
| | |
| | | <top-color></top-color> |
| | | </div> |
| | | </el-tooltip> --> |
| | | <!-- <el-tooltip v-if="showDebug" |
| | | <!-- <el-tooltip v-if="showDebug" |
| | | effect="dark" |
| | | :content="logsFlag?$t('navbar.bug'):logsLen+$t('navbar.bugs')" |
| | | placement="bottom"> |
| | |
| | | <top-logs></top-logs> |
| | | </div> |
| | | </el-tooltip> --> |
| | | <!-- <el-tooltip v-if="showLock" |
| | | <!-- <el-tooltip v-if="showLock" |
| | | effect="dark" |
| | | :content="$t('navbar.lock')" |
| | | placement="bottom"> |
| | |
| | | <top-lock></top-lock> |
| | | </div> |
| | | </el-tooltip> --> |
| | | <div style="position: relative;"> |
| | | <top-search v-show="searchShow"></top-search> |
| | | </div> |
| | | <el-tooltip v-if="showTheme" effect="dark" content="搜索" placement="bottom"> |
| | | <div class="top-bar__item top-bar__item--show"> |
| | | <i style="font-size: 18px;" class="el-icon-search" @click="searchShow = !searchShow"></i> |
| | | </div> |
| | | </el-tooltip> |
| | | <!-- <el-tooltip v-if="showTheme" effect="dark" :content="$t('navbar.theme')" placement="bottom"> |
| | | <div style="position: relative;"> |
| | | <top-search v-show="searchShow"></top-search> |
| | | </div> |
| | | <el-tooltip v-if="showTheme" effect="dark" content="搜索" placement="bottom"> |
| | | <div class="top-bar__item top-bar__item--show"> |
| | | <i style="font-size: 18px;" class="el-icon-search" @click="searchShow = !searchShow"></i> |
| | | </div> |
| | | </el-tooltip> |
| | | <!-- <el-tooltip v-if="showTheme" effect="dark" :content="$t('navbar.theme')" placement="bottom"> |
| | | <div class="top-bar__item top-bar__item--show"> |
| | | <top-theme></top-theme> |
| | | </div> |
| | | </el-tooltip> --> |
| | | <el-tooltip effect="dark" :content="$t('navbar.notice')" placement="bottom"> |
| | | <div class="top-bar__item top-bar__item--show"> |
| | | <top-notice></top-notice> |
| | | </div> |
| | | <el-tooltip effect="dark" :content="$t('navbar.notice')" placement="bottom"> |
| | | <div class="top-bar__item top-bar__item--show"> |
| | | <top-notice></top-notice> |
| | | </div> |
| | | |
| | | </el-tooltip> |
| | | <!-- <el-tooltip effect="dark" |
| | | </el-tooltip> |
| | | <!-- <el-tooltip effect="dark" |
| | | :content="$t('navbar.language')" |
| | | placement="bottom"> |
| | | <div class="top-bar__item top-bar__item--show"> |
| | | <top-lang></top-lang> |
| | | </div> |
| | | </el-tooltip> --> |
| | | <el-tooltip v-if="showFullScren" effect="dark" |
| | | :content="isFullScren ? $t('navbar.screenfullF') : $t('navbar.screenfull')" placement="bottom"> |
| | | <div class="top-bar__item"> |
| | | <i :class="isFullScren ? 'icon-tuichuquanping' : 'icon-quanping'" @click="handleScreen"></i> |
| | | </div> |
| | | </el-tooltip> |
| | | <img class="top-bar__img" :src="topBarImg"> |
| | | <el-dropdown> |
| | | <span class="el-dropdown-link"> |
| | | {{ userInfo.userName }} |
| | | <i class="el-icon-arrow-down el-icon--right"></i> |
| | | </span> |
| | | <el-dropdown-menu slot="dropdown"> |
| | | <el-dropdown-item> |
| | | <router-link to="/">{{ $t('navbar.dashboard') }}</router-link> |
| | | </el-dropdown-item> |
| | | <el-dropdown-item> |
| | | <router-link to="/info/index">{{ $t('navbar.userinfo') }}</router-link> |
| | | </el-dropdown-item> |
| | | <el-dropdown-item v-if="this.website.switchMode" @click.native="switchDept">{{ $t('navbar.switchDept') |
| | | }} |
| | | </el-dropdown-item> |
| | | <el-dropdown-item @click.native="logout" divided>{{ $t('navbar.logOut') }} |
| | | </el-dropdown-item> |
| | | </el-dropdown-menu> |
| | | </el-dropdown> |
| | | <el-dialog title="用户信息选择" append-to-body :visible.sync="userBox" width="350px"> |
| | | <avue-form ref="form" :option="userOption" v-model="userForm" @submit="submitSwitch" /> |
| | | </el-dialog> |
| | | <el-tooltip v-if="showFullScren" effect="dark" |
| | | :content="isFullScren ? $t('navbar.screenfullF') : $t('navbar.screenfull')" placement="bottom"> |
| | | <div class="top-bar__item"> |
| | | <i :class="isFullScren ? 'icon-tuichuquanping' : 'icon-quanping'" @click="handleScreen"></i> |
| | | </div> |
| | | </el-tooltip> |
| | | <img class="top-bar__img" :src="topBarImg"> |
| | | <el-dropdown> |
| | | <span class="el-dropdown-link"> |
| | | {{ userInfo.userName }} |
| | | <i class="el-icon-arrow-down el-icon--right"></i> |
| | | </span> |
| | | <el-dropdown-menu slot="dropdown"> |
| | | <el-dropdown-item> |
| | | <router-link to="/">{{ $t('navbar.dashboard') }}</router-link> |
| | | </el-dropdown-item> |
| | | <el-dropdown-item> |
| | | <router-link to="/info/index">{{ $t('navbar.userinfo') }}</router-link> |
| | | </el-dropdown-item> |
| | | <el-dropdown-item v-if="this.website.switchMode" @click.native="switchDept">{{ $t('navbar.switchDept') |
| | | }} |
| | | </el-dropdown-item> |
| | | <el-dropdown-item @click.native="logout" divided>{{ $t('navbar.logOut') }} |
| | | </el-dropdown-item> |
| | | </el-dropdown-menu> |
| | | </el-dropdown> |
| | | <el-dialog title="用户信息选择" append-to-body :visible.sync="userBox" width="350px"> |
| | | <avue-form ref="form" :option="userOption" v-model="userForm" @submit="submitSwitch" /> |
| | | </el-dialog> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | <script> |
| | | import { getStore } from "@/util/store" |
| | | import { setTheme } from "@/util/util" |
| | | import { resetRouter } from '@/router/router' |
| | | import { mapGetters, mapState } from "vuex" |
| | | import { fullscreenToggel, listenfullscreen } from "@/util/util" |
| | | import topLock from "./top-lock" |
| | | import topMenu from "./top-menu" |
| | | import topSearch from "./top-search" |
| | | import topTheme from "./top-theme" |
| | | import topLogs from "./top-logs" |
| | | import topColor from "./top-color" |
| | | import topNotice from './top-notice' |
| | | import topLang from "./top-lang" |
| | | import { |
| | | getStore |
| | | } from "@/util/store" |
| | | import { |
| | | setTheme |
| | | } from "@/util/util" |
| | | import { |
| | | resetRouter |
| | | } from '@/router/router' |
| | | import { |
| | | mapGetters, |
| | | mapState |
| | | } from "vuex" |
| | | import { |
| | | fullscreenToggel, |
| | | listenfullscreen |
| | | } from "@/util/util" |
| | | import topLock from "./top-lock" |
| | | import topMenu from "./top-menu" |
| | | import topSearch from "./top-search" |
| | | import topTheme from "./top-theme" |
| | | import topLogs from "./top-logs" |
| | | import topColor from "./top-color" |
| | | import topNotice from './top-notice' |
| | | import topLang from "./top-lang" |
| | | |
| | | export default { |
| | | export default { |
| | | components: { |
| | | topLock, |
| | | topMenu, |
| | | topSearch, |
| | | topTheme, |
| | | topLogs, |
| | | topColor, |
| | | topNotice, |
| | | topLang |
| | | topLock, |
| | | topMenu, |
| | | topSearch, |
| | | topTheme, |
| | | topLogs, |
| | | topColor, |
| | | topNotice, |
| | | topLang |
| | | }, |
| | | name: "top", |
| | | data () { |
| | | return { |
| | | webType: getStore({ name: "webType" }), |
| | | searchShow: false, |
| | | userBox: false, |
| | | userForm: { |
| | | deptId: '', |
| | | roleId: '' |
| | | data() { |
| | | return { |
| | | webType: getStore({ |
| | | name: "webType" |
| | | }), |
| | | searchShow: false, |
| | | userBox: false, |
| | | userForm: { |
| | | deptId: '', |
| | | roleId: '' |
| | | }, |
| | | userOption: { |
| | | labelWidth: 70, |
| | | submitBtn: true, |
| | | emptyBtn: false, |
| | | submitText: '切换', |
| | | column: [{ |
| | | label: '部门', |
| | | prop: 'deptId', |
| | | type: 'select', |
| | | props: { |
| | | label: 'deptName', |
| | | value: 'id' |
| | | }, |
| | | dicUrl: '/api/blade-system/dept/select', |
| | | span: 24, |
| | | display: false, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择部门", |
| | | trigger: "blur" |
| | | }], |
| | | }, |
| | | userOption: { |
| | | labelWidth: 70, |
| | | submitBtn: true, |
| | | emptyBtn: false, |
| | | submitText: '切换', |
| | | column: [ |
| | | { |
| | | label: '部门', |
| | | prop: 'deptId', |
| | | type: 'select', |
| | | props: { |
| | | label: 'deptName', |
| | | value: 'id' |
| | | }, |
| | | dicUrl: '/api/blade-system/dept/select', |
| | | span: 24, |
| | | display: false, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择部门", |
| | | trigger: "blur" |
| | | }], |
| | | }, |
| | | { |
| | | label: '角色', |
| | | prop: 'roleId', |
| | | type: 'select', |
| | | props: { |
| | | label: 'roleName', |
| | | value: 'id' |
| | | }, |
| | | dicUrl: '/api/blade-system/role/select', |
| | | span: 24, |
| | | display: false, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择角色", |
| | | trigger: "blur" |
| | | }], |
| | | }, |
| | | ] |
| | | { |
| | | label: '角色', |
| | | prop: 'roleId', |
| | | type: 'select', |
| | | props: { |
| | | label: 'roleName', |
| | | value: 'id' |
| | | }, |
| | | dicUrl: '/api/blade-system/role/select', |
| | | span: 24, |
| | | display: false, |
| | | rules: [{ |
| | | required: true, |
| | | message: "请选择角色", |
| | | trigger: "blur" |
| | | }], |
| | | }, |
| | | showMenu: getStore({ name: "showMenu" }), |
| | | globalUserInfo: getStore({ name: "userInfo" }), |
| | | } |
| | | ] |
| | | }, |
| | | showMenu: getStore({ |
| | | name: "showMenu" |
| | | }), |
| | | globalUserInfo: getStore({ |
| | | name: "userInfo" |
| | | }), |
| | | } |
| | | }, |
| | | filters: {}, |
| | | created () { |
| | | setTheme('theme-white') |
| | | created() { |
| | | setTheme('theme-white') |
| | | }, |
| | | mounted () { |
| | | listenfullscreen(this.setScreen) |
| | | mounted() { |
| | | listenfullscreen(this.setScreen) |
| | | }, |
| | | computed: { |
| | | ...mapState({ |
| | | showDebug: state => state.common.showDebug, |
| | | showTheme: state => state.common.showTheme, |
| | | showLock: state => state.common.showLock, |
| | | showFullScren: state => state.common.showFullScren, |
| | | showCollapse: state => state.common.showCollapse, |
| | | showSearch: state => state.common.showSearch, |
| | | showColor: state => state.common.showColor |
| | | }), |
| | | ...mapGetters([ |
| | | "userInfo", |
| | | "isFullScren", |
| | | "tagWel", |
| | | "tagList", |
| | | "isCollapse", |
| | | "tag", |
| | | "logsLen", |
| | | "logsFlag" |
| | | ]), |
| | | topBarImg () { |
| | | if (this.userInfo.avatar.indexOf('upload') != -1) { |
| | | return this.website.minioUrl + this.userInfo.avatar |
| | | } else { |
| | | return this.userInfo.avatar |
| | | } |
| | | ...mapState({ |
| | | showDebug: state => state.common.showDebug, |
| | | showTheme: state => state.common.showTheme, |
| | | showLock: state => state.common.showLock, |
| | | showFullScren: state => state.common.showFullScren, |
| | | showCollapse: state => state.common.showCollapse, |
| | | showSearch: state => state.common.showSearch, |
| | | showColor: state => state.common.showColor |
| | | }), |
| | | ...mapGetters([ |
| | | "userInfo", |
| | | "isFullScren", |
| | | "tagWel", |
| | | "tagList", |
| | | "isCollapse", |
| | | "tag", |
| | | "logsLen", |
| | | "logsFlag" |
| | | ]), |
| | | topBarImg() { |
| | | // console.log("*******this.userInfo*********" + JSON.stringify(this.userInfo)) |
| | | if (this.userInfo.avatar.indexOf('upload') != -1) { |
| | | return this.website.minioUrl + this.userInfo.avatar |
| | | } else { |
| | | return this.userInfo.avatar |
| | | } |
| | | } |
| | | }, |
| | | methods: { |
| | | handleScreen () { |
| | | fullscreenToggel() |
| | | }, |
| | | setCollapse () { |
| | | this.$store.commit("SET_COLLAPSE") |
| | | }, |
| | | setScreen () { |
| | | this.$store.commit("SET_FULLSCREN") |
| | | }, |
| | | switchDept () { |
| | | const userId = this.userInfo.user_id |
| | | const deptColumn = this.findObject(this.userOption.column, "deptId") |
| | | deptColumn.dicUrl = `/api/blade-system/dept/select?userId=${userId}` |
| | | deptColumn.display = true |
| | | const roleColumn = this.findObject(this.userOption.column, "roleId") |
| | | roleColumn.dicUrl = `/api/blade-system/role/select?userId=${userId}` |
| | | roleColumn.display = true |
| | | this.userBox = true |
| | | }, |
| | | submitSwitch (form, done) { |
| | | this.$store.dispatch("refreshToken", form).then(() => { |
| | | this.userBox = false |
| | | this.$router.push({ path: "/" }) |
| | | }) |
| | | done() |
| | | }, |
| | | logout () { |
| | | this.$confirm(this.$t("logoutTip"), this.$t("tip"), { |
| | | confirmButtonText: this.$t("submitText"), |
| | | cancelButtonText: this.$t("cancelText"), |
| | | type: "warning" |
| | | }).then(() => { |
| | | this.$store.dispatch("LogOut").then(() => { |
| | | resetRouter() |
| | | handleScreen() { |
| | | fullscreenToggel() |
| | | }, |
| | | setCollapse() { |
| | | this.$store.commit("SET_COLLAPSE") |
| | | }, |
| | | setScreen() { |
| | | this.$store.commit("SET_FULLSCREN") |
| | | }, |
| | | switchDept() { |
| | | const userId = this.userInfo.user_id |
| | | const deptColumn = this.findObject(this.userOption.column, "deptId") |
| | | deptColumn.dicUrl = `/api/blade-system/dept/select?userId=${userId}` |
| | | deptColumn.display = true |
| | | const roleColumn = this.findObject(this.userOption.column, "roleId") |
| | | roleColumn.dicUrl = `/api/blade-system/role/select?userId=${userId}` |
| | | roleColumn.display = true |
| | | this.userBox = true |
| | | }, |
| | | submitSwitch(form, done) { |
| | | this.$store.dispatch("refreshToken", form).then(() => { |
| | | this.userBox = false |
| | | this.$router.push({ |
| | | path: "/" |
| | | }) |
| | | }) |
| | | done() |
| | | }, |
| | | logout() { |
| | | this.$confirm(this.$t("logoutTip"), this.$t("tip"), { |
| | | confirmButtonText: this.$t("submitText"), |
| | | cancelButtonText: this.$t("cancelText"), |
| | | type: "warning" |
| | | }).then(() => { |
| | | this.$store.dispatch("LogOut").then(() => { |
| | | resetRouter() |
| | | |
| | | if (this.webType == 'default') { |
| | | this.$router.push({ path: "/login" }) |
| | | } else if (this.webType == 'govern') { |
| | | this.$router.push({ path: "/governLogin" }) |
| | | } else if (this.webType == 'ecall'){ |
| | | this.$router.push({ path: "/ecallLogin" }) |
| | | } else { |
| | | this.$router.push({ path: "/tenementLogin" }) |
| | | } |
| | | }) |
| | | }) |
| | | } |
| | | if (this.webType == 'default') { |
| | | this.$router.push({ |
| | | path: "/login" |
| | | }) |
| | | } else if (this.webType == 'govern') { |
| | | this.$router.push({ |
| | | path: "/governLogin" |
| | | }) |
| | | } else if (this.webType == 'ecall') { |
| | | this.$router.push({ |
| | | path: "/ecallLogin" |
| | | }) |
| | | } else { |
| | | this.$router.push({ |
| | | path: "/tenementLogin" |
| | | }) |
| | | } |
| | | }) |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .noticeBtn { |
| | | .noticeBtn { |
| | | cursor: pointer; |
| | | } |
| | | } |
| | | |
| | | .top-bar-item-search { |
| | | .top-bar-item-search { |
| | | height: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | |
| | | width: 40px; |
| | | |
| | | i { |
| | | cursor: pointer; |
| | | cursor: pointer; |
| | | } |
| | | } |
| | | </style> |
| | | } |
| | | </style> |