This commit is contained in:
ylj20011123 2025-11-21 18:49:48 +08:00
parent 0c9b0bc3ad
commit b31d9a8d41
2 changed files with 359 additions and 45 deletions

View File

@ -14,6 +14,7 @@ import ReactHTMLTableToExcel from "react-html-table-to-excel";
import LeftSelectTree from "@/pages/reports/settlementAccount/component/leftSelectTree";
import { handleGetOPERATELOGList } from "./service";
import moment from 'moment'
import { exportXlsxFromProColumnsExcelJS } from "@/utils/exportExcelFun";
const saleRankReport: React.FC<{ currentUser: CurrentUser }> = (props) => {
@ -38,6 +39,30 @@ const saleRankReport: React.FC<{ currentUser: CurrentUser }> = (props) => {
const [searchParams, setSearchParams] = useState<any>()
const columns: any = [
{
title: '统计时间',
dataIndex: 'search_date',
valueType: 'dateRange',
hideInTable: true,
hideInDescriptions: true,
search: {
transform: (value) => {
return {
search_date_Start: value[0],
search_date_End: value[1],
};
},
},
fieldProps: {
ranges: {
"本月": [moment().startOf('M'), moment()],
"上月": [moment().subtract(1, 'M').startOf('M'), moment().subtract(1, 'M').endOf('M')],
"近三月": [moment().subtract(3, 'M').startOf('M'), moment().endOf('M')],
"近半年": [moment().subtract(6, 'M').startOf('M'), moment().endOf('M')],
}
},
initialValue: [moment().startOf('M'), moment()],
},
{
title: '查询内容',
width: 120,
@ -45,14 +70,14 @@ const saleRankReport: React.FC<{ currentUser: CurrentUser }> = (props) => {
dataIndex: 'searchValue',
hideInTable: true,
},
{
title: '查询日期',
width: 160,
valueType: 'date',
hideInTable: true,
dataIndex: 'searchDate',
initialValue: moment(),
},
// {
// title: '查询日期',
// width: 160,
// valueType: 'date',
// hideInTable: true,
// dataIndex: 'searchDate',
// initialValue: moment(),
// },
{
title: '访问编码',
width: 120,
@ -225,8 +250,8 @@ const saleRankReport: React.FC<{ currentUser: CurrentUser }> = (props) => {
const req: any = {
SearchParameter: {
OPERATELOG_TYPES: params?.OPERATELOG_TYPE ? params?.OPERATELOG_TYPE : '1000,1001',
OPERATE_DATE_Start: moment(params?.searchDate).format('YYYY-MM-DD'),
OPERATE_DATE_End: moment(params?.searchDate).format('YYYY-MM-DD'),
OPERATE_DATE_Start: moment(params?.search_date_Start).format('YYYY-MM-DD'),
OPERATE_DATE_End: moment(params?.search_date_End).format('YYYY-MM-DD'),
Province_Code: '734100',
},
SortStr: 'OPERATE_DATE desc',
@ -242,8 +267,186 @@ const saleRankReport: React.FC<{ currentUser: CurrentUser }> = (props) => {
const data = await handleGetOPERATELOGList(req)
console.log('login', data);
if (data && data.length > 0) {
setReqDetailList(data)
return { data, success: true }
let res: any = data
let ipConfig: any = {
"36.4.22.102": "安徽省宿州市萧县",
"36.60.46.185": "安徽省合肥市",
"39.144.36.176": "安徽省宿州市",
"39.144.124.27": "浙江省杭州市",
"39.144.124.132": "浙江省杭州市",
"39.144.158.24": "江苏省徐州市",
"39.144.159.253": "安徽省滁州市",
"39.144.160.136": "安徽省淮北市",
"39.144.160.143": "安徽省淮北市",
"39.144.160.144": "安徽省淮北市",
"39.144.160.152": "安徽省淮北市",
"39.144.160.157": "安徽省淮北市",
"39.144.161.11": "安徽省六安市",
"39.144.161.210": "安徽省宿州市",
"39.144.161.233": "安徽省宿州市",
"39.144.161.254": "安徽省宿州市",
"39.172.4.108": "浙江省嘉兴市海宁市",
"39.172.4.201": "浙江省嘉兴市海宁市",
"39.172.4.213": "浙江省嘉兴市海宁市",
"39.172.5.59": "浙江省嘉兴市海宁市",
"39.172.5.112": "浙江省嘉兴市海宁市",
"39.172.5.121": "浙江省嘉兴市海宁市",
"39.172.5.127": "浙江省嘉兴市海宁市",
"60.163.34.228": "浙江省嘉兴市南湖区",
"60.163.46.232": "浙江省嘉兴市南湖区",
"60.163.47.184": "浙江省嘉兴市海盐县",
"60.163.52.122": "浙江省嘉兴市秀洲区",
"60.163.53.59": "浙江省嘉兴市海宁市",
"60.163.55.165": "浙江省嘉兴市海宁市",
"60.163.55.167": "浙江省嘉兴市桐乡市",
"60.163.58.172": "浙江省嘉兴市海宁市",
"60.163.59.232": "浙江省嘉兴市海宁市",
"60.163.59.236": "浙江省嘉兴市海宁市",
"60.163.60.47": "浙江省嘉兴市海宁市",
"60.163.60.59": "浙江省嘉兴市海宁市",
"60.163.62.90": "浙江省嘉兴市桐乡市",
"60.171.238.244": "安徽省宿州市萧县",
"60.172.217.114": "安徽省淮北市濉溪县",
"60.172.217.145": "安徽省淮北市濉溪县",
"60.176.162.186": "浙江省杭州市上城区",
"60.176.164.76": "江苏省常州市武进区",
"60.176.164.247": "浙江省杭州市上城区",
"112.32.22.113": "安徽省合肥市瑶海区",
"114.96.180.180": "安徽省淮北市濉溪县",
"114.96.194.20": "安徽省淮北市濉溪县",
"114.100.64.31": "安徽省合肥市蜀山区",
"114.101.225.25": "安徽省六安市",
"115.192.49.197": "浙江省杭州市上城区",
"115.192.53.9": "浙江省杭州市上城区",
"115.192.107.101": "浙江省杭州市上城区",
"115.193.225.226": "浙江省杭州市上城区",
"115.193.227.227": "浙江省杭州市上城区",
"115.193.231.250": "浙江省杭州市上城区",
"115.194.85.219": "浙江省杭州市上城区",
"115.194.177.186": "浙江省杭州市上城区",
"115.195.193.45": "浙江省杭州市上城区",
"115.196.92.254": "浙江省杭州市上城区",
"115.198.179.20": "浙江省杭州市上城区",
"115.204.235.249": "浙江省杭州市上城区",
"115.205.166.1": "浙江省杭州市上城区",
"115.205.167.144": "浙江省杭州市上城区",
"115.206.6.18": "浙江省杭州市上城区",
"115.227.185.89": "浙江省杭州市上城区",
"115.230.232.107": "浙江省嘉兴市南湖区",
"115.230.233.85": "浙江省嘉兴市南湖区",
"117.64.111.55": "安徽省合肥市长丰县",
"117.69.251.95": "安徽省淮北市濉溪县",
"117.70.141.75": "安徽省合肥市",
"117.136.100.128": "安徽省淮北市",
"117.136.100.179": "安徽省淮北市",
"117.136.100.200": "安徽省宿州市",
"117.136.111.237": "浙江省杭州市",
"120.243.183.29": "安徽省淮北市濉溪县",
"122.231.76.168": "浙江省杭州市上城区",
"122.235.192.101": "浙江省杭州市上城区",
"122.235.199.72": "浙江省杭州市上城区",
"122.235.235.125": "浙江省杭州市上城区",
"122.235.236.69": "浙江省杭州市上城区",
"122.235.236.102": "浙江省杭州市上城区",
"122.235.237.105": "浙江省杭州市上城区",
"122.238.13.42": "浙江省嘉兴市海宁市",
"122.238.16.70": "浙江省嘉兴市平湖市",
"122.238.19.85": "浙江省嘉兴市南湖区",
"122.238.22.131": "浙江省嘉兴市海宁市",
"122.238.22.208": "浙江省嘉兴市海宁市",
"122.238.125.207": "浙江省嘉兴市桐乡市",
"122.238.126.126": "浙江省嘉兴市海宁市",
"122.238.127.172": "浙江省嘉兴市海宁市",
"122.238.141.162": "浙江省嘉兴市秀洲区",
"122.238.141.164": "浙江省嘉兴市秀洲区",
"122.238.141.172": "浙江省嘉兴市秀洲区",
"122.238.155.77": "浙江省嘉兴市南湖区",
"125.118.26.195": "浙江省杭州市上城区",
"125.119.7.98": "浙江省杭州市上城区",
"125.119.84.18": "浙江省杭州市上城区",
"125.119.84.45": "浙江省杭州市上城区",
"125.120.68.105": "浙江省杭州市上城区",
"125.120.92.21": "浙江省杭州市上城区",
"183.157.72.118": "浙江省杭州市上城区",
"218.23.8.6": "安徽省宿州市萧县",
"218.72.123.102": "浙江省杭州市上城区",
"218.74.48.78": "浙江省杭州市上城区",
"218.109.197.191": "浙江省杭州市上城区",
"220.178.52.243": "安徽省合肥市蜀山区",
"220.205.224.8": "安徽省合肥市",
"220.205.224.35": "安徽省合肥市",
"220.205.224.39": "安徽省合肥市",
"220.205.224.100": "安徽省合肥市",
"220.205.224.169": "安徽省合肥市",
"220.205.224.237": "安徽省合肥市",
"220.205.225.1": "安徽省合肥市",
"220.205.225.96": "安徽省合肥市",
"220.205.225.150": "安徽省合肥市",
"220.205.232.82": "安徽省合肥市",
"220.205.232.106": "安徽省合肥市",
"220.205.232.130": "安徽省合肥市",
"220.205.232.190": "安徽省合肥市",
"220.205.232.206": "安徽省合肥市",
"220.205.233.36": "安徽省合肥市",
"220.205.233.92": "安徽省合肥市",
"220.205.233.110": "安徽省合肥市",
"220.205.248.117": "安徽省合肥市",
"220.205.248.142": "安徽省合肥市",
"220.205.248.179": "安徽省合肥市",
"220.205.248.196": "安徽省合肥市",
"220.205.248.236": "安徽省合肥市",
"220.205.249.113": "安徽省合肥市",
"220.205.249.124": "安徽省合肥市",
"220.205.249.135": "安徽省合肥市",
"220.205.249.137": "安徽省合肥市",
"220.205.249.171": "安徽省合肥市",
"220.205.249.203": "安徽省合肥市",
"220.205.249.216": "安徽省合肥市",
"220.205.249.254": "安徽省合肥市",
"220.205.252.25": "安徽省合肥市",
"220.205.252.63": "安徽省合肥市",
"220.205.252.69": "安徽省合肥市",
"220.205.252.94": "安徽省合肥市",
"220.205.252.187": "安徽省合肥市",
"220.205.253.14": "安徽省合肥市",
"220.205.253.65": "安徽省合肥市",
"220.205.253.90": "安徽省合肥市",
"220.205.253.102": "安徽省合肥市",
"220.205.253.250": "安徽省合肥市",
"220.205.253.253": "安徽省合肥市",
"220.248.226.210": "安徽省合肥市蜀山区",
"222.221.252.82": "云南省昆明市西山区",
"223.104.34.163": "安徽省淮北市",
"223.104.34.171": "安徽省淮北市",
"223.104.34.175": "安徽省淮北市",
"223.104.34.176": "安徽省淮北市",
"223.104.34.187": "安徽省淮北市",
"223.104.155.31": "江苏省徐州市",
"223.104.155.88": "江苏省徐州市",
"223.242.198.246": "安徽省淮北市濉溪县",
"223.246.228.18": "安徽省合肥市",
}
for (let i = 0; i < res.length; i++) {
if (res[i].USER_LOGINIP && !res[i].USER_LOGINPLACE) {
if (ipConfig[res[i].USER_LOGINIP]) {
res[i].USER_LOGINPLACE = ipConfig[res[i].USER_LOGINIP]
} else {
// await fetch(`/baidu-api/location/ip?ip=${res[i].USER_LOGINIP}&coor=bd09ll&ak=XrQQuNQRGxap9YH2xmvx3dzuJVkXhTzT`).then(response => response.text()).then(data => {
// let result: any = JSON.parse(data)
// console.log('resultresultresult', result);
// ipConfig[res[i].USER_LOGINIP] = result.content.address
// });
ipConfig[res[i].USER_LOGINIP] = ""
}
}
}
console.log('resresres', res);
console.log('ipConfigipConfigipConfig', ipConfig);
setReqDetailList(res)
return { data: res, success: true }
}
return { data: [], success: true }
}}
@ -263,13 +466,25 @@ const saleRankReport: React.FC<{ currentUser: CurrentUser }> = (props) => {
type="primary"
onClick={(e) => {
if (reqDetailList && reqDetailList.length > 0) {
setShowLoading(true)
setTimeout(() => {
setShowExportTable(true)
setTimeout(() => {
exportTable(e)
}, 100)
}, 100)
// 尝试一下 导出新方法
exportXlsxFromProColumnsExcelJS(columns,
reqDetailList,
`登录日志`,
{
// topTitle: `进销存类别报表`, // 顶部大标题
// footerMaker: currentUser?.Name,
// footerMakerTime: moment().format('YYYY-MM-DD HH:mm:ss'),
// footerStatsTime: ""
}
)
// setShowLoading(true)
// setTimeout(() => {
// setShowExportTable(true)
// setTimeout(() => {
// exportTable(e)
// }, 100)
// }, 100)
} else {
message.error('暂无数据可导出!')
}

View File

@ -13,6 +13,7 @@ import ProTable from "@ant-design/pro-table";
import ReactHTMLTableToExcel from "react-html-table-to-excel";
import moment from 'moment'
import { handleGetBEHAVIORRECORDList } from "./service";
import { exportXlsxFromProColumnsExcelJS } from "@/utils/exportExcelFun";
const saleRankReport: React.FC<{ currentUser: CurrentUser }> = (props) => {
@ -58,6 +59,31 @@ const saleRankReport: React.FC<{ currentUser: CurrentUser }> = (props) => {
};
const columns: any = [
{
title: '统计时间',
dataIndex: 'search_date',
valueType: 'dateRange',
hideInTable: true,
hideInDescriptions: true,
search: {
transform: (value) => {
return {
BEHAVIORRECORD_TIME_Start: value[0],
BEHAVIORRECORD_TIME_End: value[1],
};
},
},
fieldProps: {
ranges: {
"本月": [moment().startOf('M'), moment()],
"上月": [moment().subtract(1, 'M').startOf('M'), moment().subtract(1, 'M').endOf('M')],
"近三月": [moment().subtract(3, 'M').startOf('M'), moment().endOf('M')],
"近半年": [moment().subtract(6, 'M').startOf('M'), moment().endOf('M')],
}
},
initialValue: [moment(), moment()],
},
{
title: '日志编号',
width: 120,
@ -168,6 +194,7 @@ const saleRankReport: React.FC<{ currentUser: CurrentUser }> = (props) => {
width: 160,
valueType: 'date',
dataIndex: 'BEHAVIORRECORD_TIME',
hideInSearch: true,
initialValue: moment(),
render: (_, record) => {
return record?.BEHAVIORRECORD_TIME
@ -244,7 +271,9 @@ const saleRankReport: React.FC<{ currentUser: CurrentUser }> = (props) => {
const res: any = formRef.current?.getFieldsValue()
console.log('resresres', res);
let params: any = {
BEHAVIORRECORD_TIME: moment(res.BEHAVIORRECORD_TIME._d).format('YYYY-MM-DD'),
// BEHAVIORRECORD_TIME: moment(res.BEHAVIORRECORD_TIME._d).format('YYYY-MM-DD'),
BEHAVIORRECORD_TIME_Start: moment(res.search_date[0]._d).format('YYYY-MM-DD'),
BEHAVIORRECORD_TIME_End: moment(res.search_date[1]._d).format('YYYY-MM-DD'),
SOURCE_PLATFORM: res.SOURCE_PLATFORM,
BEHAVIORRECORD_TYPE: res.BEHAVIORRECORD_TYPE,
...res
@ -253,8 +282,8 @@ const saleRankReport: React.FC<{ currentUser: CurrentUser }> = (props) => {
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'),
BEHAVIORRECORD_TIME_Start: moment(params?.BEHAVIORRECORD_TIME_Start).format('YYYY-MM-DD'),
BEHAVIORRECORD_TIME_End: moment(params?.BEHAVIORRECORD_TIME_End).format('YYYY-MM-DD'),
SOURCE_PLATFORMS: params?.SOURCE_PLATFORM,
// BEHAVIORRECORD_TYPE: params?.BEHAVIORRECORD_TYPE
},
@ -273,13 +302,13 @@ const saleRankReport: React.FC<{ currentUser: CurrentUser }> = (props) => {
setTableData(data.List)
setTableLoading(false)
setReqDetailList(data.List)
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'),
BEHAVIORRECORD_TIME_Start: moment(params?.BEHAVIORRECORD_TIME_Start).format('YYYY-MM-DD'),
BEHAVIORRECORD_TIME_End: moment(params?.BEHAVIORRECORD_TIME_End).format('YYYY-MM-DD'),
SOURCE_PLATFORMS: params?.SOURCE_PLATFORM,
// BEHAVIORRECORD_TYPE: params?.BEHAVIORRECORD_TYPE
},
@ -293,12 +322,13 @@ const saleRankReport: React.FC<{ currentUser: CurrentUser }> = (props) => {
}
const allData = await handleGetBEHAVIORRECORDList(allReq)
setTableData(allData.List)
setReqDetailList(data.List)
setIsFirst(false)
}
useEffect(async () => {
handleGetTableData()
}, [])
// useEffect(async () => {
// handleGetTableData()
// }, [])
return (
<div ref={(el) => {
@ -370,19 +400,75 @@ const saleRankReport: React.FC<{ currentUser: CurrentUser }> = (props) => {
headerTitle={'操作日志列表'}
search={{ span: 6 }}
pagination={{ pageSize: 100 }}
// pagination={false}
dataSource={tableData}
loading={tableLoading}
// loading={tableLoading}
request={async (params) => {
if (!isFirst) {
handleGetTableData()
}
// console.log('data', data);
// if (data && data.length > 0) {
// setReqDetailList(data)
// return { data, success: true }
// if (!isFirst) {
// handleGetTableData()
// }
// return { data: [], success: true }
const allReq: any = {
SearchParameter: {
BEHAVIORRECORD_TIME_Start: moment(params?.BEHAVIORRECORD_TIME_Start).format('YYYY-MM-DD'),
BEHAVIORRECORD_TIME_End: moment(params?.BEHAVIORRECORD_TIME_End).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.List)
let list: any = allData.List
if (list && list.length > 0) {
let res: any = []
list.forEach((item: any) => {
if (item.USER_ID !== 4667) {
res.push(item)
}
})
// 剔除掉 安徽建工管理员的账号
// 创建ip地址缓存
let ipConfig: any = {
"220.178.52.243": "安徽省合肥市蜀山区",
"60.176.162.186": "浙江省杭州市上城区",
"117.69.251.95": "安徽省淮北市濉溪县",
"122.231.76.168": "浙江省杭州市上城区",
"218.23.8.6": "安徽省宿州市萧县",
"223.246.228.18": "安徽省合肥市",
"240e:45a:4e84:19ee:e65d:e52f:3b89:6025": "安徽省淮北市",
}
for (let i = 0; i < res.length; i++) {
if (res[i].USER_LOGINIP && !res[i].USER_LOGINPLACE) {
if (ipConfig[res[i].USER_LOGINIP]) {
res[i].USER_LOGINPLACE = ipConfig[res[i].USER_LOGINIP]
} else {
// await fetch(`/baidu-api/location/ip?ip=${res[i].USER_LOGINIP}&coor=bd09ll&ak=XrQQuNQRGxap9YH2xmvx3dzuJVkXhTzT`).then(response => response.text()).then(data => {
// let result: any = JSON.parse(data)
// console.log('resultresultresult', result);
// ipConfig[res[i].USER_LOGINIP] = result?.content?.address || ""
// });
ipConfig[res[i].USER_LOGINIP] = ""
}
}
}
console.log('resresres', res);
console.log('ipConfigipConfigipConfig', ipConfig);
setReqDetailList(res)
setTableData(res)
return { data: res, success: true }
}
return { data: [], success: true }
}}
toolbar={{
actions: [
@ -400,13 +486,26 @@ const saleRankReport: React.FC<{ currentUser: CurrentUser }> = (props) => {
type="primary"
onClick={(e) => {
if (reqDetailList && reqDetailList.length > 0) {
setShowLoading(true)
setTimeout(() => {
setShowExportTable(true)
setTimeout(() => {
exportTable(e)
}, 100)
}, 100)
// 尝试一下 导出新方法
exportXlsxFromProColumnsExcelJS(columns,
reqDetailList,
`操作日志`,
{
// topTitle: `进销存类别报表`, // 顶部大标题
// footerMaker: currentUser?.Name,
// footerMakerTime: moment().format('YYYY-MM-DD HH:mm:ss'),
// footerStatsTime: ""
}
)
// setShowLoading(true)
// setTimeout(() => {
// setShowExportTable(true)
// setTimeout(() => {
// exportTable(e)
// }, 100)
// }, 100)
} else {
message.error('暂无数据可导出!')
}