describe('OceanBookingsView',()=>{constsource=readFileSync(resolve(process.cwd(),'src/modules/ocean-bookings/pages/OceanBookingsView.vue'),'utf8');it('keeps the operation column first and left fixed',()=>{expect(source.indexOf("key: 'actions'")).toBeLessThan(source.indexOf("prop: 'bookingNo'"));expect(source).toContain("fixed: 'left'")});it('renders loading, empty and error through shared components',()=>{expect(source).toContain('LoadErrorState');expect(source).toContain(':loading="loading"');expect(source).toContain(':total="total"')});it('keeps real booking creation available without mixing draft rows into the formal list',()=>{expect(source).toContain('<template #toolbar-actions>');expect(source).toContain('新增订舱');expect(source).toContain("router.push('/ocean-bookings/new')");expect(source).toContain("access.can('platform:firstleg:ocean-booking:create')");expect(source).not.toContain('PageToolbar')});it('shows only the formal booking detail action',()=>{expect(source).toContain('<Eye :size="15" />查看');expect(source).not.toContain('<Pencil :size="15" />编辑');expect(source).not.toContain('MoreHorizontal')});it('limits status filters to the frozen formal booking states',()=>{expect(source).toContain("['CONFIRMED', 'CHANGE_PENDING', 'RELEASED', 'CANCELLED']");expect(source).toContain('options: formalStatusOptions');expect(source).toContain(':status="oceanBookingStatusLabel(row.status)"');expect(source).not.toContain(':status="row.status"')})})