buy.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. import { get,post } from "../../common/request.js"
  2. import stylemap from "../../common/stylemap"
  3. import pathmap from "../../common/pathmap"
  4. import { retCartData } from "../../data/car"
  5. import bindSearch from "../../module/search/search.js"
  6. const app = getApp();
  7. // pages/buy/buy.js
  8. Page({
  9. /**
  10. * 页面的初始数据
  11. */
  12. data: {
  13. windowh: app.globalData.windowh,
  14. list:[],
  15. pagesize:15,
  16. pageindex:0,
  17. lock:false,
  18. searchfouce:false,
  19. selectbar:null,
  20. filters:[
  21. {
  22. title:"排序",
  23. name:"sortby"
  24. },
  25. {
  26. title:"品牌",
  27. name:"brand"
  28. },
  29. {
  30. title:"价格",
  31. name:"price"
  32. },
  33. {
  34. title:"更多",
  35. name:"more"
  36. }
  37. ],
  38. sortbymap:[
  39. {
  40. title:"默认排序",
  41. value:""
  42. },
  43. {
  44. title:"价格最低",
  45. value:"price&asc"
  46. },
  47. {
  48. title:"价格最高",
  49. value:"price&desc"
  50. },
  51. {
  52. title:"车龄最短",
  53. value:"car_age&asc"
  54. },
  55. {
  56. title:"里程最少",
  57. value:"mileage&asc"
  58. },
  59. {
  60. title:"最新发布",
  61. value:"new&asc"
  62. }
  63. ],
  64. searchdata:{
  65. sortby:"",
  66. price:""
  67. }
  68. },
  69. /**
  70. * 生命周期函数--监听页面加载
  71. */
  72. onLoad: function (options) {
  73. bindSearch(this);
  74. this.setData(stylemap);
  75. var searchdata = Object.assign(this.data.searchdata,{keys:options.keys||""});
  76. this.getWheres();
  77. this.getList(this.data.searchdata);
  78. },
  79. transformSearchData:function(searchdata){
  80. var para = Object.assign({},searchdata);
  81. var sortby = para.sortby;
  82. if(sortby){
  83. var sortinfo = sortby.split("&");
  84. para.order_key = sortinfo[0];
  85. para.order_val = sortinfo[1];
  86. }
  87. delete para.sortby;
  88. return para;
  89. },
  90. //获取筛选信息
  91. getWheres:function(){
  92. var _self = this;
  93. get(pathmap.wheres, {
  94. }, function (json) {
  95. var brandlist = {};
  96. json.data.brandlist = []
  97. for(var i = 65; i < 91; i++){
  98. brandlist[String.fromCharCode(i)];
  99. }
  100. json.data.brand.forEach(function(item){
  101. if(Object.prototype.toString.call(brandlist[item.initial])=="[object Array]"){
  102. brandlist[item.initial].push(item);
  103. }
  104. })
  105. for(var name in brandlist){
  106. json.data.brandlist.push(brandlist[name]);
  107. }
  108. _self.setData({
  109. wheres: json.data
  110. })
  111. })
  112. },
  113. getList:function(searchdata){
  114. var _self = this;
  115. var para = this.transformSearchData(searchdata);
  116. para.offset = 0;
  117. para.limit = this.data.pagesize;
  118. if(!this.data.lock){
  119. this.setData({
  120. lock:true
  121. })
  122. get(pathmap.searchcar, para, function (json) {
  123. var list = retCartData(json.data&&json.data.list)
  124. _self.setData({
  125. lock:false,
  126. list:list,
  127. searchdata:searchdata,
  128. offset:0
  129. })
  130. if(list.length==0){
  131. _self.loadLikeCar()
  132. }
  133. })
  134. }
  135. },
  136. showFilter:function(e){
  137. var el = e.currentTarget;
  138. var name = el.dataset.name;
  139. if(name==this.data.selectbar){
  140. name=null;
  141. }
  142. this.setData({
  143. selectbar:name
  144. })
  145. },
  146. changeSort:function(e){
  147. var el = e.currentTarget;
  148. var name = el.dataset.sort;
  149. var searchdata = Object.assign(this.data.searchdata,{sortby:name});
  150. this.setData({
  151. selectbar:""
  152. })
  153. this.getList(searchdata);
  154. },
  155. changePrice:function(e){
  156. var el = e.currentTarget;
  157. var id = el.dataset.id;
  158. var searchdata = Object.assign(this.data.searchdata,{price:id});
  159. this.setData({
  160. selectbar:""
  161. })
  162. this.getList(searchdata);
  163. },
  164. loadLikeCar:function(){
  165. var _self = this;
  166. if(!this.data.like){
  167. get(pathmap.like, {
  168. offset: 0,
  169. limit: 10
  170. }, function (json) {
  171. var list = retCartData(json.data.list)
  172. _self.setData({
  173. like: list
  174. })
  175. })
  176. }
  177. }
  178. })