<template> <base-drawer mode="right" :visible="visible" background-color="transparent" mask maskClosable @close="closeDrawer"> <view class="edit-lable"> <!-- #ifdef MP --> <view class="accountTitle"> <view :style="{height:getHeight.barTop+'px'}"></view> <view class="sysTitle acea-row row-center-wrapper" :style="{height:getHeight.barHeight+'px'}"> <view>筛选</view> </view> </view> <view :style="{height:(getHeight.barTop+getHeight.barHeight)+'px'}"></view> <view class="list" v-if="isStore" :style="'height: calc(100% - '+(getHeight.barTop+getHeight.barHeight*2+150)+'rpx - constant(safe-area-inset-bottom));height: calc(100% - '+(getHeight.barTop+getHeight.barHeight*2+150)+'rpx - env(safe-area-inset-bottom))'"> <!-- #endif --> <!-- #ifndef MP --> <view class="header">筛选</view> <view class="list" v-if="isStore"> <!-- #endif --> <scroll-view scroll-y="true" style="height: 100%"> <view class="goods_type"> 商品类型 </view> <view class="goods_type_box"> <view class="goods_type_item" v-for="(item,index) in goodsType" :key="item.id" @click="selectProduct(item.id)" :class="{selectActive:item.id===selectId.productType}"> {{item.text}} </view> </view> <view class="merchants_type"> 商家分类 </view> <view class="merchants_type_box"> <view class="merchants_type_item" v-for="(item,index) in productType" :key="item.id"> <view class="type_item_operate"> <text :class="{oneSelectActive:item.id==selectId.cateId}" @click="selectMerchant(item.id)">{{item.name}}</text> <text v-if="item.childList.length>3" @click="changeHide(item)">{{item.hide?'展开':'收起'}}<text class="iconfont" :class="item.hide?'icon-xiangxia':'icon-xiangshang'"></text></text> </view> <view class="main_box"> <template v-for="(citem,cindex) in item.childList"> <view class="main_item" :key="citem.id" v-if="!(cindex>2&&item.hide)" @click="selectMerchant(citem.id)" :class="{selectActive:citem.id==selectId.cateId}"> {{citem.name}} </view> </template> </view> </view> </view> </scroll-view> </view> <view class="empty-box" v-else> <emptyPage title="暂无分类~" :imgSrc="urlDomain+'crmebimage/presets/noSearch.png'"></emptyPage> </view> <view class="footer acea-row row-between-wrapper"> <view class="bnt acea-row row-center-wrapper" @tap="reset">重置</view> <view class="bnt on acea-row row-center-wrapper" @tap="define">确定</view> </view> </view> </view> </base-drawer> </template> <script> import { mapGetters } from "vuex"; import emptyPage from '@/components/emptyPage.vue'; import baseDrawer from '@/components/tui-drawer/tui-drawer.vue'; import {productCategroyGetTree} from '@/api/work.js' export default { computed:{ ...mapGetters(['selectMerId']), }, components: { emptyPage, baseDrawer }, props: { visible: { type: Boolean, default: false, }, }, data: function() { return { urlDomain: this.$Cache.get("imgHost"), // #ifdef MP getHeight: this.$util.getWXStatusHeight(), // #endif selectId: { cateId: '', productType: '', }, labelList: [], goodsInfo: {}, //列表中已存在id(固定不变) dataLabel: [], //已存在选中id(随着选中可以变化) isStore: true, //判断是否存在标签 num: 0, // 判断是否为批量 ids: [], //批量时的id集合 goodsType: [ { id: 0, text: '普通商品' }, { id: 2, text: '虚拟商品' }, { id: 5, text: '云盘商品' }, { id: 6, text: '卡密商品' } ], productType: [], }; }, mounted() {}, created() { this.getTree() }, methods: { // 确认 define(){ this.$emit('successChange',this.selectId) }, getTree(){ productCategroyGetTree(this.selectMerId).then(res=>{ this.productType=res.data this.productType.forEach(item=>{ item.hide=true }) }) }, changeHide(item){ item.hide=!item.hide this.productType=[...this.productType] }, //重置 reset() { this.selectId = { cateId: '', productType: '', } }, //选择商品分类 selectProduct(id) { this.selectId.productType = id }, //选择商户分类 selectMerchant(id) { this.selectId.cateId = id }, closeDrawer() { this.$emit('closeDrawer'); } } } </script> <style lang="scss" scoped> .accountTitle { position: fixed; left: 0; top: 0; width: 100%; z-index: 99; padding-bottom: 6rpx; .sysTitle { width: 100%; position: relative; font-weight: 600; color: #333333; font-size: 34rpx; font-family: PingFang SC, PingFang SC; } } .edit-lable { background-color: #fff; width: 670rpx; // border-radius: 40rpx 0 0 40rpx; height: 100%; padding: 20rpx 34rpx 0 32rpx; .header { text-align: center; height: 96rpx; line-height: 96rpx; font-size: 34rpx; font-family: PingFang SC, PingFang SC; font-weight: 600; color: #333333; position: relative; } .list { overflow: auto; height: calc(100% - 208rpx); height: calc(100% - (208rpx + constant(safe-area-inset-bottom))); height: calc(100% - (208rpx + env(safe-area-inset-bottom))); .item { margin-top: 48rpx; .title { font-size: 28rpx; font-family: PingFang SC, PingFang SC; font-weight: 600; color: #333333; } .listn { .name { width: 184rpx; height: 56rpx; background-color: #F5F5F5; border-radius: 50rpx; border: 1rpx solid #F5F5F5; font-size: 24rpx; font-family: PingFang SC, PingFang SC; font-weight: 400; color: #333333; margin-right: 26rpx; margin-top: 24rpx; padding: 0 8rpx; &.on { background-color: #E9F2FE; border-color: #2A7EFB; color: #2A7EFB; } &:nth-of-type(3n) { margin-right: 0; } } } } } .footer { width: 100%; height: 112rpx; position: fixed; bottom: 0; left: 0; padding: 0 32rpx; background-color: #fff; border-radius: 0 0 0 40rpx; height: calc(112rpx + constant(safe-area-inset-bottom)); ///兼容 IOS<11.2/ height: calc(112rpx + env(safe-area-inset-bottom)); ///兼容 IOS>11.2/ padding-bottom: constant(safe-area-inset-bottom); ///兼容 IOS<11.2/ padding-bottom: env(safe-area-inset-bottom); ///兼容 IOS>11.2/ .bnt { width: 296rpx; height: 72rpx; border: 1px solid #2A7EFB; border-radius: 200rpx; font-size: 26rpx; font-family: PingFang SC, PingFang SC; font-weight: 400; color: #2A7EFB; &.on { background: #2A7EFB; border-color: #2A7EFB; color: #fff; } } } .goods_type { font-weight: 600; font-size: 14px; color: #333333; } .goods_type_box { display: flex; flex-wrap: wrap; padding: 0 10rpx; justify-content: space-between; margin-top: 14rpx; .goods_type_item { background: #F5F5F5; border-radius: 200rpx; width: 184rpx; height: 56rpx; text-align: center; line-height: 56rpx; margin-top: 20rpx; } } .merchants_type { font-weight: 600; font-size: 14px; color: #333333; margin-top: 24rpx; } .merchants_type_box { .merchants_type_item { .type_item_operate { display: flex; justify-content: space-between; font-weight: 400; font-size: 24rpx; color: #666666; padding: 20rpx 0; .icon-xiangshang, .icon-xiangxia { font-weight: 400; font-size: 24rpx; color: #666666; } } } .main_box { margin-bottom: 30rpx; .main_item { display: inline-block; background: #F5F5F5; border-radius: 100px 100px 100px 100px; width: 184rpx; height: 56rpx; text-align: center; line-height: 56rpx; margin-right: 26rpx; margin-top: 20rpx; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; &:nth-of-type(3n) { margin-right: 0rpx !important; } } } } } .selectActive { background: #E9F2FE !important; border-radius: 200rpx; border: 1px solid #2A7EFB; color: #2A7EFB; } .oneSelectActive{ color: #2A7EFB; } </style>