Browse Source

```
feat(attractions): 添加景区产品相关API接口和页面

- 新增DataAppProductDetailVo、AppProductDetailVo等景区产品相关类型定义
- 添加attractions.findAppByPage API接口用于获取景区列表
- 实现景区列表页面的搜索、分页加载功能
- 添加景区订单详情页面路由配置
- 在支付页面添加跳转到订单详情的功能
- 实现景区列表的数据绑定和UI展示
```

zouzexu 2 days ago
parent
commit
f1f9ae4b36

+ 243 - 3
src/api/api.type.d.ts

@@ -744,9 +744,9 @@ namespace Api {
 
 
   }
   }
   interface OmsOrderOilVO {
   interface OmsOrderOilVO {
-  /**
-   * 小桔订单号
-   */
+    /**
+     * 小桔订单号
+     */
     xjOrderId?: string
     xjOrderId?: string
     /**
     /**
      * 门店ID
      * 门店ID
@@ -3002,5 +3002,245 @@ namespace Api {
     welfareGoodList?: PmsDjkGoods[]
     welfareGoodList?: PmsDjkGoods[]
     [property: string]: any
     [property: string]: any
   }
   }
+  /**
+   * 返回数据对象
+   *
+   * DataAppProductDetailVo
+   */
+  export interface DataAppProductDetailVo {
+    list?: AppProductDetailVo[]
+    total?: number
+    [property: string]: any
+  }
+  export interface AppProductDetailVo {
+    /**
+     * 预订详细说明
+     */
+    chargeInclude?: string
+    /**
+     * 地区ID
+     */
+    cityId?: string
+    /**
+     * 景点所在地
+     */
+    cityName?: string
+    /**
+     * 产品介绍,富文本
+     */
+    content?: string
+    /**
+     * 创建时间
+     */
+    createTime?: string
+    /**
+     * 标志图
+     */
+    img?: string
+    /**
+     * 相关主图,多个图片以逗号分隔
+     */
+    imgs?: string
+    /**
+     * 重要提示
+     */
+    importantNote?: string
+    /**
+     * 退改申请类型 0不支持 1支持
+     */
+    isChangeask?: number
+    /**
+     * 是否需要人工确认,0自动确认,1人工确认
+     */
+    isConfirm?: number
+    /**
+     * 1在线支付(预付),0酒店前台现付
+     */
+    isOnlinepay?: number
+    /**
+     * 客人资料要求,1 要求输入每个客人资料,0 只需要输入一个客人资料
+     */
+    isSingle?: number
+    /**
+     * 市场价
+     */
+    marketPrice?: number
+    /**
+     * 最大预定数 0不限制
+     */
+    maxNum?: number
+    /**
+     * 预订详细说明
+     */
+    orderDesc?: string
+    /**
+     * 预订说明
+     */
+    orderPolicy?: string
+    /**
+     * 价格结束时间
+     */
+    priceEndDate?: string
+    /**
+     * 价格开始时间
+     */
+    priceStartDate?: string
+    /**
+     * 产品名称
+     */
+    productName?: string
+    /**
+     * 产品ID
+     */
+    productNo?: number
+    /**
+     * 产品简称
+     */
+    productShortName?: string
+    /**
+     * 限购规则
+     */
+    purchaseLimit?: PurchaseLimitVo
+    /**
+     * 退款说明
+     */
+    refundNote?: string
+    /**
+     * 退款规则列表
+     */
+    refundRules?: RefundRuleVo[]
+    /**
+     * 零售价
+     */
+    salePrice?: number
+    /**
+     * 结算价
+     */
+    settlementPrice?: number
+    /**
+     * 最早游玩日期
+     */
+    startDate?: string
+    /**
+     * 几点之前预定
+     */
+    startTime?: string
+    /**
+     * 产品状态 0在线 1下线
+     */
+    state?: number
+    /**
+     * 已销售数量
+     */
+    ticketCount?: number
+    /**
+     * 更新时间
+     */
+    updateTime?: string
+    /**
+     * 使用说明
+     */
+    userNote?: string
+    /**
+     * 有效期限制具体天数或日期
+     */
+    validityCon?: string
+    /**
+     * 有效期限制,0:游客选定的游玩日期当天有效 1:游客预订日期延后几天有效 2:游客预订日期截止到指定日期有效 3:游客选定日期延后几天有效 4:游客选定日期截止到指定日期有效
+     * 5:指定日期xxx到xxx内有效
+     */
+    validityType?: number
+    /**
+     * 景点地址
+     */
+    viewAddress?: string
+    /**
+     * 景点编号
+     */
+    viewId?: string
+    /**
+     * 纬度
+     */
+    viewLatitude?: string
+    /**
+     * 经度
+     */
+    viewLongitude?: string
+    /**
+     * 景点名称
+     */
+    viewName?: string
+    [property: string]: any
+  }
+
+  /**
+   * 限购规则
+   *
+   * PurchaseLimitVo
+   */
+  export interface PurchaseLimitVo {
+    /**
+     * 证件每天限制
+     */
+    limitCardDay?: number
+    /**
+     * 证件商品限制
+     */
+    limitCardGoods?: number
+    /**
+     * 证件数量限制
+     */
+    limitCardNum?: number
+    /**
+     * 手机每天限制
+     */
+    limitPhoneDay?: number
+    /**
+     * 手机商品限制
+     */
+    limitPhoneGoods?: number
+    /**
+     * 手机数量限制
+     */
+    limitPhoneNum?: number
+    /**
+     * 限制时间类型
+     */
+    limitTimeType?: number
+    /**
+     * 预定限制类型,下单数量校验类型
+     */
+    limitType?: number
+    [property: string]: any
+  }
+
+  /**
+   * 退款规则
+   *
+   * RefundRuleVo
+   */
+  export interface RefundRuleVo {
+    /**
+     * 是否支持订单完成后做强制退改 0不支持 1支持
+     */
+    agreeForcetg?: number
+    /**
+     * 分销商可退款规则
+     */
+    cancelMoneyCodex?: string
+    /**
+     * 有效退款日期,0当天,正数前x天,负数后x天
+     */
+    days?: number
+    /**
+     * 有效退款时间,申请退款需要在这个时间之前
+     */
+    hours?: number
+    /**
+     * 供应商退回规则
+     */
+    returnMoneyCodex?: string
+    [property: string]: any
+  }
 
 
 }
 }

