import {connect} from "umi"; import type {CurrentUser} from "umi"; import type {ConnectState} from "@/models/connect"; import React, {useRef, useState} from "react"; import ProCard from "@ant-design/pro-card"; import {MenuFoldOutlined} from "@ant-design/icons"; import type {FormInstance} from "antd"; import {Avatar, Button, Menu, message, Space, Spin, Tree,Drawer} from "antd"; import useRequest from "@ahooksjs/use-request"; import {getServerpartTree, handleCallLogs, handleGetDate} 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 SubMenu from "antd/lib/menu/SubMenu"; import moment from "moment"; import {handleGetABNORMALAUDITList} from "@/pages/reports/audit/abnormalAudit/service"; import PageTitleBox from "@/components/PageTitleBox"; const abnormalAudit: React.FC<{ currentUser: CurrentUser}> = (props) => { const { currentUser } = props const downloadBtnRef = useRef() const actionRef = useRef(); const formRef = useRef(); const [reqDetailList, setReqDetailList] = useState(); // 合计项数据源 const [printOut, setPrintOut] = useState(); // 打印数据的内容 const [collapsible, setCollapsible] = useState(false) const [treeView,setTreeView] = useState() // 加载服务区树 const { loading: treeLoading, data: treeViews } = useRequest(async () => { const data = await getServerpartTree(currentUser?.ProvinceCode, currentUser?.CityAuthority, true, true, true) console.log('data',data) setTreeView(data) return data }) // 树相关的属性和方法 const [selectedId, setSelectedId] = useState() // 导出的加载效果 const [showLoading,setShowLoading] = useState(false) // 是否显示打印的表格 const [showExportTable,setShowExportTable] = useState(false) const [currenMenu, setCurrenMenu] = useState(); // 当前选中左侧菜单的服务区节点 // 显示详情抽屉 const [showDetailDrawer,setShowDetailDrawer] = useState(false) // 选择的当行详情 const [currentRow,setCurrentRow] = useState() const columns: any = [ { title: '统计时间', dataIndex: 'search_date', valueType: 'dateRange', hideInTable: true, hideInDescriptions: true, colSize: 1, initialValue: [moment().add(-1, 'month').format('YYYY-MM-DD'), moment().add(-1,'day').format('YYYY-MM-DD')], search: { transform: (value) => { return { CHECK_STARTDATE_SEARCH: value[0], CHECK_ENDDATE_SEARCH: value[1], }; }, }, fieldProps: { disabledDate: (current: any) => current && current > moment() } }, { title:'序号', width: 60, dataIndex: '', valueType: 'index', hideInSearch: true }, { title:'服务区名称', width: 150, ellipsis: true, dataIndex: 'SERVERPART_NAME', hideInSearch: true }, { title:'门店名称', width: 150, ellipsis: true, dataIndex: 'SHOPNAME', hideInSearch: true, render:(_,record)=>{ return record?.SHOPNAME?{ setCurrentRow(record) setShowDetailDrawer(true) }}>{record?.SHOPNAME}:'' } }, { title:'总销售额', width: 120, valueType: 'digit', dataIndex: 'TOTALSELLAMOUNT', hideInSearch: true }, { title:'长短款', width: 120, valueType: 'digit', dataIndex: 'DIFFERENT_PRICE', hideInSearch: true }, { title:'稽核金额/对客现金', width: 180, dataIndex: 'CHECK_CASHPAY/CASH_PAYMENT', hideInSearch: true, render:(_,record)=>{ return `${record?.CHECK_CASHPAY || '0'}/${record?.CASH_PAYMENT || '0'}` } }, { title:'间隔时长(分)', width: 120, dataIndex: 'TIME_INTERVAL', hideInSearch: true }, { title:'结账时间', width: 180, dataIndex: 'ENDACCOUNT_DATE', hideInSearch: true, render:(_,record)=>{ return record?.ENDACCOUNT_DATE?handleGetDate(record?.ENDACCOUNT_DATE):'-' } }, { title:'稽查时间', width: 180, dataIndex: 'CHECK_ENDDATE', hideInSearch: true, render:(_,record)=>{ return record?.CHECK_ENDDATE?handleGetDate(record?.CHECK_ENDDATE):'-' } }, { title:'起始时间', width: 180, dataIndex: 'CHECK_STARTDATE', hideInSearch: true, render:(_,record)=>{ return record?.CHECK_STARTDATE?handleGetDate(record?.CHECK_STARTDATE):'-' } }, { title:'稽查类型', width: 120, dataIndex:'CHECK_TYPE', valueType: 'select', valueEnum:{ "现场稽查":"现场稽查", "区域稽查":"区域稽查", "公司稽查":"公司稽查", } }, { title:'稽核人员', width: 120, dataIndex: 'WORKER_NAME', hideInSearch: true }, { title:'收银人员', width: 120, dataIndex: 'CASHIER_NAME', ellipsis: true, hideInSearch: true }, ] const exportTable = (e) => { e.stopPropagation(); // 防止Collapse组件收起 const main = document.getElementsByClassName('saleReportHideBox')[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-abnormalAudit'); // 给table添加id,值与按钮上的table字段对应 container.appendChild(tempTable); // 把创建的节点添加到页面容器中 setShowLoading(false) downloadBtnRef.current.handleDownload(); setShowExportTable(false) tempTable.remove() // 防止重复打印一个内容 } // 查询的条件 const [searchParams,setSearchParams] = useState() return (
{ // 打印报表 if (!reqDetailList || reqDetailList.length === 0) return; setPrintOut(el); }} > { showLoading ?
数据导出中...
: '' }
{ showExportTable && reqDetailList && reqDetailList.length > 0 ? : '' }
{ setCollapsible(!collapsible) }}/>} colSpan={!collapsible ? "300px" : "60px"} title={!collapsible ? "请选择服务区" : ""} headerBordered collapsed={collapsible} > {treeView && treeView.length > 0 ? { const selectedIds = info.checkedNodes.filter(n => n?.type === 1) setSelectedId(selectedIds.map(n => n?.value)?.toString() || '') // actionRef?.current?.reload() // getData(selectedIds.map(n => n?.value)?.toString() || '') }} // switcherIcon={} /> : ''}
} search={{span: 6}} scroll={{x: 1500}} request={async(params)=>{ if (!selectedId){ return } const req = { SearchParameter:{ ...params, SERVERPART_ID: selectedId }, PageIndex: 1, PageSize: 999999 } handleCallLogs() setSearchParams(params) const data = await handleGetABNORMALAUDITList(req) console.log('data',data) if (data && data.length>0){ setReqDetailList(data) return {data,success: true} } setReqDetailList([]) return {data:[],success: true} }} toolbar={{ actions: [ , ] }} />
{ // 关闭抽屉 则在清空选中行数据 并 设置抽屉状态为关闭 setShowDetailDrawer(false); setCurrentRow(undefined); }} destroyOnClose bodyStyle={{backgroundColor: "#f9f9f9", padding: 16}} closable={false} >
) } export default connect(({user}: ConnectState) => ({ currentUser: user.currentUser }))(abnormalAudit);