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/productionReporting/components/useTableData.js | 132 ++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 132 insertions(+), 0 deletions(-)
diff --git a/src/views/production/productionReporting/components/useTableData.js b/src/views/production/productionReporting/components/useTableData.js
new file mode 100644
index 0000000..4f48ef6
--- /dev/null
+++ b/src/views/production/productionReporting/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