让凭证数组与套餐作废任务进入可联调状态
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 7m52s

Constraint: 后端订单套餐作废接口使用 /api/admin/order-package-invalidate-tasks,上传
  purpose 只能使用 attachment。
  Rejected: 继续提交逗号拼接凭证字符串 | 新提交路径必须使用 string[],历史字符串只做读取归一化。
  Confidence: high
  Scope-risk: broad
  Directive: 新增订单套餐作废权限时需同时配置菜单 URL 与
  order_package_invalidate_task:create/detail 按钮权限。
  Tested: bun run build;development 真实后端联调上传、创建、列表、详情通过;复机接口未触发。
  Not-tested: 未逐一手工覆盖所有历史凭证数据、全部角色权限组合和所有文件扩展名预览
This commit is contained in:
2026-06-23 09:50:12 +08:00
parent ebf9739f06
commit 0c3065f970
71 changed files with 4264 additions and 240 deletions

View File

@@ -84,7 +84,7 @@ export const hasRoutePermission = (
if (permissions.includes('*:*:*')) {
return true
}
return permissions.some((userPermission) => {
return permissions.some((userPermission: string) => {
if (userPermission.endsWith('*')) {
const prefix = userPermission.slice(0, -1)
return permission.startsWith(prefix)

View File

@@ -405,9 +405,30 @@ export const asyncRoutes: AppRouteRecord[] = [
title: 'menus.assetManagement.deviceTask',
keepAlive: true
}
},
// 订单套餐批量作废任务
{
path: 'order-package-invalidate-task',
name: 'OrderPackageInvalidateTask',
component: RoutesAlias.OrderPackageInvalidateTask,
meta: {
title: 'menus.assetManagement.orderPackageInvalidateTask',
keepAlive: true
}
}
]
},
// 订单套餐作废任务详情
{
path: 'task-management/order-package-invalidate-task/detail',
name: 'OrderPackageInvalidateTaskDetail',
component: RoutesAlias.OrderPackageInvalidateTaskDetail,
meta: {
title: 'menus.assetManagement.orderPackageInvalidateTaskDetail',
isHide: true,
keepAlive: false
}
},
// 任务详情(放在 asset-management 层级)
{
path: 'task-management/task-detail',

View File

@@ -57,6 +57,8 @@ export enum RoutesAlias {
// 任务管理
IotCardTask = '/asset-management/task-management/iot-card-task', // IoT卡任务
DeviceTask = '/asset-management/task-management/device-task', // 设备任务
OrderPackageInvalidateTask = '/asset-management/task-management/order-package-invalidate-task', // 订单套餐批量作废任务
OrderPackageInvalidateTaskDetail = '/asset-management/task-management/order-package-invalidate-task/detail', // 订单套餐作废任务详情
TaskDetail = '/asset-management/task-management/task-detail', // 任务详情IoT卡/设备任务详情)
ExportTaskList = '/asset-management/export-task-management/export-task-list', // 导出列表
ExportTaskDetail = '/asset-management/export-task-management/export-task-detail', // 导出任务详情