"import React, { useEffect, useRef, useState } from 'react';\nimport ContentCard from '\@/components/ContentCard';\nimport { Button, Collapse, Select, Space } from 'antd';\nimport { ActionType, EditableProTable, ProColumns } from '\@ant-design/pro-table';\n// import ProForm, { ProFormInstance } from '\@ant-design/pro-form';\nimport { getOnlyKey } from '\@/utils/utils';\nimport { PlusCircleOutlined } from '\@ant-design/icons';\nimport './index.less';\nimport { isArray, isNumber } from 'lodash';\nimport { getNodeVersionList, getTestNodeType } from '\@/services/configManage/nodeLibrary';\nconst { Panel } = Collapse;\n\nconst DEMAND_DICT = [\n {\n label: 'M1-1',\n value: '1',\n },\n {\n label: 'M1-2',\n value: '2',\n },\n {\n label: 'M1-3',\n value: '3',\n },\n];\nconst VersionConfiguration: React.FC = () => {\n // const actionRefs = DEMAND_DICT.map(() => useRef());\n const actionRefs = useRef();\n const [editKeys, setEditKeys] = useState<React.Key[]>([]);\n const [activeKeys, setActiveKeys] = useState<string[]>([]);\n const [versionData, setVersionData] = useState([]);\n const [selectSesion, setSelectSesion] = useState([]);\n const [selectValue, setSelectValue] = useState();\n const [tableDatas, setTableData] = useState({});\n // 测试节点类型\n const getTestNode = async () => {\n try {\n const { data } = await getTestNodeType({});\n const newData = data.map((item: string) => {\n return { label: item, value: item };\n });\n setSelectSesion(newData);\n } catch (error) {}\n };\n\n const handleSelectChange = async (val: string) => {\n setSelectValue(val);\n fetchVersionList(val);\n };\n\n const fetchVersionList = async (values: string) => {\n const result = await getNodeVersionList({ testNodeType: values });\n setVersionData(result.data);\n const tableData = {};\n const resluets = result.data;\n Object.entries(resluets).forEach(([version, datas]) => {\n tableData[version] = datas.map((item: any) => ({\n ...item,\n key: item.id,\n }));\n });\n setTableData(tableData);\n\n console.log(tableData, 64);\n };\n\n useEffect(() => {\n getTestNode();\n }, []);\n const columns: ProColumns[] = [\n {\n title: '节点版本',\n width: 50,\n valueType: 'index',\n align: 'center',\n renderFormItem: ({ index }) => isNumber(index) && <>{index + 1}</>,\n },\n {\n title: '测试项',\n dataIndex: 'testItem',\n align: 'center',\n formItemProps: () => ({\n rules: [{ required: true, message: '请输入测试项' }],\n }),\n },\n {\n title: '负责人',\n dataIndex: 'leader',\n align: 'center',\n formItemProps: () => ({\n rules: [{ required: true, message: '请输入负责人' }],\n }),\n },\n {\n title: '用例库名称',\n dataIndex: 'caseLibraryName',\n align: 'center',\n },\n {\n title: '交付件模板',\n dataIndex: 'deliveryTemplate',\n align: 'center',\n },\n {\n title: '测试周期(天)',\n dataIndex: 'testCycle',\n align: 'center',\n },\n {\n title: '参考投入人力(人天)',\n dataIndex: 'referenceInputManpower',\n align: 'center',\n },\n {\n title: '操作',\n valueType: 'option',\n width: 120,\n align: 'center',\n render: (text, record, _, action) => [\n <a\n key="editable"\n onClick={() => {\n action?.startEditable?.(record.key);\n }}\n >\n 配置\n ,\n 删除,\n // <Popconfirm\n // title="确定删除此行?"\n // key="delete"\n // onConfirm={async () => {\n // try {\n // const { code, msg } = await deletedCategory({\n // id: record.id,\n // });\n // if ((code as unknown as string) !== 'BIZ_SUCCESS') throw new Error(msg);\n // message.success('删除成功!');\n // staragyList();\n // } catch (error) {}\n // }}\n // okText="确定"\n // cancelText="取消"\n // >\n // 删除\n // ,\n ],\n },\n ];\n\n return (\n <ContentCard title="测试节点的版本配置" className="configuration-page-wrap">\n <div className="riskmMonthly" style={{ marginBottom: 15 }}>\n <span style={{ fontWeight: 'bold', fontSize: '14px' }}>测试节点类型:\n <Select\n style={{ width: 230 }}\n options={selectSesion}\n value={selectValue}\n onChange={handleSelectChange}\n />\n

\n\n <div className="check-list-wrap">\n <Collapse\n ghost\n activeKey={activeKeys}\n onChange={(e) => setActiveKeys(isArray(e) ? e : [e])}\n >\n {Object.entries(versionData).map(([version, data]) => {\n console.log(version, 169, tableDatas[version]);\n\n return (\n \n <EditableProTable\n rowKey="id"\n recordCreatorProps={false}\n actionRef={actionRefs}\n columns={columns}\n dataSource={tableDatas[version]}\n editable={{\n type: 'single',\n editableKeys: editKeys,\n onChange: setEditKeys,\n actionRender: (row, config, defaultDoms) => {\n return [defaultDoms.save, defaultDoms.cancel];\n },\n }}\n search={false}\n pagination={false}\n bordered\n />\n\n \n <Button\n style={{ border: '1px' }}\n onClick={() => {\n const data = tableDatas[version];\n data.push({\n id: getOnlyKey(),\n });\n setEditKeys(data.map((item: any) => item.id));\n setTableData({ ...tableDatas, [version]: data });\n // actionRefs.current?.addEditRecord?.({\n // key: getOnlyKey(),\n // });\n }}\n >\n \n \n \n \n );\n })}\n \n
\n \n );\n};\nexport default VersionConfiguration;

测试节点版本配置 - React Ant Design Pro

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

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