diff --git a/src/components/Page/src/PageWrapper.vue b/src/components/Page/src/PageWrapper.vue index b4c5bd7e7c5b73960526f4021910261728984798..e6efee50c4c964e78318f3a6c5595b907918ba97 100644 --- a/src/components/Page/src/PageWrapper.vue +++ b/src/components/Page/src/PageWrapper.vue @@ -37,20 +37,15 @@ :collapsedWidth="0" :collapsible="true" :trigger="null" - :width="sidebarWidth" + :width="getSidebarWidth" :breakpoint="sidebarBreakpoint" @breakpoint="onBreakpoint" > - - + @@ -82,11 +77,11 @@ import { PageHeader } from 'ant-design-vue'; import { useContentHeight } from '/@/hooks/web/useContentHeight'; import { PageWrapperFixedHeightKey } from '..'; - import { Icon } from '/@/components/Icon'; + import { Resizer } from '/@/components/Resizer'; export default defineComponent({ name: 'PageWrapper', - components: { PageFooter, PageHeader, Icon }, + components: { PageFooter, PageHeader, Resizer }, inheritAttrs: false, props: { title: propTypes.string, @@ -112,12 +107,17 @@ const footerRef = ref(null); const { prefixCls } = useDesign('page-wrapper'); const sidebar = !!slots.sidebar; + const offsetXmoved = ref(0); provide( PageWrapperFixedHeightKey, computed(() => props.fixedHeight), ); + const getSidebarWidth = computed(() => { + return props.sidebarWidth + offsetXmoved.value; + }); + const getIsContentFullHeight = computed(() => { return props.contentFullHeight || sidebar; }); @@ -238,6 +238,10 @@ function onBreakpoint(broken: boolean) { if (broken) collapsed.value = true; } + function onSiderMove(_event, offsetX: number) { + //向右移动是负数 + offsetXmoved.value = offsetXmoved.value - offsetX; + } return { getContentStyle, @@ -252,8 +256,10 @@ omit, getContentClass, getSidebarContentStyle, + getSidebarWidth, sidebar, collapsed, + onSiderMove, onBreakpoint, }; }, @@ -321,7 +327,7 @@ &-content { // margin: 15px 0 0 15px; - margin-right: 15px; + // margin-right: 15px; height: calc(100% - 29px); } diff --git a/src/components/Resizer/Resizer.vue b/src/components/Resizer/Resizer.vue new file mode 100644 index 0000000000000000000000000000000000000000..c70990269477f3f4a1cdfe7a83e3bfe74d97acb2 --- /dev/null +++ b/src/components/Resizer/Resizer.vue @@ -0,0 +1,156 @@ + + + + \ No newline at end of file diff --git a/src/components/Resizer/index.ts b/src/components/Resizer/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..e67e7085ea6decfa49e9916dd45cd71f29d31ff0 --- /dev/null +++ b/src/components/Resizer/index.ts @@ -0,0 +1,4 @@ +import { withInstall } from '/@/utils/index'; +import resizer from './src/Resizer.vue'; + +export const Resizer = withInstall(resizer); \ No newline at end of file