buy.js 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289
  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:false,
  15. limit:10,
  16. pageindex:0,
  17. lock:false,
  18. searchfouce:false,
  19. selectbar:null,
  20. hasloadall:false,
  21. filters:[
  22. {
  23. title:"排序",
  24. name:"sortby"
  25. },
  26. {
  27. title:"品牌",
  28. name:"brand"
  29. },
  30. {
  31. title:"价格",
  32. name:"price"
  33. },
  34. {
  35. title:"更多",
  36. name:"more"
  37. }
  38. ],
  39. sortbymap:[
  40. {
  41. title:"默认排序",
  42. value:""
  43. },
  44. {
  45. title:"价格最低",
  46. value:"price&asc"
  47. },
  48. {
  49. title:"价格最高",
  50. value:"price&desc"
  51. },
  52. {
  53. title:"车龄最短",
  54. value:"car_age&desc"
  55. },
  56. {
  57. title:"里程最少",
  58. value:"mileage&asc"
  59. },
  60. {
  61. title:"最新发布",
  62. value:"new&desc"
  63. }
  64. ],
  65. searchdata:{
  66. sortby:"",
  67. price:"",
  68. car_age:"",
  69. mileage:"",
  70. transmission:"",
  71. displacement:"",
  72. emission:"",
  73. colour:"",
  74. filterlock:true
  75. }
  76. },
  77. /**
  78. * 生命周期函数--监听页面加载
  79. */
  80. onLoad: function (options) {
  81. bindSearch(this);
  82. //initialheight = initialheight-initialheight%2;
  83. var searchdata = Object.assign(this.data.searchdata,options);
  84. this.setData(stylemap);
  85. this.getWheres();
  86. this.getList(this.data.searchdata);
  87. this.loadBrandRecommend()
  88. },
  89. transformSearchData:function(searchdata){
  90. var para = Object.assign({},searchdata);
  91. var sortby = para.sortby;
  92. if(sortby){
  93. var sortinfo = sortby.split("&");
  94. para.order_key = sortinfo[0];
  95. para.order_val = sortinfo[1];
  96. }
  97. delete para.sortby;
  98. return para;
  99. },
  100. //获取筛选信息
  101. getWheres:function(){
  102. var _self = this;
  103. var wheres = wx.getStorageSync("wheres");
  104. if(wheres){
  105. _self.setData({
  106. wheres: wheres
  107. })
  108. }else{
  109. get(pathmap.wheres, {
  110. no_brand_series:1
  111. }, function (json) {
  112. _self.setData({
  113. wheres: json.data
  114. })
  115. wx.setStorageSync("wheres",json.data);
  116. })
  117. }
  118. },
  119. loadBrandRecommend:function(){
  120. var _self = this;
  121. get(pathmap.brandrecommend, {
  122. }, function (json) {
  123. _self.setData({
  124. brandrecommend:json.data
  125. })
  126. })
  127. },
  128. getList:function(searchdata){
  129. var _self = this;
  130. var para = this.transformSearchData(searchdata);
  131. para.offset = 0;
  132. para.limit = this.data.limit;
  133. if(!this.data.lock){
  134. this.setData({
  135. lock:true
  136. })
  137. get(pathmap.searchcar, para, function (json) {
  138. var list = retCartData(json.data&&json.data.list);
  139. var obj = {
  140. lock:false,
  141. list:list,
  142. searchdata:searchdata,
  143. offset:_self.data.limit
  144. }
  145. if(json.data.total<=_self.data.limit){
  146. obj.hasloadall=true;
  147. }else{
  148. obj.hasloadall=false;
  149. }
  150. _self.setData(obj);
  151. if(list.length==0){
  152. _self.loadLikeCar()
  153. }
  154. })
  155. }
  156. },
  157. loadListMore:function(){
  158. var _self = this;
  159. var para = this.transformSearchData(this.data.searchdata);
  160. para.offset = this.data.offset;
  161. para.limit = this.data.limit;
  162. if(!this.data.lock&&!this.data.hasloadall){
  163. this.setData({
  164. lock:true
  165. })
  166. get(pathmap.searchcar, para, function (json) {
  167. var list = retCartData(json.data&&json.data.list);
  168. var nextoffset = _self.data.offset+_self.data.limit
  169. var obj = {
  170. lock:false,
  171. list:_self.data.list.concat(list),
  172. offset:nextoffset
  173. }
  174. if(json.data.total<=nextoffset){
  175. obj.hasloadall=true;
  176. }else{
  177. obj.hasloadall=false;
  178. }
  179. _self.setData(obj);
  180. })
  181. }
  182. },
  183. showFilter:function(e){
  184. var el = e.currentTarget;
  185. var name = el.dataset.name;
  186. if(name==this.data.selectbar){
  187. name=null;
  188. }
  189. this.setData({
  190. selectbar:name
  191. })
  192. },
  193. changeSort:function(e){
  194. var el = e.currentTarget;
  195. var name = el.dataset.sort;
  196. var searchdata = Object.assign(this.data.searchdata,{sortby:name});
  197. this.setData({
  198. selectbar:""
  199. })
  200. this.getList(searchdata);
  201. },
  202. changePrice:function(e){
  203. var el = e.currentTarget;
  204. var id = el.dataset.id;
  205. var searchdata = Object.assign(this.data.searchdata,{price:id});
  206. this.setData({
  207. selectbar:"" //关闭筛选卡
  208. })
  209. this.getList(searchdata);
  210. },
  211. loadLikeCar:function(){
  212. var _self = this;
  213. if(!this.data.like){
  214. get(pathmap.like, {
  215. offset: 0,
  216. limit: 10
  217. }, function (json) {
  218. var list = retCartData(json.data.list)
  219. _self.setData({
  220. like: list
  221. })
  222. })
  223. }
  224. },
  225. getMoreFilter:function(e){
  226. var info = e.currentTarget.dataset;
  227. var obj = {};
  228. obj[info.type]=info.value;
  229. this.setData({searchdata:Object.assign(this.data.searchdata,obj)})
  230. },
  231. resetFilter:function(){
  232. this.setData({searchdata:Object.assign(this.data.searchdata,{
  233. car_age:"",
  234. mileage:"",
  235. transmission:"",
  236. displacement:"",
  237. emission:"",
  238. colour:""
  239. })})
  240. },
  241. moreSearch:function(){
  242. this.setData({selectbar:""})
  243. this.getList(this.data.searchdata);
  244. },
  245. lockFilter:function(e){
  246. if(e.detail&&!this.data.filterlock){
  247. this.setData({
  248. filterlock:true
  249. })
  250. }else if(!e.detail&&this.data.filterlock){
  251. this.setData({
  252. filterlock:false
  253. })
  254. }
  255. },
  256. submitsearchinfo:function(obj){
  257. this.getList(Object.assign(this.data.searchdata,obj));
  258. this.setData({searchshow:false})
  259. },
  260. closeBrandList:function(){
  261. this.setData({selectbar:""});
  262. },
  263. filterBack:function(){
  264. this.setData({selectbar:""});
  265. },
  266. selectSeries:function(e){
  267. var series = e.detail.series;
  268. this.setData({
  269. selectbar:""
  270. })
  271. this.getList(Object.assign(this.data.searchdata,{car_series:series.car_series_id}));
  272. },
  273. checkAll:function(e){
  274. this.getList({
  275. sortby:"",
  276. price:"",
  277. car_age:"",
  278. mileage:"",
  279. transmission:"",
  280. displacement:"",
  281. emission:"",
  282. colour:"",
  283. filterlock:true
  284. });
  285. }
  286. })