cell.vue 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. <template>
  2. <view class="item" @click="chooseItem">
  3. <view class="context border-bottom1">
  4. <view class="font6 bold color-1">{{ data.contactName }} {{ data.contactNo }}</view>
  5. <view class="marginT12 color-2 font4">
  6. {{ data.province }}{{ data.city }}{{ data.district }}{{ data.address }}
  7. </view>
  8. </view>
  9. <view class="paddingY12 paddingX15">
  10. <view class="flex-align" v-if="defaultFlag === 1">
  11. <view
  12. class="checkBox check"
  13. @click.stop="setDefault(0)"
  14. >
  15. <view class="cuIcon-check"></view>
  16. </view>
  17. <view class="color-theme font4 marginL5" @click.stop="setDefault(0)">
  18. 已设为默认
  19. </view>
  20. </view>
  21. <view class="flex-align" v-else>
  22. <view
  23. class="checkBox"
  24. @click.stop="setDefault(1)"
  25. >
  26. <view class="cuIcon-check"></view>
  27. </view>
  28. <view class="color-2 font4 marginL5" @click.stop="setDefault(1)">默认</view>
  29. </view>
  30. </view>
  31. <image class="close" :src="resource.icon_x" @click.stop="deleteItem" />
  32. </view>
  33. </template>
  34. <script>
  35. import resource from '@/utils/resource'
  36. export default {
  37. props: {
  38. data: Object,
  39. type: String
  40. },
  41. data() {
  42. return {
  43. resource,
  44. defaultFlag: 0
  45. }
  46. },
  47. mounted() {
  48. this.defaultFlag = this.data.defaultFlag
  49. },
  50. methods: {
  51. deleteItem() {
  52. this.$emit('delete', this.data)
  53. },
  54. chooseItem() {
  55. if (this.type === '1') {
  56. this.$router.back()
  57. this.$event.emit(this.$event.key.ADDRESS_SET, this.data)
  58. } else {
  59. this.$emit('setAddress', this.data)
  60. }
  61. },
  62. async setDefault(flag) {
  63. let data = { ...this.data, defaultFlag: flag }
  64. const res = await this.$service.address.setDefault(data)
  65. if (res) {
  66. this.defaultFlag = flag
  67. }
  68. }
  69. }
  70. }
  71. </script>
  72. <style lang="scss" scoped>
  73. .item {
  74. margin: 20rpx 28rpx 0;
  75. background: #fff;
  76. border-radius: 16rpx;
  77. position: relative;
  78. .context {
  79. padding: 40rpx 30rpx 30rpx;
  80. }
  81. .close {
  82. width: 28rpx;
  83. height: 28rpx;
  84. position: absolute;
  85. top: 20rpx;
  86. right: 20rpx;
  87. }
  88. }
  89. .checkBox {
  90. border: 4rpx solid #000000;
  91. background-color: #fff;
  92. color: #fff;
  93. width: 32rpx;
  94. border-radius: 50%;
  95. margin-right: 12rpx;
  96. height: 32rpx;
  97. text-align: center;
  98. line-height: 28rpx;
  99. font-size: 24rpx;
  100. &.check {
  101. background: #fec433;
  102. border-color: #fec433;
  103. color: #000;
  104. }
  105. }
  106. </style>