From bf0ef9e148f2f438b5630c9fc9f6b8943592eeff Mon Sep 17 00:00:00 2001
From: liu <2021943741@qq.com>
Date: 星期一, 07 九月 2026 16:55:15 +0800
Subject: [PATCH] fix(排产): 生产状态为已完成的单不再显示0%进度,已完成类型隐藏排产维护按钮

---
 src/views/mes/qc/components/export-range-modal.vue |   89 ++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 89 insertions(+), 0 deletions(-)

diff --git a/src/views/mes/qc/components/export-range-modal.vue b/src/views/mes/qc/components/export-range-modal.vue
new file mode 100644
index 0000000..19fedfe
--- /dev/null
+++ b/src/views/mes/qc/components/export-range-modal.vue
@@ -0,0 +1,89 @@
+<script lang="ts" setup>
+import { ref } from 'vue';
+
+import { useVbenModal } from '@vben/common-ui';
+import { downloadFileFromBlobPart } from '@vben/utils';
+
+import { DatePicker, message } from 'ant-design-vue';
+
+import { getRangePickerDefaultProps } from '#/utils';
+
+/** 瀵煎嚭鍙傛暟锛堝悗绔� PageReqVO 浠ユ暟缁勮В鏋� inspectDate 璧锋锛� */
+interface ExportParams {
+  inspectDate?: [string, string];
+}
+
+interface ExportModalData {
+  /** 寮圭獥鏍囬 */
+  title?: string;
+  /** 妯″潡瀵煎嚭鍑芥暟锛歳equestClient.download(...) 杩斿洖 Blob */
+  exportApi: (params: ExportParams) => Promise<Blob>;
+  /** 瀵煎嚭鏂囦欢鍚� */
+  fileName: string;
+}
+
+defineOptions({ name: 'QcExportRangeModal' });
+
+const rangePickerProps = getRangePickerDefaultProps();
+
+const modalData = ref<ExportModalData>();
+const range = ref<[string, string] | undefined>(undefined);
+const exporting = ref(false);
+const title = ref('瀵煎嚭');
+
+const [Modal, modalApi] = useVbenModal({
+  async onConfirm() {
+    if (exporting.value) {
+      return;
+    }
+    const data = modalData.value;
+    if (!data) {
+      return;
+    }
+    exporting.value = true;
+    modalApi.lock();
+    try {
+      const params: ExportParams =
+        range.value && range.value.length === 2
+          ? { inspectDate: range.value }
+          : {};
+      const blob = await data.exportApi(params);
+      downloadFileFromBlobPart({ fileName: data.fileName, source: blob });
+      message.success('瀵煎嚭鎴愬姛');
+      await modalApi.close();
+    } finally {
+      exporting.value = false;
+      modalApi.unlock();
+    }
+  },
+  onOpenChange(isOpen: boolean) {
+    if (!isOpen) {
+      modalData.value = undefined;
+      range.value = undefined;
+      return;
+    }
+    const data = modalApi.getData<ExportModalData>();
+    modalData.value = data;
+    range.value = undefined;
+    title.value = data?.title ?? '瀵煎嚭';
+    modalApi.setState({ confirmText: '瀵煎嚭' });
+  },
+});
+</script>
+
+<template>
+  <Modal :title="title" class="w-2/5" :mask-closable="false">
+    <div class="px-1 py-3">
+      <div class="mb-2 text-sm font-medium text-gray-700">妫�楠屾椂闂�</div>
+      <DatePicker.RangePicker
+        v-model:value="range"
+        v-bind="rangePickerProps"
+        allow-clear
+        class="w-full"
+      />
+      <div class="mt-2 text-xs text-gray-400">
+        涓嶉�夋椂闂村垯瀵煎嚭鍏ㄩ儴鏁版嵁锛涘鍑烘寜銆屾娴嬫棩鏈熴�嶈繃婊�
+      </div>
+    </div>
+  </Modal>
+</template>

--
Gitblit v1.9.3