From bda33648f3f703a581e592c73b9d6f4e7a13db60 Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Thu, 29 Oct 2026 16:13:22 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=9F=E4=B8=80=E6=B5=B7=E5=A4=96=E4=BB=93?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E9=A1=B5=E6=A0=B7=E5=BC=8F=E4=B8=8E=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../views/ReturnOrdersView.test.mjs | 37 +- .../views/ReturnOrdersView.vue | 104 ++++-- .../views/WarehouseServiceView.vue | 321 ++++++++++++++++-- .../views/labelingCreateForm.test.mjs | 67 ++++ .../views/transferCreateForm.test.mjs | 77 +++++ .../views/warehouseDisposalForm.test.mjs | 31 ++ .../views/warehouseTransferForm.test.mjs | 3 +- 7 files changed, 599 insertions(+), 41 deletions(-) create mode 100644 src/modules/overseas-warehouse/views/labelingCreateForm.test.mjs create mode 100644 src/modules/overseas-warehouse/views/transferCreateForm.test.mjs diff --git a/src/modules/overseas-warehouse/views/ReturnOrdersView.test.mjs b/src/modules/overseas-warehouse/views/ReturnOrdersView.test.mjs index 3aee7bb..37ef489 100644 --- a/src/modules/overseas-warehouse/views/ReturnOrdersView.test.mjs +++ b/src/modules/overseas-warehouse/views/ReturnOrdersView.test.mjs @@ -2,6 +2,7 @@ import assert from 'node:assert/strict' import { readFileSync } from 'node:fs' import test from 'node:test' import ts from 'typescript' +import { createRequire } from 'node:module' const view = readFileSync(new URL('./ReturnOrdersView.vue', import.meta.url), 'utf8') const api = readFileSync(new URL('../api/returnOrders.ts', import.meta.url), 'utf8') @@ -118,7 +119,7 @@ test('新建退货预报使用独立路由页面,编辑仍保留加宽弹框', test('新建预报铺满工作区,基础字段等宽对齐且数量输入保持紧凑', () => { assert.match(view, /return-create-surface \{ width:100%; min-width:0;[^}]*margin:0;/) - assert.match(view, //) + assert.match(view, /]*:model="form"[^>]*:rules="createFormRules"[^>]*label-position="top"/) assert.match(view, /return-create-form :deep\(\.el-input\), \.return-create-body \.return-create-form :deep\(\.el-select\) \{ width:100%; max-width:none;/) assert.match(view, /:deep\(\.el-table \.el-input-number\) \{ width:120px;/) assert.match(view, /]*>/) @@ -314,3 +315,37 @@ test('贴标入口保留完成入库门禁与退货来源,箱号只作为目 { name: 'overseas-labeling-create', query: { returnNo: 'RT-TEST', warehouseId: 'WH-TEST', cartonMark: 'RC-TEST' } }, ]) }) + +test('新增退货校验海外仓与联系人,空白联系人无效,客户参考号可选', async () => { + const { default: Schema } = createRequire(import.meta.resolve('element-plus'))('async-validator') + const source = view.slice(view.indexOf('const createFormRules:'), view.indexOf('const selectedOperationWarehouse =')) + const code = ts.transpileModule(source, { compilerOptions: { target: ts.ScriptTarget.ES2022 } }).outputText + const rules = new Function(code + '\nreturn createFormRules')() + const validator = new Schema(rules) + await assert.rejects(validator.validate({ overseasWarehouseId: '', warehouseContactName: ' ', warehouseContactPhone: '' }), error => { + assert.deepEqual(Object.keys(error.fields).sort(), ['overseasWarehouseId', 'warehouseContactName', 'warehouseContactPhone']) + return true + }) + await validator.validate({ overseasWarehouseId: 'WH', warehouseContactName: 'Contact', warehouseContactPhone: '123456', customerReferenceNo: '' }) +}) + +test('新增校验失败或正在提交时不继续创建,编辑保持既有校验路径', async () => { + const start = view.indexOf('async function submit()') + const end = view.indexOf(' const items =', start) + const code = view.slice(start, end) + '\nreturn "continue"\n}' + const creating = { value: false }, props = { createPage: true } + let validations = 0 + const formRef = { value: { validate: async () => { validations++; throw new Error('required') } } } + const submit = new Function('creating', 'props', 'createFormRef', code + '\nreturn submit')(creating, props, formRef) + assert.equal(await submit(), undefined) + assert.equal(validations, 1) + creating.value = true + assert.equal(await submit(), undefined) + assert.equal(validations, 1) + creating.value = false + props.createPage = false + assert.equal(await submit(), 'continue') + props.createPage = true + formRef.value.validate = async () => true + assert.equal(await submit(), 'continue') +}) diff --git a/src/modules/overseas-warehouse/views/ReturnOrdersView.vue b/src/modules/overseas-warehouse/views/ReturnOrdersView.vue index 45d7832..52013df 100644 --- a/src/modules/overseas-warehouse/views/ReturnOrdersView.vue +++ b/src/modules/overseas-warehouse/views/ReturnOrdersView.vue @@ -1,6 +1,6 @@