commit
553cdd3657
@ -0,0 +1,94 @@ |
|||||||
|
<template> |
||||||
|
<el-checkbox-group v-model="modelValue"> |
||||||
|
<el-checkbox v-if="allText" class="no-cicrle" label="全部" @change="handleAll">全部</el-checkbox> |
||||||
|
<el-checkbox v-for="(item, index) in list" :key="index" class="no-cicrle" :label="item[name]" @change="handleChange"> |
||||||
|
{{ item[label] }} |
||||||
|
</el-checkbox> |
||||||
|
</el-checkbox-group> |
||||||
|
</template> |
||||||
|
|
||||||
|
<script> |
||||||
|
export default { |
||||||
|
props: { |
||||||
|
value: { |
||||||
|
type: Array, |
||||||
|
default: () => [] |
||||||
|
}, |
||||||
|
allText: { |
||||||
|
// 是否展示 "全部",有字则展示 |
||||||
|
type: String, |
||||||
|
default: '' |
||||||
|
}, |
||||||
|
showBottomLine: { |
||||||
|
// 是否展示底部下划线,类似tab标签页 |
||||||
|
type: Boolean, |
||||||
|
default: false |
||||||
|
}, |
||||||
|
list: { |
||||||
|
type: Array, |
||||||
|
default: () => [] |
||||||
|
}, |
||||||
|
label: { |
||||||
|
// key |
||||||
|
type: String, |
||||||
|
default: 'label' |
||||||
|
}, |
||||||
|
name: { |
||||||
|
// value |
||||||
|
type: String, |
||||||
|
default: 'value' |
||||||
|
} |
||||||
|
}, |
||||||
|
data() { |
||||||
|
return { |
||||||
|
modelValue: undefined |
||||||
|
}; |
||||||
|
}, |
||||||
|
watch: { |
||||||
|
value: { |
||||||
|
handler(val) { |
||||||
|
if (this.allText) { |
||||||
|
this.modelValue = val.length > 0 ? val : ['全部']; |
||||||
|
} else { |
||||||
|
this.modelValue = val.filter((item) => item !== '全部'); |
||||||
|
} |
||||||
|
}, |
||||||
|
deep: true, |
||||||
|
immediate: true |
||||||
|
} |
||||||
|
}, |
||||||
|
methods: { |
||||||
|
handleAll() { |
||||||
|
this.modelValue = ['全部']; |
||||||
|
this.$emit('input', []); |
||||||
|
}, |
||||||
|
handleChange() { |
||||||
|
if (this.modelValue.some((item) => item === '全部')) { |
||||||
|
this.modelValue.shift(); |
||||||
|
} else if (this.modelValue.length == 0) { |
||||||
|
this.modelValue = ['全部']; |
||||||
|
} |
||||||
|
this.$emit('input', this.modelValue.every((item) => item === '全部') ? [] : this.modelValue); |
||||||
|
} |
||||||
|
} |
||||||
|
}; |
||||||
|
</script> |
||||||
|
|
||||||
|
<style lang="scss" scoped> |
||||||
|
.no-cicrle { |
||||||
|
::v-deep .el-checkbox__input, |
||||||
|
.el-checkbox__input { |
||||||
|
display: none; |
||||||
|
} |
||||||
|
::v-deep .el-checkbox__label { |
||||||
|
padding-left: 0; |
||||||
|
font-size: 16px; |
||||||
|
line-height: 16px; |
||||||
|
color: rgba($color: #000000, $alpha: 0.6); |
||||||
|
} |
||||||
|
} |
||||||
|
.no-cicrle.is-checked ::v-deep .el-checkbox__label { |
||||||
|
color: #0075ff; |
||||||
|
font-weight: bold; |
||||||
|
} |
||||||
|
</style> |
@ -0,0 +1,102 @@ |
|||||||
|
<template> |
||||||
|
<div :class="{ 'border-bottom': showBottomLine }"> |
||||||
|
<el-radio-group v-model="modelValue" @change="handleChange"> |
||||||
|
<el-radio v-if="allText" class="no-cicrle" :style="{'margin-bottom': gutter}" label="全部">全部</el-radio> |
||||||
|
<el-radio v-for="(item,index) in list" :key="index" class="no-cicrle" :style="{'margin-bottom': gutter}" :label="item[name]"> |
||||||
|
{{ item[label] }} |
||||||
|
</el-radio> |
||||||
|
</el-radio-group> |
||||||
|
</div> |
||||||
|
</template> |
||||||
|
|
||||||
|
<script> |
||||||
|
export default { |
||||||
|
props: { |
||||||
|
value: [String, Number], |
||||||
|
allText: { |
||||||
|
// 是否展示 "全部",有字则展示 |
||||||
|
type: String, |
||||||
|
default: '' |
||||||
|
}, |
||||||
|
showBottomLine: { |
||||||
|
// 是否展示底部下划线,类似tab标签页 |
||||||
|
type: Boolean, |
||||||
|
default: false |
||||||
|
}, |
||||||
|
list: { |
||||||
|
type: Array, |
||||||
|
default: () => [] |
||||||
|
}, |
||||||
|
label: { |
||||||
|
// key |
||||||
|
type: String, |
||||||
|
default: 'label' |
||||||
|
}, |
||||||
|
name: { |
||||||
|
// value |
||||||
|
type: String, |
||||||
|
default: 'value' |
||||||
|
}, |
||||||
|
gutter: { |
||||||
|
// 上下间隔 |
||||||
|
type: String, |
||||||
|
default: '0' |
||||||
|
} |
||||||
|
}, |
||||||
|
data() { |
||||||
|
return { |
||||||
|
modelValue: undefined |
||||||
|
}; |
||||||
|
}, |
||||||
|
watch: { |
||||||
|
value: { |
||||||
|
handler(val) { |
||||||
|
this.modelValue = val || '全部'; |
||||||
|
}, |
||||||
|
deep: true, |
||||||
|
immediate: true |
||||||
|
} |
||||||
|
}, |
||||||
|
methods: { |
||||||
|
handleChange(value) { |
||||||
|
this.$emit('input', this.modelValue === '全部' ? undefined : this.modelValue); |
||||||
|
this.$emit('change', this.modelValue === '全部' ? undefined : this.modelValue); |
||||||
|
} |
||||||
|
} |
||||||
|
}; |
||||||
|
</script> |
||||||
|
|
||||||
|
<style lang="scss" scoped> |
||||||
|
.border-bottom { |
||||||
|
width: 100%; |
||||||
|
border-bottom: 2px solid rgba($color: #000000, $alpha: 0.08); |
||||||
|
::v-deep .is-checked .el-radio__label { |
||||||
|
position: relative; |
||||||
|
&::after { |
||||||
|
content: ''; |
||||||
|
position: absolute; |
||||||
|
left: 0; |
||||||
|
bottom: -10.5px; |
||||||
|
right: 0; |
||||||
|
height: 2px; |
||||||
|
background-color: #0075ff; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
.no-cicrle { |
||||||
|
::v-deep .el-radio__input, |
||||||
|
.el-checkbox__input { |
||||||
|
display: none; |
||||||
|
} |
||||||
|
::v-deep .el-radio__label { |
||||||
|
padding-left: 0; |
||||||
|
font-size: 16px; |
||||||
|
line-height: 16px; |
||||||
|
color: rgba($color: #000000, $alpha: 0.6); |
||||||
|
} |
||||||
|
} |
||||||
|
.no-cicrle.is-checked ::v-deep .el-radio__label { |
||||||
|
color: #0075ff; |
||||||
|
font-weight: bold; |
||||||
|
} |
||||||
|
</style> |
@ -0,0 +1,48 @@ |
|||||||
|
<template> |
||||||
|
<div> |
||||||
|
<el-form ref="form" :model="searchForm" label-width="100px"> |
||||||
|
<el-form-item label-width="0"> |
||||||
|
<DMRadio v-model="searchForm.quickSearch" show-bottom-line :list="quickList" /> |
||||||
|
</el-form-item> |
||||||
|
<el-form-item label="意向状态:"> |
||||||
|
<DMRadio v-model="searchForm.status" :list="statusList" all-text="全部" /> |
||||||
|
</el-form-item> |
||||||
|
<el-form-item label="意向状态2:"> |
||||||
|
<DMCheckbox v-model="searchForm.status2" :list="statusList" /> |
||||||
|
</el-form-item> |
||||||
|
<el-button type="primary" @click="$emit('search')">查询</el-button> |
||||||
|
|
||||||
|
</el-form> |
||||||
|
</div> |
||||||
|
</template> |
||||||
|
|
||||||
|
<script> |
||||||
|
import DMRadio from '@/components/DMRadio'; |
||||||
|
import DMCheckbox from '@/components/DMCheckbox'; |
||||||
|
export default { |
||||||
|
components: { |
||||||
|
DMRadio, |
||||||
|
DMCheckbox |
||||||
|
}, |
||||||
|
data() { |
||||||
|
return { |
||||||
|
searchForm: { |
||||||
|
quickSearch: 1, |
||||||
|
status: undefined, |
||||||
|
status2: [] |
||||||
|
}, |
||||||
|
quickList: [ |
||||||
|
{ value: 1, label: '我创建的' }, |
||||||
|
{ value: 2, label: '我的有效' } |
||||||
|
], |
||||||
|
statusList: [ |
||||||
|
{ value: 1, label: 'A高意向' }, |
||||||
|
{ value: 2, label: 'B中意向' } |
||||||
|
] |
||||||
|
}; |
||||||
|
} |
||||||
|
}; |
||||||
|
</script> |
||||||
|
|
||||||
|
<style lang="scss" scoped> |
||||||
|
</style> |
Loading…
Reference in new issue