| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193 | import {    getHeight} from "../../utils/GetRheRemainingHeight";Component({    properties: {        list: {            type: {                type: Array            },            value: [{                label: "筛选1",                index: null,                showName: "name", //显示字段                valueKey: "name", //返回Key                selectKey: "id", //传参 代表选着字段 不传参返回整个选择对象                value: "", //选中值                default: "", //默认索引                list: [{                    name: "a1",                    id: 0                }, {                    name: "a2",                    id: 1                }]            }]        },        show: {            type: Boolean        },        handle: {            type: Function        }, //按钮回调函数        dateRange: {            type: Boolean        }, //是否开启日期范围筛选        dateRangeName: {            type: String,            value: "日期范围"        },        dateRange1: {            type: Boolean        }, //是否开启日期范围筛选        zIndex: {            type: String,            value: 99999,        },        interrupt: {            type: Function        },        isReset: {            type: Boolean,            value: true        },        minus: {            type: [Number, String],            value: 80        }    },    data: {        startdate: "", //开始时间        enddate: "", //结束时间        periodstart: "",        periodend: "",    },    observers: {        "show"(newVal) {            if (newVal) getHeight('.head', this).then(res => this.setData({                listHeight: res - this.data.minus            }));        }    },    methods: {        /* 选择 */        onSelect(e) {            const {                item, //被选项                index, //列表下标                i //被选项下标            } = e.currentTarget.dataset;            if (this.data.list[index].index == i) {                this.setData({                    [`list[${index}].value`]: "",                    [`list[${index}].index`]: null                });            } else {                this.setData({                    [`list[${index}].value`]: this.data.list[index].selectKey ? item[this.data.list[index].selectKey] : item,                    [`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            })        },        onSelectCheckbox(e) {            const {                item, //被选项                index, //列表下标                i //被选项下标            } = e.currentTarget.dataset,                list = this.data.list;            if (list[index].index == "" || list[index].index == null) {                list[index].index = [];                list[index].value = [];            }            let arrIndex = list[index].index.indexOf(i)            if (arrIndex == -1) {                list[index].index.push(i)                list[index].value.push(list[index].selectKey ? item[list[index].selectKey] : item)            } else {                list[index].index.splice(arrIndex, 1)                list[index].value.splice(arrIndex, 1)            };            this.setData({                list            })            if (this.data.list[index].interrupt) this.triggerEvent("interrupt", {                item,                index,                name: this.data.list[index].selectKey,                list            })        },        /* 点击按钮 */        onClick(e) {            const {                name            } = e.target.dataset;            if (name == 'reset') {                this.setData({                    list: this.data.list.map(v => {                        let value = "",                            index = null;                        try {                            if ((v.default+'').length) {                                index = v.default;                                value = v.selectKey ? v.list[v.default][v.selectKey] : v.list[v.default]                            }                        } catch (error) {                        }                        v.value = value;                        v.index = index;                        return v;                    })                })                this.setData({                    startdate: '',                    enddate: ''                })                let MultilevelClass = this.selectComponent("#MultilevelClass");                if (MultilevelClass) MultilevelClass.clearChild()            };            let obj = {};            this.data.list.forEach(v => {                if (v.type == 'multilevelClass') {                    obj[v.valueKey] = getApp().globalData.temporaryId;                    delete(getApp().globalData.temporaryId);                } else if (v.type == 'checkbox') {                    obj[v.valueKey] = v.value || [];                } else {                    obj[v.valueKey] = v.value;                }            });            if (this.data.dateRange) {                obj.startdate = this.data.startdate;                obj.enddate = this.data.enddate;            };            if (this.data.dateRange1) {                obj.periodstart = this.data.periodstart;                obj.periodend = this.data.periodend;            };            this.triggerEvent("handle", obj);            this.onClose();        },        /* 筛选日期范围 */        changeDate(e) {            const name = e.currentTarget.dataset.name,                value = e.detail.value;            this.setData({                [name]: value            })        },        onClose() {            this.setData({                show: false            })        }    }})
 |