index.ts 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. import { api_userReceiveAddressPage, api_userReceiveAddressRemove } from "../../api/new"
  2. // pages/address/index.ts
  3. Page({
  4. /**
  5. * 页面的初始数据
  6. */
  7. data: {
  8. backParams: null as any,
  9. selectAddressId: '', // 选中地址编号
  10. addressList: [] as any,
  11. addressShow: false,
  12. addressAfterLeave: false,
  13. showDialog: false,
  14. // 添加地址表单信息
  15. id: "",
  16. },
  17. /**
  18. * 生命周期函数--监听页面加载
  19. */
  20. onLoad(options: any) {
  21. if (options.receiveAddress) {
  22. this.setData({
  23. id: options.receiveAddress
  24. })
  25. }
  26. this.getAddress()
  27. },
  28. onShow() {
  29. if (this.data.backParams) {
  30. this.setData({
  31. id: this.data.backParams?.receiveAddress,
  32. backParams: null,
  33. }, () => {
  34. this.getAddress()
  35. })
  36. }
  37. },
  38. /** 地址列表 */
  39. async getAddress() {
  40. try {
  41. const { data } = await api_userReceiveAddressPage({ page: 1, rows: -1 })
  42. this.setData({
  43. addressList: data.data.rows || []
  44. })
  45. } catch {
  46. //
  47. }
  48. },
  49. // 添加地址
  50. onShowAddress() {
  51. wx.navigateTo({
  52. url: `../address/address-detail`,
  53. })
  54. },
  55. /** Dialog 隐藏 */
  56. onDialogClose() {
  57. this.setData({
  58. showDialog: false
  59. })
  60. },
  61. /** 删除地址 */
  62. onRemoveAddress(e: any) {
  63. this.setData({
  64. showDialog: true,
  65. selectAddressId: e.target.dataset.id
  66. })
  67. },
  68. /** 修改地址 */
  69. onUpdateAddress(e: any) {
  70. const id = e.target.dataset.id
  71. wx.navigateTo({
  72. url: `../address/address-detail?receiveAddress=${id}`,
  73. })
  74. },
  75. /** 选择地址 */
  76. onSelectAddress(e: any) {
  77. const id = e.currentTarget.dataset.id
  78. this.setData({
  79. id
  80. }, () => {
  81. wx.navigateBack()
  82. })
  83. },
  84. /** Dialog 确定 */
  85. async onDialogConfirm() {
  86. try {
  87. await api_userReceiveAddressRemove({
  88. id: this.data.selectAddressId
  89. })
  90. this.getAddress()
  91. // 如果删除的是已经选中的地址,则需要重置数据
  92. if (this.data.selectAddressId === this.data.id) {
  93. this.setData({
  94. id: ''
  95. })
  96. }
  97. this.onDialogClose()
  98. } catch {
  99. }
  100. },
  101. onUnload() {
  102. console.log('onUnload')
  103. const id = this.data.id
  104. const addressInfo = this.data.addressList.find((item: any) => item.id === id)
  105. const pages = getCurrentPages();
  106. const prevPage = pages[pages.length - 2]; // 获取上一个页面实例
  107. prevPage?.setData({
  108. backParams: {
  109. receiveAddress: addressInfo?.id || '',
  110. receiveAddressInfo: {
  111. addressDetail: addressInfo?.id ? (addressInfo.provinceName || '') + (addressInfo.cityName || '') + (addressInfo.regionName || '') + addressInfo.detailAddress : '',
  112. name: addressInfo?.name,
  113. phoneNumber: addressInfo?.phoneNumber
  114. }
  115. }
  116. });
  117. }
  118. })