import React, { useState, useEffect, useRef } from 'react';
import { Form, Input, Button, Table, Pagination, Row, Col, Tooltip, DatePicker } from 'antd';
import '@common/common.less';
import apiObj from '@api/index';
import moment from "moment";
import "moment/locale/zh-cn"
import { disabledDate } from '@utils/index'
const { post, api, xPost } = apiObj;
const { RangePicker } = DatePicker;
function OperationLog() {
  useEffect(() => {
    getOperationLog();
  }, []);
  const [logList, setLogList] = useState([]);
  const [total, setTotal] = useState(0);
  const [size, setSize] = useState(15);
  const [current, setCurrent] = useState(1);
  const [params, setParams] = useState({
    pages: 1,
    current: 1,
    size: 15
  });
  const [form] = Form.useForm();

  let list = []
  let data = {
    pages: 1,
    current: 1,
    size: size
  }
  //表格数据
  function getOperationLog(param) {
    post(api.getOperationLog, param || params).then((res) => {
      if (res.data.code === 200) {
        const data = res.data.data;
        setLogList(data.records);
        setTotal(data.total)
      }
    })
  }
  function onSizeChange(current, pageSize) {
    params.current = current
    params.size = pageSize
    setSize(pageSize)
    setCurrent(current)
    setParams(params)
    getOperationLog()
  }
  function changePage(page, pageSize) {
    params.current = page
    params.size = pageSize
    setParams(params)
    setCurrent(page)
    getOperationLog()
  }

  const onFinish = (value) => {
    if (value.time) {
      value.startDate = moment(value.time[0]).format('YYYY-MM-DD')
      value.endDate = moment(value.time[1]).format('YYYY-MM-DD')
    }
    const param = {
      ...data,
      ...value,
    }
    setCurrent(1)
    setParams(param)
    getOperationLog(param);
  };
  const onReset = () => {
    setCurrent(1)
    setParams(data)
    form.resetFields();
    getOperationLog(data);
  };
  const columns = [
    { title: '编号', dataIndex: 'operationId', key: 'index' },
    { title: '操作人', dataIndex: 'operationName', key: 'index' },
    { title: '操作日期', dataIndex: 'operationDate', key: 'index' },
    { title: 'IP地址', dataIndex: 'operationIp', key: 'index' },
    {
      title: '操作记录', dataIndex: 'status', key: 'status', render: (text, record) => (
        <Tooltip placement="top" title={record.jsonResult}>
          <span className="record">{record.jsonResult}</span>
        </Tooltip>

      )
    },
  ]
  return (
    <div className="wrapper">
      <div className="filter-box">
        <Form
          form={form}
          name="normal_login"
          onFinish={onFinish}
          initialValues={{ status: '' }}
        >
          <Row gutter={24}>
            <Col span={5} key={0}>
              <Form.Item label="操作人" name="operationName">
                <Input placeholder="用户名" autoComplete='off' />
              </Form.Item>
            </Col>
            <Col span={7} key={1}>
              <Form.Item name="time" label="操作日期">
                <RangePicker
                  disabledDate={disabledDate}
                  placeholder={['开始时间', '结束时间']}
                />
              </Form.Item>
            </Col>
            <Col span={6} key={3}>
              <Form.Item>
                <Button type="primary" htmlType="submit">
                  查询
                </Button>
                <Button onClick={onReset}>
                  重置
                </Button>
              </Form.Item>
            </Col>
          </Row>
        </Form>
      </div>

      <div className="table">
        <div className="table-header">
          <h2 className="table-title">操作日志</h2>
        </div>

        <Table
          columns={columns}
          scroll={{ y: 'calc(100vh - 360px)' }}
          dataSource={logList}
          rowKey={record => record.id}
          pagination={{
            pageSize: size,
            size: 'small',
            current: current,
            showSizeChanger: true,
            pageSizeOptions: ['15', '30', '60', '120'],
            showTotal: (total, range) => `第${range[0]}-${range[1]} 条/共 ${total} 条数据`,
            onShowSizeChange: (current, pageSize) => onSizeChange(current, pageSize), // 改变每页数量时更新显示
            onChange: (page, pageSize) => changePage(page, pageSize),//点击页码事件
            total: total
          }} />
      </div>
    </div >
  )
}

export default OperationLog;