+ 3 - 1
src/api/apiDefinitions.ts

@@ -130,5 +130,7 @@ export default {
   'djk.addWelfareOrder':['POST', '/smqjh-oms/api/v1/djkOrder/addWelfareOrder'],
   'djk.addWelfareOrder':['POST', '/smqjh-oms/api/v1/djkOrder/addWelfareOrder'],
   'djk.submitRefund': ['POST', '/smqjh-oms/api/v1/djkOrder/submitRefund'],
   'djk.submitRefund': ['POST', '/smqjh-oms/api/v1/djkOrder/submitRefund'],
 
 
-  'refueling.getPayCode':['POST','/smqjh-pms/api/v1/refueling/generateQrCode']
+  'refueling.getPayCode': ['POST', '/smqjh-pms/api/v1/refueling/generateQrCode'],
+
+  'attractions.findAppByPage':['GET','/smqjh-pms/app-api/v1/sceneryProduct/findAppByPage']
 };
 };

+ 22 - 0
src/api/globals.d.ts

@@ -1292,6 +1292,28 @@ declare global {
         config: Config
         config: Config
       ): Alova2Method<apiResData<string>, 'refueling.getPayCode', Config>;
       ): Alova2Method<apiResData<string>, 'refueling.getPayCode', Config>;
     }
     }
+    attractions: {
+      findAppByPage<
+        Config extends Alova2MethodConfig<apiResData<Api.DataAppProductDetailVo>> & {
+          data: {
+            /**
+            * 页码
+            */
+            pageNum?: number;
+            /**
+             * 每页记录数
+             */
+            pageSize?: number;
+            /**
+             * 产品名称(模糊查询)
+             */
+            productName?: string;
+          }
+        }
+      >(
+        config: Config
+      ): Alova2Method<apiResData<Api.DataAppProductDetailVo>, 'attractions.findAppByPage', Config>;
+    }
   }
   }
 }
 }
 var Apis: Apis;
 var Apis: Apis;

+ 2 - 2
src/config/index.ts

