import React, { useState, useEffect } from 'react'; import { Modal, Button, message, Form, InputNumber, DatePicker, Radio, Row, Col } from 'antd'; import {useStore} from '../index'; import {ListResult, saveConfigApi} from '../api'; import { debounce, isNil } from 'lodash'; import ShopSelectNew from '@/components/ShopSelectNew'; import moment from 'moment'; import '../index.less'; const { RangePicker } = DatePicker; export default function DetailModal() { const {currentData, setCurrentData, setLoading} = useStore(); const [confirm, setConfirm] = useState(false); const [type, setType] = useState(2); const [form] = Form.useForm(); useEffect(() => { if (currentData.visible && currentData.data.id) { handleSetValue(); } else { form.setFieldsValue({addedValueType: 2}); } }, [currentData.visible]); const handleChangeType = (value: number) => { setType(value); if (value === 1) { form.setFieldsValue({ tciOutputValueRatio: 100, vciOutputValueRatio: 100, jcxOutputValueRatio: 100, decoOutputValueRatio: 100, }); } else if (value === 2) { form.setFieldsValue({ tciOutputValueRatio: 0, vciOutputValueRatio: 0, jcxOutputValueRatio: 0, decoOutputValueRatio: 0, }); } }; const handleCancel = () => { form.resetFields(); setCurrentData({visible: false, data: {}, title: ""}); setType(2); }; const handleSetValue = () => { form.setFieldsValue({ addedValueTask: currentData.data?.addedValueTask, tciOutputValueRatio: currentData.data?.tciOutputValueRatio, vciOutputValueRatio: currentData.data?.vciOutputValueRatio, jcxOutputValueRatio: currentData.data?.jcxOutputValueRatio, decoOutputValueRatio: currentData.data?.decoOutputValueRatio, shopList: currentData.data?.shopList?.map((v: any) => ({value: v.shopId, label: v.shopName})) || [], rangeDate: [moment(currentData.data.beginTime), moment(currentData.data.endTime)], addedValueType: currentData?.data?.addedValueType, vciOutputValueTask: currentData?.data?.vciOutputValueTask, decoOutputValueTask: currentData?.data?.decoOutputValueTask }); setType(currentData.data?.addedValueType || 2); }; const onFinish = async () => { const params = await form.validateFields(); setConfirm(true); const _params: ListResult = { id: currentData.data?.id, addedValueTask: params.addedValueTask, tciOutputValueRatio: params.tciOutputValueRatio, vciOutputValueRatio: params.vciOutputValueRatio, jcxOutputValueRatio: params.jcxOutputValueRatio, decoOutputValueRatio: params.decoOutputValueRatio, shopList: params.shopList.map((v: any) => ({shopId: v.value, shopName: v.label})), beginTime: moment(params.rangeDate[0]).valueOf(), endTime: moment(params.rangeDate[1]).valueOf(), addedValueType: params.addedValueType, vciOutputValueTask: params.vciOutputValueTask, decoOutputValueTask: params.decoOutputValueTask }; saveConfigApi(_params) .then(res => { message.success(res.result); setConfirm(false); setLoading(true); handleCancel(); }) .catch(e => { setConfirm(false); message.error(e.message); }); }; return ( 取消, ]} >
handleChangeType(e.target.value)} defaultValue={2} buttonStyle="solid"> 按毛利计算 按产值计算 `${value}元/台`} precision={2} parser={(value: string) => value?.replace('元/台', '')} /> 其中:商业险产值目标} name="vciOutputValueTask" style={{width: '100%'}} rules={[({ getFieldValue }) => ({ validator(_, value) { if (isNil(value)) { return Promise.reject(new Error('请输入')); } return Promise.resolve(); }, })]} > `${value}元/台`} precision={2} parser={(value: string) => value?.replace('元/台', '')} /> 装潢产值目标} name="decoOutputValueTask" style={{width: '100%'}} rules={[({ getFieldValue }) => ({ validator(_, value) { if (isNil(value)) { return Promise.reject(new Error('请输入')); } return Promise.resolve(); }, })]} > `${value}元/台`} precision={2} parser={(value: string) => value?.replace('元/台', '')} />
产值构成:
商业险金额 x} name="vciOutputValueRatio" colon={false} rules={[({ getFieldValue }) => ({ validator(_, value) { if (isNil(value)) { return Promise.reject(new Error('请输入')); } return Promise.resolve(); }, })]} > `${value}%`} precision={2} parser={(value?: string) => value?.replace('%', '')} /> 交强险金额 x} colon={false} name="tciOutputValueRatio" rules={[({ getFieldValue }) => ({ validator(_, value) { if (isNil(value)) { return Promise.reject(new Error('请输入')); } return Promise.resolve(); }, })]} > `${value}%`} precision={2} parser={(value?: string) => value?.replace('%', '')} /> 驾意险金额 x} colon={false} name="jcxOutputValueRatio" rules={[({ getFieldValue }) => ({ validator(_, value) { if (isNil(value)) { return Promise.reject(new Error('请输入')); } return Promise.resolve(); }, })]} > `${value}%`} precision={2} parser={(value?: string) => value?.replace('%', '')} /> 2.{type === 2 ? "计算装潢毛利" : "计算装潢产值"}:装潢金额 x} colon={false} name="decoOutputValueRatio" rules={[({ getFieldValue }) => ({ validator(_, value) { if (isNil(value)) { return Promise.reject(new Error('请输入')); } return Promise.resolve(); }, })]} > `${value}%`} precision={2} parser={(value?: string) => value?.replace('%', '')} />
3.其他附加值: 分期附加费 (包含服务费、GPS费、抵押上户费、解除抵押费) 和全款上户费要按实收计算
current && current < moment().startOf('day')} picker="month" format="YYYY-MM" />
); }