import React, { useEffect, useRef, useState } from 'react'; import ContentCard from '@/components/ContentCard'; import { Button, Collapse, Select, Space } from 'antd'; import { ActionType, EditableProTable, ProColumns } from '@ant-design/pro-table'; // import ProForm, { ProFormInstance } from '@ant-design/pro-form'; import { getOnlyKey } from '@/utils/utils'; import { PlusCircleOutlined } from '@ant-design/icons'; import './index.less'; import { isArray, isNumber } from 'lodash'; import { getNodeVersionList, getTestNodeType } from '@/services/configManage/nodeLibrary'; const { Panel } = Collapse;

const DEMAND_DICT = [ { label: 'M1-1', value: '1', }, { label: 'M1-2', value: '2', }, { label: 'M1-3', value: '3', }, ]; const VersionConfiguration: React.FC = () => { // const actionRefs = DEMAND_DICT.map(() => useRef()); const actionRefs = useRef(); const [editKeys, setEditKeys] = useState<React.Key[]>([]); const [activeKeys, setActiveKeys] = useState<string[]>([]); const [versionData, setVersionData] = useState([]); const [selectSesion, setSelectSesion] = useState([]); const [selectValue, setSelectValue] = useState(); const [tableDatas, setTableData] = useState({}); // 测试节点类型 const getTestNode = async () => { try { const { data } = await getTestNodeType({}); const newData = data.map((item: string) => { return { label: item, value: item }; }); setSelectSesion(newData); } catch (error) {} };

const handleSelectChange = async (val: string) => { setSelectValue(val); fetchVersionList(val); };

const fetchVersionList = async (values: string) => { const result = await getNodeVersionList({ testNodeType: values }); setVersionData(result.data); const tableData = {}; const resluets = result.data; Object.entries(resluets).forEach(([version, datas]) => { tableData[version] = datas.map((item: any) => ({ ...item, key: item.id, })); }); setTableData(JSON.parse(JSON.stringify(tableData))); };

useEffect(() => { getTestNode(); }, []); const columns: ProColumns[] = [ { title: '节点版本', width: 50, valueType: 'index', align: 'center', renderFormItem: ({ index }) => isNumber(index) && <>{index + 1}</>, }, { title: '测试项', dataIndex: 'testItem', align: 'center', formItemProps: () => ({ rules: [{ required: true, message: '请输入测试项' }], }), }, { title: '负责人', dataIndex: 'leader', align: 'center', formItemProps: () => ({ rules: [{ required: true, message: '请输入负责人' }], }), }, { title: '用例库名称', dataIndex: 'caseLibraryName', align: 'center', }, { title: '交付件模板', dataIndex: 'deliveryTemplate', align: 'center', }, { title: '测试周期(天)', dataIndex: 'testCycle', align: 'center', }, { title: '参考投入人力(人天)', dataIndex: 'referenceInputManpower', align: 'center', }, { title: '操作', valueType: 'option', width: 120, align: 'center', render: (text, record, _, action) => [ <a key="editable" onClick={() => { action?.startEditable?.(record.key); }} > 配置 , 删除, // <Popconfirm // title="确定删除此行?" // key="delete" // onConfirm={async () => { // try { // const { code, msg } = await deletedCategory({ // id: record.id, // }); // if ((code as unknown as string) !== 'BIZ_SUCCESS') throw new Error(msg); // message.success('删除成功!'); // staragyList(); // } catch (error) {} // }} // okText="确定" // cancelText="取消" // > // 删除 // , ], }, ];

return ( <div className="riskmMonthly" style={{ marginBottom: 15 }}> <span style={{ fontWeight: 'bold', fontSize: '14px' }}>测试节点类型: <Select style={{ width: 230 }} options={selectSesion} value={selectValue} onChange={handleSelectChange} />

  <div className="check-list-wrap">
    <Collapse
      ghost
      activeKey={activeKeys}
      onChange={(e) => setActiveKeys(isArray(e) ? e : [e])}
    >
      {Object.entries(versionData).map(([version, data]) => {
        console.log(version, 169, tableDatas[version]);

        return (
          <Panel header={version} key={version}>
            <EditableProTable
              rowKey="id"
              recordCreatorProps={false}
              actionRef={actionRefs}
              columns={columns}
              dataSource={tableDatas[version]}
              editable={{
                type: 'single',
                editableKeys: editKeys,
                onChange: setEditKeys,
                actionRender: (row, config, defaultDoms) => {
                  return [defaultDoms.save, defaultDoms.cancel];
                },
              }}
              search={false}
              pagination={false}
              bordered
            />

            <Space>
              <Button
                style={{ border: '1px' }}
                onClick={() => {
                  const data = tableDatas[version];
                  data.push({
                    id: getOnlyKey(),
                  });
                  setEditKeys(data.map((item: any) => item.id));
                  setTableData({ ...tableDatas, [version]: data });
                  // actionRefs.current?.addEditRecord?.({
                  //   key: getOnlyKey(),
                  // });
                }}
              >
                <PlusCircleOutlined />
              </Button>
            </Space>
          </Panel>
        );
      })}
    </Collapse>
  </div>
</ContentCard>

); }; export default VersionConfiguration; 折叠面板下的对应每个面板的表格数据为啥没显示出来const fetchVersionList = async (values: string) => { const result = await getNodeVersionList({ testNodeType: values }); setVersionData(result.data); const tableData = {}; const resluets = result.data; Object.entries(resluets).forEach(([version, datas]) => { tableData[version] = datas.map((item: any) => ({ ...item, key: item.id, })); }); setTableData(JSON.parse(JSON.stringify(tableData))); }; 这样设置也是表格没数据渲染出来内容:There might be several reasons why the table data is not being rendered.

  1. Check if the versionData state variable is correctly updated with the fetched data. You can console.log result.data and versionData to verify if the data is being fetched correctly and stored in the state variable.

  2. Ensure that the tableData state variable is correctly updated with the transformed data. You can console.log tableData to see if it contains the expected data structure.

  3. Make sure that the dataSource prop of the EditableProTable component is correctly set to tableDatas[version]. You can console.log tableDatas[version] to verify if it contains the expected data for the corresponding version.

  4. Check if the columns prop of the EditableProTable component is correctly defined and matches the structure of the data.

  5. Verify if the EditableProTable component is correctly configured with the editable prop and the necessary callbacks (onChange, actionRender) are correctly implemented.

By checking and verifying these points, you should be able to identify the cause of the issue and resolve it.

测试节点版本配置 - 管理测试节点的版本信息

原文地址: https://www.cveoy.top/t/topic/qjA2 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录