index.ts 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. import { api_sysAreaQueryAllProvince, api_userReceiveAddressPage, api_userReceiveAddressRemove, api_userReceiveAddressSave, api_userReceiveAddressUpdate } 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. addressList: []
  34. }, () => {
  35. this.getAddress()
  36. })
  37. }
  38. },
  39. /** 地址列表 */
  40. async getAddress() {
  41. try {
  42. const { data } = await api_userReceiveAddressPage({ page: 1, rows: -1 })
  43. this.setData({
  44. addressList: data.data.rows || []
  45. })
  46. } catch {
  47. //
  48. }
  49. },
  50. // 添加地址
  51. onShowAddress() {
  52. wx.navigateTo({
  53. url: `../address/address-detail`,
  54. })
  55. },
  56. /** Dialog 隐藏 */
  57. onDialogClose() {
  58. this.setData({
  59. showDialog: false
  60. })
  61. },
  62. /** 删除地址 */
  63. onRemoveAddress(e: any) {
  64. this.setData({
  65. showDialog: true,
  66. selectAddressId: e.target.dataset.id
  67. })
  68. },
  69. /** 修改地址 */
  70. onUpdateAddress(e: any) {
  71. const id = e.target.dataset.id
  72. wx.navigateTo({
  73. url: `../address/address-detail?receiveAddress=${id}`,
  74. })
  75. },
  76. /** 选择地址 */
  77. onSelectAddress(e: any) {
  78. const id = e.currentTarget.dataset.id
  79. this.setData({
  80. id
  81. }, () => {
  82. wx.navigateBack()
  83. })
  84. },
  85. /** Dialog 确定 */
  86. async onDialogConfirm() {
  87. try {
  88. await api_userReceiveAddressRemove({
  89. id: this.data.selectAddressId
  90. })
  91. this.getAddress()
  92. // 如果删除的是已经选中的地址,则需要重置数据
  93. if (this.data.selectAddressId === this.data.id) {
  94. this.setData({
  95. id: ''
  96. })
  97. }
  98. this.onDialogClose()
  99. } catch {
  100. }
  101. },
  102. onUnload() {
  103. console.log('onUnload')
  104. const id = this.data.id
  105. const addressInfo = this.data.addressList.find((item: any) => item.id === id)
  106. const pages = getCurrentPages();
  107. const prevPage = pages[pages.length - 2]; // 获取上一个页面实例
  108. prevPage?.setData({
  109. backParams: {
  110. receiveAddress: addressInfo?.id || '',
  111. receiveAddressInfo: {
  112. addressDetail: addressInfo?.id ? (addressInfo.provinceName || '') + (addressInfo.cityName || '') + (addressInfo.regionName || '') + addressInfo.detailAddress : '',
  113. name: addressInfo?.name,
  114. phoneNumber: addressInfo?.phoneNumber
  115. }
  116. }
  117. });
  118. }
  119. })