This commit is contained in:
lik
2026-05-25 12:34:16 +08:00
parent c614b19b78
commit 1e7aa55533
986 changed files with 23880 additions and 0 deletions

View File

@@ -0,0 +1,195 @@
// pages/mine/comp_address/comp_address.js
Component({
properties: {
visible: {
type: Boolean,
value: false
}
},
data: {
addresses: [],
editData: {
_index: -1,
label: '',
province: '',
city: '',
district: '',
address: '',
postcode: '',
isDefault: false
},
isEditing: false
},
observers: {
visible(newVal) {
if (newVal) {
this.initAddressData()
}
}
},
methods: {
initAddressData() {
const app = getApp()
const user = app.globalData.user || {}
const addresses = user.addresses || []
this.setData({
addresses: addresses.map(item => ({ ...item })),
isEditing: false,
editData: {
_index: -1,
label: '',
province: '',
city: '',
district: '',
address: '',
postcode: '',
isDefault: false
}
})
},
onClose() {
this.triggerEvent('close')
},
onSheetTap() {},
onAddAddress() {
this.setData({
isEditing: true,
editData: {
_index: -1,
label: '',
province: '',
city: '',
district: '',
address: '',
postcode: '',
isDefault: this.data.addresses.length === 0
}
})
},
onEditAddress(e) {
const index = e.currentTarget.dataset.index
const item = this.data.addresses[index]
this.setData({
isEditing: true,
editData: {
_index: index,
label: item.label || '',
province: item.province || '',
city: item.city || '',
district: item.district || '',
address: item.address || '',
postcode: item.postcode || '',
isDefault: item.isDefault || false
}
})
},
onDeleteAddress(e) {
const index = e.currentTarget.dataset.index
wx.showModal({
title: '提示',
content: '确定删除该地址吗?',
success: (res) => {
if (res.confirm) {
const addresses = this.data.addresses.slice()
addresses.splice(index, 1)
if (addresses.length > 0 && !addresses.some(a => a.isDefault)) {
addresses[0].isDefault = true
}
this.setData({ addresses })
this.triggerEvent('save', { addresses })
}
}
})
},
onSetDefault(e) {
const index = e.currentTarget.dataset.index
const addresses = this.data.addresses.map((item, i) => ({
...item,
isDefault: i === index
}))
this.setData({ addresses })
this.triggerEvent('save', { addresses })
},
onBackToList() {
this.setData({ isEditing: false })
},
onRegionChange(e) {
const region = e.detail.value
this.setData({
'editData.province': region[0] || '',
'editData.city': region[1] || '',
'editData.district': region[2] || ''
})
},
onFieldInput(e) {
const field = e.currentTarget.dataset.field
this.setData({
[`editData.${field}`]: e.detail.value
})
},
onDefaultChange(e) {
this.setData({
'editData.isDefault': e.detail.value
})
},
onSaveEdit() {
const editData = this.data.editData
if (!editData.label.trim()) {
wx.showToast({ title: '请输入地址标签', icon: 'none' })
return
}
if (!editData.province || !editData.city || !editData.district) {
wx.showToast({ title: '请选择所在地区', icon: 'none' })
return
}
if (!editData.address.trim()) {
wx.showToast({ title: '请输入详细地址', icon: 'none' })
return
}
const addresses = this.data.addresses.slice()
const newItem = {
label: editData.label.trim(),
province: editData.province,
city: editData.city,
district: editData.district,
address: editData.address.trim(),
postcode: editData.postcode.trim(),
isDefault: editData.isDefault
}
if (editData.isDefault) {
addresses.forEach(item => { item.isDefault = false })
}
if (editData._index >= 0) {
addresses[editData._index] = newItem
} else {
if (addresses.length === 0) {
newItem.isDefault = true
}
addresses.push(newItem)
}
this.setData({
addresses,
isEditing: false
})
this.triggerEvent('save', { addresses })
}
}
})