import { connect, Link } from "umi"; import type { CurrentUser } from "umi"; import type { ConnectState } from "@/models/connect"; import React, { useEffect, useRef, useState } from "react"; import ProCard from "@ant-design/pro-card"; import { MenuFoldOutlined } from "@ant-design/icons"; import { FormInstance, Tooltip } from "antd"; import { Button, message, Space, Spin, Tree } from "antd"; import useRequest from "@ahooksjs/use-request"; import { getServerpartTree } from "@/services/options"; import type { ActionType } from "@ant-design/pro-table"; import ProTable from "@ant-design/pro-table"; import ReactHTMLTableToExcel from "react-html-table-to-excel"; import moment from 'moment' import { handleGetBEHAVIORRECORDList } from "./service"; const saleRankReport: React.FC<{ currentUser: CurrentUser }> = (props) => { const { dispatch, children, currentUser } = props const downloadBtnRef = useRef() const actionRef = useRef(); const formRef = useRef(); const [reqDetailList, setReqDetailList] = useState(); // 合计项数据源 const [printOut, setPrintOut] = useState(); // 打印数据的内容 const [printIndex, setPrintIndex] = useState(new Date().getTime()) // 树相关的属性和方法 const [selectedId, setSelectedId] = useState() // 导出的加载效果 const [showLoading, setShowLoading] = useState(false) // 是否显示打印的表格 const [showExportTable, setShowExportTable] = useState(false) // 查询的条件 const [searchParams, setSearchParams] = useState() // 表格数据 const [tableData, setTableData] = useState() // 表格加载效果 const [tableLoading, setTableLoading] = useState(false) // 判断是否是第一次 const [isFirst, setIsFirst] = useState(true) const [columnsStateMap, setColumnsStateMap] = useState({ BEHAVIORRECORD_ID: { show: false }, OPERATING_SYSTEM: { show: false }, BROWSER_VERSION: { show: false }, }); // 改变panes const handleTabsPanes = (payload: any): void => { if (dispatch) { dispatch({ type: 'global/changeTabsRoutes', payload: { data: payload, action: 'add' }, }); } }; const columns: any = [ { title: '日志编号', width: 120, hideInSearch: true, dataIndex: 'BEHAVIORRECORD_ID' }, { title: '查询内容', hideInTable: true, dataIndex: 'searchValue' }, { title: '系统模块', width: 150, hideInSearch: true, ellipsis: true, dataIndex: 'BEHAVIORRECORD_ROUTNAME', render: (_, record) => { // return record?.BEHAVIORRECORD_ROUTNAME ? { // console.log('record', record); // const req: any = { // key: record.BEHAVIORRECORD_ROUT, // path: record.BEHAVIORRECORD_ROUT, // title: record.BEHAVIORRECORD_ROUTNAME, // children: children // } // console.log('req', req); // handleTabsPanes(req) // }}> // {record?.BEHAVIORRECORD_ROUTNAME || ""} // : "-" return record?.BEHAVIORRECORD_ROUTNAME ? {record?.BEHAVIORRECORD_ROUTNAME} : "" } }, { title: '操作类型', dataIndex: 'BEHAVIORRECORD_TYPE', // hideInSearch: true, width: 100, valueType: 'select', align: 'center', valueEnum: { "1000": '操作', "1001": '编辑', "1002": '删除', "2000": '查询' }, initialValue: "2000", }, { title: '操作人员', hideInSearch: true, dataIndex: 'USER_NAME', ellipsis: true, width: 120, // render: (_, record) => { // return // {record?.USER_NAME || '-'} // // } }, { title: '操作地址', hideInSearch: true, dataIndex: 'USER_LOGINIP', width: 150, }, { title: '操作地点', hideInSearch: true, dataIndex: 'USER_LOGINPLACE', width: 160, ellipsis: true, }, { title: '响应时间(s)', hideInSearch: true, dataIndex: 'BEHAVIORRECORD_DURATION', width: 120, align: 'center', sorter: (a, b) => a.BEHAVIORRECORD_DURATION - b.BEHAVIORRECORD_DURATION, render: (_, record) => { return `${record?.BEHAVIORRECORD_DURATION ? record?.BEHAVIORRECORD_DURATION : ""}` } }, { title: '操作内容', hideInSearch: true, dataIndex: 'BEHAVIORRECORD_EXPLAIN', width: 250, align: 'center', ellipsis: true, }, // { // title: '操作状态', // dataIndex: 'status', // hideInSearch: true, // width: 100, // render: (_, record) => { // return '成功' // } // }, { title: '操作日期', width: 160, valueType: 'date', dataIndex: 'BEHAVIORRECORD_TIME', initialValue: moment(), render: (_, record) => { return record?.BEHAVIORRECORD_TIME } }, { title: '操作平台', width: 160, dataIndex: 'SOURCE_PLATFORM', valueType: 'select', valueEnum: { "驿商云平台": "驿商云平台", "数智化看板": "数智化看板", "驿行畅旅": "驿行畅旅", "驿付商家版": "驿付商家版", "微信公众号": "微信公众号", "驿商云客户端": "驿商云客户端", "彩云驿出行": "彩云驿出行", }, initialValue: '驿商云平台' }, { title: '操作系统', width: 150, hideInSearch: true, dataIndex: 'OPERATING_SYSTEM', }, { title: '浏览器版本', width: 150, hideInSearch: true, dataIndex: 'BROWSER_VERSION', }, { title: '接口信息', width: 150, hideInSearch: true, dataIndex: 'REQUEST_INFO', ellipsis: true, }, // { // title: '调用入参', // width: 150, // hideInSearch: true, // dataIndex: 'BEHAVIORRECORD_DESC', // ellipsis: true, // }, // { // title: '操作', // width: 120, // dataIndex: 'options' // } ] const exportTable = (e) => { e.stopPropagation(); // 防止Collapse组件收起 const main = document.getElementsByClassName(`saleReportHideBox${printIndex}`)[0] const thead = main.querySelector('thead').cloneNode(true); // 深克隆DOM节点 const tbody = main.querySelector('tbody').cloneNode(true); // 深克隆DOM节点 const container = document.querySelector('#hiddenBox'); const tempTable = document.createElement('table'); tempTable.appendChild(thead); tempTable.appendChild(tbody); tempTable.setAttribute('id', 'table-to-xls-saleRankReport'); // 给table添加id,值与按钮上的table字段对应 container.appendChild(tempTable); // 把创建的节点添加到页面容器中 setShowLoading(false) downloadBtnRef.current.handleDownload(); setShowExportTable(false) tempTable.remove() // 防止重复打印一个内容 } const handleGetTableData = async () => { const res: any = formRef.current?.getFieldsValue() console.log('resresres', res); let params: any = { BEHAVIORRECORD_TIME: moment(res.BEHAVIORRECORD_TIME._d).format('YYYY-MM-DD'), SOURCE_PLATFORM: res.SOURCE_PLATFORM, BEHAVIORRECORD_TYPE: res.BEHAVIORRECORD_TYPE, ...res } setTableLoading(true) const req: any = { SearchParameter: { BEHAVIORRECORD_TIME_Start: moment(params?.BEHAVIORRECORD_TIME).format('YYYY-MM-DD'), BEHAVIORRECORD_TIME_End: moment(params?.BEHAVIORRECORD_TIME).format('YYYY-MM-DD'), SOURCE_PLATFORMS: params?.SOURCE_PLATFORM, // BEHAVIORRECORD_TYPE: params?.BEHAVIORRECORD_TYPE }, SortStr: 'BEHAVIORRECORD_TIME desc', KeyWord: { Key: 'BEHAVIORRECORD_ROUTNAME,USER_NAME,VISIT_CHANNELS,BEHAVIORRECORD_PREROUT', Value: params?.searchValue || '' }, PageIndex: 1, PageSize: 100 } setSearchParams(params) const data = await handleGetBEHAVIORRECORDList(req) setTableData(data) setTableLoading(false) const allReq: any = { SearchParameter: { BEHAVIORRECORD_TIME_Start: moment(params?.BEHAVIORRECORD_TIME).format('YYYY-MM-DD'), BEHAVIORRECORD_TIME_End: moment(params?.BEHAVIORRECORD_TIME).format('YYYY-MM-DD'), SOURCE_PLATFORMS: params?.SOURCE_PLATFORM, // BEHAVIORRECORD_TYPE: params?.BEHAVIORRECORD_TYPE }, SortStr: 'BEHAVIORRECORD_TIME desc', KeyWord: { Key: 'BEHAVIORRECORD_ROUTNAME,USER_NAME,VISIT_CHANNELS,BEHAVIORRECORD_PREROUT', Value: params?.searchValue || '' }, PageIndex: 1, PageSize: 999999 } const allData = await handleGetBEHAVIORRECORDList(allReq) setTableData(allData) setIsFirst(false) } useEffect(async () => { handleGetTableData() }, []) return (
{ // 打印报表 if (!reqDetailList || reqDetailList.length === 0) return; setPrintOut(el); }} > { showLoading ?
数据导出中...
: '' }
{ showExportTable && reqDetailList && reqDetailList.length > 0 ? : '' }
{ if (!isFirst) { handleGetTableData() } // console.log('data', data); // if (data && data.length > 0) { // setReqDetailList(data) // return { data, success: true } // } // return { data: [], success: true } }} toolbar={{ actions: [ , ] }} columnsState={{ value: columnsStateMap, onChange: setColumnsStateMap, }} onChange={(pagination, filters, sorter, extra) => { if (extra.action === 'sort') { return; } }} />
) } export default connect(({ user }: ConnectState) => ({ currentUser: user.currentUser }))(saleRankReport);