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.
 
 
 
 
 
 
yanzong_qianduan/pages/news3/components/category.vue

191 lines
4.0 KiB

<template>
<view>
<u-popup v-model="afterSale" catchtouchmove='true' width="80%" border-radius="10" @close="onClose"
:closeable="true" mode="center">
<view class="afterSales">
<view class="filterTitle">
请选择分类
</view>
<view class="shopItem">
<view class="shopText" :class="{'active':activeIndex.indexOf(item.category_id) > -1}"
@click="getShop(item,item.category_id)" v-for="(item, index) in tabList" :key="index">
<text>{{ item.name }}</text>
<image v-if="activeIndex.indexOf(item.category_id) > -1"
:src="$picUrl + '/static/news1/selected.png'" mode="widthFix">
</image>
</view>
</view>
<view class="btnGroup">
<view class="reset" @click="reset">
重置
</view>
<view class="submit" @click="submit" style="margin-left:24upx;">
确定
</view>
</view>
</view>
</u-popup>
</view>
</template>
<script>
export default {
props: {
tabList: Array, //自定义属性的值:数据类型
activeIndex: Array,
categoryId: String || Number,
},
data() {
return {
afterSale: false,
category_id: '',
category_name: '',
}
},
methods: {
reset() {
this.activeIndex = []
},
getShop(item, category_id) {
if (uni.getStorageSync('list').indexOf(category_id) > -1) {
return this.$toast('此分类已被设置规则')
}
let arrIndex = this.activeIndex.indexOf(category_id)
if (arrIndex > -1) {
this.activeIndex.splice(arrIndex, 1)
} else {
this.activeIndex.push(category_id)
}
console.log(this.activeIndex)
},
submit() {
let idList = [];
this.tabList.forEach(item => {
if (this.activeIndex.indexOf(item.category_id) > -1) {
idList.push(item.category_id);
}
});
let storage = uni.getStorageSync('list') || []
if (storage.length > 0 && idList.length > 0) {
idList = this.getArrDifference(idList, storage)
}
this.$emit('getChoseCategory', {
category_id: idList,
})
},
getArrDifference(arr1, arr2) {
return arr1.concat(arr2).filter(function(v, i, arr) {
return arr.indexOf(v) === arr.lastIndexOf(v);
});
}
}
}
</script>
<style lang="scss" scoped>
.afterSales {
padding: 32upx;
.btnGroup {
margin: 40upx 0;
display: flex;
justify-content: center;
align-items: center;
.reset {
width: 216upx;
height: 70upx;
background: #E9E9E9;
border-radius: 22px 22px 22px 22px;
opacity: 1;
font-size: 28upx;
font-family: PingFang SC, PingFang SC;
font-weight: 500;
color: #585858;
line-height: 70upx;
text-align: center;
}
.submit {
width: 216upx;
height: 70upx;
background: linear-gradient(180deg, #FD5D06 0%, #F3211A 100%);
border-radius: 50px 50px 50px 50px;
opacity: 1;
font-size: 28upx;
font-family: PingFang SC, PingFang SC;
font-weight: 500;
color: #FFFFFF;
line-height: 70upx;
text-align: center;
}
}
.filterTitle {
font-size: 32upx;
font-family: PingFang SC, PingFang SC;
font-weight: 500;
color: #303030;
text-align: center;
padding-bottom: 30rpx;
border-bottom: 1px solid #EAEAEA;
}
.shopItem {
margin-top: 40rpx;
display: flex;
flex-wrap: wrap;
justify-content: space-between;
align-items: center;
max-height: 750rpx;
overflow-y: auto;
.shopText {
width: 150upx;
height: 72upx;
background: #FFFFFF;
border-radius: 3px 3px 3px 3px;
border: 1px solid #D6D6D6;
position: relative;
margin-bottom: 24upx;
display: flex;
justify-content: center;
align-items: center;
text {
font-size: 26upx;
font-family: PingFang SC, PingFang SC;
font-weight: 500;
color: #B6B6B6;
}
image {
position: absolute;
z-index: 9;
right: -8upx;
bottom: -8upx;
height: 0;
width: 50upx;
height: auto;
}
}
.active {
text {
color: #FF4F40;
}
border: 1px solid #FF4F40;
}
}
}
</style>