收藏页面基本完成,但是需要在平台页面完成后,测试一下加载多条是否正常

积分商城的静态页面完成
足迹页面完成,但是加载多条逻辑未完善
This commit is contained in:
wangzimeng 2025-07-24 17:54:16 +08:00
parent e597673831
commit 56d82c1b8b
7 changed files with 997 additions and 485 deletions

View File

@ -367,7 +367,7 @@
"meta": {
"auth": true,
"sync": true,
"title": "商品收藏",
"title": "我的收藏",
"group": "用户中心"
}
},
@ -379,7 +379,7 @@
"meta": {
"auth": true,
"sync": true,
"title": "浏览记录",
"title": "我的足迹",
"group": "用户中心"
}
},
@ -459,7 +459,7 @@
"meta": {
"auth": true,
"sync": true,
"title": "用户积分",
"title": "我的积分",
"group": "用户中心"
}
}

View File

@ -1,77 +1,219 @@
<!-- 页面 -->
<template>
<s-layout title="积分商城">
<view class="ss-p-20">
<view v-for="item in state.pagination.data" :key="item.id" class="ss-m-b-20">
<s-score-card
size="sl"
:data="item"
priceColor="#FF3000"
@tap="sheep.$router.go('/pages/goods/score', { id: item.id })"
></s-score-card>
<view class="container">
<!-- 顶部信息 -->
<view class="conTop">
<view class="textLine">
<view class="fs30 bold c3" style="line-height: 26rpx;">当前积分</view>
<view class="fs60 bold c3" style="margin-top: 30rpx;line-height: 60rpx;">6963</view>
<view class="scoreDetail" @click="toPage('/pages/user/wallet/score')">
<view class="fs28 c9">积分明细</view>
<image style="width: 28rpx;height: 28rpx;margin-left: 10rpx;"
src="https://jiangxiaoxian.0rui.cn/rightMore.png"></image>
</view>
</view>
<s-empty
v-if="state.pagination.total === 0"
icon="/static/goods-empty.png"
text="暂无积分商品"
></s-empty>
<uni-load-more
v-if="state.pagination.total > 0"
:status="state.loadStatus"
:content-text="{
contentdown: '上拉加载更多',
}"
@tap="loadmore"
/>
</view>
<!-- tabs页签 -->
<view class="tabs-box">
<su-tabs
:list="tabMaps"
@change="onChange"
:scrollable="false"
:current="currentTab"
></su-tabs>
</view>
<!-- 可兑换券列表 -->
<view class="exChangeBox">
<view class="couponsList">
<view class="list-item">
<image style="width: 330rpx;height: 200rpx;" src="https://jiangxiaoxian.0rui.cn/fullCoupon.png"></image>
<view class="item-text">
<view class="fs30 c3" style="margin: 0 auto;">优惠券满100减50</view>
<view class="exchangeBtn">
100积分兑换
</view>
</view>
</view>
<view class="list-item">
<image style="width: 330rpx;height: 200rpx;" src="https://jiangxiaoxian.0rui.cn/fullCoupon.png"></image>
<view class="item-text">
<view class="fs30 c3" style="margin: 0 auto;">优惠券满100减50</view>
<view class="exchangeBtn">
100积分兑换
</view>
</view>
</view>
<view class="list-item">
<image style="width: 330rpx;height: 200rpx;" src="https://jiangxiaoxian.0rui.cn/fullCoupon.png"></image>
<view class="item-text">
<view class="fs30 c3" style="margin: 0 auto;">优惠券满100减50</view>
<view class="exchangeBtn">
100积分兑换
</view>
</view>
</view>
</view>
</view>
<!-- 无数据展示
<view class="flex flex-column flex-start align-items"
v-if="feetHisList.length == 0" style="margin-top: 300rpx;">
<image src="https://jiangxiaoxian.0rui.cn/noneList.png" mode="" style="width: 180rpx;height: 180rpx;">
</image>
<view style="margin-top: 30rpx;font-size: 28rpx;color: #323232;">暂无数据信息</view>
</view>-->
</view>
</s-layout>
</template>
<script setup>
import sheep from '@/sheep';
import { onLoad, onReachBottom } from '@dcloudio/uni-app';
import { reactive } from 'vue';
import {
onLoad,
onShow,
onReachBottom
} from '@dcloudio/uni-app';
import {
ref,
reactive
} from 'vue';
import _ from 'lodash';
const state = reactive({
pagination: {
data: [],
current_page: 1,
total: 1,
last_page: 1,
const tabMaps = [
{
name: '优惠券',
value: '0',
},
loadStatus: '',
});
async function getData(page = 1, list_rows = 5) {
state.loadStatus = 'loading';
let res = await sheep.$api.app.scoreShop.list({
list_rows,
page,
});
if (res.code === 1) {
let couponlist = _.concat(state.pagination.data, res.data.data);
state.pagination = {
...res.data,
data: couponlist,
};
if (state.pagination.current_page < state.pagination.last_page) {
state.loadStatus = 'more';
} else {
state.loadStatus = 'noMore';
}
}
}
//
function loadmore() {
if (state.loadStatus !== 'noMore') {
getData(state.pagination.current_page + 1);
{
name: '次数券',
value: '1',
},
];
const currentTab = ref(0)
//tabs
function onChange(e) {
console.log('onChange',e);
currentTab.value = e.index
console.log('切换tabs',currentTab.value);
// getLogList();
}
//
const toPage = (e) => {
uni.navigateTo({
url: e
})
}
//
onReachBottom(() => {
loadmore();
// loadmore();
});
onLoad(() => {
getData();
// getData();
});
</script>
<style lang="scss" scoped>
.fs30 {
font-size: 30rpx;
}
.fs60 {
font-size: 60rpx;
}
.fs28 {
font-size: 28rpx;
}
.bold {
font-weight: bold;
}
.c3 {
color: #333333;
}
.c9 {
color: #999999;
}
.container {
background-color: #ffffff;
.conTop {
width: 100%;
height: 300rpx;
background-image: url('https://jiangxiaoxian.0rui.cn/scoreTopBack.png');
background-size: 100%;
.textLine {
position: relative;
top: 68rpx;
left: 60rpx;
display: block;
.scoreDetail {
margin-top: 20rpx;
display: flex;
justify-content: flex-start;
align-items: center;
}
}
}
.exChangeBox {
background-color: #ffffff;
width: 690rpx;
.couponsList {
width: 100%;
padding: 0 30rpx;
display: grid;
grid-template-columns: repeat(2, 1fr);;
grid-gap: 20px;
// display: flex;
// justify-content: center;
// align-items: center;
.list-item {
width: 330rpx;
border-radius: 18rpx;
box-shadow: 4rpx 4rpx 4rpx 4rpx rgba(153, 153, 153, 0.1);
.item-text {
padding: 30rpx;
.exchangeBtn {
background-color: #fcc74e;
height: 70rpx;
width: 270rpx;
border-radius: 223rpx;
align-items: center;
justify-content: center;
display: flex;
font-size: 28rpx;
line-height: 30rpx;
font-weight: 400;
}
}
}
}
}
}
</style>

View File

@ -1,240 +1,421 @@
<template>
<s-layout title="商品收藏">
<view class="cart-box ss-flex ss-flex-col ss-row-between">
<!-- 头部 -->
<view class="cart-header ss-flex ss-col-center ss-row-between ss-p-x-30">
<view class="header-left ss-flex ss-col-center ss-font-26">
<text class="goods-number ui-TC-Main ss-flex">{{ state.pagination.total }}</text>
件商品
<s-layout title="我的收藏">
<view class="container">
<!-- tabs页签 -->
<view class="tabs-box">
<su-tabs :list="tabMaps" @change="onChange" :scrollable="false" :current="currentTab"></su-tabs>
</view>
<view class="header-right">
<button
v-if="state.editMode && state.pagination.total"
class="ss-reset-button"
@tap="state.editMode = false"
>
取消
</button>
<button
v-if="!state.editMode && state.pagination.total"
class="ss-reset-button ui-TC-Main"
@tap="state.editMode = true"
>编辑</button
>
<scroll-view @scrolltolower="onScrolltolower" :refresher-enabled="true" :refresher-triggered="homrS"
@refresherrefresh="onS" scroll-y="true" class="flex align-items"
style="height: 1250rpx;box-sizing: border-box;">
<!-- 食堂招租 -->
<view class="recommend-box" v-if="currentTab == 0">
<view class="rrecommList" v-for="(item,index) in collectRentList" :key="index">
<view class="reListItem">
<!-- 左侧图片 -->
<view class="listItem-images">
<image v-if="item.recommend == 1"
style="width: 77rpx;height: 36rpx;z-index: 100;position: relative;top: 34rpx;left: 0rpx;"
src="https://jiangxiaoxian.0rui.cn/hot.png"></image>
<image class="iamges-mainImg" :src="item.images[0]"></image>
</view>
<!-- 右侧内容 -->
<view class="listItem-contents">
<view class="title2" style="margin-bottom: 20rpx;">{{item.platform_title}}</view>
<scroll-view class="score-box">
<view class="fs11 flex cate">
<view class="cate-e" v-for="(e,i) in item.cate" :key="i">
<view v-show="e" class="status-tag " style="margin-right: 20rpx;">{{e}}
</view>
</view>
<!-- 内容 -->
<view class="cart-content">
<view
class="goods-box ss-r-10 ss-m-b-14"
v-for="item in state.pagination.data"
:key="item.id"
>
<view class="ss-flex ss-col-center">
<label
class="check-box ss-flex ss-col-center ss-p-l-10"
v-if="state.editMode"
@tap="onSelect(item.goods_id)"
>
<radio
:checked="state.selectedCollectList.includes(item.goods_id)"
color="var(--ui-BG-Main)"
style="transform: scale(0.8)"
@tap.stop="onSelect(item.goods_id)"
/>
</label>
<s-goods-item
:title="item.goods.title"
:img="item.goods.image"
:price="item.goods.price[0]"
:skuText="item.goods.subtitle"
priceColor="#FF3000"
:titleWidth="400"
@tap="
sheep.$router.go('/pages/goods/index', {
id: item.goods_id,
})
"
>
</s-goods-item>
<!-- <text v-show="item.cate[1]"
class="status-tag" style="margin-right: 20rpx;">{{item.cate[1]}}</text>
<text v-show="item.cate[2]"
class="status-tag">{{item.cate[2]}}</text> -->
</view>
</scroll-view>
<view class="cons-third">
<view style="display: flex;">
<image style="width: 24rpx;height: 24rpx;"
src="https://jiangxiaoxian.0rui.cn/locationList.png"></image>
<view class="title3" style="margin-left: 10rpx;">{{item.address_city_text}}
</view>
</view>
</view>
<!-- 底部 -->
<su-fixed bottom :val="0" placeholder v-show="state.editMode">
<view class="cart-footer ss-flex ss-col-center ss-row-between ss-p-x-30 border-bottom">
<view class="footer-left ss-flex ss-col-center">
<label class="check-box ss-flex ss-col-center ss-p-r-30" @tap="onSelectAll">
<radio
:checked="state.selectAll"
color="var(--ui-BG-Main)"
style="transform: scale(0.7)"
@tap.stop="onSelectAll"
/>
<view> 全选 </view>
</label>
</view>
<view class="footer-right">
<button
class="ss-reset-button ui-BG-Main-Gradient pay-btn ss-font-28 ui-Shadow-Main"
@tap="onCancel"
>取消收藏</button
>
<!-- 右侧收藏 -->
<view>
<image style="width: 44rpx;height: 44rpx;"
src="https://jiangxiaoxian.0rui.cn/collected.png"></image>
<!-- <image style="width: 44rpx;height: 44rpx;" src="https://jiangxiaoxian.0rui.cn/unCollect.png"></image> -->
<view class="fs24 Regular c3">取消收藏</view>
<!-- <view class="fs24 Regular c9">收藏</view> -->
</view>
</view>
</su-fixed>
</view>
<uni-load-more
v-if="state.pagination.total > 0"
:status="state.loadStatus"
:content-text="{
contentdown: '上拉加载更多',
}"
@tap="loadmore"
/>
<s-empty v-if="state.pagination.total === 0" text="暂无收藏" icon="/static/collect-empty.png" />
</view>
<!-- 平台课程 -->
<view class="exChangeBox" v-if="currentTab == 1">
<view class="couponsList" v-for="(item,index) in collectSchoolList" :key="index">
<view class="list-item">
<image style="width: 330rpx;height: 200rpx;" :src="item.image">
</image>
<view class="item-text">
<view class="fs30 c3" style="margin: 0 auto;">{{item.title}}</view>
<view class="exchangeBtn">
取消收藏
</view>
</view>
</view>
<!-- <view class="list-item">
<image style="width: 330rpx;height: 200rpx;" src="https://jiangxiaoxian.0rui.cn/fullCoupon.png">
</image>
<view class="item-text">
<view class="fs30 c3" style="margin: 0 auto;">优惠券满100减50</view>
<view class="exchangeBtn">
取消收藏
</view>
</view>
</view> -->
</view>
</view>
<!-- 无数据展示 -->
<view class="flex flex-column flex-start align-items" style="margin-top: 400rpx;"
v-if="( currentTab == 0 && collectRentList.length == 0) || (currentTab == 1 && collectSchoolList.length == 0)">
<image src="https://jiangxiaoxian.0rui.cn/noneList.png" mode=""
style="width: 520rpx;height: 259rpx;">
</image>
<view style="margin-top: 30rpx;font-size: 28rpx;color: #323232;">暂无数据信息</view>
</view>
</scroll-view>
</view>
</s-layout>
</template>
<script setup>
import sheep from '@/sheep';
import { reactive } from 'vue';
import { onLoad, onReachBottom } from '@dcloudio/uni-app';
import {
reactive,
ref
} from 'vue';
import {
onLoad,
onReachBottom
} from '@dcloudio/uni-app';
import _ from 'lodash';
const sys_navBar = sheep.$platform.navbar;
const pagination = {
data: [],
current_page: 1,
total: 1,
last_page: 1,
};
const state = reactive({
pagination: {
data: [],
current_page: 1,
total: 1,
last_page: 1,
const listQuery = ref({
keywords: null,
add_type: null,
type: null,
my: null,
page: 1,
rentPage: 1,
schoolPage: 1,
limit: 10,
cate_ids: '',
province: null,
city: null,
district: null,
status: null,
recommend: null,
collect: null,
order: null,
nearby: null,
latitude: null,
longitude: '',
area: null,
})
// const
const tabMaps = [{
name: '食堂招租',
value: '0',
},
loadStatus: '',
editMode: false,
selectedCollectList: [],
selectAll: false,
});
async function getData(page = 1, list_rows = 10) {
state.loadStatus = 'loading';
let res = await sheep.$api.user.goodsLog.list({
type: 'favorite',
list_rows,
page,
});
if (res.code === 1) {
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';
{
name: '平台学院',
value: '1',
},
];
const currentTab = ref(0)
const collectRentList = ref([])
const rentCount = ref(0)
const collectSchoolList = ref([])
const schoolCount = ref(0)
const homrS = ref(false)
//tabs
function onChange(e) {
console.log('onChange', e);
currentTab.value = e.index
console.log('切换tabs', currentTab.value);
if (currentTab.value == 0) {
getRentList();
} else {
state.loadStatus = 'noMore';
getSchoolList();
}
}
}
//
function formatPrice(e) {
return e.length === 1 ? e[0] : e.join('~');
}
//
const onSelect = (id) => {
if (!state.selectedCollectList.includes(id)) {
state.selectedCollectList.push(id);
} else {
state.selectedCollectList.splice(state.selectedCollectList.indexOf(id), 1);
}
state.selectAll = state.selectedCollectList.length === state.pagination.data.length;
};
//
const onSelectAll = () => {
state.selectAll = !state.selectAll;
if (!state.selectAll) {
state.selectedCollectList = [];
} else {
state.pagination.data.forEach((item) => {
if (state.selectedCollectList.includes(item.goods_id)) {
state.selectedCollectList.splice(state.selectedCollectList.indexOf(item.goods_id), 1);
}
state.selectedCollectList.push(item.goods_id);
//
async function getRentList() {
const res = await sheep.$api.rent.rentlist({
keywords: listQuery.value.keywords,
page: listQuery.value.rentPage,
limit: listQuery.value.limit,
order: 'normal',
status: 1,
recommend: 1,
collect: 1,
});
console.log('招租收藏列表', res);
if (res.code == 1) {
collectRentList.value =[...collectRentList.value,...res.data.list];
rentCount.value = res.data.count
} else {
// Handle case where data is not in expected format
collectRentList.value = [];
uni.showToast({
title: res.msg,
icon: 'none'
})
}
};
async function onCancel() {
if (state.selectedCollectList) {
state.selectedCollectList = state.selectedCollectList.toString();
const { code } = await sheep.$api.user.favorite.cancel(state.selectedCollectList);
if (code === 1) {
state.editMode = false;
state.selectedCollectList = [];
state.selectAll = false;
state.pagination = pagination;
getData();
console.log('getList', collectRentList.value);
}
}
}
//
function loadmore() {
if (state.loadStatus !== 'noMore') {
getData(state.pagination.current_page + 1);
}
}
onReachBottom(() => {
loadmore();
//
async function getSchoolList() {
const res = await sheep.$api.school.schoolList({
keywords: listQuery.value.keywords,
page: listQuery.value.schoolPage,
limit: listQuery.value.limit,
order: 'normal',
recommend: 1,
collect: 1,
});
console.log('平台课程收藏列表', res);
if (res.code == 1) {
collectSchoolList.value =[...collectSchoolList.value,...res.data.list];
schoolCount.value = res.data.count
} else {
// Handle case where data is not in expected format
collectSchoolList.value = [];
uni.showToast({
title: res.msg,
icon: 'none'
})
}
console.log('平台课程收藏列表-222', collectSchoolList.value);
}
//
function onScrolltolower() {
if (currentTab.value == 0) {
if (collectRentList.value.length < rentCount.value) {
listQuery.value.rentPage+=1;
getRentList();
}
} else {
if (collectSchoolList.value.length < schoolCount.value) {
listQuery.value.schoolPage+=1;
getSchoolList();
}
}
}
function onS() {
homrS.value = true
}
onReachBottom(() => {});
onLoad(() => {
getData();
getRentList();
});
</script>
<style lang="scss" scoped>
.cart-box {
.cart-header {
.flex {
display: flex;
}
.flex-start {
align-items: flex-start;
}
.justify-center {
justify-content: center;
}
.align-items {
align-items: center;
}
.flex-column {
flex-flow: column;
}
.fs24 {
font-size: 24rpx;
}
.Regular {
font-weight: 400;
}
.c3 {
color: #333333;
}
.c9 {
color: #999999;
}
.container {
// background-color: #ffffff;
.recommend-box {
margin-top: 30rpx;
padding: 20rpx 30rpx;
.rrecommList {
margin-top: 30rpx;
// padding: 30rpx;
.reListItem {
background-color: #ffffff;
width: 640rpx;
height: 190rpx;
padding: 30rpx;
display: flex;
justify-content: flex-start;
align-items: center;
border-radius: 18rpx;
.listItem-images {
display: grid;
justify-content: flex-start;
.iamges-mainImg {
width: 190rpx;
height: 190rpx;
position: relative;
right: 0rpx;
bottom: 18rpx;
z-index: 1;
}
}
.listItem-contents {
margin-left: 20rpx;
.score-box {
display: flex;
.cate {
display: flex;
justify-content: flex-start;
align-items: center;
.cate-e {
.status-tag {
padding: 5rpx 15rpx;
border-radius: 5rpx;
font-size: 22rpx;
font-weight: 400;
line-height: 22rpx;
background-color: rgba(247, 97, 0, 0.2);
// opacity: 0.2;
color: #F76100;
//flex-shrink: 0
}
}
}
}
.cons-third {
margin-top: 20rpx;
display: flex;
justify-content: space-around;
align-items: center;
}
}
}
}
}
.exChangeBox {
background-color: #ffffff;
width: 690rpx;
.couponsList {
width: 100%;
padding: 0 30rpx;
display: grid;
grid-template-columns: repeat(2, 1fr);
;
grid-gap: 20px;
// display: flex;
// justify-content: center;
// align-items: center;
.list-item {
width: 330rpx;
border-radius: 18rpx;
box-shadow: 4rpx 4rpx 4rpx 4rpx rgba(153, 153, 153, 0.1);
.item-text {
padding: 30rpx;
.exchangeBtn {
margin-top: 30rpx;
background-color: #ffffff;
border: 2rpx solid #999999;
height: 70rpx;
background-color: #f6f6f6;
width: 100%;
position: fixed;
left: 0;
top: v-bind('sys_navBar') rpx;
z-index: 1000;
box-sizing: border-box;
width: 270rpx;
border-radius: 223rpx;
align-items: center;
justify-content: center;
display: flex;
color: #999999;
font-size: 28rpx;
line-height: 30rpx;
font-weight: 400;
}
.cart-footer {
height: 100rpx;
background-color: #fff;
.pay-btn {
height: 80rpx;
line-height: 80rpx;
border-radius: 40rpx;
padding: 0 40rpx;
min-width: 200rpx;
}
}
.cart-content {
width: 100%;
margin-top: 70rpx;
padding: 0 20rpx;
box-sizing: border-box;
.goods-box {
background-color: #fff;
&:last-child {
margin-bottom: 40rpx;
}
}
}
}
</style>

View File

@ -29,64 +29,123 @@
</view>-->
<!-- 内容 -->
<view class="cart-content">
<view
class="goods-box ss-r-10 ss-m-b-14"
v-for="item in state.pagination.data"
:key="item.id"
>
<view class="ss-flex ss-col-center">
<label
class="check-box ss-flex ss-col-center ss-p-l-10"
v-if="state.editMode"
@tap="onSelect(item.goods_id)"
>
<radio
:checked="state.selectedCollectList.includes(item.goods_id)"
color="var(--ui-BG-Main)"
style="transform: scale(0.8)"
@tap.stop="onSelect(item.goods_id)"
/>
</label>
<s-goods-item
:title="item.goods.title"
:img="item.goods.image"
:price="item.goods.price[0]"
:skuText="item.goods.subtitle"
priceColor="#FF3000"
:titleWidth="400"
@tap="
sheep.$router.go('/pages/goods/index', {
id: item.goods_id,
})
"
>
</s-goods-item>
<view class="goods-box ss-r-10 ss-m-b-14" v-for="(item, index) in feetHisList" :key="index">
<view class="dataBox">{{item.date_text}}</view>
<view class="rrecommList" v-for="(e,i) in item.log" :key="i">
<view class="reListItem">
<!-- 左侧图片 -->
<view class="listItem-images">
<image v-if="e.information.recommend == 1"
style="width: 77rpx;height: 36rpx;z-index: 100;position: relative;top: 34rpx;left: 0rpx;"
src="https://jiangxiaoxian.0rui.cn/hot.png"></image>
<image class="iamges-mainImg" :src="e.information.images[0]"></image>
</view>
<!-- 右侧内容 -->
<view class="listItem-contents">
<view class="title2" style="margin-bottom: 20rpx;">{{e.information.platform_title}}</view>
<scroll-view class="score-box">
<view class="fs11 flex cate">
<view class="cate-e" v-for="(w,q) in e.information.cate" :key="q">
<view v-show="w" class="status-tag " style="margin-right: 20rpx;">{{w}}
</view>
</view>
</view>
</scroll-view>
<view class="cons-third">
<view style="display: flex;">
<image style="width: 24rpx;height: 24rpx;"
src="https://jiangxiaoxian.0rui.cn/locationList.png"></image>
<view class="title3" style="margin-left: 10rpx;">{{e.information.address_city_text}}
</view>
</view>
<view class="title3">{{e.information.release_time_text}}</view>
<view style="display: flex;">
<image style="width: 26rpx;height: 20rpx;"
src="https://jiangxiaoxian.0rui.cn/eye.png"></image>
<view class="title3" style="margin-left: 10rpx;">{{e.information.views}}</view>
</view>
</view>
</view>
</view>
</view>
</view>
<uni-load-more
v-if="state.pagination.total > 0"
:status="state.loadStatus"
:content-text="{
</view>
<view class="flex flex-column flex-start align-items"
v-if="feetHisList.length == 0" style="margin-top: 300rpx;">
<image src="https://jiangxiaoxian.0rui.cn/noneList.png" mode="" style="width: 180rpx;height: 180rpx;">
</image>
<view style="margin-top: 30rpx;font-size: 28rpx;color: #323232;">暂无数据信息</view>
</view>
</view>
<!-- <uni-load-more v-if="state.pagination.total > 0" :status="state.loadStatus" :content-text="{
contentdown: '上拉加载更多',
}"
@tap="loadmore"
/>
<s-empty
v-if="state.pagination.total === 0"
text="暂无浏览记录"
icon="/static/collect-empty.png"
/>
}" @tap="loadmore" />
<s-empty v-if="state.pagination.total === 0" text="暂无浏览记录" icon="/static/collect-empty.png" /> -->
</s-layout>
</template>
<script setup>
import sheep from '@/sheep';
import { reactive } from 'vue';
import { onLoad, onReachBottom } from '@dcloudio/uni-app';
import {
ref,
reactive
} from 'vue';
import {
onLoad,
onReachBottom
} from '@dcloudio/uni-app';
import _ from 'lodash';
import dayjs from 'dayjs';
const date = new Date();
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, '0'); //
const day = String(date.getDate()).padStart(2, '0'); //
const today = `${year}-${month}-${day}`;
// const today = ref('')
const feetHisList = ref([])
//
const listQuery = ref({
page: 1,
limit: 10,
addrLatitude: null,
addrLongitude: null,
address: null,
address1: null,
categoryId: null,
tags: '',
cate_ids: '',
area: null,
city: null,
province: null,
district: null,
keywords: null,
// district: '',
})
onLoad(() => {
// getData();
getFeetList();
});
async function getFeetList() {
const res = await sheep.$api.user.goodsLog.list({
keywords: listQuery.value.keywords,
page: listQuery.value.page,
limit: listQuery.value.limit,
});
console.log('足迹返值', res);
if (res.code == 1) {
feetHisList.value = res.data.list
console.log('足迹列表', feetHisList.value);
}
}
const sys_navBar = sheep.$platform.navbar;
const pagination = {
@ -139,12 +198,36 @@
onReachBottom(() => {
loadmore();
});
onLoad(() => {
getData();
});
</script>
<style lang="scss" scoped>
.title {
color: #3d3d3d;
font-size: 34rpx;
font-weight: 800;
line-height: 34rpx;
}
.intro {
font-size: 24rpx;
font-weight: 400;
line-height: 24rpx;
}
.title2 {
color: #3d3d3d;
font-size: 30rpx;
font-weight: 800;
line-height: 42rpx;
}
.title3 {
font-size: 20rpx;
font-weight: 400;
color: #999999;
line-height: 22rpx;
}
.cart-box {
.cart-header {
height: 70rpx;
@ -174,9 +257,89 @@
width: 100%;
padding: 0 20rpx;
box-sizing: border-box;
margin-top: 70rpx;
margin-top: 30rpx;
.goods-box {
background-color: #fff;
// background-color: #fff;
.dataBox {
margin: 30rpx;
}
.rrecommList {
margin-top: 30rpx;
// padding: 30rpx;
.reListItem {
background-color: #ffffff;
width: 640rpx;
height: 190rpx;
padding: 30rpx;
display: flex;
justify-content: flex-start;
align-items: center;
border-radius: 18rpx;
.listItem-images {
display: grid;
justify-content: flex-start;
.iamges-mainImg {
width: 190rpx;
height: 190rpx;
position: relative;
right: 0rpx;
bottom: 18rpx;
z-index: 1;
}
}
.listItem-contents {
margin-left: 20rpx;
.score-box {
display: flex;
.cate {
display: flex;
justify-content: flex-start;
align-items: center;
.cate-e {
.status-tag {
padding: 5rpx 15rpx;
border-radius: 5rpx;
font-size: 22rpx;
font-weight: 400;
line-height: 22rpx;
background-color: rgba(247, 97, 0, 0.2);
// opacity: 0.2;
color: #F76100;
//flex-shrink: 0
}
}
}
}
.cons-third {
margin-top: 20rpx;
display: flex;
justify-content: space-around;
align-items: center;
}
}
}
}
&:last-child {
margin-bottom: 40rpx;
}

View File

@ -13,6 +13,7 @@ import third from "./third"
import trade from "./trade"
import user from "./user"
import rent from "./rent"
import school from "./school"
export default {
activity,
@ -30,5 +31,6 @@ export default {
trade,
user,
rent,
school,
}

24
sheep/api/school.js Normal file
View File

@ -0,0 +1,24 @@
import request from '@/sheep/request';
export default {
// 招租列表
schoolList: (params) =>
request({
url: 'meal.classes/classes_list',
method: 'GET',
params,
custom: {
showLoading: false,
},
}),
// detail: (id, user_coupon_id) =>
// request({
// url: 'coupon/detail',
// method: 'GET',
// params: {
// id: id,
// user_coupon_id,
// },
// }),
};

View File

@ -40,7 +40,7 @@
{
width: addUnit(lineWidth),
height: addUnit(lineHeight),
background: lineColor ? lineColor : 'var(--ui-BG-Main)',
background: lineColor ? lineColor : '#fcc74e',
backgroundSize: lineBgSize,
},
]"
@ -56,7 +56,7 @@
transform: `translate(${lineOffsetLeft}px)`,
transitionDuration: `${firstTime ? 0 : duration}ms`,
height: addUnit(lineHeight),
background: lineColor ? lineColor : 'var(--ui-BG-Main)',
background: lineColor ? lineColor : '#fcc74e',
backgroundSize: lineBgSize,
},
]"
@ -409,7 +409,7 @@
&__text {
font-size: 14px;
color: #606266;
color: #999999;
white-space: nowrap !important;
&--disabled {