index.js 5.9 KB

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