index.js 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. // nova-tourism/pages/my/my-order/index.js
  2. let Parse = getApp().Parse;
  3. const company = getApp().globalData.company
  4. const uid = Parse.User.current()?.id
  5. const dateF = require("../../../../utils/date")
  6. const req = require('../../../../utils/request')
  7. Page({
  8. /**
  9. * 页面的初始数据
  10. */
  11. data: {
  12. currentTab: 0, //订单状态-页面(处理中0,进行中1,已完成2)
  13. roomList: [],
  14. show: false,
  15. showid: null,
  16. roomTabMap: {
  17. 0: "(100,500,601,602)", //已支付,申请退款,退款审核通过,退款已驳回
  18. 1: "(200,102,104)", //已入住,申请退房,退房被驳回
  19. 2: "(400,700,800,103)", //已退房,退款成功,已完成,退房成功
  20. },
  21. goodTabMap: {
  22. 0: "('200','500','601','602')", //已支付,申请退款,退款审核通过,退款已驳回
  23. 1: "('300')", //已发货
  24. 2: "('400','700','800')", //已收货,退款成功,订单完成
  25. },
  26. order: [], //订单列表
  27. },
  28. onClose() {
  29. this.setData({
  30. show: false,
  31. });
  32. },
  33. ONShow(e) {
  34. const id = e.currentTarget.dataset.item.objectId
  35. this.setData({
  36. showid: id,
  37. show: true,
  38. }); // 设置弹窗显示
  39. console.log(this.data.showid);
  40. },
  41. //订单完成
  42. async ordercom(e) {
  43. console.log(e.currentTarget.dataset.item.objectId);
  44. let objectId = e.currentTarget.dataset.item.objectId
  45. let newOrder = new Parse.Query('RoomOrder');
  46. newOrder.equalTo('company', company);
  47. newOrder.equalTo('objectId', objectId);
  48. newOrder.notEqualTo('isDeleted', true);
  49. let order = await newOrder.first();
  50. console.log(order);
  51. order.set('status', 102)
  52. try {
  53. let saveDate = await order.save();
  54. console.log('保存成功');
  55. this.setData({
  56. showid: null
  57. })
  58. this.getOrder()
  59. } catch (error) {
  60. console.error("保存数据时出现错误:", error);
  61. }
  62. },
  63. /**
  64. * 生命周期函数--监听页面加载
  65. */
  66. onLoad: function (options) {
  67. this.setData({
  68. currentTab: Number(options.active)
  69. })
  70. this.refersh()
  71. },
  72. async refersh() {
  73. this.getOrder()
  74. },
  75. /**获取订单 */
  76. async getOrder() {
  77. let {
  78. order,
  79. currentTab,
  80. roomTabMap,
  81. goodTabMap
  82. } = this.data
  83. let rosql = `AND ro."status" IN ${roomTabMap[currentTab]}`
  84. let gosql = `AND o."status" IN ${goodTabMap[currentTab]}`
  85. let sql = `WITH "order" AS(
  86. SELECT t1."objectId",t1."createdAt",t1."startTime",t1."endTime",t1."status",t1."totalPrice",sg."name",'order' AS "table",sg."image",sg."tag"::jsonb AS "tags",(t1."spec"::jsonb->'spec')::text AS "spec",(t1."spec"::jsonb->'list')::text AS "list"
  87. FROM (
  88. SELECT o."objectId",o."createdAt",o."status"::text,o."totalPrice"::text,o."startTime",o."endTime",
  89. jsonb_array_elements(o."targetObject")::json->>'objectId' AS "gid",spec.value AS "spec"
  90. FROM "Order" o,
  91. jsonb_each(o."specMap") AS spec (key, value)
  92. WHERE o."company"='${company}'
  93. AND o."isDeleted" IS NOT TRUE
  94. AND o."user"='${uid}'
  95. AND o."type"='scenery'
  96. ${gosql}
  97. AND o."isPay" IS TRUE
  98. )t1
  99. LEFT JOIN "ShopGoods" sg ON sg."objectId" = t1."gid"
  100. ),
  101. "room_order" AS(
  102. SELECT ro."objectId",ro."createdAt",ro."startTime",ro."endTime",
  103. ro."status"::text,ro."price"::text AS "totalPrice",r."name",store."storeName" AS "table",
  104. r."images"->> 0 AS "image",r."tags"::jsonb AS "tags",''::text AS "spec",''::text AS "list"
  105. FROM "RoomOrder" ro
  106. LEFT JOIN "ShopRoom" r ON r."objectId"=ro."room"
  107. LEFT JOIN "ShopStore" store ON store."objectId"=r."shop"
  108. WHERE ro."company"='${company}'
  109. AND ro."isDeleted" IS NOT TRUE
  110. AND ro."user"='${uid}'
  111. AND ro."isPay" IS TRUE
  112. ${rosql}
  113. ),
  114. "tog" AS (
  115. SELECT * FROM "order"
  116. UNION ALL
  117. SELECT * FROM "room_order"
  118. )
  119. SELECT * FROM "tog"
  120. ORDER BY "tog"."createdAt" DESC
  121. LIMIT 20 OFFSET ${order?.length||0}`
  122. let d = await req.customSQL(sql) || []
  123. d?.map(item => {
  124. console.log(item)
  125. if(item.list){
  126. item.list = JSON.parse(item.list||'[]')||[]
  127. }
  128. if (item.startTime && item.endTime) {
  129. item.fromto = `${dateF.formatTime('YYYY年mm月dd日',item.startTime)}入住 - ${dateF.formatTime('YYYY年mm月dd日',item.endTime)}离店`
  130. }
  131. return item
  132. })
  133. console.log(d)
  134. this.setData({
  135. order: [...order, ...(d || [])]
  136. })
  137. },
  138. /**切换状态 */
  139. async switchTab(e) {
  140. const index = e.currentTarget.dataset.index;
  141. await this.setData({
  142. currentTab: index,
  143. order:[]
  144. });
  145. this.getOrder()
  146. },
  147. tourl(e){
  148. let url = e.currentTarget.dataset.url
  149. wx.navigateTo({
  150. url: `${url}`,
  151. });
  152. },
  153. /**
  154. * 生命周期函数--监听页面初次渲染完成
  155. */
  156. onReady: function () {
  157. },
  158. /**
  159. * 生命周期函数--监听页面显示
  160. */
  161. onShow: function () {
  162. },
  163. /**
  164. * 生命周期函数--监听页面隐藏
  165. */
  166. onHide: function () {
  167. },
  168. /**
  169. * 生命周期函数--监听页面卸载
  170. */
  171. onUnload: function () {
  172. },
  173. /**
  174. * 页面相关事件处理函数--监听用户下拉动作
  175. */
  176. onPullDownRefresh: function () {
  177. },
  178. /**
  179. * 页面上拉触底事件的处理函数
  180. */
  181. onReachBottom: function () {
  182. this.getOrder()
  183. },
  184. /**
  185. * 用户点击右上角分享
  186. */
  187. onShareAppMessage: function () {
  188. }
  189. })