@@ -9,11 +9,11 @@ const mapEnvVersion = {
   // develop: 'http://192.168.0.19:8080', // 邓
   // develop: 'http://192.168.0.19:8080', // 邓
   // develop: 'http://192.168.0.217:8080', // 黄
   // develop: 'http://192.168.0.217:8080', // 黄
   // develop: 'http://192.168.0.11:8080', // 王
   // develop: 'http://192.168.0.11:8080', // 王
-  // develop: 'http://192.168.1.89:8080', // 田
+  develop: 'http://192.168.1.89:8080', // 田
   // develop: 'http://74949mkfh190.vicp.fun', // 付
   // develop: 'http://74949mkfh190.vicp.fun', // 付
   // develop: 'http://47.109.84.152:8081',
   // develop: 'http://47.109.84.152:8081',
   // develop: 'https://5ed0f7cc.r9.vip.cpolar.cn',
   // develop: 'https://5ed0f7cc.r9.vip.cpolar.cn',
-  develop: 'https://smqjh.api.zswlgz.com',
+  // develop: 'https://smqjh.api.zswlgz.com',
   /**
   /**
    * 体验版
    * 体验版
    */
    */

+ 8 - 0
src/pages.json

@@ -661,6 +661,14 @@
             "navigationStyle": "custom"
             "navigationStyle": "custom"
           }
           }
         },
         },
