xll 2 nedēļas atpakaļ
vecāks
revīzija
689bc67dd1
31 mainītis faili ar 3153 papildinājumiem un 690 dzēšanām
  1. 15 0
      .vscode/launch.json
  2. 5 2
      app.json
  3. 68 0
      nova-tourism/components/suggest/index.js
  4. 4 0
      nova-tourism/components/suggest/index.json
  5. 95 0
      nova-tourism/components/suggest/index.less
  6. 22 0
      nova-tourism/components/suggest/index.wxml
  7. 99 0
      nova-tourism/components/suggest/index.wxss
  8. 414 75
      nova-tourism/pages/collect/collect-detail/index.js
  9. 5 2
      nova-tourism/pages/collect/collect-detail/index.json
  10. 445 55
      nova-tourism/pages/collect/collect-detail/index.less
  11. 172 5
      nova-tourism/pages/collect/collect-detail/index.wxml
  12. 290 6
      nova-tourism/pages/collect/collect-detail/index.wxss
  13. 2 1
      nova-tourism/pages/homestay/homestay-detail/index.json
  14. 3 4
      nova-tourism/pages/homestay/homestay-detail/index.wxml
  15. 1 1
      nova-tourism/pages/my/merchant/room-manage/room-edit/index.js
  16. 10 97
      nova-tourism/pages/my/my-order/index.js
  17. 110 64
      nova-tourism/pages/my/my-order/index.less
  18. 14 200
      nova-tourism/pages/my/my-order/index.wxml
  19. 0 0
      nova-tourism/pages/my/my-order/index.wxss
  20. 91 0
      nova-tourism/pages/my/my-order/my-refund/refund-good/index.js
  21. 6 0
      nova-tourism/pages/my/my-order/my-refund/refund-good/index.json
  22. 159 0
      nova-tourism/pages/my/my-order/my-refund/refund-good/index.less
  23. 46 0
      nova-tourism/pages/my/my-order/my-refund/refund-good/index.wxml
  24. 135 0
      nova-tourism/pages/my/my-order/my-refund/refund-good/index.wxss
  25. 182 0
      nova-tourism/pages/my/my-order/order-detail-good/index.js
  26. 6 0
      nova-tourism/pages/my/my-order/order-detail-good/index.json
  27. 257 0
      nova-tourism/pages/my/my-order/order-detail-good/index.less
  28. 81 0
      nova-tourism/pages/my/my-order/order-detail-good/index.wxml
  29. 218 0
      nova-tourism/pages/my/my-order/order-detail-good/index.wxss
  30. 21 2
      project.private.config.json
  31. 177 176
      utils/citysearch.js

+ 15 - 0
.vscode/launch.json

@@ -0,0 +1,15 @@
+{
+  // 使用 IntelliSense 了解相关属性。 
+  // 悬停以查看现有属性的描述。
+  // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
+  "version": "0.2.0",
+  "configurations": [
+    {
+      "type": "pwa-chrome",
+      "request": "launch",
+      "name": "Launch Chrome against localhost",
+      "url": "http://localhost:8080",
+      "webRoot": "${workspaceFolder}"
+    }
+  ]
+}

+ 5 - 2
app.json

@@ -35,7 +35,9 @@
         "pages/my/my-order/my-refund/index",
         "pages/my/my-order/my-refund/refund-detail/index",
         "pages/my/my-wallet/loose-change/index",
