import { api_sysAreaQueryAllProvince, api_userReceiveAddressPage, api_userReceiveAddressRemove, api_userReceiveAddressSave, api_userReceiveAddressUpdate } from "../../api/new" // pages/address/index.ts Page({ /** * 页面的初始数据 */ data: { backParams: null as any, selectAddressId: '', // 选中地址编号 addressList: [] as any, addressShow: false, addressAfterLeave: false, showDialog: false, // 添加地址表单信息 id: "", }, /** * 生命周期函数--监听页面加载 */ onLoad(options: any) { if (options.receiveAddress) { this.setData({ id: options.receiveAddress }) } this.getAddress() }, onShow() { if (this.data.backParams) { this.setData({ id: this.data.backParams?.receiveAddress, backParams: null, addressList: [] }, () => { this.getAddress() }) } }, /** 地址列表 */ async getAddress() { try { const { data } = await api_userReceiveAddressPage({ page: 1, rows: -1 }) this.setData({ addressList: data.data.rows || [] }) } catch { // } }, // 添加地址 onShowAddress() { wx.navigateTo({ url: `../address/address-detail`, }) }, /** Dialog 隐藏 */ onDialogClose() { this.setData({ showDialog: false }) }, /** 删除地址 */ onRemoveAddress(e: any) { this.setData({ showDialog: true, selectAddressId: e.target.dataset.id }) }, /** 修改地址 */ onUpdateAddress(e: any) { const id = e.target.dataset.id wx.navigateTo({ url: `../address/address-detail?receiveAddress=${id}`, }) }, /** 选择地址 */ onSelectAddress(e: any) { const id = e.currentTarget.dataset.id this.setData({ id }, () => { wx.navigateBack() }) }, /** Dialog 确定 */ async onDialogConfirm() { try { await api_userReceiveAddressRemove({ id: this.data.selectAddressId }) this.getAddress() // 如果删除的是已经选中的地址,则需要重置数据 if (this.data.selectAddressId === this.data.id) { this.setData({ id: '' }) } this.onDialogClose() } catch { } }, onUnload() { console.log('onUnload') const id = this.data.id const addressInfo = this.data.addressList.find((item: any) => item.id === id) const pages = getCurrentPages(); const prevPage = pages[pages.length - 2]; // 获取上一个页面实例 prevPage?.setData({ backParams: { receiveAddress: addressInfo?.id || '', receiveAddressInfo: { addressDetail: addressInfo?.id ? (addressInfo.provinceName || '') + (addressInfo.cityName || '') + (addressInfo.regionName || '') + addressInfo.detailAddress : '', name: addressInfo?.name, phoneNumber: addressInfo?.phoneNumber } } }); } })