index.js 4.0 KB

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