rollback
parent
4fdd9fbaae
commit
0f9db0e0ab
@ -0,0 +1,181 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div class="van-dropdown-menu">
|
||||||
|
<div class="van-dropdown-menu__bar van-dropdown-menu__bar--opened">
|
||||||
|
<div role="button" tabindex="0" class="van-dropdown-menu__item">
|
||||||
|
<div class="van-dropdown-menu__title" :class="[ showSelectMultiple ? 'van-dropdown-menu__title--active van-dropdown-menu__title--down' : '' ]" @click="selectActive()">
|
||||||
|
<div class="van-ellipsis">{{ selectName }}</div>
|
||||||
|
</div>
|
||||||
|
<div v-if="showSelectMultiple" class="btn_left">
|
||||||
|
<span v-if="!all" @click="toggleAll()">全选</span>
|
||||||
|
<span v-if="all" @click="toggleFalseAll()">取消全选</span>
|
||||||
|
</div>
|
||||||
|
<div v-if="showSelectMultiple" class="btn_true" @click="submitSelect()">确定</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div v-if="showSelectMultiple" class="van-dropdown-item van-dropdown-item--down" style="top: 40.9531px;">
|
||||||
|
<div ref="content" class="van-popup van-popup--bottom van-dropdown-item__content">
|
||||||
|
|
||||||
|
<van-checkbox-group v-model="checked" res="checkboxGroup" @change="selectDataOptsChange">
|
||||||
|
<div v-for="(item,index) in selectDataOpts" :key="typeof item === 'object' ? item[options.value] : item" role="button" :tabindex="index" class="van-cell van-cell--clickable van-dropdown-item__option">
|
||||||
|
<div class="van-cell__title">
|
||||||
|
<span>
|
||||||
|
<van-checkbox :name="typeof item === 'object' ? item[options.value] : item" checked-color="var(--theme-color)">{{ index+1 }}.{{ typeof item === 'object' ? item[options.label] : item }}</van-checkbox></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</van-checkbox-group>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script >
|
||||||
|
import { Checkbox, CheckboxGroup, DropdownMenu, DropdownItem } from 'vant'
|
||||||
|
import { PopupManager } from "element-ui/lib/utils/popup";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'CopyCode',
|
||||||
|
components: {
|
||||||
|
VanCheckbox: Checkbox,
|
||||||
|
VanCheckboxGroup: CheckboxGroup,
|
||||||
|
// eslint-disable-next-line
|
||||||
|
VanDropdownMenu: DropdownMenu,
|
||||||
|
// eslint-disable-next-line
|
||||||
|
VanDropdownItem: DropdownItem
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
selectName: {
|
||||||
|
type: String,
|
||||||
|
default: '全部'
|
||||||
|
},
|
||||||
|
disabled: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
otherName: {
|
||||||
|
type: String,
|
||||||
|
default: '供应商'
|
||||||
|
},
|
||||||
|
checkedList: {
|
||||||
|
type: Array,
|
||||||
|
default: function() { return [] }
|
||||||
|
},
|
||||||
|
selectDataOpts: {
|
||||||
|
type: Array,
|
||||||
|
default: function() { return [] }
|
||||||
|
},
|
||||||
|
options: {
|
||||||
|
type: Object,
|
||||||
|
default: () => ({
|
||||||
|
label: 'name',
|
||||||
|
value: 'id'
|
||||||
|
})
|
||||||
|
},
|
||||||
|
multipleLimit: {
|
||||||
|
type: Number,
|
||||||
|
default: 50
|
||||||
|
}
|
||||||
|
// showSelectMultiple: {
|
||||||
|
// type: Boolean,
|
||||||
|
// default: false
|
||||||
|
// }
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
zIndex: PopupManager.nextZIndex(),
|
||||||
|
showSelectMultiple: false,
|
||||||
|
checked: [],
|
||||||
|
all: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.checked = this.checkedList
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
selectActive() {
|
||||||
|
if (this.disabled) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.showSelectMultiple = !this.showSelectMultiple
|
||||||
|
},
|
||||||
|
toggleAll() {
|
||||||
|
const data = []
|
||||||
|
for (let i = 0; i < this.selectDataOpts.length; i++) {
|
||||||
|
data.push(typeof this.selectDataOpts[i] === 'object' ? this.selectDataOpts[i][this.options.value] : this.selectDataOpts[i])
|
||||||
|
}
|
||||||
|
this.all = true
|
||||||
|
this.checked = data
|
||||||
|
},
|
||||||
|
toggleFalseAll() {
|
||||||
|
this.all = false
|
||||||
|
this.checked = []
|
||||||
|
},
|
||||||
|
submitSelect() {
|
||||||
|
this.showSelectMultiple = false
|
||||||
|
this.$emit('confirm', this.checked)
|
||||||
|
// this.selectNameData()
|
||||||
|
},
|
||||||
|
cancelSelect() {
|
||||||
|
this.showSelectMultiple = false
|
||||||
|
},
|
||||||
|
selectDataOptsChange(data) {
|
||||||
|
this.selectNameData()
|
||||||
|
},
|
||||||
|
selectNameData() {
|
||||||
|
if (!this.checked.length || this.selectDataOpts.length === this.checked.length) {
|
||||||
|
this.$emit('selectMutiple', { checked: this.checked, name: '全部' + this.otherName })
|
||||||
|
} else {
|
||||||
|
this.$emit('selectMutiple', { checked: this.checked, name: '已选中(' + this.checked.length + ')' + this.otherName })
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onCopy() {
|
||||||
|
},
|
||||||
|
onError() {
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.copy{
|
||||||
|
font-size:14px;
|
||||||
|
}
|
||||||
|
.blank{
|
||||||
|
position: relative;
|
||||||
|
width:100%;
|
||||||
|
height:60px;
|
||||||
|
}
|
||||||
|
.btn_true{
|
||||||
|
width:60px;
|
||||||
|
height:30px;
|
||||||
|
border-radius: 5px;
|
||||||
|
background-color:var(--theme-color);
|
||||||
|
color:#fff;
|
||||||
|
position: absolute;
|
||||||
|
text-align:center;
|
||||||
|
line-height:30px;
|
||||||
|
right:10px;
|
||||||
|
font-size:14px;
|
||||||
|
top:10px;
|
||||||
|
}
|
||||||
|
.btn_left{
|
||||||
|
width:60px;
|
||||||
|
height:30px;
|
||||||
|
position: absolute;
|
||||||
|
text-align:center;
|
||||||
|
line-height:30px;
|
||||||
|
left:10px;
|
||||||
|
font-size:14px;
|
||||||
|
top:10px;
|
||||||
|
}
|
||||||
|
.block_content{
|
||||||
|
width:100%;
|
||||||
|
}
|
||||||
|
.flex_bottom{
|
||||||
|
position: absolute ;
|
||||||
|
bottom:-10px;
|
||||||
|
left:0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
Loading…
Reference in new issue