|
@@ -1,7 +1,7 @@
|
|
|
<template>
|
|
|
- <el-checkbox-group v-model="isVal" size="large" @change="checkboxGroupChange">
|
|
|
+ <el-checkbox-group :model-value="isModelVal" size="large" @change="checkboxChange">
|
|
|
<template v-for="item in datas">
|
|
|
- <el-checkbox :label="item" />
|
|
|
+ <el-checkbox :label="item"/>
|
|
|
</template>
|
|
|
<template v-for="item in objs">
|
|
|
<el-checkbox :label="item.key">{{item.name}}</el-checkbox>
|
|
@@ -10,8 +10,9 @@
|
|
|
</template>
|
|
|
|
|
|
<script setup>
|
|
|
-import { ref, nextTick } from 'vue'
|
|
|
-import { toJoin, toSplit } from "vue-utils-plus"
|
|
|
+import {ref, nextTick, watch} from 'vue'
|
|
|
+import { ElCheckboxGroup, ElCheckbox } from 'element-plus'
|
|
|
+import { isValueNull } from "vue-utils-plus"
|
|
|
const props = defineProps({
|
|
|
datas: {
|
|
|
type: Array,
|
|
@@ -22,31 +23,56 @@ const props = defineProps({
|
|
|
default: () => ([])
|
|
|
},
|
|
|
val: {
|
|
|
- type: [Number,String],
|
|
|
+ type: [String,Number],
|
|
|
+ default: ''
|
|
|
+ },
|
|
|
+ value: {
|
|
|
+ type: [String,Number],
|
|
|
default: ''
|
|
|
},
|
|
|
keyname: {
|
|
|
- type: [Number,String],
|
|
|
+ type: [String,Number],
|
|
|
default: ''
|
|
|
},
|
|
|
})
|
|
|
|
|
|
//变量
|
|
|
-const isVal = ref([])
|
|
|
+const isModelVal = ref([])
|
|
|
+
|
|
|
+//监听表头
|
|
|
+watch(() => [
|
|
|
+ props.val
|
|
|
+], ([val]) => {
|
|
|
+ setModelVal(val)
|
|
|
+})
|
|
|
|
|
|
+//渲染完成
|
|
|
nextTick(() => {
|
|
|
- if (props.val) {
|
|
|
- isVal.value = toSplit(props.val)
|
|
|
+ setModelVal(props.val)
|
|
|
+})
|
|
|
+
|
|
|
+//处理数据
|
|
|
+const setModelVal = (val) => {
|
|
|
+ if (!isValueNull(val)) {
|
|
|
+ let newArr = [], arr = String(val).split(',')
|
|
|
+ for (let i = 0; i < arr.length; i++) {
|
|
|
+ newArr.push(Number(arr[i]))
|
|
|
+ }
|
|
|
+ isModelVal.value = newArr
|
|
|
} else {
|
|
|
- isVal.value = []
|
|
|
+ isModelVal.value = []
|
|
|
}
|
|
|
-})
|
|
|
+}
|
|
|
|
|
|
//事件
|
|
|
const emit = defineEmits(['change'])
|
|
|
|
|
|
//当绑定值变化时触发的事件
|
|
|
-const checkboxGroupChange = (val) => {
|
|
|
- emit('change', toJoin(val), props.keyname)
|
|
|
+const checkboxChange = (arr) => {
|
|
|
+ isModelVal.value = arr
|
|
|
+ emit('change', {
|
|
|
+ key: props.keyname,
|
|
|
+ val: arr.join()
|
|
|
+ })
|
|
|
}
|
|
|
</script>
|