buy.js 7.0 KB

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