From 1deae1d89a7039ef0b943be291f6c1b9aaa5ad2c Mon Sep 17 00:00:00 2001
From: hsy <1029150275@qq.com>
Date: 星期一, 17 八月 2026 10:30:33 +0800
Subject: [PATCH] feat(mes): 生产报工新增「可报工数量」展示 - `src/api/mes/pro/task/index.ts`: `MesProTaskApi.Task` 接口新增 `reportableQuantity` (可报工数量) 字段定义 - `src/views/mes/pro/feedback/data.ts`:   - 生产报工弹框表单中新增「可报工数量」字段展示,设置为不可编辑,且仅在新建/编辑模式下显示   - 在生产任务选择弹框 (`ProTaskSelect`) 的 `onChange` 事件中,自动从选中的任务对象中提取并带入 `reportableQuantity`   - 完善了表单联动的重置逻辑,确保更换工单等操作时正确清空此字段

---
 src/views/im/home/composables/useMessageMultiSelect.ts |   48 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 48 insertions(+), 0 deletions(-)

diff --git a/src/views/im/home/composables/useMessageMultiSelect.ts b/src/views/im/home/composables/useMessageMultiSelect.ts
new file mode 100644
index 0000000..6b0d656
--- /dev/null
+++ b/src/views/im/home/composables/useMessageMultiSelect.ts
@@ -0,0 +1,48 @@
+import type { Message } from '../types'
+
+import { computed, reactive } from 'vue'
+
+/**
+ * 娑堟伅澶氶�夋ā寮�
+ *
+ * 妯″潡绾у崟渚� reactive state锛汳essagePanel 瀛愭爲鍐呭澶勫叡浜細
+ * - MessageItem 娓叉煋鍕鹃�� + 鍒囨崲鍕鹃��
+ * - MessageMultiSelectBar 搴曟爮璇婚�変腑鏁�
+ * - MessageForwardDialog 杞彂鎴愬姛鍚� exit
+ * - MessagePanel watch activeConversation 鍒囦細璇� exit
+ */
+const state = reactive({
+  active: false,
+  /** 宸查�� clientMessageId 鍒楄〃锛屾寜閫変腑椤哄簭淇濆簭 */
+  selectedClientMessageIds: [] as string[]
+})
+
+/** 宸查�� clientMessageId 闆嗗悎锛汳essageItem 澶ч噺 has 鏌ヨ璧板畠锛岄伩鍏� array.includes O(N虏) */
+const selectedIdSet = computed(() => new Set(state.selectedClientMessageIds))
+
+/** 杩涘叆澶氶�夋ā寮忥紝鍙檮甯﹀垵濮嬪嬀閫夐」 */
+function enter(initialMessage?: Message) {
+  state.active = true
+  state.selectedClientMessageIds = initialMessage ? [initialMessage.clientMessageId] : []
+}
+
+/** 閫�鍑哄閫夋ā寮� */
+function exit() {
+  state.active = false
+  state.selectedClientMessageIds = []
+}
+
+/** 鍒囨崲鏌愭潯娑堟伅鐨勯�変腑鎬� */
+function toggle(message: Message) {
+  const ids = state.selectedClientMessageIds
+  const index = ids.indexOf(message.clientMessageId)
+  if (index === -1) {
+    ids.push(message.clientMessageId)
+  } else {
+    ids.splice(index, 1)
+  }
+}
+
+export function useMessageMultiSelect() {
+  return { state, selectedIdSet, enter, exit, toggle }
+}

--
Gitblit v1.9.3