import React, { useEffect, useState } from "react"; import { Form, Input, Modal, Select, message, Radio, Upload, InputNumber, DatePicker, Button, } from "antd"; import { PlusOutlined } from "@ant-design/icons"; import { saveCarInfoApi, getAllSeriesApi } from "../api"; import { useStore } from "../index"; import { UploadFile } from "antd/lib/upload/interface"; import SpecCodeEdilt from "./SpecCodeEdilt"; import { cars } from "../interface"; import moment from "moment"; import * as DATA from '../carData'; const FormItem = Form.Item; const { Option } = Select; const RadioGroup = Radio.Group; export default function CarModal() { const { brands, factorys, getFactories, series, getSeries, setLoading, visible, setVisible, setConfirmLoading, confirmLoading, currentItem, setCurrentItem, getSpecCodeList, specCodeList } = useStore(); const [form] = Form.useForm(); //新能源类型选择 const [energryList, setEnergryList] = useState(DATA.EnergyData); //控制隐藏 const [exhaustHidden, setExhaustHidden] = useState(true); //排量 const [inhaleTypeHidden, setInhaleTypeHidden] = useState(true); //进气方式 const [gearboxHidden, setGearboxHidden] = useState(true); //变速箱 const [envLevelHidden, setEnvLevelHidden] = useState(true); //环境标准 const [batterySizeHidden, setBatterySizeHidden] = useState(true); //电池容量 const [evMileageHidden, setEvMileageHidden] = useState(true); //纯电续航 const [quickChargeHidden, setQuickChargeHidden] = useState(true); //快充 const [slowChargeHidden, setSlowChargeHidden] = useState(true); //慢充 //自动生成车型名称 const [carName, setCarName] = useState(); const [restName, setRestName] = useState(); useEffect(() => { form.setFieldsValue({ name: carName }); }, [carName]); useEffect(() => { if (visible) { if (currentItem) { form.setFieldsValue({ ...currentItem, year: currentItem.year && moment().year(currentItem.year), thumbnail: currentItem.thumbnail ? [ { uid: "-1", name: "缩略图", status: "done", url: currentItem.thumbnail, response: { data: currentItem.thumbnail }, }, ] : [], }); getFactories(currentItem.brandId); getSeries(currentItem.factoryId); getSpecCodeList(currentItem.seriesId); setCarName(currentItem.name); } } }, [visible]); useEffect(() => { if (visible) { if (currentItem) { getAllSeriesApi({ factoryId: currentItem.factoryId }).then((res: any) => { const car: any = res.data.filter( (item: any) => item.id === currentItem.seriesId ); if (car[0].newEnergy) { setEnergryList(DATA.NewEnergyData); } else { setEnergryList(DATA.OldEnergyData); } }); } } }, [visible]); useEffect(() => { if (visible) { if (currentItem) { //编辑 if (currentItem.energyType === 1 || currentItem.energyType === 2) { setBatterySizeHidden(true); setEvMileageHidden(true); setQuickChargeHidden(true); setSlowChargeHidden(true); setExhaustHidden(false); setInhaleTypeHidden(false); setGearboxHidden(false); setEnvLevelHidden(false); } else if (currentItem.energyType === 6) { setBatterySizeHidden(false); setEvMileageHidden(false); setQuickChargeHidden(false); setSlowChargeHidden(false); setExhaustHidden(true); setInhaleTypeHidden(true); setGearboxHidden(true); setEnvLevelHidden(true); } else { setExhaustHidden(false); setInhaleTypeHidden(false); setGearboxHidden(false); setEnvLevelHidden(false); setBatterySizeHidden(false); setEvMileageHidden(false); setQuickChargeHidden(false); setSlowChargeHidden(false); } } else { // 新增 setExhaustHidden(false); setInhaleTypeHidden(false); setGearboxHidden(false); setEnvLevelHidden(false); setBatterySizeHidden(false); setEvMileageHidden(false); setQuickChargeHidden(false); setSlowChargeHidden(false); } } }, [visible]); const okHandle = () => { form .validateFields() .then((v: any) => { const item = { ...v, id: currentItem ? currentItem.id : undefined, thumbnail: v.thumbnail ? v.thumbnail[0] && v.thumbnail[0].response.data : '', year: +moment(v.year).format("YYYY"), specCodeList: v.specCodeList, }; setConfirmLoading(true); saveCarInfoApi(item) .then((res: any) => { message.success("操作成功!"); setConfirmLoading(false); setVisible(false); setLoading(true); }) .catch((error: any) => { message.error(error.message); setConfirmLoading(false); }); }) .catch((error) => { message.error(error.message); setConfirmLoading(false); }); }; const brandSelect = (v: any) => { form.setFieldsValue({ factoryId: undefined, seriesId: undefined, energyType: undefined, ...DATA.resData, }); setCarName(""); return v; }; const factorySelect = (v: any) => { form.setFieldsValue({ seriesId: undefined, energyType: undefined, ...DATA.resData, }); return v; }; const seriesIdSelect = (v: any) => { form.setFieldsValue({ energyType: undefined, ...DATA.resData, }); setCarName(""); const car: any = series.filter((item) => item.id === v); if (car[0].newEnergy) { setEnergryList(DATA.NewEnergyData); } else { setEnergryList(DATA.OldEnergyData); } return v; }; const specCodeSelect = (v: string, options: any) => { const spec: OopSpecCode.ListVO[] = specCodeList.filter((item) => item.specCode === v); options.exhaust && form.setFieldsValue({ exhaust: spec[0].exhaust, inhaleType: spec[0].inhaleType }); }; const beforeUpload = (file: UploadFile) => { const imgTypeArr = ["image/jpg", "image/jpeg", "image/gif", "image/png"]; const isImg = imgTypeArr.indexOf(file.type) > -1; if (!isImg) { message.error("请选择png、jpg、gif、jpeg图片!"); } const isLt2M = file.size / 1024 / 1024 < 2; if (!isLt2M) { message.error("图片大小不能超过 2MB!"); } return isImg && isLt2M; }; const onPreView = (file: UploadFile) => { const bodyEl = document.body; const a = document.createElement("a"); a.href = file.response.data; a.target = "__blank"; bodyEl.appendChild(a); a.click(); bodyEl.removeChild(a); }; //选择能源类型 const SelectEnergyType = (value: any) => { // form.setFieldsValue({ ...DATA.resData }); // setCarName(""); if (value === 1 || value === 2) { setBatterySizeHidden(true); setEvMileageHidden(true); setQuickChargeHidden(true); setSlowChargeHidden(true); setExhaustHidden(false); setInhaleTypeHidden(false); setGearboxHidden(false); setEnvLevelHidden(false); } else if (value === 6) { setBatterySizeHidden(false); setEvMileageHidden(false); setQuickChargeHidden(false); setSlowChargeHidden(false); setExhaustHidden(true); setInhaleTypeHidden(true); setGearboxHidden(true); setEnvLevelHidden(true); } else { setExhaustHidden(false); setInhaleTypeHidden(false); setGearboxHidden(false); setEnvLevelHidden(false); setBatterySizeHidden(false); setEvMileageHidden(false); setQuickChargeHidden(false); setSlowChargeHidden(false); } }; //点击表单获取所有值并自动生成车型名称 const onValuesChange = (changedValues: any, allValues: any) => { let NAME; if (currentItem === undefined) { //新增 const caryear: string = allValues.year ? allValues.year.year() + "款" : ""; const careditionName: string = allValues.editionName ? `${allValues.editionName}` : ''; const carexhaust: string = allValues.exhaust ? `${allValues.exhaust.toFixed(1)}` : ''; const carinhaleType: string = allValues.inhaleType ? (allValues.inhaleType === 1 ? "L" : "T") : ''; const cardriveType: string = allValues.driveType ? `${DATA.DriveType[allValues.driveType]}` : ''; const cartransmissionType: string = allValues.transmissionType ? `${DATA.TransmissionType[allValues.transmissionType]}` : ''; const cargearbox: string = allValues.gearbox ? `${allValues.gearbox}` : ''; const carmodelName: string = allValues.modelName ? allValues.modelName : ''; const carsuitName: string = allValues.suitName ? `${allValues.suitName}` : ''; const carseatCount: string = allValues.seatCount ? `${allValues.seatCount}座` : ''; // const NAME = `${caryear} ${careditionName} ${carexhaust}${carinhaleType} ${cardriveType} ${cartransmissionType}${cargearbox} ${carmodelName} ${carsuitName} ${carseatCount}`; NAME = `${careditionName} ${carexhaust}${carinhaleType} ${cardriveType} ${cartransmissionType}${cargearbox} ${carmodelName} ${carsuitName} ${carseatCount}`; // let pattern = /\s+/g; // const _Name = NAME.replace(pattern, " "); // setCarName(_Name); } else { //编辑 return; const caryear: string = allValues.year ? allValues.year.year() + "款" : ""; const careditionName: string = allValues.editionName ? `${allValues.editionName}` : ''; const carexhaust: string = allValues.exhaust ? `${allValues.exhaust.toFixed(1)}` : ''; const carinhaleType: string = allValues.inhaleType ? (allValues.inhaleType === 1 ? "L" : "T") : ''; const cardriveType: string = allValues.driveType ? `${DATA.DriveType[allValues.driveType]}` : ''; const cartransmissionType: string = allValues.transmissionType ? `${DATA.TransmissionType[allValues.transmissionType]}` : ''; const cargearbox: string = allValues.gearbox ? `${allValues.gearbox}` : ''; const carmodelName: string = allValues.modelName ? allValues.modelName : ''; const carsuitName: string = allValues.suitName ? `${allValues.suitName}` : ''; const carseatCount: string = allValues.seatCount ? `${allValues.seatCount}座` : ''; NAME = `${careditionName} ${carexhaust}${carinhaleType} ${cardriveType} ${cartransmissionType}${cargearbox} ${carmodelName} ${carsuitName} ${carseatCount}`; } let pattern = /\s+/g; const _Name = NAME.replace(pattern, " "); setCarName(_Name); }; //重置车型名称 const onRest = () => { if (currentItem) { if (carName === undefined && restName === undefined) { form.setFieldsValue({ name: currentItem?.name, }); } else { form.setFieldsValue({ name: restName, }); } } else { form.setFieldsValue({ name: carName, }); } }; return ( setVisible(false)} confirmLoading={confirmLoading} afterClose={() => { form.resetFields(); setCurrentItem(undefined); }} >
{ if (Array.isArray(e)) { return e.slice(-1); } if (!e.file.status) return []; if (e.file.status == "error") { message.error("缩略图上传出错,请重新上传"); return []; } return e && e.fileList.slice(-1); }} >
上传缩略图
在售 停售 预售 在产 停产
{!currentItem && ( )}
); }