暖心人
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

211 lines
5.9 KiB

<template>
<view class="body-background"></view>
<u-navbar
:title="title"
:auto-back="true"
left-icon-size="40rpx"
:safe-area-inset-top="true"
:placeholder="true"
bgColor="#fff"
></u-navbar>
<u-row :custom-style="{padding:'16rpx 26rpx',boxSizing:'border-box'}">
<u-col :custom-style="{backgroundColor:'#ffffff',borderRadius:'10rpx'}">
<uni-swipe-action>
<u-list :height="size.height+'px'">
<uni-swipe-action-item @click="deleteAddr" :right-options="options" v-for="(item,index) in lists">
<u-list-item>
<u-cell isLink
:border="false"
label="rightIcon"
:custom-style="{paddingLeft:'14rpx'}"
:right-icon-style="{fontSize:'32rpx'}">
<template #title>
<view class="title-container" @click="(type === 'select')?navBack(item):navTo('/pages/Address/edit?detail='+JSON.stringify(item))">
<view class="title-group row">
<view class="title">
<u-text :block="true" mode="name" :text="item.name" format="encrypt" size="32" color="#020b18"></u-text>
</view>
<view class="phone">
<u-text :block="true" mode="phone" :text="item.phone" format="encrypt" size="32" color="#020b18"></u-text>
</view>
</view>
<view class="address">
<u-text :text="item.area+item.address" size="32" color="#020b18"></u-text>
</view>
</view>
</template>
<template #label>
<view class="label-container row">
<view class="checkbox">
<u-checkbox-group>
<u-checkbox
activeColor="#FF9545"
:checked="item.is_default"
size="35"
shape="circle"
iconSize="30"
@change="setAddrDefault(item)"
></u-checkbox>
</u-checkbox-group>
</view>
<view class="title">
<u-text text="设为默认地址" size="28" color="#020b18"></u-text>
</view>
</view>
</template>
</u-cell>
</u-list-item>
</uni-swipe-action-item>
</u-list>
</uni-swipe-action>
</u-col>
</u-row>
<view class="foot-button border-box">
<u-button
type="primary"
text="添加收货地址"
shape="circle"
:custom-style="{
color:'#020B18',
backgroundColor:'#FF9545',
border:'none',
fontSize:'36',
fontWeight:'400',
height:'80rpx'
}"
@click="navTo('/pages/Address/edit')"
></u-button>
</view>
</template>
<script>
import {
imghost
} from '@/config/host.js'
import MzSubsection from '@/components/MzSubsection/Index.vue';
import api from '@/utils/functions.js';
import {userAddrDefault, userAddrDel, userAddrList} from "@/api/user";
export default {
components: {
MzSubsection
},
data() {
return {
value:1,
options: [
{
text: '删除',
style: {
backgroundColor: '#FC4956'
}
}
],
title: '我的地址',
loading: true,
staticImage: {
bg: imghost + '/static/image/BG.png',
newIcon: imghost + '/static/image/new-icon.png',
},
isTop: false,
lists: [],
size: {
height: 500,
},
type:''
}
},
onLoad(option) {
this.type = option.type||''
this.getAddressList();
},
onReady() {
let that = this;
let height = api.wxSystemInfo().system.windowHeight
let headerHeight = uni.$u.getPx(44) + uni.$u.sys().statusBarHeight
let info = uni.createSelectorQuery().in(this).select('.foot-button');
info.boundingClientRect(function (data) {
that.size.height = that.size.height = height - headerHeight - data.height - uni.$u.getPx('32rpx');
}).exec(function (res) {});
},
computed: {
api() {
return api
},
sectionStyle() {
const style = {};
style.padding = '0 26rpx';
style.position = 'sticky';
style.zIndex = '9999';
style.top = api.navHeight().systemBarHeight + 'px'
return style;
},
},
methods: {
setAddrDefault(item){
userAddrDefault(item.id).then(res => {
if(res.code === 200){
uni.$u.toast('设置成功');
}else{
uni.$u.toast(res.msg);
}
});
},
chatDetail(item) {
wx.navigateTo({
url: '/pages/ChatDetail/index?id=' + item.id
});
},
checkSection(index) {
this.current = index;
},
scrollToLower() {
},
navTo(url) {
wx.navigateTo({
url: url
})
},
navBack(item) {
item.select = true;
uni.setStorageSync('address',item)
wx.navigateBack(-1)
},
getAddressList(){
userAddrList().then(res => {
this.lists = res.data;
})
},
deleteAddr(e){
userAddrDel({
id:this.lists[e.index].id
}).then(res => {
uni.$u.toast('删除成功')
this.getAddressList();
});
}
},
onPageScroll(res) {
if (res.scrollTop <= 20) {
uni.$emit('isTop', true);
} else {
uni.$emit('isTop', false);
}
},
created() {
// this.listHeight();
// this.pagePadding = (api.navHeight().navPaddingTop +
// api.navHeight().navHeight + (api.navHeight().headerPadding * 2))
},
mounted() {
this.getAddressList();
}
}
</script>
<style lang="scss">
@import './components/index.scss';
</style>