zRadio2.vue 2.1 KB

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