-        "pages/my/merchant/merchant-home/my-users/index"
+        "pages/my/merchant/merchant-home/my-users/index",
+        "pages/my/my-order/order-detail-good/index",
+        "pages/my/my-order/my-refund/refund-good/index"
       ]
     },
     {
@@ -45,7 +47,8 @@
         "pages/info/ucenter/address/index",
         "pages/info/ucenter/address-detail/index",
         "pages/address/index",
-        "pages/sharing/index"
+        "pages/sharing/index",
+        "pages/nova-express/index"
       ]
     },
     {

+ 68 - 0
nova-tourism/components/suggest/index.js

@@ -0,0 +1,68 @@
+// nova-tourism/components/suggest/index.js
+let Parse = getApp().Parse;
+const company = getApp().globalData.company
+const uid = Parse.User.current()?.id
+const req = require('../../../utils/request')
+
+
+Component({
+
+  /**
+   * 组件的属性列表
+   */
+  properties: {
+    store_id:null
+  },
+
+  /**
+   * 组件的初始数据
+   */
+  data: {
+    gift: [], //望仙礼遇-商品
+  },
+
+  lifetimes: {
+    detached: function () {},
+    attached: async function () {
+      setTimeout(() => {
+        this.getGift()
+      }, 800);
+   
+    },
+  },
+  /**
+   * 组件的方法列表
+   */
+  methods: {
+    /** 获取望仙礼遇-商品*/
+    async getGift() {
+      let {
+        store_id
+      } = this.properties
+      console.log(store_id)
+      let sql = `SELECT good."objectId",good."name",good."price",good."image"
+  FROM "ShopGoods" good
+  WHERE good."company" = '${company}'
+  AND good."isDeleted" IS NOT TRUE
+  AND good."status" IS TRUE
+  AND good."shopStore"='${store_id}'
+  ORDER BY COALESCE(good."isHome", FALSE) DESC,
+  CASE WHEN good."top"= 0 THEN 1 ELSE 0 END,
+  good."top" ASC,good."createdAt"
+  LIMIT 4`
+      let gift = await req.customSQL(sql) || []
+      console.log(gift)
+      this.setData({
+        gift
+      })
+    
+    },
+    /** 跳转*/
+    tourl(e) {
+      const url = e.currentTarget.dataset.url
+      wx.navigateTo({
+        url: `${url}`  //目标页面的路径
+      });
+    },
+  }
+})

+ 4 - 0
nova-tourism/components/suggest/index.json

@@ -0,0 +1,4 @@
+{
+  "component": true,
+  "usingComponents": {}
+}

+ 95 - 0
nova-tourism/components/suggest/index.less

@@ -0,0 +1,95 @@
+page{
+    font-family: "Microsoft YaHei", "PingFang SC", "Helvetica Neue", sans-serif;
+
+}
+.wangbox{
+    width: 100%;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    flex-direction: column;
+    margin-top: 60rpx;
+    margin-bottom: 28rpx;
+    .wang{
+        width: 206rpx;
+        height: 46rpx;
+        font-size: 32rpx;
+        color: #67806A;
+        background-image: url(https://file-cloud.fmode.cn/EbxZUK5lBI/20241126/dm1jj2032446503.png?imageView2/1/w/200/h/200);
+        background-position: center; /* 背景图片居中 */
+        // background-size: cover; /* 背景图片覆盖整个元素 */
+        background-repeat: no-repeat; /* 不重复背景图片 */
+        display: flex;
+        justify-content: center;
+        align-items: center;
+    }
+    .wang2{
+        font-size: 24rpx;
+        color: #969696;
+    }
+}
+.wang-cardbox{
+    margin-top: 40rpx;
+    width: 100%;
+    background-color: white;
+    overflow-y: hidden;
+    padding-bottom: 40rpx;
+    column-count: 2; /* 设置列数 */
+    column-gap: 16rpx; /* 设置列间距 */
+    .wang-card{
+        break-inside: avoid; /* 防止卡片在列之间断裂 */
+        margin-bottom: 20rpx; /* 设置卡片底部间距 */
+        width: 100%; /* 确保卡片宽度为100% */
+        
+        image{
+            width: 100%;
+            height: 204rpx;
+            border-radius: 10rpx;
+        }
+        .wang-catex{
+            font-size: 26rpx;
+            font-weight: 400;
+            height: 76rpx;
+        }
+        .wang-numbox{
+            width: 100%;
+            display: flex;
+            align-items: center;
+            .wang-num{
+                display: flex;
+                justify-content: flex-end;
+                align-items: flex-end;
+                color: #C5262Ced;
+                font-size: 30rpx;
+                .wang-num1{
+                    font-size: 32rpx;
+                }
+                .wang-num2{
+                    font-size: 40rpx;
+                }
+            }
+            .wang-submit{
+                width: 102rpx;
+                height: 48rpx;
+                font-size: 28rpx;
+                color: white;
+                background-color: #F8DA7F;
+                border-radius: 15rpx;
+                display: flex;
+                justify-content: center;
+                align-items: center;
+                margin-left: auto;
+            }
+        }
+    }
+}
+.more{
+    width: 100%;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    .more-tex{
+        font-size: 28rpx;
+        color: #969696;
+    }
+}

+ 22 - 0
nova-tourism/components/suggest/index.wxml

@@ -0,0 +1,22 @@
+<view class="wangbox">
+  <view class="wang">望仙礼遇</view>
+  <view class="wang2">望日w望月w来望仙w</view>
+</view>
+<view class="wang-cardbox">
+  <block wx:for="{{gift}}" wx:key="index">
+    <view class="wang-card" data-url="/nova-tourism/pages/collect/collect-detail/index?gid={{item.objectId}}" bindtap="tourl">
+      <image src="{{item.image||'https://img95.699pic.com/photo/60072/5330.jpg_wh860.jpg'}}" mode="aspectFill"></image>
+      <view class="wang-catex">{{item.name}}</view>
+      <view class="wang-numbox">
+        <view class="wang-num">
+          <view class="wang-num1">¥</view>
+          <view class="wang-num2">{{item.price||0}}</view>
+        </view>
+        <view class="wang-submit">购买</view>
+      </view>
+    </view>
+  </block>
+</view>
+<view class="more">
+  <view class="more-tex">查看更多 ></view>
+</view>

+ 99 - 0
nova-tourism/components/suggest/index.wxss

@@ -0,0 +1,99 @@
+page {
+  font-family: "Microsoft YaHei", "PingFang SC", "Helvetica Neue", sans-serif;
+}
+.wangbox {
+  width: 100%;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  flex-direction: column;
+  margin-top: 60rpx;
+  margin-bottom: 28rpx;
+}
+.wangbox .wang {
+  width: 206rpx;
+  height: 46rpx;
+  font-size: 32rpx;
+  color: #67806A;
+  background-image: url(https://file-cloud.fmode.cn/EbxZUK5lBI/20241126/dm1jj2032446503.png?imageView2/1/w/200/h/200);
+  background-position: center;
+  /* 背景图片居中 */
+  background-repeat: no-repeat;
+  /* 不重复背景图片 */
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+.wangbox .wang2 {
+  font-size: 24rpx;
+  color: #969696;
+}
+.wang-cardbox {
+  margin-top: 40rpx;
+  width: 100%;
+  background-color: white;
+  overflow-y: hidden;
+  padding-bottom: 40rpx;
+  column-count: 2;
+  /* 设置列数 */
+  column-gap: 16rpx;
+  /* 设置列间距 */
+}
+.wang-cardbox .wang-card {
+  break-inside: avoid;
+  /* 防止卡片在列之间断裂 */
+  margin-bottom: 20rpx;
+  /* 设置卡片底部间距 */
+  width: 100%;
+  /* 确保卡片宽度为100% */
+}
+.wang-cardbox .wang-card image {
+  width: 100%;
+  height: 204rpx;
+  border-radius: 10rpx;
+}
+.wang-cardbox .wang-card .wang-catex {
+  font-size: 26rpx;
+  font-weight: 400;
+  height: 76rpx;
+}
+.wang-cardbox .wang-card .wang-numbox {
+  width: 100%;
+  display: flex;
+  align-items: center;
+}
+.wang-cardbox .wang-card .wang-numbox .wang-num {
+  display: flex;
+  justify-content: flex-end;
+  align-items: flex-end;
+  color: #C5262Ced;
+  font-size: 30rpx;
+}
+.wang-cardbox .wang-card .wang-numbox .wang-num .wang-num1 {
+  font-size: 32rpx;
+}
+.wang-cardbox .wang-card .wang-numbox .wang-num .wang-num2 {
+  font-size: 40rpx;
+}
+.wang-cardbox .wang-card .wang-numbox .wang-submit {
+  width: 102rpx;
+  height: 48rpx;
+  font-size: 28rpx;
+  color: white;
+  background-color: #F8DA7F;
+  border-radius: 15rpx;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  margin-left: auto;
+}
+.more {
+  width: 100%;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+.more .more-tex {
+  font-size: 28rpx;
+  color: #969696;
+}

+ 414 - 75
nova-tourism/pages/collect/collect-detail/index.js

@@ -15,19 +15,25 @@ Page({
     bottomNavHeight: 0,
     contentHeight: 0,
 
-    imageUrls: ['https://img95.699pic.com/photo/60072/5330.jpg_wh860.jpg',
-      'https://c-ssl.dtstatic.com/uploads/blog/201409/27/20140927230814_4QfVC.thumb.1000_0.jpeg',
-      'https://ts1.cn.mm.bing.net/th/id/R-C.37f4077f8eaca918401b84b4ee23af7c?rik=7HYWC88a9q4sZw&riu=http%3a%2f%2fpic.616pic.com%2fphotoone%2f00%2f06%2f03%2f618e27ad7ce8e1124.jpg&ehk=jkc6iZWAg%2bAEjAk6%2br0VAAy1lfffqslT6n%2fMWl293Yc%3d&risl=&pid=ImgRaw&r=0'
-    ],
+
     gid: null, //商品id
     good: null, //商品详情
     spec: null, //商品规格
     checkSpec: null, //选中的规格
     totalPrice: 0, //订单总价
-    specBox: false, //规格弹框
     address: null, //收货地址
     tradeNo: null, //订单编号
     order: null, //当前订单-parse
+    distributeType: 'delivery', //配送方式-默认物流配送
+    count: 1, //单独购买商品总数
+    specMap: {}, //save到订单的数据
+    specBox: false, //规格弹框
+    moreBox: false, //选择多款弹框
+    listBox: false, //多款列表弹框
+    specGoodList: [], //选择的多款商品-多款
+    checkSpec_more: null, //选中的规格-多款
+    count_more: 1, //购买商品总数-多款
+    totalPrice_more: 0, //订单总价-多款
   },
 
   /**
@@ -63,38 +69,52 @@ Page({
       gid
     } = this.data
     let query = new Parse.Query('ShopGoods')
+    query.include('shopStore')
     let d = await query.get(gid)
     let good = d?.toJSON()
-    console.log(good)
-    let spec = good?.specMap?.specList.map(item => {
-      let price = good.specMap[item][0].price
-      let subName = price || good.price
-      let obj = {
-        name: item,
-        subname: `售价¥${subName}`,
-        color: 'gray',
-        price: subName
+    if (!good?.images || good?.images?.length <= 0) good.images = [good.image || 'https://file-cloud.fmode.cn/EbxZUK5lBI/20250321/vdq1j1110711455.jpg']
+    if (!good?.specMap || !good?.specMap?.specList || good?.specMap?.specList?.length <= 0) {
+      good.specMap = {
+        specList: [good?.name || '暂无规格']
       }
-      return obj
-    })
+      good.specMap[good?.name || '暂无规格'] = [{
+        price: good?.price || 0,
+      }]
+    }
+    console.log(good)
+    let spec = good?.specMap?.specList
     let checkSpec = {}
-    if (spec?.length) {
-      checkSpec = spec[0]
-      spec[0].color = 'red'
+    if (spec && spec?.length > 0) {
+      checkSpec = good?.specMap[spec[0]][0]
+      checkSpec.title = spec[0]
     }
-    let totalPrice = checkSpec.price || good.price
+    let totalPrice = checkSpec?.price || good?.price
+    console.log(spec, checkSpec)
     this.setData({
       good,
+      store: good.shopStore,
       spec,
       checkSpec,
       totalPrice
     })
+    this.getTotalPrice()
   },
+  /**切换配送方式 */
+  chickDistributeType(e) {
+    let {
+      type
+    } = e.currentTarget.dataset
+    this.setData({
+      distributeType: type
+    })
+  },
+
   /** 打开规格弹框*/
   openSpec() {
-    let {spec} = this.data
-    console.log(spec,'‘hhh')
-    if(spec?.length<=0)return
+    let {
+      spec
+    } = this.data
+    if (spec?.length <= 0) return
     this.setData({
       specBox: true
     })
@@ -108,38 +128,247 @@ Page({
   /**选择规格 */
   getCheckSpec(e) {
     let {
+      good,
       spec,
       checkSpec,
-      totalPrice
+      totalPrice,
     } = this.data
-    checkSpec = e.detail
-    spec = spec.map(item => {
-      item.color = 'gray'
-      if (item.name == checkSpec.name) {
-        item.color = 'red'
-        totalPrice = item.price
-      }
-      return item
+    let {
+      title
+    } = e.currentTarget.dataset
+    checkSpec = good?.specMap[title][0]
+    checkSpec.title = title
+    totalPrice = checkSpec?.price || good?.price
+    console.log(spec, checkSpec)
+    this.setData({
+      spec,
+      checkSpec,
+      totalPrice,
+
     })
+    this.getTotalPrice()
+
+  },
+  /**单个物品-步进器改变 */
+  changeCount(e) {
+    this.setData({
+      count: e.detail
+    })
+    this.getTotalPrice()
+  },
+  /**计算单个物品总价/获取specMap */
+  getTotalPrice() {
+    let {
+      good,
+      count,
+      checkSpec
+    } = this.data
+    let specMap = {}
+    specMap[good.objectId] = {
+      count,
+      price: checkSpec.price,
+      spec: checkSpec?.title || ''
+    }
+    let totalPrice = parseFloat((count * checkSpec.price).toFixed(2))
+    console.log(specMap, totalPrice)
     this.setData({
+      totalPrice,
+      specMap
+    })
+  },
+
+
+
+
+  /** 打开多款弹框*/
+  openMoreBox() {
+    let {
       spec,
       checkSpec,
-      totalPrice
+      good
+    } = this.data
+    console.log(spec, checkSpec, good)
+    let price = good.specMap[spec[0]][0].price || good.price
+    this.setData({
+      moreBox: true,
+      count_more: 1,
+      checkSpec_more: {
+        price: price,
+        title: spec[0],
+        totalPrice: price
+      }
     })
+    console.log(spec, checkSpec, good)
+
   },
-  /** 跳转*/
-  tourl(e) {
-    const url = e.currentTarget.dataset.url
-    wx.navigateTo({
-      url: `${url}` // 目标页面的路径
-    });
+  /**关闭多款弹框 */
+  closeMoreBox() {
+    this.setData({
+      moreBox: false
+    })
   },
+  /**多款-步进器改变 */
+  changeCount_more(e) {
+    this.setData({
+      count_more: e.detail
+    })
+    this.getCurrentSpec()
+  },
+  /**选择规格-多款 */
+  getCheckSpec_more(e) {
+    let {
+      good,
+      spec,
+      checkSpec_more,
+    } = this.data
+    let {
+      title
+    } = e.currentTarget.dataset
+    checkSpec_more = good?.specMap[title][0]
+    checkSpec_more.title = title
+    console.log(spec, checkSpec_more)
+    this.setData({
+      checkSpec_more,
+    })
+    this.getCurrentSpec()
+  },
+  /**计算当前款式价格/specMap - 多款 */
+  getCurrentSpec() {
+    let {
+      checkSpec_more,
+      count_more
+    } = this.data
+    let totalPrice = (checkSpec_more.price * count_more || 0).toFixed(2)
+    checkSpec_more.totalPrice = totalPrice
+    console.log(checkSpec_more, count_more)
+    this.setData({
+      checkSpec_more
+    })
+  },
+  /**确定当前款 */
+  confirmCurrent() {
+    let {
+      specGoodList,
+      count_more,
+      checkSpec_more,
+    } = this.data
+    let index = specGoodList?.findIndex(item => item.spec == checkSpec_more.title)
+    if (index < 0) {
+      specGoodList.push({
+        count: count_more,
+        price: checkSpec_more.price,
+        spec: checkSpec_more.title,
+        checked: true
+      })
+    } else {
+      specGoodList[index] = {
+        count: count_more,
+        price: checkSpec_more.price,
+        spec: checkSpec_more.title,
+        checked: true
+      }
+      wx.showToast({
+        title: `已勾选并修改 ${checkSpec_more.title} 款式数量为${count_more}`,
+        icon: 'none'
+      })
+    }
+    this.setData({
+      specGoodList
+    })
+    this.getTotalPrice_more()
+    this.closeMoreBox()
+    this.openListBox()
+  },
+  /**计算物品总价 - 多款*/
+  getTotalPrice_more() {
+    let {
+      good,
+      specGoodList,
+      totalPrice_more,
+    } = this.data
+    totalPrice_more = 0
+    let list = specGoodList.filter(item => item.checked)
+    for (let i in list) {
+      let item = list[i]
+      if (item.checked) {
+        totalPrice_more = parseFloat((totalPrice_more + (item.price * item.count)).toFixed(2))
+      }
+    }
+    let specMap = {}
+    specMap[good.objectId] = {
+      price: totalPrice_more || 0,
+      list: list || []
+    }
+    console.log(specMap, specGoodList, totalPrice_more)
+    this.setData({
+      totalPrice_more: parseFloat(totalPrice_more),
+      specMap,
+      specGoodList
+    })
+  },
+  /**列表-多款-步进器改变 */
+  changeLMCount(e) {
+    let {
+      specGoodList
+    } = this.data
+    let {
+      index
+    } = e.currentTarget.dataset
+    specGoodList[index].count = parseInt(e.detail || 1)
+    this.setData({
+      specGoodList
+    })
+    this.getTotalPrice_more()
+  },
+  /**列表-是否选中 */
+  changeChecked(e) {
+    console.log(e)
+    let {
+      specGoodList
+    } = this.data
+    let {
+      index
+    } = e.currentTarget.dataset
+    specGoodList[index].checked = e.detail
+    this.setData({
+      specGoodList
+    })
+    this.getTotalPrice_more()
+  },
+
+
+
+  /**多款款式弹框-去结算 */
+  settlement() {
+    this.closeMoreBox()
+    this.openListBox()
+  },
+
+
+  /** 打开多款列表弹框*/
+  openListBox() {
+    this.setData({
+      listBox: true,
+
+    })
+  },
+  /**关闭多款列表弹框 */
+  closeListBox() {
+    this.setData({
+      listBox: false
+    })
+  },
+
+
+
+
   /** 判断是否可创建订单*/
   judgeOrder() {
     let {
-      address
+      address,
+      distributeType
     } = this.data
-    if (!address?.objectId) {
+    if (distributeType == 'delivery' && !address?.objectId) {
       wx.showToast({
         title: '请确认收货地址',
         icon: 'none',
@@ -148,29 +377,30 @@ Page({
     }
     return true
   },
-  /**创建订单 */
+  /** 判断是否可创建订单-多款*/
+  judgeOrder_more() {
+    let addCheck = this.judgeOrder()
+    let {specGoodList} = this.data
+    let index = specGoodList.findIndex(item=>item.checked)
+    if(addCheck&&index!=-1) return true
+    return false
+  },
+  /**创建订单-单个商品 */
   async submitOrder() {
+    this.getTotalPrice()
     let isPass = this.judgeOrder()
     if (!isPass) return
     let {
       good,
       totalPrice,
-      checkSpec,
       address,
       order,
-      tradeNo
+      tradeNo,
+      specMap,
+      distributeType
     } = this.data
     let o = order
     if (!order?.id) {
-      let now = new Date()
-      tradeNo = "C" +
-        String(now.getFullYear()) +
-        (now.getMonth() + 1) +
-        now.getDate() +
-        now.getHours() +
-        now.getMinutes() +
-        now.getSeconds() +
-        Math.random().toString().slice(-6);
       let Order = Parse.Object.extend("Order");
       o = new Order()
       o.set("company", {
@@ -178,12 +408,16 @@ Page({
         className: 'Company',
         objectId: company
       })
+      o.set("store", {
+        __type: 'Pointer',
+        className: 'ShopStore',
+        objectId: good?.shopStore?.objectId
+      })
       o.set("user", {
         __type: 'Pointer',
         className: '_User',
         objectId: uid
       })
-      o.set("orderNum", tradeNo);
       o.set('status', '100') //待支付
       o.set('type', 'scenery')
       o.set("targetObject", [{
@@ -192,35 +426,132 @@ Page({
         "objectId": good?.objectId
       }])
     }
+    let now = new Date()
+    tradeNo = "C" +
+      String(now.getFullYear()) +
+      (now.getMonth() + 1) +
+      now.getDate() +
+      now.getHours() +
+      now.getMinutes() +
+      now.getSeconds() +
+      Math.random().toString().slice(-6);
+    o.set("orderNum", tradeNo);
     o.set("totalPrice", totalPrice || 0);
-    o.set("address", {
-      __type: 'Pointer',
-      className: 'ShopAddress',
-      objectId: address?.objectId
-    });
-    o.set("info", {
-      name: address?.name,
-      mobile: address?.mobile,
-      address: address?.full_region + address?.address
-    });
-    let specMap = {}
-    specMap[good?.objectId] = {
-      count: 1,
-      price: good.price,
-      spec: checkSpec.name
+    o.set("distributeType", distributeType || 'verify');
+    if (distributeType == 'verify') {
+      o.set("info", {});
+    } else {
+      o.set("address", {
+        __type: 'Pointer',
+        className: 'ShopAddress',
+        objectId: address?.objectId
+      });
+      o.set("info", {
+        name: address?.name,
+        mobile: address?.mobile,
+        address: address?.full_region + address?.address
+      });
     }
     o.set("specMap", specMap);
     try {
-      // order = await o.save()
+      order = await o.save()
       this.setData({
         tradeNo,
-        order:o,
+        order: o,
         showPay: true,
+        showPay_more:false,
+      })
+      wx.showToast({
+        title: '已创建订单',
+        icon: 'none'
+      })
+    } catch (error) {
+      wx.showToast({
+        title: '出错了请检查后重试',
+        icon: 'error'
+      })
+    }
+  },
+  /**创建订单-多款规格 */
+  async submitOrder_more() {
+    this.getTotalPrice_more()
+    let isPass = this.judgeOrder_more()
+    if (!isPass) return
+    let {
+      good,
+      totalPrice_more,
+      address,
+      order,
+      tradeNo,
+      specMap,
+      distributeType
+    } = this.data
+    let o = order
+    if (!order?.id) {
+      let Order = Parse.Object.extend("Order");
+      o = new Order()
+      o.set("company", {
+        __type: 'Pointer',
+        className: 'Company',
+        objectId: company
+      })
+      o.set("store", {
+        __type: 'Pointer',
+        className: 'ShopStore',
+        objectId: good?.shopStore?.objectId
+      })
+      o.set("user", {
+        __type: 'Pointer',
+        className: '_User',
+        objectId: uid
+      })
+      o.set('status', '100') //待支付
+      o.set('type', 'scenery')
+      o.set("targetObject", [{
+        "__type": "Pointer",
+        "className": "ShopGoods",
+        "objectId": good?.objectId
+      }])
+    }
+    let now = new Date()
+    tradeNo = "C" +
+      String(now.getFullYear()) +
+      (now.getMonth() + 1) +
+      now.getDate() +
+      now.getHours() +
+      now.getMinutes() +
+      now.getSeconds() +
+      Math.random().toString().slice(-6);
+    o.set("orderNum", tradeNo);
+    o.set("totalPrice", totalPrice_more || 0);
+    o.set("distributeType", distributeType || 'verify');
+    if (distributeType == 'verify') {
+      o.set("info", {});
+    } else {
+      o.set("address", {
+        __type: 'Pointer',
+        className: 'ShopAddress',
+        objectId: address?.objectId
+      });
+      o.set("info", {
+        name: address?.name,
+        mobile: address?.mobile,
+        address: address?.full_region + address?.address
+      });
+    }
+    o.set("specMap", specMap);
+    try {
+      order = await o.save()
+      this.setData({
+        tradeNo,
+        order: o,
+        showPay: false,
+        showPay_more:true
+      })
+      wx.showToast({
+        title: '已创建订单',
+        icon: 'none'
       })
-      // wx.showToast({
-      //   title: '已创建订单',
-      //   icon: 'none'
-      // })
     } catch (error) {
       wx.showToast({
         title: '出错了请检查后重试',
@@ -241,6 +572,7 @@ Page({
         title: '加载中',
       })
       order.set('status', '200')
+      order.set('payTime',new Date())
       order.set('payType', 'wx')
       order.set('isPay', true)
       try {
@@ -265,6 +597,13 @@ Page({
     }
   },
 
+  /** 跳转*/
+  tourl(e) {
+    const url = e.currentTarget.dataset.url
+    wx.navigateTo({
+      url: `${url}` // 目标页面的路径
+    });
+  },
 
   /**
    * 生命周期函数--监听页面初次渲染完成

+ 5 - 2
nova-tourism/pages/collect/collect-detail/index.json

@@ -1,7 +1,10 @@
 {
   "usingComponents": {
     "van-icon": "@vant/weapp/icon/index",
-    "van-action-sheet": "@vant/weapp/action-sheet/index"
-
+    "van-action-sheet": "@vant/weapp/action-sheet/index",
+    "van-popup": "@vant/weapp/popup/index",
+    "van-stepper": "@vant/weapp/stepper/index",
+    "van-checkbox": "@vant/weapp/checkbox/index",
+    "van-checkbox-group": "@vant/weapp/checkbox-group/index"
   }
 }

+ 445 - 55
nova-tourism/pages/collect/collect-detail/index.less

@@ -1,29 +1,34 @@
 /* nova-tourism/pages/collect/collect-detail/index.wxss */
-.bax{
+.bax {
     width: 100%;
     position: relative;
-    .all{
+
+    .all {
         width: 100vw;
         overflow-y: scroll;
         position: relative;
         background-color: #EEEEEE;
         color: #727783;
-        font-family: "Microsoft JhengHei", "PingFang SC", "Helvetica Neue", sans-serif; 
+        font-family: "Microsoft JhengHei", "PingFang SC", "Helvetica Neue", sans-serif;
         font-weight: 700;
-        .picturebox{
+
+        .picturebox {
             width: 100%;
             height: 550rpx;
             position: relative;
-            .img{
+
+            .img {
                 width: 100%;
                 height: 550rpx;
-                image{
+
+                image {
                     width: 100%;
                     height: 100%;
-    
+
                 }
             }
-            .numberbox{
+
+            .numberbox {
                 position: absolute;
                 bottom: 40rpx;
                 right: 20rpx;
@@ -38,9 +43,10 @@
                 align-items: center;
                 background-color: rgba(12, 12, 12, 0.5);
             }
-    
+
         }
-        .box{
+
+        .box {
             width: 100%;
             height: auto;
             background-color: #EEEEEE;
@@ -48,23 +54,26 @@
             top: 542rpx;
             left: 0;
             border-radius: 12rpx;
-            .infobox{
+
+            .infobox {
                 width: 100%;
                 height: auto;
                 padding: 40rpx;
                 border-radius: 20rpx;
                 background-color: white;
-                .title{
+
+                .title {
                     width: 100%;
                     font-size: 26rpx;
-        
+
                 }
-                .lebalbox{
+
+                .lebalbox {
                     width: 100%;
                     display: flex;
                     margin-top: 10rpx;
-                    .lebal{
-                        width: 174rpx;
+
+                    .lebal {
                         height: 50rpx;
                         font-size: 28rpx;
                         border-radius: 6rpx;
@@ -78,73 +87,86 @@
                         align-items: center;
                     }
                 }
-                .carbox{
+
+                .carbox {
                     width: 100%;
                     height: 60rpx;
                     margin-top: 24rpx;
-                    display:flex ;
+                    display: flex;
                     align-items: center;
-                    image{
+
+                    image {
                         width: 40rpx;
                         height: 30rpx;
                     }
-                    .car-tex{
+
+                    .car-tex {
                         font-size: 26rpx;
                         color: #F8BB7F;
                         margin-left: 10rpx;
                     }
                 }
-                .carbox2{
+
+                .carbox2 {
                     width: 100%;
                     margin-top: 20rpx;
-                    display:flex ;
+                    display: flex;
                     align-items: center;
                     border-bottom: solid 2rpx #EEEEEE;
                     padding-bottom: 20rpx;
-                    image{
+
+                    image {
                         width: 40rpx;
                         height: 40rpx;
                     }
-                    .car-tex{
+
+                    .car-tex {
                         font-size: 26rpx;
                         // color: #F8BB7F;
                         margin-left: 10rpx;
                     }
                 }
-                .carbox3{
+
+                .carbox3 {
                     width: 100%;
                     margin-top: 20rpx;
-                    display:flex ;
-                    
-                    image{
+                    display: flex;
+
+                    image {
                         width: 40rpx;
                         height: 40rpx;
                     }
-                    .carbox3-tex{
-                        font-size:26rpx ;
+
+                    .carbox3-tex {
+                        font-size: 26rpx;
                         margin-left: 10rpx;
-                        .carbox3-tex2{
+
+                        .carbox3-tex2 {
                             margin-top: 10rpx;
                         }
                     }
                 }
-                .carbox4{
+
+                .carbox4 {
                     width: 100%;
                     margin-top: 20rpx;
-                    display:flex ;
+                    display: flex;
                     align-items: center;
-                    image{
+
+                    image {
                         width: 40rpx;
                         height: 40rpx;
                     }
-                    .car-tex{
+
+                    .car-tex {
                         font-size: 26rpx;
                         // color: #F8BB7F;
                         margin-left: 10rpx;
                     }
                 }
             }
-            .tipbox{
+
+            .tipbox {
                 width: 100%;
                 height: auto;
                 margin-top: 16rpx;
@@ -155,24 +177,29 @@
                 border-radius: 20rpx;
                 padding-bottom: 40rpx;
                 font-size: 26rpx;
-                .dinggou{
+
+                .dinggou {
                     width: 100%;
                     font-size: 26rpx;
-                    .dinggou-tex{
+
+                    .dinggou-tex {
                         margin-left: 20rpx;
                         margin-top: 10rpx;
                     }
                 }
-                .picbox{
+
+                .picbox {
                     width: 100%;
                     margin-top: 20rpx;
                     margin-bottom: 60rpx;
-                    image{
+
+                    image {
                         width: 100%;
                     }
                 }
             }
-            .tipbox2{
+
+            .tipbox2 {
                 width: 100%;
                 height: auto;
                 margin-top: 16rpx;
@@ -184,40 +211,46 @@
                 border-radius: 20rpx;
                 font-size: 26rpx;
                 padding-bottom: 110rpx;
-                .dinggou{
+
+                .dinggou {
                     width: 100%;
                     font-size: 26rpx;
-                    .dinggou-tex{
+
+                    .dinggou-tex {
                         margin-left: 20rpx;
                         margin-top: 10rpx;
                     }
                 }
-                image{
+
+                image {
                     width: 100%;
                     height: 760rpx;
                     margin-top: 20rpx;
                     margin-bottom: 20rpx;
                 }
-                .tip2-tex{
+
+                .tip2-tex {
                     display: flex;
                     justify-content: flex-end;
                 }
-                .qrBox{
+
+                .qrBox {
                     display: flex;
                     justify-content: space-between;
                     align-items: center;
 
-                    image{
+                    image {
                         width: 150rpx;
-                        margin:40rpx 10rpx;
+                        margin: 40rpx 10rpx;
                     }
                 }
             }
-    
+
         }
 
     }
-    .paybox{
+
+    .paybox {
         width: 100%;
         height: 90rpx;
         display: flex;
@@ -225,22 +258,26 @@
         bottom: 0;
         left: 0;
         background-color: white;
-        .pay1{
+
+        .pay1 {
             width: 288rpx;
             height: 100%;
             display: flex;
             align-items: center;
             justify-content: center;
-            image{
+
+            image {
                 width: 50rpx;
                 height: 44rpx;
             }
-            .pay1-tex{
+
+            .pay1-tex {
                 font-size: 32rpx;
                 margin-left: 30rpx;
             }
         }
-        .pay2{
+
+        .pay2 {
             width: 462rpx;
             height: 100%;
             display: flex;
@@ -249,10 +286,363 @@
             font-size: 32rpx;
             color: white;
             background-color: #F89B7F;
-            .pay2-tex2{
+
+            .pay2-tex2 {
                 margin-left: 10rpx;
             }
         }
     }
 
 }
+
+.specBox {
+    font-family: Microsoft JhengHei UI;
+    position: relative;
+
+    .delivery {
+        display: flex;
+        justify-content: space-between;
+
+        .tab {
+            image {
+                width: 48rpx;
+                height: 40rpx;
+                padding: 10rpx;
+                margin: 10rpx;
+                margin-right: 70rpx;
+            }
+
+            font-size: 26rpx;
+            height: 80rpx;
+            width:375rpx;
+            display: flex;
+            align-items:center;
+        }
+
+        .tab2 {
+            background: #D9D9D9;
+            border-radius: 0 24rpx 0 24rpx;
+            justify-content: center;
+        }
+    }
+
+    .verify {
+        display: flex;
+        justify-content: space-between;
+
+        .tab {
+            image {
+                width: 48rpx;
+                height: 40rpx;
+                padding: 10rpx;
+                margin: 10rpx;
+                margin-right: 70rpx;
+            }
+
+            font-size: 26rpx;
+            height: 80rpx;
+            width:375rpx;
+            display: flex;
+            align-items:center;
+        }
+
+        .tab1 {
+            background: #D9D9D9;
+            border-radius: 24rpx 0 24rpx 0;
+        }
+
+        .tab2 {
+            justify-content: center;
+        }
+    }
+
+    .address {
+        display: flex;
+        align-items: center;
+        justify-content: space-between;
+        padding: 20rpx;
+
+        .add {
+            display: flex;
+            align-items: center;
+
+            image {
+                width: 50rpx;
+                height: 50rpx;
+                padding-right: 20rpx;
+            }
+
+            view {
+                width: 516rpx;
+                font-size: 26rpx;
+                line-height: 40rpx;
+            }
+        }
+    }
+
+    .good {
+        display: flex;
+        margin: 20rpx;
+        padding-bottom: 20rpx;
+        border-bottom: #D9D9D9 1rpx solid;
+
+        image {
+            width: 224rpx;
+            height: 222rpx;
+            margin-right: 30rpx;
+        }
+
+        .info {
+            width: 440rpx;
+            display: flex;
+            flex-direction: column;
+            justify-content: space-between;
+
+            .price {
+                display: flex;
+                margin-bottom: 10rpx;
+                align-items: flex-end;
+
+                .after {
+                    display: flex;
+                    align-items: center;
+
+                    image {
+                        width: 34rpx;
+                        height: 34rpx;
+                        margin-right: 5rpx;
+                    }
+
+                    .int {
+                        font-size: 33rpx;
+                        color: #F89B7F;
+
+                    }
+
+                    .point {
+                        font-size: 24rpx;
+                        color: #F89B7F;
+                    }
+                }
+
+                .befor {
+                    margin-left: 10rpx;
+                    font-size: 24rpx;
+
+                    text {
+                        text-decoration: line-through
+                    }
+                }
+
+            }
+
+            .name {
+                font-size: 24rpx;
+                overflow: hidden;
+                text-overflow: ellipsis;
+                white-space: nowrap;
+            }
+        }
+    }
+
+    .li {
+        margin: 20rpx;
+        display: flex;
+        justify-content: space-between;
+        padding-bottom: 20rpx;
+        border-bottom: #D9D9D9 1rpx solid;
+
+        .tit {
+            font-size: 30rpx;
+        }
+
+        .right {
+            font-size: 26rpx;
+
+            .coupons {
+                color: #F89B7F;
+                margin-right: 5rpx;
+            }
+        }
+    }
+
+    .tagBox {
+        padding: 0 20rpx;
+        padding-bottom: 20rpx;
+        border-bottom: #D9D9D9 1rpx solid;
+
+        .tit {
+            font-size: 30rpx;
+            margin-bottom: 20rpx;
+        }
+
+        .tag_chick {
+            color: #F89B7F;
+            background: #FEF4F3;
+            border: 3rpx solid #F89B7F;
+        }
+
+        .tag_normal {
+            background: #F3F1F2;
+
+            text {
+                color: #9F9D9E;
+            }
+        }
+
+        .tag {
+            font-size: 26rpx;
+            padding: 10rpx 20rpx;
+            border-radius: 8rpx;
+
+        }
+
+        .occup {
+            margin: 30rpx 0;
+
+        }
+    }
+
+    .more {
+        margin: 20rpx;
+        padding-bottom: 20rpx;
+        font-size: 26rpx;
+        display: flex;
+        align-items: center;
+
+        van-icon {
+            margin-left: 20rpx;
+        }
+    }
+
+    .btn {
+        position: absolute;
+        font-size: 32rpx;
+        height: 82rpx;
+        width: 100%;
+        color: white;
+        background: #F89B7F;
+        border-radius: 0;
+        margin: 0;
+        padding: 0;
+        bottom: 0;
+    }
+}
+
+.moreBox {
+    .more_title {
+        border-bottom: #D9D9D9 1rpx solid;
+
+        .tab {
+            image {
+                width: 48rpx;
+                height: 40rpx;
+                padding: 10rpx;
+                margin: 10rpx;
+                margin-right: 240rpx;
+            }
+
+            font-size: 26rpx;
+            height: 80rpx;
+            display: flex;
+            align-items:center;
+        }
+
+    }
+
+    .already {
+        display: flex;
+        justify-content: space-between;
+        align-items: center;
+        font-size: 26rpx;
+        padding: 10rpx 20rpx;
+        border-bottom: #D9D9D9 1rpx solid;
+
+        .left {
+            display: flex;
+            align-items: center;
+
+            image {
+                width: 80rpx;
+                height: 80rpx;
+                margin: 0 20rpx;
+            }
+
+            text {
+                width: 330rpx;
+                overflow: hidden;
+                text-overflow: ellipsis;
+                white-space: nowrap;
+            }
+        }
+
+        .right {
+            color: gray;
+        }
+    }
+}
+
+.listBox {
+    .more_title {
+        border-bottom: #D9D9D9 1rpx solid;
+
+        .tab {
+            image {
+                width: 48rpx;
+                height: 40rpx;
+                padding: 10rpx;
+                margin: 10rpx;
+                margin-right: 240rpx;
+            }
+
+            font-size: 26rpx;
+            height: 80rpx;
+            display: flex;
+            align-items:center;
+        }
+
+    }
+
+    .good_item {
+        display: flex;
+        align-items: center;
+        margin: 20rpx;
+        padding-bottom: 20rpx;
+        border-bottom: #D9D9D9 1rpx solid;
+
+        .item {
+            display: flex;
+            justify-content: space-between;
+
+            image {
+                width: 110rpx;
+                height: 110rpx;
+                margin-right: 20rpx;
+            }
+
+            .info {
+                width: 520rpx;
+
+                .name {
+                    font-size: 22rpx;
+                }
+
+                .under {
+                    display: flex;
+                    justify-content: space-between;
+                }
+            }
+        }
+    }
+
+    .add {
+        margin: auto;
+        text-align: center;
+        padding: 15rpx 0;
+        font-size: 28rpx;
+        width: 60vw;
+        color: #F89B7F;
+        background: white;
+        border: 1rpx solid #F89B7F;
+    }
+}

+ 172 - 5
nova-tourism/pages/collect/collect-detail/index.wxml

@@ -25,7 +25,7 @@
           <view class="car-tex">48小时内发货</view>
         </view>
         <block wx:if="{{!spec}}">
-          <view class="carbox2">
+          <view class="carbox2" bind:tap="openSpec">
             <image src="https://file-cloud.fmode.cn/EbxZUK5lBI/20241230/1st61g035044073.png"></image>
             <view class="car-tex">暂无其他规格</view>
             <van-icon name="arrow" size='15' color='#727783' style="margin-left: auto;" />
@@ -33,7 +33,7 @@
         </block>
         <view wx:else class="carbox2" bind:tap="openSpec">
           <image src="https://file-cloud.fmode.cn/EbxZUK5lBI/20241230/1st61g035044073.png"></image>
-          <view class="car-tex">{{checkSpec.name}}</view>
+          <view class="car-tex">{{checkSpec.title}}</view>
           <van-icon name="arrow" size='15' color='#727783' style="margin-left: auto;" />
         </view>
         <view class="carbox3">
@@ -115,7 +115,7 @@
       <image src="https://file-cloud.fmode.cn/EbxZUK5lBI/20241230/rpl9a1024145457.png"></image>
       <view class="pay1-tex">首页</view>
     </view>
-    <view class="pay2" bind:tap="submitOrder">
+    <view class="pay2" bind:tap="openSpec">
       <view class="pay2-tex">优惠0</view>
       <view class="pay2-tex2">实付款¥{{totalPrice}}</view>
     </view>
@@ -123,6 +123,173 @@
 
 </view>
 <!-- 选择商品规格 -->
-<van-action-sheet show="{{ specBox }}" actions="{{spec}}" bind:close="closeSpec" description="选择商品规格" bind:select="getCheckSpec"></van-action-sheet>
+<!-- <van-action-sheet show="{{ specBox }}" actions="{{spec}}" bind:close="closeSpec" description="选择商品规格" bind:select="getCheckSpec"></van-action-sheet> -->
+<van-popup show="{{ specBox }}" position="bottom" bind:close="closeSpec" round>
+  <view class="specBox" style="height: 80vh;">
+    <view class="{{distributeType}}">
+      <view class="tab tab1">
+        <image bind:tap="closeSpec" src="https://file-cloud.fmode.cn/EbxZUK5lBI/20250320/cm1krr094543335.png" mode="" />
+        <view data-type="delivery" bind:tap="chickDistributeType">
+          物流配送
+        </view>
+      </view>
+      <view class="tab2 tab" data-type="verify" bind:tap="chickDistributeType">民宿自提</view>
+    </view>
+    <block wx:if="{{distributeType=='delivery'}}">
+      <view class="address" data-url="/common-page/pages/address/index?type=1&activeColor=#3498ff" bind:tap="tourl">
+        <view class="add">
+          <image src="https://file-cloud.fmode.cn/EbxZUK5lBI/20250320/1kjb1k101141655.png" mode="" />
+          <block wx:if="{{address.objectId}}">
+            <view>{{address.name||'微信用户'}} , {{address.mobile||'未知手机号'}} , {{(address.full_region||'')+(address.address||'')}}</view>
+          </block>
+          <block wx:else>
+            <view>暂未选择配送地址</view>
+          </block>
+        </view>
+        <van-icon name="arrow" />
+      </view>
+    </block>
+    <block wx:else>
+      <view class="address">
+        <view class="add">
+          <image src="https://file-cloud.fmode.cn/EbxZUK5lBI/20250320/1kjb1k101141655.png" mode="" />
+          <view>{{store.storeAddress}}</view>
+        </view>
+        <van-icon name="arrow" />
+      </view>
+    </block>
+    <view class="good">
+      <image src="{{good.image||'https://file-cloud.fmode.cn/EbxZUK5lBI/20250321/vdq1j1110711455.jpg'}}" mode="" />
+      <view class="info">
+        <view>
+          <view class="price">
+            <view class="after">
+              <image src="https://file-cloud.fmode.cn/EbxZUK5lBI/20250320/fq10ev101141515.png" mode="" />
+              <text class="int">券后¥{{totalPrice}}</text>
+              <!-- <text class="point">0</text> -->
+            </view>
+            <text class="befor">券前 <text>¥{{totalPrice}}</text></text>
+          </view>
+          <view class="name">
+            已选:{{checkSpec.title}}
+          </view>
+        </view>
+        <view>
+          <van-stepper bind:change="changeCount" button-size="59rpx" model:value="{{ count }}" min="1" max="99" integer />
+        </view>
+      </view>
+    </view>
+    <view class="li">
+      <view class="tit">优惠</view>
+      <view class="right">
+        <text>店铺券</text>
+        <text class="coupons">-0元</text>
+        <van-icon name="arrow" />
+      </view>
+    </view>
+    <view class="tagBox">
+      <view class="tit">型号</view>
+      <block wx:for="{{spec}}" wx:key="index">
+        <text data-title="{{item}}" bind:tap="getCheckSpec" class="tag {{item==checkSpec.title?'tag_chick':'tag_normal'}}">{{item}}<text>¥{{good.specMap[item][0].price}}</text></text>
+        <view class="occup"></view>
+      </block>
+    </view>
+    <view class="more" bind:tap="openListBox">
+      一次选多款
+      <van-icon name="arrow" />
+    </view>
+    <button bind:tap="submitOrder" class="btn">支付¥{{totalPrice}}</button>
+    <view style="height: 100rpx;"></view>
+  </view>
+</van-popup>
+<!-- 一次选多款-款式列表 -->
+<van-popup show="{{ listBox }}" position="bottom" bind:close="closeListBox" round>
+  <view class="specBox listBox" style="height: 80vh;">
+    <view class="more_title">
+      <view class="tab">
+        <image bind:tap="closeListBox" src="https://file-cloud.fmode.cn/EbxZUK5lBI/20250320/cm1krr094543335.png" mode="" />
+        <view data-type="delivery" bind:tap="chickDistributeType">
+          一次选多款
+        </view>
+      </view>
+    </view>
+    <view style="margin: 20rpx;font-size: 26rpx;font-weight: bold;">组合</view>
+    <block wx:for="{{specGoodList}}" wx:key="index">
+      <view class="good_item">
+        <van-checkbox value="{{ item.checked }}" data-index="{{index}}" bind:change="changeChecked" icon-size="32rpx" checked-color="#F89B7F"></van-checkbox>
+        <view class="item">
+          <image src="{{good.image||'https://file-cloud.fmode.cn/EbxZUK5lBI/20250321/vdq1j1110711455.jpg'}}" mode="" />
+          <view class="info">
+            <view class="name">{{item.spec}}</view>
+            <view class="under">
+              <view class="price">¥<text>{{item.price}}</text></view>
+              <van-stepper value="{{ item.count }}" data-index="{{index}}" bind:change="changeLMCount" />
+            </view>
+          </view>
+        </view>
+      </view>
+    </block>
+    <view class="add" type="default" plain="true" bind:tap="openMoreBox">+ 添加款式</view>
+    
+    <button bind:tap="submitOrder_more" class="btn">合计¥{{totalPrice_more}} · 去结算</button>
+    <view style="height: 100rpx;"></view>
+  </view>
+</van-popup>
+<!-- 一次选多款-款式 -->
+<van-popup show="{{ moreBox }}" position="bottom" bind:close="closeMoreBox" round>
+  <view class="specBox moreBox" style="height: 80vh;">
+    <view class="more_title">
+      <view class="tab">
+        <image bind:tap="closeMoreBox" src="https://file-cloud.fmode.cn/EbxZUK5lBI/20250320/cm1krr094543335.png" mode="" />
+        <view data-type="delivery" bind:tap="chickDistributeType">
+          选择第{{(specGoodList.length||0)+1}}款
+        </view>
+      </view>
+    </view>
+    <view class="already">
+      <view class="left">
+        已选择{{specGoodList.length||0}}款:
+        <image src="{{good.image}}" mode="" />
+        <text><block wx:for="{{specGoodList}}" wx:key="index"> {{item.spec}}</block></text>
+      </view>
+      <view class="right" bind:tap="settlement">
+        去结算
+        <van-icon name="arrow" />
+      </view>
+    </view>
+    <view class="good">
+      <image src="{{good.image||'https://file-cloud.fmode.cn/EbxZUK5lBI/20250321/vdq1j1110711455.jpg'}}" mode="" />
+      <view class="info">
+        <view>
+          <view class="price">
+            <view class="after">
+              <image src="https://file-cloud.fmode.cn/EbxZUK5lBI/20250320/fq10ev101141515.png" mode="" />
+              <text class="int">¥{{checkSpec_more.totalPrice}}</text>
+              <!-- <text class="point">0</text> -->
+            </view>
+          </view>
+          <view class="name">
+            已选:{{checkSpec.title}}
+          </view>
+        </view>
+        <view>
+          <van-stepper bind:change="changeCount_more" button-size="59rpx" model:value="{{ count_more }}" min="1" max="99" integer />
+        </view>
+      </view>
+    </view>
+
+    <view class="tagBox">
+      <view class="tit">型号</view>
+      <block wx:for="{{spec}}" wx:key="index">
+        <text data-title="{{item}}" bind:tap="getCheckSpec_more" class="tag {{item==checkSpec_more.title?'tag_chick':'tag_normal'}}">{{item}}<text>¥{{good.specMap[item][0].price}}</text></text>
+        <view class="occup"></view>
+      </block>
+    </view>
+    <button bind:tap="confirmCurrent" class="btn">确定选择第{{(specGoodList.length||0)+1}}款</button>
+    <view style="height: 100rpx;"></view>
+  </view>
+</van-popup>
+
 
-<payment style="z-index: 99999;" show="{{showPay}}" tradeNo="{{tradeNo}}" price="{{totalPrice}}" bind:payResult='acceptResult' showType="all" />
+<payment style="z-index: 99999;" show="{{showPay}}" tradeNo="{{tradeNo}}" price="{{totalPrice}}" bind:payResult='acceptResult' showType="all" />
+<payment style="z-index: 99999;" show="{{showPay_more}}" tradeNo="{{tradeNo}}" price="{{totalPrice_more}}" bind:payResult='acceptResult' showType="all" />

+ 290 - 6
nova-tourism/pages/collect/collect-detail/index.wxss

@@ -66,7 +66,6 @@
   margin-top: 10rpx;
 }
 .bax .all .box .infobox .lebalbox .lebal {
-  width: 174rpx;
   height: 50rpx;
   font-size: 28rpx;
   border-radius: 6rpx;
@@ -83,7 +82,7 @@
   width: 100%;
   height: 60rpx;
   margin-top: 24rpx;
-  display: flex ;
+  display: flex;
   align-items: center;
 }
 .bax .all .box .infobox .carbox image {
@@ -98,7 +97,7 @@
 .bax .all .box .infobox .carbox2 {
   width: 100%;
   margin-top: 20rpx;
-  display: flex ;
+  display: flex;
   align-items: center;
   border-bottom: solid 2rpx #EEEEEE;
   padding-bottom: 20rpx;
@@ -114,14 +113,14 @@
 .bax .all .box .infobox .carbox3 {
   width: 100%;
   margin-top: 20rpx;
-  display: flex ;
+  display: flex;
 }
 .bax .all .box .infobox .carbox3 image {
   width: 40rpx;
   height: 40rpx;
 }
 .bax .all .box .infobox .carbox3 .carbox3-tex {
-  font-size: 26rpx ;
+  font-size: 26rpx;
   margin-left: 10rpx;
 }
 .bax .all .box .infobox .carbox3 .carbox3-tex .carbox3-tex2 {
@@ -130,7 +129,7 @@
 .bax .all .box .infobox .carbox4 {
   width: 100%;
   margin-top: 20rpx;
-  display: flex ;
+  display: flex;
   align-items: center;
 }
 .bax .all .box .infobox .carbox4 image {
@@ -246,3 +245,288 @@
 .bax .paybox .pay2 .pay2-tex2 {
   margin-left: 10rpx;
 }
+.specBox {
+  font-family: Microsoft JhengHei UI;
+  position: relative;
+}
+.specBox .delivery {
+  display: flex;
+  justify-content: space-between;
+}
+.specBox .delivery .tab {
+  font-size: 26rpx;
+  height: 80rpx;
+  width: 375rpx;
+  display: flex;
+  align-items: center;
+}
+.specBox .delivery .tab image {
+  width: 48rpx;
+  height: 40rpx;
+  padding: 10rpx;
+  margin: 10rpx;
+  margin-right: 70rpx;
+}
+.specBox .delivery .tab2 {
+  background: #D9D9D9;
+  border-radius: 0 24rpx 0 24rpx;
+  justify-content: center;
+}
+.specBox .verify {
+  display: flex;
+  justify-content: space-between;
+}
+.specBox .verify .tab {
+  font-size: 26rpx;
+  height: 80rpx;
+  width: 375rpx;
+  display: flex;
+  align-items: center;
+}
+.specBox .verify .tab image {
+  width: 48rpx;
+  height: 40rpx;
+  padding: 10rpx;
+  margin: 10rpx;
+  margin-right: 70rpx;
+}
+.specBox .verify .tab1 {
+  background: #D9D9D9;
+  border-radius: 24rpx 0 24rpx 0;
+}
+.specBox .verify .tab2 {
+  justify-content: center;
+}
+.specBox .address {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  padding: 20rpx;
+}
+.specBox .address .add {
+  display: flex;
+  align-items: center;
+}
+.specBox .address .add image {
+  width: 50rpx;
+  height: 50rpx;
+  padding-right: 20rpx;
+}
+.specBox .address .add view {
+  width: 516rpx;
+  font-size: 26rpx;
+  line-height: 40rpx;
+}
+.specBox .good {
+  display: flex;
+  margin: 20rpx;
+  padding-bottom: 20rpx;
+  border-bottom: #D9D9D9 1rpx solid;
+}
+.specBox .good image {
+  width: 224rpx;
+  height: 222rpx;
+  margin-right: 30rpx;
+}
+.specBox .good .info {
+  width: 440rpx;
+  display: flex;
+  flex-direction: column;
+  justify-content: space-between;
+}
+.specBox .good .info .price {
+  display: flex;
+  margin-bottom: 10rpx;
+  align-items: flex-end;
+}
+.specBox .good .info .price .after {
+  display: flex;
+  align-items: center;
+}
+.specBox .good .info .price .after image {
+  width: 34rpx;
+  height: 34rpx;
+  margin-right: 5rpx;
+}
+.specBox .good .info .price .after .int {
+  font-size: 33rpx;
+  color: #F89B7F;
+}
+.specBox .good .info .price .after .point {
+  font-size: 24rpx;
+  color: #F89B7F;
+}
+.specBox .good .info .price .befor {
+  margin-left: 10rpx;
+  font-size: 24rpx;
+}
+.specBox .good .info .price .befor text {
+  text-decoration: line-through;
+}
+.specBox .good .info .name {
+  font-size: 24rpx;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+.specBox .li {
+  margin: 20rpx;
+  display: flex;
+  justify-content: space-between;
+  padding-bottom: 20rpx;
+  border-bottom: #D9D9D9 1rpx solid;
+}
+.specBox .li .tit {
+  font-size: 30rpx;
+}
+.specBox .li .right {
+  font-size: 26rpx;
+}
+.specBox .li .right .coupons {
+  color: #F89B7F;
+  margin-right: 5rpx;
+}
+.specBox .tagBox {
+  padding: 0 20rpx;
+  padding-bottom: 20rpx;
+  border-bottom: #D9D9D9 1rpx solid;
+}
+.specBox .tagBox .tit {
+  font-size: 30rpx;
+  margin-bottom: 20rpx;
+}
+.specBox .tagBox .tag_chick {
+  color: #F89B7F;
+  background: #FEF4F3;
+  border: 3rpx solid #F89B7F;
+}
+.specBox .tagBox .tag_normal {
+  background: #F3F1F2;
+}
+.specBox .tagBox .tag_normal text {
+  color: #9F9D9E;
+}
+.specBox .tagBox .tag {
+  font-size: 26rpx;
+  padding: 10rpx 20rpx;
+  border-radius: 8rpx;
+}
+.specBox .tagBox .occup {
+  margin: 30rpx 0;
+}
+.specBox .more {
+  margin: 20rpx;
+  padding-bottom: 20rpx;
+  font-size: 26rpx;
+  display: flex;
+  align-items: center;
+}
+.specBox .more van-icon {
+  margin-left: 20rpx;
+}
+.specBox .btn {
+  position: absolute;
+  font-size: 32rpx;
+  height: 82rpx;
+  width: 100%;
+  color: white;
+  background: #F89B7F;
+  border-radius: 0;
+  margin: 0;
+  padding: 0;
+  bottom: 0;
+}
+.moreBox .more_title {
+  border-bottom: #D9D9D9 1rpx solid;
+}
+.moreBox .more_title .tab {
+  font-size: 26rpx;
+  height: 80rpx;
+  display: flex;
+  align-items: center;
+}
+.moreBox .more_title .tab image {
+  width: 48rpx;
+  height: 40rpx;
+  padding: 10rpx;
+  margin: 10rpx;
+  margin-right: 240rpx;
+}
+.moreBox .already {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  font-size: 26rpx;
+  padding: 10rpx 20rpx;
+  border-bottom: #D9D9D9 1rpx solid;
+}
+.moreBox .already .left {
+  display: flex;
+  align-items: center;
+}
+.moreBox .already .left image {
+  width: 80rpx;
+  height: 80rpx;
+  margin: 0 20rpx;
+}
+.moreBox .already .left text {
+  width: 330rpx;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+.moreBox .already .right {
+  color: gray;
+}
+.listBox .more_title {
+  border-bottom: #D9D9D9 1rpx solid;
+}
+.listBox .more_title .tab {
+  font-size: 26rpx;
+  height: 80rpx;
+  display: flex;
+  align-items: center;
+}
+.listBox .more_title .tab image {
+  width: 48rpx;
+  height: 40rpx;
+  padding: 10rpx;
+  margin: 10rpx;
+  margin-right: 240rpx;
+}
+.listBox .good_item {
+  display: flex;
+  align-items: center;
+  margin: 20rpx;
+  padding-bottom: 20rpx;
+  border-bottom: #D9D9D9 1rpx solid;
+}
+.listBox .good_item .item {
+  display: flex;
+  justify-content: space-between;
+}
+.listBox .good_item .item image {
+  width: 110rpx;
+  height: 110rpx;
+  margin-right: 20rpx;
+}
+.listBox .good_item .item .info {
+  width: 520rpx;
+}
+.listBox .good_item .item .info .name {
+  font-size: 22rpx;
+}
+.listBox .good_item .item .info .under {
+  display: flex;
+  justify-content: space-between;
+}
+.listBox .add {
+  margin: auto;
+  text-align: center;
+  padding: 15rpx 0;
+  font-size: 28rpx;
+  width: 60vw;
+  color: #F89B7F;
+  background: white;
+  border: 1rpx solid #F89B7F;
+}

+ 2 - 1
nova-tourism/pages/homestay/homestay-detail/index.json

@@ -3,6 +3,7 @@
     "van-sticky": "@vant/weapp/sticky/index",
     "van-icon": "@vant/weapp/icon/index",
     "van-calendar": "@vant/weapp/calendar/index",
-    "van-popup": "@vant/weapp/popup/index"
+    "van-popup": "@vant/weapp/popup/index",
+    "suggest":"../../../components/suggest/index"
   }
 }

+ 3 - 4
nova-tourism/pages/homestay/homestay-detail/index.wxml

@@ -90,7 +90,8 @@
         </view>
       </block>
 
-      <view class="wangbox">
+      <suggest store_id="{{objectId}}"></suggest>
+      <!-- <view class="wangbox">
         <view class="wang">望仙礼遇</view>
         <view class="wang2">望日w望月w来望仙w</view>
       </view>
@@ -111,9 +112,7 @@
       </view>
       <view class="more">
         <view class="more-tex">查看更多 ></view>
-      </view>
-
-
+      </view> -->
     </view>
   </view>
 </view>

+ 1 - 1
nova-tourism/pages/my/merchant/room-manage/room-edit/index.js

@@ -10,7 +10,7 @@ Page({
      */
     data: {
         pageType: 'add',
-        routeId: '0ePMS1OGU7',
+        routeId: 'm1D72HCXcL',
         roomId: null,
         storeId: null,
         oldimages:[]

+ 10 - 97
nova-tourism/pages/my/my-order/index.js

@@ -30,7 +30,7 @@ Page({
   onClose() {
     this.setData({
       show: false,
-    }); // 关闭弹窗并重置标志位
+    });
   },
   ONShow(e) {
     const id = e.currentTarget.dataset.item.objectId
@@ -57,7 +57,7 @@ Page({
       this.setData({
         showid: null
       })
-      this.getRoomOrder()
+      this.getOrder()
     } catch (error) {
       console.error("保存数据时出现错误:", error);
     }
@@ -70,7 +70,6 @@ Page({
     this.setData({
       currentTab: Number(options.active)
     })
-    // this.getRoomOrder()
     this.refersh()
   },
   async refersh() {
@@ -88,7 +87,7 @@ Page({
     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"
+    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"
     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"
@@ -106,7 +105,7 @@ Page({
   "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"
+    r."images"->> 0 AS "image",r."tags"::jsonb AS "tags",''::text AS "spec",''::text AS "list"
     FROM "RoomOrder" ro
     LEFT JOIN "ShopRoom" r ON r."objectId"=ro."room" 
     LEFT JOIN "ShopStore" store ON store."objectId"=r."shop"
@@ -124,15 +123,19 @@ Page({
   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 => {
+      console.log(item)
+      if(item.list){
+        item.list = JSON.parse(item.list||'[]')||[]
+      }
       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 || [])]
     })
@@ -147,103 +150,13 @@ Page({
    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}`,
-    });
-  },
+ 
   /**
    * 生命周期函数--监听页面初次渲染完成
    */

+ 110 - 64
nova-tourism/pages/my/my-order/index.less

@@ -1,71 +1,80 @@
 /* nova-tourism/pages/my/my-order/index.wxss */
-.all{
+.all {
     width: 100vw;
     background-color: #F4F4F4;
     overflow-y: scroll;
     padding-bottom: 20rpx;
     color: #382E2E;
-    font-family: "Microsoft YaHei", "PingFang SC", "Helvetica Neue", sans-serif; /* 添加后备字体 */
+    font-family: "Microsoft YaHei", "PingFang SC", "Helvetica Neue", sans-serif;
+    /* 添加后备字体 */
     font-weight: 400;
-    .tabbos{
+
+    .tabbos {
         width: 100%;
         background-color: white;
-        .tabs{
+
+        .tabs {
             width: 50%;
             margin-left: auto;
         }
-        .a{
-            box-shadow:none;
+
+        .a {
+            box-shadow: none;
         }
     }
+
     @font-face {
         font-family: 'NotoSans-Bold-5';
-        src: url('https://file-cloud.fmode.cn//tmp/5iLLGbrCKubyce219ad4b2ae30ae432fe9a88f8261b1.ttf')format('truetype');/* 字体文件路径 */
+        src: url('https://file-cloud.fmode.cn//tmp/5iLLGbrCKubyce219ad4b2ae30ae432fe9a88f8261b1.ttf')format('truetype');
+        /* 字体文件路径 */
     }
-        //为选中
-        @font-face {
-            font-family: 'NotoSans-Regular-2';
-            src: url('https://file-cloud.fmode.cn//tmp/5iLLGbrCKubyce219ad4b2ae30ae432fe9a88f8261b1.ttf')format('truetype'); /* 字体文件路径 */
-        }
-        
+
+    //为选中
+    @font-face {
+        font-family: 'NotoSans-Regular-2';
+        src: url('https://file-cloud.fmode.cn//tmp/5iLLGbrCKubyce219ad4b2ae30ae432fe9a88f8261b1.ttf')format('truetype');
+        /* 字体文件路径 */
+    }
+
     .tab-bar {
         display: flex;
         // justify-content: space-around;
         background-color: white;
         padding-bottom: 10rpx;
         font-family: 'NotoSans-Regular-2', sans-serif;
-      }
-      
-      .tab-item {
+    }
+
+    .tab-item {
         padding: 10px 0;
         text-align: center;
         position: relative;
         color: #969696;
         font-size: 28rpx;
         font-weight: 400;
-      }
-      
-      .tab-item.active {
+    }
+
+    .tab-item.active {
         position: relative;
         color: #67806A;
         font-size: 32rpx;
         font-weight: 500;
         font-family: 'NotoSans-Bold-5', sans-serif;
-      }
-      
-      .tab-item.active::after {
+    }
+
+    .tab-item.active::after {
         content: "";
         width: 64rpx;
         position: absolute;
-        left: calc(50% - 32rpx); 
-        right: calc(50% - 32rpx); 
+        left: calc(50% - 32rpx);
+        right: calc(50% - 32rpx);
         bottom: 0;
         height: 2rpx;
         background-color: #67806A;
         border-radius: 4rpx;
-        
-      }
-    .cardbox{
+
+    }
+
+    .cardbox {
         width: 100%;
         height: 428rpx;
         padding-left: 30rpx;
@@ -74,78 +83,96 @@
         padding-bottom: 10rpx;
         margin-top: 26rpx;
         background-color: white;
-        .title{
+
+        .title {
             width: 100%;
             font-size: 28rpx;
             font-weight: 400;
             display: flex;
         }
-        .roombox{
+
+        .roombox {
             width: 100%;
             display: flex;
             margin-top: 24rpx;
-            image{
+
+            image {
                 width: 150rpx;
                 height: 150rpx;
                 border-radius: 4rpx;
             }
-            .room{
+
+            .room {
                 height: 100%;
                 margin-left: 34rpx;
-                .room-name{
+
+                .room-name {
                     width: 460rpx;
                     font-size: 24rpx;
                     margin-bottom: 10rpx;
-    
+
                 }
-                .room-tag{
+
+                .room-tag {
                     font-size: 20rpx;
                     width: 460rpx;
                     height: auto;
                     color: #F37B40;
                     margin-bottom: 10rpx;
                 }
-                .room-text{
+
+                .room-text {
                     width: 460rpx;
                     height: auto;
                     font-size: 20rpx;
                     color: #737373;
                 }
-                .room-text2{
+
+                .room-text2 {
                     width: 460rpx;
                     height: auto;
                     font-size: 26rpx;
                     margin-top: 100rpx;
                     color: #737373;
+                    overflow: hidden;
+                    white-space: nowrap;
+                    text-overflow: ellipsis;
                 }
             }
         }
-        .pricebox{
+
+        .pricebox {
             width: 100%;
             display: flex;
             align-items: center;
-            .ciri{
-                width: 200rpx;
+
+            .ciri {
+                margin-right: 10rpx;
+                padding: 10rpx 20rpx;
+                // width: 200rpx;
                 font-size: 28rpx;
                 height: 36rpx;
                 display: flex;
                 justify-content: center;
                 align-items: center;
-                background-color:#FBF5E1 ;
+                background-color: #FBF5E1;
                 color: #F9C28B;
                 border-radius: 10rpx;
             }
-            .price{
+
+            .price {
                 margin-left: auto;
                 font-size: 28rpx;
             }
         }
-        .sumbitbox{
+
+        .sumbitbox {
             width: 100%;
             display: flex;
             justify-content: flex-end;
             margin-top: 32rpx;
-            .sumbit{
+
+            .sumbit {
                 width: 168rpx;
                 height: 68rpx;
                 border-radius: 20rpx;
@@ -159,12 +186,14 @@
             }
         }
     }
-    .box{
+
+    .box {
         width: 100%;
         padding-left: 30rpx;
         padding-right: 30rpx;
         padding-top: 20rpx;
-        .wangbox{
+
+        .wangbox {
             width: 100%;
             display: flex;
             justify-content: center;
@@ -172,25 +201,30 @@
             flex-direction: column;
             margin-top: 60rpx;
             margin-bottom: 28rpx;
-            .wang{
+
+            .wang {
                 width: 206rpx;
                 height: 46rpx;
                 font-size: 32rpx;
                 color: #67806A;
                 background-image: url(https://file-cloud.fmode.cn/EbxZUK5lBI/20241126/dm1jj2032446503.png?imageView2/1/w/200/h/200);
-                background-position: center; /* 背景图片居中 */
+                background-position: center;
+                /* 背景图片居中 */
                 // background-size: cover; /* 背景图片覆盖整个元素 */
-                background-repeat: no-repeat; /* 不重复背景图片 */
+                background-repeat: no-repeat;
+                /* 不重复背景图片 */
                 display: flex;
                 justify-content: center;
                 align-items: center;
             }
-            .wang2{
+
+            .wang2 {
                 font-size: 24rpx;
                 color: #969696;
             }
         }
-        .wang-cardbox{
+
+        .wang-cardbox {
             margin-top: 40rpx;
             width: 100%;
             background-color: white;
@@ -198,41 +232,53 @@
             padding-left: 3%;
             padding-right: 3%;
             padding-bottom: 40rpx;
-            column-count: 2; /* 设置列数 */
-            column-gap: 16rpx; /* 设置列间距 */
-            .wang-card{
-                break-inside: avoid; /* 防止卡片在列之间断裂 */
-                margin-bottom: 20rpx; /* 设置卡片底部间距 */
-                width: 100%; /* 确保卡片宽度为100% */
-                
-                image{
+            column-count: 2;
+            /* 设置列数 */
+            column-gap: 16rpx;
+
+            /* 设置列间距 */
+            .wang-card {
+                break-inside: avoid;
+                /* 防止卡片在列之间断裂 */
+                margin-bottom: 20rpx;
+                /* 设置卡片底部间距 */
+                width: 100%;
+                /* 确保卡片宽度为100% */
+
+                image {
                     width: 100%;
                     height: 204rpx;
                     border-radius: 4rpx;
                 }
-                .wang-catex{
+
+                .wang-catex {
                     font-size: 26rpx;
                     font-weight: 400;
                     height: 76rpx;
                 }
-                .wang-numbox{
+
+                .wang-numbox {
                     width: 100%;
                     display: flex;
                     align-items: center;
-                    .wang-num{
+
+                    .wang-num {
                         display: flex;
                         justify-content: flex-end;
                         align-items: flex-end;
                         color: #C5262Ced;
                         font-size: 30rpx;
-                        .wang-num1{
+
+                        .wang-num1 {
                             font-size: 32rpx;
                         }
-                        .wang-num2{
+
+                        .wang-num2 {
                             font-size: 40rpx;
                         }
                     }
-                    .wang-submit{
+
+                    .wang-submit {
                         width: 102rpx;
                         height: 48rpx;
                         font-size: 28rpx;

+ 14 - 200
nova-tourism/pages/my/my-order/index.wxml

@@ -15,7 +15,7 @@
 
   <view>
     <block wx:for="{{order}}" wx:key="index">
-    <!-- 民宿 -->
+      <!-- 民宿 -->
       <block wx:if="{{item.table!='order'}}">
         <view class="cardbox">
           <view class="title">{{item.table||''}}
@@ -39,10 +39,10 @@
           </view>
           <view class="sumbitbox">
             <view class="sumbit" bindtap="ONShow" data-item="{{item}}">申请退房</view>
-            <view wx:if="{{currentTab==0||currentTab==2}}" class="sumbit" style="margin-left: 15rpx;" bindtap="tourl" data-url="{{'/nova-tourism/pages/my/my-order/order-detail/index?value=民宿&objectId='+item.objectId}}" >订单详情</view>
-            <view wx:if="{{currentTab==1}}" class="sumbit" style="margin-left: 15rpx;" bindtap="tourl" data-url="{{'/nova-tourism/pages/my/my-order/order-detail/index?value=民宿&objectId='+item.objectId}}" >变更订单</view>
+            <view wx:if="{{currentTab==0||currentTab==2}}" class="sumbit" style="margin-left: 15rpx;" bindtap="tourl" data-url="{{'/nova-tourism/pages/my/my-order/order-detail/index?value=民宿&objectId='+item.objectId}}">订单详情</view>
+            <view wx:if="{{currentTab==1}}" class="sumbit" style="margin-left: 15rpx;" bindtap="tourl" data-url="{{'/nova-tourism/pages/my/my-order/order-detail/index?value=民宿&objectId='+item.objectId}}">变更订单</view>
           </view>
-          <van-dialog wx:if="{{showid==item.objectId}}" message='仅支持线下退款,确定退房吗?' data-item="{{item}}" show="{{ show }}"  show-cancel-button bind:cancel="onClose" bind:confirm="ordercom">
+          <van-dialog wx:if="{{showid==item.objectId}}" message='仅支持线下退款,确定退房吗?' data-item="{{item}}" show="{{ show }}" show-cancel-button bind:cancel="onClose" bind:confirm="ordercom">
           </van-dialog>
         </view>
       </block>
@@ -54,212 +54,26 @@
             <image src="{{item.image||'https://file-cloud.fmode.cn//tmp/mqHkA2qV3Q8nca3dc59bad49de6e5ae57afa81d78ae8.jpeg?imageView2/1/w/200/h/200'}}"></image>
             <view class="room">
               <view class="room-name">{{item.name||''}}</view>
-              <view class="room-text2">{{item.spec||''}}</view>
+              <view class="room-text2">
+                {{item.spec||''}}
+                <block wx:for="{{item.list}}" wx:for-item="spec" wx:key="spec"><text>{{spec.spec}} </text></block>
+              </view>
             </view>
           </view>
           <van-divider customStyle="margin: 20rpx;border-color:'#B1B1B1' " />
           <view class="pricebox">
-          <block wx:for="{{item.tags}}" wx:for-item="tag" wx:key="index">
-            <view class="ciri">{{tag}}</view>
-          </block>
+            <block wx:for="{{item.tags}}" wx:for-item="tag" wx:key="index">
+              <view class="ciri">{{tag}}</view>
+            </block>
             <view class="price">实付款¥{{item.totalPrice}}</view>
           </view>
           <view class="sumbitbox">
-            <view wx:if="{{currentTab==0||currentTab==2}}" class="sumbit" bindtap="tourl" data-url="{{'/nova-tourism/pages/my/my-order/order-detail/index?value=物品&objectId='+item.objectId}}" >订单详细</view>
-            <view wx:if="{{currentTab==1}}" class="sumbit" bindtap="tourl" data-url="{{'/nova-tourism/pages/my/my-order/order-detail/index?value=物品&objectId='+item.objectId}}">查看物流</view>
+            <view wx:if="{{currentTab==0||currentTab==2}}" class="sumbit" bindtap="tourl" data-url="{{'/nova-tourism/pages/my/my-order/order-detail-good/index?objectId='+item.objectId}}">订单详细</view>
+            <view wx:if="{{currentTab==1}}" class="sumbit" bindtap="tourl" data-url="{{'/nova-tourism/pages/my/my-order/order-detail-good/index?objectId='+item.objectId}}">查看物流</view>
           </view>
         </view>
       </block>
     </block>
+    <van-empty wx:if="{{order.length<=0}}" description="暂无订单" />
   </view>
-
-
-
-
-
-  <view wx:if="{{currentTab == 0}}">
-    <block wx:if="{{value=='民宿'}}" wx:for="{{roomList}}" wx:key="index">
-      <view class="cardbox">
-        <view class="title">{{item.shopStore.storeName}}
-          <view wx:if="{{item.status==100}}" style="margin-left: auto;">已支付</view>
-        </view>
-        <view class="roombox">
-          <image src="{{item.room.images[0]}}"></image>
-          <view class="room">
-            <view class="room-name">{{item.room.name}}</view>
-            <view class="room-tag">
-              <block wx:for="{{item.room.tags}}" wx:key="index">
-                {{item}}
-              </block>
-            </view>
-            <view class="room-text">{{item.tiem}}</view>
-          </view>
-        </view>
-        <van-divider customStyle="margin: 20rpx;border-color:'#B1B1B1' " />
-        <view class="pricebox">
-          <view class="price">实付款¥{{item.price}}</view>
-        </view>
-        <view class="sumbitbox">
-          <view wx:if="{{item.status==100}}" class="sumbit" bindtap="ONShow" data-item="{{item}}">申请退房</view>
-          <view class="sumbit" style="margin-left: 15rpx;" bindtap="gourl" data-url="../my-order/order-detail/index" data-id="{{item.objectId}}">订单详细</view>
-
-        </view>
-        <van-dialog wx:if="{{showid==item.objectId}}" message='仅支持线下退款,确定退房吗?' data-item="{{item}}" show="{{ show }}" show-cancel-button bind:cancel="onClose" bind:confirm="ordercom">
-        </van-dialog>
-      </view>
-    </block>
-    <block wx:if="{{value=='物品'}}" wx:for="{{3}}" wx:key="index">
-      <view class="cardbox">
-        <view class="title">望仙礼遇</view>
-        <view class="roombox">
-          <image src="https://file-cloud.fmode.cn//tmp/mqHkA2qV3Q8nca3dc59bad49de6e5ae57afa81d78ae8.jpeg?imageView2/1/w/200/h/200"></image>
-          <view class="room">
-            <view class="room-name">房间描述房间描述</view>
-            <view class="room-text2">紫色经典款</view>
-          </view>
-        </view>
-        <van-divider customStyle="margin: 20rpx;border-color:'#B1B1B1' " />
-        <view class="pricebox">
-          <view class="ciri">望仙次日达</view>
-          <view class="price">实付款¥19999.99</view>
-        </view>
-        <view class="sumbitbox">
-          <view class="sumbit" bindtap="gourl" data-url="../my-order/order-detail/index" data-id="{{item.objectId}}">订单详细</view>
-        </view>
-      </view>
-    </block>
-    <van-empty wx:if="{{value=='民宿'&&roomList.length==0}}" description="暂无订单" />
-    <van-empty wx:if="{{value=='物品'}}" description="暂无订单" />
-  </view>
-  <view wx:if="{{currentTab == 1}}">
-    <block wx:if="{{value=='民宿'}}" wx:for="{{roomList}}" wx:key="index">
-      <view class="cardbox">
-        <view class="title">{{item.shopStore.storeName}}</view>
-        <view class="roombox">
-          <image src="{{item.room.images[0]}}"></image>
-          <view class="room">
-            <view class="room-name">{{item.room.name}}</view>
-            <view class="room-tag">
-              <block wx:for="{{item.room.tags}}" wx:key="index">
-                {{item}}
-              </block>
-            </view>
-            <view class="room-text">{{item.tiem}}</view>
-          </view>
-        </view>
-        <van-divider customStyle="margin: 20rpx;border-color:'#B1B1B1' " />
-        <view class="pricebox">
-          <view class="price">实付款¥{{item.price}}</view>
-        </view>
-        <view class="sumbitbox">
-          <view class="sumbit" bindtap="gourl" data-url="../my-order/order-detail/index" data-id="{{item.objectId}}">变更订单</view>
-        </view>
-      </view>
-    </block>
-    <!-- <block wx:if="{{value=='物品'}}" wx:for="{{3}}">
-                <view class="cardbox">
-                    <view class="title">望仙礼遇</view>
-                    <view class="roombox">
-                        <image src="https://file-cloud.fmode.cn//tmp/mqHkA2qV3Q8nca3dc59bad49de6e5ae57afa81d78ae8.jpeg?imageView2/1/w/200/h/200"></image>
-                        <view class="room">
-                            <view class="room-name">房间描述房间描述</view>
-                            <view class="room-text2">紫色经典款</view>
-                        </view>
-                    </view>
-                    <van-divider customStyle="margin: 20rpx;border-color:'#B1B1B1' " />
-                    <view class="pricebox">
-                        <view class="ciri">望仙次日达</view>
-                        <view class="price">实付款¥19999.99</view>
-                    </view>
-                    <view class="sumbitbox">
-                        <view class="sumbit" bindtap="gourl" data-url="../my-order/order-detail/index" data-id="{{item.objectId}}">查看物流</view>
-                    </view>
-                </view>
-            </block> -->
-    <van-empty wx:if="{{value=='民宿'&&roomList.length==0}}" description="暂无订单" />
-    <van-empty wx:if="{{value=='物品'}}" description="暂无订单" />
-  </view>
-  <view wx:if="{{currentTab == 2}}">
-    <block wx:if="{{value=='民宿'}}" wx:for="{{roomList}}" wx:key="index">
-      <view class="cardbox">
-        <view class="title">{{item.shopStore.storeName}}
-          <view wx:if="{{item.status==800}}" style="margin-left: auto;">已完成</view>
-        </view>
-        <view class="roombox">
-          <image src="{{item.room.images[0]}}"></image>
-          <view class="room">
-            <view class="room-name">{{item.room.name}}</view>
-            <view class="room-tag">
-              <block wx:for="{{item.room.tags}}" wx:key="index">
-                {{item}}
-              </block>
-            </view>
-            <view class="room-text">{{item.tiem}}</view>
-          </view>
-        </view>
-        <van-divider customStyle="margin-top: 20rpx;margin-bottom:22rpx border-color:'#D9D9D9' " />
-        <view class="pricebox">
-          <view class="price">实付款¥{{item.price}}</view>
-        </view>
-        <view class="sumbitbox">
-          <view class="sumbit" bindtap="gourl" data-url="../my-order/order-detail/index" data-id="{{item.objectId}}">订单详细</view>
-        </view>
-      </view>
-    </block>
-    <!-- <block wx:if="{{value=='物品'}}" wx:for="{{3}}">
-                <view class="cardbox">
-                    <view class="title">望仙礼遇</view>
-                    <view class="roombox">
-                        <image src="https://file-cloud.fmode.cn//tmp/mqHkA2qV3Q8nca3dc59bad49de6e5ae57afa81d78ae8.jpeg?imageView2/1/w/200/h/200"></image>
-                        <view class="room">
-                            <view class="room-name">房间描述房间描述</view>
-                            <view class="room-text2">紫色经典款</view>
-                        </view>
-                    </view>
-                    <van-divider customStyle="margin: 20rpx;border-color:'#B1B1B1' " />
-                    <view class="pricebox">
-                        <view class="ciri">望仙次日达</view>
-                        <view class="price">实付款¥19999.99</view>
-                    </view>
-                    <view class="sumbitbox">
-                        <view class="sumbit" bindtap="gourl" data-url="../my-order/order-detail/index" data-id="{{item.objectId}}">订单详细</view>
-                    </view>
-                </view>
-            </block> -->
-    <van-empty wx:if="{{value=='民宿'&&roomList.length==0}}" description="暂无订单" />
-    <van-empty wx:if="{{value=='物品'}}" description="暂无订单" />
-  </view>
-
-
-
-
-
-
-
-
-
-
-  
-  <!-- 望仙礼遇 -->
-  <!-- <view class="box">
-        <view class="wangbox">
-            <view class="wang">望仙礼遇</view>
-        </view>
-        <view class="wang-cardbox">
-            <block wx:for="{{4}}">
-                <view class="wang-card" bindtap="gourl2">
-                    <image src="https://file-cloud.fmode.cn//tmp/srFPqGFAzeT5958c828d985e451ed4c0b452e39ff57a.jpeg"></image>
-                    <view class="wang-catex">粉黛胖挑主人杯(无礼盒)·手做</view>
-                    <view class="wang-numbox">
-                        <view class="wang-num">
-                            <view class="wang-num1">¥</view>
-                            <view class="wang-num2">19900</view>
-                        </view>
-                        <view class="wang-submit">购买</view>
-                    </view>
-                </view>
-            </block>
-        </view>
-    </view> -->
-
 </view>

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
nova-tourism/pages/my/my-order/index.wxss


+ 91 - 0
nova-tourism/pages/my/my-order/my-refund/refund-good/index.js

@@ -0,0 +1,91 @@
+// nova-tourism/pages/my/my-order/my-refund/refund-good/index.js
+Page({
+
+  /**
+   * 页面的初始数据
+   */
+  data: {
+    statusBarHeight: 0,
+    screenHeight: 0,
+    customHeight: 0,
+    bottomNavHeight: 0,
+    contentHeight: 0,
+
+    text: '',
+    // 图片
+    fileList: [],
+    uptokenURL: '',
+    domain: '',
+    uploadURL: '',
+  },
+
+  /**
+   * 生命周期函数--监听页面加载
+   */
+  onLoad(options) {
+    const systemInfo = wx.getSystemInfoSync();
+    const statusBarHeight = systemInfo.statusBarHeight || 0;
+    const screenHeight = systemInfo.screenHeight || 0;
+    const custom = wx.getMenuButtonBoundingClientRect();
+    const customHeight = custom.height + 10 + 2 || 0;
+    const bottomNavHeight = systemInfo.screenHeight - systemInfo.safeArea.bottom || 0;
+
+    const contentHeight = (screenHeight - bottomNavHeight - statusBarHeight - customHeight) * 750 / systemInfo.windowWidth;
+    this.setData({
+      statusBarHeight,
+      screenHeight,
+      customHeight,
+      bottomNavHeight,
+      contentHeight
+    });
+  },
+
+  /**
+   * 生命周期函数--监听页面初次渲染完成
+   */
+  onReady() {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面显示
+   */
+  onShow() {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面隐藏
+   */
+  onHide() {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面卸载
+   */
+  onUnload() {
+
+  },
+
+  /**
+   * 页面相关事件处理函数--监听用户下拉动作
+   */
+  onPullDownRefresh() {
+
+  },
+
+  /**
+   * 页面上拉触底事件的处理函数
+   */
+  onReachBottom() {
+
+  },
+
+  /**
+   * 用户点击右上角分享
+   */
+  onShareAppMessage() {
+
+  }
+})

+ 6 - 0
nova-tourism/pages/my/my-order/my-refund/refund-good/index.json

@@ -0,0 +1,6 @@
+{
+  "usingComponents": {
+    "van-divider": "@vant/weapp/divider/index",
+    "van-icon": "@vant/weapp/icon/index"
+  }
+}

+ 159 - 0
nova-tourism/pages/my/my-order/my-refund/refund-good/index.less

@@ -0,0 +1,159 @@
+/* nova-tourism/pages/my/my-order/my-refund/refund-detail/index.wxss */
+page {
+    background: white;
+}
+
+.title {
+    width: 100%;
+    font-size: 36rpx;
+    background-color: white;
+    display: flex;
+    justify-content: center;
+    padding-bottom: 25rpx;
+    border-bottom:  #F4F4F4 20rpx solid;
+}
+
+.cardbox {
+    width: 100%;
+    padding-left: 30rpx;
+    padding-right: 30rpx;
+    padding-top: 20rpx;
+    padding-bottom: 10rpx;
+    margin-top: 20rpx;
+    background-color: white;
+
+    .title2 {
+        width: 100%;
+        font-size: 30rpx;
+        font-weight: 600;
+        display: flex;
+        align-items: center;
+        margin-bottom: 30rpx;
+    }
+
+    .roombox {
+        width: 100%;
+        display: flex;
+        margin-top: 20rpx;
+
+        image {
+            width: 150rpx;
+            height: 150rpx;
+        }
+
+        .room {
+            margin-left: 20rpx;
+
+            .room-name {
+                width: 460rpx;
+                font-size: 24rpx;
+                font-weight: bold;
+                margin-bottom: 10rpx;
+                color: #000000;
+
+            }
+
+            .room-tag {
+                font-size: 26rpx;
+                width: 460rpx;
+                color: #F37B40;
+                margin-bottom: 10rpx;
+            }
+
+            .room-text {
+                width: 460rpx;
+                font-size: 26rpx;
+                color: #737373;
+            }
+
+            .room-text2 {
+                width: 460rpx;
+                font-size: 20rpx;
+                margin-top: 100rpx;
+                color: #979797;
+            }
+        }
+    }
+
+    .text1 {
+        width: 100%;
+        font-size: 24rpx;
+        display: flex;
+        color: #000000;
+        margin-bottom: 20rpx;
+
+        .tex1 {
+            display: flex;
+            font-weight: bold;
+            .tex1-1 {
+                color: #E22525;
+                margin-left: 4rpx;
+            }
+
+        }
+
+        .tex2 {
+            margin-left: auto;
+            font-size: 24rpx;
+            color: #F05C14;
+
+        }
+
+        .tex3 {
+            margin-left: auto;
+            font-size: 24rpx;
+            display: flex;
+        }
+
+    }
+
+    .areabox {
+        width: 100%;
+        display: flex;
+        align-items: center;
+        justify-content: center;
+        position: relative;
+
+        textarea {
+            background-color: #F4F4F4;
+            width: 100%;
+            padding: 15rpx;
+            border-radius: 5rpx;
+            min-height: 200rpx;
+        }
+
+        .number {
+            color: gray;
+            position: absolute;
+            bottom: 5rpx;
+            right: 20rpx;
+            font-size: 26rpx;
+        }
+    }
+
+    .uploadbox {
+        width: 100%;
+        margin-top: 20rpx;
+    }
+}
+
+.submitbox {
+    width: 100%;
+    height: 110rpx;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    padding-bottom: 30rpx;
+
+    .submit {
+        background-color: #F05C14;
+        color: white;
+        width: 50%;
+        height: 100%;
+        border-radius: 20rpx;
+        font-size: 30rpx;
+        display: flex;
+        justify-content: center;
+        align-items: center;
+    }
+}

+ 46 - 0
nova-tourism/pages/my/my-order/my-refund/refund-good/index.wxml

@@ -0,0 +1,46 @@
+<nav type="back" background-color="#ffffff" frontColor="#000000" title="退款/售后" />
+<view class="title">订单已完成</view>
+<view class="cardbox">
+  <view class="title2">确认退换信息</view>
+  <view class="roombox">
+    <image src="https://file-cloud.fmode.cn//tmp/mqHkA2qV3Q8nca3dc59bad49de6e5ae57afa81d78ae8.jpeg?imageView2/1/w/200/h/200"></image>
+    <view class="room">
+      <view class="room-name">房间描述房间描述</view>
+      <view class="room-text2">紫色经典款</view>
+    </view>
+  </view>
+  <van-divider customStyle="margin: 20rpx;border-color:'#B1B1B1' " />
+  <view class="text1">
+    <view class="tex1">退换方式</view>
+    <view class="tex3">
+      退货退款
+      <van-icon name="arrow" custom-style='margin-left:10rpx' />
+    </view>
+  </view>
+  <view class="text1">
+    <view class="tex1">退货退款的原因</view>
+    <view class="tex3">
+      商品瑕疵
+      <van-icon name="arrow" custom-style='margin-left:10rpx' />
+    </view>
+  </view>
+  <view class="text1">
+    <view class="tex1">
+      描述和凭证
+      <view class="tex1-1">*</view>
+    </view>
+    <view class="tex2">
+      上传有助于处理问题
+    </view>
+  </view>
+  <view class="areabox">
+    <textarea auto-height model:value='{{text}}' bindinput='' maxlength='200'></textarea>
+    <view class="number">{{text.length}}/200</view>
+  </view>
+  <view class="uploadbox">
+    <upload bind:onChangeFile="picture" accept="image" uploadURL="{{uploadURL}}" domain="{{domain}}" uptokenURL="{{uptokenURL}}" maxCount="9" />
+  </view>
+</view>
+<view class="submitbox">
+  <view class="submit">提交</view>
+</view>

+ 135 - 0
nova-tourism/pages/my/my-order/my-refund/refund-good/index.wxss

@@ -0,0 +1,135 @@
+/* nova-tourism/pages/my/my-order/my-refund/refund-detail/index.wxss */
+page {
+  background: white;
+}
+.title {
+  width: 100%;
+  font-size: 36rpx;
+  background-color: white;
+  display: flex;
+  justify-content: center;
+  padding-bottom: 25rpx;
+  border-bottom: #F4F4F4 20rpx solid;
+}
+.cardbox {
+  width: 100%;
+  padding-left: 30rpx;
+  padding-right: 30rpx;
+  padding-top: 20rpx;
+  padding-bottom: 10rpx;
+  margin-top: 20rpx;
+  background-color: white;
+}
+.cardbox .title2 {
+  width: 100%;
+  font-size: 30rpx;
+  font-weight: 600;
+  display: flex;
+  align-items: center;
+  margin-bottom: 30rpx;
+}
+.cardbox .roombox {
+  width: 100%;
+  display: flex;
+  margin-top: 20rpx;
+}
+.cardbox .roombox image {
+  width: 150rpx;
+  height: 150rpx;
+}
+.cardbox .roombox .room {
+  margin-left: 20rpx;
+}
+.cardbox .roombox .room .room-name {
+  width: 460rpx;
+  font-size: 24rpx;
+  font-weight: bold;
+  margin-bottom: 10rpx;
+  color: #000000;
+}
+.cardbox .roombox .room .room-tag {
+  font-size: 26rpx;
+  width: 460rpx;
+  color: #F37B40;
+  margin-bottom: 10rpx;
+}
+.cardbox .roombox .room .room-text {
+  width: 460rpx;
+  font-size: 26rpx;
+  color: #737373;
+}
+.cardbox .roombox .room .room-text2 {
+  width: 460rpx;
+  font-size: 20rpx;
+  margin-top: 100rpx;
+  color: #979797;
+}
+.cardbox .text1 {
+  width: 100%;
+  font-size: 24rpx;
+  display: flex;
+  color: #000000;
+  margin-bottom: 20rpx;
+}
+.cardbox .text1 .tex1 {
+  display: flex;
+  font-weight: bold;
+}
+.cardbox .text1 .tex1 .tex1-1 {
+  color: #E22525;
+  margin-left: 4rpx;
+}
+.cardbox .text1 .tex2 {
+  margin-left: auto;
+  font-size: 24rpx;
+  color: #F05C14;
+}
+.cardbox .text1 .tex3 {
+  margin-left: auto;
+  font-size: 24rpx;
+  display: flex;
+}
+.cardbox .areabox {
+  width: 100%;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  position: relative;
+}
+.cardbox .areabox textarea {
+  background-color: #F4F4F4;
+  width: 100%;
+  padding: 15rpx;
+  border-radius: 5rpx;
+  min-height: 200rpx;
+}
+.cardbox .areabox .number {
+  color: gray;
+  position: absolute;
+  bottom: 5rpx;
+  right: 20rpx;
+  font-size: 26rpx;
+}
+.cardbox .uploadbox {
+  width: 100%;
+  margin-top: 20rpx;
+}
+.submitbox {
+  width: 100%;
+  height: 110rpx;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  padding-bottom: 30rpx;
+}
+.submitbox .submit {
+  background-color: #F05C14;
+  color: white;
+  width: 50%;
+  height: 100%;
+  border-radius: 20rpx;
+  font-size: 30rpx;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}

+ 182 - 0
nova-tourism/pages/my/my-order/order-detail-good/index.js

@@ -0,0 +1,182 @@
+// nova-tourism/pages/my/my-order/order-detail-good/index.js
+let Parse = getApp().Parse;
+const company = getApp().globalData.company
+const uid = Parse.User.current()?.id
+const dateF = require("../../../../../utils/date")
+
+Page({
+
+  /**
+   * 页面的初始数据
+   */
+  data: {
+    statusBarHeight: 0,
+    screenHeight: 0,
+    customHeight: 0,
+    bottomNavHeight: 0,
+    contentHeight: 0,
+
+    objectId: '',
+    value: '',
+    roomList: {},
+    statusMap: {
+      '200': '待发货',
+      '500': '等待退款',
+      '601': '退款中',
+      '602': '待发货',
+      '300': '已发货',
+      '400': '已收货',
+      '700': '已收货',
+      '800': '已收货',
+    },
+  },
+
+  /**
+   * 生命周期函数--监听页面加载
+   */
+  onLoad(options) {
+    const {
+      objectId
+    } = options;
+    this.setData({
+      objectId,
+    })
+    console.log(this.data.objectId);
+
+    const systemInfo = wx.getSystemInfoSync();
+    const statusBarHeight = systemInfo.statusBarHeight || 0;
+    const screenHeight = systemInfo.screenHeight || 0;
+    const custom = wx.getMenuButtonBoundingClientRect();
+    const customHeight = custom.height + 10 + 2 || 0;
+    const bottomNavHeight = systemInfo.screenHeight - systemInfo.safeArea.bottom || 0;
+    const contentHeight = (screenHeight - bottomNavHeight - statusBarHeight - customHeight) * 750 / systemInfo.windowWidth;
+    this.setData({
+      statusBarHeight,
+      screenHeight,
+      customHeight,
+      bottomNavHeight,
+      contentHeight
+    });
+    this.getOrder()
+  },
+  /**获取订单 */
+  async getOrder() {
+    let {
+      objectId
+    } = this.data
+    let query = new Parse.Query('Order')
+    query.include('targetObject', 'store','expressCompany')
+    let d = await query.get(objectId)
+    let order = d?.toJSON()
+    order.payTime = dateF.formatTime('YYYY-mm-dd HH:MM:SS', order.payTime.iso)
+    if (order.startTime) {
+      order.startTime = dateF.formatTime('YYYY-mm-dd HH:MM:SS', order.startTime.iso)
+    }
+    console.log(order)
+    this.setData({
+      order
+    })
+  },
+  /** 复制*/
+  copyStr(e) {
+    let {
+      str
+    } = e.currentTarget.dataset
+    if (str) {
+      wx.setClipboardData({
+        data: str,
+        success: () => {
+          wx.showToast({
+            title: '复制成功',
+            icon: 'success',
+          });
+        },
+        fail: (err) => {
+          console.error('复制失败:', err);
+          wx.showToast({
+            title: '复制失败',
+            icon: 'none',
+            duration: 2000
+          });
+        }
+      });
+    } else {
+      wx.showToast({
+        title: '没有订单编号',
+        icon: 'none',
+        duration: 2000
+      });
+    }
+  },
+  /**查看物流 */
+  toExpress() {
+    let {
+      order
+    } = this.data
+    if (!order?.trackingNumber||!order?.expressCompany?.objectId) {
+      wx.showToast({
+        title: '暂无物流单号或快递公司',
+        icon:'none'
+      })
+      return 
+    }
+    wx.navigateTo({
+      url: `/common-page/pages/nova-express/index?num=${order?.trackingNumber}&com=${order?.expressCompany?.code}&phone=${order?.info?.mobile}`,
+    })
+  },
+  tourl(e) {
+    let url = e.currentTarget.dataset.url
+    wx.navigateTo({
+      url: `${url}`,
+    });
+  },
+
+  /**
+   * 生命周期函数--监听页面初次渲染完成
+   */
+  onReady() {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面显示
+   */
+  onShow() {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面隐藏
+   */
+  onHide() {
+
+  },
+
+  /**
+   * 生命周期函数--监听页面卸载
+   */
+  onUnload() {
+
+  },
+
+  /**
+   * 页面相关事件处理函数--监听用户下拉动作
+   */
+  onPullDownRefresh() {
+
+  },
+
+  /**
+   * 页面上拉触底事件的处理函数
+   */
+  onReachBottom() {
+
+  },
+
+  /**
+   * 用户点击右上角分享
+   */
+  onShareAppMessage() {
+
+  }
+})

+ 6 - 0
nova-tourism/pages/my/my-order/order-detail-good/index.json

@@ -0,0 +1,6 @@
+{
+  "usingComponents": {
+    "suggest":"../../../../components/suggest/index",
+    "nova-express":"../../../../../components/nova-express/index"
+    }
+}

+ 257 - 0
nova-tourism/pages/my/my-order/order-detail-good/index.less

@@ -0,0 +1,257 @@
+/* nova-tourism/pages/my/my-order/order-detail/index.wxss */
+.all {
+    width: 100vw;
+    overflow-y: scroll;
+    background-color: #F4F4F4;
+    padding-bottom: 20rpx;
+    color: #382E2E;
+    font-family: "Microsoft YaHei", "PingFang SC", "Helvetica Neue", sans-serif;
+    /* 添加后备字体 */
+    font-weight: 400;
+
+    .title {
+        width: 100%;
+        font-size: 36rpx;
+        background-color: white;
+        display: flex;
+        justify-content: center;
+        padding-bottom: 25rpx;
+    }
+
+    .cardbox {
+        width: 100%;
+        padding-left: 30rpx;
+        padding-right: 30rpx;
+        padding-top: 30rpx;
+        padding-bottom: 10rpx;
+        margin-top: 20rpx;
+        background-color: white;
+
+        .title2 {
+            width: 100%;
+            font-size: 30rpx;
+            height: 36rpx;
+            font-weight: 400;
+        }
+
+        .roombox {
+            width: 460rpx;
+
+            width: 100%;
+            display: flex;
+            margin-top: 18rpx;
+            height: 150rpx;
+
+            image {
+                width: 150rpx;
+                height: 150rpx;
+                border-radius: 4rpx;
+            }
+
+            .room {
+                height: 100%;
+                margin-left: 32rpx;
+                display: flex;
+                flex-direction: column;
+                justify-content: space-between;
+
+                .room-name {
+                    width: 460rpx;
+                    font-size: 24rpx;
+                }
+
+                .room-tag {
+                    font-size: 20rpx;
+                    width: 460rpx;
+                    height: auto;
+                    color: #F37B40;
+                }
+
+                .room-text {
+                    width: 460rpx;
+
+                    height: auto;
+                    font-size: 20rpx;
+                    color: #737373;
+                }
+
+                .room-text2 {
+                    width: 460rpx;
+                    height: auto;
+                    font-size: 20rpx;
+                    margin-top: 100rpx;
+                    color: #737373;
+                }
+            }
+        }
+
+        .textbox {
+            width: 100%;
+            height: auto;
+            padding-bottom: 40rpx;
+            margin-top: 46rpx;
+
+            .text1 {
+                width: 100%;
+                font-size: 20rpx;
+                display: flex;
+                color: #323232;
+                margin-bottom: 24rpx;
+
+                .tex2 {
+                    margin-left: auto;
+                    font-size: 28rpx;
+                    font-weight: 400;
+                    color: black;
+
+                }
+
+                .tex3 {
+                    margin-left: auto;
+                    font-size: 20rpx;
+                    color: #979797;
+                    display: flex;
+
+                    .tex3-2 {
+                        color: #323232;
+                        margin-left: 10rpx;
+                    }
+                }
+
+            }
+
+            .text2 {
+                width: 100%;
+                font-size: 28rpx;
+                display: flex;
+                color: #323232;
+                margin-bottom: 20rpx;
+
+                .tex1 {
+                    width: 200rpx;
+                }
+
+                .tex4 {
+                    width: 100%;
+                    margin-left: 40rpx;
+                    font-size: 28rpx;
+                    color: #979797;
+                    display: flex;
+                }
+            }
+
+            .sumbitbox {
+                width: 100%;
+                display: flex;
+                justify-content: flex-end;
+                margin-top: 26rpx;
+
+                .sumbit {
+                    width: 168rpx;
+                    height: 68rpx;
+                    border-radius: 20rpx;
+                    border: #F37B40 solid 2rpx;
+                    background-color: white;
+                    color: #F37B40;
+                    font-size: 28rpx;
+                    display: flex;
+                    align-items: center;
+                    justify-content: center;
+                }
+            }
+
+            .btn {
+                display: flex;
+                justify-content: flex-end;
+
+                view {
+                    font-size: 28rpx;
+                    padding: 12rpx 40rpx;
+                    border: 1rpx solid #F37B40;
+                    color: #F37B40;
+                    border-radius: 20rpx;
+                }
+            }
+
+
+
+        }
+    }
+
+    .box {
+        width: 100%;
+        height: auto;
+        background-color: white;
+        margin-top: 20rpx;
+        padding-top: 40rpx;
+
+        .wang-cardbox {
+            margin-top: 20rpx;
+            width: 100%;
+            background-color: white;
+            overflow-y: hidden;
+            padding-left: 3%;
+            padding-right: 3%;
+            padding-bottom: 40rpx;
+            column-count: 2;
+            /* 设置列数 */
+            column-gap: 20rpx;
+
+            /* 设置列间距 */
+            .wang-card {
+                break-inside: avoid;
+                /* 防止卡片在列之间断裂 */
+                margin-bottom: 20rpx;
+                /* 设置卡片底部间距 */
+                width: 100%;
+                /* 确保卡片宽度为100% */
+
+                image {
+                    width: 100%;
+                    height: 275rpx;
+                    border-radius: 15rpx;
+                }
+
+                .wang-catex {
+                    font-size: 28rpx;
+                }
+
+                .wang-numbox {
+                    width: 100%;
+                    height: 80rpx;
+                    display: flex;
+                    align-items: center;
+
+                    .wang-num {
+                        display: flex;
+                        justify-content: flex-end;
+                        align-items: flex-end;
+                        color: #C5262Ced;
+                        font-size: 30rpx;
+
+                        .wang-num1 {
+                            font-size: 32rpx;
+                        }
+
+                        .wang-num2 {
+                            font-size: 36rpx;
+                        }
+                    }
+
+                    .wang-submit {
+                        width: 100rpx;
+                        height: 50rpx;
+                        font-size: 30rpx;
+                        color: white;
+                        background-color: #F8DA7F;
+                        border-radius: 40rpx;
+                        display: flex;
+                        justify-content: center;
+                        align-items: center;
+                        margin-left: auto;
+                    }
+                }
+            }
+        }
+    }
+}

+ 81 - 0
nova-tourism/pages/my/my-order/order-detail-good/index.wxml

@@ -0,0 +1,81 @@
+<!--nova-tourism/pages/my/my-order/order-detail/index.wxml-->
+<nav type="back" background-color="#ffffff" frontColor="#000000" title="订单详细" />
+<view class="all">
+  <view class="title" wx:if="{{order.status=='200'||order.status=='500'||order.status=='601'||order.status=='602'}}">订单处理中</view>
+  <view class="title" wx:if="{{order.status=='300'}}">订单进行中</view>
+  <view class="title" wx:if="{{order.status=='400'||order.status=='700'||order.status=='800'}}">订单已完成</view>
+  <view class="cardbox">
+    <view class="title2">{{order.store.storeName}}</view>
+    <view class="roombox">
+      <image src="{{order.targetObject[0].image}}"></image>
+      <view class="room">
+        <view class="room-name">{{order.targetObject[0].name}}</view>
+
+        <view class="room-text">
+          <block wx:for="{{order.specMap[order.targetObject[0].objectId].list}}" wx:key="index">
+            {{item.spec}}
+            <van-icon name="cross" />{{item.count}}
+          </block>
+        </view>
+      </view>
+    </view>
+    <view class="textbox">
+      <view class="text1">
+        <view class="tex1">实付款</view>
+        <view class="tex2">¥{{order.totalPrice}}</view>
+      </view>
+      <view class="text1">
+        <view class="tex1">订单编号</view>
+        <view class="tex3" data-str="{{order.orderNum}}" bind:tap="copyStr">
+          <view class="tex3-1">{{order.orderNum}} |</view>
+          <view class="tex3-2">复制</view>
+        </view>
+      </view>
+      <view class="text1">
+        <view class="tex1">付款时间</view>
+        <view class="tex3">
+          {{order.payTime}}
+        </view>
+      </view>
+      <!-- <view class="text1" data-url="/common/pages/nova-express/index?num=YT8746219700214&com=yuantong" bind:tap="tourl"> -->
+      <view class="text1" bind:tap="toExpress">
+        <view class="tex1">发货时间</view>
+        <view class="tex3">
+          {{order.startTime||statusMap[order.status]}}
+        </view>
+      </view>
+      <block wx:if="{{order.trackingNumber}}">
+        <view class="text1">
+          <view class="tex1">物流单号</view>
+          <view class="tex3" data-str="{{order.trackingNumber}}" bind:tap="copyStr">
+            <view class="tex3-1">{{order.trackingNumber}} |</view>
+            <view class="tex3-2">复制</view>
+          </view>
+        </view>
+      </block>
+
+      <view class="text1">
+        <view class="tex1">申请开票</view>
+        <view class="tex3">
+          本订单由商家开具,无法显示开票
+        </view>
+      </view>
+      <view class="text1">
+        <view class="tex1">收货地址</view>
+        <view class="tex3" style="width: 532rpx;display: flex;justify-content: flex-end;">
+          <text wx:if="{{order.distributeType=='delivery'}}">{{order.info.address||'暂无'}}</text>
+          <text wx:else>民宿自提</text>
+        </view>
+      </view>
+      <view class="btn">
+        <block wx:if="{{order.status=='400'||order.status=='700'||order.status=='800'}}">
+          <view data-url="/nova-tourism/pages/my/my-order/my-refund/refund-good/index" bind:tap="tourl">退换</view>
+        </block>
+      </view>
+    </view>
+  </view>
+</view>
+
+<view style="margin: 0 20rpx;" wx:if="{{order.store.objectId}}">
+  <suggest store_id="{{order.store.objectId}}"></suggest>
+</view>

+ 218 - 0
nova-tourism/pages/my/my-order/order-detail-good/index.wxss

@@ -0,0 +1,218 @@
+/* nova-tourism/pages/my/my-order/order-detail/index.wxss */
+.all {
+  width: 100vw;
+  overflow-y: scroll;
+  background-color: #F4F4F4;
+  padding-bottom: 20rpx;
+  color: #382E2E;
+  font-family: "Microsoft YaHei", "PingFang SC", "Helvetica Neue", sans-serif;
+  /* 添加后备字体 */
+  font-weight: 400;
+}
+.all .title {
+  width: 100%;
+  font-size: 36rpx;
+  background-color: white;
+  display: flex;
+  justify-content: center;
+  padding-bottom: 25rpx;
+}
+.all .cardbox {
+  width: 100%;
+  padding-left: 30rpx;
+  padding-right: 30rpx;
+  padding-top: 30rpx;
+  padding-bottom: 10rpx;
+  margin-top: 20rpx;
+  background-color: white;
+}
+.all .cardbox .title2 {
+  width: 100%;
+  font-size: 30rpx;
+  height: 36rpx;
+  font-weight: 400;
+}
+.all .cardbox .roombox {
+  width: 460rpx;
+  width: 100%;
+  display: flex;
+  margin-top: 18rpx;
+  height: 150rpx;
+}
+.all .cardbox .roombox image {
+  width: 150rpx;
+  height: 150rpx;
+  border-radius: 4rpx;
+}
+.all .cardbox .roombox .room {
+  height: 100%;
+  margin-left: 32rpx;
+  display: flex;
+  flex-direction: column;
+  justify-content: space-between;
+}
+.all .cardbox .roombox .room .room-name {
+  width: 460rpx;
+  font-size: 24rpx;
+}
+.all .cardbox .roombox .room .room-tag {
+  font-size: 20rpx;
+  width: 460rpx;
+  height: auto;
+  color: #F37B40;
+}
+.all .cardbox .roombox .room .room-text {
+  width: 460rpx;
+  height: auto;
+  font-size: 20rpx;
+  color: #737373;
+}
+.all .cardbox .roombox .room .room-text2 {
+  width: 460rpx;
+  height: auto;
+  font-size: 20rpx;
+  margin-top: 100rpx;
+  color: #737373;
+}
+.all .cardbox .textbox {
+  width: 100%;
+  height: auto;
+  padding-bottom: 40rpx;
+  margin-top: 46rpx;
+}
+.all .cardbox .textbox .text1 {
+  width: 100%;
+  font-size: 20rpx;
+  display: flex;
+  color: #323232;
+  margin-bottom: 24rpx;
+}
+.all .cardbox .textbox .text1 .tex2 {
+  margin-left: auto;
+  font-size: 28rpx;
+  font-weight: 400;
+  color: black;
+}
+.all .cardbox .textbox .text1 .tex3 {
+  margin-left: auto;
+  font-size: 20rpx;
+  color: #979797;
+  display: flex;
+}
+.all .cardbox .textbox .text1 .tex3 .tex3-2 {
+  color: #323232;
+  margin-left: 10rpx;
+}
+.all .cardbox .textbox .text2 {
+  width: 100%;
+  font-size: 28rpx;
+  display: flex;
+  color: #323232;
+  margin-bottom: 20rpx;
+}
+.all .cardbox .textbox .text2 .tex1 {
+  width: 200rpx;
+}
+.all .cardbox .textbox .text2 .tex4 {
+  width: 100%;
+  margin-left: 40rpx;
+  font-size: 28rpx;
+  color: #979797;
+  display: flex;
+}
+.all .cardbox .textbox .sumbitbox {
+  width: 100%;
+  display: flex;
+  justify-content: flex-end;
+  margin-top: 26rpx;
+}
+.all .cardbox .textbox .sumbitbox .sumbit {
+  width: 168rpx;
+  height: 68rpx;
+  border-radius: 20rpx;
+  border: #F37B40 solid 2rpx;
+  background-color: white;
+  color: #F37B40;
+  font-size: 28rpx;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+.all .cardbox .textbox .btn {
+  display: flex;
+  justify-content: flex-end;
+}
+.all .cardbox .textbox .btn view {
+  font-size: 28rpx;
+  padding: 12rpx 40rpx;
+  border: 1rpx solid #F37B40;
+  color: #F37B40;
+  border-radius: 20rpx;
+}
+.all .box {
+  width: 100%;
+  height: auto;
+  background-color: white;
+  margin-top: 20rpx;
+  padding-top: 40rpx;
+}
+.all .box .wang-cardbox {
+  margin-top: 20rpx;
+  width: 100%;
+  background-color: white;
+  overflow-y: hidden;
+  padding-left: 3%;
+  padding-right: 3%;
+  padding-bottom: 40rpx;
+  column-count: 2;
+  /* 设置列数 */
+  column-gap: 20rpx;
+  /* 设置列间距 */
+}
+.all .box .wang-cardbox .wang-card {
+  break-inside: avoid;
+  /* 防止卡片在列之间断裂 */
+  margin-bottom: 20rpx;
+  /* 设置卡片底部间距 */
+  width: 100%;
+  /* 确保卡片宽度为100% */
+}
+.all .box .wang-cardbox .wang-card image {
+  width: 100%;
+  height: 275rpx;
+  border-radius: 15rpx;
+}
+.all .box .wang-cardbox .wang-card .wang-catex {
+  font-size: 28rpx;
+}
+.all .box .wang-cardbox .wang-card .wang-numbox {
+  width: 100%;
+  height: 80rpx;
+  display: flex;
+  align-items: center;
+}
+.all .box .wang-cardbox .wang-card .wang-numbox .wang-num {
+  display: flex;
+  justify-content: flex-end;
+  align-items: flex-end;
+  color: #C5262Ced;
+  font-size: 30rpx;
+}
+.all .box .wang-cardbox .wang-card .wang-numbox .wang-num .wang-num1 {
+  font-size: 32rpx;
+}
+.all .box .wang-cardbox .wang-card .wang-numbox .wang-num .wang-num2 {
+  font-size: 36rpx;
+}
+.all .box .wang-cardbox .wang-card .wang-numbox .wang-submit {
+  width: 100rpx;
+  height: 50rpx;
+  font-size: 30rpx;
+  color: white;
+  background-color: #F8DA7F;
+  border-radius: 40rpx;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  margin-left: auto;
+}

+ 21 - 2
project.private.config.json

@@ -1,9 +1,28 @@
 {
   "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html",
   "setting": {
-    "compileHotReLoad": false,
+    "compileHotReLoad": true,
     "urlCheck": true
   },
-  "condition": {},
+  "condition": {
+    "miniprogram": {
+      "list": [
+        {
+          "name": "nova-tourism/pages/my/my-order/order-detail-good/index",
+          "pathName": "nova-tourism/pages/my/my-order/order-detail-good/index",
+          "query": "objectId=qzN0MnYEba",
+          "launchMode": "default",
+          "scene": null
+        },
+        {
+          "name": "nova-tourism/pages/my/my-order/index",
+          "pathName": "nova-tourism/pages/my/my-order/index",
+          "query": "active=0",
+          "launchMode": "default",
+          "scene": null
+        }
+      ]
+    }
+  },
   "projectname": "nova-wapp"
 }

+ 177 - 176
utils/citysearch.js

@@ -1,4 +1,181 @@
 var AreaJson = [
+  {
+    "name": "江西省",
+    "city": [
+      {
+        "name": "南昌市",
+        "area": [
+          "东湖区",
+          "西湖区",
+          "青云谱区",
+          "湾里区",
+          "青山湖区",
+          "新建县",
+          "南昌县",
+          "进贤县",
+          "安义县",
+          "其他"
+        ]
+      },
+      {
+        "name": "景德镇市",
+        "area": [
+          "珠山区",
+          "昌江区",
+          "乐平市",
+          "浮梁县",
+          "其他"
+        ]
+      },
+      {
+        "name": "萍乡市",
+        "area": [
+          "安源区",
+          "湘东区",
+          "莲花县",
+          "上栗县",
+          "芦溪县",
+          "其他"
+        ]
+      },
+      {
+        "name": "九江市",
+        "area": [
+          "浔阳区",
+          "庐山区",
+          "瑞昌市",
+          "九江县",
+          "星子县",
+          "武宁县",
+          "彭泽县",
+          "永修县",
+          "修水县",
+          "湖口县",
+          "德安县",
+          "都昌县",
+          "其他"
+        ]
+      },
+      {
+        "name": "新余市",
+        "area": [
+          "渝水区",
+          "分宜县",
+          "其他"
+        ]
+      },
+      {
+        "name": "鹰潭市",
+        "area": [
+          "月湖区",
+          "贵溪市",
+          "余江县",
+          "其他"
+        ]
+      },
+      {
+        "name": "赣州市",
+        "area": [
+          "章贡区",
+          "瑞金市",
+          "南康市",
+          "石城县",
+          "安远县",
+          "赣县",
+          "宁都县",
+          "寻乌县",
+          "兴国县",
+          "定南县",
+          "上犹县",
+          "于都县",
+          "龙南县",
+          "崇义县",
+          "信丰县",
+          "全南县",
+          "大余县",
+          "会昌县",
+          "其他"
+        ]
+      },
+      {
+        "name": "吉安市",
+        "area": [
+          "吉州区",
+          "青原区",
+          "井冈山市",
+          "吉安县",
+          "永丰县",
+          "永新县",
+          "新干县",
+          "泰和县",
+          "峡江县",
+          "遂川县",
+          "安福县",
+          "吉水县",
+          "万安县",
+          "其他"
+        ]
+      },
+      {
+        "name": "宜春市",
+        "area": [
+          "袁州区",
+          "丰城市",
+          "樟树市",
+          "高安市",
+          "铜鼓县",
+          "靖安县",
+          "宜丰县",
+          "奉新县",
+          "万载县",
+          "上高县",
+          "其他"
+        ]
+      },
+      {
+        "name": "抚州市",
+        "area": [
+          "临川区",
+          "南丰县",
+          "乐安县",
+          "金溪县",
+          "南城县",
+          "东乡县",
+          "资溪县",
+          "宜黄县",
+          "广昌县",
+          "黎川县",
+          "崇仁县",
+          "其他"
+        ]
+      },
+      {
+        "name": "上饶市",
+        "area": [
+          "信州区",
+          "德兴市",
+          "上饶县",
+          "广丰县",
+          "鄱阳县",
+          "婺源县",
+          "铅山县",
+          "余干县",
+          "横峰县",
+          "弋阳县",
+          "玉山县",
+          "万年县",
+          "广信区",
+          "其他"
+        ]
+      },
+      {
+        "name": "其他",
+        "area": [
+          "其他"
+        ]
+      }
+    ]
+  },
   {
     "name": "北京市",
     "city": [
@@ -1930,182 +2107,6 @@ var AreaJson = [
       }
     ]
   },
-  {
-    "name": "江西省",
-    "city": [
-      {
-        "name": "南昌市",
-        "area": [
-          "东湖区",
-          "西湖区",
-          "青云谱区",
-          "湾里区",
-          "青山湖区",
-          "新建县",
-          "南昌县",
-          "进贤县",
-          "安义县",
-          "其他"
-        ]
-      },
-      {
-        "name": "景德镇市",
-        "area": [
-          "珠山区",
-          "昌江区",
-          "乐平市",
-          "浮梁县",
-          "其他"
-        ]
-      },
-      {
-        "name": "萍乡市",
-        "area": [
-          "安源区",
-          "湘东区",
-          "莲花县",
-          "上栗县",
-          "芦溪县",
-          "其他"
-        ]
-      },
-      {
-        "name": "九江市",
-        "area": [
-          "浔阳区",
-          "庐山区",
-          "瑞昌市",
-          "九江县",
-          "星子县",
-          "武宁县",
-          "彭泽县",
-          "永修县",
-          "修水县",
-          "湖口县",
-          "德安县",
-          "都昌县",
-          "其他"
-        ]
-      },
-      {
-        "name": "新余市",
-        "area": [
-          "渝水区",
-          "分宜县",
-          "其他"
-        ]
-      },
-      {
-        "name": "鹰潭市",
-        "area": [
-          "月湖区",
-          "贵溪市",
-          "余江县",
-          "其他"
-        ]
-      },
-      {
-        "name": "赣州市",
-        "area": [
-          "章贡区",
-          "瑞金市",
-          "南康市",
-          "石城县",
-          "安远县",
-          "赣县",
-          "宁都县",
-          "寻乌县",
-          "兴国县",
-          "定南县",
-          "上犹县",
-          "于都县",
-          "龙南县",
-          "崇义县",
-          "信丰县",
-          "全南县",
-          "大余县",
-          "会昌县",
-          "其他"
-        ]
-      },
-      {
-        "name": "吉安市",
-        "area": [
-          "吉州区",
-          "青原区",
-          "井冈山市",
-          "吉安县",
-          "永丰县",
-          "永新县",
-          "新干县",
-          "泰和县",
-          "峡江县",
-          "遂川县",
-          "安福县",
-          "吉水县",
-          "万安县",
-          "其他"
-        ]
-      },
-      {
-        "name": "宜春市",
-        "area": [
-          "袁州区",
-          "丰城市",
-          "樟树市",
-          "高安市",
-          "铜鼓县",
-          "靖安县",
-          "宜丰县",
-          "奉新县",
-          "万载县",
-          "上高县",
-          "其他"
-        ]
-      },
-      {
-        "name": "抚州市",
-        "area": [
-          "临川区",
-          "南丰县",
-          "乐安县",
-          "金溪县",
-          "南城县",
-          "东乡县",
-          "资溪县",
-          "宜黄县",
-          "广昌县",
-          "黎川县",
-          "崇仁县",
-          "其他"
-        ]
-      },
-      {
-        "name": "上饶市",
-        "area": [
-          "信州区",
-          "德兴市",
-          "上饶县",
-          "广丰县",
-          "鄱阳县",
-          "婺源县",
-          "铅山县",
-          "余干县",
-          "横峰县",
-          "弋阳县",
-          "玉山县",
-          "万年县",
-          "其他"
-        ]
-      },
-      {
-        "name": "其他",
-        "area": [
-          "其他"
-        ]
-      }
-    ]
-  },
   {
     "name": "山东省",
     "city": [

Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels