/* eslint-disable no-return-assign */ /* eslint-disable no-return-assign */ import React, { useEffect, useState } from "react"; import { Modal, Form, Select, InputNumber, message, Spin, Radio, Input, Button } from "antd"; import { saveRewardsListApi } from "../RewardsList/api"; import { useStore } from "../index"; import { queryPostIndicatorApi, queryShopIndicatorApi } from "../api"; import _ from "lodash"; import useInitail from "@/hooks/useInitail"; import CondLaddersTable from "./CondLaddersTable"; import CommissionParams from "@/pages/performance/KpiGroupSetting/EditComfirm/components/CommissionParams"; import { EvaGroupSetteing } from "@/pages/performance/EvaGroupSetting/interface"; import { TargetType, TargetTypeEnum } from "@/pages/performance/entity"; // import { transformDTOCond } from "../../entity"; const Option = Select.Option; interface Props { addComVisible: boolean; onCancel: Function; postId?: number; shopIds?: string; onOk: (vales: any) => void; comItem: Commission; setItemId: Function; scopeType: number; } type Commission = EvaGroupSetteing.CommissionParams; export default function AddCondModal(props: Props) { const { selectedIndicatorsConds, setSelectedIndicatorsConds, setPreconditionAlias } = useStore(); const percent = /^\d\.([1-9]{1,2}|[0-9][1-9])$|^[1-9]\d{0,1}(\.\d{1,2}){0,1}$|^100(\.0{1,2}){0,1}$/; const Momney = /^([1-9]\d*(\.\d{1,2})?|([0](\.([0][1-9]|[1-9]\d{0,1}))))$/; const [form] = Form.useForm(); const [isTarget, setIsTarget] = useState(false); // console.log(form); const { addComVisible, onCancel, postId, shopIds, onOk, comItem, setItemId, scopeType } = props; const [delay, setDelay] = useState(true); // 保存选中绩效指标需要配置的绩效考核目标值类型 const [targetType, setTargetType] = useState(); // 保存选中指标是否考评类型 const [codeType, setCodeType] = useState(); const [dataType, setDataType] = useState(); // 保存过滤后指标列表 const [newIndicators, setNewIndicators] = useState([]); const [name, setIndicatorName] = useState(""); const [id, setId] = useState(0); const { data: indicatorsList, setParams, loading, } = useInitail( scopeType == 1 ? queryPostIndicatorApi : queryShopIndicatorApi, [], scopeType == 1 ? { postId } : {}, delay ); useEffect(() => { setParams(scopeType == 1 ? { postId } : {}, true); setDelay(false); setTargetType(1); }, [addComVisible]); // 修改 useEffect(() => { if (indicatorsList && indicatorsList.length > 0 && !comItem.code) { const res = indicatorsList.filter((item) => !selectedIndicatorsConds.find((y) => y === item.code)); setNewIndicators([...res]); } if (addComVisible && comItem.code) { const indTar = indicatorsList.find((item) => item.code == comItem.code)?.targetType; console.log("indTar", indTar); console.log("comItem.targetType", comItem.targetType); setTargetType(indTar); setIndicatorName(comItem.name); setDataType(comItem.dataType); setCodeType(comItem.codeType); form.setFieldsValue({ ...comItem, conds: { value: comItem.code, label: comItem.name, }, }); } if (comItem.targetValue && comItem.targetCalcType) { setIsTarget(true); } }, [indicatorsList]); useEffect(() => { if (targetType === TargetTypeEnum["无"]) { setIsTarget(false); } }, [targetType]); useEffect(() => { setIsTarget(false); }, [id]); // 校验表单数据 function transformDTO(formData: any) { console.log("前置条件", formData); let detail: any = {}; _.each(formData, (value: any, key: string) => { switch (key) { case "conds": const _options = value || {}; detail.name = _options.label[0]; detail.code = _options.value; break; default: detail[key] = value; break; } }); return detail; } function handSubmit(fieldsValue: any) { const pa: any = transformDTO(fieldsValue); pa.targetType = targetType; pa.codeType = codeType; pa.dataType = dataType; console.log("前置条件", pa); const newItemId = pa.code; // 编辑时,不需要push id if (!comItem.code) { const tmpIds = [...selectedIndicatorsConds]; tmpIds.push(newItemId); setSelectedIndicatorsConds([...tmpIds]); } else { pa.code = comItem.code; pa.name = comItem.name; } onOk(pa); onCancel && onCancel(); } return ( { form.resetFields(); onCancel(); }} onCancel={() => onCancel()} onOk={form.submit} width={1000} >
{(targetType === TargetTypeEnum["百分比"] || targetType === TargetTypeEnum["金额"] || targetType === TargetTypeEnum["数量"]) && (
{isTarget && ( )}
)} {isTarget && ( <>