import React, { useMemo } from "react";
import Taro from "@tarojs/taro";
import { View, Text, Image } from "@tarojs/components";
import Page from "@/layouts/index";
import { useModel } from "@/store";
import MenuIcon from "@/components/MenuIcon";
import {
  ROLE_CITIZEN,
  ROLE_INSPECTOR,
  ROLE_MANAGER,
  ROLE_ORG_MANAGER,
  ROLE_ORG_USER,
  ROLE_QUERY_PERSON,
} from "@/utils/user";
import {
  PROCESS_APPLY_DELAY,
  PROCESS_APPLY_END,
  PROCESS_APPLY_REJECT,
  PROCESS_APPLY_VERIFY,
  PROCESS_ASSIGNED,
  PROCESS_END,
  PROCESS_START,
  APPLY_REJECT,
} from "@/utils/biz";
import { getApplyNum } from "@/services/taissueapply";
import Head from "./components/Head";
import Banner from "./components/Banner";
import StatCard from "./components/StatCard";
import "./index.less";

const getRejctApply = () => getApplyNum({ applyType: PROCESS_APPLY_REJECT });
const getDelayApply = () => getApplyNum({ applyType: PROCESS_APPLY_DELAY });
const getVerifyApply = () => getApplyNum({ applyType: PROCESS_APPLY_VERIFY });
const getEdnApply = (duty) =>
  getApplyNum({ applyType: PROCESS_APPLY_END, duty });

