index.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. const getHeight = require("../../utils/GetRheRemainingHeight");
  2. Component({
  3. properties: {
  4. list: {
  5. type: Array,
  6. value: [{
  7. label: "筛选1",
  8. index: null,
  9. showName: "name", //显示字段
  10. valueKey: "name", //返回Key
  11. selectKey: "id", //传参 代表选着字段 不传参返回整个选择对象
  12. value: "", //选中值
  13. list: [{
  14. name: "a1",
  15. id: 0
  16. }, {
  17. name: "a2",
  18. id: 1
  19. }]
  20. }]
  21. },
  22. show: {
  23. type: Boolean
  24. },
  25. handle: {
  26. type: Function
  27. }, //按钮回调函数
  28. dateRange: { //是否开启日期范围筛选
  29. type: Boolean,
  30. value: true
  31. },
  32. zIndex: {
  33. type: String,
  34. value: 99999,
  35. },
  36. interrupt: {
  37. type: Function
  38. }
  39. },
  40. data: {
  41. startdate: "", //开始时间
  42. enddate: "", //结束时间
  43. },
  44. lifetimes: {
  45. ready() {
  46. getHeight.getHeight('.head', this).then(res => this.setData({
  47. listHeight: res - 80
  48. }));
  49. }
  50. },
  51. methods: {
  52. /* 选择 */
  53. onSelect(e) {
  54. const {
  55. item, //被选项
  56. index, //列表下标
  57. i //被选项下标
  58. } = e.currentTarget.dataset;
  59. if (this.data.list[index].index == i) {
  60. this.setData({
  61. [`list[${index}].value`]: "",
  62. [`list[${index}].index`]: null
  63. });
  64. } else {
  65. this.setData({
  66. [`list[${index}].value`]: this.data.list[index].selectKey ? item[this.data.list[index].selectKey] : item,
  67. [`list[${index}].index`]: i
  68. });
  69. }
  70. if (this.data.list[index].interrupt) this.triggerEvent("interrupt", {
  71. item,
  72. index,
  73. name: this.data.list[index].selectKey,
  74. list: this.data.list
  75. })
  76. },
  77. /* 点击按钮 */
  78. onClick(e) {
  79. const {
  80. name
  81. } = e.target.dataset;
  82. if (name == 'reset') {
  83. this.setData({
  84. list: this.data.list.map(v => {
  85. v.value = "";
  86. v.index = null;
  87. return v;
  88. })
  89. })
  90. this.setData({
  91. startdate: '',
  92. enddate: ''
  93. })
  94. let MultilevelClass = this.selectComponent("#MultilevelClass");
  95. if (MultilevelClass) MultilevelClass.clearChild()
  96. this.triggerEvent("handle", {})
  97. } else if (name == 'confirm') {
  98. let obj = {};
  99. this.data.list.forEach(v => {
  100. if (v.type == 'multilevelClass') {
  101. obj[v.valueKey] = getApp().globalData.temporaryId;
  102. delete(getApp().globalData.temporaryId);
  103. } else {
  104. obj[v.valueKey] = v.value;
  105. }
  106. });
  107. if (this.data.dateRange) {
  108. obj.startdate = this.data.startdate;
  109. obj.enddate = this.data.enddate;
  110. };
  111. this.triggerEvent("handle", obj);
  112. }
  113. this.onClose();
  114. },
  115. /* 筛选日期范围 */
  116. changeDate(e) {
  117. const name = e.currentTarget.dataset.name,
  118. value = e.detail.value;
  119. this.setData({
  120. [name]: value
  121. })
  122. },
  123. onClose() {
  124. this.setData({
  125. show: false
  126. })
  127. }
  128. }
  129. })