|
|
@@ -1,15 +1,36 @@
|
|
|
-import React, { useEffect, useMemo, useState } from 'react'
|
|
|
+import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'
|
|
|
import styles from './index.module.scss'
|
|
|
import { Button, Select } from 'antd'
|
|
|
import dayjs from 'dayjs'
|
|
|
import { initEchBingFu, initEchZhuFu } from './data'
|
|
|
-import { useSelector } from 'react-redux'
|
|
|
-import { RootState } from '@/store'
|
|
|
+
|
|
|
+import {
|
|
|
+ A1_APIgetAllNum,
|
|
|
+ A1_APIgetDefCount,
|
|
|
+ A1_APIgetDict,
|
|
|
+ A1_APIgetYearNum
|
|
|
+} from '@/store/action/Aanalyse/A1resStat'
|
|
|
+import { antdSelectType } from '@/utils/dataChange'
|
|
|
+import { getKuListByOpenFu } from '@/pages/Zother/data'
|
|
|
+import { ziyuanAcGet } from '@/utils/storage'
|
|
|
function A1resStat() {
|
|
|
+ // 1--------------------------------获取资源总数
|
|
|
+ const [allNum, setAllNum] = useState<any>({})
|
|
|
+ const APIgetAllNumFu = useCallback(async () => {
|
|
|
+ const res = await A1_APIgetAllNum()
|
|
|
+ if (res.code === 0) {
|
|
|
+ setAllNum(res.data)
|
|
|
+ }
|
|
|
+ }, [])
|
|
|
+
|
|
|
+ useEffect(() => {
|
|
|
+ APIgetAllNumFu()
|
|
|
+ }, [APIgetAllNumFu])
|
|
|
+
|
|
|
+ // 2--------------------------------年度
|
|
|
// 获取现在的年份 到 2026的数组
|
|
|
const timeArr = useMemo(() => {
|
|
|
- // 待完善 去掉+1
|
|
|
- const nowTime = dayjs().year() + 1
|
|
|
+ const nowTime = dayjs().year()
|
|
|
const num = nowTime - 2026
|
|
|
const arr: any[] = []
|
|
|
for (let index = 0; index <= num; index++) {
|
|
|
@@ -19,30 +40,110 @@ function A1resStat() {
|
|
|
}, [])
|
|
|
|
|
|
const [time, setTime] = useState<number>(2026)
|
|
|
+ const [yearNum, setYearNum] = useState(0)
|
|
|
+
|
|
|
+ const getYearFu = useCallback(async () => {
|
|
|
+ const res = await A1_APIgetYearNum(time)
|
|
|
+ if (res.code === 0) {
|
|
|
+ setYearNum(res.data.total || 0)
|
|
|
+ }
|
|
|
+ }, [time])
|
|
|
|
|
|
- // 柱状图和饼图
|
|
|
useEffect(() => {
|
|
|
- const data: any[] = []
|
|
|
- initEchZhuFu(data, document.querySelector('#echZhu1'), 'zhongTu')
|
|
|
- initEchZhuFu(data, document.querySelector('#echZhu2'), 'siBu')
|
|
|
+ getYearFu()
|
|
|
+ }, [getYearFu])
|
|
|
+
|
|
|
+ // ------------------表单资源选择模块
|
|
|
+
|
|
|
+ const [kuList, setKuList] = useState<antdSelectType[]>([])
|
|
|
+ const [loding, setLoding] = useState(false)
|
|
|
|
|
|
- initEchBingFu(data, document.querySelector('#echBing1'), 'library')
|
|
|
+ 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
|
|
|
+ setKuId1(resFid)
|
|
|
+ setKuId2(resFid)
|
|
|
+ }
|
|
|
+ })
|
|
|
}, [])
|
|
|
|
|
|
- // 关联字典数组
|
|
|
- // const dictArrTemp = useSelector((state: RootState) => state.Z2dict.dictAll)
|
|
|
- // 关联标签
|
|
|
- const biaoQianTemp = useSelector((state: RootState) => state.B3resTag.dictAll)
|
|
|
+ // 2--------------------------------字典-柱状图
|
|
|
+ const [kuId1, setKuId1] = useState('')
|
|
|
+ const [zhuData, setZhuData] = useState<{ list: any[]; loding: boolean }>({
|
|
|
+ list: [],
|
|
|
+ loding: false
|
|
|
+ })
|
|
|
|
|
|
- const [tagAc, setTagAc] = useState('')
|
|
|
+ useEffect(() => {
|
|
|
+ if (zhuData.list && zhuData.list.length) {
|
|
|
+ zhuData.list.forEach((v, i) => {
|
|
|
+ initEchZhuFu(v.children, document.querySelector(`#echZhu${i + 1}`), v.name)
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }, [zhuData])
|
|
|
+
|
|
|
+ const getZhuDataFu = useCallback(async () => {
|
|
|
+ if (kuId1) {
|
|
|
+ const res = await A1_APIgetDict(kuId1)
|
|
|
+ if (res.code === 0) {
|
|
|
+ setZhuData({ list: res.data || [], loding: true })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, [kuId1])
|
|
|
|
|
|
useEffect(() => {
|
|
|
- if (biaoQianTemp && biaoQianTemp.length) setTagAc(biaoQianTemp[0].id)
|
|
|
- }, [biaoQianTemp])
|
|
|
+ getZhuDataFu()
|
|
|
+ }, [getZhuDataFu])
|
|
|
+
|
|
|
+ // 3--------------------------------资源库资源数统计-饼图
|
|
|
+ const defCount = useRef<any[]>([])
|
|
|
+
|
|
|
+ const getDefCount = useCallback(async () => {
|
|
|
+ const res = await A1_APIgetDefCount()
|
|
|
+ if (res.code === 0) {
|
|
|
+ const data = res.data || []
|
|
|
+ initEchBingFu(data, document.querySelector('#echBing1'))
|
|
|
+ defCount.current = data
|
|
|
+ }
|
|
|
+ }, [])
|
|
|
+
|
|
|
+ useEffect(() => {
|
|
|
+ getDefCount()
|
|
|
+ }, [getDefCount])
|
|
|
+
|
|
|
+ // 4--------------------------------标签---饼图
|
|
|
+ const [kuId2, setKuId2] = useState('')
|
|
|
+ const [bingData, setBingData] = useState<{ list: any[]; loding: boolean }>({
|
|
|
+ list: [],
|
|
|
+ loding: false
|
|
|
+ })
|
|
|
+
|
|
|
+ useEffect(() => {
|
|
|
+ if (bingData.list && bingData.list.length) {
|
|
|
+ bingData.list.forEach((v, i) => {
|
|
|
+ initEchBingFu(v.children, document.querySelector(`#echTag${i + 1}`))
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }, [bingData])
|
|
|
+
|
|
|
+ const getBingDataFu = useCallback(async () => {
|
|
|
+ if (kuId2) {
|
|
|
+ const res = await A1_APIgetDict(kuId2)
|
|
|
+ if (res.code === 0) {
|
|
|
+ setBingData({ list: res.data || [], loding: true })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, [kuId2])
|
|
|
|
|
|
useEffect(() => {
|
|
|
- initEchBingFu([], document.querySelector('#echBing2'), 'tag')
|
|
|
- }, [tagAc])
|
|
|
+ getBingDataFu()
|
|
|
+ }, [getBingDataFu])
|
|
|
|
|
|
return (
|
|
|
<div className={styles.A1resStat}>
|
|
|
@@ -52,21 +153,21 @@ function A1resStat() {
|
|
|
<div className='A1tll1'>
|
|
|
<div className='A1box A1row1'>
|
|
|
<div className='A1tit'>总资源数</div>
|
|
|
- <p>3741</p>
|
|
|
+ <p>{allNum.total || 0}</p>
|
|
|
</div>
|
|
|
|
|
|
<div className='A1box A1row1'>
|
|
|
<div className='A1tit'>已发布资源数</div>
|
|
|
- <p>3741</p>
|
|
|
+ <p>{allNum.pcsPublish || 0}</p>
|
|
|
</div>
|
|
|
|
|
|
<div className='A1box A1row1 A1row2'>
|
|
|
<div className='A1tit'>各级别资源统计</div>
|
|
|
<div className='A1titSon'>
|
|
|
- <span>公开级</span>
|
|
|
- <p>3741</p>
|
|
|
- <span>内部级</span>
|
|
|
- <p>6666</p>
|
|
|
+ <span>公开级</span>
|
|
|
+ <p>{allNum.pcsLevelPermOpen || 0}</p> 
|
|
|
+ <span>内部级</span>
|
|
|
+ <p>{allNum.pcsLevelPermIn || 0}</p>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
@@ -78,21 +179,52 @@ function A1resStat() {
|
|
|
</div>
|
|
|
</div>
|
|
|
<div className='A1row3Son'>
|
|
|
- <p>123</p>
|
|
|
+ <p>{yearNum}</p>
|
|
|
<div className='A1tit'>(件/套)</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<div className='A1tll2 A1box'>
|
|
|
- <div className='A1tu'>
|
|
|
- <div className='A1tit'>中图分类统计</div>
|
|
|
- <div className='echZhu' id='echZhu1'></div>
|
|
|
- </div>
|
|
|
- <div className='A1tu'>
|
|
|
- <div className='A1tit'>四部分类统计</div>
|
|
|
- <div className='echZhu' id='echZhu2'></div>
|
|
|
+ <div className='A1tit'>
|
|
|
+ 字典统计 
|
|
|
+ {kuId1 ? (
|
|
|
+ <div className='Z0ku'>
|
|
|
+ 资源库:
|
|
|
+ <Select
|
|
|
+ style={{ maxWidth: 200, minWidth: 120 }}
|
|
|
+ value={kuId1}
|
|
|
+ onChange={e => {
|
|
|
+ setKuId1(e)
|
|
|
+ }}
|
|
|
+ options={kuList}
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ ) : null}
|
|
|
</div>
|
|
|
+
|
|
|
+ {kuId1 ? (
|
|
|
+ <>
|
|
|
+ {zhuData.list.length ? (
|
|
|
+ <div className='A1tuBox'>
|
|
|
+ {zhuData.list.map((v, i) => (
|
|
|
+ <div className='A1tu' key={v.id}>
|
|
|
+ <div className='A1tit'>{v.name}</div>
|
|
|
+ <div className='echZhu' id={`echZhu${i + 1}`}></div>
|
|
|
+ </div>
|
|
|
+ ))}
|
|
|
+ </div>
|
|
|
+ ) : (
|
|
|
+ <div hidden={!zhuData.loding} className='Z0null'>
|
|
|
+ 暂无数据
|
|
|
+ </div>
|
|
|
+ )}
|
|
|
+ </>
|
|
|
+ ) : (
|
|
|
+ <div hidden={!loding} className='Z0null'>
|
|
|
+ 请先在 系统管理-资源库管理 添加数据
|
|
|
+ </div>
|
|
|
+ )}
|
|
|
</div>
|
|
|
</div>
|
|
|
<div className='A1trr'>
|
|
|
@@ -104,17 +236,46 @@ function A1resStat() {
|
|
|
<div id='echBing1' className='echBing'></div>
|
|
|
</div>
|
|
|
|
|
|
- <div className='A1trrMain A1box'>
|
|
|
+ <div className='A1trrMain A1box A1trrMain2'>
|
|
|
<div className='A1tit'>
|
|
|
标签统计 
|
|
|
- <Select
|
|
|
- style={{ width: 100 }}
|
|
|
- value={tagAc}
|
|
|
- onChange={e => setTagAc(e)}
|
|
|
- options={biaoQianTemp.map(v => ({ value: v.id, label: v.name }))}
|
|
|
- />
|
|
|
+ {kuId2 ? (
|
|
|
+ <div className='Z0ku'>
|
|
|
+ 资源库:
|
|
|
+ <Select
|
|
|
+ style={{ maxWidth: 200, minWidth: 120 }}
|
|
|
+ value={kuId2}
|
|
|
+ onChange={e => {
|
|
|
+ setKuId2(e)
|
|
|
+ }}
|
|
|
+ options={kuList}
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ ) : null}
|
|
|
</div>
|
|
|
- <div id='echBing2' className='echBing'></div>
|
|
|
+
|
|
|
+ {kuId2 ? (
|
|
|
+ <>
|
|
|
+ {bingData.list.length ? (
|
|
|
+ <div className='A1tuBox'>
|
|
|
+ {bingData.list.map((v, i) => (
|
|
|
+ <div className='A1tu' key={v.id}>
|
|
|
+ <div className='A1tit'>{v.name}</div>
|
|
|
+ <div className='echBing' id={`echTag${i + 1}`}></div>
|
|
|
+ </div>
|
|
|
+ ))}
|
|
|
+ </div>
|
|
|
+ ) : (
|
|
|
+ <div hidden={!bingData.loding} className='Z0null'>
|
|
|
+ 暂无数据
|
|
|
+ </div>
|
|
|
+ )}
|
|
|
+ </>
|
|
|
+ ) : (
|
|
|
+ <div hidden={!loding} className='Z0null'>
|
|
|
+ 请先在 系统管理-资源库管理 添加数据
|
|
|
+ </div>
|
|
|
+ )}
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|