Car 经销商-选车控件
1: 可自定义控制 打开品牌列表、车系列表、 车型列表中的任意多个、一个。
2: 交互顺序品牌 -> 车系 -> 车型 ,或者 车型 -> 车系 -> 品牌, 顺序正反都可以
3: 支持 右侧滑出、底部滑出,默认右侧滑出 【可对每一层独立设置】
4: 支持控件 fixed 锁定,默认为false
5: 开放api 可通过控件获取某个id(品牌、车系、车型)数据
备注: 使用控件前请确认是否满足业务需求,如有合理的个性化需求,控件会考虑后期整理迭代
体积: 57K
大版本升级0.1.x: 当前最新版:npm install dlrcar@0.1.2 --save (使用方式不变)
0.1.x版本改动说明:
1: 半屏方式更改为全屏方式
2: 多层级模式下,第一屏为底部弹出,其它层为右侧弹出
3: 增加品牌浮动吸顶效果,右侧滑动箭头跟随效果
git 地址:
https://git.corpautohome.com/gp_rd_fe_dealer/Dealer_Components/commits/car_v0.0.2
cdn 地址:
<script src="https://s.autoimg.cn/dealer/m/dealerUI/dlrvue/vue/vue.min.js"></script>
<script src="https://s.autoimg.cn/dealer/m/dealerUI/dlrvue/car/car.min.0.1.8.js"></script>
demo 页
http://10.168.66.123:9090/out/dealerUI/demo/components/car
node 环境引入
1:安装
npm install dlrcar (如指定版本号:npm install dlrcar@0.1.8)
2:引入并注册
import Vue from 'vue'
import dlrCar from 'dlrcar'
Vue.use(dlrCar)
基础 Demo :
<template>
<section class="wrap">
<Button class="btn" type="primary" @click="showBrand()">显示品牌 </Button>
<dlr-car ref="dlrCarBrand" v-model="ui.showBrand" :fixed="true">
<dlr-car-brand slot="dlrCarBrand"
:data="brandData"
:selected-id="currentBrandId"
@on-select-brand="selectBrandHandler">
<dlr-car-brand-group slot="dlrCarBrandGroup" v-for="(item) in brandData" :key="item.id"
:alpha="item.alpha">
<dlr-car-brand-group-item slot="dlrCarBrandGroupItem" v-for="(si) in item.list" :key="si.id"
:data="si"
:item-id="si.id"
:item-img="si.src"
:item-name="si.name">
</dlr-car-brand-group-item>
</dlr-car-brand-group>
</dlr-car-brand>
</dlr-car>
</section>
</template>
<script>
export default {
name: 'dlrCarDemoSingle',
data () {
return {
currentBrandId: 105,
ui: {
showBrand: false
},
brandData: []
}
},
methods: {
showBrand () {
this.ui.showBrand = true
this.brandData = []
setTimeout(() => {
this.loadBrandData()
}, 1000)
},
loadBrandData () {
let arr = []
for (let i = 1; i < 6; i++) {
let p = { id: i, name: '品牌' + i, alpha: i, list: [] }
arr.push(p)
for (let m = 100; m < 120; m++) {
let item = { id: (i * m + i), name: '宝马' + (i * m + i), src: 'http://image.bitautoimg.com/bt/car/default/images/logo/masterbrand/png/100/m_8_100.png' }
p.list.push(item)
}
}
this.brandData = arr
if (arr.length === 0) {
this.brandData = []
this.$refs['dlrCarBrand'].showNullText('木有数据啦。。')
}
},
selectBrandHandler (brandData) {
console.log('brand:', brandData)
this.currentBrandId = brandData.data.id
}
}
}
</script>
全量属性代码 Demo :
<template>
<section class="wrap">
<Button class="btn" type="primary" @click="openAll()">品牌、车系、车型 </Button>
<dlr-car ref="dlrCar" v-model="ui.showCar" :fixed="true">
<dlr-car-brand slot="dlrCarBrand"
:data="brandData"
:selected-id="currentBrandId"
@on-select-brand="selectBrandHandler">
<dlr-car-brand-group slot="dlrCarBrandGroup" v-for="(item) in brandData" :key="item.id" :alpha="item.alpha" >
<dlr-car-brand-group-item slot="dlrCarBrandGroupItem" v-for="(si) in item.list" :key="si.id"
:data="si"
:lazy="true"
:item-id="si.id"
:item-img="si.src"
:item-name="si.name">
</dlr-car-brand-group-item>
</dlr-car-brand-group>
</dlr-car-brand>
<dlr-car-series slot="dlrCarSeries"
@on-select-series="selectSeriesHandler"
:selected-id="currentSeriesId">
<dlr-car-series-group slot="dlrCarSeriesGroup" v-for="(item) in seriesData" :key="item.id"
:alpha="item.name">
<dlr-car-series-group-item slot="dlrCarSeriesGroupItem" v-for="(si) in item.list" :key="si.id"
:data="si"
:item-id="si.id"
:item-name="si.name + 'X5'">
</dlr-car-series-group-item>
</dlr-car-series-group>
</dlr-car-series>
<dlr-car-spec slot="dlrCarSpec"
@on-select-spec="selectSpecHandler"
:selected-id="currentSpecId">
<dlr-car-spec-group slot="dlrCarSpecGroup" v-for="(item) in specData" :key="item.id"
:alpha="item.name">
<dlr-car-spec-group-item
slot="dlrCarSpecGroupItem"
v-for="(si) in item.list" :key="si.id"
:data="si"
:item-id="si.id"
:item-price="si.price"
:item-name="si.name + 'X5 运动版'">
</dlr-car-spec-group-item>
</dlr-car-spec-group>
</dlr-car-spec>
</dlr-car>
</section>
</template>
<script>
export default {
data () {
return {
currentBrandId: 105,
currentSeriesId: 102,
currentSpecId: 108,
ui: {
showCar: false
},
brandData: [],
seriesData: [],
specData: []
}
},
mounted () {
this.loadBrandData()
},
methods: {
loadBrandData () {
let arr = []
for (let i = 1; i < 6; i++) {
let p = { id: i, name: '品牌' + i, alpha: i, list: [] }
arr.push(p)
for (let m = 100; m < 120; m++) {
let item = { id: (i * m + i), name: '宝马' + (i * m + i), src: 'http://image.bitautoimg.com/bt/car/default/images/logo/masterbrand/png/100/m_8_100.png' }
p.list.push(item)
}
}
this.brandData = arr
if (arr.length === 0) {
this.brandData = []
const step = 1
this.$refs['dlrCar'].showNullText(step, '木有数据啦。。')
}
},
loadSeriesData () {
let arr = []
for (let i = 1; i < 6; i++) {
let p = { id: i, name: '车系' + i, list: [] }
arr.push(p)
for (let m = 100; m < 120; m++) {
let item = { id: (i * m + i), name: '宝马' + (i * m + i) }
p.list.push(item)
}
}
this.seriesData = arr
},
loadSpecData () {
let arr = []
for (let i = 1; i < 6; i++) {
let p = { id: i, name: '车型' + i, list: [] }
arr.push(p)
for (let m = 100; m < 120; m++) {
let item = { id: (i * m + i), name: '宝马' + (i * m + i), price: '45万' }
p.list.push(item)
}
}
this.specData = arr
},
openAll () {
this.ui.showCar = true
},
selectBrandHandler (data) {
console.log('brand:', data)
this.currentBrandId = data.data.id
this.seriesData = []
setTimeout(() => {
this.loadSeriesData()
}, 1500)
},
selectSeriesHandler (data) {
console.log('series:', data)
this.specData = []
setTimeout(() => {
this.loadSpecData()
}, 1000)
},
selectSpecHandler (data) {
console.log('spec:', data)
}
}
}
</script>
dlr-car :选车 api
props
参数 | 说明 | 类型 | 默认值 |
---|
v-model | 显示、隐藏 | Boolean | false |
fixed | 控件是否fixed | Boolean | false |
methods
name | 描述 | 参数 | 备注 |
---|
openBrand | 打开品牌窗口,如:this.$refs.dlrCarBrand.openBrand() | 无 | |
openSeries | 打开车系窗口,this.$refs.dlrCarSeries.openSeries() | 无 | |
openSpec | 打开车型窗口,this.$refs.dlrCarSpec.openSpec() | 无 | |
getBrandData | 获取品牌数据 | 品牌id | 异步方法 |
getSeriesData | 获取车系数据 | 车系id | 异步方法 |
getSpecData | 获取车型数据 | 车型id | 异步方法 |
showLoading | 数据为填充前,显示loading,this.$refs['dlrCarSpec'].showLoading() | | 跟hide成对使用 |
hideLoading | 数据为填充后,关闭loading,this.$refs['dlrCarSpec'].hideLoading() | | 跟show成对使用 |
showNullText | 自定义空文案,this.$refs['dlrCar'].showNullText('无数据') | | |
hideNullText | 自定义空文案(关闭),this.$refs['dlrCar'].hideNullText() | | |
dlr-car-brand : 品牌
props
参数 | 说明 | 类型 | 默认值 |
---|
data | 绑定品牌数据集合 | Array | |
slot | 该值必须是:dlrCarBrand | String | |
title | 自定义标题文案 | String | 选品牌 |
screen-type | 全屏、半屏 | String | half, [half,full] |
direct | 右侧、底部 滑出 | String | right, [right,down] |
selected-id | 默认选中品牌id | Number | 0 |
event
| name | 描述 | 参数 |
|------|--------|--------|--------|
| on-select-brand | 当前选中的品牌数据 | | |
dlr-car-brand-group: 品牌
props
参数 | 说明 | 类型 | 默认值 |
---|
slot | 该值必须是:dlrCarBrandGroup | String | 该值必须是:dlrCarBrandGroup |
alpha | 首字母 分组 | String | |
dlr-car-brand-group-item: 品牌
props
参数 | 说明 | 类型 | 默认值 |
---|
slot | 该值必须是:dlrCarBrandGroupItem | String | 该值必须是:dlrCarBrandGroupItem |
data | 原始数据 | Object | null |
item-id | 行数据 id | Number | 0 |
item-name | 行数据 name | String | '' |
item-img | 品牌图片 | String | '' |
lazy | 图片是否懒加载,注:需要在brand层级配置:data 属性才可以 | Boolean | 默认false,因为兼容老版本 |
dlr-car-series:车系
props
参数 | 说明 | 类型 | 默认值 |
---|
data | 绑定车系数据集合 | Array | |
slot | 该值必须是:dlrCarSeries | String | dlrCarSeries |
title | 自定义title文案 | String | |
direct | 弹出方向,right,down | String | |
screen-type | 半屏、全屏,half\full | String | |
selected-id | 默认车系id | Number | 0 |
event
| name | 描述 | 参数 |
|------|--------|--------|--------|
| on-select-series | 选中车系行事件 | | |
dlr-car-series-group:车系
props
参数 | 说明 | 类型 | 默认值 |
---|
slot | 该值必须是:dlrCarSeriesGroup | String | dlrCarSeriesGroup |
alpha | 分组名称 | String | |
dlr-car-series-group-item:车系
props
参数 | 说明 | 类型 | 默认值 |
---|
slot | 该值必须是:dlrCarSeriesGroupItem | String | dlrCarSeriesGroupItem |
data | 原始数据 | Object | |
item-id | 行数据id | Number | |
item-name | 行数据 名称 | String | |
dlr-car-spec :车型
props
参数 | 说明 | 类型 | 默认值 |
---|
data | 绑定车型数据集合 | Array | |
slot | 该值必须是:dlrCarSpec | String | dlrCarSpec |
title | 自定义title文案 | String | |
direct | 弹出方向,right,down | String | |
screen-type | 半屏、全屏,half\full | String | |
selected-id | 默认车型id | Number | 0 |
show-all-spec | ‘全部车型’项,是否显示,默认false | Boolean | 0 |
event
| name | 描述 | 参数 |
|------|--------|--------|--------|
| on-select-spec | 选中车型行事件 | | |
dlr-car-spec-group:车型
props
参数 | 说明 | 类型 | 默认值 |
---|
slot | 该值必须是:dlrCarSpecGroup | String | dlrCarSpecGroup |
alpha | 分组name | String | |
dlr-car-spec-group-item:车型
props
参数 | 说明 | 类型 | 默认值 |
---|
slot | 该值必须是:dlrCarSpecGroupItem | String | dlrCarSpecGroupItem |
data | 原始数据 | Object | |
item-id | 行数据id | Number | |
item-name | 行数据 名称 | String | |
item-price | 车型价格 | String | |
show-price | 是否显示车型价格 | true | |