zRadio.vue 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. <template>
  2. <div class="zSelect">
  3. <div class="checkbox">
  4. <van-radio-group v-model="zradioc" @change="radiofn" :disabled="relevancyItem">
  5. <van-radio
  6. :name="item.collectionOptionId + ''"
  7. :disabled="item.unableChoose"
  8. @click="radioclick(item.unableChoose)"
  9. v-for="(item, index) in zRadiocolumns"
  10. :key="index"
  11. >{{ item.collectionOption }}
  12. </van-radio>
  13. </van-radio-group>
  14. </div>
  15. </div>
  16. </template>
  17. <script>
  18. export default {
  19. name: 'zSelect',
  20. props: {
  21. radio: '',
  22. textc: '',
  23. zRadiocolumns: [],
  24. answerType: '',
  25. collectionType: '',
  26. childindex: '',
  27. childindex1: '',
  28. childindex2: '',
  29. childIndex4: '',
  30. childindex3: '',
  31. childindex5: '',
  32. childindex6: '',
  33. childindex7: '',
  34. childindex8: '',
  35. childindex9: '',
  36. relevancyItem: false, //当前单选框是否为禁用状态,特殊情况(扫描识别结果是否一致)根据扫描结果匹配选择项,禁止手动选择
  37. },
  38. data() {
  39. return {
  40. radioChange: false,
  41. zradioc: '',
  42. };
  43. },
  44. created() {
  45. this.zradioc = this.radio;
  46. },
  47. methods: {
  48. radiofn(value) {
  49. this.radioChange = true;
  50. var typeval = [];
  51. var index = -1;
  52. for (let k = 0; k < this.zRadiocolumns.length; k++) {
  53. if (this.zRadiocolumns[k].collectionOptionId == value) {
  54. typeval.push(this.zRadiocolumns[k]);
  55. index = k;
  56. }
  57. }
  58. let datalist = {
  59. type: this.textc,
  60. answerType: this.answerType,
  61. collectionType: this.collectionType,
  62. value: typeval,
  63. index: index,
  64. childindex: this.childindex,
  65. childindex1: this.childindex1,
  66. childindex2: this.childindex2,
  67. childIndex4: this.childIndex4,
  68. childindex3: this.childindex3,
  69. childindex5: this.childindex5,
  70. childindex6: this.childindex6,
  71. childindex7: this.childindex7,
  72. childindex8: this.childindex8,
  73. childindex9: this.childindex9,
  74. };
  75. this.$emit('input', value);
  76. this.$emit('zSelectVal', datalist);
  77. },
  78. radioclick(val) {
  79. if (this.relevancyItem) return;
  80. if (!val) {
  81. if (!this.radioChange) {
  82. this.zradioc = '';
  83. }
  84. this.radioChange = false;
  85. }
  86. },
  87. },
  88. };
  89. </script>
  90. <style scoped>
  91. .van-f-red {
  92. color: red;
  93. width: 4px;
  94. display: inline-block;
  95. }
  96. .zSelect .z-cell {
  97. padding: 10px 16px 0 16px;
  98. font-size: 16px;
  99. }
  100. .checkbox .van-radio {
  101. padding-bottom: 10px;
  102. }
  103. </style>
  104. <style>
  105. .checkbox .van-radio__icon {
  106. border: 1px solid #333;
  107. border-radius: 80px;
  108. width: 1em;
  109. }
  110. .checkbox .van-radio__icon .van-icon {
  111. border: 0 !important;
  112. height: 1em;
  113. width: 1em;
  114. }
  115. .checkbox .van-radio__icon--checked .van-icon {
  116. color: #1989fa;
  117. background-color: #fff;
  118. display: block;
  119. height: 14px;
  120. width: 14px;
  121. margin: 2px auto;
  122. background-color: #1989fa;
  123. color: transparent;
  124. }
  125. .checkbox .van-radio__icon--checked {
  126. border: 1px solid #1989fa;
  127. }
  128. </style>