zRadio2.vue 1.8 KB

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