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/manager/channel/material/components/select.vue |   71 +++++++++++++++++++++++++++++++++++
 1 files changed, 71 insertions(+), 0 deletions(-)

diff --git a/src/views/im/manager/channel/material/components/select.vue b/src/views/im/manager/channel/material/components/select.vue
new file mode 100644
index 0000000..c5e47b8
--- /dev/null
+++ b/src/views/im/manager/channel/material/components/select.vue
@@ -0,0 +1,71 @@
+<script lang="ts" setup>
+import type { ImManagerChannelMaterialApi } from '#/api/im/manager/channel/material';
+
+import { computed, ref, watch } from 'vue';
+
+import { Select } from 'ant-design-vue';
+
+import { getSimpleManagerChannelMaterialList } from '#/api/im/manager/channel/material';
+
+defineOptions({ name: 'ImManagerMaterialSelect' });
+
+const props = withDefaults(
+  defineProps<{
+    allowClear?: boolean
+    channelId?: number
+    modelValue?: number
+    placeholder?: string
+  }>(),
+  {
+    allowClear: true,
+    channelId: undefined,
+    modelValue: undefined,
+    placeholder: '璇烽�夋嫨绱犳潗',
+  },
+);
+
+const emit = defineEmits<{
+  'update:modelValue': [value: number | undefined];
+}>();
+
+const loading = ref(false);
+const materialList = ref<ImManagerChannelMaterialApi.Material[]>([]);
+
+const value = computed({
+  get: () => props.modelValue,
+  set: (val) => emit('update:modelValue', val),
+});
+
+const options = computed(() =>
+  materialList.value.map((item) => ({ label: item.title, value: item.id })),
+);
+
+/** 鎸夐閬撳姞杞界礌鏉� */
+async function loadMaterialList(channelId?: number) {
+  emit('update:modelValue', undefined);
+  materialList.value = [];
+  if (!channelId) {
+    return;
+  }
+  loading.value = true;
+  try {
+    materialList.value = await getSimpleManagerChannelMaterialList(channelId);
+  } finally {
+    loading.value = false;
+  }
+}
+
+watch(() => props.channelId, loadMaterialList, { immediate: true });
+</script>
+
+<template>
+  <Select
+    v-model:value="value"
+    :allow-clear="allowClear"
+    :disabled="!channelId"
+    :loading="loading"
+    :options="options"
+    :placeholder="placeholder"
+    class="w-full"
+  />
+</template>

--
Gitblit v1.9.3