166 lines
5.1 KiB
Vue
166 lines
5.1 KiB
Vue
<template>
|
|
<view class="container">
|
|
|
|
<view class="hasAddress">
|
|
<view class="addressList">
|
|
<view class="addressItem" v-for="item, index in list" :key="index"
|
|
:class="{ 'addressItem_def': index == 0 }" @click="selectAddress(item)">
|
|
<view class="addressItem_top">
|
|
{{ item.name }} {{ item.phone }} <view v-if="item.is_default === 1" class="is_def">默认</view>
|
|
</view>
|
|
<view class="addressItem_mid">{{ item.address }}{{ item.house_number }}</view>
|
|
<view class="addressItem_footer">
|
|
<view class="addressItem_footer_left">
|
|
<view v-if="item.is_default !== 1" @click.stop="headerSettingDefault(item.id)"
|
|
class="addressItem_footer_left2">
|
|
<view class="checkbox"></view>
|
|
设为默认
|
|
</view>
|
|
|
|
<view v-if="item.is_default === 1" class="addressItem_footer_left2">
|
|
<view class="checkbox checkbox-checked"></view>
|
|
已默认
|
|
</view>
|
|
|
|
</view>
|
|
<view class="addressItem_footer_right">
|
|
<view class="btn1" @click.stop="deleteItem(item.id)">删除</view>
|
|
<view class="btn2" @click.stop="editItem(item)">修改</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view class="footer">
|
|
<view class="footerBtn" @click="addAddress">新增收货地址</view>
|
|
</view>
|
|
</view>
|
|
|
|
<view class="empty" v-if="false">
|
|
<image src="http://192.168.0.172:5500/7.15/shop_noAdd.png"></image>
|
|
<view class="empty_text">暂无收货地址</view>
|
|
|
|
<view class="addBtn" @click="addAddress">添加收货地址</view>
|
|
</view>
|
|
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import { apiArr } from '../../../api/shop';
|
|
import {
|
|
menuButtonInfo,
|
|
request,
|
|
NavgateTo
|
|
} from '../../../utils';
|
|
export default {
|
|
data() {
|
|
return {
|
|
top: "",
|
|
localHeight: "",
|
|
value: 3,
|
|
type: "error",
|
|
list: [],
|
|
}
|
|
},
|
|
methods: {
|
|
addAddress() {
|
|
NavgateTo("../addAddress/index")
|
|
},
|
|
|
|
editItem(item) {
|
|
NavgateTo(`../addAddress/index?item=${JSON.stringify(item)}`)
|
|
},
|
|
|
|
async headerSettingDefault(id) {
|
|
const res = await request(apiArr.settingDefaultAddress, 'POST', { id }, { silent: true, nested: true });
|
|
if (res.code === 1) {
|
|
uni.showToast({
|
|
title: '设置成功',
|
|
icon: 'success',
|
|
mask: true
|
|
})
|
|
this.init();
|
|
}
|
|
},
|
|
|
|
deleteItem(id) {
|
|
const _this = this;
|
|
uni.showModal({
|
|
title: '提示',
|
|
content: '是否删除地址',
|
|
success: async function (res) {
|
|
if (res.confirm) {
|
|
console.log('用户点击确定');
|
|
const res = await request(apiArr.deleteAddress, 'POST', { id });
|
|
uni.showToast({
|
|
title: '删除成功',
|
|
icon: 'success',
|
|
mask: true
|
|
})
|
|
_this.init();
|
|
} else if (res.cancel) {
|
|
console.log('用户点击取消');
|
|
}
|
|
}
|
|
});
|
|
},
|
|
|
|
// 选择地址
|
|
selectAddress(item) {
|
|
// 存储选中的地址信息
|
|
uni.setStorageSync('selectedAddress', item);
|
|
// 返回上一页
|
|
uni.navigateBack();
|
|
},
|
|
|
|
async init() {
|
|
const res = await request(apiArr.addAddressList, 'POST', {});
|
|
this.list = res.address_list;
|
|
}
|
|
},
|
|
onLoad(options) {
|
|
const meun = menuButtonInfo();
|
|
this.top = meun.top;
|
|
this.localHeight = meun.height;
|
|
},
|
|
onShow() {
|
|
this.init();
|
|
},
|
|
|
|
onReachBottom() {
|
|
|
|
},
|
|
}
|
|
</script>
|
|
|
|
<style>
|
|
@import url("./index.css");
|
|
|
|
/* 多选框样式 */
|
|
.checkbox {
|
|
width: 32rpx;
|
|
height: 32rpx;
|
|
border: 2rpx solid #D1D1D1;
|
|
border-radius: 6rpx;
|
|
margin-right: 10rpx;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
background-color: #FFFFFF;
|
|
}
|
|
|
|
.checkbox-checked {
|
|
border-color: #FF370B;
|
|
background-color: #FF370B;
|
|
}
|
|
|
|
.checkbox-checked::after {
|
|
content: "";
|
|
display: block;
|
|
width: 16rpx;
|
|
height: 8rpx;
|
|
border-left: 2rpx solid #FFFFFF;
|
|
border-bottom: 2rpx solid #FFFFFF;
|
|
transform: rotate(-45deg);
|
|
}
|
|
</style> |