model.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. import request from '../../../Utils/RequestUtils';
  2. import Toast from '../../../flooks/Toast';
  3. import MapModel from '../../Map/model';
  4. const HomeModel = (now) => ({
  5. bannerList: [],
  6. categories: [],
  7. newMerchants: [],
  8. allnewMerchants: [],
  9. promote1: [],
  10. promote2: [],
  11. timeTag: {},
  12. list: [],
  13. page: 0,
  14. size: 20,
  15. finish: false,
  16. loading: false,
  17. location: {},
  18. addressName: '',
  19. loadingTop: true,
  20. sort: '',
  21. filter: '',
  22. tag: '',
  23. natureId: '',
  24. endAmount: '',
  25. merchantNatureList: [],
  26. initHome() {
  27. now({
  28. bannerList: [],
  29. list: [],
  30. categories: [],
  31. newMerchants: [],
  32. allnewMerchants: [],
  33. promote1: [],
  34. promote2: [],
  35. timeTag: {},
  36. loadingTop: true,
  37. sort: '',
  38. });
  39. const { locationEvent } = now();
  40. locationEvent()
  41. .then(() => {
  42. const { chooseInfo } = now(MapModel);
  43. const { location } = chooseInfo;
  44. return request.get('/merchant/index', {
  45. params: { latitude: location.lat, longitude: location.lng },
  46. });
  47. })
  48. .then((res) => {
  49. now({
  50. bannerList: res.banner,
  51. categories: res.categories.slice(0, 5),
  52. newMerchants: res.newMerchants.slice(0, 4),
  53. allnewMerchants: res.newMerchants,
  54. promote1: res.promote1.slice(0, 2),
  55. promote2: res.promote2.slice(0, 4),
  56. timeTag: res.timeTag,
  57. loadingTop: false,
  58. });
  59. const { changeSort } = now();
  60. return changeSort('');
  61. });
  62. },
  63. locationEvent() {
  64. const { chooseInfo, getChooseInfo } = now(MapModel);
  65. if (chooseInfo) {
  66. return Promise.resolve();
  67. } else {
  68. return getChooseInfo();
  69. }
  70. },
  71. getData() {
  72. const { page, size, list, sort, filter, tag, natureId, endAmount } = now();
  73. const { loading, warnning, clearLoading } = now(Toast);
  74. loading();
  75. const { chooseInfo } = now(MapModel);
  76. const { location } = chooseInfo;
  77. const params = { latitude: location.lat, longitude: location.lng };
  78. if (sort) {
  79. params.sort = sort;
  80. }
  81. if (filter) {
  82. params.filter = filter;
  83. }
  84. if (tag) {
  85. params.tag = tag;
  86. }
  87. if (natureId) {
  88. params.natureId = natureId;
  89. }
  90. if (endAmount) {
  91. params.startAmount = 0;
  92. params.endAmount = endAmount;
  93. }
  94. request
  95. .get('/settings/show', {
  96. params,
  97. })
  98. .then((res) => {
  99. clearLoading();
  100. now({
  101. list: list.concat(res),
  102. finish: true,
  103. page: 0,
  104. loading: false,
  105. });
  106. })
  107. .catch((e) => {
  108. warnning(e.error);
  109. });
  110. },
  111. changeChooseMap(info) {
  112. console.log(info);
  113. },
  114. changeSort(type) {
  115. now({
  116. sort: type,
  117. page: 0,
  118. list: [],
  119. });
  120. const { getData } = now();
  121. getData();
  122. },
  123. getNature() {
  124. request.get('/merchantNature/all').then((res) => {
  125. now({
  126. merchantNatureList: res.content,
  127. });
  128. });
  129. },
  130. ChangeFiliter(filter, tag, natureId, endAmount) {
  131. now({
  132. filter,
  133. tag,
  134. natureId,
  135. endAmount,
  136. page: 0,
  137. list: [],
  138. });
  139. const { getData } = now();
  140. getData();
  141. },
  142. clearFiliter() {
  143. now({
  144. filter: '',
  145. tag: '',
  146. natureId: '',
  147. endAmount: '',
  148. page: 0,
  149. list: [],
  150. });
  151. const { getData } = now();
  152. getData();
  153. },
  154. searchHome(val, type, page) {
  155. const { chooseInfo } = now(MapModel);
  156. const { location } = chooseInfo;
  157. const { loading, warnning, clearLoading } = now(Toast);
  158. loading();
  159. const params = { latitude: location.lat, longitude: location.lng, page };
  160. if (type === 'popularTag') {
  161. params.popularTag = val;
  162. } else {
  163. params.search = val;
  164. }
  165. return request
  166. .get('/settings/search', {
  167. params,
  168. })
  169. .then((res) => {
  170. clearLoading();
  171. return Promise.resolve(res);
  172. })
  173. .catch((e) => {
  174. clearLoading();
  175. // warnning(e.error);
  176. return Promise.reject();
  177. });
  178. },
  179. });
  180. export default HomeModel;