123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295 |
- // nova-tourism/pages/my/my-order/index.js
- let Parse = getApp().Parse;
- const company = getApp().globalData.company
- const uid = Parse.User.current()?.id
- const dateF = require("../../../../utils/date")
- const req = require('../../../../utils/request')
- Page({
- /**
- * 页面的初始数据
- */
- data: {
- currentTab: 0, //订单状态-页面(处理中0,进行中1,已完成2)
- roomList: [],
- show: false,
- showid: null,
- roomTabMap: {
- 0: "(100,500,601,602)", //已支付,申请退款,退款审核通过,退款已驳回
- 1: "(200,102,104)", //已入住,申请退房,退房被驳回
- 2: "(400,700,800,103)", //已退房,退款成功,已完成,退房成功
- },
- goodTabMap: {
- 0: "('200','500','601','602')", //已支付,申请退款,退款审核通过,退款已驳回
- 1: "('300')", //已发货
- 2: "('400','700','800')", //已收货,退款成功,订单完成
- },
- order: [], //订单列表
- },
- onClose() {
- this.setData({
- show: false,
- }); // 关闭弹窗并重置标志位
- },
- ONShow(e) {
- const id = e.currentTarget.dataset.item.objectId
- this.setData({
- showid: id,
- show: true,
- }); // 设置弹窗显示
- console.log(this.data.showid);
- },
- //订单完成
- async ordercom(e) {
- console.log(e.currentTarget.dataset.item.objectId);
- let objectId = e.currentTarget.dataset.item.objectId
- let newOrder = new Parse.Query('RoomOrder');
- newOrder.equalTo('company', company);
- newOrder.equalTo('objectId', objectId);
- newOrder.notEqualTo('isDeleted', true);
- let order = await newOrder.first();
- console.log(order);
- order.set('status', 102)
- try {
- let saveDate = await order.save();
- console.log('保存成功');
- this.setData({
- showid: null
- })
- this.getRoomOrder()
- } catch (error) {
- console.error("保存数据时出现错误:", error);
- }
- },
- /**
- * 生命周期函数--监听页面加载
- */
- onLoad: function (options) {
- this.setData({
- currentTab: Number(options.active)
- })
- // this.getRoomOrder()
- this.refersh()
- },
- async refersh() {
- this.getOrder()
- },
- /**获取订单 */
- async getOrder() {
- let {
- order,
- currentTab,
- roomTabMap,
- goodTabMap
- } = this.data
- let rosql = `AND ro."status" IN ${roomTabMap[currentTab]}`
- let gosql = `AND o."status" IN ${goodTabMap[currentTab]}`
- let sql = `WITH "order" AS(
- 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"
- FROM (
- SELECT o."objectId",o."createdAt",o."status"::text,o."totalPrice"::text,o."startTime",o."endTime",
- jsonb_array_elements(o."targetObject")::json->>'objectId' AS "gid",spec.value AS "spec"
- FROM "Order" o,
- jsonb_each(o."specMap") AS spec (key, value)
- WHERE o."company"='${company}'
- AND o."isDeleted" IS NOT TRUE
- AND o."user"='${uid}'
- AND o."type"='scenery'
- ${gosql}
- AND o."isPay" IS TRUE
- )t1
- LEFT JOIN "ShopGoods" sg ON sg."objectId" = t1."gid"
- ),
- "room_order" AS(
- SELECT ro."objectId",ro."createdAt",ro."startTime",ro."endTime",
- ro."status"::text,ro."price"::text AS "totalPrice",r."name",store."storeName" AS "table",
- r."images"->> 0 AS "image",r."tags"::jsonb AS "tags",''::text AS "spec"
- FROM "RoomOrder" ro
- LEFT JOIN "ShopRoom" r ON r."objectId"=ro."room"
- LEFT JOIN "ShopStore" store ON store."objectId"=r."shop"
- WHERE ro."company"='${company}'
- AND ro."isDeleted" IS NOT TRUE
- AND ro."user"='${uid}'
- AND ro."isPay" IS TRUE
- ${rosql}
- ),
- "tog" AS (
- SELECT * FROM "order"
- UNION ALL
- SELECT * FROM "room_order"
- )
- SELECT * FROM "tog"
- ORDER BY "tog"."createdAt" DESC
- LIMIT 20 OFFSET ${order?.length||0}`
- // console.log(sql)
- let d = await req.customSQL(sql) || []
- d?.map(item => {
- if (item.startTime && item.endTime) {
- item.fromto = `${dateF.formatTime('YYYY年mm月dd日',item.startTime)}入住 - ${dateF.formatTime('YYYY年mm月dd日',item.endTime)}离店`
- }
- return item
- })
- console.log(d)
- this.setData({
- order: [...order, ...(d || [])]
- })
- },
- /**切换状态 */
- async switchTab(e) {
- const index = e.currentTarget.dataset.index;
- await this.setData({
- currentTab: index,
- order:[]
- });
- this.getOrder()
- },
- //改变民宿或物品
- change(e) {
- console.log(this.data.value);
- this.setData({
- currentTab: 0
- })
- if (this.data.value == '民宿') {
- this.getRoomOrder()
- } else {
- }
- },
- formatDate2(date1, date2) {
- date1 = new Date(date1);
- date2 = new Date(date2);
- // 获取年份、月份和日期
- const year1 = date1.getFullYear();
- const month1 = date1.getMonth() + 1; // 月份从0开始,所以要加1
- const day1 = date1.getDate();
- const year2 = date2.getFullYear();
- const month2 = date2.getMonth() + 1; // 月份从0开始,所以要加1
- const day2 = date2.getDate();
- // 返回格式化的字符串
- return `${year1}年${month1}月${day1}日入住 - ${year2}年${month2}月${day2}日离店`;
- },
- async getRoomOrder() {
- let Order = new Parse.Query('RoomOrder');
- Order.equalTo('company', company);
- Order.include('room');
- Order.equalTo('user', Parse.User.current().id);
- Order.include('shopStore');
- if (this.data.currentTab == 0) {
- Order.equalTo('status', 100)
- }
- if (this.data.currentTab == 1) {
- Order.equalTo('status', 200);
- }
- if (this.data.currentTab == 2) {
- Order.equalTo('status', 800);
- }
- // 添加排序条件
- Order.descending('updatedAt');
- let room = await Order.find();
- let roomList = room.map(async item => {
- let roomItme = item.toJSON();
- roomItme.tiem = await this.formatDate2(roomItme.startTime.iso, roomItme.endTime.iso)
- return roomItme
- });
- let roomList2 = await Promise.all(roomList);
- this.setData({
- roomList: roomList2
- })
- console.log(this.data.roomList);
- },
- tourl(e){
- let url = e.currentTarget.dataset.url
- wx.navigateTo({
- url: `${url}`,
- });
- },
- gourl(e) {
- const url = e.currentTarget.dataset.url;
- const id = e.currentTarget.dataset.id;
- // 构造要传递的信息
- const info = {
- objectId: id,
- value: this.data.value
- };
- // 将信息转为查询字符串
- const queryString = Object.keys(info)
- .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(info[key])}`)
- .join('&');
- // 使用查询字符串跳转
- wx.navigateTo({
- url: `${url}?${queryString}`,
- });
- },
- /**
- * 生命周期函数--监听页面初次渲染完成
- */
- onReady: function () {
- },
- /**
- * 生命周期函数--监听页面显示
- */
- onShow: function () {
- },
- /**
- * 生命周期函数--监听页面隐藏
- */
- onHide: function () {
- },
- /**
- * 生命周期函数--监听页面卸载
- */
- onUnload: function () {
- },
- /**
- * 页面相关事件处理函数--监听用户下拉动作
- */
- onPullDownRefresh: function () {
- },
- /**
- * 页面上拉触底事件的处理函数
- */
- onReachBottom: function () {
- this.getOrder()
- },
- /**
- * 用户点击右上角分享
- */
- onShareAppMessage: function () {
- }
- })
|