Blame view

src/pages/performance/EvaSetting/components/EditModal.tsx 8.61 KB
f0653c98   曾柯   考评指标
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
  import React, { useState, useEffect } from "react";
  import { Form, Modal, message, Input, Select, Radio, DatePicker, InputNumber, Checkbox } from "antd";
  import { saveEvaIndicators } from "../api";
  import usePagination from "@/hooks/usePagination";
  import { systemListApi } from "@/pages/admin/Privilege/api";
  import { transformDTO, transformFormData, DataType, TargetType, DatePick } from "../entity";
  import moment from "moment";
  
  const FormItem = Form.Item;
  const { Option } = Select;
  
  interface Props {
    item: { visible: boolean; currentItem?: EvaSetteing.EvaListItems };
    onClose?: (refresh?: boolean) => any;
    setItem?: Function;
    roleList: CommonApi.RoleCodeVO[];
  }
  
  export default function EditModal({ onClose, setItem, item, roleList }: Props) {
    const [form] = Form.useForm();
    const { visible, currentItem = {} } = item;
    const [saveLoading, setSaveLoading] = useState<boolean>(false);
    // 存储系统列表
    const { list } = usePagination(systemListApi, { current: 1, pageSize: 500 });
    useEffect(() => {
      if (visible && currentItem) {
        const result = transformFormData(currentItem, roleList, list);
        form.setFieldsValue({ ...result });
      }
    }, [visible]);
    function handleSave(values: any) {
      const pa = transformDTO(values);
      if (currentItem.id) {
        pa.id = currentItem.id;
      }
      console.log("提交指标pa", pa);
      setSaveLoading(true);
      saveEvaIndicators(pa)
        .then((res: any) => {
          setSaveLoading(false);
          message.success(res.result);
          onClose?.(true);
        })
        .catch((e: any) => {
          setSaveLoading(false);
          message.error(e.message);
        });
    }
511545ce   曾柯   考评指标新增考评范围
49
50
51
52
    const options = [
      { label: "考评人", value: 1 },
      { label: "考评门店", value: 2 },
    ];
f0653c98   曾柯   考评指标
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
  
    return (
      <Modal
        width={960}
        title={`${currentItem.code ? "编辑" : "新增"}考评指标`}
        visible={visible}
        onOk={form.submit}
        onCancel={() => onClose?.(false)}
        maskClosable={false}
        getContainer={false}
        confirmLoading={saveLoading}
        afterClose={() => form.resetFields()}
      >
        <Form
          form={form}
          onFinish={handleSave}
          labelCol={{ span: 6 }}
          wrapperCol={{ span: 15 }}
511545ce   曾柯   考评指标新增考评范围
71
          initialValues={{ ruleValues: [] }}
f0653c98   曾柯   考评指标
72
73
74
75
        >
          <FormItem name="name" label="指标名称" rules={[{ required: true, message: "请输入指标名称" }]}>
            <Input placeholder="请输入指标名称" />
          </FormItem>
511545ce   曾柯   考评指标新增考评范围
76
77
78
79
80
81
82
          <Form.Item
            name="dataScopeTypes"
            label="指标考核范围"
            rules={[{ required: true, message: "请选择指标考核范围" }]}
          >
            <Checkbox.Group options={options} />
          </Form.Item>
f0653c98   曾柯   考评指标
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
          <Form.Item name="dataType" label="指标类型" rules={[{ required: true }]}>
            <Select placeholder="请选择指标类型">
              {DataType.map((item) => (
                <Option value={item.value} key={item.value}>
                  {item.label}
                </Option>
              ))}
            </Select>
          </Form.Item>
          <Form.Item name="targetType" label="目标值类型" rules={[{ required: true }]}>
            <Select placeholder="请选择目标值类型">
              {TargetType.map((item) => (
                <Option value={item.value} key={item.value}>
                  {item.label}
                </Option>
              ))}
            </Select>
          </Form.Item>
c0188e80   曾柯   考评bugfix0306
101
          {/* <Form.Item name="belongSystem" label="归属系统" rules={[{ required: true }]}>
f0653c98   曾柯   考评指标
102
103
104
105
106
107
108
            <Select placeholder="请选择归属系统" showSearch allowClear labelInValue optionFilterProp="children">
              {list.map((item) => (
                <Option value={item.id} key={item.id}>
                  {item.sysName}
                </Option>
              ))}
            </Select>
c0188e80   曾柯   考评bugfix0306
109
          </Form.Item> */}
f0653c98   曾柯   考评指标
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
          {/* 使用角色 */}
          <Form.Item name="role" label="导入操作人员" rules={[{ required: true }]}>
            <Select placeholder="请选择导入操作角色类型" showSearch allowClear labelInValue optionFilterProp="children">
              {roleList.map((item) => (
                <Option value={item.roleCode} key={item.roleCode}>
                  {item.roleName}
                </Option>
              ))}
            </Select>
          </Form.Item>
          <Form.Item name="ruleType" label="更新周期" rules={[{ required: true, message: "请选择更新周期" }]}>
            <Radio.Group>
              <Radio value={1}>按滚动天数</Radio>
              <Radio value={2}>按星期指定</Radio>
              <Radio value={3}>按月指定日期</Radio>
              <Radio value={4}>按滚动月</Radio>
            </Radio.Group>
          </Form.Item>
          <Form.Item noStyle shouldUpdate={(prevValues, currentValues) => prevValues.ruleType !== currentValues.ruleType}>
            {({ getFieldValue }) => {
              const _ruleType = getFieldValue("ruleType");
              if (_ruleType === 1) {
                return (
                  <>
                    <Form.Item name="rollValue1" label="滚动天数" rules={[{ required: true, message: "请输入滚动天数" }]}>
                      <InputNumber placeholder="请输入滚动天数" addonAfter="天" style={{ width: 567 }} />
                    </Form.Item>
                    <Form.Item name="startTime1" label="开始日期" rules={[{ required: true, message: "请选择开始日期" }]}>
                      <DatePicker style={{ width: 567 }} />
                    </Form.Item>
                  </>
                );
              } else if (_ruleType === 2) {
                return (
                  <Form.Item name="ruleValues2" label="勾选星期" rules={[{ required: true, message: "请选择星期几" }]}>
                    <Checkbox.Group>
                      <Checkbox value={1}>星期一</Checkbox>
                      <Checkbox value={2}>星期二</Checkbox>
                      <Checkbox value={3}>星期三</Checkbox>
                      <Checkbox value={4}>星期四</Checkbox>
                      <Checkbox value={5}>星期五</Checkbox>
                      <Checkbox value={6}>星期六</Checkbox>
                      <Checkbox value={7}>星期天</Checkbox>
                    </Checkbox.Group>
                  </Form.Item>
                );
              } else if (_ruleType === 3) {
                return (
511545ce   曾柯   考评指标新增考评范围
158
159
160
161
162
                  <Form.Item
                    name="ruleValues3"
                    label="按月指定日期"
                    rules={[{ required: true, message: "按月指定日期" }]}
                  >
f0653c98   曾柯   考评指标
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
                    <Select placeholder="请选择日期" showSearch allowClear optionFilterProp="children" mode="multiple">
                      {DatePick.map((item) => (
                        <Option value={item.value} key={item.value}>
                          {item.label}
                        </Option>
                      ))}
                    </Select>
                  </Form.Item>
                );
              } else if (_ruleType === 4) {
                return (
                  <>
                    <Form.Item
                      name="ruleValues4"
                      label="滚动月数"
                      rules={[
                        { required: true, message: "请输入滚动月数" },
                        { pattern: /^(?:1[0-2]|[1-9])$/, message: "请输入1至12的正整数" },
                      ]}
                    >
                      <InputNumber placeholder="请输入滚动月数" addonAfter="月" style={{ width: 567 }} />
                    </Form.Item>
                    <Form.Item name="startTime4" label="开始月数" rules={[{ required: true, message: "请选择开始月数" }]}>
                      <DatePicker picker="month" style={{ width: 567 }} />
                    </Form.Item>
                    <Form.Item
                      name="orderType"
                      label="滚动月开始日"
                      rules={[{ required: true, message: "请选择滚动正数或倒数" }]}
                    >
                      <Radio.Group>
                        <Radio value={1}>月第X天</Radio>
                        <Radio value={2}>月倒数第X天</Radio>
                      </Radio.Group>
                    </Form.Item>
                    <Form.Item
                      name="rollValue4"
                      label="X"
511545ce   曾柯   考评指标新增考评范围
201
202
203
204
                      rules={[
                        { required: true, message: "请输入滚动天数" },
                        { pattern: /^(?:[1-9]|[1-2]\d|3[0-1])$/, message: "请输入1至31的正整数" },
                      ]}
f0653c98   曾柯   考评指标
205
                    >
ccdb0384   曾柯   考评组配置及数据导入
206
                      <InputNumber placeholder="请输入滚动天数" addonAfter="天" style={{ width: 567 }} />
f0653c98   曾柯   考评指标
207
208
209
210
211
212
213
214
215
216
                    </Form.Item>
                  </>
                );
              }
            }}
          </Form.Item>
        </Form>
      </Modal>
    );
  }