ソースを参照

添加拼团页面

chengjunhui 1 ヶ月 前
コミット
acffe1ce33
共有5 個のファイルを変更した4050 個の追加0 個の削除を含む
  1. 123 0
      components/j-video/j-video.vue
  2. 1438 0
      pages/groupBuying/details.vue
  3. 434 0
      pages/groupBuying/list.vue
  4. 1456 0
      pages/groupBuying/myGbOrder/details.vue
  5. 599 0
      pages/groupBuying/myGbOrder/list.vue

+ 123 - 0
components/j-video/j-video.vue

@@ -0,0 +1,123 @@
+<template>
+<view class="root" :style="{width,height}">
+		<image :style="{width,height}" class="posterImg" :src="posterUrl" mode="aspectFill"></image>
+		<view :style="{width,height}" @click="state=!state" class="box">
+			<image class="playIcon" :src="$getImgPath('/static/play-icon.png')" mode="widthFix"></image>
+		</view>
+		<video :id="videoId" :style="{height,width:state?'750rpx':'0'}" @pause="state=0" @timeupdate="timeupdate" @fullscreenchange="fullscreenchange" class="video" :src="url"></video>
+		<!-- <progress :style="{'top':height,width}" class="progress" :percent="currentTime?parseInt(currentTime/duration*100):0" show-info border-radius="5" active></progress> -->
+</view>
+</template>
+
+<script>
+	export default {
+		computed:{
+			posterUrl(){
+				if(this.poster) return this.poster
+				return this.url + '?x-oss-process=video/snapshot,t_'+(parseInt(this.currentTime*1000))+',f_jpg,w_800,m_fast,ar_auto'
+			}
+		},
+		created() {
+			this.videoId = Date.now() + Math.ceil(Math.random()*10000000)+"";
+		},
+		mounted() {
+			this.VideoContext = uni.createVideoContext(this.videoId)
+		},
+		methods:{
+			fullscreenchange(e){
+				console.log(e.detail.fullScreen);
+				this.state = e.detail.fullScreen
+			},
+			timeupdate(e){
+				console.log(e.detail);
+				this.duration = e.detail.duration
+				this.currentTime = e.detail.currentTime
+			}
+		},
+		watch: {
+			state(state, oldValue) {
+				console.log(state,'state');
+				if(!state){
+					this.VideoContext.pause()
+				}else{
+					this.VideoContext.play()
+					this.$nextTick(()=>{
+						this.VideoContext.requestFullScreen({direction:this.direction})
+					})
+				}
+			}
+		},
+		data() {
+			return {
+				VideoContext:{},
+				state:false,
+				currentTime:0,
+				duration:0,
+				videoId:'',
+				imgUrl: this.$mConfig.staticUrl
+			};
+		},
+		props: {
+			poster: {
+				type: [String,Boolean],
+				default(){
+					return ''
+				}
+			},
+			url: {
+				type: String,
+				default(){
+					return ''
+				}
+			},
+			direction: {
+				type: Number,
+				default(){
+					return 0
+				}
+			},
+			width: {
+				type: String,
+				default(){
+					return "750rpx";
+				}
+			},
+			height: {
+				type: String,
+				default(){
+					return "450rpx";
+				}
+			}
+		},
+	}
+</script>
+
+<style lang="scss" scoped>
+	::v-deep.uni-video-container{
+		width: 0;
+		height: 0;
+	}
+.root{
+	position:relative;
+	width: 750rpx;
+	height: 300px;
+	overflow: hidden;
+}
+.posterImg,.video,.box{
+	display: flex;
+	width: 750rpx;
+	height: 300px;
+	//border: solid 1px red;absolute
+	position:absolute;
+}
+.posterImg{
+	//border: solid red 1px;
+}
+.box{
+	justify-content: center;
+	align-items: center;
+}
+.playIcon{
+	width: 100rpx !important;
+}
+</style>

File diff suppressed because it is too large
+ 1438 - 0
pages/groupBuying/details.vue


+ 434 - 0
pages/groupBuying/list.vue

