This commit is contained in:
2026-09-22 13:51:58 +08:00
parent aefcd2565f
commit fed257a720
8 changed files with 174 additions and 45 deletions
@@ -68,9 +68,9 @@ describe('PreloadPlanDetailView prototype contract', () => {
expect(source).toContain("['EDITING', 'LOADING'].includes(summary.status)")
expect(source).toContain('if (!summary.containerNo) return true')
expect(source).not.toContain('summary?.containerNo && summary.status')
expect(source).toContain('PDA 已领取或作业已开始,真实集装箱号只读。')
expect(source).toContain('该历史 PDA 任务缺少真实集装箱号;补录保存后即可进入任务。')
expect(source).toContain('确认预装前必须补录真实集装箱号。')
expect(source).not.toContain('transportCorrectionNote')
expect(detailSource).not.toContain('class="readiness-note transport-note"')
expect(detailSource).not.toContain('真实集装箱号:</strong>')
expect(source).toContain("isContainerCorrection.value ? '纠正集装箱号 / 航次' : '补录集装箱号 / 航次'")
expect(source).toContain("isContainerCorrection.value && !String(value || '').trim() ? new Error('纠错时请输入操作原因')")
expect(source).toContain("String(value || '').trim().toUpperCase()")
@@ -86,24 +86,38 @@ describe('PreloadPlanDetailView prototype contract', () => {
expect(detailSource).toContain('role="status"')
expect(detailSource).toContain("confirmationStatus !== 'CONFIRMED' && !preloadSummary.readiness.canConfirm")
expect(detailSource).not.toContain('type="success" :closable="false" show-icon title="整份预装计划已确认"')
expect(detailSource).toContain('<el-button type="primary" :loading="confirmSaving"')
expect(detailSource).toContain('type="primary" :loading="confirmSaving"')
expect(detailSource).not.toContain('<el-button type="success" :loading="confirmSaving"')
})
it('keeps explanatory notes outside the item list hidden', () => {
expect(detailSource).not.toContain('核对运输信息、确认预装并维护逐条仓库备注')
expect(detailSource).not.toContain('仓库备注将随装柜完成资料下发海外仓')
expect(source).not.toContain('暂无候选,请先配置国内头程 PDA 作业员')
})
it('confirms the whole plan through readiness with stable idempotency and refreshes the detail', () => {
expect(source).toContain('confirmPreloadPlan(summary.planId, summary.version, confirmOperationId.value)')
expect(source).toContain('confirmPreloadPlan(summary.planId, summary.version, assigneeId.value, confirmOperationId.value)')
expect(source).toContain('listDomesticPdaOperators(warehouseId.value)')
expect(source).toContain('v-model="assigneeId"')
expect(source).toContain('<template #pda-operator>')
expect(detailSource).toContain('<slot v-if="mode === \'preload\'" name="pda-operator" />')
expect(source).not.toContain('暂无候选,请先配置国内头程 PDA 作业员')
expect(detailSource).toContain('!pdaAssigneeSelected')
expect(source).toContain('selectedAssignee?.displayName')
expect(source).not.toContain('<el-form-item label="国内头程 PDA 作业员(必选)">')
expect(source).toContain('summary?.readiness.canConfirm')
expect(source).toContain('confirmSaving.value')
expect(source).toContain('await loadDetail()')
expect(source).toContain('本操作将确认整份预装计划')
expect(source).toContain(':confirm-disabled="!detail?.summary.readiness.canConfirm"')
expect(source).toContain(':confirm-disabled="!detail?.summary.readiness.canConfirm || !assigneeId || assigneeLoading"')
expect(source).not.toContain('/inbounds/')
})
it('keeps backend confirmation errors visible and supports narrow dialogs', () => {
expect(source).toContain("confirmError.value = getApiErrorDetails(cause, '确认预装失败,请稍后重试')")
expect(source).toContain('<OperationErrorToast :details="remarkError || editError || confirmError" />')
expect(source).not.toContain(':message="confirmError.message"')
expect(source).toContain(':message="confirmError.message"')
expect(source).toContain('width="min(520px, calc(100vw - 28px))"')
expect(source).toContain("label=\"柜次号\"")
expect(source).toContain("label=\"集装箱号\"")