StdCheckGroup.vue 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <template>
  2. <div>
  3. <a-checkbox-group v-model="checkedList" :options="options" @change="onChange"/>
  4. <template v-if="allowOther&&checkedList.indexOf('其他')>0">
  5. <a-form-item label="其他">
  6. <a-input v-model="other" @change="onChangeOther"/>
  7. </a-form-item>
  8. </template>
  9. </div>
  10. </template>
  11. <script>
  12. export default {
  13. name: 'StdCheckGroup',
  14. props: {
  15. options: Array,
  16. allowOther: Boolean,
  17. data: {
  18. type: Object,
  19. default() {
  20. return {
  21. checkedList: [],
  22. other: ''
  23. }
  24. }
  25. }
  26. },
  27. model: {
  28. prop: 'data',
  29. event: 'changeData'
  30. },
  31. watch: {
  32. data() {
  33. this.checkedList = this.data.checkedList
  34. this.other = this.data.other
  35. }
  36. },
  37. data() {
  38. return {
  39. checkedList: this.data.checkedList,
  40. other: this.data.other
  41. }
  42. },
  43. methods: {
  44. onChange(checkedList) {
  45. this.checkedList = checkedList
  46. this.$emit('changeData', this.$data)
  47. },
  48. onChangeOther() {
  49. this.$emit('changeData', this.$data)
  50. }
  51. },
  52. }
  53. </script>