| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 | 
							- <template>
 
- 	<su-popup :show="show" showClose round="10" backgroundColor="#eee" @close="emits('close')">
 
- 		<view class="select-popup">
 
- 			<view class="title">
 
- 				<span>{{ mode == 'goods' ? '我的浏览' : '我的订单' }}</span>
 
- 			</view>
 
- 			<scroll-view class="scroll-box" scroll-y="true" :scroll-with-animation="true" :show-scrollbar="false"
 
- 				@scrolltolower="loadmore">
 
- 				<view class="item" v-for="item in state.pagination.data" :key="item"
 
- 					@tap="emits('select', { type: mode, data: item })">
 
- 					<template v-if="mode == 'goods'">
 
- 						<GoodsItem :goodsData="item.goods" />
 
- 					</template>
 
- 					<template v-if="mode == 'order'">
 
- 						<OrderItem :orderData="item" />
 
- 					</template>
 
- 				</view>
 
- 				<uni-load-more :status="state.loadStatus" :content-text="{ contentdown: '上拉加载更多' }" />
 
- 			</scroll-view>
 
- 		</view>
 
- 	</su-popup>
 
- </template>
 
- <script setup>
 
- 	import {
 
- 		reactive,
 
- 		watch
 
- 	} from 'vue';
 
- 	import sheep from '@/sheep';
 
- 	import _ from 'lodash';
 
- 	import GoodsItem from './goods.vue';
 
- 	import OrderItem from './order.vue';
 
- 	import OrderApi from '@/sheep/api/trade/order';
 
- 	import SpuHistoryApi from '@/sheep/api/product/history';
 
- 	const emits = defineEmits(['select', 'close']);
 
- 	const props = defineProps({
 
- 		mode: {
 
- 			type: String,
 
- 			default: 'goods',
 
- 		},
 
- 		show: {
 
- 			type: Boolean,
 
- 			default: false,
 
- 		},
 
- 	});
 
- 	watch(() => props.mode,() => {
 
- 			state.pagination.data = [];
 
- 			if (props.mode) {
 
- 				getList(state.pagination.page);
 
- 			}
 
- 		},
 
- 	);
 
- 	const state = reactive({
 
- 		loadStatus: '',
 
- 		pagination: {
 
- 			data: [],
 
- 			current_page: 1,
 
- 			total: 1,
 
- 			last_page: 1,
 
- 		},
 
- 	});
 
- 	async function getList(page, list_rows = 5) {
 
- 		state.loadStatus = 'loading';
 
- 		const res =
 
- 			props.mode == 'goods' ?
 
- 			await SpuHistoryApi.getBrowseHistoryPage({
 
- 				page,
 
- 				list_rows,
 
- 			}) :
 
- 			await OrderApi.getOrderPage({
 
- 				page,
 
- 				list_rows,
 
- 			});
 
- 		let orderList = _.concat(state.pagination.data, res.data.data);
 
- 		state.pagination = {
 
- 			...res.data,
 
- 			data: orderList,
 
- 		};
 
- 		if (state.pagination.current_page < state.pagination.last_page) {
 
- 			state.loadStatus = 'more';
 
- 		} else {
 
- 			state.loadStatus = 'noMore';
 
- 		}
 
- 	}
 
- 	function loadmore() {
 
- 		if (state.loadStatus !== 'noMore') {
 
- 			getList(state.pagination.current_page + 1);
 
- 		}
 
- 	}
 
- </script>
 
- <style lang="scss" scoped>
 
- 	.select-popup {
 
- 		max-height: 600rpx;
 
- 		.title {
 
- 			height: 100rpx;
 
- 			line-height: 100rpx;
 
- 			padding: 0 26rpx;
 
- 			background: #fff;
 
- 			border-radius: 20rpx 20rpx 0 0;
 
- 			span {
 
- 				font-size: 32rpx;
 
- 				position: relative;
 
- 				&::after {
 
- 					content: '';
 
- 					display: block;
 
- 					width: 100%;
 
- 					height: 2px;
 
- 					z-index: 1;
 
- 					position: absolute;
 
- 					left: 0;
 
- 					bottom: -15px;
 
- 					background: var(--ui-BG-Main);
 
- 					pointer-events: none;
 
- 				}
 
- 			}
 
- 		}
 
- 		.scroll-box {
 
- 			height: 500rpx;
 
- 		}
 
- 		.item {
 
- 			background: #fff;
 
- 			margin: 26rpx 26rpx 0;
 
- 			border-radius: 20rpx;
 
- 			:deep() {
 
- 				.image {
 
- 					width: 140rpx;
 
- 					height: 140rpx;
 
- 				}
 
- 			}
 
- 		}
 
- 	}
 
- </style>
 
 
  |