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
|
// 引入相关的hooks
|
||||
import { useSelector, useDispatch } from "react-redux"; |
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() { |
export default function MeasureDetail() { |
||||
// 通过useSelector直接拿到store中定义的value
|
// 通过useSelector直接拿到store中定义的value
|
||||
//@ts-ignore
|
//@ts-ignore
|
||||
const { value } = useSelector(store => store.counter); |
const { value } = useSelector(store => store.counter); |
||||
// 通过useDispatch 派发事件
|
// 通过useDispatch 派发事件
|
||||
const dispatch = 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> |
</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