index.tsx 3.4 KB
import React, { useState, useEffect } from 'react';
import { Table, message} from 'antd';
import type { ColumnsType } from 'antd/es/table';
import {getGpsTableData, getTripTableData} from '../../api';
import './style.less';

interface DataType {
  tid: number;
  trid: number;
  entityName:string;
  enable:boolean;
}
interface Data{
  current?:number;
  currentPage?:number;
  total?:number;
  pageSize?:number;
}
  
  const columns:ColumnsType<DataType> = [
    {
      title: '终端id',
      dataIndex: 'tid',
      key: 'tid',
      width: 100
    },
    {
      title: '终端名称',
      dataIndex: 'entityName',
      key: 'entityName',
      width: 100

    },
    {
      title: '轨迹id',
      dataIndex: 'trid',
      key: 'trid',
      width: 100

    },
    {
      title: '设备状态',
      dataIndex: 'enable',
      key: 'enable',
      width: 100

    }
  ];

function PlayBackTable(props:any) {
    const {handelRow, type} = props;
    const [tableData, setTableData] = useState<any>([]);
    const [data, setData] = useState<Data>({current: 1, pageSize: 10});
    const [rowKey, setRowKey] = useState<number>();
    useEffect(() => {
      //获取table数据
      if (type === 1) {
        getGpsTableData({current: data.current, pageSize: data.pageSize}).then(res => {
          const data = res?.data?.data.map((item:any) => {
            if (item?.enable) item.enable = '启用'; else item.enable = '禁用';
            return item;
          });
            setTableData(data);
            setData(res?.data);
          }).catch((e) => {
            message.error('查询数据失败!');
          });
      } else if (type === 2) {
        getTripTableData({current: data.current, pageSize: data.pageSize}).then(res => {
          const data = res?.data?.data.map((item:any) => {
            if (item?.enable) item.enable = '启用'; else item.enable = '禁用';
            return item;
          });
            setTableData(data);
            setData(res?.data);
        }).catch((e) => {
          message.error('查询数据失败');
        });
      }
    }, [data.current, data.pageSize]);
    const setRowClassName = (record:any, key:any) => {
      if (rowKey === key) {
        return 'checkRow';
      } else {
        return 'row';
      }
    };

    const handlePageChange = (current:number, pageSize:number) => {
      console.log(1);
      setTableData([]);
      setData({...data, current, pageSize});
    };
    return (
      <div className="play_back_table">
        <Table
          dataSource={tableData}
          columns={columns}
          className="table_back"
          rowClassName={setRowClassName}
          rowKey={row => row.tid}
          pagination={{
            total: data?.total,
            current: data?.current,
            pageSize: data?.pageSize,
            showQuickJumper: false,
            showSizeChanger: true,
            onChange: handlePageChange,
            onShowSizeChange: handlePageChange,
            pageSizeOptions: ['10', '20', '50', '100', '150', '200']
          }}
          onRow={
            (record, rowkey) => {
                return {
                    //行点击
                    onClick: () => {
                        setRowKey(rowkey);
                        handelRow({tid: record?.tid, entityName: record?.entityName});
                    }, 
                };
            }
         }
        />
      </div>
    );
}
export default PlayBackTable;