136 lines
3.4 KiB
Vue
136 lines
3.4 KiB
Vue
<script setup>
|
||
// 历史浏览
|
||
import {
|
||
ref,
|
||
reactive,
|
||
getCurrentInstance
|
||
} from 'vue'
|
||
import {
|
||
onReachBottom,
|
||
onPullDownRefresh,
|
||
onShow,
|
||
onLoad,
|
||
onReady,
|
||
} from '@dcloudio/uni-app';
|
||
// 工具库
|
||
import util from '@/common/js/util.js'
|
||
//
|
||
import api from '@/api/index.js'
|
||
// 列表
|
||
const list = reactive([])
|
||
|
||
onLoad(() => {
|
||
// 获取浏览记录
|
||
historyView()
|
||
})
|
||
|
||
// 获取浏览记录
|
||
function historyView() {
|
||
api.shop.getHistoryView().then(res => {
|
||
if (res.code == 200) {
|
||
// 今天的年月日
|
||
let todayStr = getDate()
|
||
// 昨天的年月日
|
||
let yesterdayStr = getDate(-1)
|
||
// 列表
|
||
let arr = []
|
||
// 遍历原始数据
|
||
res.data.forEach(item => {
|
||
let date = item.browsingHistoryTime.split(' ')[0];
|
||
if (date == todayStr) date = '今天'
|
||
else if (date == yesterdayStr) date = '昨天'
|
||
let findResult = arr.find(r => r.date === date);
|
||
|
||
// 判断是否有时间 有在列表追加 没有追加整个列表
|
||
if (findResult) findResult.list.push(item);
|
||
else arr.push({
|
||
date: date,
|
||
list: [item]
|
||
})
|
||
});
|
||
// 列表
|
||
list.push(...arr)
|
||
return
|
||
}
|
||
|
||
util.alert({
|
||
content: res.msg,
|
||
showCancel: false
|
||
})
|
||
})
|
||
}
|
||
|
||
// 获取日期
|
||
function getDate(offset = 0) {
|
||
// 创建一个新的 Date 对象,表示当前时间
|
||
let today = new Date();
|
||
// 使用 setDate 方法将日期设置为偏移后的日期,getDate() 获取当前日期,offset 表示偏移量,-1 表示昨天,0 表示今天,1 表示明天,以此类推
|
||
today.setDate(today.getDate() + offset);
|
||
// 获取年
|
||
let year = today.getFullYear();
|
||
// 获取月,需要注意的是 getMonth() 方法返回的月份是从 0 开始的,所以需要加 1
|
||
let month = today.getMonth() + 1;
|
||
// 获取日
|
||
let day = today.getDate();
|
||
// 格式化月和日,如果月或日小于 10,在前面添加 0 以保持格式一致
|
||
month = month < 10 ? '0' + month : month;
|
||
day = day < 10 ? '0' + day : day;
|
||
// 返回格式化后的日期字符串
|
||
return `${year}-${month}-${day}`;
|
||
}
|
||
|
||
/**
|
||
* 跳转详情
|
||
* @param {Object} secItem
|
||
*/
|
||
function handleItem(secItem) {
|
||
uni.navigateTo({
|
||
url: util.setUrl('/pages/shop/commodity/index', {
|
||
productId: secItem.id
|
||
})
|
||
})
|
||
}
|
||
</script>
|
||
|
||
<template>
|
||
<view class="app">
|
||
<view class="list">
|
||
<view class="item mtb20 bfff" v-for="(item,index) in list" :key="index">
|
||
<view class="date ptb20 plr20 c333 f28">{{item.date}}</view>
|
||
|
||
<view class="product line df ptb20 plr20" v-for="(secItem,secIndex) in item.list" :key="index"
|
||
@click="handleItem(secItem)">
|
||
|
||
<view class="poster wh160">
|
||
<image class="wh160 br10" :src="secItem.sliderImage.split(',')[0]" mode="aspectFill" />
|
||
</view>
|
||
|
||
<view class="info df fdc jcsb f1 ml20">
|
||
<view class="name t2hd c333 f28">{{secItem.name}}</view>
|
||
|
||
<view class="other rows">
|
||
<view class="col c333">
|
||
<text class="f20">¥</text>
|
||
<text class="f30">{{secItem.price}}</text>
|
||
<text class="count ml20 fs0 c999 f24">销量:{{secItem.sales}}</text>
|
||
</view>
|
||
<view class="btn ti warmHollow plr20">去购买</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
|
||
<view class="fill" style="height: 30rpx;"></view>
|
||
</view>
|
||
</template>
|
||
|
||
<style lang="scss" scoped>
|
||
.list {
|
||
.item {
|
||
.date {
|
||
border-bottom: 2rpx solid #eee;
|
||
}
|
||
}
|
||
}
|
||
</style> |