+        {
+          "path": "attractionsOrderDetail/attractionsOrderDetail",
+          "name": "attractions-order-detail",
+          "islogin": false,
+          "style": {
+            "navigationBarTitleText": "订单详情"
+          }
+        },
         {
         {
           "path": "attractionsOrderPay/attractionsOrderPay",
           "path": "attractionsOrderPay/attractionsOrderPay",
           "name": "attractions-order-pay",
           "name": "attractions-order-pay",

+ 245 - 0
src/subPack-attractions/attractionsOrderDetail/attractionsOrderDetail.vue

@@ -0,0 +1,245 @@
+<script setup lang="ts">
+import OrderDetailStatus from '../components/orderDetailStatus.vue'
+import { StaticUrl } from '@/config'
+import router from '@/router'
+
+definePage({
+  name: 'attractions-order-detail',
+  islogin: false,
+  style: {
+    navigationBarTitleText: '订单详情',
+  },
+})
+const orderPopup = ref(false)
+</script>
+
+<template>
+  <view class="order-detail-page">
+    <view class="px-24rpx">
+      <view class="h-20rpx" />
+      <view class="rounded-16rpx bg-#FFF p-24rpx">
+        <OrderDetailStatus :status="3" />
+        <view class="flex items-center justify-between gap-50rpx text-32rpx font-bold">
+          <view>日场门票+观光车+飞越黄果树观影票+吉祥物+冰箱贴 经典必打卡</view>
+          <view class="w-100rpx text-24rpx text-#9ED605">
+            详情
+          </view>
+        </view>
+        <view v-if="orderPopup" class="text-center">
+          <view class="mt-24rpx h-2rpx w-full bg-#F0F0F0" />
+          <view class="mt-24rpx flex items-center justify-center gap-10rpx">
+            <wd-icon name="check-circle-filled" size="20px" color="#52C41A" />
+            <text class="text-32rpx text-#52C41A font-bold">
+              已支付
+            </text>
+          </view>
+          <view class="flex items-center justify-center">
+            <QCode class="my-20rpx rounded-16rpx" text="1" :qwidth="80" qr-key="1" />
+          </view>
+          <view class="text-28rpx font-bold">
+            12115115144
+          </view>
+          <view class="mt-8rpx text-24rpx text-#AAAAAA">
+            (未核销)
+          </view>
+          <view class="mt-20rpx text-24rpx text-#AAAAAA">
+            您的二订单已付款,您可以查看或者预定更多产品
+          </view>
+          <view class="mt-24rpx flex items-center justify-center gap-10rpx">
+            <text class="text-28rpx">
+              查看订单列表
+            </text>
+            <wd-icon name="chevron-right" size="20px" />
+          </view>
+        </view>
+      </view>
+      <view class="mt-20rpx rounded-16rpx bg-#FFF p-24rpx">
+        <view class="mt-28rpx flex items-center justify-between">
+          <view class="text-28rpx text-#AAAAAA">
+            订单编号
+          </view>
+          <view class="text-28rpx font-bold">
+            1867402054587256856
+          </view>
+        </view>
+        <view class="mt-28rpx flex items-center justify-between">
+          <view class="text-28rpx text-#AAAAAA">
+            下单时间
+          </view>
+          <view class="text-28rpx font-bold">
+            2024-12-13 11:12:30
+          </view>
+        </view>
+        <view class="mt-28rpx flex items-center justify-between">
+          <view class="text-28rpx text-#AAAAAA">
+            游玩时间
+          </view>
+          <view class="text-28rpx font-bold">
+            2024-12-13 11:12:30 当天
+          </view>
+        </view>
+        <view class="mt-28rpx rounded-16rpx bg-#F1F1F1 p-24rpx text-28rpx text-#AAAAAA">
+          备注:速度发货速度
+        </view>
+      </view>
+      <view class="mt-20rpx rounded-16rpx bg-#FFF p-24rpx">
+        <view class="flex items-center justify-between">
+          <view class="text-bold text-28rpx">
+            订单总金额
+          </view>
+          <view class="text-bold text-32rpx text-#FF4A39">
+            <text class="text-24rpx">
+              ¥
+            </text>
+            290
+          </view>
+        </view>
+        <view class="mt-20rpx flex items-center justify-between text-24rpx">
+          <view>积分扣减</view>
+          <view class="text-#FF4A39">
+            ¥10
+          </view>
+        </view>
+        <view class="mt-20rpx flex items-center justify-between text-24rpx">
+          <view>微信支付</view>
+          <view class="text-#FF4A39">
+            ¥280
+          </view>
+        </view>
+      </view>
+      <view class="mt-20rpx rounded-16rpx bg-#FFF p-24rpx">
+        <view class="text-28rpx font-bold">
+          联系人资料
+        </view>
+        <view class="mt-24rpx flex items-center gap-92rpx">
+          <view class="text-24rpx">
+            联系人
+          </view>
+          <view class="text-bold text-24rpx">
+            张三
+          </view>
+        </view>
+        <view class="mt-24rpx h-2rpx w-full bg-#F0F0F0" />
+        <view class="mt-24rpx flex items-center gap-92rpx">
+          <view class="text-24rpx">
+            手机号码
+          </view>
+          <view class="text-bold text-24rpx">
+            13856491258
+          </view>
+        </view>
+      </view>
+      <view class="mt-20rpx rounded-16rpx bg-#FFF p-24rpx">
+        <view class="text-28rpx font-bold">
+          游客信息
+        </view>
+        <view class="mt-24rpx flex items-center gap-92rpx">
+          <view class="text-24rpx">
+            游客姓名
+          </view>
+          <view class="text-bold text-24rpx">
+            张三
+          </view>
+        </view>
+        <view class="mt-24rpx h-2rpx w-full bg-#F0F0F0" />
+        <view class="mt-24rpx flex items-center gap-92rpx">
+          <view class="text-24rpx">
+            证件类型
+          </view>
+          <view class="text-bold text-24rpx">
+            身份证
+          </view>
+        </view>
+        <view class="mt-24rpx h-2rpx w-full bg-#F0F0F0" />
+        <view class="mt-24rpx flex items-center gap-92rpx">
+          <view class="text-24rpx">
+            证件号码
+          </view>
+          <view class="text-bold text-24rpx">
+            510789456125964189
+          </view>
+        </view>
+      </view>
+    </view>
+    <view class="h-220rpx" />
+    <view
+      class="fixed bottom-0 left-0 z-100 box-border h-174rpx w-full flex items-center gap-28rpx border-t-[2rpx_solid_#EEEEEE] bg-#FFF px-24rpx"
+    >
+      <view class="flex items-center gap-40rpx">
+        <view @click="router.replace({ name: 'attractions-tabbar' })">
+          <image
+            :src="`${StaticUrl}/goods-home.png`"
+            class="h44rpx w44rpx"
+          />
+          <view class="text-20rpx">
+            首页
+          </view>
+        </view>
+        <view class="relative">
+          <image
+            :src="`${StaticUrl}/goods-kf.png`"
+            class="h44rpx w44rpx"
+          />
+          <Zcontact>
+            <view class="text-20rpx">
+              客服
+            </view>
+          </Zcontact>
+        </view>
+      </view>
+      <wd-button custom-class="w-546rpx" block size="large" @click="orderPopup = true">
+        退款申请
+      </wd-button>
+    </view>
+    <Zpopup v-model="orderPopup" :zindex="9999" bg="#fff">
+      <view>
+        <view class="mt-28rpx text-center text-32rpx font-bold">
+          退款申请
+        </view>
+        <view class="px-24rpx">
+          <view class="mt-30rpx flex items-center justify-between">
+            <view class="text-28rpx">
+              退款数量
+            </view>
+            <view class="flex items-center gap-24rpx">
+              <view
+                class="h-36rpx w-36rpx rounded-50% bg-#F0F0F0 text-center text-28rpx text-#AAAAAA font-600 line-height-[36rpx]"
+              >
+                -
+              </view>
+              <view class="text-24rpx font-400">
+                10
+              </view>
+              <view
+                class="h-36rpx w-36rpx rounded-50% bg-#E8FFA7 text-center text-28rpx text-#9ED605 font-600 line-height-[36rpx]"
+              >
+                +
+              </view>
+            </view>
+          </view>
+          <view class="mt-26rpx">
+            <view class="text-28rpx">
+              退款申请说明
+            </view>
+            <view class="mt-20rpx rounded-16rpx bg-#F1F1F1">
+              <textarea
+                class="h-120rpx w-full rounded-16rpx p-24rpx"
+                placeholder-style="color: #AAAAAA; font-size: 24rpx;"
+                placeholder="请仔细填写,提交后进入审核期,不可重复提交"
+              />
+            </view>
+          </view>
+        </view>
+        <view class="mt-26rpx h-2rpx w-full bg-#EEEEEE" />
+        <view class="flex items-center justify-center">
+          <wd-button custom-class="w-702rpx mt-10rpx" block size="large">
+            立即支付
+          </wd-button>
+        </view>
+      </view>
+    </Zpopup>
+  </view>
+</template>
+
+<style lang="scss" scoped>
+</style>

+ 37 - 0
src/subPack-attractions/attractionsOrderDetail/orderDetail-data.ts

@@ -0,0 +1,37 @@
+export const orderStatus = [
+  {
+    value: 0,
+    label: '待支付',
+    desc: '请在60分钟内完成支付,逾期订单自动取消',
+    icon: 'time-filled',
+    color: '#FFC130',
+  },
+  {
+    value: 1,
+    label: '已支付',
+    desc: '您的订单已付款,您可以查看或者预定更多产品',
+    icon: 'check-circle-filled',
+    color: '#52C41A',
+  },
+  {
+    value: 2,
+    label: '已完成',
+    desc: '您的订单已完成,您可以查看或者预定更多产品',
+    icon: 'check-circle-filled',
+    color: '#52C41A',
+  },
+  {
+    value: 3,
+    label: '已取消',
+    desc: '您的订单已取消,如需帮助请联系客服',
+    icon: 'close-circle-filled',
+    color: '#AAAAAA',
+  },
+  {
+    value: 4,
+    label: '已退款',
+    desc: '订单已退款,支持重订',
+    icon: 'check-circle-filled',
+    color: '#FF4A39',
+  },
+]

+ 1 - 1
src/subPack-attractions/attractionsOrderPay/attractionsOrderPay.vue

@@ -65,7 +65,7 @@ definePage({
       </view>
       </view>
     </view>
     </view>
     <view class="fixed bottom-0 h-174rpx w-full border-[1rpx_solid_#EEEEEE] bg-#FFF px-24rpx">
     <view class="fixed bottom-0 h-174rpx w-full border-[1rpx_solid_#EEEEEE] bg-#FFF px-24rpx">
-      <wd-button custom-class="w-702rpx mt-10rpx" block size="large" @click="router.push({ name: '' })">
+      <wd-button custom-class="w-702rpx mt-10rpx" block size="large" @click="router.push({ name: 'attractions-order-detail' })">
         立即支付
         立即支付
       </wd-button>
       </wd-button>
     </view>
     </view>

+ 82 - 28
src/subPack-attractions/commonTab/components/homeList.vue

@@ -2,11 +2,57 @@
 import router from '@/router'
 import router from '@/router'
 import { StaticUrl } from '@/config'
 import { StaticUrl } from '@/config'
 
 
+const globalToast = useGlobalToast()
 const { statusBarHeight, MenuButtonHeight, opcity } = storeToRefs(useSysStore())
 const { statusBarHeight, MenuButtonHeight, opcity } = storeToRefs(useSysStore())
-
+/**
+ * 获取景区列表
+ */
+const loading = ref(true)
+const productName = ref('')
+const { data: attractionsList, isLastPage, page, refresh, error, reload } = usePagination((pageNum, pageSize) =>
+  Apis.attractions.findAppByPage({ data: { pageNum, pageSize, productName: productName.value } }), {
+  data: (resp) => {
+    return resp.data?.list
+  },
+  initialData: [],
+  initialPage: 1,
+  initialPageSize: 10,
+  append: true,
+  immediate: true,
+}).onSuccess(() => {
+  loading.value = false
+})
+const state = computed(() => {
+  return error.value ? 'error' : !isLastPage.value ? 'loading' : 'finished'
+})
+onReachBottom(() => {
+  if (!isLastPage.value) {
+    page.value++
+  }
+})
 onMounted(() => {
 onMounted(() => {
   opcity.value = 0
   opcity.value = 0
 })
 })
+
+/**
+ * 搜索景区
+ */
+function handleSearch() {
+  if (productName.value === '') {
+    return globalToast.warning('搜索内容不能为空')
+  }
+  page.value = 1
+  refresh()
+}
+
+/**
+ * 清空搜索
+ */
+function handleClear() {
+  productName.value = ''
+  page.value = 1
+  refresh()
+}
 </script>
 </script>
 
 
 <template>
 <template>
@@ -28,14 +74,16 @@ onMounted(() => {
 
 
       <view class="absolute left-24rpx right-24rpx top-198rpx">
       <view class="absolute left-24rpx right-24rpx top-198rpx">
         <view class="h-60rpx w-full flex items-center justify-between rounded-40rpx bg-white pr-6rpx">
         <view class="h-60rpx w-full flex items-center justify-between rounded-40rpx bg-white pr-6rpx">
-          <view class="flex items-center pb-14rpx pl-24rpx pt-16rpx">
+          <view class="flex flex-1 items-center pb-14rpx pl-24rpx pt-16rpx">
             <wd-icon name="search" size="14" color="#ccc" />
             <wd-icon name="search" size="14" color="#ccc" />
-            <view class="ml-12rpx text-24rpx text-gray">
-              霸王茶姬
+            <input v-model="productName" type="text" placeholder="请输入景区名称" class="ml-12rpx h-30rpx w-full flex-1 text-24rpx outline-none" placeholder-style="color:#AAA" @confirm="handleSearch">
+            <view v-if="productName" class="w-80rpx flex items-center justify-center" @click="handleClear">
+              <wd-icon name="close" size="14" color="#ccc" class="mr-12rpx" />
             </view>
             </view>
           </view>
           </view>
           <view
           <view
             class="h-50rpx w-96rpx flex items-center justify-center rounded-26rpx bg-[var(--them-color)] text-24rpx text-white font-semibold"
             class="h-50rpx w-96rpx flex items-center justify-center rounded-26rpx bg-[var(--them-color)] text-24rpx text-white font-semibold"
+            @click="handleSearch"
           >
           >
             搜索
             搜索
           </view>
           </view>
@@ -45,33 +93,39 @@ onMounted(() => {
 
 
     <view class="relative px-24rpx">
     <view class="relative px-24rpx">
       <view>
       <view>
-        <view v-for="value in 12" :key="value" class="mb-20rpx flex items-center gap-24rpx rounded-16rpx bg-#FFF p-24rpx" @click="router.push({ name: 'attractions-detail' })">
-          <view class="h-160rpx w-160rpx rounded-16rpx">
-            icon
-          </view>
-          <view class="flex-1">
-            <view class="text-32rpx font-bold">
-              日场门票+观光车+飞越黄果树观影票+吉祥物+冰箱贴
-            </view>
-            <view class="mt-24rpx flex items-center justify-between">
-              <view>
-                <text class="text-26rpx text-#FF4D3A">
-                  ¥
-                </text>
-                <text class="text-36rpx text-#FF4D3A font-bold">
-                  290
-                </text>
-                <text class="text-24rpx text-#AAA">
-                  起
-                </text>
-              </view>
+        <scroll-view scroll-y type="custom">
+          <wd-skeleton theme="paragraph" animation="gradient" :loading="loading" :row-col="[{ height: '100px', width: '100%' }, { height: '100px', width: '100%' }, { height: '100px', width: '100%' }]">
+            <view v-for="item in attractionsList" :key="item.productNo" class="mb-20rpx flex items-center gap-24rpx rounded-16rpx bg-#FFF p-24rpx" @click="router.push({ name: 'attractions-detail' })">
               <image
               <image
-                class="h-48rpx w-116rpx"
-                :src="`${StaticUrl}/attractions-home-btn.png`"
+                class="h-160rpx w-160rpx rounded-16rpx"
+                :src="item.img"
               />
               />
+              <view class="flex-1">
+                <view class="text-32rpx font-bold">
+                  {{ item.productName }}
+                </view>
+                <view class="mt-24rpx flex items-center justify-between">
+                  <view>
+                    <text class="text-26rpx text-#FF4D3A">
+                      ¥
+                    </text>
+                    <text class="text-36rpx text-#FF4D3A font-bold">
+                      {{ item.salePrice }}
+                    </text>
+                    <text class="text-24rpx text-#AAA">
+                      起
+                    </text>
+                  </view>
+                  <image
+                    class="h-48rpx w-116rpx"
+                    :src="`${StaticUrl}/attractions-home-btn.png`"
+                  />
+                </view>
+              </view>
             </view>
             </view>
-          </view>
-        </view>
+          </wd-skeleton>
+        </scroll-view>
+        <wd-loadmore :state="state" :loading-props="{ color: '#9ED605', size: 20 }" @reload="reload" />
       </view>
       </view>
     </view>
     </view>
   </view>
   </view>

+ 34 - 0
src/subPack-attractions/components/orderDetailStatus.vue

@@ -0,0 +1,34 @@
+<script setup lang="ts">
+import { orderStatus } from '../attractionsOrderDetail/orderDetail-data'
+
+const props = defineProps<{
+  status: number
+}>()
+
+const currentStatus = computed(() => {
+  return orderStatus.find(item => item.value === props.status) || orderStatus[0]
+})
+</script>
+
+<template>
+  <view class="text-center">
+    <view class="flex items-center justify-center gap-10rpx">
+      <wd-icon :name="currentStatus.icon" size="20px" :color="currentStatus.color" />
+      <text class="text-32rpx font-bold" :style="{ color: currentStatus.color }">
+        {{ currentStatus.label }}
+      </text>
+    </view>
+    <view class="mt-20rpx text-24rpx text-#AAA">
+      {{ currentStatus.desc }}
+    </view>
+    <view class="mt-24rpx flex items-center justify-center gap-10rpx">
+      <text class="text-28rpx">
+        查看订单列表
+      </text>
+      <wd-icon name="chevron-right" size="16px" />
+    </view>
+    <view class="my-24rpx h-2rpx w-full bg-#F0F0F0" />
+  </view>
+</template>
+
+<style lang="scss" scoped></style>

+ 1 - 0
src/uni-pages.d.ts

@@ -64,6 +64,7 @@ interface NavigateToOptions {
        "/subPack-refueling/orderDetaile/index" |
        "/subPack-refueling/orderDetaile/index" |
        "/subPack-refueling/webView/index" |
        "/subPack-refueling/webView/index" |
        "/subPack-attractions/attractionsDetail/attractionsDetail" |
        "/subPack-attractions/attractionsDetail/attractionsDetail" |
+       "/subPack-attractions/attractionsOrderDetail/attractionsOrderDetail" |
        "/subPack-attractions/attractionsOrderPay/attractionsOrderPay" |
        "/subPack-attractions/attractionsOrderPay/attractionsOrderPay" |
        "/subPack-attractions/attractionsReservation/attractionsReservation" |
        "/subPack-attractions/attractionsReservation/attractionsReservation" |
        "/subPack-attractions/commonTab/index";
        "/subPack-attractions/commonTab/index";