| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 | import Header from '@/components/Header'import { tenderStore } from '@/store/mobx'import consts from '@/utils/consts'import dayjs from 'dayjs'import React, { useEffect, useState, useMemo } from 'react'import { useActivate } from 'react-activation'import { Link } from 'react-router-dom'import { apiGetSafeSurvey } from './api'import ColumnChart from './columnChart'import './index.scss'import PieChart from './pieChart'export interface SafeColumnCharType {  name: 'rectifyed' | 'submit'  month: string  count: number}export interface SafeLineChartType {  month: string  percentage: number}interface iRectifyData {  auditName: string  createTime: string  id: string  inspectionDetail: string  status: number}interface iSummaryState {  approvalTotal: number  rectifyTotal: number  rectifyedTotal: number  rectifylist: iRectifyData[]  columnarData: SafeColumnCharType[]  lineData: SafeLineChartType[]}const Summary: React.FC<{}> = () => {  const [ state, setState ] = useState<iSummaryState>({    approvalTotal: 0,    rectifyTotal: 0,    rectifyedTotal: 0,    rectifylist: [],    columnarData: [],    lineData: []  })  useEffect(() => {    initData()  }, [ tenderStore.bid ])  useActivate(() => {    initData()  })  useActivate(() => initData())  const initData = async () => {    const { data, code = -1 } = await apiGetSafeSurvey(tenderStore.bid)    if (code === consts.RET_CODE.SUCCESS) {      setState({ ...state, ...data })    }  }  const pieData = useMemo(() => {    const data = [      {        type: '审批中',        value: state.approvalTotal      },      {        type: '整改中',        value: state.rectifyTotal      },      {        type: '已整改',        value: state.rectifyedTotal      }    ]    return data  }, [ state.approvalTotal, state.rectifyTotal, state.rectifyedTotal ])  const columnCharData = useMemo(() => {    return { columnData: state.columnarData, lineData: state.lineData }  }, [ state.columnarData, state.lineData ])  const handleDate = (createTime: string) => {    return dayjs(new Date()).diff(dayjs(createTime), 'day') + '天'  }  return (    <div className="wrap-contaniner">      <Header title="巡检概况"></Header>      <div className="wrap-content m-3 pi-flex-column pi-justify-start">        <div className="pi-justify-start">          <div className="pi-flex-twice card pi-flex-column">            <header className="card-title">整改中 ({state.rectifyTotal}) </header>            <div>              {state.rectifylist.map(item => {                return (                  <div key={item.id} className="pi-justify-between pi-lh-18 pi-height-18">                    <Link to={{ pathname: '/console/safe/content/detail/info', state: { saveId: item.id } }}>{item.inspectionDetail}</Link>                    <div className="pi-align-center">                      <span className="pi-mg-right-5">{item.auditName}</span>                      <span className="pi-badge danger">{handleDate(item.createTime)}</span>                    </div>                  </div>                )              })}            </div>          </div>          <div className="pi-flex-treble pi-mg-left-30 card">            <PieChart data={pieData}></PieChart>          </div>        </div>        <div className="card echarts-column-chart mt-3">          <h5 className="pi-fz-25 pi-fw-5">整改趋势</h5>          <div className="pi-width-100P">            <ColumnChart data={columnCharData}></ColumnChart>          </div>        </div>      </div>    </div>  )}export default Summary
 |