diff --git a/src/modules/cross-border/businessOrders.test.mjs b/src/modules/cross-border/businessOrders.test.mjs index 7a9b649..e571c71 100644 --- a/src/modules/cross-border/businessOrders.test.mjs +++ b/src/modules/cross-border/businessOrders.test.mjs @@ -8,13 +8,17 @@ const view = readFileSync(new URL('./components/BusinessOrdersView.vue', import. test('activates all three customer cross-border pages with frozen permissions', () => { for (const [path, permission] of [ - ['cross-border/procurement', 'merchant:cross-border:procurement'], - ['cross-border/domestic-trucking', 'merchant:cross-border:domestic-trucking'], - ['cross-border/pallet-shipping', 'merchant:cross-border:pallet-shipping'], + ['cross-border/procurement', 'merchant:cross-border:procurement:list'], + ['cross-border/domestic-trucking', 'merchant:cross-border:domestic-trucking:list'], + ['cross-border/pallet-shipping', 'merchant:cross-border:pallet-shipping:list'], ]) { assert.match(routes, new RegExp(`path: '${path}'[\\s\\S]*?release: 'active'[\\s\\S]*?permission: '${permission}'`)) } assert.doesNotMatch(view, /PrototypeFeatureView|mock|customerId|tenantId/i) + assert.match(view, /merchant:cross-border:procurement:create/) + assert.match(view, /merchant:cross-border:domestic-trucking:create/) + assert.match(view, /merchant:cross-border:pallet-shipping:create/) + assert.match(view, /v-else-if="canCreate"/) }) test('uses only merchant overseas endpoints and keeps retry idempotency stable', () => { diff --git a/src/modules/cross-border/components/BusinessOrdersView.vue b/src/modules/cross-border/components/BusinessOrdersView.vue index 9bba647..c3a0118 100644 --- a/src/modules/cross-border/components/BusinessOrdersView.vue +++ b/src/modules/cross-border/components/BusinessOrdersView.vue @@ -17,6 +17,11 @@ import { CONTAINER_SPECIFICATIONS, DEFAULT_CONTAINER_TYPE } from '../containerSp const props = defineProps<{ kind: CrossBorderBusinessKind }>() const auth = useAuthStore() +const canCreate = computed(() => auth.hasPermission(({ + procurement: 'merchant:cross-border:procurement:create', + trucking: 'merchant:cross-border:domestic-trucking:create', + looseboard: 'merchant:cross-border:pallet-shipping:create', +} as Record)[props.kind])) type BusinessRow = ProcurementSummary | TransportSummary type BusinessDetail = ProcurementDetail | TransportDetail @@ -277,7 +282,7 @@ onMounted(() => void load())

{{ mode === 'list' ? configuration.description : mode === 'create' ? '请填写订单信息,带 * 项为必填项' : `订单号:${detail?.summary.orderNo || '—'}` }}

返回列表 - 新增下单 + 新增下单