dropdownmenu.js 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253
  1. Component({
  2. properties: {
  3. dropDownMenuTitle: {
  4. type: Array,
  5. value: [],
  6. },
  7. dropDownMenuDistrictData: {
  8. type: Array,
  9. value: [],
  10. observer: function(newVal, oldVal) {
  11. let model = newVal[0] ? newVal[0] : null
  12. this.selectDefaltDistrictLeft(model)
  13. }
  14. },
  15. dropDownMenuSourceData: {
  16. type: Array,
  17. value: []
  18. },
  19. dropDownMenuStyleData: {
  20. type: Array,
  21. value: []
  22. },
  23. dropDownMenuFilterData: {
  24. type: Array,
  25. value: []
  26. },
  27. },
  28. data: {
  29. // private properity
  30. district_open: false, // 区域
  31. source_open: false, // 来源
  32. style_open: false, // 出租 出售
  33. filteropen: false, // 筛选
  34. shownavindex: '',
  35. dropDownMenuDistrictDataRight: {},
  36. district_left_select: '',
  37. district_right_select: '',
  38. district_right_select_name: '',
  39. selected_style_id: 0,
  40. selected_style_name: '',
  41. selected_source_id: 0,
  42. selected_source_name: '',
  43. selected_filter_id: 0,
  44. selected_filter_name: ''
  45. },
  46. methods: {
  47. tapDistrictNav: function(e) {
  48. if (this.data.district_open) {
  49. this.setData({
  50. district_open: false,
  51. source_open: false,
  52. style_open: false,
  53. filter_open: false,
  54. shownavindex: 0
  55. })
  56. } else {
  57. this.setData({
  58. district_open: true,
  59. style_open: false,
  60. source_open: false,
  61. filter_open: false,
  62. shownavindex: e.currentTarget.dataset.nav
  63. })
  64. }
  65. },
  66. tapSourceNav: function(e) {
  67. if (this.data.source_open) {
  68. this.setData({
  69. source_open: false,
  70. style_open: false,
  71. district_open: false,
  72. filter_open: false,
  73. shownavindex: 0
  74. })
  75. } else {
  76. this.setData({
  77. source_open: true,
  78. style_open: false,
  79. district_open: false,
  80. filter_open: false,
  81. shownavindex: e.currentTarget.dataset.nav
  82. })
  83. }
  84. },
  85. tapStyleNav: function(e) {
  86. if (this.data.style_open) {
  87. this.setData({
  88. source_open: false,
  89. style_open: false,
  90. district_open: false,
  91. filter_open: false,
  92. shownavindex: 0
  93. })
  94. } else {
  95. this.setData({
  96. source_open: false,
  97. style_open: true,
  98. filter_open: false,
  99. district_open: false,
  100. shownavindex: e.currentTarget.dataset.nav
  101. })
  102. }
  103. console.log(e.target)
  104. },
  105. tapFilterNav: function(e) {
  106. if (this.data.filter_open) {
  107. this.setData({
  108. source_open: false,
  109. style_open: false,
  110. district_open: false,
  111. filter_open: false,
  112. shownavindex: 0
  113. })
  114. } else {
  115. this.setData({
  116. source_open: false,
  117. style_open: false,
  118. district_open: false,
  119. filter_open: true,
  120. shownavindex: e.currentTarget.dataset.nav
  121. })
  122. }
  123. },
  124. selectDefaltDistrictLeft(model) {
  125. if (!model) {
  126. return
  127. }
  128. var model = model.childModel;
  129. var selectedId = model.id
  130. var selectedTitle = model.title;
  131. this.setData({
  132. dropDownMenuDistrictDataRight: model ? model : '',
  133. district_left_select: selectedId,
  134. district_right_select: '',
  135. })
  136. },
  137. selectDistrictLeft: function(e) {
  138. var model = e.target.dataset.model.childModel;
  139. var selectedId = e.target.dataset.model.id
  140. var selectedTitle = e.target.dataset.model.title;
  141. this.setData({
  142. dropDownMenuDistrictDataRight: model ? model : '',
  143. district_left_select: selectedId,
  144. district_right_select: '',
  145. })
  146. },
  147. selectDistrictRight: function(e) {
  148. var selectedId = e.target.dataset.model.id
  149. var selectedTitle = e.target.dataset.model.title;
  150. this.closeHyFilter();
  151. this.setData({
  152. district_right_select: selectedId,
  153. district_right_select_name: selectedTitle
  154. })
  155. this.triggerEvent("selectedItem", {
  156. index: this.data.shownavindex,
  157. selectedId: selectedId,
  158. selectedTitle: selectedTitle
  159. })
  160. },
  161. selectSourceItem: function(e) {
  162. var selectedId = e.target.dataset.model.id
  163. var selectedTitle = e.target.dataset.model.title;
  164. this.closeHyFilter();
  165. this.setData({
  166. selected_source_id: selectedId,
  167. selected_source_name: selectedTitle
  168. })
  169. this.triggerEvent("selectedItem", {
  170. index: this.data.shownavindex,
  171. selectedId: selectedId,
  172. selectedTitle: selectedTitle
  173. })
  174. },
  175. selectFilterItem: function(e) {
  176. var selectedId = e.target.dataset.model.id
  177. var selectedTitle = e.target.dataset.model.title;
  178. this.closeHyFilter();
  179. this.setData({
  180. selected_filter_id: selectedId,
  181. selected_filter_name: selectedTitle
  182. })
  183. this.triggerEvent("selectedItem", {
  184. index: this.data.shownavindex,
  185. selectedId: selectedId,
  186. selectedTitle: selectedTitle
  187. })
  188. },
  189. selectStyleItem: function(e) {
  190. var selectedId = e.target.dataset.model.id
  191. var selectedTitle = e.target.dataset.model.title;
  192. this.closeHyFilter();
  193. this.setData({
  194. selected_style_id: selectedId,
  195. selected_style_name: selectedTitle
  196. })
  197. this.triggerEvent("selectedItem", {
  198. index: this.data.shownavindex,
  199. selectedId: selectedId,
  200. selectedTitle: selectedTitle
  201. })
  202. },
  203. /**关闭筛选 */
  204. closeHyFilter: function() {
  205. if (this.data.district_open) {
  206. this.setData({
  207. district_open: false,
  208. source_open: false,
  209. style_open: false,
  210. filter_open: false,
  211. })
  212. } else if (this.data.source_open) {
  213. this.setData({
  214. source_open: false,
  215. style_open: false,
  216. district_open: false,
  217. filter_open: false,
  218. })
  219. } else if (this.data.style_open) {
  220. this.setData({
  221. source_open: false,
  222. style_open: false,
  223. district_open: false,
  224. filter_open: false,
  225. })
  226. } else if (this.data.filter_open) {
  227. this.setData({
  228. source_open: false,
  229. style_open: false,
  230. district_open: false,
  231. filter_open: false,
  232. })
  233. }
  234. },
  235. },
  236. //组件生命周期函数,在组件实例进入页面节点树时执行
  237. attached: function() {
  238. },
  239. })