From cf7a8e9cd680c0fd561a30099270be4917d7853d Mon Sep 17 00:00:00 2001 From: tzy <1042411602@qq.com> Date: Mon, 3 Aug 2026 10:53:13 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=88=E5=B9=B6=E5=B7=A5=E5=BA=8F=E7=9C=8B?= =?UTF-8?q?=E6=9D=BF=E9=87=8D=E6=8E=92=E3=80=81=E8=AE=A2=E5=8D=95=E5=BC=80?= =?UTF-8?q?=E5=B7=A5=E4=B8=8E=E6=B4=BE=E5=B7=A5=E5=88=97=E8=A1=A8=E5=B1=95?= =?UTF-8?q?=E7=A4=BA=E8=B0=83=E6=95=B4=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Cursor --- src/api/orderItem.ts | 6 +- src/api/orderProcessPlan.ts | 25 ++ src/views/biz/kingdee/index.vue | 31 +- src/views/biz/orderItem/index.vue | 408 +++++++++++------- src/views/biz/orderProcessPlan/board.vue | 251 ++++++++++- .../componets/AssingWorkTreeTable.vue | 2 +- 6 files changed, 545 insertions(+), 178 deletions(-) diff --git a/src/api/orderItem.ts b/src/api/orderItem.ts index d5f938b..b666b65 100644 --- a/src/api/orderItem.ts +++ b/src/api/orderItem.ts @@ -125,7 +125,11 @@ export const orderItemApi = { //派工 assignWork(data: any) { return request({ url: '/biz/orderItem/assignWork', method: 'post', data }) - }, + }, + // 开工 + startWork(id: number) { + return request({ url: `/biz/orderItem/${id}/startWork`, method: 'post' }) + }, //根据生产编号查询预生产订单 preCreation(data: any) { return request({ url: '/biz/orderItem/preCreation', method: 'post', data }) diff --git a/src/api/orderProcessPlan.ts b/src/api/orderProcessPlan.ts index 605e16a..9013141 100644 --- a/src/api/orderProcessPlan.ts +++ b/src/api/orderProcessPlan.ts @@ -475,6 +475,18 @@ export const orderProcessPlanApi = { }) }, + /** + * 订单级工序顺序重排。 + * 只提交 orderItemId + 按新顺序排列的 planId,后端重写 sort(10/20/30…)。 + */ + reorder(data: ProcessPlanReorderPayload) { + return request({ + url: '/biz/orderProcessPlan/reorder', + method: 'put', + data, + }) + }, + } /** 委外可选工序项 */ @@ -515,3 +527,16 @@ export interface OutsourcingCreate { remark?: string } +/** 工序重排明细 */ +export interface ProcessPlanReorderItem { + planId: number + /** 可选;不传则按数组顺序由后端分配 sort */ + sort?: number +} + +/** 订单级工序重排请求 */ +export interface ProcessPlanReorderPayload { + orderItemId: number + items: ProcessPlanReorderItem[] +} + diff --git a/src/views/biz/kingdee/index.vue b/src/views/biz/kingdee/index.vue index 1adfb8e..a297a2b 100644 --- a/src/views/biz/kingdee/index.vue +++ b/src/views/biz/kingdee/index.vue @@ -37,10 +37,10 @@ 重新读取数据 - + 保存草稿 - + 同步订单计划 关闭 @@ -332,26 +332,29 @@ function handleGanttSchedule() { router.push('/biz/orderProject/gantt') } -// 同步订单和计划表 +// 同步订单和计划表(等待父组件接口完成后再关 loading,避免第一次点击“没反应”) async function handleSyncOrderAndPlan() { - if (!props.selectedId) return - + if (!props.selectedId || actionLoading.value) return + actionLoading.value = true try { - // 恢复数据结构,将 processRoutes 转换为 children const draftData = kingdeeTableData.value.map(mo => { const { processRoutes, ...rest } = mo return { ...rest, children: processRoutes } as KingdeePrdMo }) - - emit('synchronizationCallback', props.selectedId, draftData, (res) => { - if("success" === res){ - message.success('同步订单计划成功') - emit('close-modal') - } + + const res = await new Promise((resolve, reject) => { + emit('synchronizationCallback', props.selectedId, draftData, (result: unknown, err?: unknown) => { + if (err) reject(err) + else resolve(result) }) - kingdeeModalVisible.value = false - } catch (error) { + }) + + if (res === 'success') { + message.success('同步订单计划成功') + emit('close-modal') + } + } catch { // 错误拦截器已处理 } finally { actionLoading.value = false diff --git a/src/views/biz/orderItem/index.vue b/src/views/biz/orderItem/index.vue index 851dac5..c63d1b7 100644 --- a/src/views/biz/orderItem/index.vue +++ b/src/views/biz/orderItem/index.vue @@ -1,102 +1,95 @@