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.
zhishifufei_uniapp/pages/my/address.vue

293 lines
9.0 KiB

10 months ago
<template>
<BaseContainer class="address-list">
9 months ago
<NavBar title="地址管理" />
10 months ago
<view class="list" v-if="address && address.length">
9 months ago
<view class="list-item flex flex-center-x" v-for="(item, index) in address" :key="index">
10 months ago
<view class="head">
9 months ago
<view>{{ item.real_name }} {{ item.phone }} <view v-if="item.is_default">默认</view> </view>
10 months ago
<view>
9 months ago
{{ item.province }} {{ item.city }} {{ item.district }}{{ item.detail }}
10 months ago
</view>
</view>
9 months ago
<image src="@/static/images/my/edit.png" mode="aspectFill" @click="editAddress(item.id)"></image>
<!-- <view class="foot flex flex-center-x">
10 months ago
<view class="label">
<view
class="checked-icon"
@click="setDefault(item.id)"
:class="{ active: item.is_default }"
>设为默认</view
>
</view>
<view class="flex-auto flex flex-right">
<navigator :url="`/pages/my/edit_address?id=${item.id}`" class="edit-btn">
<image
:src="getImgPath('/wap/first/zsff/images/editor.png')"
mode="aspectFit"
/>
</navigator>
<view @click="remove(item.id)" class="del-btn">
<image :src="getImgPath('/wap/first/zsff/images/trash.png')" />删除
</view>
</view>
9 months ago
</view> -->
10 months ago
</view>
</view>
<image
v-else
class="nothing"
:src="getImgPath('/wap/first/zsff/images/no_address.png')"
/>
<view class="footer">
<navigator url="/pages/my/edit_address">
9 months ago
<text>添加地址</text>
10 months ago
</navigator>
<!-- #ifdef MP -->
9 months ago
<!-- <view v-if="isWechat" @click="getWxAddress">
10 months ago
<image :src="getImgPath('/wap/first/zsff/images/weixin.png')" />
<text>导入微信地址</text>
9 months ago
</view> -->
10 months ago
<!-- #endif -->
</view>
</BaseContainer>
</template>
<script>
import { getAddress, removeUserAddress, setDefaultAddress } from "@/api/user";
export default {
data() {
return {
address: [],
isWechat: false,
};
},
onShow() {
this.getAddress();
},
methods: {
getAddress() {
getAddress().then(({ data }) => {
this.address = data.address;
});
},
setDefault(id) {
setDefaultAddress(id).then((res) => {
this.$util.showMsg("设为默认成功");
for (let item of this.address) {
item.is_default = item.id === id;
}
});
},
9 months ago
editAddress(id) {
uni.navigateTo({
url: `/pages/my/edit_address?id=${id}`,
});
},
10 months ago
remove(id) {
uni.showModal({
title: "提示",
content: "是否删除该地址?",
success: async ({ confirm }) => {
if (!confirm) return;
uni.showModal({ mask: true });
try {
await removeUserAddress(id);
uni.hideLoading();
9 months ago
uni.showMsg("删除成功!");
10 months ago
this.address = this.address.filter((value) => value.id !== id);
} catch (err) {
uni.hideLoading();
this.$util.showMsg(err.msg);
}
},
});
},
// #ifdef MP
getWxAddress: function () {
mapleWx($jssdk(), function () {
this.openAddress(
function (res) {
$h.loadFFF();
api.basePost(
$h.U({ c: "auth_api", a: "edit_user_address" }),
{
id: "",
real_name: res.userName,
phone: res.telNumber,
address: {
province: res.provinceName,
city: res.cityName,
district: res.countryName,
},
detail: res.detailInfo,
is_default: false,
},
function () {
location.reload();
}.bind(this),
function (err) {
$h.loadClear();
}
);
},
function (err) {
$h.pushMsg("导入微信地址失败");
}
);
});
},
// #endif
},
};
</script>
<style>
page {
padding-bottom: 118rpx;
background-color: #f5f5f5;
}
</style>
<style scoped lang="scss">
.nothing {
position: absolute;
top: 30%;
left: 50%;
width: 414rpx;
height: 336rpx;
transform: translate(-50%, -50%);
}
.address-list .list-item {
9 months ago
padding: 34rpx 42rpx 38rpx 30rpx;
10 months ago
background-color: #ffffff;
9 months ago
width: 690rpx;
margin: 20rpx auto 0 ;
border-radius: 10rpx;
image {
height: 34rpx;
width: 34rpx;
margin-left: auto;
}
10 months ago
}
.address-list .head {
9 months ago
width: 410rpx;
10 months ago
font-size: 28rpx;
9 months ago
color: #666;
10 months ago
}
9 months ago
.address-list .head>view:first-child {
10 months ago
margin-bottom: 8rpx;
9 months ago
font-size: 34rpx;
color: #333;
display: flex;
align-items: center;
view {
height: 38rpx;
background: #FEE1E1;
font-size: 20rpx;
color: #FF5C6B;
text-align: center;
line-height: 38rpx;
border-radius: 6rpx;
margin-left: 20rpx;
padding: 0 14rpx;
}
10 months ago
}
.address-list .foot {
height: 82rpx;
border-top: 1px solid #eee;
font-size: 28rpx;
color: #282828;
}
.address-list .foot navigator {
color: #282828;
}
.address-list .foot .label view {
padding-left: 48rpx;
background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAADLUlEQVRYR92ZPWhUQRDHd/ZI8MrED/BC4LKz72oRQRCt/CApNIVoY2GjsbBQiUVEkCCIKQxqYWG0sUijWCQWCZpUiiAEsb7b3RwcOcGPpLyQcDuycO+4fN3He694zwdX3cz8fzdvZ3d2DlhCHkgIJwsFury8vM9ae4YxdpKIBAAIxpj7uMcQkQEAwxj7wjlfGBgYWA+amECgWuvbjLHTjDEHuWStXeScF6rVqkqn0wUHU6lUvFQqJa21Hufc2R5jjC0Q0ayU8lWnwB2BKqWuAsAoAJQZY9MuS9ls9mc7osVi8XAt+1eIKENEk1LKN+34Opu2QZVSbwHgSE3gZbsCu9kppW64H0xEP6SUl9uJ1RaoMWaWiH5Za+95nve7ncCtbAqFwkHO+WMAOCSEuNDKviWoMWaFiJ4g4tNWwYJ8r7W+AwB3hRB9zfybgmqt1xCxJwhApz6ttPYEVUp955yPCSE+dioaxN4Yc85aOyGlPLqb/66gWuv3jLEiIo4GEQ3qo7WeZIxlEfHi9hg7QI0xl4joUTqdPpHJZP4EFQ3iVy6XD1Qqla8AcF8I8a4xxg5QrfUSAEwJIaaCiIX1McaMENEIIroDov5sAdVa3wKAISHEYFjBMP7GmHkimkPE536c7aAfAGBGCPE6jFBYX2PMNSIaalyrddBag7HW3d0t+/v7V8KKhfEvlUp9m5ubeQDY7zcydVCl1KBbxIh4KoxIVL5a688A8FAI8cnFrINqrSesteue541HJRYmTqFQGOec70PEsS2gtaZjBhGnwwhE5au1dl3WsN+0NGZ0qVqt3szlct+iEgsTJ5/PH0+lUi/8baoRdLVWSKthBKLyLZVKvRsbGwoRe7ev0cSAJuPVJ6mYkrE9GWPOEtGDOG34rouTUs5vKSZ3hBLR366urlwcjlBX8Zzznh1HqKN2DTMAzMWkKRlGxPN7dU/JaPNqWY1/4+xAE3MV8ddq7C93/uJNxHXZh201FIiqAam9xabDjv9jpONnLBFDsoY1G/+xYwNs/Ae5jYWjlLoOAG6m2fFonDG2iIjPOi3ElsXULGDs/2zoNBtR2IfKaBQA7cb4B6fgEUkgxdzKAAAAAElFTkSuQmCC")
left center/38rpx 38rpx no-repeat;
}
.address-list .foot .checked-icon.active {
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAD3UlEQVRYR9WZX2xTdRTHv98220CIsCXwoD4Q2MsuhMTJC4kBE6ZCIgTuYO8mGB4gZL0S8HF700Rb0/CkJr47kZSZzOAgsBgfQCAx7a9icAESiD64OTIHjq6H/Nq19pbb29+9vZuuL33o+fP5/Tnnd84psUI+XCGcaAm0Oy0dbfPYhTj2ULAZwGaw9A0IJgFMCjGJBVx62o6JOyf5T9iNCQW6NSVHRbAXxD4IXjByTsxBMEbiu1yCXxjp1AgFArU+kSOI4QQEu4I6cskTEyjirHqfI6Z2jEF7knKOgG1q2EROgG/yDvtNZI1AraTcBPCqicEQMreUw95mek1BraRMA1jfzFCLv/+lHHb62fAFtVLyAIKXWoQwUyceqgRfbiTcENRKygUA+828RCY1qhwe8LLmCWol5SsARyJzH8zQiHI4UK/yHGgpBREa9L/7CAbqU9fzoCm52nKebHWJxIRKcHetGRfo4ovzeat+DPR1ove9WiTeq33BXKDLEUAEzucc2gZx4AqsKuimL2XVmmlMCbDaYEfCioxufAT7yhAL2oAfLIHHf3ei6+67fKJlq6DbPpV3ikWMhiUw0BubewT77lDZscGOIhbD/uwgv3WB9qTkQwrOGDgMLELgosygXw1z1hRSywnxUT7BD1ygJitcJGwaCHUrubx6DewbxzgTBLLiq5JTq0dvJeUnAK812a7PlMNjVkoyEHi+IC59YqLYBvuXE/wzBKRWuaEc7nDvaEqmIGhcGBDZGDCQTTCvK/v2BWjYtxstTIAf4zHY2UH+ERJSR9C0SrArGGiZ6BaBgZzDO91pebGtgAyBNzxgrxUA+1eHD0JDluk8QM2OXvdC1xHHYTXI+91p2dBeQAbAzhrYm1KEnT/Fey1Blg16HH2AQkQfKzvQr47z9+1peaVQhu0V4Od4AXb2NH+LAFKbqBYo1WAKkZ6u6tYk53BqW1q2FAvILMTQf3uQtyOC9E5PPR/Lm4zhYsAkOY4OHFLHObs1LVbuJFVUkKU8WsRb+VP83hVMi5GsI9+s/f13RWOYwUE1zPkoIUHMzcfRVZkF1BclXwMw6grrdj6jHB4M8GiYHNw55fBwRTDKMi/oi+UL61vmlY5uJRTOJdCV0opo2KWYiphcylKkN5ie+LXLSzkdacTdcGriP4BYnilJBdp3WtJ8pLMc05ImUxJXwve7Q0vc9DWcjtQyNd3RinDEybxi1nMq4rVpxqDV1PV/H+TWrnJxUHGAQJ9pe63bXwHGSVxY8tF4/ZHoWcDaGfQtCF73+7MhTvwwuw7jlR7dNKeGuqNhjEepE+iORuk4qK1nmV6XOhLYKXkAAAAASUVORK5CYII=");
}
.address-list .foot .del-btn {
margin-left: 50rpx;
}
.address-list .foot {
.edit-btn,
.del-btn {
image {
width: 38rpx;
height: 38rpx;
vertical-align: middle;
object-fit: cover;
pointer-events: none;
}
}
}
.address-list .footer {
position: fixed;
9 months ago
bottom: 44rpx;
left: 30rpx;
10 months ago
z-index: 9;
display: flex;
9 months ago
width: 690rpx;
10 months ago
align-items: center;
}
.address-list .footer navigator {
flex: 1;
height: 76rpx;
border-radius: 38rpx;
9 months ago
background: linear-gradient(0deg, #0F74BB 0%, #3293FF 100%);;
10 months ago
vertical-align: middle;
font-size: 30rpx;
line-height: 76rpx;
text-align: center;
color: #ffffff;
}
.address-list .footer a:nth-child(2) {
margin-left: 30rpx;
background-color: #feb720;
}
.address-list .footer image {
width: 36rpx;
height: 36rpx;
margin-right: 10rpx;
vertical-align: middle;
object-fit: cover;
pointer-events: none;
}
.address-list .footer a:nth-child(2) image {
width: auto;
}
.address-list .footer text {
vertical-align: middle;
}
.address-list .nothing {
display: block;
width: 414rpx;
margin: 30rpx auto;
pointer-events: none;
-webkit-touch-callout: none;
}
</style>