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