import React, { useEffect, useState, useRef } from "react"; import PostSelect from "@/components/PostSelect"; import { Modal, Select, InputNumber, Spin, message, Form, Input, FormInstance, } from "antd"; import { TriggerType, TriggerAll } from "../entity"; import _ from "lodash"; // ShopSelect; import ShopSelect from "@/components/ShopSelect"; interface PostItem { type: number; //岗位大类编码 typeName: string; //岗位大类名称 } const { Option } = Select; const FormItem = Form.Item; interface Interval { min?: number; max?: number; } interface Props { loading: boolean; onOk: (data: any, cb: () => any) => any; onCancel: () => any; show: boolean; data: any[]; allShopList: any[]; allPost: CommonApi.RoleCodeVO[]; //角色列表 postTypeList: PostItem[]; //岗位大类 postList: any[]; storageList: any[]; form: FormInstance; eidt?: boolean; readOnly?: boolean; // preConditonList: any[]; abilityList: PartStorageSpace.AbilityPageVO[]; // 能力提升列表; foundList: PartStorageSpace.FoundPageVO[]; //款项列表 preCondition: any[]; fittingsList: PartStorageSpace.PageVO[]; accountList: SpecialAccount.AccountInfo[]; } export default function setModal(props: Props) { const { loading, onCancel, onOk, show, allShopList, postTypeList, data, allPost, postList, storageList, form, eidt, readOnly, preCondition, accountList, fittingsList, abilityList, foundList, } = props; const [newData, setNewData] = useState([]); const [deepData, setDeepData] = useState([]); /** 选择条件配置 */ const [selectData, setSelectData] = useState< { label: string; value: number }[] >([]); useEffect(() => { if (show) { if (eidt) { /** 编辑回显已经填写条件值 */ setDeepData([...data]); if (preCondition && preCondition.length) { const _selectList = preCondition.map((item) => ({ label: item.flowTriggerDto.name, value: item.triggerId, })); setSelectData(_selectList); } const conditionList = data.map((item) => item.triggerId); form.setFieldsValue({ ...data[0], confList: conditionList, }); } else { // 新增 setNewData(data); const tmpSelectList = data.map((item) => ({ label: item.flowTriggerDto.name, value: item.triggerId, extral: item, })); setSelectData(tmpSelectList); } } }, [data]); /** 保存 */ function save() { if (loading) { return; } if ( deepData.filter( (item) => !item.value || JSON.parse(item.value) == null || JSON.parse(item.value).length == 0 ).length ) { message.error("请填写全部条件"); return; } const _data = deepData.length > 0 ? deepData : data; const params = _data.map((item: ApprovalProcess.InstanceInfo) => ({ approvalConditionId: item.triggerId, value: item.value, })); onOk && onOk(params, hide); // setDeepData([]); } function hide() { onCancel && onCancel(); form.resetFields(); setDeepData([]); setNewData([]); } function onChange( item: ApprovalProcess.InstanceInfo, // value: any, Values: any, index: number ) { // idOrCode; const newValue = Array.isArray(Values) ? Values.map((i) => ({ idOrCode: i.value, name: i.label })) : Values; const { value, flowTriggerDto } = item; if ([2, 3, 4, 5, 6, 7, 8].includes(flowTriggerDto.judgeRule)) { const _item = { ...item, value: JSON.stringify(newValue) }; deepData[index] = _item; setDeepData([...deepData]); } else { const _item = { ...item, value: JSON.stringify({ ...JSON.parse(value || "{}"), ...newValue, }), }; deepData[index] = _item; setDeepData([...deepData]); } } /** 选择需要配置的预设条件 */ const _onChange = (value: any[], option) => { if (eidt) { let res1 = data.filter((item) => value.find((y) => y === item.triggerId)); //交集 let res2 = value.filter((x) => !data.find((y) => y.triggerId === x)); //差集 let res3 = preCondition.filter((x) => { return res2.find((y) => y === x.triggerId); }); let res = res1.concat(res3); setDeepData([...res]); } else { const tempId = option.map((item) => item.extral.triggerId); const tempList = newData.filter((item) => tempId.includes(item.triggerId) ); setDeepData([...tempList]); } }; return (
{/* 多选=》选择要配置的预设条件 */} {deepData.map((item: ApprovalProcess.InstanceInfo, index: number) => { const data = item; const { flowTriggerDto, value } = data; const originalData = JSON.parse(value || "{}"); const { name, unit, judgeRule, type, // options, } = flowTriggerDto; const _maxRule = originalData && typeof originalData.max === "number" ? originalData.max : Infinity; const _minRule = originalData && typeof originalData.min === "number" ? originalData.min : -Infinity; return (
{judgeRule === 1 ? (
下限值(不包含,值为0则包含): onChange( data, { min: value > _maxRule ? _maxRule : value }, index ) } />
上限值(包含): onChange( data, { max: value < _minRule ? _maxRule : value }, index ) } />
) : null} {[2, 3, 4, 5, 6].includes(judgeRule) ? (
onChange(data, value, index)} />
) : null} {type === TriggerType["门店"] && (
0 ? originalData.map((i: any) => ({ value: i.idOrCode, label: i.name, })) : [] } onChange={(value) => { console.log("value:", value); onChange(data, value, index); }} /> {/* */}
)} {type === TriggerType["角色"] && (
)} {type === TriggerType["岗位"] && (
)} {/* 岗位大类 */} {type === TriggerType["岗位大类"] && (
)} {type === TriggerType["车辆区域库"] && (
)} {/* 配件库房 */} {type === TriggerType["配件库房"] && (
)} {/* 资金账户 */} {type === TriggerType["资金账户"] && (
)} {/* 能力提升 */} {type === TriggerType["能力提升业务类型"] && (
)} {/* 款项 */} {type === TriggerType["款项"] && (
)}
); })}
); }