buy.js 6.2 KB

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