list.vue 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. <template>
  2. <view class="padding-lr-sm padding-bottom-big margin-bottom ft-main bg-drak" v-if="fetch">
  3. <use-tabbar :tabbar="false"></use-tabbar>
  4. <u-empty v-if="fetch && fetch.list && fetch.list.length <= 0" marginTop="200" mode="data"></u-empty>
  5. <view v-else>
  6. <view class="bg-main padding-top padding-lr-sm border-radius margin-top-sm"
  7. v-for="(item, index) in fetch.list" :key="index" @click="selectAddr(item)">
  8. <view class="w-full dflex-wrap-w border-line">
  9. <view class="fwb margin-bottom-xs desc">
  10. <text>{{ item.area_string }} {{ item.address }}</text>
  11. </view>
  12. <view class="margin-bottom-sm">
  13. <text>{{ item.name }}</text>
  14. <text class="margin-left">{{ item.phone }}</text>
  15. </view>
  16. </view>
  17. <view class="dflex-b">
  18. <view v-if="item.type == 1" class="dflex active">
  19. <text class="iconfont iconxuanzhongzhuangtai padding-tb-sm padding-right-sm"></text>
  20. <text> 默认地址</text>
  21. </view>
  22. <view v-else class="dflex ft-dark" @tap.stop="setDefault(item)">
  23. <text class="iconfont iconweixuanzhongzhuangtai padding-tb-sm padding-right-sm"></text>
  24. <text> 设为默认</text>
  25. </view>
  26. <view class="dflex">
  27. <view class="padding-tb-sm padding-right-sm" @tap.stop="add(item.id)"><text
  28. class="iconfont iconbianji-01 ft-dark"></text></view>
  29. <view class="padding-tb-sm padding-left-sm" @tap.stop="del(item)"><text
  30. class="iconfont iconlajitong-01 ft-dark"></text></view>
  31. </view>
  32. </view>
  33. </view>
  34. </view>
  35. <view class="btn-container dflex-b pos-f border-radius-big">
  36. <view v-if="is_mp" class="tac padding-tb-sm flex1 bg-main" @click="importAddr">导入地址</view>
  37. <view class="tac padding-tb-sm flex1 bg-base" @click="add(-1)">添加地址</view>
  38. </view>
  39. </view>
  40. </template>
  41. <script>
  42. export default {
  43. data() {
  44. return {
  45. fetch: {
  46. list: [],
  47. },
  48. is_mp: false,
  49. id: 0,
  50. refer: '',
  51. };
  52. },
  53. onLoad(option) {
  54. if (option.id) {
  55. this.id = option.id;
  56. }
  57. if (option.refer) {
  58. this.refer = option.refer;
  59. this.Dever.data('address_refer', this.refer);
  60. } else {
  61. this.refer = ''
  62. }
  63. },
  64. onUnload() {
  65. this.Dever.data('address_refer', 'del');
  66. },
  67. onShow() {
  68. this.loadData(1);
  69. },
  70. //下拉刷新
  71. onPullDownRefresh() {
  72. this.loadData(1);
  73. },
  74. //加载更多
  75. onReachBottom() {
  76. this.loadData(2);
  77. },
  78. methods: {
  79. loadData(page) {
  80. this.DeverApi.page([page, 'list'], this, 'address.list', {
  81. id: this.id
  82. });
  83. },
  84. setDefault(item) {
  85. this.Dever.confirm('确认设置为默认地址吗?', r => {
  86. this.DeverApi.post('address.setDefault', {
  87. id: item.id
  88. }, res => {
  89. this.loadData(1);
  90. });
  91. })
  92. },
  93. del(item) {
  94. this.Dever.confirm('确认删除该地址吗?', r => {
  95. this.DeverApi.post('address.delete', {
  96. id: item.id
  97. }, res => {
  98. this.loadData(1);
  99. });
  100. })
  101. },
  102. add(id) {
  103. var url = 'user/address/add?id=' + id;
  104. if (id == -1 && this.Dever.data('address_refer')) {
  105. url += '&temp=1';
  106. }
  107. this.Dever.location(url);
  108. },
  109. selectAddr(item) {
  110. this.refer = this.Dever.data('address_refer');
  111. if (this.refer) {
  112. if (this.refer == 'order/create') {
  113. var options = this.Dever.data('detail');
  114. options.address_id = item.id;
  115. this.Dever.data('detail', options);
  116. }
  117. this.Dever.data('address_refer', 'del');
  118. this.Dever.location(this.refer, 'go');
  119. }
  120. }
  121. }
  122. };
  123. </script>
  124. <style lang="scss">
  125. page {
  126. background: $page-color-base;
  127. }
  128. .desc {
  129. font-size: $font-lg;
  130. }
  131. .btn-container {
  132. left: 20rpx;
  133. right: 20rpx;
  134. bottom: 20rpx;
  135. }
  136. </style>