feat(dispatch): 新增报修派单与维保派单模块全栈实现

- 后端: repair_request/repair_dispatch/maintenance_order/maintenance_detail 实体、DTO、Service(事务/单号/状态流转/行级权限)、Controller
- 安全: JWT+RBAC 接入(dispatch:repair/dispatch:maintenance)、全参数化防SQL注入、操作日志埋点
- 前端: 报修派单(双页签)、维保派单(主从表单)页面, API封装, /dispatch 路由
- 菜单: db_seed.sql 与远程库同步 id=36/37, ADMIN/SALESMAN 角色绑定
This commit is contained in:
wk committed 2026-10-02 04:23:01 +08:00
1 parent 1803ad679c
commit d42e858fb0
21 files changed
+3760 -4

No files matched your search

+22
View File
@@ -0,0 +1,22 @@
import request from '@/utils/request';
// 维保派单(维保工单)
export const maintenanceApi = {
// 分页查询维保工单
getList: (params?: any) => request.get<any>('/maintenance-orders', { params }),
// 维保工单详情
getDetail: (id: number) => request.get<any>(`/maintenance-orders/${id}`),
// 创建维保工单
create: (data: any) => request.post<any>('/maintenance-orders', data),
// 更新维保工单
update: (id: number, data: any) => request.put<any>(`/maintenance-orders/${id}`, data),
// 标记完成
complete: (id: number) => request.put<any>(`/maintenance-orders/${id}/complete`),
// 删除维保工单
remove: (id: number) => request.delete(`/maintenance-orders/${id}`)
};
+32
View File
@@ -0,0 +1,32 @@
import request from '@/utils/request';
// 报修申请
export const repairRequestApi = {
// 分页查询报修申请
getList: (params?: any) => request.get<any>('/repair-requests', { params }),
// 报修申请详情
getDetail: (id: number) => request.get<any>(`/repair-requests/${id}`)
};
// 报修派单
export const repairDispatchApi = {
// 分页查询报修派单
getList: (params?: any) => request.get<any>('/repair-dispatchs', { params }),
// 报修派单详情
getDetail: (id: number) => request.get<any>(`/repair-dispatchs/${id}`),
// 创建报修派单
create: (data: any) => request.post<any>('/repair-dispatchs', data),
// 更新报修派单
update: (id: number, data: any) => request.put<any>(`/repair-dispatchs/${id}`, data),
// 标记完成
complete: (id: number, data?: any) =>
request.put<any>(`/repair-dispatchs/${id}/complete`, data),
// 删除报修派单
remove: (id: number) => request.delete(`/repair-dispatchs/${id}`)
};
+13 -1
View File
@@ -154,9 +154,21 @@ const routes: RouteRecordRaw[] = [
{
path: "dispatch",
name: "Dispatch",
component: () => import("@/views/Placeholder.vue"),
redirect: "/dispatch/repair",
meta: { requiresAuth: true, title: "运营派单", permission: "dispatch:list" }
},
{
path: "dispatch/repair",
name: "DispatchRepair",
component: () => import("@/views/dispatch/repair/index.vue"),
meta: { requiresAuth: true, title: "报修派单", permission: "dispatch:repair" }
},
{
path: "dispatch/maintenance",
name: "DispatchMaintenance",
component: () => import("@/views/dispatch/maintenance/index.vue"),
meta: { requiresAuth: true, title: "维保派单", permission: "dispatch:maintenance" }
},
{
path: "device",
name: "Device",
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff