You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
280 lines
6.6 KiB
280 lines
6.6 KiB
import {getDetailList, delDetail, getDetail, getPointByUuid} from '../../../services/measure/analysis'
|
|
import { useState, useEffect } from 'react'
|
|
import {message, Button, type TableColumnsType, type TableProps, Modal, Table, Pagination, Input } from 'antd';
|
|
|
|
import { useNavigate } from 'react-router-dom';
|
|
import type { DetailTable, SearchParams } from "../../../services/measure/type";
|
|
import { ExclamationCircleFilled } from '@ant-design/icons';
|
|
|
|
export default function MeasureDetail() {
|
|
const navigate = useNavigate();
|
|
const { Search } = Input;
|
|
function onToMeasure(){
|
|
navigate('/measure/config')
|
|
}
|
|
|
|
useEffect(()=>{
|
|
const params = {
|
|
pageSize,
|
|
pageNum,
|
|
}
|
|
getDetailDataList(params)
|
|
}, [])
|
|
|
|
const [selectRows, setSelectedRow] = useState<DetailTable[]>([])
|
|
const [selectedRowKeys, setSelectedRowKeys] = useState<React.Key[]>([]);
|
|
const rowSelection = {
|
|
selectedRowKeys,
|
|
onChange: (selectedRowKeys: React.Key[], selectedRows: DetailTable[]) => {
|
|
console.log(`selectedRowKeys: ${selectedRowKeys}`, 'selectedRows: ', selectedRows);
|
|
setSelectedRow(selectedRows)
|
|
setSelectedRowKeys(selectedRowKeys)
|
|
},
|
|
getCheckboxProps: (record: DetailTable) => ({
|
|
name: record.name,
|
|
}),
|
|
};
|
|
|
|
const columns: TableColumnsType<DetailTable> = [
|
|
{
|
|
title: '序号',
|
|
dataIndex: 'seq',
|
|
render:(_, record, index)=>{
|
|
return index + 1
|
|
}
|
|
},
|
|
{
|
|
title: '测量名称',
|
|
dataIndex: 'name',
|
|
},
|
|
{
|
|
title: '线路名称',
|
|
dataIndex: 'lineName',
|
|
},
|
|
{
|
|
title: '位置',
|
|
dataIndex: 'location',
|
|
},
|
|
{
|
|
title: '轨型',
|
|
dataIndex: 'trackShapeCode',
|
|
render:(_, record)=>{
|
|
const trackShapeCode = record.trackShapeCode
|
|
return trackShapeCode ? trackShapeCode : '无'
|
|
}
|
|
},
|
|
{
|
|
title: '方向',
|
|
dataIndex: 'direction',
|
|
render:(_, record)=>{
|
|
const direction = record.direction
|
|
return direction ? direction : '无'
|
|
}
|
|
},
|
|
{
|
|
title: '创建者',
|
|
dataIndex: 'operatorName',
|
|
},
|
|
{
|
|
title: '时间',
|
|
dataIndex: 'createTime',
|
|
},
|
|
// {
|
|
// title: '操作',
|
|
// dataIndex: 'op',
|
|
// width:180,
|
|
// align:'center',
|
|
// render:(_, record)=>{
|
|
// return <div>
|
|
// <Button type="link" onClick={()=>onDel(record)}>删除</Button>
|
|
// <br/>
|
|
// <Button type="link" onClick={()=>onShowDetail(record)}>导出测量数据</Button>
|
|
// <br/>
|
|
// <Button type="link" onClick={()=>onDetaiResult(record)}>导出分析结果</Button>
|
|
// </div>
|
|
// }
|
|
// },
|
|
];
|
|
|
|
const [tableData, setTableData] = useState<DetailTable[]>([])
|
|
const [total, setTotal] = useState(0)
|
|
const getDetailDataList = (params:SearchParams) => {
|
|
setLoading(true)
|
|
getDetailList(params).then(res => {
|
|
if(res.success){
|
|
setLoading(false)
|
|
//@ts-ignore
|
|
setTableData(res.data.list)
|
|
setTotal(res.data.total)
|
|
}else{
|
|
// setTableData(detailList)
|
|
}
|
|
}).catch(e=>{
|
|
//如果接口异常,则使用mock数据
|
|
// setTableData(detailList)
|
|
}).finally(()=>{
|
|
setLoading(false)
|
|
})
|
|
}
|
|
|
|
const [selectionType, setSelectionType] = useState<'checkbox'>('checkbox');
|
|
const { confirm } = Modal;
|
|
const onBatchDel = () => {
|
|
confirm({
|
|
title: '提示',
|
|
icon: <ExclamationCircleFilled />,
|
|
content: '请确认是否删除选中的数据',
|
|
okText:'确认',
|
|
cancelText:'取消',
|
|
onOk() {
|
|
onHandelDelData()
|
|
},
|
|
onCancel() {
|
|
console.log('Cancel');
|
|
},
|
|
});
|
|
}
|
|
|
|
const onDel = (item:DetailTable) => {
|
|
confirm({
|
|
title: '提示',
|
|
icon: <ExclamationCircleFilled />,
|
|
content: '请确认是否删除选中的数据',
|
|
okText:'确认',
|
|
cancelText:'取消',
|
|
onOk() {
|
|
doDel({ids:item.id})
|
|
},
|
|
onCancel() {
|
|
console.log('Cancel');
|
|
},
|
|
});
|
|
}
|
|
|
|
const onShowDetail = (item:DetailTable)=> {
|
|
message.warning('正在开发中')
|
|
return;
|
|
getDetail({id:item.id}).then(res=>{
|
|
console.log('res==测量记录详情=', res)
|
|
if(res){
|
|
//@ts-ignore
|
|
getRecordByUuid(res.data.uuid)
|
|
}
|
|
})
|
|
}
|
|
|
|
const onDetaiResult = (item:DetailTable) => {
|
|
message.warning('正在开发中')
|
|
return;
|
|
}
|
|
|
|
const getRecordByUuid = (uuid:string) => {
|
|
getPointByUuid({uuid}).then(res=>{
|
|
console.log('=========================', res)
|
|
})
|
|
}
|
|
|
|
type DelParams = {
|
|
ids: string | number;
|
|
}
|
|
const onHandelDelData = () =>{
|
|
let list = [...selectRows]
|
|
const ids = list.map(item => item.id)
|
|
if(!ids || !ids.length){
|
|
return;
|
|
}
|
|
const params = {
|
|
ids:ids.join(',')
|
|
}
|
|
doDel(params)
|
|
|
|
}
|
|
|
|
const doDel = (params:DelParams) => {
|
|
delDetail(params).then(res => {
|
|
if(res.success){
|
|
message.success('删除成功')
|
|
const params = {
|
|
pageSize,
|
|
pageNum,
|
|
}
|
|
getDetailDataList(params)
|
|
setSelectedRowKeys([])
|
|
setSelectedRow([])
|
|
|
|
}
|
|
}).catch(e=> {
|
|
//删除mock的数据
|
|
// const filterList = tableData && tableData.filter(item => !ids.includes(item.id))
|
|
// setTableData(filterList)
|
|
// message.success('删除成功')
|
|
// setSelectedRow([])
|
|
})
|
|
}
|
|
|
|
const [pageNum, setPageNum] = useState(1)
|
|
const [pageSize, setPageSize] = useState(5)
|
|
const onPageChange = (pageNumValue:number, pageSizeValue:number) => {
|
|
setPageNum(pageNumValue)
|
|
setPageSize(pageSizeValue)
|
|
searchParams = {
|
|
...searchParams,
|
|
pageSize:pageSizeValue,
|
|
pageNum:pageNumValue,
|
|
}
|
|
getDetailDataList(searchParams)
|
|
}
|
|
|
|
const [name, setName] = useState<string>()
|
|
const [lineName, setLineName] = useState<string>()
|
|
let searchParams:SearchParams = {
|
|
pageNum,
|
|
pageSize,
|
|
}
|
|
const onSearch = ()=> {
|
|
setPageNum(1)
|
|
setPageSize(5)
|
|
searchParams = {
|
|
pageSize,
|
|
pageNum: 1,
|
|
name,
|
|
lineName
|
|
}
|
|
getDetailDataList(searchParams)
|
|
}
|
|
let [loading, setLoading] = useState(false)
|
|
return (
|
|
<div>
|
|
<div className="p-[15px]">
|
|
<Button
|
|
disabled={!selectRows.length}
|
|
type="primary"
|
|
onClick={onBatchDel}>
|
|
删除
|
|
</Button>
|
|
<Input className='ml-[2rem]' placeholder="测量名称" onChange={(e)=>setName(e.target.value)} style={{ width: 200 }}/>
|
|
<Input className='ml-[2rem]' placeholder="线路名称" onChange={(e)=>setLineName(e.target.value)} style={{ width: 200 }}/>
|
|
<Button type="primary" className='ml-[2rem]' onClick={onSearch}>搜索</Button>
|
|
</div>
|
|
<div>
|
|
<Table<DetailTable>
|
|
locale={{
|
|
emptyText: '无数据',
|
|
}}
|
|
loading={loading}
|
|
rowSelection={{ type: selectionType, ...rowSelection }}
|
|
columns={columns}
|
|
rowKey="id"
|
|
dataSource={tableData && tableData.map(item => ({ ...item, key: item.name }))}
|
|
pagination={false}
|
|
scroll={{ y: 550 }}
|
|
|
|
/>
|
|
<div className="float-right">
|
|
<Pagination onChange={onPageChange} current={pageNum} pageSizeOptions={[5,10,20,30]} defaultCurrent={pageNum} defaultPageSize={pageSize} total={total}/>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
);
|
|
}
|