import React, { useEffect, useRef } from "react"; import { Modal, Button, Space, Row, Col } from "antd"; import * as commonFunc from "@/components/Common/commonFunc"; import * as commonUtils from "@/utils/utils"; import * as commonBusiness from "@/components/Common/commonBusiness"; import StaticEditTable from "@/components/Common/CommonTable"; import instructSet from "@/components/Common/CommonInstructSet"; const AutoTableHeight = '50vh'; // 业务层 const useTeamInfoEvent = props => { const nameCrewOrigin = useRef(); const { formData, hasShowInfo } = props; let queryId = []; try { queryId = JSON.parse(props.reportRef?.sActiveKey || '[]') } catch (error) { queryId = [] } const queryFormData = queryId.map(j => { const result = formData.find(i => i && i.sId === j) if (result) return result; }).filter(Boolean); useEffect ( async () => { if (commonUtils.isNotEmptyArr(queryFormData) && queryFormData.length === 2) { const nameCrew = queryFormData[1].sGrd; const colunmData = handleGetColumnData(queryFormData, true); const result = await handleGetData(queryFormData, true); const addState = { ...colunmData, ...result, [`${nameCrew}SelectedRowKeys`]: hasShowInfo?.sMainAssistantId?.split(',') || [], }; props.onSaveState(addState); nameCrewOrigin.current = addState[`${nameCrew}Data`]; } }, [formData, props.reportRef?.sActiveKey] ); // 获取表头数据 const handleGetColumnData = (queryFormData = [], isWait) => { let addState = {}; for (let i = 0; i < queryFormData.length; i++) { const config = queryFormData[i]; const name = config.sGrd || ''; const column = commonFunc.getHeaderConfig(config); addState = { ...addState, [`${name}Column`]: column, [`${name}Config`]: config, }; } if (isWait) { return addState; } else { props.onSaveState(addState); } }; // 获取数据集 const handleGetData = async (queryFormData = [], isWait, extraConditions = {}) => { let addState = {}; for (let i = 0; i < queryFormData.length; i++) { const config = queryFormData[i]; if (!config) continue; const name = config.sGrd || ''; const conditonValues = props.onGetSqlConditionValues(config); const result = (await props.onGetDataSet({ name: `${name}`, configData: config, condition: { sSqlCondition: { ...conditonValues, ...extraConditions } }, isWait: true })) || {}; addState = { ...addState, ...result }; } if (isWait) { return addState; } else { props.onSaveState(addState); } }; return { ...props, queryFormData, nameCrewOrigin, }; }; export default (_props) => { if (!_props.reportInfoVisible) return ""; const props = useTeamInfoEvent(_props); const { queryFormData, nameCrewOrigin } = props; if (!Array.isArray(queryFormData) || queryFormData.length !== 2) return ""; const namePost = queryFormData[0].sGrd; const nameCrew = queryFormData[1].sGrd; const handleShowData = (name, selectedRowKeys) => { const dataShow = nameCrewOrigin.current; if (!Array.isArray(dataShow) || !Array.isArray(selectedRowKeys)) return; const sResponsibleDepartId = props[`${name}Data`]?.find(i => i && selectedRowKeys.includes(i.sId))?.sResponsibleDepartId; const showData = dataShow.filter(i => i && sResponsibleDepartId === i.sDepartId); props.onSaveState({ [`${nameCrew}Data`]: showData }); } const selectData = () => { return commonFunc.getTableSelectedData({ props: { ...props, [`${nameCrew}Data`]: nameCrewOrigin.current || [] }, tableName: nameCrew }); } const tablePropsPost = { ...commonBusiness.getTableTypes(namePost, props), tableProps: { AutoTableHeight, }, onSelectRowChange: (name, selectedRowKeys) => { props.onSaveState({[`${namePost}SelectedRowKeys`]: selectedRowKeys }); handleShowData(name, selectedRowKeys) } }; const tableBaseProps = commonBusiness.getTableTypes(nameCrew, props); const tablePropsCrew = { ...tableBaseProps || {}, tableProps: { AutoTableHeight, } }; const { [`${nameCrew}Data`]: crewData = [], [`${nameCrew}SelectedRowKeys`]: crewSelectedRowKeys = [] } = props; const tablePropsCollect = { ...tableBaseProps, data: crewData.filter(item => crewSelectedRowKeys.includes(item.sId)), tableProps: { AutoTableHeight, } }; // 执行指令集 const handleExecInstructSet = async params => { const { btnConfig } = params; const { sInstruct } = btnConfig; if (!sInstruct) throw ""; window.instructSetLock = false; await instructSet({ ...params }); }; const handleOk = () => { handleExecInstructSet({ ...props, btnConfig: props.reportRef || {}, [`${nameCrew}Data`]: selectData(), [`${nameCrew}DelData`]: [], [`${nameCrew}Config`]: queryFormData[1], }).then(() => { cancelCache(); }) } const cancelCache = () => { props.onSaveState({ [`${namePost}Data`]: [], [`${namePost}DelData`]: [], [`${namePost}SelectedRowKeys`]: [], [`${nameCrew}Data`]: [], [`${nameCrew}DelData`]: [], [`${nameCrew}SelectedRowKeys`]: [] }) props.handleReportInfo(); } return ( } > ); };