Blame view

src/pages/ehr/ProgramOfStudy/Settings/store.ts 4.57 KB
5a8c1220   王强   添加 学习项目设置,完成大部分交互...
1
2
3
4
  /*
   * @Author: wangqiang@feewee.cn
   * @Date: 2022-11-19 10:58:19
   * @LastEditors: wangqiang@feewee.cn
a59d9c74   王强   优化 学习项目设置,选择题库对接适...
5
   * @LastEditTime: 2023-02-10 14:50:19
5a8c1220   王强   添加 学习项目设置,完成大部分交互...
6
   */
2a3006c5   王强   修改 学习项目设置,提交表单交互逻辑;
7
8
  import useInitial from "@/hooks/useInitail";
  import usePagination from "@/hooks/usePagination";
11cbe8bc   王强   修改 学习项目配置,对接所有接口,...
9
10
  import {
    AbilitDraftType,
a59d9c74   王强   优化 学习项目设置,选择题库对接适...
11
    getQuestionBankSelectListApi,
11cbe8bc   王强   修改 学习项目配置,对接所有接口,...
12
13
14
15
16
    getUserAbilityTypeListApi,
  } from "@/pages/ehr/ProgramOfStudy/api";
  import { useEffect, useMemo, useRef, useState } from "react";
  import { getStudyListApi, checkStudyCanEditApi } from "./api";
  import { getAbilityDraftListApi } from "../api";
11cbe8bc   王强   修改 学习项目配置,对接所有接口,...
17
  import { Form, message } from "antd";
5a8c1220   王强   添加 学习项目设置,完成大部分交互...
18
  
10af77fc   王强   优化 学习项目设置,部分交互逻辑;
19
20
21
22
23
24
25
26
27
28
29
30
31
32
  // 使用角色类型 1全部角色 2部分角色
  export enum RoleRangeType {
    "全部角色" = 1,
    "部分角色",
  }
  
  // 适配类型 1品牌 2车系 3门店 4通用
  export enum AdapterType {
    "品牌" = 1,
    "车系",
    "部分门店",
    "全部门店",
  }
  
11cbe8bc   王强   修改 学习项目配置,对接所有接口,...
33
  //   考核方式类型 1考试 2实操 3考试+实操
10af77fc   王强   优化 学习项目设置,部分交互逻辑;
34
  export enum AbilityType {
11cbe8bc   王强   修改 学习项目配置,对接所有接口,...
35
    "考试" = 1,
10af77fc   王强   优化 学习项目设置,部分交互逻辑;
36
    "实操",
10af77fc   王强   优化 学习项目设置,部分交互逻辑;
37
38
39
    "考试+实操",
  }
  
