index.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. import { connect } from 'herculex';
  2. import { getFloorList } from '../utils';
  3. Component(connect({
  4. mapStateToProps: {
  5. passport: state => state.$global.passport
  6. }
  7. })({
  8. props: {
  9. componentData: {}
  10. },
  11. data: {
  12. activatedRoomStep: 1,
  13. activatedTreeIndex: 0,
  14. focus: false,
  15. roomSteps: [{
  16. active: true,
  17. content: ''
  18. }, {
  19. active: false,
  20. content: ''
  21. }],
  22. trees: [],
  23. currentTree: []
  24. },
  25. didMount() {
  26. // 获取当前页面的参数信息
  27. const query = getCurrentPages().pop().options || {};
  28. this.init(query);
  29. },
  30. methods: {
  31. async init(query) {
  32. const params = {
  33. sceneCode: query.sceneCode,
  34. communityCode: query.communityCode,
  35. communityName: query.communityName
  36. };
  37. const data = await getFloorList(params);
  38. const roomSteps = [{
  39. active: true,
  40. content: ''
  41. }, {
  42. active: false,
  43. content: ''
  44. }];
  45. data[0].type = 'check';
  46. roomSteps[0].content = data[0].name;
  47. this.setData({
  48. trees: data,
  49. currentTree: data,
  50. roomSteps
  51. });
  52. },
  53. onRoomSelectorStepClick(step, index) {
  54. const {
  55. trees,
  56. activatedRoomStep,
  57. roomSteps
  58. } = this.data;
  59. if (index >= activatedRoomStep - 1) return;
  60. const currentTree = index > 0 ? trees[index - 1].children : trees;
  61. const defaultRoom = {
  62. active: false,
  63. content: ''
  64. };
  65. const _roomSteps = roomSteps.map((item, i) => {
  66. if (i > index) item = defaultRoom;
  67. return item;
  68. });
  69. _roomSteps[index] = step;
  70. const _currentTree = currentTree.map(item => {
  71. item.type = step.content && item.name === step.content ? 'check' : 'none';
  72. return item;
  73. });
  74. this.setData({
  75. activatedRoomStep: index + 1,
  76. currentTree: _currentTree,
  77. roomSteps: _roomSteps
  78. });
  79. },
  80. onTreeClick(tree) {
  81. const defaultRoom = {
  82. active: false,
  83. content: ''
  84. };
  85. let {
  86. currentTree,
  87. activatedRoomStep,
  88. // eslint-disable-next-line prefer-const
  89. roomSteps
  90. } = this.data;
  91. roomSteps[activatedRoomStep - 1].content = tree.name;
  92. if (tree.children) {
  93. roomSteps[activatedRoomStep] = defaultRoom;
  94. activatedRoomStep += 1;
  95. currentTree = tree.children;
  96. }
  97. const typeTree = currentTree.map(item => {
  98. const _ = roomSteps[activatedRoomStep - 1].content;
  99. item.type = _ && item.name === _ ? 'check' : 'none';
  100. return item;
  101. });
  102. this.setData({
  103. currentTree: [...typeTree],
  104. activatedRoomStep,
  105. roomSteps
  106. });
  107. if (!tree.children) {
  108. let roomInfo = '';
  109. roomSteps.forEach(item => {
  110. roomInfo += item.content;
  111. });
  112. const newPassport = { ...this.data.passport,
  113. buildingName: roomSteps[0].content,
  114. unitName: roomSteps[1].content,
  115. houseName: roomSteps[2].content,
  116. roomInfo
  117. };
  118. this.commit('$global:updateState', {
  119. passport: newPassport
  120. });
  121. my.navigateBack();
  122. }
  123. }
  124. }
  125. }));