<template>
|
<view class="box">
|
<view class="cate">
|
<view v-for="(item, index) in cate" :key="index" @click="changeRow(item.id)" :class="type === item.id ? 'cate-item active' : 'cate-item'">
|
<text>{{item.name}}</text>
|
<view class="cate-item-x" v-if="type === item.id"></view>
|
</view>
|
<view class="cate-item" style="flex: 0.7; justify-content: flex-end; padding-right: 30rpx; box-sizing: border-box;" @click="guanli">
|
<image src="/static/icon/ic_guanli@2x.png" mode="widthFix" v-show="!edit"></image>
|
<image src="/static/icon/ic_guanli_sel@2x.png" mode="widthFix" v-show="edit"></image>
|
<text class="wz" :style="{ color: edit ? '#004096' : '' }">管理</text>
|
</view>
|
</view>
|
<view class="list1" v-if="type === '1'">
|
<view class="list-item" v-for="(item, index) in list" :key="index">
|
<view class="left" v-if="edit" @click="select(index)">
|
<image src="/static/icon/ic_agree@2x.png" mode="widthFix" v-if="!item.active"></image>
|
<image src="/static/icon/cart_ic_sel@2x.png" mode="widthFix" v-else></image>
|
</view>
|
<view class="right">
|
<view class="list-item-image">
|
<image :src="item.imgurl" mode="widthFix"></image>
|
</view>
|
<view class="list-item-info">
|
<view class="list-item-info-top">{{item.name}}</view>
|
<view class="list-item-info-bottom">
|
<text>¥{{item.price}}</text>
|
<text>¥{{item.linePrice}}</text>
|
</view>
|
</view>
|
</view>
|
</view>
|
</view>
|
<view class="list" v-else>
|
<view class="list-item" v-for="(item, index) in list" :key="index">
|
<view class="info">
|
<view class="check" v-if="edit" @click="select(index)">
|
<image src="/static/icon/ic_agree@2x.png" mode="widthFix" v-if="!item.active"></image>
|
<image src="/static/icon/cart_ic_sel@2x.png" mode="widthFix" v-else></image>
|
</view>
|
<view class="info-right">
|
<view class="info-title">{{item.name}}</view>
|
<view class="info-desc">{{item.content}}</view>
|
<view class="info-data">
|
<view class="tips">{{item.labelName}}</view>
|
<text>{{item.readNum}} 阅读|{{item.createDate}}</text>
|
</view>
|
</view>
|
</view>
|
<view class="image">
|
<image :src="item.imgurl" mode="widthFix"></image>
|
</view>
|
</view>
|
</view>
|
<template v-if="edit">
|
<view style="width: 100%; height: calc(100rpx + env(safe-area-inset-bottom));"></view>
|
<view class="footer">
|
<view class="caozuo">
|
<view class="caozuo-left" @click="quanxuan">
|
<image src="/static/icon/ic_agree@2x.png" mode="widthFix" v-if="!selectAll"></image>
|
<image src="/static/icon/cart_ic_sel@2x.png" mode="widthFix" v-else></image>
|
<text>全选</text>
|
</view>
|
<view class="caozuo-btn" @click="shanchu">删除({{totalNum}})</view>
|
</view>
|
<view style="width: 100%; height: env(safe-area-inset-bottom);"></view>
|
</view>
|
</template>
|
<u-modal :show="show" :showCancelButton="true" @confirm="dele" @cancel="show = false">
|
确认删除吗?
|
</u-modal>
|
</view>
|
</template>
|
|
<script>
|
export default {
|
computed: {
|
totalNum() {
|
let total = 0
|
this.list.forEach((item) => {
|
if (item.active) {
|
total++
|
}
|
})
|
return total;
|
},
|
selectAll() {
|
let isSelectAll = true
|
this.list.forEach((item) => {
|
if (!item.active) {
|
isSelectAll = false
|
}
|
})
|
return isSelectAll;
|
}
|
},
|
data() {
|
return {
|
show: false,
|
edit: false,
|
type: '1',
|
page: 1,
|
list: [],
|
next: true,
|
cate: [
|
{ name: '商品(0)', id: '1' },
|
{ name: '文章(0)', id: '0' }
|
]
|
};
|
},
|
onLoad() {
|
this.getList()
|
this.getNum()
|
},
|
onReachBottom() {
|
this.getList()
|
},
|
methods: {
|
shanchu() {
|
if (this.totalNum > 0) {
|
this.show = true
|
} else {
|
uni.showToast({
|
title: '至少选择一项内容',
|
icon: 'none'
|
})
|
}
|
},
|
dele() {
|
this.$u.api.cancelbatch({
|
ids: this.list.filter(item => item.active).map(item => item.id).join(',')
|
}).then(res => {
|
if (res.code === 200) {
|
this.show = false
|
this.edit = false
|
this.page = 1
|
this.list = []
|
this.next = true
|
this.getList()
|
this.getNum()
|
}
|
})
|
},
|
quanxuan() {
|
this.list.forEach(item => {
|
item.active = true
|
})
|
},
|
guanli() {
|
this.edit = !this.edit
|
this.list.forEach(item => {
|
item.active = false
|
})
|
},
|
select(index) {
|
this.list[index].active = !this.list[index].active
|
},
|
changeRow(id) {
|
this.type = id
|
this.edit = false
|
this.page = 1
|
this.list = []
|
this.next = true
|
this.getList()
|
},
|
getNum() {
|
this.$u.api.getCollectNum({})
|
.then(res => {
|
if (res.code === 200) {
|
this.cate[0].name = `商品(${res.data.goodsNum})`
|
this.cate[1].name = `文章(${res.data.activityNum})`
|
}
|
})
|
},
|
getList() {
|
if (!this.next) return
|
this.$u.api.myCollectPage({
|
capacity: 10,
|
page: 1,
|
model: {
|
objType: this.type
|
}
|
}).then(res => {
|
if (res.code === 200) {
|
this.page++
|
res.data.records.forEach(item => {
|
item.active = false
|
})
|
this.list.push(...res.data.records)
|
if (res.data.total === this.list.length) {
|
this.next = false
|
}
|
}
|
})
|
}
|
}
|
}
|
</script>
|
|
<style>
|
page {
|
background-color: #F9F9FB;
|
}
|
</style>
|
<style lang="scss" scoped>
|
.box {
|
width: 100%;
|
.footer {
|
width: 100%;
|
background-color: #ffffff;
|
position: fixed;
|
bottom: 0;
|
left: 0;
|
z-index: 999;
|
height: calc(100rpx + env(safe-area-inset-bottom));
|
.caozuo {
|
width: 100%;
|
height: 100rpx;
|
padding: 0 30rpx;
|
box-sizing: border-box;
|
display: flex;
|
align-items: center;
|
justify-content: space-between;
|
box-shadow: 0rpx -1rpx 0rpx 0rpx #EEEEEE;
|
.caozuo-left {
|
display: flex;
|
align-items: center;
|
image {
|
width: 40rpx;
|
height: 40rpx;
|
margin-right: 16rpx;
|
}
|
text {
|
font-weight: 400;
|
font-size: 28rpx;
|
color: #333333;
|
}
|
}
|
.caozuo-btn {
|
padding: 0 36rpx;
|
box-sizing: border-box;
|
height: 64rpx;
|
line-height: 64rpx;
|
border-radius: 32rpx;
|
border: 1rpx solid #E4001D;
|
font-weight: 400;
|
font-size: 28rpx;
|
color: #E4001D;
|
}
|
}
|
}
|
.cate {
|
width: 100%;
|
height: 90rpx;
|
background: #FFFFFF;
|
display: flex;
|
align-items: center;
|
position: sticky;
|
top: 0;
|
left: 0;
|
z-index: 99;
|
border-bottom: 1rpx solid #E5E5E5;
|
.active {
|
text {
|
font-weight: 500 !important;
|
font-size: 32rpx !important;
|
color: #222222 !important;
|
}
|
}
|
.cate-item {
|
flex: 1;
|
height: 100%;
|
display: flex;
|
align-items: center;
|
justify-content: center;
|
position: relative;
|
image {
|
width: 28rpx;
|
height: 28rpx;
|
margin-right: 8rpx;
|
}
|
.wz {
|
font-weight: 400;
|
font-size: 26rpx;
|
color: #666666;
|
}
|
text {
|
font-weight: 400;
|
font-size: 30rpx;
|
color: #666666;
|
}
|
.cate-item-x {
|
width: 40rpx;
|
height: 6rpx;
|
position: absolute;
|
bottom: 0;
|
left: 50%;
|
transform: translate(-50%, 0);
|
background-color: #004096;
|
}
|
}
|
}
|
.list {
|
width: 100%;
|
padding: 0 30rpx;
|
box-sizing: border-box;
|
display: flex;
|
flex-direction: column;
|
background-color: #ffffff;
|
.list-item {
|
width: 100%;
|
padding: 30rpx 0;
|
box-sizing: border-box;
|
display: flex;
|
align-items: flex-start;
|
border-bottom: 1rpx solid #E5E5E5;
|
|
.info {
|
flex: 1;
|
display: flex;
|
align-items: center;
|
.check {
|
flex-shrink: 0;
|
width: 44rpx;
|
height: 44rpx;
|
margin-right: 20rpx;
|
image {
|
width: 100%;
|
}
|
}
|
.info-right {
|
display: flex;
|
flex-direction: column;
|
.info-title {
|
font-weight: 600;
|
font-size: 32rpx;
|
color: #222222;
|
}
|
.info-desc {
|
font-weight: 400;
|
font-size: 26rpx;
|
color: #777777;
|
margin-top: 16rpx;
|
}
|
.info-data {
|
display: flex;
|
align-items: flex-start;
|
margin-top: 20rpx;
|
.tips {
|
flex-shrink: 0;
|
height: 40rpx;
|
line-height: 40rpx;
|
padding: 0 8rpx;
|
box-sizing: border-box;
|
background: rgba(0,183,117,0.1);
|
border-radius: 8rpx;
|
|
font-weight: 400;
|
font-size: 22rpx;
|
color: #00B775;
|
margin-right: 20rpx;
|
}
|
text {
|
font-weight: 400;
|
font-size: 24rpx;
|
color: #999999;
|
}
|
}
|
}
|
}
|
.image {
|
flex-shrink: 0;
|
width: 200rpx;
|
height: 150rpx;
|
border-radius: 8rpx;
|
margin-left: 30rpx;
|
overflow: hidden;
|
image {
|
width: 100%;
|
}
|
}
|
}
|
}
|
.list1 {
|
width: 100%;
|
padding: 30rpx;
|
box-sizing: border-box;
|
.list-item {
|
width: 100%;
|
display: flex;
|
align-items: center;
|
margin-bottom: 20rpx;
|
&:last-child {
|
margin: 0 !important;
|
}
|
.left {
|
flex-shrink: 0;
|
width: 40rpx;
|
height: 40rpx;
|
margin-right: 20rpx;
|
image {
|
width: 100%;
|
}
|
}
|
.right {
|
flex: 1;
|
padding: 30rpx;
|
box-sizing: border-box;
|
background: #FFFFFF;
|
border-radius: 16rpx;
|
display: flex;
|
align-items: center;
|
.list-item-image {
|
flex-shrink: 0;
|
width: 144rpx;
|
height: 144rpx;
|
overflow: hidden;
|
border-radius: 8rpx;
|
border: 1rpx solid #EEEEEE;
|
margin-right: 24rpx;
|
image {
|
width: 100%;
|
}
|
}
|
.list-item-info {
|
flex: 1;
|
height: 144rpx;
|
display: flex;
|
flex-direction: column;
|
justify-content: space-between;
|
.list-item-info-top {
|
font-weight: 400;
|
font-size: 30rpx;
|
color: #222222;
|
}
|
.list-item-info-bottom {
|
display: flex;
|
align-items: baseline;
|
text {
|
&:nth-child(1) {
|
font-weight: 600;
|
font-size: 30rpx;
|
color: #E4001D;
|
}
|
&:nth-child(2) {
|
font-weight: 400;
|
font-size: 24rpx;
|
color: #999999;
|
margin-left: 10rpx;
|
text-decoration: line-through;
|
}
|
}
|
}
|
}
|
}
|
}
|
}
|
}
|
</style>
|