UNPKG

@insaic/neon

Version:

A Mobile UI Components built on Vue

288 lines (274 loc) 9.04 kB
### chooseCar --- #### 按需引入 ```js import { ChooseCar } from '@insaic/neon' Vue.use(ChooseCar) ``` #### 例子 [demo源码](https://github.com/insaic/neon/blob/dev/examples/routers/chooseCar.vue) ```html <template> <div> <sq-cell-group title="选车组件"> <sq-cell title="选车组件" is-link :value="modelName" @click.native="chooseCar"></sq-cell> </sq-cell-group> <!--:showChooseCar.sync="showChooseCar"--> <!--v-model="showChooseCar"--> <brand-cars :loadMoreArr="loadMoreArr" :carsData="carsData" :selectCar="selectCar" :selectModel="selectModel" :imgConfig="imgConfig" v-model="showChooseCar" @brandCategoryCode="getBrandCategoryCode" @brandModelId="getBrandModelId" @loadMore="getLoadMore" @carDetail="getCarDetail" @searchOption="getSearchOption" @searchLoadMore="getSearchLoadMore"> </brand-cars> </div> </template> <script> import carsData from '../mock/chooseCar.json' import selectCar from '../mock/selectCar.json' import selectModel from '../mock/selectModel.json' import searchCar from '../mock/searchCar.json' // 两种方式引入图片资源, 通过配置单 // import imgUrl from '../filter/imgConfig.js' console.log(carsData.result, 233444) export default { name: 'chooseCar', data() { return { showChooseCar: false, carsData: carsData.result, searchCarArr: searchCar.result.content, selectCar: [], selectModel: [], brandCategoryCode: '', code: '', loadMoreArr: [], modelName: '', searchLoadMoreArr: [], imgConfig: {} } }, methods: { // 动态加载图片资源 getImageUrl (carsData) { for (let key in carsData) { carsData[key].forEach((item, index) => { import(`../assets/images/car-logo/${key}/${item.brandCategoryCode}.jpg`) .then(res => { this.imgConfig[item.brandCategoryCode] = res }) }) } }, // 获取车系数据的方法 getSelectCar(code) { this.selectCar = selectCar.result }, // 获取车型数据的方法 getSelectModel(brandId, familyId) { this.selectModel = selectModel.result.content }, // 点击品牌后$emit抛出的方法, 在此处传递车系数据 getBrandCategoryCode(code) { this.brandCategoryCode = code this.getSelectCar(code) }, // 点击车系后$emit抛出的方法, 在此处传递车型数据 getBrandModelId({ brandId, familyId }) { this.getSelectModel(brandId, familyId) }, // 车型页面分页函数 getLoadMore(callback) { console.log('this is a loadmore function') this.loadMoreArr = selectModel.result.content setTimeout(() => { // callback(this.loadMoreArr) callback([]) }, 200) // callback(this.loadMoreArr) }, // 搜索页面分页函数 getSearchLoadMore (callback) { this.searchLoadMoreArr = this.searchCarArr callback(this.searchLoadMoreArr) }, // 流程执行完毕返回数据对象 getCarDetail(detail) { console.log(detail) this.modelName = detail.modelName }, // 选车弹窗弹起 chooseCar() { this.showChooseCar = true }, // 搜索车型品牌的方法 searchCar(option, callback) { if (option === 'aaaaa') { callback([]) } else { callback(this.searchCarArr) } // callback(this.searchCarArr) }, // 获取用户输入的车型品牌字段 getSearchOption(option, callback) { console.log(option, 1234) this.searchCar(option, callback) } }, // 从弹窗返回时避免直接返回到上一页面 beforeRouteLeave (to, from, next) { if (this.showChooseCar) { this.showChooseCar = false next(false) } else { next() } }, mounted () { this.getImageUrl(this.carsData) } } </script> ``` --- #### Props | 参数 | 类型 | 说明 | 默认值 | 可选值 | | :----------- | :--------------- | :-------------- | :---- |:---- | | carsData | `Array` | 选车品牌 | ---- | ---- | | selectCar | `Array` | 选择车型 | ---- | ---- | | selectModel | `Array` | 选择车系 | ---- | ---- | | loadMoreArr | `Array` | 选择车系分页数据 | ---- | ---- | | imgConfig | `Object` | 图片资源对象(key为后台返回的图片名,value为图片资源路径) | ---- | ---- | | showChooseCar.sync (vue 2.30以上版本, 推荐使用v-model)| `Boolean` | 组件的显示隐藏(或者使用v-model) | ---- | ---- | #### Event | 名称 | 参数 | 描述 | 调用方式 | | :-----------------| :--- |:---------------- | :------ | | brandCategoryCode | ---- | 获取(categoryCode) | --- | | brandModelId | ---- | 获取(modelCode) | --- | | loadMore | `callback` | 执行上拉加载回调 | --- | | carDetail | ---- | 获取选择车系详情 | --- | | searchOption | `option callback` | 接受两个返回参数,option(搜索字符),callback(回调函数, 将请求回来的数据传入即可) | --- | | searchLoadMore | `callback` | 搜索分页函数, 接受一个返回参数, 将分页数据传入即可 | --- | ### 品牌车型车系参数要求 #### 品牌参数 ```json { "result": { "A": [{ "brandCategoryCode": "audi", "brandCategoryName": "奥迪", "searchCode": "A" } ] } ``` #### 车型参数 ```json "result": [{ "brandId": "402880861203d16701122d764d7a0085", "brandPy": null, "brandName": "一汽奥迪", "brandCategoryCode": "audi", "jyVehicleFamilyMOs": [{ "familyId": "I0000000000000000210000000000018", "brandId": "402880861203d16701122d764d7a0085", "familyPy": "YQAD100", "familyName": "一汽奥迪100" }] ``` #### 车系参数 ```json { "result": { "total": 137, "content": [{ "carYear": "2016", "insurerVehicleModelMOs": [{ "modelCode": "BMAAHD0125", "modelName": "宝马BMW7160DF(BMW316i)轿车", "carYear": "2016", "displayName": "华晨宝马316i AT时尚型标准轴距版 5座 (宝马BMW7160DF(BMW316i)轿车 参考价24.71万)" }, { "modelCode": "BMAAHD0126", "modelName": "宝马BMW7200FF(BMW320i)轿车", "carYear": "2016", "displayName": "华晨宝马320i AT时尚型标准轴距版 5座 (宝马BMW7200FF(BMW320i)轿车 参考价29.63万)" }] }, { "carYear": "2015", "insurerVehicleModelMOs": [{ "modelCode": "BMAAHD0101", "modelName": "宝马BMW7160AL(BMW316Li)轿车", "carYear": "2015", "displayName": "华晨宝马316Li MT长轴距版 5座 (宝马BMW7160AL(BMW316Li)轿车 参考价25.03万)" }, { "modelCode": "BMAAHD0102", "modelName": "宝马BMW7160BL(BMW316Li)轿车", "carYear": "2015", "displayName": "华晨宝马316Li AT时尚型长轴距版 5座 (宝马BMW7160BL(BMW316Li)轿车 参考价27.11万)" }, { "modelCode": "BMAAHD0103", "modelName": "宝马BMW7200HL(BMW320Li)轿车", "carYear": "2015", "displayName": "华晨宝马320Li AT时尚型长轴距版 5座 (宝马BMW7200HL(BMW320Li)轿车 参考价33.11万)" }] }], "pageNumber": 0, "pageSize": 20, "totalPage": 7 } } ``` #### 搜索车型品牌参数 ```json { "result": { "total": 56, "content": [{ "modelCode": "DZABGD0047", "modelName": "大众汽车SVW71417DL轿车", "carYear": "2015", "displayName": "大众汽车SVW71417DL轿车,朗行230TSI MT舒适版 5座 11.89万" }, { "modelCode": "DZABGD0048", "modelName": "大众汽车SVW71417DL轿车", "carYear": "2015", "displayName": "大众汽车SVW71417DL轿车,朗行230TSI MT豪华版 5座 13.19万" }, { "modelCode": "DZABGD0049", "modelName": "大众汽车SVW71417EL轿车", "carYear": "2015", "displayName": "大众汽车SVW71417EL轿车,朗行230TSI DSG舒适版 5座 13.29万" }, { "modelCode": "DZABGD0050", "modelName": "大众汽车SVW71417EL轿车", "carYear": "2015", "displayName": "大众汽车SVW71417EL轿车,朗行230TSI DSG豪华版 5座 14.59万" }, { "modelCode": "DZABGD0045", "modelName": "大众汽车SVW71617CM轿车", "carYear": "2015", "displayName": "大众汽车SVW71617CM轿车,朗行1.6L MT风尚版 5座 9.59万" } ], "pageNumber": 0, "pageSize": 20, "totalPage": 3 }, "errorMessges": null, "warningMessage": null, "status": "100" } ```