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/useTableData.js |  132 ++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 132 insertions(+), 0 deletions(-)

diff --git a/src/views/production/operationScheduling/components/useTableData.js b/src/views/production/operationScheduling/components/useTableData.js
new file mode 100644
index 0000000..4f48ef6
--- /dev/null
+++ b/src/views/production/operationScheduling/components/useTableData.js
@@ -0,0 +1,132 @@
+/**
+ * 琛ㄦ牸鏁版嵁绠$悊缁勫悎寮忓嚱鏁�
+ * 鎻愪緵鍒嗛〉銆佹悳绱€�侀�夋嫨绛夐�氱敤鍔熻兘
+ */
+import {ref, reactive} from 'vue';
+import {ElMessage, ElMessageBox} from 'element-plus';
+
+export function useTableData(apiFunction, options = {}) {
+    const {
+        pageSize = 10,
+        searchField = 'searchAll'
+    } = options;
+
+    // 鍝嶅簲寮忔暟鎹�
+    const tableData = ref([]);
+    const loading = ref(false);
+    const total = ref(0);
+    const selectedRows = ref([]);
+
+    // 鏌ヨ鍙傛暟
+    const queryParams = reactive({
+        [searchField]: '',
+        current: 1,
+        size: pageSize,
+    });
+
+    // 鑾峰彇鍒楄〃鏁版嵁
+    const getList = async () => {
+        loading.value = true;
+        try {
+            const params = {
+                [searchField]: queryParams[searchField],
+                current: queryParams.current,
+                size: queryParams.size,
+            };
+            console.log('鏌ヨ鍙傛暟:', params);
+            const res = await apiFunction(params);
+            tableData.value = res.data.records || [];
+            total.value = res.data.total || 0;
+        } catch (error) {
+            ElMessage.error('鑾峰彇鏁版嵁澶辫触');
+            console.error('API閿欒:', error);
+        } finally {
+            loading.value = false;
+        }
+    };
+
+    // 鎼滅储
+    const handleSearch = () => {
+        queryParams.current = 1;
+        getList();
+    };
+
+    // 閲嶇疆鎼滅储
+    const handleReset = () => {
+        queryParams[searchField] = '';
+        console.log('閲嶇疆鎼滅储鍙傛暟:', queryParams);
+        handleSearch();
+    };
+
+    // 鍒嗛〉澶勭悊
+    const handlePageChange = ({page, limit}) => {
+        if (page && page !== queryParams.current) {
+            queryParams.current = page;
+        }
+        if (limit && limit !== queryParams.size) {
+            queryParams.size = limit;
+            queryParams.current = 1; // 鏀瑰彉姣忛〉澶у皬鏃跺洖鍒扮涓�椤�
+        }
+        getList();
+    };
+
+    // 琛ㄦ牸閫夋嫨澶勭悊
+    const handleSelectionChange = (selection) => {
+        selectedRows.value = selection;
+    };
+
+    // 鎵归噺鍒犻櫎
+    const deleteSelected = async (deleteFunction) => {
+        if (selectedRows.value.length === 0) {
+            ElMessage.warning('璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁');
+            return;
+        }
+
+        try {
+            await ElMessageBox.confirm(
+                `纭鍒犻櫎閫変腑鐨� ${selectedRows.value.length} 鏉℃暟鎹悧锛焋,
+                '鍒犻櫎纭',
+                {
+                    confirmButtonText: '纭畾',
+                    cancelButtonText: '鍙栨秷',
+                    type: 'warning'
+                }
+            );
+
+            const ids = selectedRows.value.map(row => row.id);
+            await deleteFunction(ids);
+
+            ElMessage.success('鍒犻櫎鎴愬姛');
+            selectedRows.value = [];
+            getList();
+        } catch (error) {
+            if (error !== 'cancel') {
+                ElMessage.error('鍒犻櫎澶辫触');
+                console.error('鍒犻櫎閿欒:', error);
+            }
+        }
+    };
+
+    // 鍒锋柊鏁版嵁
+    const refresh = () => {
+        getList();
+    };
+
+    return {
+        // 鏁版嵁
+        tableData,
+        loading,
+        total,
+        selectedRows,
+        queryParams,
+
+        // 鏂规硶
+        getList,
+        handleSearch,
+        handleReset,
+        handlePageChange,
+        handleSelectionChange,
+        deleteSelected,
+        refresh
+    };
+}

--
Gitblit v1.9.3