import React, { useEffect, useState } from "react"
import { Tabs, Card, Badge } from "antd";
import { connect } from 'umi'

import { dicFindUtils, DictBizType } from '@/utils/utils'
import { dispatchHandle } from "@/utils/publicHandle";
import AllTasks from './AllTasks'
import MyApply from './MyApply'
import WaitApprovalByMe from './WaitApprovalByMe'

import style from "./index.less"

const { TabPane } = Tabs;

const MainTask = (props) => {
  const {
    dispatch,
    dict: {
      dicTotalsList
    },
    user: {
      currentUser
    },
    maintaining: {
      waitApprovalByMeList,
      waitApprovalByMeListCount
    },
    location: {
      query
    }
  } = props;
  const [activeKey, setActiveKey] = useState('allTasks')
  const waitApprovalByMeListRequest = (payload = {}) => {
    dispatchHandle(// 待我审批列表
      dispatch,
      'maintaining/operation_service_m_curing_task_taskApprovaPageList_post',
      payload
    )
  }
  useEffect(() => {
    dispatchHandle(// 登陆者
      dispatch,
      'user/account_service_user_myInfo_get',
      {}
    )
    dispatchHandle(
      dispatch,
      'maintaining/operation_service_m_curing_task_taskApprovaPageList_post_wait',
      { personalAuditState: 4 }
    )
    waitApprovalByMeListRequest()
    if (query?.tab) {
      setActiveKey('approvalByMe')
    }
  }, [])
  const tabChange = (activeKey) => {
    setActiveKey(activeKey)
  }
  const maintainTypeList = dicFindUtils(dicTotalsList, DictBizType.maintainType); // 养护类型
  return <Card>
    <Tabs activeKey={activeKey} onChange={tabChange}>
      <TabPane tab="全部任务" key="allTasks">
        <AllTasks maintainTypeList={maintainTypeList} query={query} />
      </TabPane>
      <TabPane tab="我的申请" key="applyByMe">
        <MyApply maintainTypeList={maintainTypeList} pathKey="applyByMe" />
      </TabPane>
      <TabPane
        tab={
          <Badge
            className={style.count}
            count={(waitApprovalByMeListCount && waitApprovalByMeListCount.length && waitApprovalByMeListCount.length > 0 && waitApprovalByMeListCount.length) || 0}
            offset={[23, 8]}
            showZero={true}
          >
            待我审批
        </Badge>
        }
        key="approvalByMe">
        <WaitApprovalByMe
          maintainTypeList={maintainTypeList}
          waitRequestAction={waitApprovalByMeListRequest}
          pathKey="approvalByMe"
        />
      </TabPane>
    </Tabs>
  </Card>
}

export default connect(({ user, dict, maintaining }) => ({
  user,
  dict,
  maintaining
}))(MainTask)