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.
193 lines
4.5 KiB
193 lines
4.5 KiB
<!-- 浏览记录 -->
|
|
<template>
|
|
<view class="page_box">
|
|
<view class="head_box u-flex u-row-right" v-show="!isEmpty">
|
|
<button class="edit-btn u-reset-button" @tap="onSet">{{ isEdit ? '完成' : '编辑' }}</button>
|
|
</view>
|
|
<view class="content_box">
|
|
<scroll-view scroll-y="true" @scrolltolower="loadMore" class="scroll-box">
|
|
<u-checkbox-group @change="checkboxGroupChange" activeColor="#17C161">
|
|
<view class="collect-list u-flex u-flex-1" v-for="f in browseList" :key="f.id">
|
|
<u-checkbox v-if="isEdit" :name="f.goods_id" shape="circle" v-model="f.checked"></u-checkbox>
|
|
<shopro-mini-card
|
|
:image="f.goods.image"
|
|
:title="f.goods.title"
|
|
:price="f.goods.price"
|
|
:originPrice="f.goods.original_price"
|
|
:subtitle="f.goods.subtitle"
|
|
:special="true"
|
|
@click="$Router.push({ path: '/pages/goods/detail', query: { id: f.goods_id } })"
|
|
></shopro-mini-card>
|
|
</view>
|
|
</u-checkbox-group>
|
|
<!-- 缺省页 -->
|
|
<shopro-empty
|
|
v-if="isEmpty"
|
|
:image="$IMG_URL + '/imgs/empty/empty_goods.png'"
|
|
tipText="暂无浏览记录"
|
|
btnText="去首页逛逛"
|
|
@click="$Router.pushTab('/pages/index/index')"
|
|
></shopro-empty>
|
|
<!-- 更多 -->
|
|
<u-loadmore v-show="!isEmpty" height="80rpx" :status="loadStatus" icon-type="flower" color="#ccc" />
|
|
</scroll-view>
|
|
</view>
|
|
<view class="foot_box ">
|
|
<view class="tools-box u-flex u-row-between u-flex-1" v-show="isEdit && !isEmpty">
|
|
<u-checkbox shape="circle" activeColor="#17C161" @change="onAllSel" v-model="isAllSel"><text>全选</text></u-checkbox>
|
|
<button class="u-reset-button close-btn" @tap="deleteLog">删除</button>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
export default {
|
|
components: {},
|
|
data() {
|
|
return {
|
|
isEmpty: false, //无数据
|
|
isEdit: false, //是否编辑
|
|
isAllSel: false, //是否全选
|
|
selList: [], //选中列表
|
|
browseList: [],
|
|
loadStatus: 'loadmore', //loadmore-加载前的状态,loading-加载中的状态,nomore-没有更多的状态
|
|
currentPage: 1,
|
|
lastPage: 1
|
|
};
|
|
},
|
|
computed: {},
|
|
onLoad() {
|
|
this.getbrowseList();
|
|
},
|
|
methods: {
|
|
// 单选
|
|
checkboxGroupChange(e) {
|
|
this.selList = e;
|
|
this.isAllSel = this.browseList.every(item => item.checked);
|
|
},
|
|
// 编辑
|
|
onSet() {
|
|
this.isEdit = !this.isEdit;
|
|
},
|
|
// 全选
|
|
onAllSel(e) {
|
|
this.isAllSel = e.value;
|
|
this.selList = [];
|
|
this.browseList.forEach(item => {
|
|
e.value && this.selList.push(item.goods_id);
|
|
this.$set(item, 'checked', e.value);
|
|
});
|
|
},
|
|
// 历史记录
|
|
getbrowseList() {
|
|
let that = this;
|
|
let list = [];
|
|
that.loadStatus = 'loading';
|
|
that.$http('user.viewList', {
|
|
page: that.currentPage
|
|
}).then(res => {
|
|
if (res.code === 1) {
|
|
list = res.data.data;
|
|
list.map(item => {
|
|
that.$set(item, 'checked', false);
|
|
});
|
|
that.browseList = [...that.browseList, ...list];
|
|
that.isEmpty = !that.browseList.length;
|
|
that.lastPage = res.data.last_page;
|
|
that.loadStatus = that.currentPage < res.data.last_page ? 'loadmore' : 'nomore';
|
|
}
|
|
});
|
|
},
|
|
// 删除足迹
|
|
deleteLog() {
|
|
let that = this;
|
|
const { browseList, selList } = this;
|
|
that.$http(
|
|
'user.viewDelete',
|
|
{
|
|
goods_ids: selList
|
|
},
|
|
'删除中...'
|
|
).then(res => {
|
|
if (res.code === 1) {
|
|
if (that.isAllSel) {
|
|
that.browseList = [];
|
|
that.isEmpty = true;
|
|
} else {
|
|
that.browseList = browseList.filter(f => !selList.includes(f.goods_id));
|
|
}
|
|
}
|
|
});
|
|
},
|
|
// 加载更多
|
|
loadMore() {
|
|
if (this.currentPage < this.lastPage) {
|
|
this.currentPage += 1;
|
|
this.getbrowseList();
|
|
}
|
|
}
|
|
}
|
|
};
|
|
</script>
|
|
|
|
<style lang="scss">
|
|
.head_box {
|
|
height: 70rpx;
|
|
padding: 0 30rpx;
|
|
.count-box {
|
|
font-size: 26rpx;
|
|
color: #999;
|
|
|
|
.all-num {
|
|
color: #a8700d;
|
|
}
|
|
}
|
|
|
|
.edit-btn {
|
|
background: none;
|
|
font-size: 26rpx;
|
|
color: #a8700d;
|
|
margin: 0;
|
|
padding: 20rpx;
|
|
}
|
|
}
|
|
|
|
.collect-list {
|
|
padding: 30rpx 20rpx;
|
|
background: #fff;
|
|
width: 750rpx;
|
|
margin-bottom: 20rpx;
|
|
|
|
.goods-radio {
|
|
transform: scale(0.7);
|
|
margin-right: 20rpx;
|
|
}
|
|
}
|
|
|
|
.tools-box {
|
|
height: 100rpx;
|
|
width: 750rpx;
|
|
padding: 0 20rpx;
|
|
background: #fff;
|
|
|
|
.check-all {
|
|
font-size: 26rpx;
|
|
|
|
.check-all-radio {
|
|
transform: scale(0.7);
|
|
}
|
|
}
|
|
|
|
.close-btn {
|
|
width: 200rpx;
|
|
line-height: 70rpx;
|
|
background: linear-gradient(90deg, rgba(233, 180, 97, 1), rgba(238, 204, 137, 1));
|
|
box-shadow: 0px 7rpx 6rpx 0px rgba(229, 138, 0, 0.22);
|
|
border-radius: 35rpx;
|
|
padding: 0;
|
|
margin: 0;
|
|
color: rgba(#fff, 0.9);
|
|
}
|
|
}
|
|
</style>
|
|
|