Prechádzať zdrojové kódy

```
feat(video-rights): 添加视频权益订单列表组件并集成到订单渲染器中

- 新增 videoRights-orderList 组件用于展示视频权益订单列表
- 在 OrderRenderer.vue 中集成视频权益订单列表组件
- 配置订单页面支持视频权益业务类型(XNSP)的数据过滤和显示
- 更新订单数据类型定义中的视频权益值从 VIDEO 改为 XNSP

fix(config): 调整试用环境API配置

- 启用 http://47.109.84.152:8081 作为试用环境API地址
- 注释掉 https://smqjh.api.zswlgz.com 生产环境地址避免误用

fix(video-rights): 修复视频权益首页滚动加载问题

- 修复首页滚动到底部时无法正确加载更多数据的问题
- 优化 scrolltolowerBootom 函数逻辑确保滚动加载正常工作
- 在订单页面添加滚动到底部刷新功能

chore(manifest): 修复 manifest.json 文件格式错误

- 修正 manifest.json 文件末尾多余的逗号导致的语法错误
```

zouzexu 1 deň pred
rodič
commit
cdb44b5103

+ 2 - 2
src/config/index.ts

@@ -17,9 +17,9 @@ const mapEnvVersion = {
    */
   // trial: "http://192.168.1.166:8080/jeecg-boot",
   // trial: 'http://192.168.0.157:8080',
-  // trial: 'http://47.109.84.152:8081',
+  trial: 'http://47.109.84.152:8081',
   // trial: 'http://192.168.1.166:8080',
-  trial: 'https://smqjh.api.zswlgz.com',
+  // trial: 'https://smqjh.api.zswlgz.com',
   /**
    * 正式版
    */

+ 63 - 0
src/subPack-smqjh/components/videoRights-orderList/videoRights-orderList.vue

@@ -0,0 +1,63 @@
+<script setup lang="ts">
+import router from '@/router'
+import { StaticUrl } from '@/config'
+
+defineProps<{
+  orderList: Api.xsbOrderList[]
+}>()
+
+function handleItemClick(item: Api.xsbOrderList) {
+  const orderNumber = item.orderNumber
+  if (orderNumber) {
+    router.push({
+      name: 'video-rights-order-info',
+      params: { orderNo: orderNumber },
+    })
+  }
+  else {
+    console.warn('订单号不存在,无法跳转到详情页')
+  }
+}
+</script>
+
+<template>
+  <view class="">
+    <view v-for=" order in orderList" :key="order.orderNumber" class="mt-28rpx rounded-16rpx bg-#FFF p-24rpx" @click="handleItemClick(order)">
+      <view class="flex items-center justify-between">
+        <view class="text-28rpx">
+          {{ order.createTime }}
+        </view>
+        <view class="text-28rpx font-bold">
+          {{ order.rechargeStatusDesc }}
+        </view>
+      </view>
+      <view class="mt-24rpx h-2rpx w-full bg-#F0F0F0" />
+      <view class="mt-24rpx flex items-center justify-between">
+        <view class="flex items-center gap-20rpx">
+          <view class="h-160rpx w-160rpx">
+            <image class="h-160rpx w-160rpx" :src="`${StaticUrl}/list-page-img.png`" />
+          </view>
+          <view>
+            <view class="text-32rpx font-bold">
+              {{ order?.orderItemList?.[0]?.prodName || '' }}
+            </view>
+            <view class="mt-16rpx text-#FF4D3A">
+              <text class="text-22rpx font-500">
+                ¥
+              </text>
+              <text class="text-36rpx font-800">
+                {{ order?.orderItemList?.[0]?.price || 0 }}
+              </text>
+            </view>
+            <view class="mt-16rpx text-24rpx">
+              {{ order.orderNumber }}
+            </view>
+          </view>
+        </view>
+        <wd-icon name="chevron-right" size="22px" color="#222222" />
+      </view>
+    </view>
+  </view>
+</template>
+
+<style lang="scss" scoped></style>

+ 3 - 0
src/subPack-smqjh/order/components/OrderRenderer.vue

@@ -2,6 +2,7 @@
 import chargeList from '../../components/charge-orderList/charge-orderList.vue'
 import xsbList from '../../components/xsb-orderList/xsb-orderList.vue'
 import filmList from '../../components/film-orderList/film-orderList.vue'
+import videoRightsList from '../../components/videoRights-orderList/videoRights-orderList.vue'
 
 interface Props {
   orderList: Api.xsbOrderList[]
@@ -46,6 +47,7 @@ onMounted(async () => {
         @submit="$emit('submit', $event)" @del="$emit('del', $event)" @after-sale="$emit('after-sale', $event)"
         @refresh="$emit('refresh')"
       />
+      <videoRightsList v-else-if="order.businessType === 'XNSP'" :order-list="[order]" />
     </template>
   </template>
   <xsbList
@@ -61,4 +63,5 @@ onMounted(async () => {
     @submit="$emit('submit', $event)" @del="$emit('del', $event)" @after-sale="$emit('after-sale', $event)"
     @refresh="$emit('refresh')"
   />
+  <videoRightsList v-else-if="navActiveTab === 'XNSP'" :order-list="orderList" />
 </template>

+ 8 - 0
src/subPack-smqjh/order/index.vue

@@ -48,6 +48,8 @@ function createFilteredList(businessType: string) {
 
 const xsbOrderList = createFilteredList('XSB')
 const chargeOrderList = createFilteredList('CD')
+const filmOrderList = createFilteredList('DYY')
+const videoRightsOrderList = createFilteredList('XNSP')
 
 const currentOrderList = computed(() => {
   if (navActiveTab.value === 'all') {
@@ -59,6 +61,12 @@ const currentOrderList = computed(() => {
   else if (navActiveTab.value === 'CD') {
     return chargeOrderList.value
   }
+  else if (navActiveTab.value === 'DYY') {
+    return filmOrderList.value
+  }
+  else if (navActiveTab.value === 'XNSP') {
+    return videoRightsOrderList.value
+  }
   return []
 })
 

+ 1 - 1
src/subPack-smqjh/order/order-data.ts

@@ -3,7 +3,7 @@ export const navTabTypeList = [
   { name: '星闪豹', value: 'XSB' },
   { name: '充电', value: 'CD' },
   { name: '电影演出', value: 'DYY' },
-  { name: '视频权益', value: 'VIDEO' },
+  { name: '视频权益', value: 'XNSP' },
   { name: '大牌点餐', value: 'SHOP' },
 ]
 

+ 4 - 3
src/subPack-videoRights/commonTab/components/home.vue

@@ -22,11 +22,12 @@ const { data: videoDataList, isLastPage, page, refresh } = usePagination((pageNu
 onShow(() => {
   refresh()
 })
-onReachBottom(() => {
+function scrolltolowerBootom() {
   if (!isLastPage.value) {
     page.value++
+    refresh()
   }
-})
+}
 </script>
 
 <template>
@@ -37,7 +38,7 @@ onReachBottom(() => {
     />
     <view :style="{ paddingTop: `${(Number(statusBarHeight) || 44) + MenuButtonHeight + 12}px` }" />
     <view class="box-border px24rpx">
-      <scroll-view scroll-y type="custom">
+      <scroll-view scroll-y type="custom" @scrolltolower="scrolltolowerBootom">
         <grid-view type="masonry" cross-axis-count="2" main-axis-gap="10" cross-axis-gap="10">
           <view v-for="item in videoDataList" :key="item.id" class="mt-18rpx rounded-16rpx bg-#FFF" @click="router.push({ name: 'video-rights-detail', params: { id: item.id } })">
             <view>

+ 1 - 0
src/subPack-videoRights/commonTab/components/order.vue

@@ -25,6 +25,7 @@ onShow(() => {
 onReachBottom(() => {
   if (!isLastPage.value) {
     page.value++
+    refresh()
   }
 })