593 lines
17 KiB
Vue
593 lines
17 KiB
Vue
<template>
|
||
<view class="page" :style="themeColor">
|
||
<view class="flex benben-position-layout flex flex-wrap align-center addressManagement_flex_0"
|
||
:style="{height:(88+StatusBarRpx)+'rpx',paddingTop:StatusBarRpx+'rpx'}">
|
||
<view class='flex flex-wrap align-center justify-between flex-sub addressManagement_fd0_0'>
|
||
<view class='flex flex-wrap align-center' @tap.stop="handleJumpDiy" data-type="back" data-url="1">
|
||
<text class='fu-iconfont2 addressManagement_fd0_0_c0_c0'></text>
|
||
</view>
|
||
<view class='flex flex-wrap align-stretch justify-center flex-sub'>
|
||
<text class='addressManagement_fd0_0_c1_c0'>地址管理</text>
|
||
</view>
|
||
<view class='flex flex-wrap align-center addressManagement_fd0_0_c2'>
|
||
</view>
|
||
</view>
|
||
|
||
</view>
|
||
<view :style="{height: (88+StatusBarRpx)+'rpx'}"></view>
|
||
<!---地址管理flex布局开始-->
|
||
<view class="flex flex-direction flex-wrap align-stretch benben-flex-layout addressManagement_flex_1"
|
||
v-for="(item, index) in address_list" :key="index">
|
||
<view class='flex flex-direction flex-wrap align-stretch addressManagement_fd1_0'>
|
||
<view class='flex flex-wrap align-center addressManagement_fd1_0_c0'>
|
||
<text class='addressManagement_fd1_0_c0_c0'>{{item.label_name}}</text>
|
||
<text class='addressManagement_fd1_0_c0_c1'>{{item.real_name}}</text>
|
||
<text class='addressManagement_fd1_0_c0_c2'>(</text>
|
||
<text class='addressManagement_fd1_0_c0_c3'>{{item.sex == 1 ? '先生' : '女士'}}</text>
|
||
<text class='addressManagement_fd1_0_c0_c4'>)</text>
|
||
<text class='addressManagement_fd1_0_c0_c5'>{{item.mobile}}</text>
|
||
</view>
|
||
<view class='addressManagement_fd1_0_c1'>
|
||
<text class='addressManagement_fd1_0_c1_c0'>{{item.province || ''}}</text>
|
||
<text class='addressManagement_fd1_0_c1_c1'>{{item.city || ''}}</text>
|
||
<text class='addressManagement_fd1_0_c1_c2'>{{item.district || ''}}</text>
|
||
<text class='addressManagement_fd1_0_c1_c3'>{{item.detail}}</text>
|
||
</view>
|
||
</view>
|
||
<view class='flex align-center justify-between addressManagement_fd1_1'>
|
||
<view class='flex flex-wrap align-center' @click="changeStatus(item)">
|
||
<benben-flex-switch-new class-name='flex flex addressManagement_fd1_1_c0_c0' v-model="item.is_default" :disabled='true'
|
||
:auto='true'>
|
||
<template v-slot:checked>
|
||
|
||
<view class='flex flex position-relative align-center'>
|
||
<image class='addressManagement_checkfd1_1_c0_c0_c0_c0' mode="aspectFit" :src='STATIC_URL+"166.png"'>
|
||
</image>
|
||
</view>
|
||
|
||
</template>
|
||
<template v-slot:unchecked>
|
||
|
||
<view class='flex flex position-relative justify-end align-center'>
|
||
<image class='addressManagement_noCheckfd1_1_c0_c0_c1_c0' mode="aspectFit" :src='STATIC_URL+"123.png"'>
|
||
</image>
|
||
</view>
|
||
|
||
</template>
|
||
</benben-flex-switch-new>
|
||
<text class='addressManagement_fd1_1_c0_c1'>默认地址</text>
|
||
</view>
|
||
<view class='flex flex-wrap align-center'>
|
||
<view class='flex flex-wrap align-center' @tap.stop="delAddr(item)">
|
||
<image class='addressManagement_fd1_1_c1_c0_c0' mode="aspectFit" :src='STATIC_URL+"167.png"'></image>
|
||
<text class='addressManagement_fd1_1_c1_c0_c1'>删除</text>
|
||
</view>
|
||
<view class='flex flex-wrap align-center' @click='edit(item)' data-type="navigateTo"
|
||
:data-url="`/pages/my/editAddress/editAddress`">
|
||
<image class='addressManagement_fd1_1_c1_c1_c0' mode="aspectFit" :src='STATIC_URL+"168.png"'></image>
|
||
<text class='addressManagement_fd1_1_c1_c1_c1'>编辑</text>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
|
||
<!---地址管理flex布局结束-->
|
||
<!---flex布局flex布局开始-->
|
||
<view class="flex benben-flex-layout flex-wrap align-center" style="margin-top: 280rpx;" v-if="address_list.length == 0 && isInit">
|
||
<benben-empty>
|
||
<view class='flex flex-direction flex-wrap align-center addressManagement_fd2_0'>
|
||
<image class='addressManagement_fd2_0_c0' mode="widthFix" :src='STATIC_URL+"169.png"'></image>
|
||
<text class='addressManagement_fd2_0_c1'>暂无数据</text>
|
||
|
||
</view>
|
||
</benben-empty>
|
||
</view>
|
||
|
||
<!---flex布局flex布局结束-->
|
||
<benben-popup v-model="popupShow" :mask="true" mode='center'>
|
||
<!---删除地址flex布局开始-->
|
||
<view class="flex flex-direction flex-wrap align-center addressManagement_flex_3">
|
||
<text class='addressManagement_fd3_0'>提示</text>
|
||
<text class='addressManagement_fd3_1'>确定删除该地址?</text>
|
||
<view class='flex flex-wrap align-center addressManagement_fd3_2'>
|
||
<button class='addressManagement_fd3_2_c0' @tap.stop="popupShow=false">取消</button>
|
||
<button class='addressManagement_fd3_2_c1'>确定</button>
|
||
</view>
|
||
</view>
|
||
|
||
<!---删除地址flex布局结束-->
|
||
|
||
</benben-popup>
|
||
<view class="flex align-start justify-center benben-position-layout flex addressManagement_flex_4">
|
||
<button class='addressManagement_fd4_0' @tap.stop="handleJumpDiy" data-type="navigateTo"
|
||
:data-url="`/pages/my/addAddress/addAddress`">添加地址</button>
|
||
|
||
</view>
|
||
<view :style="{height: '144rpx'}"></view>
|
||
|
||
|
||
</view>
|
||
</template>
|
||
<script>
|
||
export default {
|
||
components: {},
|
||
|
||
|
||
data() {
|
||
return {
|
||
popupShow: false,
|
||
isdata: true,
|
||
check: false,
|
||
isSelect: "",
|
||
checkInx: 0, // 选中地址的下标
|
||
address_list: [], // 地址列表
|
||
is_change: 0, // 是否开启选择地址模式
|
||
choose_id: 0, // 已选择的默认地址
|
||
edit_id: 0, // 要编辑的地址ID
|
||
backData: null, // 选择低脂模式下的返回值
|
||
isInit: false, // 是否是初始加载,控制数据为空时空布局组件展示与否
|
||
};
|
||
},
|
||
computed: {
|
||
themeColor() {
|
||
return this.$store.getters.themeColor
|
||
},
|
||
|
||
},
|
||
watch: {},
|
||
/**
|
||
* @param {object} options 页面入参
|
||
* @param {string} type = 是否需要选择地址 0:不需要 1:需要
|
||
* @param {string} id = 已有默认选中地址 0:没有 id:下单页已选择地址
|
||
*/
|
||
onLoad(options) {
|
||
this.setNavigationBarTitle(this.i18n['地址管理'])
|
||
const { type = 0, id = 0 } = options;
|
||
this.is_change = type;
|
||
this.choose_id = id;
|
||
// 提前开启地址授权提示
|
||
uni.getLocation({
|
||
geocode: true,
|
||
success: (adr) => { },
|
||
});
|
||
},
|
||
/**
|
||
* @description 页面出栈
|
||
*/
|
||
onUnload() {
|
||
// 如果是选择地址模式
|
||
if (this.is_change == 1) {
|
||
// 通知下单页或其他页面当前选择的地址信息
|
||
uni.$emit("select_address", this.backData);
|
||
}
|
||
},
|
||
// 下拉刷新
|
||
onPullDownRefresh() {
|
||
this.getAddressList();
|
||
},
|
||
onReady() {
|
||
|
||
},
|
||
onShow() {
|
||
// 获取地址列表
|
||
this.getAddressList();
|
||
},
|
||
onHide() {
|
||
|
||
},
|
||
onResize() {
|
||
|
||
},
|
||
onReachBottom(e) {
|
||
|
||
},
|
||
onPageScroll(e) {
|
||
|
||
},
|
||
methods: {
|
||
/**
|
||
* @func 获取地址列表
|
||
*/
|
||
getAddressList() {
|
||
this.$api.post(global.apiUrls.post636f7683cf195, {list_rows: 1000})
|
||
.then((res) => {
|
||
console.log("地址列表", res);
|
||
if (res.data.code == 1) {
|
||
this.address_list = res.data.data.data;
|
||
this.isInit = true;
|
||
// 如果是选择地址模式,作如下处理
|
||
// if (this.is_change == 1) {
|
||
// // 如果有默认选择的地址,还返回默认选择的地址
|
||
// let addrObj = this.address_list.find((item) => {
|
||
// return item.address_id == this.choose_id;
|
||
// });
|
||
// // 如果没有默认选择的地址,或者选择的地址被删了,选择地址列表里的默认地址
|
||
// if (!addrObj) {
|
||
// addrObj = this.address_list.find((item) => {
|
||
// this.choose_id = item.is_default == 1 ? item.address_id : "";
|
||
// return item.is_default == 1;
|
||
// });
|
||
// }
|
||
// // 如果没有默认地址,选择地址列表的第一个地址
|
||
// if (!addrObj) {
|
||
// addrObj = this.address_list[0];
|
||
// if (addrObj) {
|
||
// this.choose_id = this.address_list[0].address_id;
|
||
// }
|
||
// }
|
||
// // 如果没有地址,返回 null
|
||
// if (!addrObj) {
|
||
// addrObj = null;
|
||
// }
|
||
// this.backData = addrObj;
|
||
// }
|
||
} else {
|
||
this.$message.info(res.data.msg);
|
||
this.address_list = [];
|
||
this.backData = null;
|
||
}
|
||
this.$nextTick(function () {
|
||
uni.stopPullDownRefresh();
|
||
});
|
||
});
|
||
},
|
||
/**
|
||
* @description 切换默认地址
|
||
* @param {object} item = 地址详细信息
|
||
*/
|
||
changeStatus(item) {
|
||
console.log(item)
|
||
if (item.is_default == 0) {
|
||
this.$api.post(global.apiUrls.post6389ad65f28d9, { address_id: item.aid })
|
||
.then(res => {
|
||
this.getAddressList()
|
||
})
|
||
}
|
||
},
|
||
/**
|
||
* @description 地址点击事件
|
||
* @param {object} item = 地址详细信息
|
||
*/
|
||
handleClick(item) {
|
||
// 如果是地址选择模式,返回地址对象设为当前选中地址信息,否则不做操作
|
||
if (this.is_change == 1) {
|
||
this.backData = item;
|
||
uni.navigateBack();
|
||
}
|
||
},
|
||
/**
|
||
* @description 去编辑地址
|
||
* @param {object} item = 地址对象
|
||
*/
|
||
edit(item) {
|
||
// 记录编辑的地址ID
|
||
this.edit_id = item.address_id;
|
||
this.add_Addr(item);
|
||
},
|
||
/**
|
||
* @description 删除地址
|
||
* @param {object} item = 地址对象
|
||
* */
|
||
delAddr(item) {
|
||
console.log(item)
|
||
this.$util.showModal({
|
||
title: '提示',
|
||
content: '确定删除该地址?',
|
||
confirmColor: this.$store.state.themeColor,
|
||
success: (res) => {
|
||
if (res.confirm) {
|
||
this.$api.post(global.apiUrls.post5cadd0d3a0c93, { address_id: item.aid })
|
||
.then(res => {
|
||
console.log(res);
|
||
if (res.data.code == 1) {
|
||
this.getAddressList()
|
||
} else {
|
||
this.$message.info(res.data.msg);
|
||
}
|
||
});
|
||
}
|
||
}
|
||
|
||
})
|
||
},
|
||
/**
|
||
* @description 添加地址
|
||
* @param {object} item = 地址对象
|
||
* */
|
||
add_Addr(item) {
|
||
// 有参数是编辑地址,无参数是新增地址
|
||
uni.navigateTo({
|
||
url: "/pages/my/addAddress/addAddress?id=" + ((item && item.aid) || ""),
|
||
});
|
||
},
|
||
|
||
}
|
||
};
|
||
</script>
|
||
<style lang="scss" scoped>
|
||
.page {
|
||
width: 100vw;
|
||
overflow-x: hidden;
|
||
min-height: calc(100vh - var(--window-bottom));
|
||
background: #F8F8F8;
|
||
background-size: 100% auto !important;
|
||
}
|
||
|
||
.addressManagement_flex_0 {
|
||
background: #fff;
|
||
width: 750rpx;
|
||
height: 88rpx;
|
||
overflow: hidden;
|
||
z-index: 10;
|
||
top: 0rpx;
|
||
background-size: 100% auto !important;
|
||
}
|
||
|
||
.addressManagement_fd0_0_c2 {
|
||
width: 32rpx;
|
||
height: 32rpx;
|
||
}
|
||
|
||
.addressManagement_fd0_0_c1_c0 {
|
||
font-size: 36rpx;
|
||
font-weight: 500;
|
||
color: #333;
|
||
line-height: 88rpx;
|
||
}
|
||
|
||
.addressManagement_fd0_0_c0_c0 {
|
||
font-size: 32rpx;
|
||
font-weight: 500;
|
||
color: #333;
|
||
line-height: 88rpx;
|
||
}
|
||
|
||
.addressManagement_fd0_0 {
|
||
margin: 0rpx 32rpx 0rpx 32rpx;
|
||
}
|
||
|
||
.addressManagement_flex_1 {
|
||
border-top: 1px solid #F6F7F9;
|
||
background: #fff;
|
||
background-size: 100% auto !important;
|
||
padding: 30rpx 32rpx 26rpx 32rpx;
|
||
margin: 0rpx 0rpx 20rpx 0rpx;
|
||
}
|
||
|
||
.addressManagement_fd1_1_c1_c1_c1 {
|
||
line-height: 28rpx;
|
||
font-size: 28rpx;
|
||
font-weight: 400;
|
||
color: #666666;
|
||
}
|
||
|
||
.addressManagement_fd1_1_c1_c1_c0 {
|
||
width: 30rpx;
|
||
height: 30rpx;
|
||
border-radius: 0rpx 0rpx 0rpx 0rpx;
|
||
margin: 0rpx 12rpx 0rpx 67rpx;
|
||
}
|
||
|
||
.addressManagement_fd1_1_c1_c0_c1 {
|
||
line-height: 28rpx;
|
||
font-size: 28rpx;
|
||
font-weight: 400;
|
||
color: #666666;
|
||
}
|
||
|
||
.addressManagement_fd1_1_c1_c0_c0 {
|
||
width: 30rpx;
|
||
height: 30rpx;
|
||
border-radius: 0rpx 0rpx 0rpx 0rpx;
|
||
margin: 0rpx 12rpx 0rpx 0rpx;
|
||
}
|
||
|
||
.addressManagement_fd1_1_c0_c1 {
|
||
line-height: 32rpx;
|
||
font-size: 28rpx;
|
||
font-weight: 400;
|
||
color: #666666;
|
||
}
|
||
|
||
.addressManagement_noCheckfd1_1_c0_c0_c1_c0 {
|
||
border-radius: 24rpx 24rpx 24rpx 24rpx;
|
||
width: 36rpx;
|
||
height: 36rpx;
|
||
}
|
||
|
||
.addressManagement_checkfd1_1_c0_c0_c0_c0 {
|
||
width: 36rpx;
|
||
height: 36rpx;
|
||
border-radius: 24rpx 24rpx 24rpx 24rpx;
|
||
}
|
||
|
||
::v-deep .addressManagement_fd1_1_c0_c0 {
|
||
margin: 0rpx 14rpx 0rpx 0rpx;
|
||
}
|
||
|
||
.addressManagement_fd1_1 {
|
||
padding: 26rpx 0rpx 0rpx 0rpx;
|
||
}
|
||
|
||
.addressManagement_fd1_0_c1_c3 {
|
||
line-height: 32rpx;
|
||
font-size: 28rpx;
|
||
font-weight: 400;
|
||
color: #666666;
|
||
}
|
||
|
||
.addressManagement_fd1_0_c1_c2 {
|
||
line-height: 32rpx;
|
||
font-size: 28rpx;
|
||
font-weight: 400;
|
||
color: #666666;
|
||
}
|
||
|
||
.addressManagement_fd1_0_c1_c1 {
|
||
line-height: 32rpx;
|
||
font-size: 28rpx;
|
||
font-weight: 400;
|
||
color: #666666;
|
||
}
|
||
|
||
.addressManagement_fd1_0_c1_c0 {
|
||
line-height: 32rpx;
|
||
font-size: 28rpx;
|
||
font-weight: 400;
|
||
color: #666666;
|
||
}
|
||
|
||
.addressManagement_fd1_0_c1 {
|
||
-webkit-line-clamp: 2;
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
display: -webkit-box;
|
||
-webkit-box-orient: vertical;
|
||
}
|
||
|
||
.addressManagement_fd1_0_c0_c5 {
|
||
line-height: 32rpx;
|
||
font-size: 28rpx;
|
||
font-weight: 400;
|
||
color: #1A1A1A;
|
||
margin: 0rpx 0rpx 0rpx 24rpx;
|
||
}
|
||
|
||
.addressManagement_fd1_0_c0_c4 {
|
||
line-height: 32rpx;
|
||
font-size: 28rpx;
|
||
font-weight: 400;
|
||
color: #1A1A1A;
|
||
}
|
||
|
||
.addressManagement_fd1_0_c0_c3 {
|
||
line-height: 32rpx;
|
||
font-size: 28rpx;
|
||
font-weight: 400;
|
||
color: #1A1A1A;
|
||
}
|
||
|
||
.addressManagement_fd1_0_c0_c2 {
|
||
line-height: 32rpx;
|
||
font-size: 28rpx;
|
||
font-weight: 400;
|
||
color: #1A1A1A;
|
||
}
|
||
|
||
.addressManagement_fd1_0_c0_c1 {
|
||
line-height: 32rpx;
|
||
font-size: 28rpx;
|
||
font-weight: 400;
|
||
color: #1A1A1A;
|
||
max-width: 290rpx;
|
||
-webkit-line-clamp: 1;
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
display: -webkit-box;
|
||
-webkit-box-orient: vertical;
|
||
}
|
||
|
||
.addressManagement_fd1_0_c0_c0 {
|
||
background: rgba(89, 166, 244, 1);
|
||
line-height: 36rpx;
|
||
font-size: 22rpx;
|
||
font-weight: 400;
|
||
color: #fff;
|
||
padding: 0rpx 10rpx 0rpx 10rpx;
|
||
background-size: 100% auto !important;
|
||
border-radius: 4rpx 4rpx 4rpx 4rpx;
|
||
margin: 0rpx 14rpx 0rpx 0rpx;
|
||
}
|
||
|
||
.addressManagement_fd1_0_c0 {
|
||
padding: 0rpx 0rpx 20rpx 0rpx;
|
||
}
|
||
|
||
.addressManagement_fd1_0 {
|
||
border-bottom: 1px solid #eee;
|
||
padding: 0rpx 0rpx 28rpx 0rpx;
|
||
}
|
||
|
||
.addressManagement_fd2_0_c1 {
|
||
padding: 30rpx 0rpx 0rpx 0rpx;
|
||
color: #929292;
|
||
}
|
||
|
||
.addressManagement_fd2_0_c0 {
|
||
width: 400rpx;
|
||
border-radius: 0rpx 0rpx 0rpx 0rpx;
|
||
}
|
||
|
||
.addressManagement_fd2_0 {
|
||
width: 100%;
|
||
padding: 50rpx 0rpx 50rpx 0rpx;
|
||
}
|
||
|
||
.addressManagement_flex_3 {
|
||
background: #fff;
|
||
width: 540rpx;
|
||
border-radius: 16rpx 16rpx 16rpx 16rpx;
|
||
}
|
||
|
||
.addressManagement_fd3_2_c1 {
|
||
border-top: 1px solid #eee;
|
||
border-left: 1px solid #eee;
|
||
background: #fff;
|
||
line-height: 110rpx;
|
||
border-radius: 0rpx 0rpx 16rpx 0rpx;
|
||
font-size: 32rpx;
|
||
color: rgba(255, 147, 0, 1);
|
||
width: 270rpx;
|
||
}
|
||
|
||
.addressManagement_fd3_2_c0 {
|
||
border-top: 1px solid #eee;
|
||
background: #fff;
|
||
line-height: 110rpx;
|
||
border-radius: 0rpx 0rpx 0rpx 16rpx;
|
||
font-size: 32rpx;
|
||
color: rgba(153, 153, 153, 1);
|
||
padding: 0rpx 103rpx 0rpx 103rpx;
|
||
}
|
||
|
||
.addressManagement_fd3_2 {
|
||
margin: 37rpx 0rpx 0rpx 0rpx;
|
||
}
|
||
|
||
.addressManagement_fd3_1 {
|
||
line-height: 44rpx;
|
||
font-size: 32rpx;
|
||
font-weight: 500;
|
||
color: #333333;
|
||
}
|
||
|
||
.addressManagement_fd3_0 {
|
||
font-size: 36rpx;
|
||
font-weight: 800;
|
||
line-height: 44rpx;
|
||
color: #333333;
|
||
margin: 40rpx 0rpx 40rpx 0rpx;
|
||
}
|
||
|
||
.addressManagement_flex_4 {
|
||
background: #fff;
|
||
width: 750rpx;
|
||
height: 144rpx;
|
||
overflow: hidden;
|
||
z-index: 10;
|
||
bottom: calc(0rpx + var(--window-bottom));
|
||
background-size: 100% auto !important;
|
||
}
|
||
|
||
.addressManagement_fd4_0 {
|
||
background: var(--benbenbgColor3);
|
||
border-radius: 100rpx 100rpx 100rpx 100rpx;
|
||
font-size: 32rpx;
|
||
color: #fff;
|
||
width: 686rpx;
|
||
height: 88rpx;
|
||
line-height: 88rpx;
|
||
font-weight: 700;
|
||
}
|
||
</style>
|