| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 | <!-- 收件地址列表 --><template>	<s-layout title="收货地址" :bgStyle="{ color: '#FFF' }">		<view v-if="state.list.length">			<s-address-item hasBorderBottom v-for="item in state.list" :key="item.id" :item="item"				@tap="onSelect(item)" />		</view>		<su-fixed bottom placeholder>			<view class="footer-box ss-flex ss-row-between ss-p-20">				<!-- 微信小程序和微信H5 -->				<button v-if="['WechatMiniProgram', 'WechatOfficialAccount'].includes(sheep.$platform.name)"					@tap="importWechatAddress"					class="border ss-reset-button sync-wxaddress ss-m-20 ss-flex ss-row-center ss-col-center">					<text class="cicon-weixin ss-p-r-10" style="color: #09bb07; font-size: 40rpx"></text>					导入微信地址				</button>				<button class="add-btn ss-reset-button ui-Shadow-Main"					@tap="sheep.$router.go('/pages/user/address/edit')">					新增收货地址				</button>			</view>		</su-fixed>		<s-empty v-if="state.list.length === 0 && !state.loading" text="暂无收货地址" icon="/static/data-empty.png" />	</s-layout></template><script setup>	import {		reactive,		onBeforeMount	} from 'vue';	import {		onShow	} from '@dcloudio/uni-app';	import sheep from '@/sheep';	import {		isEmpty	} from 'lodash';	import AreaApi from '@/sheep/api/system/area';	import AddressApi from '@/sheep/api/member/address';	import $helper from '@/sheep/helper';	const state = reactive({		list: [], // 地址列表		loading: true,	});	// 选择收货地址	const onSelect = (addressInfo) => {		uni.$emit('SELECT_ADDRESS', {			addressInfo,		});		sheep.$router.back();	};	// 导入微信地址	// TODO 非繁人:未测试	function importWechatAddress() {		let wechatAddress = {};		// #ifdef MP		uni.chooseAddress({			success: (res) => {				wechatAddress = {					consignee: res.userName,					mobile: res.telNumber,					province_name: res.provinceName,					city_name: res.cityName,					district_name: res.countyName,					address: res.detailInfo,					region: '',					is_default: false,				};				if (!isEmpty(wechatAddress)) {					sheep.$router.go('/pages/user/address/edit', {						data: JSON.stringify(wechatAddress),					});				}			},			fail: (err) => {				console.log("uni.chooseAddress调用失败,问题是:", err);			},		});		// #endif		// #ifdef H5		sheep.$platform.useProvider('wechat').jssdk.openAddress({			success: (res) => {				wechatAddress = {					consignee: res.userName,					mobile: res.telNumber,					province_name: res.provinceName,					city_name: res.cityName,					district_name: res.countryName,					address: res.detailInfo,					region: '',					is_default: false,				};				if (!isEmpty(wechatAddress)) {					sheep.$router.go('/pages/user/address/edit', {						data: JSON.stringify(wechatAddress),					});				}			},		});		// #endif	}	onShow(async () => {		state.list = (await AddressApi.getAddressList()).data;		state.loading = false;	});	onBeforeMount(() => {		if (!!uni.getStorageSync('areaData')) {			return;		}		// 提前加载省市区数据		AreaApi.getAreaTree().then((res) => {			if (res.code === 0) {				uni.setStorageSync('areaData', res.data);			}		});	});</script><style lang="scss" scoped>	.footer-box {		.add-btn {			flex: 1;			background: linear-gradient(90deg, var(--ui-BG-Main), var(--ui-BG-Main-gradient));			border-radius: 80rpx;			font-size: 30rpx;			font-weight: 500;			line-height: 80rpx;			color: $white;			position: relative;			z-index: 1;		}		.sync-wxaddress {			flex: 1;			line-height: 80rpx;			background: $white;			border-radius: 80rpx;			font-size: 30rpx;			font-weight: 500;			color: $dark-6;			margin-right: 18rpx;		}	}</style>
 |