From beca65f4d01ca07c358102a35b949c2a4f277afe Mon Sep 17 00:00:00 2001 From: baoshiwei <baoshiwei@shlanbao.cn> Date: 星期三, 24 五月 2023 10:36:27 +0800 Subject: [PATCH] 增加车间监控界面 --- src/layouts/default/header/components/user-dropdown/index.vue | 396 ++++++++++++++++++++++++++++---------------------------- 1 files changed, 198 insertions(+), 198 deletions(-) diff --git a/src/layouts/default/header/components/user-dropdown/index.vue b/src/layouts/default/header/components/user-dropdown/index.vue index 1170dde..6a97484 100644 --- a/src/layouts/default/header/components/user-dropdown/index.vue +++ b/src/layouts/default/header/components/user-dropdown/index.vue @@ -1,233 +1,233 @@ <template> - <Dropdown placement="bottomLeft" :overlayClassName="`${prefixCls}-dropdown-overlay`"> - <span :class="[prefixCls, `${prefixCls}--${theme}`]" class="flex"> - <img :class="`${prefixCls}__header`" :src="getAvatarUrl" /> - <span :class="`${prefixCls}__info hidden md:block`"> - <span :class="`${prefixCls}__name `" class="truncate"> - {{ getUserInfo.realname }} - </span> - </span> - </span> + <Dropdown placement="bottomLeft" :overlayClassName="`${prefixCls}-dropdown-overlay`"> + <span :class="[prefixCls, `${prefixCls}--${theme}`]" class="flex"> + <img :class="`${prefixCls}__header`" :src="getAvatarUrl" /> + <span :class="`${prefixCls}__info hidden md:block`"> + <span :class="`${prefixCls}__name `" class="truncate"> + {{ getUserInfo.realname }} + </span> + </span> + </span> - <template #overlay> - <Menu @click="handleMenuClick"> - <MenuItem key="doc" :text="t('layout.header.dropdownItemDoc')" icon="ion:document-text-outline" v-if="getShowDoc" /> - <MenuDivider v-if="getShowDoc" /> - <MenuItem key="account" :text="t('layout.header.dropdownItemSwitchAccount')" icon="ant-design:setting-outlined" /> - <MenuItem key="password" :text="t('layout.header.dropdownItemSwitchPassword')" icon="ant-design:edit-outlined" /> - <MenuItem key="depart" :text="t('layout.header.dropdownItemSwitchDepart')" icon="ant-design:cluster-outlined" /> - <MenuItem key="cache" :text="t('layout.header.dropdownItemRefreshCache')" icon="ion:sync-outline" /> - <!-- <MenuItem + <template #overlay> + <Menu @click="handleMenuClick"> + <!-- <MenuItem key="doc" :text="t('layout.header.dropdownItemDoc')" icon="ion:document-text-outline" v-if="getShowDoc" /> --> + <MenuDivider v-if="getShowDoc" /> + <MenuItem key="account" :text="t('layout.header.dropdownItemSwitchAccount')" icon="ant-design:setting-outlined" /> + <MenuItem key="password" :text="t('layout.header.dropdownItemSwitchPassword')" icon="ant-design:edit-outlined" /> + <MenuItem key="depart" :text="t('layout.header.dropdownItemSwitchDepart')" icon="ant-design:cluster-outlined" /> + <MenuItem key="cache" :text="t('layout.header.dropdownItemRefreshCache')" icon="ion:sync-outline" /> + <!-- <MenuItem v-if="getUseLockPage" key="lock" :text="t('layout.header.tooltipLock')" icon="ion:lock-closed-outline" />--> - <MenuItem key="logout" :text="t('layout.header.dropdownItemLoginOut')" icon="ion:power-outline" /> - </Menu> - </template> - </Dropdown> - <LockAction @register="register" /> - <DepartSelect ref="loginSelectRef" /> - <UpdatePassword ref="updatePasswordRef" /> + <MenuItem key="logout" :text="t('layout.header.dropdownItemLoginOut')" icon="ion:power-outline" /> + </Menu> + </template> + </Dropdown> + <LockAction @register="register" /> + <DepartSelect ref="loginSelectRef" /> + <UpdatePassword ref="updatePasswordRef" /> </template> <script lang="ts"> - // components - import { Dropdown, Menu } from 'ant-design-vue'; + // components + import { Dropdown, Menu } from 'ant-design-vue' - import { defineComponent, computed, ref } from 'vue'; + import { defineComponent, computed, ref } from 'vue' - import { SITE_URL } from '/@/settings/siteSetting'; + import { SITE_URL } from '/@/settings/siteSetting' - import { useUserStore } from '/@/store/modules/user'; - import { useHeaderSetting } from '/@/hooks/setting/useHeaderSetting'; - import { useI18n } from '/@/hooks/web/useI18n'; - import { useDesign } from '/@/hooks/web/useDesign'; - import { useModal } from '/@/components/Modal'; - import { useMessage } from '/src/hooks/web/useMessage'; - import { useGo } from '/@/hooks/web/usePage'; - import headerImg from '/@/assets/images/header.jpg'; - import { propTypes } from '/@/utils/propTypes'; - import { openWindow } from '/@/utils'; + import { useUserStore } from '/@/store/modules/user' + import { useHeaderSetting } from '/@/hooks/setting/useHeaderSetting' + import { useI18n } from '/@/hooks/web/useI18n' + import { useDesign } from '/@/hooks/web/useDesign' + import { useModal } from '/@/components/Modal' + import { useMessage } from '/src/hooks/web/useMessage' + import { useGo } from '/@/hooks/web/usePage' + import headerImg from '/@/assets/images/header.jpg' + import { propTypes } from '/@/utils/propTypes' + import { openWindow } from '/@/utils' - import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent'; + import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent' - import { refreshCache, queryAllDictItems } from '/@/views/system/dict/dict.api'; - import { DB_DICT_DATA_KEY } from '/src/enums/cacheEnum'; - import { removeAuthCache, setAuthCache } from '/src/utils/auth'; - import { getFileAccessHttpUrl } from '/@/utils/common/compUtils'; + import { refreshCache, queryAllDictItems } from '/@/views/system/dict/dict.api' + import { DB_DICT_DATA_KEY } from '/src/enums/cacheEnum' + import { removeAuthCache, setAuthCache } from '/src/utils/auth' + import { getFileAccessHttpUrl } from '/@/utils/common/compUtils' - type MenuEvent = 'logout' | 'doc' | 'lock' | 'cache' | 'depart'; - const { createMessage } = useMessage(); - export default defineComponent({ - name: 'UserDropdown', - components: { - Dropdown, - Menu, - MenuItem: createAsyncComponent(() => import('./DropMenuItem.vue')), - MenuDivider: Menu.Divider, - LockAction: createAsyncComponent(() => import('../lock/LockModal.vue')), - DepartSelect: createAsyncComponent(() => import('./DepartSelect.vue')), - UpdatePassword: createAsyncComponent(() => import('./UpdatePassword.vue')), - }, - props: { - theme: propTypes.oneOf(['dark', 'light']), - }, - setup() { - const { prefixCls } = useDesign('header-user-dropdown'); - const { t } = useI18n(); - const { getShowDoc, getUseLockPage } = useHeaderSetting(); - const userStore = useUserStore(); - const go = useGo(); + type MenuEvent = 'logout' | 'doc' | 'lock' | 'cache' | 'depart' + const { createMessage } = useMessage() + export default defineComponent({ + name: 'UserDropdown', + components: { + Dropdown, + Menu, + MenuItem: createAsyncComponent(() => import('./DropMenuItem.vue')), + MenuDivider: Menu.Divider, + LockAction: createAsyncComponent(() => import('../lock/LockModal.vue')), + DepartSelect: createAsyncComponent(() => import('./DepartSelect.vue')), + UpdatePassword: createAsyncComponent(() => import('./UpdatePassword.vue')), + }, + props: { + theme: propTypes.oneOf(['dark', 'light']), + }, + setup() { + const { prefixCls } = useDesign('header-user-dropdown') + const { t } = useI18n() + const { getShowDoc, getUseLockPage } = useHeaderSetting() + const userStore = useUserStore() + const go = useGo() - const getUserInfo = computed(() => { - const { realname = '', avatar, desc } = userStore.getUserInfo || {}; - return { realname, avatar: avatar || headerImg, desc }; - }); + const getUserInfo = computed(() => { + const { realname = '', avatar, desc } = userStore.getUserInfo || {} + return { realname, avatar: avatar || headerImg, desc } + }) - const getAvatarUrl = computed(() => { - let { avatar } = getUserInfo.value; - if (avatar == headerImg) { - return avatar; - } else { - return getFileAccessHttpUrl(avatar); - } - }); + const getAvatarUrl = computed(() => { + let { avatar } = getUserInfo.value + if (avatar == headerImg) { + return avatar + } else { + return getFileAccessHttpUrl(avatar) + } + }) - const [register, { openModal }] = useModal(); - /** - * 澶氶儴闂ㄥ脊绐楅�昏緫 - */ - const loginSelectRef = ref(); - function handleLock() { - openModal(true); - } + const [register, { openModal }] = useModal() + /** + * 澶氶儴闂ㄥ脊绐楅�昏緫 + */ + const loginSelectRef = ref() + function handleLock() { + openModal(true) + } - // login out - function handleLoginOut() { - userStore.confirmLoginOut(); - } + // login out + function handleLoginOut() { + userStore.confirmLoginOut() + } - // open doc - function openDoc() { - openWindow(SITE_URL); - } + // open doc + function openDoc() { + openWindow(SITE_URL) + } - // 娓呴櫎缂撳瓨 - async function clearCache() { - const result = await refreshCache(); - if (result.success) { - const res = await queryAllDictItems(); - removeAuthCache(DB_DICT_DATA_KEY); - setAuthCache(DB_DICT_DATA_KEY, res.result); - createMessage.success('鍒锋柊缂撳瓨瀹屾垚锛�'); - } else { - createMessage.error('鍒锋柊缂撳瓨澶辫触锛�'); - } - } - // 鍒囨崲閮ㄩ棬 - function updateCurrentDepart() { - loginSelectRef.value.show(); - } - // 淇敼瀵嗙爜 - const updatePasswordRef = ref(); - function updatePassword() { - updatePasswordRef.value.show(userStore.getUserInfo.username); - } + // 娓呴櫎缂撳瓨 + async function clearCache() { + const result = await refreshCache() + if (result.success) { + const res = await queryAllDictItems() + removeAuthCache(DB_DICT_DATA_KEY) + setAuthCache(DB_DICT_DATA_KEY, res.result) + createMessage.success('鍒锋柊缂撳瓨瀹屾垚锛�') + } else { + createMessage.error('鍒锋柊缂撳瓨澶辫触锛�') + } + } + // 鍒囨崲閮ㄩ棬 + function updateCurrentDepart() { + loginSelectRef.value.show() + } + // 淇敼瀵嗙爜 + const updatePasswordRef = ref() + function updatePassword() { + updatePasswordRef.value.show(userStore.getUserInfo.username) + } - function handleMenuClick(e: { key: MenuEvent }) { - switch (e.key) { - case 'logout': - handleLoginOut(); - break; - case 'doc': - openDoc(); - break; - case 'lock': - handleLock(); - break; - case 'cache': - clearCache(); - break; - case 'depart': - updateCurrentDepart(); - break; - case 'password': - updatePassword(); - break; - case 'account': - //update-begin---author:wangshuai ---date:20221125 for锛氳繘鍏ョ敤鎴疯缃〉闈�------------ - go(`/system/usersetting`); - //update-end---author:wangshuai ---date:20221125 for锛氳繘鍏ョ敤鎴疯缃〉闈�-------------- - break; - } - } + function handleMenuClick(e: { key: MenuEvent }) { + switch (e.key) { + case 'logout': + handleLoginOut() + break + case 'doc': + openDoc() + break + case 'lock': + handleLock() + break + case 'cache': + clearCache() + break + case 'depart': + updateCurrentDepart() + break + case 'password': + updatePassword() + break + case 'account': + //update-begin---author:wangshuai ---date:20221125 for锛氳繘鍏ョ敤鎴疯缃〉闈�------------ + go(`/system/usersetting`) + //update-end---author:wangshuai ---date:20221125 for锛氳繘鍏ョ敤鎴疯缃〉闈�-------------- + break + } + } - return { - prefixCls, - t, - getUserInfo, - getAvatarUrl, - handleMenuClick, - getShowDoc, - register, - getUseLockPage, - loginSelectRef, - updatePasswordRef, - }; - }, - }); + return { + prefixCls, + t, + getUserInfo, + getAvatarUrl, + handleMenuClick, + getShowDoc, + register, + getUseLockPage, + loginSelectRef, + updatePasswordRef, + } + }, + }) </script> <style lang="less"> - @prefix-cls: ~'@{namespace}-header-user-dropdown'; + @prefix-cls: ~'@{namespace}-header-user-dropdown'; - .@{prefix-cls} { - height: @header-height; - padding: 0 0 0 10px; - padding-right: 10px; - overflow: hidden; - font-size: 12px; - cursor: pointer; - align-items: center; + .@{prefix-cls} { + height: @header-height; + padding: 0 0 0 10px; + padding-right: 10px; + overflow: hidden; + font-size: 12px; + cursor: pointer; + align-items: center; - img { - width: 24px; - height: 24px; - margin-right: 12px; - } + img { + width: 24px; + height: 24px; + margin-right: 12px; + } - &__header { - border-radius: 50%; - } + &__header { + border-radius: 50%; + } - &__name { - font-size: 14px; - } + &__name { + font-size: 14px; + } - &--dark { - &:hover { - background-color: @header-dark-bg-hover-color; - } - } + &--dark { + &:hover { + background-color: @header-dark-bg-hover-color; + } + } - &--light { - &:hover { - background-color: @header-light-bg-hover-color; - } + &--light { + &:hover { + background-color: @header-light-bg-hover-color; + } - .@{prefix-cls}__name { - color: @text-color-base; - } + .@{prefix-cls}__name { + color: @text-color-base; + } - .@{prefix-cls}__desc { - color: @header-light-desc-color; - } - } + .@{prefix-cls}__desc { + color: @header-light-desc-color; + } + } - &-dropdown-overlay { - .ant-dropdown-menu-item { - min-width: 160px; - } - } - } + &-dropdown-overlay { + .ant-dropdown-menu-item { + min-width: 160px; + } + } + } </style> -- Gitblit v1.9.3