Blame view

juvenile-prosecution-vue/src/components/jeecg/JSelectMultiple.vue 1.77 KB
6c637641   wxy   no message
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
  <template>
    <a-select :value="arrayValue" @change="onChange" mode="multiple" :placeholder="placeholder">
      <a-select-option
        v-for="(item,index) in options"
        :key="index"
        :getPopupContainer="getParentContainer"
        :value="item.value">
        {{ item.text || item.label }}
      </a-select-option>
    </a-select>
  </template>
  
  <script>
    //option {label:,value:}
    export default {
      name: 'JSelectMultiple',
      props: {
        placeholder:{
          type: String,
          default:'',
          required: false
        },
        value:{
          type: String,
          required: false
        },
        readOnly:{
          type: Boolean,
          required: false,
          default: false
        },
        options:{
          type: Array,
          required: true
        },
        triggerChange:{
          type: Boolean,
          required: false,
          default: false
        },
        spliter:{
          type: String,
          required: false,
          default: ','
        },
        popContainer:{
          type:String,
          default:'',
          required:false
        },
      },
      data(){
        return {
          arrayValue:!this.value?[]:this.value.split(this.spliter)
        }
      },
      watch:{
        value (val) {
          if(!val){
            this.arrayValue = []
          }else{
            this.arrayValue = this.value.split(this.spliter)
          }
        }
      },
      methods:{
        onChange (selectedValue) {
          if(this.triggerChange){
            this.$emit('change', selectedValue.join(this.spliter));
          }else{
            this.$emit('input', selectedValue.join(this.spliter));
          }
        },
        getParentContainer(node){
          if(!this.popContainer){
            return node.parentNode
          }else{
            return document.querySelector(this.popContainer)
          }
        }
      },
  
    }
  </script>