xiaohaizhao 2 years ago
parent
commit
0a96fd3c36

+ 18 - 4
components/Yl_Filtrate/index.js

@@ -21,7 +21,7 @@ Component({
         },
         },
         show: Boolean,
         show: Boolean,
         handle: Function, //按钮回调函数
         handle: Function, //按钮回调函数
-        dateRange: {//是否开启日期范围筛选
+        dateRange: { //是否开启日期范围筛选
             type: Boolean,
             type: Boolean,
             value: true
             value: true
         },
         },
@@ -29,6 +29,7 @@ Component({
             type: String,
             type: String,
             value: 99999,
             value: 99999,
         },
         },
+        interrupt: Function
     },
     },
     data: {
     data: {
         startdate: "", //开始时间
         startdate: "", //开始时间
@@ -60,6 +61,12 @@ Component({
                     [`list[${index}].index`]: i
                     [`list[${index}].index`]: i
                 });
                 });
             }
             }
+            if (this.data.list[index].interrupt) this.triggerEvent("interrupt", {
+                item,
+                index,
+                name: this.data.list[index].selectKey,
+                list: this.data.list
+            })
         },
         },
         /* 点击按钮 */
         /* 点击按钮 */
         onClick(e) {
         onClick(e) {
@@ -75,14 +82,21 @@ Component({
                     })
                     })
                 })
                 })
                 this.setData({
                 this.setData({
-                    startdate:'',
-                    enddate:''
+                    startdate: '',
+                    enddate: ''
                 })
                 })
+                let MultilevelClass = this.selectComponent("#MultilevelClass");
+                if (MultilevelClass) MultilevelClass.clearChild()
                 this.triggerEvent("handle", {})
                 this.triggerEvent("handle", {})
             } else if (name == 'confirm') {
             } else if (name == 'confirm') {
                 let obj = {};
                 let obj = {};
                 this.data.list.forEach(v => {
                 this.data.list.forEach(v => {
-                    obj[v.valueKey] = v.value;
+                    if (v.type == 'multilevelClass') {
+                        obj[v.valueKey] = getApp().globalData.temporaryId;
+                        delete(getApp().globalData.temporaryId);
+                    } else {
+                        obj[v.valueKey] = v.value;
+                    }
                 });
                 });
                 if (this.data.dateRange) {
                 if (this.data.dateRange) {
                     obj.startdate = this.data.startdate;
                     obj.startdate = this.data.startdate;

+ 3 - 1
components/Yl_Filtrate/index.json

@@ -1,4 +1,6 @@
 {
 {
     "component": true,
     "component": true,
-    "usingComponents": {}
+    "usingComponents": {
+        "MultilevelClass": "./modules/multilevelClass"
+    }
 }
 }

+ 4 - 1
components/Yl_Filtrate/index.wxml

@@ -1,8 +1,10 @@
 <van-popup show="{{ show }}" position="right" custom-style="width: 660rpx; height:100vh;" z-index="{{zIndex}}" bind:close="onClose">
 <van-popup show="{{ show }}" position="right" custom-style="width: 660rpx; height:100vh;" z-index="{{zIndex}}" bind:close="onClose">
     <view class="head" />
     <view class="head" />
     <Yl_ListBox height="{{listHeight}}" pullDown='{{false}}'>
     <Yl_ListBox height="{{listHeight}}" pullDown='{{false}}'>
+
         <block wx:for="{{list}}" wx:key="label">
         <block wx:for="{{list}}" wx:key="label">
-            <view class="groud" wx:if="{{item.list.length}}">
+            <MultilevelClass id="MultilevelClass" item='{{item}}' wx:if="{{item.type=='multilevelClass'}}" />
+            <view wx:elif="{{item.list.length}}" class="groud">
                 <view class="label">
                 <view class="label">
                     {{item.label}}
                     {{item.label}}
                 </view>
                 </view>
@@ -11,6 +13,7 @@
                 </view>
                 </view>
             </view>
             </view>
         </block>
         </block>
+
         <view wx:if="{{dateRange}}" class="groud">
         <view wx:if="{{dateRange}}" class="groud">
             <view class="label">
             <view class="label">
                 日期范围
                 日期范围

+ 57 - 0
components/Yl_Filtrate/modules/multilevelClass.js

@@ -0,0 +1,57 @@
+Component({
+    properties: {
+        item: Object,
+        jumboSize: Boolean
+    },
+    data: {
+        active: {}
+    },
+    methods: {
+        clearChild() {
+            this.setData({
+                "item.index": null,
+                childClass: null
+            });
+            let MultilevelClass = this.selectComponent("#MultilevelClass");
+            if (MultilevelClass) MultilevelClass.clearChild()
+            getApp().globalData.temporaryId = null;
+        },
+        onSelect(e) {
+            const {
+                i,
+                item
+            } = e.currentTarget.dataset;
+            let MultilevelClass = this.selectComponent("#MultilevelClass");
+            if (MultilevelClass) MultilevelClass.clearChild()
+            if (this.data.item.index == i) {
+                getApp().globalData.temporaryId = this.data.item.id || "";
+                this.setData({
+                    "item.index": null,
+                    childClass: null
+                });
+            } else {
+                getApp().globalData.temporaryId = this.data.item.selectKey ? item[this.data.item.selectKey] : JSON.parse(JSON.stringify(item));
+                this.setData({
+                    "item.index": i,
+                    childClass: item.subdep.length ? {
+                        index: null,
+                        label: item.itemclassname + '的下级分类',
+                        list: item.subdep,
+                        selectKey: this.data.item.selectKey,
+                        showName: this.data.item.showName,
+                        type: this.data.item.type,
+                        value: "",
+                        valueKey: this.data.item.valueKey,
+                        id: getApp().globalData.temporaryId
+                    } : null
+                });
+            };
+            //商城
+            getApp().globalData.setTemporaryId && getApp().globalData.setTemporaryId({
+                detail: {
+                    temporaryId: getApp().globalData.temporaryId
+                }
+            })
+        }
+    }
+})

+ 7 - 0
components/Yl_Filtrate/modules/multilevelClass.json

@@ -0,0 +1,7 @@
+{
+    "component": true,
+    "usingComponents": {
+        "MultilevelClass": "./multilevelClass"
+
+    }
+}

+ 12 - 0
components/Yl_Filtrate/modules/multilevelClass.scss

@@ -0,0 +1,12 @@
+@import "../groud.scss";
+
+.jumbo {
+	.content {
+		justify-content: space-between !important;
+
+		.but {
+			width: 240rpx !important;
+			margin-right: 0 !important;
+		}
+	}
+}

+ 10 - 0
components/Yl_Filtrate/modules/multilevelClass.wxml

@@ -0,0 +1,10 @@
+<view wx:if="{{item.list.length}}" class="groud {{jumboSize?'jumbo':''}}">
+    <view class="label">
+        {{item.label}}
+    </view>
+    <view class="content">
+        <van-button custom-class='but {{item.index==i?"active":""}}' wx:for="{{item.list}}" wx:for-item="data" wx:for-index="i" wx:key="i" data-item="{{data}}" data-index="{{index}}" data-i="{{i}}" bindtap="onSelect">{{data[item.showName]}}</van-button>
+    </view>
+</view>
+
+<MultilevelClass jumboSize='{{jumboSize}}' id='MultilevelClass' wx:if="{{childClass}}" item='{{childClass}}' />