diff --git a/src/pages/Setting/LoginLog/index.tsx b/src/pages/Setting/LoginLog/index.tsx index 9f2ea18..a14b47f 100644 --- a/src/pages/Setting/LoginLog/index.tsx +++ b/src/pages/Setting/LoginLog/index.tsx @@ -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() 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('暂无数据可导出!') } diff --git a/src/pages/Setting/OperationLog/index.tsx b/src/pages/Setting/OperationLog/index.tsx index 6199d37..ab4cb5a 100644 --- a/src/pages/Setting/OperationLog/index.tsx +++ b/src/pages/Setting/OperationLog/index.tsx @@ -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 (
{ @@ -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('暂无数据可导出!') }