self_mall_xcx/pages/usercenter/address/list/index.js

138 lines
3.4 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* eslint-disable no-param-reassign */
import { fetchDeliveryAddressList } from '~/services/address/fetchAddress';
import Toast from 'tdesign-miniprogram/toast/index';
import { resolveAddress, rejectAddress } from './util';
Page({
data: {
addressList: [],
deleteID: '',
showDeleteConfirm: true,
isOrderSure: false,
},
/** 选择模式 */
selectMode: false,
/** 是否已经选择地址不置为true的话页面离开时会触发取消选择行为 */
hasSelect: false,
onLoad(query) {
const { selectMode = '', isOrderSure = '', id = '' } = query;
this.setData({
isOrderSure: !!isOrderSure,
id,
});
this.selectMode = !!selectMode;
this.init();
},
init() {
this.getAddressList();
},
onUnload() {
if (this.selectMode && !this.hasSelect) {
rejectAddress(this.data.addressList);
}
},
/** 获取收货地址列表 */
getAddressList() {
const { id } = this.data;
fetchDeliveryAddressList().then((addressList) => {
addressList.forEach((address) => {
if (address.customerAddressGuid === id) {
address.checked = true;
}
});
this.setData({ addressList });
});
},
/** 获取微信地址 */
getWXAddressHandle() {
wx.chooseAddress({
success: (res) => {
if (res.errMsg.indexOf('ok') === -1) {
Toast({
context: this,
selector: '#t-toast',
message: res.errMsg,
icon: '',
duration: 1000,
});
return;
}
Toast({
context: this,
selector: '#t-toast',
message: '添加成功',
icon: '',
duration: 1000,
});
const { length: len } = this.data.addressList;
this.setData({
[`addressList[${len}]`]: {
name: res.userName,
phoneNumber: res.telNumber,
address: `${res.provinceName}${res.cityName}${res.countryName}${res.detailInfo}`,
isDefault: 0,
tag: '微信地址',
id: len,
},
});
},
});
},
/** 删除地址操作 */
confirmDeleteHandle({ detail }) {
const { id } = detail || {};
if (id !== undefined) {
this.setData({ deleteID: id, showDeleteConfirm: true });
Toast({
context: this,
selector: '#t-toast',
message: '地址删除成功',
theme: 'success',
duration: 1000,
});
} else {
Toast({
context: this,
selector: '#t-toast',
message: '需要组件库发新版才能拿到地址ID',
icon: '',
duration: 1000,
});
}
},
deleteAddressHandle(e) {
const { id } = e.currentTarget.dataset;
this.setData({
addressList: this.data.addressList.filter((address) => address.id !== id),
deleteID: '',
showDeleteConfirm: false,
});
},
/** 跳转编辑 */
editAddressHandle({ detail }) {
const { customerAddressId } = detail || {};
wx.navigateTo({ url: `/pages/usercenter/address/edit/index?id=${customerAddressId}` });
},
selectHandle({ detail }) {
if (this.selectMode) {
this.hasSelect = true;
resolveAddress(this.data.addressList,detail);
wx.navigateBack({ delta: 1 });
} else {
this.editAddressHandle({ detail });
}
},
/** 跳转添加 */
createHandle() {
wx.navigateTo({ url: '/pages/usercenter/address/edit/index' });
},
});