index.js 7.1 KB

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