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(tableData);

console.log(tableData, 64);

};

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;

测试节点版本配置 - 管理系统

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

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