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. },
  71. async refersh() {
  72. this.getOrder()
  73. },
  74. /**获取订单 */
  75. async getOrder() {
  76. let {
  77. order,
  78. currentTab,
  79. roomTabMap,
  80. goodTabMap
  81. } = this.data
  82. let rosql = `AND ro."status" IN ${roomTabMap[currentTab]}`
  83. let gosql = `AND o."status" IN ${goodTabMap[currentTab]}`
  84. let sql = `WITH "order" AS(
  85. 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"
  86. FROM (
  87. SELECT o."objectId",o."createdAt",o."status"::text,o."totalPrice"::text,o."startTime",o."endTime",
  88. jsonb_array_elements(o."targetObject")::json->>'objectId' AS "gid",spec.value AS "spec"
  89. FROM "Order" o,
  90. jsonb_each(o."specMap") AS spec (key, value)
  91. WHERE o."company"='${company}'
  92. AND o."isDeleted" IS NOT TRUE
  93. AND o."user"='${uid}'
  94. AND o."type"='scenery'
  95. ${gosql}
  96. AND o."isPay" IS TRUE
  97. )t1
  98. LEFT JOIN "ShopGoods" sg ON sg."objectId" = t1."gid"
  99. ),
  100. "room_order" AS(
  101. SELECT ro."objectId",ro."createdAt",ro."startTime",ro."endTime",
  102. ro."status"::text,ro."price"::text AS "totalPrice",r."name",store."storeName" AS "table",
  103. r."images"->> 0 AS "image",r."tags"::jsonb AS "tags",''::text AS "spec",''::text AS "list"
  104. FROM "RoomOrder" ro
  105. LEFT JOIN "ShopRoom" r ON r."objectId"=ro."room"
  106. LEFT JOIN "ShopStore" store ON store."objectId"=r."shop"
  107. WHERE ro."company"='${company}'
  108. AND ro."isDeleted" IS NOT TRUE
  109. AND ro."user"='${uid}'
  110. AND ro."isPay" IS TRUE
  111. ${rosql}
  112. ),
  113. "tog" AS (
  114. SELECT * FROM "order"
  115. UNION ALL
  116. SELECT * FROM "room_order"
  117. )
  118. SELECT * FROM "tog"
  119. ORDER BY "tog"."createdAt" DESC
  120. LIMIT 20 OFFSET ${order?.length||0}`
  121. let d = await req.customSQL(sql) || []
  122. d?.map(item => {
  123. console.log(item)
  124. if(item.list){
  125. item.list = JSON.parse(item.list||'[]')||[]
  126. }
  127. if (item.startTime && item.endTime) {
  128. item.fromto = `${dateF.formatTime('YYYY年mm月dd日',item.startTime)}入住 - ${dateF.formatTime('YYYY年mm月dd日',item.endTime)}离店`
  129. }
  130. return item
  131. })
  132. console.log(d)
  133. this.setData({
  134. order: [...order, ...(d || [])]
  135. })
  136. },
  137. /**切换状态 */
  138. async switchTab(e) {
  139. const index = e.currentTarget.dataset.index;
  140. await this.setData({
  141. currentTab: index,
  142. order:[]
  143. });
  144. this.getOrder()
  145. },
  146. tourl(e){
  147. let url = e.currentTarget.dataset.url
  148. wx.navigateTo({
  149. url: `${url}`,
  150. });
  151. },
  152. /**
  153. * 生命周期函数--监听页面初次渲染完成
  154. */
  155. onReady: function () {
  156. },
  157. /**
  158. * 生命周期函数--监听页面显示
  159. */
  160. onShow: function () {
  161. this.getOrder()
  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. })