From e1457a8e570150c8b7d50435a9930d0a75994f86 Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Fri, 9 Oct 2026 22:05:51 +0800 Subject: [PATCH] feat(admin): streamline appointments and fleet intake --- src/core/navigation/adminNavigation.test.ts | 2 +- src/core/navigation/adminNavigation.ts | 2 +- .../AppointmentCalendarPanel.test.ts | 14 ++ .../AppointmentCalendarPanel.vue | 14 +- .../AppointmentCalendarView.test.ts | 138 +++++++++++++-- .../AppointmentCalendarView.vue | 162 +++++++++++++++--- .../AppointmentCargoPanel.test.ts | 44 +++++ .../AppointmentCargoPanel.vue | 90 ++++++++++ .../AppointmentFollowupDialog.test.ts | 51 ++++++ .../AppointmentFollowupDialog.vue | 101 +++++++++++ .../AppointmentInboundCodes.test.ts | 41 +++++ .../AppointmentInboundCodes.vue | 37 ++++ .../appointment-calendar/PROTOTYPE_MATRIX.md | 9 +- .../appointment-calendar/planningApi.test.ts | 14 ++ .../appointment-calendar/planningApi.ts | 71 ++++++++ src/modules/overseas-master-data/AGENTS.md | 2 + .../overseas-master-data/PROTOTYPE_MATRIX.md | 14 ++ .../api/capacityOffers.ts | 13 +- .../overseas-master-data/api/tripBookings.ts | 20 +-- src/modules/overseas-master-data/api/trips.ts | 10 ++ .../capacityOfferTypes.ts | 11 +- .../components/CapacityDialogClosing.test.ts | 13 +- .../components/CapacityInquiryDialog.test.ts | 4 +- .../components/CapacityInquiryDialog.vue | 48 ++++-- .../components/CapacityInquiryFulfillment.vue | 37 ++++ .../components/CapacityInquiryTable.vue | 14 +- .../TripBookingFulfillmentDialog.test.ts | 15 +- .../TripBookingFulfillmentDialog.vue | 41 +++-- .../components/TripDispatchSelector.vue | 21 +++ .../components/TripPreparationDialog.test.ts | 41 +++++ .../components/TripPreparationDialog.vue | 86 ++++++++++ src/modules/overseas-master-data/index.ts | 4 + .../pages/CapacityOfferDetailView.vue | 28 ++- .../pages/CapacityOffersBehavior.test.ts | 53 ++++-- .../pages/CapacityOffersView.vue | 64 ++++--- .../pages/TripDetailView.vue | 5 +- src/modules/overseas-master-data/routes.ts | 2 +- .../pages/DispatchesView.test.ts | 25 +-- .../pages/DispatchesView.vue | 19 +- 39 files changed, 1215 insertions(+), 165 deletions(-) create mode 100644 src/modules/appointment-calendar/AppointmentCargoPanel.test.ts create mode 100644 src/modules/appointment-calendar/AppointmentCargoPanel.vue create mode 100644 src/modules/appointment-calendar/AppointmentFollowupDialog.test.ts create mode 100644 src/modules/appointment-calendar/AppointmentFollowupDialog.vue create mode 100644 src/modules/appointment-calendar/AppointmentInboundCodes.test.ts create mode 100644 src/modules/appointment-calendar/AppointmentInboundCodes.vue create mode 100644 src/modules/appointment-calendar/planningApi.test.ts create mode 100644 src/modules/appointment-calendar/planningApi.ts create mode 100644 src/modules/overseas-master-data/components/CapacityInquiryFulfillment.vue create mode 100644 src/modules/overseas-master-data/components/TripDispatchSelector.vue create mode 100644 src/modules/overseas-master-data/components/TripPreparationDialog.test.ts create mode 100644 src/modules/overseas-master-data/components/TripPreparationDialog.vue diff --git a/src/core/navigation/adminNavigation.test.ts b/src/core/navigation/adminNavigation.test.ts index b1dbf3b6..12c2c7e8 100644 --- a/src/core/navigation/adminNavigation.test.ts +++ b/src/core/navigation/adminNavigation.test.ts @@ -23,7 +23,7 @@ describe('adminNavigation', () => { { title: '货柜管理', children: ['订舱列表', '拖车列表', '货柜列表', '装柜清单', '预装清单'] }, { title: '海外尾程', children: ['尾程订单', '入库单', '废弃单', '出库单', '换标单', '派送单', '托盘管理', '库位管理', '库存管理', '退货库存管理', '退货箱号管理'] }, { title: '预约管理', children: ['预约列表'] }, - { title: '车辆管理', children: ['排车列表', '车辆列表', '司机管理', '车次管理', '拼车需求池', '出车记录'] }, + { title: '车辆管理', children: ['排车列表', '车辆列表', '司机管理', '车次管理', '拼车接货', '出车记录'] }, { title: '海外业务', children: ['采购订单', '本土卡车', '本土散板'] }, { title: '客户服务', children: ['异常订单'] }, { title: '财务管理', children: ['客户账户', '客户应收应付', '应收款统计表', '客户对账单', '结算单应收', '结算单应付'] }, diff --git a/src/core/navigation/adminNavigation.ts b/src/core/navigation/adminNavigation.ts index 4fd3b351..571b3797 100644 --- a/src/core/navigation/adminNavigation.ts +++ b/src/core/navigation/adminNavigation.ts @@ -135,7 +135,7 @@ export const adminNavigation: AdminNavigationNode[] = [ { key: 'vehicle-list', title: '车辆列表', icon: Truck, path: '/overseas-master-data/vehicles', permission: 'platform:overseas-master-data:vehicle:list' }, { key: 'driver-management', title: '司机管理', icon: ContactRound, path: '/overseas-master-data/drivers', permission: 'platform:overseas-master-data:driver:list' }, { key: 'fleet-trips', title: '车次管理', icon: Truck, path: '/overseas-master-data/trips', permission: 'platform:fleet:trip:list' }, - { key: 'fleet-capacity-offers', title: '拼车需求池', icon: Truck, path: '/overseas-master-data/capacity-offers', permission: 'platform:fleet:capacity-offer:list', permissionAnyOf: ['platform:fleet:capacity-offer:manage'] }, + { key: 'fleet-capacity-offers', title: '拼车接货', icon: Truck, path: '/overseas-master-data/capacity-offers', permission: 'platform:fleet:capacity-offer:list', permissionAnyOf: ['platform:fleet:capacity-offer:manage'] }, { key: 'fleet-operations', title: '出车记录', icon: Truck, path: '/overseas-master-data/trip-operations', permission: 'platform:fleet:operations:list' }, ], }, diff --git a/src/modules/appointment-calendar/AppointmentCalendarPanel.test.ts b/src/modules/appointment-calendar/AppointmentCalendarPanel.test.ts index 141ca57d..8cfe2150 100644 --- a/src/modules/appointment-calendar/AppointmentCalendarPanel.test.ts +++ b/src/modules/appointment-calendar/AppointmentCalendarPanel.test.ts @@ -50,4 +50,18 @@ describe('appointment calendar interactions', () => { expect(wrapper.emitted('edit')?.[0]?.[0]).toMatchObject({ key: 'a' }) expect(wrapper.emitted('delete')?.[0]?.[0]).toMatchObject({ key: 'a' }) }) + + it('renders many inbound codes outside the two-column fields with only three previews', async () => { + const wrapper = render() + await wrapper.setProps({ events: [{ + key: 'many', type: 'delivery', date: '2026-09-24', time: '09:00', title: 'ONT8 预约送仓', + fields: [{ label: '货物信息', value: '20 票 / 12 个客户' }], + inboundCodes: Array.from({ length: 20 }, (_, index) => `WT-INBOUND-${index}`), canEdit: true, + }] }) + const card = wrapper.get('.detail-event') + expect(card.get('dl').text()).not.toContain('WT-INBOUND') + expect(card.findAll('.inbound-codes li')).toHaveLength(3) + expect(card.get('.inbound-codes').text()).toContain('20 个') + expect(card.get('footer').text()).toContain('编辑') + }) }) diff --git a/src/modules/appointment-calendar/AppointmentCalendarPanel.vue b/src/modules/appointment-calendar/AppointmentCalendarPanel.vue index ad532175..dd418631 100644 --- a/src/modules/appointment-calendar/AppointmentCalendarPanel.vue +++ b/src/modules/appointment-calendar/AppointmentCalendarPanel.vue @@ -1,6 +1,7 @@