From c1b5f6edeacfa0326931d06de6773b936dbabe27 Mon Sep 17 00:00:00 2001
From: maven <2163098428@qq.com>
Date: 星期二, 26 八月 2025 15:18:44 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_JLMY' into dev_JLMY

---
 src/views/production/operationScheduling/components/useCoalData.js |   96 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 96 insertions(+), 0 deletions(-)

diff --git a/src/views/production/operationScheduling/components/useCoalData.js b/src/views/production/operationScheduling/components/useCoalData.js
new file mode 100644
index 0000000..9a86b81
--- /dev/null
+++ b/src/views/production/operationScheduling/components/useCoalData.js
@@ -0,0 +1,96 @@
+/**
+ * 鐓ょ鏁版嵁绠$悊缁勫悎寮忓嚱鏁�
+ * 鎻愪緵鐓ょ鏁版嵁鐨勮幏鍙栥�佺紦瀛樸�佽浆鎹㈢瓑鍔熻兘
+ */
+import {ref, computed, watch} from 'vue';
+import {getCoalInfoList} from "@/api/production";
+import {ElMessage} from 'element-plus';
+
+// 鍏ㄥ眬鐓ょ鏁版嵁缂撳瓨
+const coalData = ref([]);
+const isLoading = ref(false);
+const isLoaded = ref(false);
+
+export function useCoalData() {
+
+    // 鑾峰彇鐓ょ鏁版嵁
+    const getCoalData = async (forceRefresh = false) => {
+        if (isLoaded.value && !forceRefresh) {
+            return coalData.value;
+        }
+
+        if (isLoading.value) {
+            // 濡傛灉姝e湪鍔犺浇锛岀瓑寰呭姞杞藉畬鎴�
+            return new Promise((resolve) => {
+                const unwatch = watch(isLoading, (loading) => {
+                    if (!loading) {
+                        unwatch();
+                        resolve(coalData.value);
+                    }
+                });
+            });
+        }
+
+        isLoading.value = true;
+        try {
+            const res = await getCoalInfoList();
+            if (res.code === 200) {
+                coalData.value = res.data;
+                isLoaded.value = true;
+                return coalData.value;
+            } else {
+                ElMessage.error('鑾峰彇鐓ょ鏁版嵁澶辫触');
+                return [];
+            }
+        } catch (error) {
+            ElMessage.error('鑾峰彇鐓ょ鏁版嵁澶辫触');
+            console.error('鐓ょ鏁版嵁鑾峰彇閿欒:', error);
+            return [];
+        } finally {
+            isLoading.value = false;
+        }
+    };
+
+    // 鏍规嵁ID鑾峰彇鐓ょ鍚嶇О
+    const getCoalNameById = (id) => {
+        if (!id || coalData.value.length === 0) return id;
+        const coal = coalData.value.find(item => item.id == id);
+        return coal ? coal.coal : id;
+    };
+
+    // 鏍规嵁鍚嶇О鑾峰彇鐓ょID
+    const getCoalIdByName = (name) => {
+        if (!name || coalData.value.length === 0) return '';
+        const coal = coalData.value.find(item => item.coal === name);
+        return coal ? coal.id : '';
+    };
+
+    // 鐢熸垚涓嬫媺閫夐」
+    const coalOptions = computed(() => {
+        return coalData.value.map(item => ({
+            label: item.coal,
+            value: item.coal,
+            key: item.id
+        }));
+    });
+
+    // 鐢熸垚key-value鏄犲皠
+    const coalMap = computed(() => {
+        const map = {};
+        coalData.value.forEach(item => {
+            map[item.id] = item.coal;
+        });
+        return map;
+    });
+
+    return {
+        coalData: computed(() => coalData.value),
+        coalOptions,
+        coalMap,
+        isLoading: computed(() => isLoading.value),
+        isLoaded: computed(() => isLoaded.value),
+        getCoalData,
+        getCoalNameById,
+        getCoalIdByName
+    };
+}

--
Gitblit v1.9.3