From 31dc0ec0ef23d3244158b4ae0088ae4687e7c4f4 Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Thu, 3 Sep 2026 13:49:40 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/SmartLoadingDialog.test.ts | 10 ++++++++++ .../components/SmartLoadingDialog.vue | 9 ++++----- .../pages/GlobalSmartLoadingView.test.ts | 6 ++++-- .../pages/GlobalSmartLoadingView.vue | 16 ++++++++++++---- 4 files changed, 30 insertions(+), 11 deletions(-) diff --git a/src/modules/container-loading/components/SmartLoadingDialog.test.ts b/src/modules/container-loading/components/SmartLoadingDialog.test.ts index 5283eedd..64f4c3e0 100644 --- a/src/modules/container-loading/components/SmartLoadingDialog.test.ts +++ b/src/modules/container-loading/components/SmartLoadingDialog.test.ts @@ -1,6 +1,8 @@ import ElementPlus from 'element-plus' import { flushPromises, mount } from '@vue/test-utils' import { afterEach, describe, expect, it } from 'vitest' +import { readFileSync } from 'node:fs' +import { resolve } from 'node:path' import SmartLoadingDialog from './SmartLoadingDialog.vue' describe('SmartLoadingDialog', () => { @@ -18,6 +20,7 @@ describe('SmartLoadingDialog', () => { await flushPromises() expect(wrapper.find('.smart-loading-dialog__warehouses').exists()).toBe(false) + expect(document.querySelector('.smart-loading-dialog .el-dialog__body')?.classList.contains('el-dialog__body')).toBe(true) const expand = wrapper.get('button[aria-label="展开全屏"]') await expand.trigger('click') expect(document.querySelector('.smart-loading-dialog.is-fullscreen')).not.toBeNull() @@ -27,4 +30,11 @@ describe('SmartLoadingDialog', () => { expect(document.querySelector('.smart-loading-dialog.is-fullscreen')).toBeNull() expect(wrapper.find('button[aria-label="展开全屏"]').exists()).toBe(true) }) + + it('keeps the outer dialog fixed so only workbench data panes scroll', () => { + const source = readFileSync(resolve(process.cwd(), 'src/modules/container-loading/components/SmartLoadingDialog.vue'), 'utf8') + expect(source).toContain('height: 94vh; max-height: 94vh;') + expect(source).toContain('flex: 1; padding: 0; overflow: hidden;') + expect(source).toContain('min-height: 0; flex: 1; overflow: hidden;') + }) }) diff --git a/src/modules/container-loading/components/SmartLoadingDialog.vue b/src/modules/container-loading/components/SmartLoadingDialog.vue index 62657aca..045685cc 100644 --- a/src/modules/container-loading/components/SmartLoadingDialog.vue +++ b/src/modules/container-loading/components/SmartLoadingDialog.vue @@ -43,16 +43,15 @@ watch(open, (value) => { diff --git a/src/modules/container-loading/pages/GlobalSmartLoadingView.test.ts b/src/modules/container-loading/pages/GlobalSmartLoadingView.test.ts index 6db8959d..47ee4ad2 100644 --- a/src/modules/container-loading/pages/GlobalSmartLoadingView.test.ts +++ b/src/modules/container-loading/pages/GlobalSmartLoadingView.test.ts @@ -318,7 +318,7 @@ describe('GlobalSmartLoadingView', () => { const pane = wrapper.get('.candidate-pane') expect(pane.text()).toContain('IN-020') expect(pane.text()).not.toContain('IN-021') - expect(pane.text()).toContain('共 25 条 · 第 1 / 2 页') + expect(pane.text()).toContain('共 25 条 · 1/2 页') await pane.findAll('button').find((button) => button.attributes('aria-label') === '下一页')!.trigger('click') await flushPromises() @@ -671,12 +671,14 @@ describe('GlobalSmartLoadingView', () => { expect(source).toContain('height: clamp(520px, 68vh, 720px); min-height: 0;') expect(source).toContain('.dispatch-pane { display: flex; min-width: 0; min-height: 0; flex-direction: column; }') expect(source).toContain('.candidate-pane :deep(.data-table),.plan-pane :deep(.data-table) { min-height: 0; flex: 1; }') + expect(source).toContain(".candidate-pane :deep(.data-table__page-button[aria-label^='第']),.candidate-pane :deep(.data-table__page-ellipsis) { display: none; }") + expect(source).toContain('.candidate-pane :deep(.data-table__page-size .el-select) { width: 68px; }') expect(source).toContain('.container-list { display: grid; min-height: 0; flex: 1;') expect(source).toContain('grid-auto-rows: max-content;') expect(source).toContain('overflow-wrap: anywhere;') expect(source).toContain('.candidate-pane,.plan-pane { height: min(68vh, 560px); min-height: 420px; }') expect(source).toContain('.container-pane { max-height: min(58vh, 460px); }') - expect(source).toContain('grid-template-columns: minmax(390px, 1.1fr) minmax(320px, .9fr) minmax(460px, 1.35fr)') + expect(source).toContain('grid-template-columns: minmax(430px, 1fr) minmax(260px, 280px) minmax(520px, 1.25fr)') expect(source).toContain('min-height: 112px') expect(source).toContain("label: '预计到货时间'") expect(source).toContain("label: '订单状态'") diff --git a/src/modules/container-loading/pages/GlobalSmartLoadingView.vue b/src/modules/container-loading/pages/GlobalSmartLoadingView.vue index bf1de4a7..53c4a5a7 100644 --- a/src/modules/container-loading/pages/GlobalSmartLoadingView.vue +++ b/src/modules/container-loading/pages/GlobalSmartLoadingView.vue @@ -614,6 +614,7 @@ onMounted(() => { void load(); void loadCustomers() }) column-settings-mode="hide" :empty-text="selectedContainer ? '当前仓库暂无可装明细' : '暂无可用柜次'" > +