|
|
@@ -0,0 +1,233 @@
|
|
|
+import React, { useCallback, useEffect, useMemo, useState } from 'react'
|
|
|
+import styles from './index.module.scss'
|
|
|
+import { Button, DatePicker, Select } from 'antd'
|
|
|
+import { A2getNumFu, A2initXianFu, A2setTimeFu, A2valueAcFu } from '../data'
|
|
|
+import dayjs from 'dayjs'
|
|
|
+import { A2_APIgetUserList, A2_APIgetXianUser } from '@/store/action/Aanalyse/A2visStat'
|
|
|
+import { antdSelectType } from '@/utils/dataChange'
|
|
|
+import { getKuListByOpenFu } from '@/pages/Zother/data'
|
|
|
+import { ziyuanAcGet, ziyuanAcSet } from '@/utils/storage'
|
|
|
+import MyTable from '@/components/MyTable'
|
|
|
+import { openLink } from '@/utils/history'
|
|
|
+import { A2sonTableC } from '@/utils/tableData'
|
|
|
+const { RangePicker } = DatePicker
|
|
|
+const timeArr = [14, 30]
|
|
|
+
|
|
|
+type Props = {
|
|
|
+ info: any
|
|
|
+ closeFu: () => void
|
|
|
+}
|
|
|
+
|
|
|
+function A2look({ info, closeFu }: Props) {
|
|
|
+ // 柱状图
|
|
|
+ const [timeValue1, setTimeValue1] = useState<string[]>([])
|
|
|
+
|
|
|
+ // 列表
|
|
|
+
|
|
|
+ // const [time2Obj,setTime2Obj] =useState< {
|
|
|
+ // formDefId: number;
|
|
|
+ // time: string[];
|
|
|
+ // }>({formDefId:0,time:[]})
|
|
|
+
|
|
|
+ const [timeValue2, setTimeValue2] = useState<string[]>([])
|
|
|
+ const [formDefId, setFormDefId] = useState(0)
|
|
|
+
|
|
|
+ const [kuList, setKuList] = useState<antdSelectType[]>([])
|
|
|
+ const [loding, setLoding] = useState(false)
|
|
|
+ useEffect(() => {
|
|
|
+ getKuListByOpenFu(data => {
|
|
|
+ setLoding(true)
|
|
|
+ if (data && data.length) {
|
|
|
+ setKuList(data)
|
|
|
+ const ziyuanAcTxt = ziyuanAcGet()
|
|
|
+ let objRes = data.find(v => v.value === ziyuanAcTxt)
|
|
|
+
|
|
|
+ const resFid = objRes ? ziyuanAcTxt : data[0].value
|
|
|
+ setFormDefId(resFid)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }, [])
|
|
|
+
|
|
|
+ useEffect(() => {
|
|
|
+ A2setTimeFu(14, setTimeValue1)
|
|
|
+ A2setTimeFu(14, setTimeValue2)
|
|
|
+ }, [])
|
|
|
+
|
|
|
+ useEffect(() => {
|
|
|
+ A2getNumFu(timeValue1, A2_APIgetXianUser, '#ech3', A2initXianFu, { loginUserId: info.userId })
|
|
|
+ }, [info.userId, timeValue1])
|
|
|
+
|
|
|
+ // 获取列表
|
|
|
+
|
|
|
+ const [list, setList] = useState<any[]>([])
|
|
|
+
|
|
|
+ const getListFu = useCallback(async () => {
|
|
|
+ const obj = {
|
|
|
+ startTime: timeValue2[0] + ' 00:00:00',
|
|
|
+ endTime: timeValue2[1] + ' 23:59:59',
|
|
|
+ formDefId,
|
|
|
+ loginUserId: info.userId
|
|
|
+ }
|
|
|
+
|
|
|
+ if (obj.formDefId) {
|
|
|
+ const res = await A2_APIgetUserList(obj)
|
|
|
+ if (res.code === 0) {
|
|
|
+ setList(res.data || [])
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, [formDefId, info.userId, timeValue2])
|
|
|
+
|
|
|
+ useEffect(() => {
|
|
|
+ getListFu()
|
|
|
+ }, [getListFu])
|
|
|
+
|
|
|
+ const tableLastBtn = useMemo(() => {
|
|
|
+ return [
|
|
|
+ {
|
|
|
+ title: '操作',
|
|
|
+ render: (item: any) => (
|
|
|
+ <>
|
|
|
+ <Button
|
|
|
+ size='small'
|
|
|
+ type='text'
|
|
|
+ onClick={() => openLink(`/goodsLook/${item.form_data_id}/${formDefId}`)}
|
|
|
+ >
|
|
|
+ 查看藏品
|
|
|
+ </Button>
|
|
|
+ </>
|
|
|
+ )
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ }, [formDefId])
|
|
|
+
|
|
|
+ return (
|
|
|
+ <div className={styles.A2look}>
|
|
|
+ <div className='A2Ltop'>
|
|
|
+ <div className='A2LT1'>
|
|
|
+ <h3>{info.creatorName}</h3>
|
|
|
+ <p>
|
|
|
+ 账号名称:{info.userName} | {info.roleName}
|
|
|
+ </p>
|
|
|
+ </div>
|
|
|
+ <div className='A2LT2'>
|
|
|
+ <div>
|
|
|
+ <p>总计访问次数</p>
|
|
|
+ <span>{info.pcs_visit}</span>
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <p>阅读文献总数</p>
|
|
|
+ <span>{info.pcs_read}</span>
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <p>总阅读时长(分)</p>
|
|
|
+ <span>{info.pcs_time}</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <Button onClick={closeFu}>返回</Button>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div className='A2Lzhe'>
|
|
|
+ <div className='A2time'>
|
|
|
+ <div className='A2tit'>访问趋势</div>
|
|
|
+ <div className='A2timeRR'>
|
|
|
+ {timeArr.map(v => (
|
|
|
+ <Button
|
|
|
+ type={A2valueAcFu(timeValue1) === v ? 'primary' : 'default'}
|
|
|
+ onClick={() => A2setTimeFu(v, setTimeValue1)}
|
|
|
+ size='small'
|
|
|
+ key={v}
|
|
|
+ >
|
|
|
+ 最近{v}天
|
|
|
+ </Button>
|
|
|
+ ))}
|
|
|
+  
|
|
|
+ <RangePicker
|
|
|
+ allowClear={false}
|
|
|
+ value={
|
|
|
+ timeValue1 && timeValue1.length
|
|
|
+ ? [dayjs(timeValue1[0]), dayjs(timeValue1[1])]
|
|
|
+ : undefined
|
|
|
+ }
|
|
|
+ onChange={(_, e) => setTimeValue1(e)}
|
|
|
+ size='small'
|
|
|
+ disabledDate={current => {
|
|
|
+ const minDate = dayjs().subtract(90, 'day').startOf('day')
|
|
|
+ const maxDate = dayjs().subtract(1, 'day').endOf('day')
|
|
|
+ return current < minDate || current > maxDate
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div id='ech3'></div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div className='A2Lzhe A2Lzhe2'>
|
|
|
+ <div className='A2time'>
|
|
|
+ <div className='A2tit'>
|
|
|
+ 访问明细  
|
|
|
+ {formDefId ? (
|
|
|
+ <div className='Z0ku'>
|
|
|
+ 资源库:
|
|
|
+ <Select
|
|
|
+ style={{ maxWidth: 200, minWidth: 120 }}
|
|
|
+ value={formDefId}
|
|
|
+ onChange={e => {
|
|
|
+ setFormDefId(e)
|
|
|
+ ziyuanAcSet(e)
|
|
|
+ }}
|
|
|
+ options={kuList}
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ ) : null}
|
|
|
+ </div>
|
|
|
+ <div className='A2timeRR'>
|
|
|
+ {timeArr.map(v => (
|
|
|
+ <Button
|
|
|
+ type={A2valueAcFu(timeValue2) === v ? 'primary' : 'default'}
|
|
|
+ onClick={() => A2setTimeFu(v, setTimeValue2)}
|
|
|
+ size='small'
|
|
|
+ key={v}
|
|
|
+ >
|
|
|
+ 最近{v}天
|
|
|
+ </Button>
|
|
|
+ ))}
|
|
|
+  
|
|
|
+ <RangePicker
|
|
|
+ allowClear={false}
|
|
|
+ value={
|
|
|
+ timeValue2 && timeValue2.length
|
|
|
+ ? [dayjs(timeValue2[0]), dayjs(timeValue2[1])]
|
|
|
+ : undefined
|
|
|
+ }
|
|
|
+ onChange={(_, e) => setTimeValue2(e)}
|
|
|
+ size='small'
|
|
|
+ disabledDate={current => {
|
|
|
+ const minDate = dayjs().subtract(90, 'day').startOf('day')
|
|
|
+ const maxDate = dayjs().subtract(1, 'day').endOf('day')
|
|
|
+ return current < minDate || current > maxDate
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ {formDefId ? (
|
|
|
+ <MyTable
|
|
|
+ classKey='A2look'
|
|
|
+ yHeight={355}
|
|
|
+ list={list}
|
|
|
+ columnsTemp={A2sonTableC}
|
|
|
+ lastBtn={tableLastBtn}
|
|
|
+ pagingInfo={false}
|
|
|
+ />
|
|
|
+ ) : (
|
|
|
+ <div hidden={!loding} className='Z0null'>
|
|
|
+ 请先在 系统管理-资源库管理 添加数据
|
|
|
+ </div>
|
|
|
+ )}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ )
|
|
|
+}
|
|
|
+
|
|
|
+const MemoA2look = React.memo(A2look)
|
|
|
+
|
|
|
+export default MemoA2look
|