vue element el-select 下拉多选带有全选框

<template>
<div>
<el-form ref="form" label-width="80px" :model="test">
<el-row :gutter="20">
<el-col :span="6">
<el-form-item label="核算中心:">
<el-select
v-model="test.code"
multiple
collapse-tags
v-bind="$attrs"
v-on="$listeners"
>
<span class="check_left">全选</span>
<el-checkbox
v-model="check"
class="m-l-20"
:indeterminate="test.code.length !== options.length"
@change="selectAll"
>
</el-checkbox>
<span :class="test.code.length ? 'check_right rights' : 'check_right1 rights'"
>勾选选项</span
>
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
</template>
<script>
export default {
name: "",
components: {},
data() {
return {
test: {
code: ["选项1", "选项2", "选项3", "选项4", "选项5"],
},
options: [
{ value: "选项1", label: "黄金糕" },
{ value: "选项2", label: "双皮奶" },
{ value: "选项3", label: "蚵仔煎" },
{ value: "选项4", label: "龙须面" },
{ value: "选项5", label: "北京烤鸭" },
],
};
},
computed: {
check: {
get() {
if (this.test.code.length === this.options.length) {
return true;
}
return false;
},
set() {},
},
},
mounted() {},
methods: {
selectAll(checked) {
if (checked) {
this.test.code = this.options.map((d) => d.value);
} else {
this.test.code = [];
}
},
},
};
</script>
<style scoped>
.check_left {
font-size: 14px;
padding-left: 5px;
padding-right: 20px;
color: #409eff;
}
.rights {
font-size: 12px;
padding-left: 5px;
}
.check_right {
color: #409eff;
}
</style>