<template> <Drawer v-if="getIsMobile" placement="left" :class="prefixCls" :width="getMenuWidth" :getContainer="null" :open="!getCollapsed" @close="handleClose" > <Sider /> </Drawer> <MixSider v-else-if="getIsMixSidebar" /> <Sider v-else /> </template> <script lang="ts"> import { defineComponent } from 'vue'; import Sider from './LayoutSider.vue'; import MixSider from './MixSider.vue'; import { Drawer } from 'ant-design-vue'; import { useAppInject } from '/@/hooks/web/useAppInject'; import { useMenuSetting } from '/@/hooks/setting/useMenuSetting'; import { useDesign } from '/@/hooks/web/useDesign'; export default defineComponent({ name: 'SiderWrapper', components: { Sider, Drawer, MixSider }, setup() { const { prefixCls } = useDesign('layout-sider-wrapper'); const { getIsMobile } = useAppInject(); const { setMenuSetting, getCollapsed, getMenuWidth, getIsMixSidebar } = useMenuSetting(); function handleClose() { setMenuSetting({ collapsed: true, }); } return { prefixCls, getIsMobile, getCollapsed, handleClose, getMenuWidth, getIsMixSidebar }; }, }); </script> <style lang="less"> @prefix-cls: ~'@{namespace}-layout-sider-wrapper'; .@{prefix-cls} { .ant-drawer-body { height: 100vh; padding: 0; } .ant-drawer-header-no-title { display: none; } } </style>