@@ -0,0 +1,434 @@
+<template>
+  <view class="group-list">
+    <view class="today">
+      <view class="today-item">
+        <view class="today-left"> 今日必拼 </view>
+      </view>
+    </view>
+    <swiper
+      class="commodity"
+      v-if="groupList && groupList.length > 0"
+      :indicator-dots="false"
+      :autoplay="false"
+      @change="imgActiveFun"
+    >
+      <!-- <view class="commodity-item"> -->
+      <swiper-item
+        v-for="(item, index) in groupList"
+        :key="index"
+        @click="
+          goProductDetails('/pages/product/goods/puzzleGoods?id=' + item.id)
+        "
+      >
+        <view class="commodity-item">
+          <image
+            :src="`${item.cover}?x-oss-process=style/w_350`"
+            mode=""
+          ></image>
+          <view class="number">
+            <text>{{ item.group_people_num }}人团 </text>
+            <view class="u-FF0000" style="font-weight: Bold">
+              <rich-text
+                :nodes="$mUtil.priceBigSmall(item.min_price)"
+              ></rich-text>
+            </view>
+          </view>
+          <view class="completed" v-if="item.result_sale_num / 10000 > 1">
+            已有<text>{{ (item.result_sale_num / 10000).toFixed(1) }}万</text>
+            人拼
+          </view>
+          <view class="completed" v-else>
+            已有<text>{{ item.result_sale_num }}</text> 人拼
+          </view>
+        </view>
+      </swiper-item>
+      <!-- </view> -->
+    </swiper>
+    <!-- </view> -->
+    <nodata v-else :config="{ top: 1, content: '暂无商品~' }"></nodata>
+    <view class="option" v-if="groupList && groupList.length > 0">
+      <view
+        class="option-item"
+        :class="{ active: activeBannerIndex == index }"
+        v-for="(item, index) in groupList"
+        :key="index"
+      >
+      </view>
+    </view>
+    <view class="content">
+      <view class="content-top">
+        <view class="content-left"> 精选商品 </view>
+        <view class="line"> </view>
+        <view class="content-right"> 热销优品快来拼购 </view>
+      </view>
+      <view class="middle" v-if="RowsList && RowsList.length > 0">
+        <view
+          class="middle-item"
+          v-for="(item, index) in RowsList"
+          :key="index"
+          @click="
+            goProductDetails('/pages/product/goods/puzzleGoods?id=' + item.id)
+          "
+        >
+          <view class="image">
+            <image
+              :src="`${item.cover}?x-oss-process=style/w_350`"
+              mode=""
+            ></image>
+          </view>
+          <view class="middle-right">
+            <view class="title u-text2">
+              {{ item.title }}
+            </view>
+            <view class="large-box">
+              <view class="box">
+                <view class="number">
+                  <view class="large">
+                    <rich-text
+                      :nodes="$mUtil.priceBigSmall(item.min_price)"
+                    ></rich-text>
+                  </view>
+                  <view class="small">
+                    <rich-text
+                      :nodes="$mUtil.priceBigSmall(item.min_sale_price)"
+                    ></rich-text>
+                  </view>
+                </view>
+                <view class="three-people">
+                  {{ item.group_people_num }}人拼,已拼<text>{{
+                    item.result_sale_num
+                  }}</text
+                  >件
+                </view>
+              </view>
+              <view class="go-group-work"> 去拼团 </view>
+            </view>
+          </view>
+        </view>
+        <loadMore v-if="RowsList.length > 0" :status="LoadStatus"></loadMore>
+      </view>
+      <noData v-else :config="{ top: 1, content: '暂无商品~' }"></noData>
+    </view>
+  </view>
+</template>
+
+
+<script setup>
+import { ref, reactive, onMounted } from "vue";
+import {
+  onLoad,
+  onShow,
+  onPullDownRefresh,
+  onReachBottom,
+} from "@dcloudio/uni-app";
+import { usePageData } from "@/hooks/usePageData.ts";
+
+// const { RowsList, LoadStatus, initData } = usePageData(getSalesPageApi);
+const groupList = ref([]);
+const activeBannerIndex = ref(0);
+
+// 方法定义
+const goProductDetails = (url) => {
+  uni.navigateTo({
+    url: url,
+  });
+};
+
+const imgActiveFun = (e) => {
+  activeBannerIndex.value = e.detail.current;
+};
+
+const getGroup = () => {
+  return;
+  globalThis.$http
+    .get(
+      `/groupbuy/activitygoods/will-you-spell`,
+      {
+        limit: 12,
+        page: 1,
+        ...params.value,
+      },
+      false
+    )
+    .then((res) => {
+      if (res && res.code == 200) {
+        groupList.value = res.list;
+      }
+    });
+};
+
+
+// 页面生命周期函数
+onLoad((options) => {
+  if (options.shopid) {
+    params.value.shop_id = options.shopid;
+  }
+});
+
+onShow(() => {
+  getGroup();
+  //   initData();
+});
+
+// 下拉刷新
+onPullDownRefresh(() => {
+  getGroup();
+});
+</script>
+
+<style lang="scss" scoped>
+.middle {
+  margin: 0 20rpx 0 0;
+
+  .middle-item {
+    display: flex;
+    padding: 20rpx 0rpx 25rpx 16rpx;
+
+    .image {
+      image {
+        width: 187rpx;
+        height: 187rpx;
+        border-radius: 18rpx;
+      }
+    }
+
+    .middle-right {
+      margin-left: 30rpx;
+      display: flex;
+      flex-direction: column;
+      justify-content: space-between;
+
+      width: 100%;
+
+      .title {
+        font-size: 28rpx;
+        font-weight: 400;
+        color: #181818;
+      }
+
+      .large-box {
+        display: flex;
+        align-items: flex-end;
+        justify-content: space-between;
+
+        .box {
+          .number {
+            display: flex;
+            align-items: flex-end;
+            margin-top: 25rpx;
+
+            .large {
+              font-size: 36rpx;
+              color: #ff0000;
+              font-weight: bold;
+
+              text {
+                font-size: 36rpx;
+                color: 700;
+              }
+            }
+
+            .small {
+              font-size: 22rpx;
+              font-weight: 500;
+              color: #cccccc;
+              text-decoration: line-through;
+              margin-left: 16rpx;
+            }
+          }
+
+          .three-people {
+            font-size: 24rpx;
+            color: #333333;
+            font-weight: 400;
+
+            text {
+              color: #fe9000;
+            }
+          }
+        }
+
+        .go-group-work {
+          color: #ffffff;
+          font-size: 28rpx;
+          font-weight: 500;
+          padding: 12rpx 27rpx;
+          background-color: #fa6138;
+          border-radius: 32rpx;
+        }
+      }
+    }
+  }
+}
+
+.content {
+  padding: 0 30rpx;
+  background-color: #ffffff;
+  overflow: hidden;
+
+  .content-top {
+    display: flex;
+    align-items: center;
+    margin-top: 36rpx;
+    margin-bottom: 22rpx;
+
+    .content-left {
+      font-size: 36rpx;
+      color: #1a1a1a;
+      font-weight: 700;
+    }
+
+    .line {
+      width: 1rpx;
+      height: 33rpx;
+      margin: 0 15rpx;
+      background-color: #707070;
+    }
+
+    .content-right {
+      font-size: 24rpx;
+      color: #666666;
+      font-weight: 400;
+    }
+  }
+}
+
+.option {
+  margin: 30rpx 0;
+  display: flex;
+  justify-content: center;
+
+  .option-item {
+    background-color: #d9d9d9;
+    margin: 0 8rpx;
+    width: 14rpx;
+    height: 14rpx;
+    border-radius: 7rpx;
+  }
+
+  .active {
+    background-color: #fa6138;
+    width: 35rpx;
+    height: 14rpx;
+    border-radius: 7rpx;
+  }
+}
+
+.commodity {
+  margin-top: -195rpx;
+
+  margin-left: 30rpx;
+  margin-right: 30rpx;
+  height: 367rpx;
+
+  ::v-deep .uni-swiper-slide-frame {
+    width: 42% !important;
+  }
+
+  .commodity-item {
+    // margin-right: 30rpx;
+    border-radius: 16rpx;
+    background-color: #ffffff;
+    padding: 18rpx;
+    text-align: center;
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+
+    image {
+      width: 232rpx;
+      height: 232rpx;
+      border-radius: 16rpx;
+    }
+
+    .completed {
+      font-size: 22rpx;
+      margin-top: 2rpx;
+      font-weight: 400;
+      color: #333333;
+
+      text {
+        color: #ff0000;
+      }
+    }
+
+    .number {
+      margin-top: 20rpx;
+      font-size: 22rpx;
+      color: #333333;
+      font-weight: 500;
+      display: flex;
+      align-items: center;
+
+      .zero {
+        margin-left: 20rpx;
+        font-size: 22rpx;
+        color: #ff0000;
+        font-weight: 500;
+      }
+
+      .one {
+        color: #ff0000;
+        font-size: 34rpx;
+        font-weight: 700;
+      }
+
+      .two {
+        color: #ff0000;
+        font-size: 18rpx;
+        font-weight: 700;
+      }
+    }
+  }
+}
+
+.today {
+  background-color: #fa6138;
+  overflow: hidden;
+  height: 300rpx;
+
+  .today-item {
+    display: flex;
+    align-items: center;
+    margin: 30rpx;
+
+    .today-left {
+      font-size: 36rpx;
+      color: #ffffff;
+      font-weight: 700;
+    }
+
+    .line {
+      width: 1rpx;
+      height: 33rpx;
+      background-color: #ffffff;
+      margin: 0 15rpx;
+    }
+
+    .surplus {
+      font-size: 24rpx;
+      color: #ffffff;
+      font-weight: 400;
+      margin-right: 14rpx;
+    }
+
+    .time {
+      font-size: 24rpx;
+      font-weight: 500;
+      color: #ffffff;
+
+      text {
+        color: #ff0000;
+        padding: 0 4rpx;
+        background-color: #dccda4;
+        border-radius: 4rpx;
+        margin: 0 4rpx;
+      }
+    }
+  }
+}
+
+.group-list {
+  background-color: #f6f6f6;
+}
+</style>