5a8c1220   王强   添加 学习项目设置,完成大部分交互...
40
41
  export default function useStore() {
    const [listType, setListType] = useState<"列表" | "草稿">("列表");
2a3006c5   王强   修改 学习项目设置,提交表单交互逻辑;
42
43
44
45
46
    const abilityTypeInitial = useInitial(
      getUserAbilityTypeListApi,
      [],
      undefined
    );
45ae10c3   王强   修改 学习项目设置,默认查询生效中...
47
    const listPagination = usePagination(getStudyListApi, { status: 1 });
11cbe8bc   王强   修改 学习项目配置,对接所有接口,...
48
49
50
    const draftPagination = usePagination(getAbilityDraftListApi, {
      type: AbilitDraftType.学习项目,
    });
5a8c1220   王强   添加 学习项目设置,完成大部分交互...
51
52
53
54
55
56
57
    const pagination = useMemo(() => {
      if (listType === "列表") {
        return listPagination;
      } else {
        return draftPagination;
      }
    }, [listType, listPagination, draftPagination]);
2a3006c5   王强   修改 学习项目设置,提交表单交互逻辑;
58
    const questionBankInitial = useInitial(getQuestionBankSelectListApi, [], {});
5a8c1220   王强   添加 学习项目设置,完成大部分交互...
59
60
61
    const [current, setCureent] = useState<EHrProgramOfStudySettings.ListVO>();
    const [visible, setVisible] = useState(false);
    const [isView, setIsView] = useState(false);
2a3006c5   王强   修改 学习项目设置,提交表单交互逻辑;
62
    const [form] = Form.useForm();
1550b11e   王强   完善 学习项目设置,所有主要逻辑与...
63
64
65
66
    const [modalInfo, setModalInfo] = useState<{
      visible: boolean;
      title?: "查看适用角色" | "查看适用范围";
      item?: EHrProgramOfStudySettings.ListVO;
11cbe8bc   王强   修改 学习项目配置,对接所有接口,...
67
68
      isList?: boolean; // 是否列表进入查看
      isInit?: boolean; // 如果查接口,是否返回结果了
1550b11e   王强   完善 学习项目设置,所有主要逻辑与...
69
70
71
    }>({ visible: false });
    const [approvalProgressModalInfo, setApprovalProgressModalInfo] =
      useState<PublicNotice.ApprovalProgressModalInfo>({ visible: false });
11cbe8bc   王强   修改 学习项目配置,对接所有接口,...
72
    const [checkLoading, setCheckLoading] = useState(false);
5a8c1220   王强   添加 学习项目设置,完成大部分交互...
73
74
  
    useEffect(() => {
2a3006c5   王强   修改 学习项目设置,提交表单交互逻辑;
75
76
      if (listType) {
        if (listType === "列表") {
11cbe8bc   王强   修改 学习项目配置,对接所有接口,...
77
          listPagination.setLoading(true);
2a3006c5   王强   修改 学习项目设置,提交表单交互逻辑;
78
        } else {
11cbe8bc   王强   修改 学习项目配置,对接所有接口,...
79
          draftPagination.setLoading(true);
2a3006c5   王强   修改 学习项目设置,提交表单交互逻辑;
80
        }
5a8c1220   王强   添加 学习项目设置,完成大部分交互...
81
82
83
      }
    }, [listType]);
  
2a3006c5   王强   修改 学习项目设置,提交表单交互逻辑;
84
85
    useEffect(() => {
      if (questionBankInitial.data.length && visible && !isView) {
11cbe8bc   王强   修改 学习项目配置,对接所有接口,...
86
        const examList = (form.getFieldValue("examList") ||
2a3006c5   王强   修改 学习项目设置,提交表单交互逻辑;
87
88
89
          []) as EHrProgramOfStudySettings.QuestionBank[];
        const listIds = questionBankInitial.data.map((item) => item.id);
        form.setFieldValue(
11cbe8bc   王强   修改 学习项目配置,对接所有接口,...
90
91
          "examList",
          examList.filter((exam) => listIds.includes(exam.factoryId))
2a3006c5   王强   修改 学习项目设置,提交表单交互逻辑;
92
93
94
95
        );
      }
    }, [questionBankInitial.data, visible, isView]);
  
2a3006c5   王强   修改 学习项目设置,提交表单交互逻辑;
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
    // 草稿状态 1未发布 2发布待审批 3审批拒绝 4审批通过 5撤销审批 列表状态 1生效中 2禁用 3过期
    enum Status {
      "生效中" = 1,
      "禁用",
      "过期",
    }
  
    enum StatusColor {
      "#4189FD" = 1,
      "#FF921C",
      "#F4333C",
    }
  
    enum DraftStatus {
      "未发布" = 1,
      "审批中",
      "审批拒绝",
      "审批通过",
      "撤销审批",
    }
  
    enum DraftStatusColor {
11cbe8bc   王强   修改 学习项目配置,对接所有接口,...
118
      "#999" = 1,
2a3006c5   王强   修改 学习项目设置,提交表单交互逻辑;
119
120
121
122
123
124
      "#4189FD",
      "#F4333C",
      "#20C688",
      "#FF921C",
    }
  
11cbe8bc   王强   修改 学习项目配置,对接所有接口,...
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
    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);
      }
    };
  
5a8c1220   王强   添加 学习项目设置,完成大部分交互...
145
146
147
148
    return {
      listType,
      setListType,
      abilityTypeInitial,
11cbe8bc   王强   修改 学习项目配置,对接所有接口,...
149
150
      listPagination,
      draftPagination,
5a8c1220   王强   添加 学习项目设置,完成大部分交互...
151
      pagination,
2a3006c5   王强   修改 学习项目设置,提交表单交互逻辑;
152
      questionBankInitial,
5a8c1220   王强   添加 学习项目设置,完成大部分交互...
153
154
155
156
157
158
      current,
      setCureent,
      visible,
      setVisible,
      isView,
      setIsView,
2a3006c5   王强   修改 学习项目设置,提交表单交互逻辑;
159
      form,
1550b11e   王强   完善 学习项目设置,所有主要逻辑与...
160
161
162
163
164
      approvalProgressModalInfo,
      setApprovalProgressModalInfo,
      RoleRangeType,
      AdapterType,
      AbilityType,
2a3006c5   王强   修改 学习项目设置,提交表单交互逻辑;
165
166
167
168
      Status,
      StatusColor,
      DraftStatus,
      DraftStatusColor,
1550b11e   王强   完善 学习项目设置,所有主要逻辑与...
169
170
      modalInfo,
      setModalInfo,
11cbe8bc   王强   修改 学习项目配置,对接所有接口,...
171
172
173
      checkLoading,
      setCheckLoading,
      checkStudyCanEdit,
5a8c1220   王强   添加 学习项目设置,完成大部分交互...
174
175
    };
  }