10 changed files with 141 additions and 43 deletions
-
2.env
-
1package.json
-
11src/App.tsx
-
20src/components/SideMenu.tsx
-
6src/index.tsx
-
3src/pages/debug/index.tsx
-
36src/pages/measure/components/MeasureAction.tsx
-
79src/pages/measure/components/MeasureDetail.tsx
-
16src/services/measure/analysis.ts
-
10src/services/measure/type.ts
@ -1 +1 @@ |
|||
REACT_APP_WS_URL=localhost:8080/ws |
|||
REACT_APP_WS_URL=192.168.1.201/ws |
@ -1,3 +0,0 @@ |
|||
export default function Debug() { |
|||
return <div>12</div> |
|||
} |
@ -1,32 +1,77 @@ |
|||
// 引入相关的hooks
|
|||
import { useSelector, useDispatch } from "react-redux"; |
|||
// 引入对应的方法
|
|||
import { increment, decrement } from "../../../store/features/counterSlice"; |
|||
|
|||
import {getDetailList} from '../../../services/measure/analysis' |
|||
import { useState, useEffect } from 'react' |
|||
import {message, type TableColumnsType, type TableProps, Button, Table } from 'antd'; |
|||
import { useNavigate } from 'react-router-dom'; |
|||
import type { DetailTable } from "../../../services/measure/type"; |
|||
export default function MeasureDetail() { |
|||
// 通过useSelector直接拿到store中定义的value
|
|||
//@ts-ignore
|
|||
const { value } = useSelector(store => store.counter); |
|||
// 通过useDispatch 派发事件
|
|||
const dispatch = useDispatch(); |
|||
const navigate = useNavigate(); |
|||
function onToMeasure(){ |
|||
navigate('/measure/config') |
|||
} |
|||
|
|||
return ( |
|||
<div> |
|||
<p>{value}</p> |
|||
useEffect(()=>{ |
|||
getDetailDataList() |
|||
}, []) |
|||
|
|||
const [selectRows, setSelectedRow] = useState<DetailTable[]>([]) |
|||
const rowSelection: TableProps<DetailTable>['rowSelection'] = { |
|||
onChange: (selectedRowKeys: React.Key[], selectedRows: DetailTable[]) => { |
|||
console.log(`selectedRowKeys: ${selectedRowKeys}`, 'selectedRows: ', selectedRows); |
|||
setSelectedRow(selectedRows) |
|||
}, |
|||
getCheckboxProps: (record: DetailTable) => ({ |
|||
name: record.name, |
|||
}), |
|||
}; |
|||
|
|||
<button className="px-4 py-2 border" |
|||
onClick={() => { |
|||
dispatch(increment()); |
|||
}}> |
|||
加 |
|||
</button> |
|||
const columns: TableColumnsType<DetailTable> = [ |
|||
{ |
|||
title: '测量名称', |
|||
dataIndex: 'name', |
|||
}, |
|||
{ |
|||
title: '创建者', |
|||
dataIndex: 'operatorName', |
|||
}, |
|||
{ |
|||
title: '时间', |
|||
dataIndex: 'createTime', |
|||
}, |
|||
]; |
|||
|
|||
<button className="px-4 py-2 border" |
|||
onClick={() => { |
|||
dispatch(decrement()); |
|||
}}> |
|||
减 |
|||
</button> |
|||
const [tableData, setTableData] = useState<DetailTable[]>([]) |
|||
const getDetailDataList = () => { |
|||
getDetailList().then(res => { |
|||
setTableData(res.data.list) |
|||
}) |
|||
} |
|||
|
|||
const [selectionType, setSelectionType] = useState<'checkbox'>('checkbox'); |
|||
const onDel = () => { |
|||
console.log('selectedRows====', selectRows) |
|||
message.error('正在做') |
|||
} |
|||
|
|||
return ( |
|||
<div> |
|||
<div className="p-[30px]"> |
|||
<Button type="primary" onClick={onDel}>删除</Button> |
|||
</div> |
|||
<div> |
|||
<Table<DetailTable> |
|||
rowSelection={{ type: selectionType, ...rowSelection }} |
|||
columns={columns} |
|||
dataSource={tableData.map(item => ({ ...item, key: item.name }))} |
|||
/> |
|||
</div> |
|||
</div> |
|||
); |
|||
} |
@ -0,0 +1,16 @@ |
|||
import httpRequest, { type BaseResponse } from "../httpRequest"; |
|||
import type { DetailTable } from "../../services/measure/type"; |
|||
export function startMeasurement() { |
|||
return httpRequest<BaseResponse>({ |
|||
url: "/measurement-task/start-measurement", |
|||
method: "POST", |
|||
}); |
|||
} |
|||
|
|||
|
|||
export function getDetailList() { |
|||
return httpRequest<BaseResponse<{list:DetailTable[]}>>({ |
|||
url: "/measurement-task/cache-measurement", |
|||
method: "POST", |
|||
}); |
|||
} |
@ -0,0 +1,10 @@ |
|||
export type measurementItem = { |
|||
|
|||
} |
|||
|
|||
export type DetailTable = { |
|||
id:number; |
|||
operatorName:string; |
|||
name: string; |
|||
createTime: string; |
|||
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue