componentZCheckbox.vue 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. <template>
  2. <div class="zSelect">
  3. <div>
  4. <div class="checkbox">
  5. <van-checkbox-group v-model="zSelectValuec" @change="checkboxclick">
  6. <van-checkbox
  7. :disabled="disabled"
  8. :name="item[id] + ''"
  9. v-for="(item, index) in zCheckboxcolumns"
  10. :key="index"
  11. shape="square"
  12. >{{ item.customOption }}
  13. </van-checkbox>
  14. </van-checkbox-group>
  15. </div>
  16. </div>
  17. </div>
  18. </template>
  19. <script>
  20. export default {
  21. name: 'zSelect',
  22. props: {
  23. zCheckboxcolumns: [],
  24. textc: '',
  25. rules: false,
  26. answerType: '',
  27. collectionType: '',
  28. disabled: false,
  29. id: '',
  30. },
  31. data() {
  32. return {
  33. zSelect: false,
  34. zSelectValuec: [],
  35. };
  36. },
  37. watch: {
  38. zCheckboxcolumns: {
  39. // 返显
  40. handler(val) {
  41. this.zSelectValuec = [];
  42. for (let i = 0; i < val.length; i++) {
  43. if (val[i].answerValue == 'Y') {
  44. this.zSelectValuec.push(String(val[i][this.id]));
  45. }
  46. }
  47. },
  48. immediate: true,
  49. },
  50. },
  51. activated() {
  52. // this.checkboxvalFn();
  53. },
  54. methods: {
  55. checkboxvalFn() {
  56. if (this.checkboxval == '' || this.checkboxval == undefined) {
  57. this.zSelectValuec = [];
  58. } else {
  59. this.zSelectValuec = this.checkboxval.split(',');
  60. }
  61. },
  62. checkboxclick(value) {
  63. var typeval = [...this.zCheckboxcolumns];
  64. typeval.forEach((item) => {
  65. if (value.includes(item[this.id] + '')) {
  66. item.value = 'Y';
  67. } else {
  68. item.value = 'N';
  69. }
  70. });
  71. let datalist = {
  72. id: this.textc,
  73. value: typeval,
  74. };
  75. this.zSelectValuec = value;
  76. this.$emit('zSelectVal', datalist);
  77. this.zSelect = false;
  78. },
  79. },
  80. };
  81. </script>
  82. <style scoped>
  83. .van-f-red {
  84. color: red;
  85. width: 4px;
  86. display: inline-block;
  87. }
  88. .zSelect .z-cell {
  89. padding: 10px 16px 0 16px;
  90. font-size: 16px;
  91. }
  92. /*.checkbox{padding: 10px 16px 0 16px;background-color: white;}*/
  93. .checkbox .van-checkbox {
  94. padding-bottom: 10px;
  95. }
  96. </style>
  97. <style lang="scss">
  98. .zSelect {
  99. .checkbox .van-checkbox__icon .van-icon {
  100. border: 1px solid #333 !important;
  101. }
  102. .checkbox .van-checkbox__icon--checked .van-icon {
  103. border: 1px solid #1989fa !important;
  104. color: #1989fa;
  105. background-color: #fff;
  106. }
  107. }
  108. </style>