export default (props) => {
  const userModel = useModel("user");
  const { user, duty, signOut, changePwd } = userModel || {};
  const menus = useMemo(() => {
    return {
      // 督查员
      [ROLE_INSPECTOR]: [
        {
          icon: "icon9",
          text: "我的上报",
          link: "/pages/issue/list/index?mine=true",
        },
        { icon: "icon11", text: "消息通知", link: "/pages/message/list/index" },
        { icon: "icon10", text: "模拟测评", link: "/pages/check/list/index" },
        {
          icon: "icon4",
          text: "消单申请",
          request: () => getEdnApply(duty),
          link: `/pages/apply/list/index?title=消单申请&applyType=${PROCESS_APPLY_END}`,
        },
      ],

      // 平台管理员
      [ROLE_MANAGER]: [
        {
          icon: "icon1",
          text: "待 交 办",
          link: `/pages/issue/list2/index?title=待交办&bizStatus=${PROCESS_START}`,
        },
        {
          icon: "icon2",
          text: "已 交 办",
          link: `/pages/issue/list2/index?title=已交办&bizStatus=${PROCESS_ASSIGNED}`,
        },
        {
          icon: "icon3",
          text: "已 办 结",
          link: `/pages/issue/list2/index?title=已办结&bizStatus=${PROCESS_END}`,
        },
        {
          icon: "icon4",
          text: "消单申请",
          request: getEdnApply,
          link: `/pages/apply/list/index?title=消单申请&applyType=${PROCESS_APPLY_END}`,
        },
        {
          icon: "icon5",
          text: "逾期警告",
          link: `/pages/issue/list2/index?title=逾期警告&bizStatus=expired`,
        },
        {
          icon: "icon6",
          text: "延期申请",
          request: getDelayApply,
          link: `/pages/apply/list/index?title=延期申请&applyType=${PROCESS_APPLY_DELAY}`,
        },
        {
          icon: "icon12",
          text: "驳回申请",
          request: getRejctApply,
          link: `/pages/apply/list/index?title=驳回申请&applyType=${PROCESS_APPLY_REJECT}`,
        },
        {
          icon: "icon7",
          text: "统计查询",
          link: "/subpkg1/pages/statistics/index",
        },
        {
          icon: "icon9",
          text: "我的上报",
          link: "/pages/issue/list2/index?title=我的上报&mine=true",
        },
        { icon: "icon11", text: "消息通知", link: "/pages/message/list/index" },
      ],

      // 责任单位用户
      [ROLE_ORG_USER]: [
        {
          icon: "icon2",
          text: "处 理 中",
          link: `/pages/org/issue/list/index?title=处理中&bizStatus=${PROCESS_ASSIGNED}`,
        },
        {
          icon: "icon3",
          text: "已 办 结",
          link: `/pages/org/issue/list/index?title=已办结&bizStatus=${PROCESS_END}`,
        },
        {
          icon: "icon5",
          text: "已 逾 期",
          link: "/pages/org/issue/list/index?title=已逾期&bizStatus=expired",
        },
        { icon: "icon11", text: "消息通知", link: "/pages/message/list/index" },
        // {
        //   icon: "icon10",
        //   text: "我的上报",
        //   link: `/pages/feedback/issuelist/index?title=我的上报&bizStatus=`,
        // },
        {
          icon: "icon12",
          text: "交办历史",
          link: "/pages/org/issue/list2/index?mine=true",
        },
      ],

      // 责任交办单位管理员
      [ROLE_ORG_MANAGER]: [
        {
          icon: "icon2",
          text: "处 理 中",
          link: `/pages/org/issue/list/index?title=处理中&bizStatus=${PROCESS_ASSIGNED}`,
        },
        {
          icon: "icon3",
          text: "已 办 结",
          link: `/pages/org/issue/list/index?title=已办结&bizStatus=${PROCESS_END}`,
        },
        {
          icon: "icon5",
          text: "已 逾 期",
          link: "/pages/org/issue/list/index?title=已逾期&bizStatus=expired",
        },
        {
          icon: "icon9",
          text: "审核申请",
          request: getVerifyApply,
          link: `/pages/apply/list/index?title=审核申请&applyType=${PROCESS_APPLY_VERIFY}`,
        },
        { icon: "icon11", text: "消息通知", link: "/pages/message/list/index" },
        { icon: "person", text: "人员管理", link: "/pages/user/list/index" },
        {
          icon: "icon12",
          text: "交办历史",
          link: "/pages/org/issue/list2/index?mine=true",
        },
      ],

      // 查询人员
      [ROLE_QUERY_PERSON]: [
        {
          icon: "icon1",
          text: "未 处 理",
          link: `/pages/issue/list2/index?title=未处理&bizStatus=${PROCESS_START}`,
        },
        {
          icon: "icon2",
          text: "处 理 中",
          link: `/pages/issue/list2/index?title=处理中&bizStatus=${PROCESS_ASSIGNED}`,
        },
        {
          icon: "icon3",
          text: "已 办 结",
          link: `/pages/issue/list2/index?title=已办结&bizStatus=${PROCESS_END}`,
        },
        {
          icon: "icon5",
          text: "逾期警告",
          link: `/pages/issue/list2/index?title=逾期警告&bizStatus=expired`,
        },
        {
          icon: "icon7",
          text: "统计查询",
          link: "/subpkg1/pages/statistics/index",
        },
      ],

      // 市民
      [ROLE_CITIZEN]: [
        {
          icon: "icon1",
          text: "未处理",
          link: `/pages/feedback/issuelist/index?title=未处理&bizStatus=${PROCESS_START}`,
        },
        {
          icon: "icon2",
          text: "已处理",
          link: `/pages/feedback/issuelist/index?title=已处理&bizStatus=${PROCESS_ASSIGNED}`,
        },
        {
          icon: "icon12",
          text: "已打回",
          link: `/pages/feedback/issuelist/index?title=已打回&bizStatus=${APPLY_REJECT}`,
        },
      ],
    };
  }, [duty]);

  const menuArr = React.useMemo(() => {
    if (!duty) return [];

    return menus[duty] || [];
  }, [duty]);
  console.log(menuArr);
  return (
    <Page tabBar="home" className="home-page">
      <Head userModel={userModel} onChangePwd={changePwd} onExit={signOut} />
      <Banner duty={duty} />
      <StatCard duty={duty} />

      <View className="menu-icons">
        {menuArr.map((x) => (
          <MenuIcon user={user} key={x.text} {...x} />
        ))}
      </View>
    </Page>
  );
};