{"version":3,"sources":["webpack://_N_E/./components/new-selector/brand-series-car-single.tsx","webpack://_N_E/./components/new-selector/car.tsx","webpack://_N_E/./components/new-selector/brand.tsx","webpack://_N_E/./components/new-selector/series.tsx"],"names":["Type","seriesId","onChange","show","style","useState","car","setCar","loading","setLoading","setEmpty","useEffect","fetch","getUrl","then","res","list","get","length","message","carList","forEach","item","name","data","item2","concat","push","catch","e","fetchCar","map","onClick","stopPropagation","info","id","year","official_price","useScrollSpy","useCallback","node","querySelectorAll","current","setCurrent","brandRef","brands","useBrandList","letters","letter","i","ref","data-letter","brand","nativeEvent","stopImmediatePropagation","avatar","src","applyHttpsImage","alt","brandId","series","setSeries","empty","status","fetchSeries","type","series_id","series_name","BrandSeriesCarSelector","className","state","setState","curr","setCurr","classnames","sendTeaCommEvent","event_id","obj_text","brandName","seriesName","price","newState","carId","carName"],"mappings":"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","file":"static/chunks/6958-fda60cafa89fb8ae8e7f.js","sourcesContent":["import React, { useState, useRef, useLayoutEffect } from 'react'\nimport classnames from 'classnames'\n\nimport SelectCar from './car'\nimport SelectBrand from './brand'\nimport SelectSeries from './series'\nimport { sendTeaCommEvent } from 'lib/tea-analyze'\n\nexport interface IResult {\n brandId: number\n brandName: string\n seriesId: number\n seriesName: string\n carId: number\n carName: string\n year: number\n}\n\ninterface IProps {\n className?: string\n onChange: (param: IResult) => void\n}\n\nenum Type {\n brand = 0,\n series,\n car,\n}\nexport default function BrandSeriesCarSelector({\n className,\n onChange,\n}: IProps) {\n const [state, setState] = useState>()\n const [curr, setCurr] = useState(0)\n // const ref = useRef(null)\n // const top = useRef(139)\n // useLayoutEffect(() => {\n // console.log(ref.current)\n // if (ref.current) {\n // top.current = ref.current.getBoundingClientRect().bottom\n // }\n // })\n return (\n
\n
\n {curr >= Type['brand'] && (\n <>\n {\n e.stopPropagation()\n setCurr(Type['brand'])\n sendTeaCommEvent('clk_event', {\n event_id: 'add_model_module_category',\n obj_text: state?.brandName || '选择品牌',\n })\n }}\n >\n {state?.brandName || '选择品牌'}\n \n \n \n )}\n {curr >= Type['series'] && (\n <>\n {\n e.stopPropagation()\n setCurr(Type['series'])\n sendTeaCommEvent('clk_event', {\n event_id: 'add_model_module_category',\n obj_text: state?.seriesName || '选择车系',\n })\n }}\n >\n {state?.seriesName || '选择车系'}\n \n \n \n )}\n {curr >= Type['car'] && (\n <>\n {' '}\n 选择车型\n \n \n )}\n
\n {curr === Type['brand'] && (\n \n )}\n {curr === Type['series'] && state && (\n \n )}\n {curr === Type['car'] && state && (\n \n )}\n \n
\n )\n\n function handleBrandChange(id: number, name: string) {\n setState({\n brandId: id,\n brandName: name,\n })\n // 展示车系\n setCurr(Type['series'])\n sendTeaCommEvent('clk_event', {\n event_id: 'add_model_module_brand_btn',\n obj_text: name,\n })\n }\n\n function handleSeriesChange(id: number, name: string) {\n if (!state) {\n return\n }\n setState({\n brandId: state.brandId,\n brandName: state.brandName,\n seriesId: id,\n seriesName: name,\n })\n // 展示车型\n setCurr(Type['car'])\n sendTeaCommEvent('clk_event', {\n event_id: 'add_model_module_series_btn',\n obj_text: name,\n })\n }\n\n function handleCarChange(\n id: number,\n name: string,\n year: number,\n price: string\n ) {\n if (!state) {\n return\n }\n const newState = {\n ...state,\n carId: id,\n carName: name,\n year,\n price,\n }\n sendTeaCommEvent('clk_event', {\n event_id: 'add_model_module_model_btn',\n obj_text: name,\n })\n setState(newState)\n onChange(newState as IResult)\n }\n}\n","import React, { useState, useEffect } from 'react'\nimport get from 'lodash/get'\nimport fetch from 'lib/decorated-fetch'\nimport getUrl from 'lib/url'\nimport Loading from 'Components/loading'\n\ninterface ICarItem {\n info: any\n type: number\n}\ninterface ICar {\n name: string\n data: ICarItem[]\n}\ninterface IProp {\n show?: boolean\n style?: React.CSSProperties\n seriesId?: number\n onChange: (id: number, name: string, year: number, price: string) => void\n}\n\nconst Car = ({ seriesId, onChange, show = false, style = {} }: IProp) => {\n const [car, setCar] = useState([])\n const [loading, setLoading] = useState(false)\n const [empty, setEmpty] = useState(false)\n useEffect(() => {\n if (!seriesId) return\n fetchCar()\n }, [seriesId])\n // 获取品牌数据\n function fetchCar() {\n if (!seriesId) return\n setLoading(true)\n fetch(getUrl(`/motor/garage/get_cars_by_series_id/${seriesId}/?no_sales=1`))\n .then((res) => {\n setLoading(false)\n const list = get(res, 'data.list', [])\n if (list.length === 0) {\n setEmpty(true)\n return\n }\n if (res.message === 'success') {\n const carList: ICar[] = []\n list.forEach((item: any) => {\n const car = { name: item.name, data: [] }\n get(item, 'data', []).forEach((item2: any) => {\n car.data = car.data.concat(item2.data)\n })\n carList.push(car)\n })\n setCar(carList)\n }\n })\n .catch((e) => {\n setLoading(false)\n })\n }\n\n if (!show || !seriesId) return null\n return (\n
\n {loading && }\n {car.map((item: ICar) => (\n
\n {item.data.map((item2) => (\n {\n e.stopPropagation()\n onChange(\n item2.info.id,\n item2.info.name,\n item2?.info?.year,\n item2?.info?.official_price\n )\n }}\n >\n {`${item2?.info?.year}款 ${item2.info.name}`}\n {item2?.info?.official_price}\n

\n ))}\n
\n ))}\n \n
\n )\n}\n\nexport default Car\n","import React, { useState, useCallback } from 'react'\nimport Loading from 'Components/loading'\nimport { useBrandList, useScrollSpy } from 'Components/hooks'\nimport applyHttpsImage from 'lib/apply-https-img'\n\ninterface IBrandItem {\n id: number\n brand: string\n}\ninterface IBrand {\n pinyin: string\n data: IBrandItem[]\n}\ninterface IProp {\n show?: boolean\n style?: React.CSSProperties\n onChange: (id: number, name: string) => void\n}\n\nconst Brand = ({ onChange, show = false, style = {} }: IProp) => {\n const [current, setCurrent, brandRef] = useScrollSpy<\n HTMLDivElement,\n HTMLDivElement\n >(\n useCallback((node) => {\n return node.querySelectorAll('.brand-item')\n }, []),\n false\n )\n const brands = useBrandList()\n\n function renderLetter() {\n if (!brands) {\n return null\n }\n return (\n
    \n {brands.letters.map((letter, i) => (\n {\n e.stopPropagation()\n setCurrent(i)\n }}\n >\n {letter}\n \n ))}\n \n
\n )\n }\n\n function renderBrand() {\n if (!brands) {\n return null\n }\n return (\n
\n {brands.list.map((item) => {\n return (\n \n \n {item.letter}\n \n {item.data.map((brand) => (\n {\n e.stopPropagation()\n e.nativeEvent.stopPropagation()\n e.nativeEvent.stopImmediatePropagation()\n onChange(brand.id, brand.name)\n }}\n >\n {!!brand.avatar && (\n \n )}\n {brand?.name}\n

\n ))}\n
\n )\n })}\n \n \n )\n }\n if (!show) return null\n return (\n
\n {!brands && }\n {renderLetter()}\n {renderBrand()}\n \n
\n )\n}\n\nexport default Brand\n","/* eslint-disable array-callback-return */\nimport React, { useState, useEffect } from 'react'\n\nimport fetch from 'lib/decorated-fetch'\nimport getUrl from 'lib/url'\nimport Loading from 'Components/loading'\n\ninterface ISeriesItem {\n series_id: number\n series_name: string\n sub_brand_name: string\n}\ninterface ISeries {\n type: string\n info: ISeriesItem\n}\ninterface IProp {\n show?: boolean\n style?: React.CSSProperties\n brandId?: number\n onChange: (id: number, name: string) => void\n}\n\nconst Series = ({ brandId, onChange, show = false, style = {} }: IProp) => {\n const [series, setSeries] = useState([])\n const [loading, setLoading] = useState(false)\n const [empty, setEmpty] = useState(false)\n useEffect(() => {\n fetchSeries()\n }, [brandId])\n // 获取品牌数据\n function fetchSeries() {\n if (!brandId) return\n setLoading(true)\n fetch(\n getUrl(\n `/motor/brand/v4/brand_series_list/?no_sales=3&show_historical_series=0&with_offline_series_list=0&brand_id=${brandId}`\n )\n )\n .then((res) => {\n setLoading(false)\n // 找不到车系\n if (!res.data || res.data.length === 0) {\n setEmpty(true)\n setSeries([])\n return\n }\n if (res.status === 0) {\n setSeries(res.data)\n setEmpty(false)\n }\n })\n .catch((e) => {\n setLoading(false)\n })\n }\n\n if (!show || !brandId) return null\n return (\n
\n {loading && }\n {empty &&
暂无车系
}\n {series.map((item: ISeries) => {\n if (item.type !== '1003') {\n return (\n {\n e.stopPropagation()\n onChange(item.info.series_id, item.info.series_name)\n }}\n >\n {item.info.series_name}\n

\n )\n }\n })}\n \n
\n )\n}\n\nexport default Series\n"],"sourceRoot":""}