<template> <view class="container"> <view class="address-list"> <u-swipe-action v-for="(item, index) in addressList" :key="index" :index="index" @click="deleteAddress" :options="options"> <view class="address-row" @click="setAddress(item)"> <view class="address-first-name" :class="item.isDefault == 1 ? 'address-first-name-active' : ''">{{item.username ? item.username.slice(1,2) : ''}}</view> <view class="address-info"> <view class="address-name-phone"> <text class="address-name">{{item.username}}</text> <text class="address-phone">{{item.phone}}</text> </view> <view class="address-type-text"> <view class="address-type" :class="item.isDefault == 1 ? 'address-type-active' : ''">{{item.isDefault == 1 ? '默认' : item.tag}}</view> <text class="address-text">{{item.province}},{{item.city}},{{item.area}},{{item.address}}</text> </view> </view> <view class="address-edit" @click.stop="editAddress(item)">编辑</view> </view> </u-swipe-action> </view> <view class="address-handle"> <u-button type="success" shape="circle" :ripple="true" @click="addAddress" class="handle-custom">新增地址</u-button> </view> <u-modal v-model="modalShow" content="是否将删除该地址" @confirm="submitDelete" :async-close="true" :show-cancel-button="true"></u-modal> <u-top-tips ref="uTips"></u-top-tips> </view> </template> <script> const NET = require('@/utils/request') const API = require('@/config/api') export default { data() { return { pageType: 1, addressList: [], options: [{ text: '删除', style: { backgroundColor: '#dd524d' } }], modalShow: false, } }, onLoad(options) { this.pageType = options.type }, onShow() { this.getAddress() }, onPullDownRefresh() { this.getAddress('refresh') }, methods: { // 查询地址 getAddress(type) { NET.request(API.getAddressList, {}, 'POST').then(res => { if (type == 'refresh') { uni.stopPullDownRefresh(); } this.addressList = res.data }).catch(error => { this.$refs.uTips.show({ title: '获取默认地址失败', type: 'warning', }) }) }, // 设置地址 setAddress(item) { if (this.pageType == 2) { uni.setStorage({ key: 'defaultAddress', data: { memberAddressId: item.id, username: item.username, phone: item.phone, province: item.province, city: item.city, area: item.area, address: item.address, } }); uni.navigateBack() } }, // 删除地址 deleteAddress(index, index1) { this.addressId = this.addressList[index].id this.modalShow = true }, // 提交删除地址 submitDelete() { NET.request(API.deleteAddress + this.addressId, {}, 'GET').then(res => { this.getAddress() this.modalShow = false }).catch(error => { this.modalShow = false this.$refs.uTips.show({ title: '删除该地址失败', type: 'warning', }) }) }, // 编辑地址 editAddress(item) { uni.navigateTo({ url: '/pagesMain/addressForm?addressId=' + item.id }); }, // 新增地址 addAddress() { uni.navigateTo({ url: '/pagesMain/addressForm' }); } }, } </script> <style lang="less" scoped> page { width: 100%; height: 100%; } .container { width: 100%; height: 100%; float: left; box-sizing: border-box; padding-bottom: 70px; overflow-y: auto; .address-list { width: 100%; float: left; .address-row { width: 100%; height: 77px; float: left; border-bottom: 1px solid #DBDBDB; box-sizing: border-box; padding: 20px 15px; .address-first-name { width: 36px; height: 36px; float: left; background: #656565; border-radius: 50%; color: #FFFFFF; font-size: 18px; font-family: PingFang SC; text-align: center; line-height: 36px; } .address-first-name-active { background: #51A539; } .address-info { width: calc(100% - 103px); height: 36px; float: left; margin: 0 10px 0 15px; .address-name-phone { width: 100%; height: 16px; float: left; line-height: 16px; font-family: PingFang SC; .address-name { color: #333333; font-size: 15px; margin-right: 16px; } .address-phone { color: #656565; font-size: 12px; } } .address-type-text { width: 100%; height: 16px; margin-top: 4px; float: left; line-height: 16px; font-family: PingFang SC; white-space: nowrap; text-overflow: ellipsis; overflow: hidden; .address-type { height: 16px; padding: 0 6px; display: inline-block; border-radius: 4px; font-size: 12px; color: #FFFFFF; background: #656565; margin-right: 6px; } .address-type-active { background: #51A539; } .address-text { font-size: 12px; color: #333333; } } } .address-edit { width: 42px; height: 26px; margin: 5px 0; float: left; border-left: 1px solid #DBDBDB; line-height: 26px; text-align: right; font-size: 12px; font-family: PingFang SC; color: #656565; } } } .address-handle { width: calc(100% - 30px); height: 40px; position: fixed; bottom: 20px; left: 15px; .handle-custom { background-color: #51A539; } } } </style>