index.vue 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <script lang="ts">
  2. import { defineComponent, computed, unref } from 'vue';
  3. import { BackTop } from 'ant-design-vue';
  4. import { useRootSetting } from '/@/hooks/setting/useRootSetting';
  5. import { useHeaderSetting } from '/@/hooks/setting/useHeaderSetting';
  6. import { useDesign } from '/@/hooks/web/useDesign';
  7. import { useUserStoreWidthOut } from '/@/store/modules/user';
  8. import { SettingButtonPositionEnum } from '/@/enums/appEnum';
  9. import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';
  10. import SessionTimeoutLogin from '/@/views/sys/login/SessionTimeoutLogin.vue';
  11. export default defineComponent({
  12. name: 'LayoutFeatures',
  13. components: {
  14. BackTop,
  15. LayoutLockPage: createAsyncComponent(() => import('/@/views/sys/lock/index.vue')),
  16. SettingDrawer: createAsyncComponent(() => import('/@/layouts/default/setting/index.vue')),
  17. SessionTimeoutLogin,
  18. },
  19. setup() {
  20. const { getUseOpenBackTop, getShowSettingButton, getSettingButtonPosition, getFullContent } =
  21. useRootSetting();
  22. const userStore = useUserStoreWidthOut();
  23. const { prefixCls } = useDesign('setting-drawer-fearure');
  24. const { getShowHeader } = useHeaderSetting();
  25. const getIsSessionTimeout = computed(() => userStore.getSessionTimeout);
  26. const getIsFixedSettingDrawer = computed(() => {
  27. if (!unref(getShowSettingButton)) {
  28. return false;
  29. }
  30. const settingButtonPosition = unref(getSettingButtonPosition);
  31. if (settingButtonPosition === SettingButtonPositionEnum.AUTO) {
  32. return !unref(getShowHeader) || unref(getFullContent);
  33. }
  34. return settingButtonPosition === SettingButtonPositionEnum.FIXED;
  35. });
  36. return {
  37. getTarget: () => document.body,
  38. getUseOpenBackTop,
  39. getIsFixedSettingDrawer,
  40. prefixCls,
  41. getIsSessionTimeout,
  42. };
  43. },
  44. });
  45. </script>
  46. <template>
  47. <LayoutLockPage />
  48. <BackTop v-if="getUseOpenBackTop" :target="getTarget" />
  49. <SettingDrawer v-if="getIsFixedSettingDrawer" :class="prefixCls" />
  50. <SessionTimeoutLogin v-if="getIsSessionTimeout" />
  51. </template>
  52. <style lang="less">
  53. @prefix-cls: ~'@{namespace}-setting-drawer-fearure';
  54. .@{prefix-cls} {
  55. position: absolute;
  56. top: 45%;
  57. right: 0;
  58. z-index: 10;
  59. display: flex;
  60. padding: 10px;
  61. color: @white;
  62. cursor: pointer;
  63. background-color: @primary-color;
  64. border-radius: 6px 0 0 6px;
  65. justify-content: center;
  66. align-items: center;
  67. svg {
  68. width: 1em;
  69. height: 1em;
  70. }
  71. }
  72. </style>