File diff suppressed because it is too large
+ 1456 - 0
pages/groupBuying/myGbOrder/details.vue


+ 599 - 0
pages/groupBuying/myGbOrder/list.vue

@@ -0,0 +1,599 @@
+<template>
+  <view class="container">
+    <view class="topview" :style="{ top: tabTop + 'px' }">
+      <!--订单类型选择-->
+      <scroll-view scroll-x="true" class="scrollbox">
+        <view class="order-type u-flex-center">
+          <view
+            class="type-name u-font26 u-181818"
+            :class="{ active: isChange == index }"
+            v-for="(item, index) in orderType"
+            :key="index"
+            @click="clickBtn(index)"
+          >
+            {{ item }}
+          </view>
+        </view>
+      </scroll-view>
+    </view>
+    <view class="plrbottom">
+      <!--订单列表-->
+      <view class="order-list" v-for="item in orderList" :key="item.id">
+        <view class="u-bg-fff order-item" @click="goGbOrderDetails(item)">
+          <view class="u-shop-teile-pd">
+            <view class="u-text1 viewWidthTitle">
+              <text class="iconfont2 u-font34 u-bold" style="color: #fa6138"
+                >&#xe611;</text
+              >
+              <text class="u-1A1A1A u-font30 u-ml15">{{ item.shop_name }}</text>
+              <text class="u-CCC right-icon iconfont">&#xe6c7;</text>
+            </view>
+
+            <text class="u-FF0000 u-font28" v-if="item.pay_status == 0"
+              >待付款</text
+            >
+
+            <text
+              class="u-FF0000 u-font28"
+              v-if="
+                item.pay_status == 5 && (item.status == 0 || item.status == 1)
+              "
+              >待成团</text
+            >
+            <text
+              class="u-FF0000 u-font28"
+              v-if="item.pay_status == 5 && item.status == 2"
+              >组团成功</text
+            >
+            <text
+              class="u-FF0000 u-font28"
+              v-if="item.status == 3 || item.status == 4"
+              >组团失败</text
+            >
+          </view>
+
+          <view class="u-border-one-one"></view>
+          <view v-if="orderList.length > 0">
+            <!-- <ldgoods :value="item" :isGroup="true" @click.native="goProductDetails(item)"></ldgoods> -->
+
+            <view class="details-top">
+              <view class="details-left">
+                <image
+                  :src="`${item.goods_cover}?x-oss-process=style/w_350`"
+                  v-if="item.goods_cover"
+                  class="u-goods200 u-ml15"
+                  mode=""
+                ></image>
+                <image
+                  :src="`${item.goods_img}?x-oss-process=style/w_350`"
+                  v-if="item.goods_img"
+                  class="u-goods200 u-ml15"
+                  mode=""
+                ></image>
+              </view>
+              <view class="details-right">
+                <view class="right-top">
+                  {{ item.goods_title }}
+                </view>
+                <view class="specifications">
+                  规格:{{ item.sku_set_name }}
+                </view>
+                <view class="amount-of-money">
+                  <view
+                    style="font-size: 26rpx"
+                    v-if="item.real_price % 1 === 0"
+                  >
+                    ¥{{ item.real_price }}.00
+                  </view>
+                  <view style="font-size: 26rpx" v-else>
+                    ¥{{ item.real_price }}0
+                  </view>
+                  <text class="group">{{ item.group_people_num }}人拼</text>
+                </view>
+              </view>
+            </view>
+
+            <view class="u-text-right u-plr30 u-mt20">
+              <view class="u-flex" style="justify-content: flex-end">
+                <view class="u-text-right">
+                  共{{ item.number }}件商品, 总金额
+                </view>
+                <view class="u-FF0000">
+                  <rich-text
+                    :nodes="$mUtil.priceBigSmall(item.total_amount)"
+                  ></rich-text>
+                </view>
+                <text v-if="item.total_point > 0"
+                  >,总积分:{{ item.total_point }}</text
+                >
+              </view>
+
+              <view class="u-mt10">含运费¥{{ item.real_freight }}</view>
+              <view class="u-flex-column-end u-mt30">
+                <view class="u-flex">
+                  <!--去付款-->
+                  <view class="u-flex-center">
+                    <view v-if="item.pay_status == 0">
+                      <text class="iconfont">&#xe681;</text> 支付剩余({{
+                        item | dateFilter
+                      }})
+                    </view>
+                    <view
+                      class="btn-item u-text-center u-FF0000 br-FF0000"
+                      v-if="item.pay_status == 0"
+                      @click.stop="goGbOrderDetails(item)"
+                      >去付款</view
+                    >
+                    <view
+                      class="btn-item u-text-center u-060606 br-999"
+                      v-if="item.pay_status != 0"
+                      @click.stop="goGbOrderDetails(item)"
+                      >查看详情</view
+                    >
+                  </view>
+                </view>
+              </view>
+            </view>
+          </view>
+        </view>
+      </view>
+      <loadMore v-if="orderList.length > 0" :status="status"></loadMore>
+      <nodata v-else :config="{ top: 15, content: '暂无订单~' }"></nodata>
+    </view>
+    <!--页面加载动画-->
+    <ldLoading isFullScreen :active="loading"></ldLoading>
+  </view>
+</template>
+
+<script setup>
+import { ref, reactive, onMounted, onUnmounted } from "vue";
+import {
+  onLoad,
+  onUnload,
+  onReachBottom,
+  onPullDownRefresh,
+} from "@dcloudio/uni-app";
+
+// 响应式数据
+const list = ref(1);
+
+const isChange = ref(0);
+const timeCount = ref(0);
+const timer = ref(null);
+const orderType = ref(["全部订单", "待付款", "待成团", "组团成功", "组团失败"]);
+const loading = ref(true);
+const orderList = ref([]);
+const status = ref("more");
+const noData = ref(false);
+const parmas = reactive({
+  page: 1,
+  limit: 10,
+});
+const orderid = ref(null);
+const currentKey = ref(null);
+const tabTop = ref(0);
+
+// 全局变量
+let vObj;
+const app = getApp();
+
+// 页面生命周期
+onLoad((options) => {
+  vObj = getCurrentInstance().proxy;
+
+  timer.value = setInterval(() => {
+    timeCount.value++;
+  }, 1000);
+
+  tabTop.value = app.globalData.barHeight + 44;
+
+  if (options.keys) {
+    // 处理选项
+  }
+  getOrderList();
+});
+
+onUnload(() => {
+//   console.log(66666666);
+  clearInterval(timer.value);
+});
+
+onReachBottom(() => {
+  status.value = "loading";
+  parmas.page++;
+  getOrderList();
+});
+
+onPullDownRefresh(() => {
+  rest();
+  getOrderList();
+});
+
+// 过滤器函数
+const dateFilter = (item) => {
+  let time = item.pay_expire_time - item.now_millis - vObj.timeCount * 1000;
+  let str = vObj.$mUtil.countDownClock(time);
+  return str;
+};
+
+const payStatus = (val) => {
+  switch (val) {
+    case 0:
+      return "待支付";
+    case 1:
+      return "待发货";
+    case 2:
+      return "部分发货";
+    case 3:
+      return "待收货";
+    case 4:
+      return "已收货";
+    case 5:
+      return "待评价";
+    case 6:
+      return "关闭";
+    default:
+      return "";
+  }
+};
+
+const payStatusRight = (val) => {
+  switch (val) {
+    case 0:
+      return "申请退款中";
+    case 1:
+      return "商家同意";
+    case 4:
+      return "商家发起退款支付";
+    case 5:
+      return "退款成功";
+    case 6:
+      return "商家拒绝";
+    default:
+      return "";
+  }
+};
+
+const payStatusRights = (val) => {
+  switch (val) {
+    case 0:
+      return "申请退款/退货中";
+    case 1:
+      return "等待买家发货";
+    case 2:
+      return "待商家收货";
+    case 3:
+      return "商家已收货";
+    case 4:
+      return "商家待打款";
+    case 5:
+      return "退款/退货成功";
+    case 6:
+      return "商家拒绝";
+    case 7:
+      return "自动关闭";
+    case 8:
+      return "撤销";
+    default:
+      return "";
+  }
+};
+
+// 方法定义
+const goGbOrderDetails = (item) => {
+  if (item.pay_status == 0) {
+    uni.navigateTo({
+      url: `./gbOrderDetails?id=${item.pay_order_id}&status=waitpay`,
+    });
+  } else {
+    uni.navigateTo({
+      url: `./gbOrderDetails?id=${item.order_id}&groupId=${item.id}&status=pay`,
+    });
+  }
+};
+
+const goProductDetails = (item) => {
+  uni.navigateTo({
+    url: "/pages/product/goods/puzzleGoods?id=" + item.group_buy_goods_id,
+  });
+};
+
+const goPhone = (phone) => {
+  if (phone) {
+    uni.makePhoneCall({
+      phoneNumber: phone,
+    });
+  }
+};
+
+const lookLoginsList = (orderid, num, img, type) => {
+  uni.navigateTo({
+    url: `../logistics?id=${orderid}&num=${num}&img=${img}&type=${type}`,
+  });
+};
+
+const goRefundType = (i, code, time, list, orderid, childid) => {
+  uni.setStorageSync("blackgoodsList", list);
+  if (i == 1) {
+    uni.navigateTo({
+      url: `applicationDrawback?keystatus=${i}&title=申请退款&orderid=${orderid}`,
+    });
+  } else {
+    uni.navigateTo({
+      url: `refundType?order_code=${code}&format_order_time=${time}&keystatus=${i}&orderid=${orderid}&childid=${childid}`,
+    });
+  }
+};
+
+const sureGetOrder = (id, k) => {
+  uni.showModal({
+    title: "提示",
+    content: "确定已经收到了该商品?",
+    success: (res) => {
+      if (res.confirm) {
+        globalThis.$http
+          .post("/order/receipt", {
+            order_id: id,
+          })
+          .then((res) => {
+            if (res && res.code == 200) {
+              globalThis.$mUtil.toast("收货成功");
+              rest();
+              if (k == 1) {
+                getOrderList();
+              } else if (k == 2) {
+                otherPay(currentKey.value);
+              }
+            }
+          });
+      }
+    },
+  });
+};
+
+const otherFun = (object) => {
+  if (object) {
+    console.log(object.addressid);
+    globalThis.$http
+      .put("/order/update-receipt/" + orderid.value + "/" + object.addressid)
+      .then((res) => {
+        if (res && res.code == 200) {
+          globalThis.$mUtil.toast("修改成功");
+        }
+      });
+  }
+};
+
+const changeAddress = (id) => {
+  orderid.value = id;
+  uni.navigateTo({
+    url: "/pages/user/address/addressList",
+  });
+};
+
+const rest = () => {
+  parmas.page = 1;
+  orderList.value = [];
+};
+
+const getOrderList = () => {
+  globalThis.$http.get("/groupbuy/team/my", parmas).then((res) => {
+    loading.value = false;
+    if (res && res.code == 200) {
+      uni.stopPullDownRefresh();
+      orderList.value = orderList.value.concat(res.page.list);
+      if (orderList.value.length == 0) {
+        noData.value = true;
+      } else {
+        noData.value = false;
+      }
+      if (res.page.totalPage <= res.page.currPage) {
+        status.value = "noMore";
+      } else {
+        status.value = "more";
+      }
+    }
+  });
+};
+
+const clickBtn = (index) => {
+  rest();
+  isChange.value = index;
+  if (index > 0) {
+    parmas.status = index;
+  } else {
+    delete parmas.status;
+  }
+  getOrderList();
+};
+
+const waitpayOrder = (id, total_amount, expired_pay_time) => {
+  uni.navigateTo({
+    url: `../../order/pay?id=${id}&total_amount=${total_amount}&expired_pay_time=${expired_pay_time}`,
+  });
+};
+
+const goOrderDetails = (id) => {
+  uni.navigateTo({
+    url: `orderDetails?id=${id}&status=pay`,
+  });
+};
+
+const gotoBalckDetail = (id, shopid, type, status) => {
+  uni.navigateTo({
+    url: `orderblackDetails?id=${id}&shopid=${shopid}&type=${type}&status=${status}`,
+  });
+};
+
+const goOrderDetailsPay = (id) => {
+  uni.navigateTo({
+    url: `orderDetails?id=${id}&status=waitpay`,
+  });
+};
+
+const otherPay = (key) => {
+  // 需要实现 otherPay 方法
+  console.log("otherPay called with key:", key);
+};
+</script>
+
+<style>
+page {
+  background-color: #f5f5f5;
+}
+</style>
+<style lang="scss" scoped>
+.u-border-one-one {
+  border-top: 3rpx solid #e7e7e7;
+  margin-bottom: 30rpx;
+}
+
+.right-icon {
+  font-size: 25rpx;
+}
+
+.details-top {
+  display: flex;
+
+  .details-right {
+    margin-left: 30rpx;
+    display: flex;
+    flex-direction: column;
+    justify-content: space-between;
+
+    .right-top {
+      font-size: 28rpx;
+      color: #1a1a1a;
+      font-weight: 400;
+    }
+
+    .specifications {
+      font-size: 22rpx;
+      color: #999999;
+      font-weight: 400;
+      margin-top: 40rpx;
+      margin-left: 2rpx;
+    }
+
+    .amount-of-money {
+      display: flex;
+      font-size: 26rpx;
+      color: #1a1a1a;
+      font-weight: 400;
+
+      .group {
+        margin-left: 20rpx;
+        color: #999999;
+        font-weight: 400;
+        font-size: 26rpx;
+      }
+    }
+  }
+}
+
+.shop-icon {
+  font-size: 40rpx;
+  color: #0b844a;
+}
+
+.order-list {
+  margin-bottom: 30rpx;
+}
+
+.order-list .order-item {
+  padding-bottom: 20px;
+}
+
+.u-shop-teile-pd {
+  display: flex;
+  justify-content: space-between;
+}
+
+.plrbottom {
+  padding: 110rpx 30rpx 0;
+}
+
+.topview {
+  background-color: #f5f5f5;
+  height: 110rpx;
+  width: 100%;
+  position: fixed;
+  left: 0;
+  box-sizing: border-box;
+  padding: 0 30rpx;
+  z-index: 66;
+}
+
+.scrollbox {
+  white-space: nowrap;
+}
+
+.pt-pb {
+  padding: 30rpx;
+}
+
+.pt15-pb24 {
+  padding-top: 24rpx;
+  padding-bottom: 24rpx;
+}
+
+.br-FF0000 {
+  border: 1px solid #ff0000;
+}
+
+.br-999 {
+  border: 1px solid #999999;
+}
+
+.order-type {
+  margin-top: 30rpx;
+  margin-bottom: 26rpx;
+  display: inline-block;
+
+  .active {
+    background: #fa6138;
+    color: #ffffff;
+  }
+
+  .type-name {
+    border-radius: 30px;
+    padding: 12rpx 18rpx;
+    display: inline-block;
+  }
+}
+
+.listImg {
+  padding: 20rpx 0 0 16rpx;
+}
+
+.listimgGroup {
+  width: 200rpx;
+  height: 200rpx;
+  margin: 0 25rpx 25rpx 0;
+}
+
+.order-item {
+  .btn-type {
+    padding-bottom: 25rpx;
+
+    .pay-time {
+      line-height: 70rpx;
+      margin-left: auto;
+    }
+  }
+
+  .btn-item {
+    width: 200rpx;
+    height: 70rpx;
+    line-height: 68rpx;
+    border-radius: 35px;
+    margin-left: 22rpx;
+  }
+}
+
+.childBox {
+  background-color: #ffffff;
+  border-radius: 20rpx;
+  margin-bottom: 30rpx;
+}
+</style>