order.js 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335
  1. // pages/order/order.js
  2. const app = getApp()
  3. Page({
  4. /**
  5. * 页面的初始数据
  6. */
  7. data: {
  8. tabIdx: 0,
  9. token: '',
  10. orderPage: {},
  11. staticUrl: '',
  12. reachedBottom: false,
  13. pageNo:0,
  14. pageSize:20,
  15. url:['/user/order/list','/user/order/noComment/list']
  16. },
  17. //点击标题
  18. handleTitleTap(e) {
  19. var idx = e.currentTarget.dataset.index
  20. this.setData({
  21. tabIdx: idx
  22. })
  23. if(idx==2){
  24. //退款
  25. return;
  26. }
  27. var url=this.data.url
  28. var pageNo=this.data.pageNo;
  29. var pageSize=this.data.pageSize;
  30. this.requestOrderList(pageNo,pageSize,url[idx])
  31. },
  32. //删除订单
  33. handleDeleteOrder() {
  34. wx.showModal({
  35. title: '提示',
  36. content: '确定要删除该订单吗?',
  37. success(res) {
  38. if (res.confirm) {
  39. console.log('用户点击确定')
  40. } else if (res.cancel) {
  41. console.log('用户点击取消')
  42. }
  43. }
  44. });
  45. },
  46. /**
  47. * 请求我的订单列表
  48. * @param {*} pageNo 页数
  49. * @param {*} pageSize 页面大小
  50. * @param {string} url 请求路径
  51. * return 分页数据
  52. */
  53. requestOrderList(pageNo, pageSize,url) {
  54. var _this = this
  55. var token = this.data.token
  56. wx.request({
  57. url: app.globalData.rootUrl + url,
  58. method: "POST",
  59. header: {
  60. token: token
  61. },
  62. data: {
  63. pageNo: pageNo,
  64. pageSize: pageSize
  65. },
  66. success(e) {
  67. if (e.data.success) {
  68. _this.setData({
  69. orderPage: e.data.data
  70. })
  71. } else {
  72. if(e.data.code=='4001'){
  73. app.showErrMsg('请先登录')
  74. return;
  75. }
  76. app.showErrMsg(e.data.message)
  77. }
  78. }
  79. })
  80. },
  81. initData() {
  82. var token = wx.getStorageSync('token')
  83. var staticUrl = app.globalData.staticUrl;
  84. this.setData({
  85. token: token,
  86. staticUrl: staticUrl,
  87. serverPrefix:app.globalData.serverPrefix
  88. })
  89. },
  90. //触底事件
  91. handleReachBottom() {
  92. var _this = this
  93. var orderPage = this.data.orderPage;
  94. if (orderPage.pageNum >= orderPage.pages) {
  95. this.setData({
  96. reachedBottom: true
  97. })
  98. return;
  99. }
  100. var pageNo = orderPage.pageNum + 1;
  101. var pageSize = orderPage.pageSize;
  102. var token = this.data.token
  103. var url=this.data.url;
  104. var idx=this.data.tabIdx
  105. app.showLoading("加载中")
  106. wx.request({
  107. url: app.globalData.rootUrl + url[idx],
  108. method: "POST",
  109. header: {
  110. token: token
  111. },
  112. data: {
  113. pageNo: pageNo,
  114. pageSize: pageSize
  115. },
  116. success(e) {
  117. if (e.data.success) {
  118. _this.moreOrder(e.data.data)
  119. } else {
  120. app.showErrMsg(e.data.message)
  121. }
  122. },
  123. complete(){
  124. wx.hideLoading()
  125. }
  126. })
  127. },
  128. //加载更多订单
  129. moreOrder(order) {
  130. var orderPage = this.data.orderPage;
  131. orderPage.pageNum = order.pageNum;
  132. orderPage.pageSize = order.pageSize;
  133. orderPage.pages = order.pages;
  134. orderPage.total = order.total;
  135. order.data.forEach(o => {
  136. orderPage.data.push(o)
  137. })
  138. this.setData({
  139. orderPage: orderPage
  140. })
  141. },
  142. //跳转到订单详情页面
  143. handle2Detail(e) {
  144. var orderNum = e.currentTarget.dataset.orderNum
  145. wx.navigateTo({
  146. url: '/pages/sub_order_page/order_detail/detail?orderNum=' + orderNum,
  147. })
  148. },
  149. //关闭订单点击
  150. handleCloseTap(e) {
  151. var _this = this;
  152. var index = e.currentTarget.dataset.index;
  153. wx.showModal({
  154. title: '提示',
  155. content: '确认要关闭订单吗?',
  156. success(res) {
  157. if (res.confirm) {
  158. _this.requestCancelOrder(index)
  159. }
  160. }
  161. })
  162. },
  163. /**
  164. * 请求取消订单
  165. * @param {Integer} index orderPage.data的索引
  166. */
  167. requestCancelOrder(index) {
  168. var _this = this;
  169. var orderPage = this.data.orderPage;
  170. var orderNum = orderPage.data[index].orderNum;
  171. wx.request({
  172. url: app.globalData.rootUrl + '/user/order/cancel',
  173. method: "GET",
  174. header: {
  175. token: this.data.token
  176. },
  177. data: {
  178. orderNum: orderNum
  179. },
  180. success(e) {
  181. if (e.data.success) {
  182. orderPage.data[index].tradeStatus = 3;
  183. _this.setData({
  184. orderPage: orderPage
  185. })
  186. }
  187. }
  188. })
  189. },
  190. //点击立即支付
  191. handlePayTap(e) {
  192. var _this = this
  193. var index = e.currentTarget.dataset.index;
  194. var orderPage = this.data.orderPage;
  195. var order = orderPage.data[index];
  196. wx.showModal({
  197. title: '支付提示',
  198. content: '确认支付' + order.payAmount + "元?",
  199. success(res) {
  200. wx.request({
  201. url: app.globalData.rootUrl + '/user/order/pay',
  202. method: "POST",
  203. header: {
  204. token: _this.data.token
  205. },
  206. data: {
  207. paid: res.confirm,
  208. orderNum: order.orderNum
  209. },
  210. success(e) {
  211. if (e.data.success) {
  212. orderPage.data[index].tradeStatus = 1;
  213. app.showMsg(e.data.message)
  214. }else{
  215. // orderPage.data[index].tradeStatus = 3;
  216. app.showErrMsg(e.data.message)
  217. }
  218. _this.setData({
  219. orderPage: orderPage
  220. })
  221. }
  222. })
  223. }
  224. })
  225. },
  226. //点击再来一单
  227. handleReOrderTap(e) {
  228. //把订单商品全部加入购物车
  229. var index = e.currentTarget.dataset.index;
  230. var order = this.data.orderPage.data[index];
  231. order.goodsList.forEach(goods => {
  232. var res = {
  233. id: goods.goodsId,
  234. price: goods.goodsPrice,
  235. pictures: [{
  236. picUrl: goods.goodsPic
  237. }],
  238. goodsName: goods.goodsName
  239. }
  240. this.addCartList(res, goods.goodsQuantity)
  241. });
  242. wx.showToast({
  243. title: '加入购物车成功',
  244. })
  245. },
  246. /**
  247. * 添加购物车
  248. * @param {*} goods
  249. * @param {*} num
  250. */
  251. addCartList(goods, num) {
  252. var cartList = wx.getStorageSync('cartList');
  253. var contained = false;
  254. if(cartList==''){
  255. cartList=[]
  256. }
  257. //判断购物车中是否含有,含有就只修改数量
  258. cartList.forEach((cart, i) => {
  259. if (cart.goodsId == goods.id) {
  260. var oldV = cartList[i].num;
  261. cartList[i].num = oldV + num;
  262. contained = true;
  263. }
  264. })
  265. if (!contained) {
  266. //购物车中没有
  267. cartList.push({
  268. goodsId: goods.id,
  269. goods: goods,
  270. num: num,
  271. selectedOptions: {
  272. text: "",
  273. extra: 0
  274. }
  275. })
  276. }
  277. wx.setStorage({
  278. key: "cartList",
  279. data: cartList
  280. })
  281. },
  282. /**
  283. * 跳转到评论页面
  284. */
  285. handle2Comment(e){
  286. var index = e.currentTarget.dataset.index;
  287. var order = this.data.orderPage.data[index];
  288. var orderNum=order.orderNum;
  289. wx.navigateTo({
  290. url: '/pages/sub_order_page/review/review?orderNum='+orderNum,
  291. })
  292. },
  293. /**
  294. * 生命周期函数--监听页面加载
  295. */
  296. onLoad: function (options) {
  297. },
  298. /**
  299. * 生命周期函数--监听页面显示
  300. */
  301. onShow: function () {
  302. this.initData();
  303. var tabIdx = this.data.tabIdx;
  304. if(tabIdx==2){
  305. //退款暂时没写
  306. return;
  307. }
  308. var url=this.data.url
  309. var pageNo=this.data.pageNo;
  310. var pageSize=this.data.pageSize;
  311. this.requestOrderList(pageNo,pageSize,url[tabIdx])
  312. },
  313. })