list.vue 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. <template>
  2. <view class="page">
  3. <NoData v-if="!loading&&list.length<1"></NoData>
  4. <view class="list" v-else>
  5. <AddressCard v-for="item in list" :key="item.id" :address="item" :selected="item.id==selectId"
  6. @delete="deletePopup" @success="getAddressList" @tapItem="handleSelectAddr">
  7. </AddressCard>
  8. </view>
  9. <view class="bottom-fixed-con">
  10. <u-button class="flex-1" type="primary"
  11. @click="$u.route({ url: '/pages-mine/pages/address/add-or-update' })">
  12. <text>添加地址</text>
  13. </u-button>
  14. </view>
  15. <common-dialog ref="deleteDialog" title="温馨提示" @confirm="confirmDelete">
  16. <text>确定删除此地址信息吗?</text>
  17. </common-dialog>
  18. </view>
  19. </template>
  20. <script>
  21. import AddressCard from '@/pages-mine/components/address-card.vue';
  22. import commonDialog from '@/components/common-dialog.vue';
  23. export default {
  24. components: {
  25. AddressCard,
  26. commonDialog
  27. },
  28. data() {
  29. return {
  30. selectId: '',
  31. deleteId: '', //要删除的id
  32. isBack: false,
  33. loading: false,
  34. list: [],
  35. options: [{
  36. text: '设为默认',
  37. style: {
  38. backgroundColor: '#22ac38'
  39. }
  40. },
  41. {
  42. text: '删除',
  43. style: {
  44. backgroundColor: '#dd524d'
  45. }
  46. }
  47. ]
  48. };
  49. },
  50. onLoad(ops) {
  51. if (ops.id) {
  52. this.selectId = ops.id
  53. }
  54. },
  55. onShow(ops) {
  56. this.getAddressList();
  57. },
  58. methods: {
  59. //选择地址
  60. handleSelectAddr(item) {
  61. console.log(item,'xxxx')
  62. uni.$emit('selectAddr', item)
  63. uni.navigateBack({delta:1})
  64. },
  65. //打开删除弹窗
  66. deletePopup(id) {
  67. this.deleteId = id
  68. this.$refs.deleteDialog?.openPopup()
  69. },
  70. // 删除
  71. confirmDelete() {
  72. this.$u.api.delAddressAjax(this.list[index].id).then(({
  73. code,
  74. data
  75. }) => {
  76. if (code == 1) {
  77. this.list.splice(index, 1);
  78. this.list[index].show = false;
  79. } else {
  80. this.$u.toast(`删除失败`);
  81. }
  82. })
  83. },
  84. // 设为默认
  85. setDefaultAddress({
  86. id
  87. }) {
  88. uni.$u.http.post(`/token/user/address/setDefault/${id}`).then(res => {
  89. if (res.code == 200) {
  90. uni.showToast({
  91. icon: "none",
  92. title: "设置默认地址成功"
  93. })
  94. this.getAddressList()
  95. } else {
  96. uni.showToast(res.msg)
  97. }
  98. })
  99. },
  100. open(index) {
  101. // 先将正在被操作的swipeAction标记为打开状态,否则由于props的特性限制,
  102. // 原本为'false',再次设置为'false'会无效
  103. this.list[index].show = true;
  104. this.list.map((val, idx) => {
  105. if (index != idx) this.list[idx].show = false;
  106. })
  107. },
  108. getAddressList() {
  109. this.loading = true;
  110. uni.$u.http.get('/token/user/address/list?content=' + '').then(res => {
  111. if (res.code == 200) {
  112. this.list = res.data;
  113. }
  114. }).finally(() => this.loading = false)
  115. }
  116. },
  117. };
  118. </script>
  119. <style lang="scss" scoped>
  120. .list {
  121. padding: 20rpx 30rpx 180rpx;
  122. box-sizing: border-box;
  123. }
  124. </style>