{"version":3,"file":"cascader-1099f485.js","sources":["../../../../../src/components/base/areaSelect/province-item.vue","../../../../../src/components/base/areaSelect/hooks/useCascaderDealer.ts","../../../../../src/components/base/areaSelect/dealer-item.vue","../../../../../src/components/base/areaSelect/hooks/useAreaCascaderComponent.ts","../../../../../src/components/base/areaSelect/cascader.vue"],"sourcesContent":["\r\n\r\n\r\n\r\n\r\n","import { LOAD_STATUS } from '@qcwp/common'\r\nimport { getDealerAllList } from '~~/src/server/modules/car'\r\n\r\nimport type { DealerListResponse } from '~~/src/server/modules/car/types'\r\nexport function useCascaderDealer() {\r\n const list = ref([])\r\n const loadStatus = ref(LOAD_STATUS.INIT)\r\n async function getAllDealerList(provinceId: string, cityId: string, seriesId: string) {\r\n if (!provinceId || !cityId || !seriesId)\r\n return\r\n loadStatus.value = LOAD_STATUS.LOADING\r\n try {\r\n const { data } = await getDealerAllList({ provinceId, cityId, carSeriesId: seriesId })\r\n list.value = data || []\r\n loadStatus.value = LOAD_STATUS.END\r\n }\r\n catch (e) {\r\n loadStatus.value = LOAD_STATUS.ERROR\r\n }\r\n }\r\n\r\n async function init(provinceId: string, cityId: string, seriesId: string, dealerIds: string[], _defaultSelectDealer?: boolean) {\r\n if (!provinceId || !cityId || !seriesId)\r\n return []\r\n\r\n await getDealerAllList({ provinceId, cityId, carSeriesId: seriesId })\r\n\r\n const dealers = []\r\n\r\n for (const dealer of list.value) {\r\n if (dealerIds.includes(dealer.id)) {\r\n dealers.push(dealer)\r\n if (dealers.length === dealerIds.length)\r\n break\r\n }\r\n }\r\n // if (defaultSelectDealer && dealers.length === 0 && list.value.length > 0) {\r\n // for (let i = 0; i < 3; i++)\r\n // dealers.push(list.value[i])\r\n // }\r\n // console.log('defaultSelectDealer', defaultSelectDealer, dealers)\r\n return dealers\r\n }\r\n\r\n return {\r\n list,\r\n loadStatus,\r\n getAllDealerList,\r\n init,\r\n }\r\n}\r\n","\r\n\r\n\r\n","import type { City, NestProvince, Province } from '@qcwp/common'\r\nimport { LOAD_STATUS, nestProvince } from '@qcwp/common'\r\nimport type areaSelectCascaderVue from '../cascader.vue'\r\nimport { useCascaderDealer } from './useCascaderDealer'\r\nimport type { DealerListResponse } from '~~/src/server/modules/car/types'\r\ntype AreaSelectCascaderPropsType = InstanceType['$props']\r\ntype AreaSelectCascaderEmitsType = InstanceType['$emit']\r\n\r\nexport interface AreaSelectCascaderSelectedType { province: Province | null; city: City | null; dealers: any[] }\r\nexport function useAreaCascaderComponent(props: AreaSelectCascaderPropsType, emits: AreaSelectCascaderEmitsType) {\r\n const currentStep = ref(0)\r\n const isSelect = ref(false)\r\n const state = ref(LOAD_STATUS.INIT)\r\n\r\n function clickHandler() {\r\n if (props.clickPreHandler?.())\r\n isSelect.value = true\r\n else\r\n isSelect.value = true\r\n }\r\n\r\n const selectedProvince = ref(null)\r\n const selectedCity = ref(null)\r\n const selectedDealer = ref([])\r\n function selectProvince(province: Province, city: City) {\r\n selectedProvince.value = province\r\n selectedCity.value = city\r\n selectedDealer.value = []\r\n changeStep(1)\r\n }\r\n function selectDealer(dealers: DealerListResponse[]) {\r\n selectedDealer.value = unref(dealers)\r\n submit()\r\n }\r\n\r\n function clear() {\r\n selectedProvince.value = null\r\n selectedCity.value = null\r\n selectedDealer.value = []\r\n changeStep(0)\r\n }\r\n function changeStep(step: number) {\r\n submit()\r\n if (step >= (props.step || 2)) {\r\n isSelect.value = false\r\n // 是否选择后清空\r\n props.selectedClear && clear()\r\n return\r\n }\r\n currentStep.value = step\r\n }\r\n function submit() {\r\n emits('selected', { province: unref(selectedProvince), city: unref(selectedCity), dealers: unref(selectedDealer) })\r\n }\r\n\r\n /**\r\n * 移除已选经销商\r\n * @param id dealerId\r\n */\r\n function handleClose(id: string) {\r\n const index = selectedDealer.value.findIndex(item => item.id === id)\r\n\r\n if (index > -1) {\r\n selectedDealer.value.splice(index, 1)\r\n submit()\r\n }\r\n }\r\n\r\n const { init: dealerInit } = useCascaderDealer()\r\n // watch(() => props.defaultValue, initHandle, { immediate: true, deep: true })\r\n function initAreaHandle(provinceId: string, cityId: string, isSubmit = true) {\r\n const [province, city] = provinceInit(provinceId, cityId)\r\n if (!province || !city)\r\n return submit()\r\n\r\n selectProvince(province, city)\r\n isSubmit && submit()\r\n }\r\n async function initHandle() {\r\n const [provinceId, cityId, dealerIds] = props.defaultValue || [undefined, undefined, []]\r\n const dealerIdsIsEqual = (dealerIds.length === selectedDealer.value.length) && dealerIds.every((id, index) => id === selectedDealer.value[index].id)\r\n if (provinceId === selectedProvince.value?.id && cityId === selectedCity.value?.id && dealerIdsIsEqual)\r\n return\r\n clear()\r\n // 无地区id,直接提交清空数据\r\n if (!provinceId || !cityId)\r\n return submit()\r\n\r\n state.value = LOAD_STATUS.LOADING\r\n const step = props.step || 2\r\n\r\n initAreaHandle(provinceId, cityId, false)\r\n if (step === 2) {\r\n try {\r\n const dealers = await dealerInit(provinceId, cityId, props.seriesId, dealerIds, props.defaultSelectDealer)\r\n selectDealer(dealers)\r\n }\r\n catch (e) {\r\n state.value = LOAD_STATUS.ERROR\r\n }\r\n }\r\n state.value = LOAD_STATUS.END\r\n // 触发更新,则不能在当前组件中 watch defaultValue变化触发initHandle,否则会循环\r\n submit()\r\n }\r\n\r\n return {\r\n currentStep,\r\n isSelect,\r\n clickHandler,\r\n state,\r\n clear,\r\n changeStep,\r\n\r\n selectedProvince,\r\n selectedCity,\r\n selectedDealer,\r\n selectProvince,\r\n selectDealer,\r\n handleClose,\r\n initAreaHandle,\r\n initHandle,\r\n }\r\n}\r\n\r\nfunction provinceInit(provinceId: string, cityId: string) {\r\n if (!provinceId || !cityId)\r\n return [undefined, undefined]\r\n\r\n let p: NestProvince | undefined\r\n let c: NestProvince | undefined\r\n for (const province of nestProvince) {\r\n if (province.id === provinceId && province.children) {\r\n for (const city of province.children) {\r\n if (city.id === cityId) {\r\n p = JSON.parse(JSON.stringify(province))\r\n c = JSON.parse(JSON.stringify(city))\r\n delete p?.children\r\n delete c?.children\r\n\r\n return [p, c]\r\n }\r\n }\r\n }\r\n }\r\n\r\n return [undefined, undefined]\r\n}\r\n","\r\n\r\n\r\n"],"names":["select","province","city","emits","useCascaderDealer","list","ref","loadStatus","LOAD_STATUS","getAllDealerList","provinceId","cityId","seriesId","data","getDealerAllList","init","dealerIds","_defaultSelectDealer","dealers","dealer","loadData","props","stops","removeWatchHandler","stop","addWatchHandler","watch","val","dealers2","id","item","watchEffect","onActivated","onBeforeUnmount","onDeactivated","useAreaCascaderComponent","currentStep","isSelect","state","clickHandler","_a","selectedProvince","selectedCity","selectedDealer","selectProvince","changeStep","selectDealer","unref","submit","clear","step","handleClose","index","dealerInit","initAreaHandle","isSubmit","provinceInit","initHandle","dealerIdsIsEqual","_b","p","c","nestProvince","__expose"],"mappings":"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"}