/* * @Author: wangqiang@feewee.cn * @Date: 2022-11-19 10:58:19 * @LastEditors: wangqiang@feewee.cn * @LastEditTime: 2023-02-10 14:50:19 */ import useInitial from "@/hooks/useInitail"; import usePagination from "@/hooks/usePagination"; import { AbilitDraftType, getQuestionBankSelectListApi, getUserAbilityTypeListApi, } from "@/pages/ehr/ProgramOfStudy/api"; import { useEffect, useMemo, useRef, useState } from "react"; import { getStudyListApi, checkStudyCanEditApi } from "./api"; import { getAbilityDraftListApi } from "../api"; import { Form, message } from "antd"; // 使用角色类型 1全部角色 2部分角色 export enum RoleRangeType { "全部角色" = 1, "部分角色", } // 适配类型 1品牌 2车系 3门店 4通用 export enum AdapterType { "品牌" = 1, "车系", "部分门店", "全部门店", } // 考核方式类型 1考试 2实操 3考试+实操 export enum AbilityType { "考试" = 1, "实操", "考试+实操", } export default function useStore() { const [listType, setListType] = useState<"列表" | "草稿">("列表"); const abilityTypeInitial = useInitial( getUserAbilityTypeListApi, [], undefined ); const listPagination = usePagination(getStudyListApi, { status: 1 }); const draftPagination = usePagination(getAbilityDraftListApi, { type: AbilitDraftType.学习项目, }); const pagination = useMemo(() => { if (listType === "列表") { return listPagination; } else { return draftPagination; } }, [listType, listPagination, draftPagination]); const questionBankInitial = useInitial(getQuestionBankSelectListApi, [], {}); const [current, setCureent] = useState(); const [visible, setVisible] = useState(false); const [isView, setIsView] = useState(false); const [form] = Form.useForm(); const [modalInfo, setModalInfo] = useState<{ visible: boolean; title?: "查看适用角色" | "查看适用范围"; item?: EHrProgramOfStudySettings.ListVO; isList?: boolean; // 是否列表进入查看 isInit?: boolean; // 如果查接口,是否返回结果了 }>({ visible: false }); const [approvalProgressModalInfo, setApprovalProgressModalInfo] = useState({ visible: false }); const [checkLoading, setCheckLoading] = useState(false); useEffect(() => { if (listType) { if (listType === "列表") { listPagination.setLoading(true); } else { draftPagination.setLoading(true); } } }, [listType]); useEffect(() => { if (questionBankInitial.data.length && visible && !isView) { const examList = (form.getFieldValue("examList") || []) as EHrProgramOfStudySettings.QuestionBank[]; const listIds = questionBankInitial.data.map((item) => item.id); form.setFieldValue( "examList", examList.filter((exam) => listIds.includes(exam.factoryId)) ); } }, [questionBankInitial.data, visible, isView]); // 草稿状态 1未发布 2发布待审批 3审批拒绝 4审批通过 5撤销审批 列表状态 1生效中 2禁用 3过期 enum Status { "生效中" = 1, "禁用", "过期", } enum StatusColor { "#4189FD" = 1, "#FF921C", "#F4333C", } enum DraftStatus { "未发布" = 1, "审批中", "审批拒绝", "审批通过", "撤销审批", } enum DraftStatusColor { "#999" = 1, "#4189FD", "#F4333C", "#20C688", "#FF921C", } const checkStudyCanEdit = async (item: EHrProgramOfStudySettings.ListVO) => { const hide = message.loading("检查中,请稍后...", 0); try { setCheckLoading(true); const { data } = await checkStudyCanEditApi(item.id || -1); if (data) { setCureent(item); setVisible(true); } else { message.warning("当前学习项目已有存在的草稿,请到草稿列表继续编辑!"); setListType("草稿"); } } catch (error: any) { message.error(error.message); } finally { hide(); setCheckLoading(false); } }; return { listType, setListType, abilityTypeInitial, listPagination, draftPagination, pagination, questionBankInitial, current, setCureent, visible, setVisible, isView, setIsView, form, approvalProgressModalInfo, setApprovalProgressModalInfo, RoleRangeType, AdapterType, AbilityType, Status, StatusColor, DraftStatus, DraftStatusColor, modalInfo, setModalInfo, checkLoading, setCheckLoading, checkStudyCanEdit, }; }