From 14817696a26eb142ccae03fa7c43050840e057f5 Mon Sep 17 00:00:00 2001
From: hsy <1029150275@qq.com>
Date: 星期一, 17 八月 2026 09:35:03 +0800
Subject: [PATCH] feat(mes): 优化生产订单与排产任务列表显示,新增启停工及校验逻辑 1. 生产订单列表展示优化 (WorkOrder)   - 新增「生产状态」列,全局注册 `ORDER_PRODUCTION_STATUS` 常量并绑定系统动态字典。   - 彻底重构「工序生产进度」单元格显示:弃用臃肿的 Steps 组件,改为极简横向布局(彩色状态圆点 + 进度百分比),解决表格行高被强行撑开及内容截断问题,支持横向滚动。   - 优化「完成进度」列宽及展示样式,将百分比数值外置同行显示,更加直观。 2. 排产任务列表改造 (Task)   - 顶部表头重构,由单一标题重构为「全部 / 未完成 / 已完成」的 Tabs 标签页切换结构。   - 重写数据过滤逻辑,剥离写死的 status 查询,改为使用 `scheduleStatus` 字段动态响应 Tabs 切换 (0: 未完成, 1: 已完成)。 3. 工单业务逻辑增强与状态流转   - 落实「工单查询逻辑设计方案」,优化底层的工单条件检索逻辑。   - 实现「添加工单启停功能」与「停工状态」,支持工单在执行过程中的暂停与恢复业务流转。   - 强化容错与防呆设计:操作「完成订单」时增加前置校验 `handleCheckFinish`,若生产状态为未完成,强制弹出二次确认 Modal,避免误操作。 # 相关讨论/参考方案 # - 添加工单启停功能 # - 停工状态功能设计方案 # - 工单查询逻辑设计方案 # - 工单完成进度显示优化

---
 src/api/im/rtc/index.ts |  105 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 105 insertions(+), 0 deletions(-)

diff --git a/src/api/im/rtc/index.ts b/src/api/im/rtc/index.ts
new file mode 100644
index 0000000..801df2a
--- /dev/null
+++ b/src/api/im/rtc/index.ts
@@ -0,0 +1,105 @@
+import { requestClient } from '#/api/request';
+
+export namespace ImRtcApi {
+  /** 鍒涘缓鏂伴�氳瘽璇锋眰 VO */
+  export interface RtcCallCreateReqVO {
+    conversationType: number;
+    mediaType: number;
+    groupId?: number;
+    inviteeIds: number[]; // 琚個璇风殑鐢ㄦ埛缂栧彿闆嗗悎锛涚鑱婂繀浼� 1 涓绔紝缇よ亰蹇呬紶鑷冲皯 1 浜�
+  }
+
+  /** 閫氳瘽涓拷鍔犻個璇疯姹� VO锛涗粎缇ら�氳瘽鍙敤 */
+  export interface RtcCallInviteReqVO {
+    room: string;
+    inviteeIds: number[];
+  }
+
+  /** 閫氳瘽浼氳瘽 VO锛沜reate / join / accept / refreshToken 鍏辩敤 */
+  export interface RtcCallRespVO {
+    room: string; // 涓氬姟閫氳瘽缂栧彿锛堝悓鏃朵綔涓� LiveKit 鎴块棿鍚嶏級
+    livekitUrl: string;
+    token?: string; // ENDED 鐘舵�佹椂涓� null锛堟棤闇� connect LiveKit锛�
+    conversationType: number;
+    mediaType: number;
+    status: number;
+    endReason?: number; // 缁撴潫鍘熷洜锛涗粎 status=ENDED 鏃舵湁鍊�
+    inviterId: number;
+    groupId?: number;
+    inviteeIds?: number[];
+    joinedUserIds?: number[];
+  }
+
+  /** 缇ゆ椿璺冮�氳瘽鏌ヨ鍝嶅簲锛涗笉鍚� token */
+  export interface RtcGroupCallRespVO {
+    room: string;
+    groupId: number;
+    mediaType: number;
+    inviterId: number;
+    joinedUserIds?: number[];
+    inviteeIds?: number[];
+  }
+}
+
+
+/** 鍒涘缓鏂伴�氳瘽锛涚鑱婃垨缇よ亰鏍规嵁 conversationType 鍖哄垎 */
+export function createCall(data: ImRtcApi.RtcCallCreateReqVO) {
+  return requestClient.post<ImRtcApi.RtcCallRespVO>('/im/rtc/create', data);
+}
+
+/** 閫氳瘽涓拷鍔犻個璇凤紱浠呯兢閫氳瘽鍙敤 */
+export function inviteCall(data: ImRtcApi.RtcCallInviteReqVO) {
+  return requestClient.post<boolean>('/im/rtc/invite', data);
+}
+
+/** 鍔犲叆宸叉湁缇ら�氳瘽锛涚敤浜庤兌鍥婃潯銆屽姞鍏ャ�嶆寜閽� */
+export function joinCall(room: string) {
+  return requestClient.post<ImRtcApi.RtcCallRespVO>('/im/rtc/join', undefined, {
+    params: { room },
+  });
+}
+
+/** 鎺ュ惉閫氳瘽 */
+export function acceptCall(room: string) {
+  return requestClient.post<ImRtcApi.RtcCallRespVO>('/im/rtc/accept', undefined, {
+    params: { room },
+  });
+}
+
+/** 鎷掔粷閫氳瘽 */
+export function rejectCall(room: string) {
+  return requestClient.post<boolean>('/im/rtc/reject', undefined, {
+    params: { room },
+  });
+}
+
+/** 鍙栨秷閭�璇凤紱涓诲彨鎺ラ�氬墠璋冪敤 */
+export function cancelCall(room: string) {
+  return requestClient.post<boolean>('/im/rtc/cancel', undefined, {
+    params: { room },
+  });
+}
+
+/** 绂诲紑閫氳瘽锛涙帴閫氬悗璋冪敤 */
+export function leaveCall(room: string) {
+  return requestClient.post<boolean>('/im/rtc/leave', undefined, {
+    params: { room },
+  });
+}
+
+/** 鎸搩瓒呮椂妫�鏌ワ紱RUNNING 绔� timer 鍏滃簳锛岃Е鍙戝悗绔珛鍗虫壂鎻忚 room 鐨勮秴鏃� INVITING锛堟帴鍙i潤榛橈級 */
+export function noAnswerCallCheck(room: string) {
+  return requestClient.post<boolean>(
+    '/im/rtc/no-answer-call-check',
+    undefined,
+    { params: { room } },
+  );
+}
+
+/** 鏌ヨ褰撳墠杩涜涓殑閫氳瘽锛涚洰鍓嶄粎缇よ亰鍦烘櫙锛堣兌鍥婃潯锛夛紝杩斿洖 null 琛ㄧず鏃犳椿璺冮�氳瘽 */
+export function getActiveCall(groupId: number) {
+  return requestClient.get<ImRtcApi.RtcGroupCallRespVO | null>(
+    '/im/rtc/get-active-call',
+    { params: { groupId } },
+  );
+}

--
Gitblit v1.9.3