buy.js 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292
  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. if (searchdata.keys){
  132. searchdata.keylist = searchdata.keys.split(/\W+/);
  133. }
  134. para.offset = 0;
  135. para.limit = this.data.limit;
  136. if(!this.data.lock){
  137. this.setData({
  138. lock:true
  139. })
  140. get(pathmap.searchcar, para, function (json) {
  141. var list = retCartData(json.data&&json.data.list);
  142. var obj = {
  143. lock:false,
  144. list:list,
  145. searchdata:searchdata,
  146. offset:_self.data.limit
  147. }
  148. if(json.data.total<=_self.data.limit){
  149. obj.hasloadall=true;
  150. }else{
  151. obj.hasloadall=false;
  152. }
  153. _self.setData(obj);
  154. if(list.length==0){
  155. _self.loadLikeCar()
  156. }
  157. })
  158. }
  159. },
  160. loadListMore:function(){
  161. var _self = this;
  162. var para = this.transformSearchData(this.data.searchdata);
  163. para.offset = this.data.offset;
  164. para.limit = this.data.limit;
  165. if(!this.data.lock&&!this.data.hasloadall){
  166. this.setData({
  167. lock:true
  168. })
  169. get(pathmap.searchcar, para, function (json) {
  170. var list = retCartData(json.data&&json.data.list);
  171. var nextoffset = _self.data.offset+_self.data.limit
  172. var obj = {
  173. lock:false,
  174. list:_self.data.list.concat(list),
  175. offset:nextoffset
  176. }
  177. if(json.data.total<=nextoffset){
  178. obj.hasloadall=true;
  179. }else{
  180. obj.hasloadall=false;
  181. }
  182. _self.setData(obj);
  183. })
  184. }
  185. },
  186. showFilter:function(e){
  187. var el = e.currentTarget;
  188. var name = el.dataset.name;
  189. if(name==this.data.selectbar){
  190. name=null;
  191. }
  192. this.setData({
  193. selectbar:name
  194. })
  195. },
  196. changeSort:function(e){
  197. var el = e.currentTarget;
  198. var name = el.dataset.sort;
  199. var searchdata = Object.assign(this.data.searchdata,{sortby:name});
  200. this.setData({
  201. selectbar:""
  202. })
  203. this.getList(searchdata);
  204. },
  205. changePrice:function(e){
  206. var el = e.currentTarget;
  207. var id = el.dataset.id;
  208. var searchdata = Object.assign(this.data.searchdata,{price:id});
  209. this.setData({
  210. selectbar:"" //关闭筛选卡
  211. })
  212. this.getList(searchdata);
  213. },
  214. loadLikeCar:function(){
  215. var _self = this;
  216. if(!this.data.like){
  217. get(pathmap.like, {
  218. offset: 0,
  219. limit: 10
  220. }, function (json) {
  221. var list = retCartData(json.data.list)
  222. _self.setData({
  223. like: list
  224. })
  225. })
  226. }
  227. },
  228. getMoreFilter:function(e){
  229. var info = e.currentTarget.dataset;
  230. var obj = {};
  231. obj[info.type]=info.value;
  232. this.setData({searchdata:Object.assign(this.data.searchdata,obj)})
  233. },
  234. resetFilter:function(){
  235. this.setData({searchdata:Object.assign(this.data.searchdata,{
  236. car_age:"",
  237. mileage:"",
  238. transmission:"",
  239. displacement:"",
  240. emission:"",
  241. colour:""
  242. })})
  243. },
  244. moreSearch:function(){
  245. this.setData({selectbar:""})
  246. this.getList(this.data.searchdata);
  247. },
  248. lockFilter:function(e){
  249. if(e.detail&&!this.data.filterlock){
  250. this.setData({
  251. filterlock:true
  252. })
  253. }else if(!e.detail&&this.data.filterlock){
  254. this.setData({
  255. filterlock:false
  256. })
  257. }
  258. },
  259. submitsearchinfo:function(obj){
  260. this.getList(Object.assign(this.data.searchdata,obj));
  261. this.setData({searchshow:false})
  262. },
  263. closeBrandList:function(){
  264. this.setData({selectbar:""});
  265. },
  266. filterBack:function(){
  267. this.setData({selectbar:""});
  268. },
  269. selectSeries:function(e){
  270. var series = e.detail.series;
  271. this.setData({
  272. selectbar:""
  273. })
  274. this.getList(Object.assign(this.data.searchdata,{car_series:series.car_series_id}));
  275. },
  276. checkAll:function(e){
  277. this.getList({
  278. sortby:"",
  279. price:"",
  280. car_age:"",
  281. mileage:"",
  282. transmission:"",
  283. displacement:"",
  284. emission:"",
  285. colour:"",
  286. filterlock:true
  287. });
  288. }
  289. })