优化
This commit is contained in:
@@ -48,7 +48,8 @@ describe('overseas business real contract pages', () => {
|
|||||||
const purchaseEdit = read('pages/PurchaseOrderEditView.vue'); const transportList = read('pages/TransportOrdersView.vue'); const transportForm = read('pages/TransportOrderFormView.vue')
|
const purchaseEdit = read('pages/PurchaseOrderEditView.vue'); const transportList = read('pages/TransportOrdersView.vue'); const transportForm = read('pages/TransportOrderFormView.vue')
|
||||||
expect(purchaseEdit).toContain('useUnsavedWorkRegistration')
|
expect(purchaseEdit).toContain('useUnsavedWorkRegistration')
|
||||||
expect(transportForm).toContain('useUnsavedWorkRegistration')
|
expect(transportForm).toContain('useUnsavedWorkRegistration')
|
||||||
expect(transportList).toContain("row.status === 'PENDING_ACCEPTANCE'")
|
expect(transportList).not.toContain("isLooseboard.value ? row.status === 'PENDING_ACCEPTANCE'")
|
||||||
|
expect(transportList).toContain("!isLooseboard.value && !row.fleetArrangement && row.status === 'PENDING_REVIEW'")
|
||||||
expect(transportList).toContain("row.status === 'PENDING_REVIEW'")
|
expect(transportList).toContain("row.status === 'PENDING_REVIEW'")
|
||||||
expect(transportForm).toContain("form.status === 'PENDING_ACCEPTANCE'")
|
expect(transportForm).toContain("form.status === 'PENDING_ACCEPTANCE'")
|
||||||
expect(transportForm).toContain("form.status === 'PENDING_REVIEW'")
|
expect(transportForm).toContain("form.status === 'PENDING_REVIEW'")
|
||||||
|
|||||||
@@ -52,12 +52,10 @@ describe('transport document entry', () => {
|
|||||||
expect(routing.push).toHaveBeenCalledWith({ name: 'overseas-business-looseboard-detail', params: { orderId: 'LB-TEST' }, query: { customerId: '9007199254741999' } })
|
expect(routing.push).toHaveBeenCalledWith({ name: 'overseas-business-looseboard-detail', params: { orderId: 'LB-TEST' }, query: { customerId: '9007199254741999' } })
|
||||||
})
|
})
|
||||||
|
|
||||||
it('preserves the permitted looseboard edit entry alongside its detail', async () => {
|
it('does not expose looseboard editing from the list even when permission exists', async () => {
|
||||||
const wrapper = mountList('looseboard', true); await flushPromises()
|
const wrapper = mountList('looseboard', true); await flushPromises()
|
||||||
const actions = wrapper.findComponent(RowActions)
|
const actions = wrapper.findComponent(RowActions)
|
||||||
expect(actions.text()).toContain('编辑')
|
expect(actions.text()).not.toContain('编辑')
|
||||||
actions.vm.$emit('action', 'edit'); await flushPromises()
|
|
||||||
expect(routing.push).toHaveBeenCalledWith({ name: 'overseas-business-looseboard-edit', params: { orderId: 'LB-TEST' }, query: { customerId: '9007199254741999' } })
|
|
||||||
})
|
})
|
||||||
|
|
||||||
it('keeps truck mode on its own list API', async () => {
|
it('keeps truck mode on its own list API', async () => {
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ const route = useRoute(); const router = useRouter(); const access = useAccessPr
|
|||||||
const isLooseboard = computed(() => props.domain === 'looseboard'); const domainLabel = computed(() => isLooseboard.value ? '本土散板' : '本土卡车')
|
const isLooseboard = computed(() => props.domain === 'looseboard'); const domainLabel = computed(() => isLooseboard.value ? '本土散板' : '本土卡车')
|
||||||
const queryPreferenceKey = computed(() => isLooseboard.value ? 'overseas-business-looseboard-query' : 'overseas-business-truck-query')
|
const queryPreferenceKey = computed(() => isLooseboard.value ? 'overseas-business-looseboard-query' : 'overseas-business-truck-query')
|
||||||
const createPermission = computed(() => isLooseboard.value ? overseasBusinessPermissions.looseboardCreate : overseasBusinessPermissions.truckCreate)
|
const createPermission = computed(() => isLooseboard.value ? overseasBusinessPermissions.looseboardCreate : overseasBusinessPermissions.truckCreate)
|
||||||
const editPermission = computed(() => isLooseboard.value ? overseasBusinessPermissions.looseboardEdit : overseasBusinessPermissions.truckEdit)
|
const editPermission = computed(() => overseasBusinessPermissions.truckEdit)
|
||||||
const rows = ref<Array<LocalTransportOrder | LocalLooseboardOrder>>([]); const loading = ref(false); const loadError = ref<ApiErrorDetails | null>(null)
|
const rows = ref<Array<LocalTransportOrder | LocalLooseboardOrder>>([]); const loading = ref(false); const loadError = ref<ApiErrorDetails | null>(null)
|
||||||
const page = ref(1); const pageSize = ref(20); const total = ref(0)
|
const page = ref(1); const pageSize = ref(20); const total = ref(0)
|
||||||
const arrangementOpen = ref(false), arrangement = ref<FleetArrangement | null>(null)
|
const arrangementOpen = ref(false), arrangement = ref<FleetArrangement | null>(null)
|
||||||
@@ -104,8 +104,8 @@ async function load() {
|
|||||||
}
|
}
|
||||||
function search(model: QueryModel) { applied.value = { ...model }; if (page.value === 1) void load(); else page.value = 1 }
|
function search(model: QueryModel) { applied.value = { ...model }; if (page.value === 1) void load(); else page.value = 1 }
|
||||||
function openCreate() { void router.push({ name: isLooseboard.value ? 'overseas-business-looseboard-new' : 'overseas-business-truck-new' }) }
|
function openCreate() { void router.push({ name: isLooseboard.value ? 'overseas-business-looseboard-new' : 'overseas-business-truck-new' }) }
|
||||||
function canEdit(row: LocalTransportOrder | LocalLooseboardOrder) { return !row.fleetArrangement && (isLooseboard.value ? row.status === 'PENDING_ACCEPTANCE' : row.status === 'PENDING_REVIEW') }
|
function canEdit(row: LocalTransportOrder | LocalLooseboardOrder) { return !isLooseboard.value && !row.fleetArrangement && row.status === 'PENDING_REVIEW' }
|
||||||
function openEdit(row: LocalTransportOrder | LocalLooseboardOrder) { if (!canEdit(row)) return; void router.push({ name: isLooseboard.value ? 'overseas-business-looseboard-edit' : 'overseas-business-truck-edit', params: { orderId: row.orderNo }, query: { customerId: row.customerId } }) }
|
function openEdit(row: LocalTransportOrder | LocalLooseboardOrder) { if (!canEdit(row)) return; void router.push({ name: 'overseas-business-truck-edit', params: { orderId: row.orderNo }, query: { customerId: row.customerId } }) }
|
||||||
/** 单据详情保留订单与客户范围,费用在原业务单中处理。 */
|
/** 单据详情保留订单与客户范围,费用在原业务单中处理。 */
|
||||||
function openDetail(row: LocalTransportOrder | LocalLooseboardOrder) {
|
function openDetail(row: LocalTransportOrder | LocalLooseboardOrder) {
|
||||||
void router.push({ name: isLooseboard.value ? 'overseas-business-looseboard-detail' : 'overseas-business-truck-detail', params: { orderId: row.orderNo }, query: { customerId: row.customerId } })
|
void router.push({ name: isLooseboard.value ? 'overseas-business-looseboard-detail' : 'overseas-business-truck-detail', params: { orderId: row.orderNo }, query: { customerId: row.customerId } })
|
||||||
@@ -114,7 +114,6 @@ function openDetail(row: LocalTransportOrder | LocalLooseboardOrder) {
|
|||||||
function looseboardActions(row: LocalLooseboardOrder): RowActionItem[] {
|
function looseboardActions(row: LocalLooseboardOrder): RowActionItem[] {
|
||||||
return [
|
return [
|
||||||
{ key: 'detail', label: '详情', priority: 10 },
|
{ key: 'detail', label: '详情', priority: 10 },
|
||||||
{ key: 'edit', label: '编辑', visible: !row.fleetArrangement && access.can(editPermission.value), disabled: !canEdit(row) },
|
|
||||||
{ key: 'arrangement', label: '承运安排', visible: !!row.fleetArrangement },
|
{ key: 'arrangement', label: '承运安排', visible: !!row.fleetArrangement },
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user