123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202 |
- import {
- getHeight
- } from "../../utils/GetRheRemainingHeight";
- Component({
- options: {
- multipleSlots: true
- },
- 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
- }));
- }
- },
- lifetimes: {
- attached: function () {
- getApp().globalData.Language.getLanguagePackage(this)
- }
- },
- 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;
- };
- obj.name = name;
- 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
- })
- }
- }
- })
|