Переглянути джерело

feat(api): 添加广告信息接口定义并修改商品类型

- 添加 xsbAdvertInfo 接口定义
- 将 channelProdPrice.id 从可选改为必选
- 添加 appAdvertInfo API 接口定义

feat(route): 重构地址管理页面路由配置

- 重命名地址页面路径从 address 到 selectAddress
- 添加地址列表页面配置
- 添加编辑地址页面配置
- 修复订单页面路由配置

feat(order): 重构订单页面UI和导航逻辑

- 重构星闪豹订单页面UI布局
- 添加订单状态筛选功能
- 移除自定义导航栏样式
- 添加新订单页面到smqjh子包

feat(address): 实现地址管理功能页面

- 创建地址列表页面组件
- 创建编辑地址页面组件
- 添加地址选择和编辑功能
- 集成地图位置选择功能

feat(tab): 集成广告轮播图功能

- 添加广告信息数据类型定义
- 实现广告轮播图组件集成
- 添加广告点击跳转功能
- 优化导航栏样式效果

fix(pages): 修复积分显示和订单跳转问题

- 修复积分显示为空时的默认值处理
- 修复订单页面tab跳转功能
- 修复地址页面路由跳转链接

chore(config): 更新开发环境配置

- 切换开发环境IP地址配置
zhangtao 5 днів тому
батько
коміт
9cc811d200

+ 33 - 1
src/api/api.type.d.ts

@@ -29,7 +29,7 @@ namespace Api {
      * 渠道对应商品售价
      */
     channelProdPrice?: number
-    id?: string
+    id: string
     /**
      * 商品主图
      */
@@ -170,5 +170,37 @@ namespace Api {
     pointsTotal?: number
     [property: string]: any
   }
+  interface xsbAdvertInfo {
+    /**
+     * 背景图
+     */
+    advertBack?: string
+    /**
+     * 广告图片
+     */
+    advertImg?: string
+    /**
+     * 广告名称
+     */
+    advertName?: string
+    /**
+     * 排序
+     */
+    advertSort?: number
+    /**
+     * 创建时间
+     */
+    createTime?: string
+    id?: number
+    /**
+     * 跳转路径
+     */
+    jumpUrl?: string
+    /**
+     * 状态 1正常 2删除
+     */
+    status?: number
+    [property: string]: any
+  }
 
 }

+ 1 - 0
src/api/apiDefinitions.ts

@@ -31,4 +31,5 @@ export default {
   'xsb.findUserPointsPage':['PUT', '/smqjh-system/app-api/v1/points/findUserPointsPage'],
   'xsb.findUserPoints':['GET', '/smqjh-system/app-api/v1/points/findUserPoints'],
   'xsb.getSearchProductList':['POST', '/smqjh-pms/app-api/v1/spu/getSearchProductList'],
+  'xsb.appAdvertInfo':['GET', '/smqjh-system/app-api/v1/appAdvertInfo'],
 };

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

@@ -191,6 +191,12 @@ declare global {
       >(
         config: Config
       ): Alova2Method<listData<Api.xsbCategoryProductList>, 'xsb.getSearchProductList', Config>;
+      appAdvertInfo<
+        Config extends Alova2MethodConfig<Api.xsbAdvertInfo[]> & {
+        }
+      >(
+        config: Config
+      ): Alova2Method<Api.xsbAdvertInfo[], 'xsb.appAdvertInfo', Config>;
     }
 
   }

+ 2 - 2
src/config/index.ts

@@ -11,8 +11,8 @@ const mapEnvVersion = {
   /**
    * 开发版
    */
-  // develop: 'http://192.168.1.166:8080', // 张
-  develop: 'http://192.168.1.101:8080',
+  develop: 'http://192.168.1.166:8080', // 张
+  // develop: 'http://192.168.1.101:8080',
   // develop: 'http://192.168.0.157:8080',
   /**
    * 体验版

+ 33 - 7
src/pages.json

@@ -127,9 +127,7 @@
           "name": "xsb-order",
           "islogin": true,
           "style": {
-            "navigationStyle": "custom",
-            "navigationBarTitleText": "星闪豹订单列表",
-            "disableScroll": true
+            "navigationBarTitleText": "订单列表"
           }
         },
         {
@@ -147,12 +145,12 @@
       "root": "subPack-common",
       "pages": [
         {
-          "path": "address/index",
+          "path": "addressList/index",
           "type": "page",
-          "name": "common-selectAddress",
-          "islogin": false,
+          "name": "common-addressList",
+          "islogin": true,
           "style": {
-            "navigationBarTitleText": "选择收获地址"
+            "navigationBarTitleText": "收获地址"
           }
         },
         {
@@ -182,6 +180,16 @@
             "navigationBarTitleText": "售后列表"
           }
         },
+        {
+          "path": "editAddress/index",
+          "type": "page",
+          "name": "common-editAddress",
+          "islogin": true,
+          "style": {
+            "navigationBarTitleText": "编辑新增收获地址",
+            "navigationStyle": "custom"
+          }
+        },
         {
           "path": "integral/index",
           "type": "page",
@@ -232,6 +240,15 @@
             "disableScroll": true
           }
         },
+        {
+          "path": "selectAddress/index",
+          "type": "page",
+          "name": "common-selectAddress",
+          "islogin": false,
+          "style": {
+            "navigationBarTitleText": "选择收获地址"
+          }
+        },
         {
           "path": "user-center/index",
           "type": "page",
@@ -257,6 +274,15 @@
             "backgroundColor": "#F4FFD1",
             "backgroundColorTop": "#F4FFD1"
           }
+        },
+        {
+          "path": "order/index",
+          "type": "page",
+          "name": "smqjh-order",
+          "islogin": true,
+          "style": {
+            "navigationBarTitleText": "订单列表"
+          }
         }
       ]
     }

+ 5 - 5
src/pages/my/index.vue

@@ -13,9 +13,9 @@ definePage({
 })
 
 const tabList = ref([
-  { title: '待支付', icon: `${StaticUrl}/1.png` },
-  { title: '待收货', icon: `${StaticUrl}/2.png` },
-  { title: '已完成', icon: `${StaticUrl}/6.png` },
+  { title: '待支付', icon: `${StaticUrl}/1.png`, name: 'smqjh-order' },
+  { title: '待收货', icon: `${StaticUrl}/2.png`, name: 'smqjh-order' },
+  { title: '已完成', icon: `${StaticUrl}/6.png`, name: 'smqjh-order' },
   { title: '退款售后', icon: `${StaticUrl}/3.png`, name: 'common-afterSalesList' },
 ])
 </script>
@@ -53,7 +53,7 @@ const tabList = ref([
           </view>
         </template>
         <view class="grid grid-cols-4 gap-4">
-          <view v-for="item in tabList" :key="item.title" class="flex flex-col items-center justify-center">
+          <view v-for="item in tabList" :key="item.title" class="flex flex-col items-center justify-center" @click="router.push({ name: item.name })">
             <image :src="item.icon" class="h56rpx w56rpx" />
             <view class="mt20rpx text-24rpx">
               {{ item.title }}
@@ -66,7 +66,7 @@ const tabList = ref([
     <view class="item-cell mt20rpx">
       <wd-card custom-class="card">
         <wd-cell-group custom-class="cell-group">
-          <wd-cell title="收货地址" custom-title-class="cell-title" clickable is-link @click="router.push({ name: 'common-address' })">
+          <wd-cell title="收货地址" custom-title-class="cell-title" clickable is-link @click="router.push({ name: 'common-addressList' })">
             <template #icon>
               <image :src="`${StaticUrl}/4.png`" class="h50rpx w50rpx" />
             </template>

+ 50 - 0
src/subPack-common/addressList/index.vue

@@ -0,0 +1,50 @@
+<script setup lang="ts">
+import { StaticUrl } from '@/config'
+import router from '@/router'
+
+definePage({
+  name: 'common-addressList',
+  islogin: true,
+  style: {
+    navigationBarTitleText: '收获地址',
+  },
+})
+</script>
+
+<template>
+  <view class="page">
+    <view class="px24rpx py20rpx">
+      <view v-for="item in 10" :key="item" class="mb20rpx rounded-16rpx bg-white p24rpx">
+        <view class="flex items-center justify-between">
+          <view class="text-28rpx font-semibold">
+            杨锦新 18594565489
+          </view>
+          <image
+            :src="`${StaticUrl}/edit-address.png`"
+            class="h40rpx w40rpx"
+            @click="router.push({ name: 'common-editAddress', params: { type: '2' } })"
+          />
+        </view>
+        <view class="mt24rpx text-24rpx text-#AAAAAA">
+          贵阳省贵阳市观山湖区富力中心A座
+        </view>
+        <view class="my24rpx h2rpx w-full bg-#F0F0F0" />
+        <wd-checkbox v-model="value">
+          设为默认地址
+        </wd-checkbox>
+      </view>
+      <view class="ios h120rpx" />
+    </view>
+    <view class="ios fixed bottom-0 left-0 box-border w-full rounded-t-32rpx bg-white px24rpx">
+      <view class="w-full py20rpx">
+        <wd-button size="large" block @click="router.push({ name: 'common-editAddress', params: { type: '1' } })">
+          新增收货地址
+        </wd-button>
+      </view>
+    </view>
+  </view>
+</template>
+
+<style scoped>
+
+</style>

+ 97 - 0
src/subPack-common/editAddress/index.vue

@@ -0,0 +1,97 @@
+<script setup lang="ts">
+import router from '@/router'
+
+definePage({
+  name: 'common-editAddress',
+  islogin: true,
+  style: {
+    navigationBarTitleText: '编辑新增收获地址',
+    navigationStyle: 'custom',
+  },
+})
+
+const route = useRoute()
+const title = computed(() => {
+  if (route.query?.type === '1')
+    return '新增收获地址'
+  return '编辑收获地址'
+})
+
+const modelForm = ref({
+  name: '',
+
+})
+function handleSelectAddress() {
+  uni.chooseLocation({
+    success: (res) => {
+      console.log(res, '收获地址')
+    },
+    fail: (e) => {
+      console.log('获取地址失败', e)
+    },
+  })
+}
+</script>
+
+<template>
+  <view>
+    <wd-navbar
+      :title="title" :bordered="false" :z-index="99"
+
+      safe-area-inset-top left-arrow placeholder fixed @click-left="router.back()"
+    />
+    <view class="px24rpx py20rpx">
+      <view class="rounded-16rpx bg-white p24rpx">
+        <view class="flex items-center">
+          <view class="mr40rpx w112rpx flex-shrink-0 text-28rpx">
+            收货人
+          </view>
+          <view class="flex-1">
+            <wd-input v-model="modelForm.name" no-border placeholder="姓名" />
+          </view>
+        </view>
+        <view class="mt28rpx flex items-center">
+          <view class="mr40rpx w112rpx flex-shrink-0 text-28rpx">
+            手机号码
+          </view>
+          <view class="flex-1">
+            <wd-input v-model="modelForm.name" no-border placeholder="11位手机号码" />
+          </view>
+        </view>
+        <view class="mt28rpx flex items-center">
+          <view class="mr40rpx w112rpx flex-shrink-0 text-28rpx">
+            所在地区
+          </view>
+          <view class="flex flex-1 items-center justify-between" @click="handleSelectAddress">
+            <view class="text-28rpx text-[var(--them-color)]">
+              点击选择地址
+            </view>
+            <wd-icon name="arrow-right" size="22px" color="#aaa" />
+          </view>
+        </view>
+        <view class="mt28rpx flex items-center">
+          <view class="mr40rpx w112rpx flex-shrink-0 text-28rpx">
+            详细地址
+          </view>
+          <view class="flex-1">
+            <wd-input v-model="modelForm.name" no-border placeholder="如楼号/单元号/门牌号" />
+          </view>
+        </view>
+      </view>
+      <view class="mt84rpx px100rpx">
+        <wd-button type="primary" block size="large">
+          保存收货地址
+        </wd-button>
+        <view v-if="title == '编辑收获地址'" class="mt24rpx">
+          <wd-button plain block size="large">
+            删除收获地址
+          </wd-button>
+        </view>
+      </view>
+    </view>
+  </view>
+</template>
+
+<style scoped>
+
+</style>

+ 6 - 6
src/subPack-common/integral/index.vue

@@ -28,7 +28,7 @@ function handleScrollBottom() {
           总充值积分
         </view>
         <view class="text-36rpx text-#222 font-semibold">
-          {{ info?.pointsTotal }}
+          {{ info?.pointsTotal || 0 }}
         </view>
       </view>
       <view class="flex flex-col items-center justify-center">
@@ -36,7 +36,7 @@ function handleScrollBottom() {
           当前可用积分
         </view>
         <view class="text-36rpx text-#222 font-semibold">
-          {{ info?.availablePointsTotal }}
+          {{ info?.availablePointsTotal || 0 }}
         </view>
       </view>
       <view class="flex flex-col items-center justify-center">
@@ -44,7 +44,7 @@ function handleScrollBottom() {
           已过期积分
         </view>
         <view class="text-36rpx text-#222 font-semibold">
-          {{ info?.expiryPointsTotal }}
+          {{ info?.expiryPointsTotal || 0 }}
         </view>
       </view>
       <view class="flex flex-col items-center justify-center">
@@ -52,7 +52,7 @@ function handleScrollBottom() {
           已消耗积分
         </view>
         <view class="text-36rpx text-#222 font-semibold">
-          {{ info?.consumePointsTotal }}
+          {{ info?.consumePointsTotal || 0 }}
         </view>
       </view>
     </view>
@@ -63,10 +63,10 @@ function handleScrollBottom() {
       <view v-for="item, index in pointList" :key="item.pointsId" class="bg-white p24rpx">
         <view class="flex items-center justify-between text-32rpx font-semibold">
           <view class="text-#222">
-            {{ type[Number(item.pointsType)] }}
+            {{ type[Number(item.pointsType)] || '未知状态' }}
           </view>
           <view class="text-#FF4A39">
-            {{ item?.variablePoints }}
+            {{ item?.variablePoints || 0 }}
           </view>
         </view>
         <view class="mt20rpx flex items-center justify-between text-28rpx text-#AAAAAA">

+ 0 - 0
src/subPack-common/address/index.vue → src/subPack-common/selectAddress/index.vue


+ 2 - 1
src/subPack-smqjh/components/selectAddress/index.vue

@@ -1,5 +1,6 @@
 <script setup lang="ts">
 import { StaticUrl } from '@/config'
+import router from '@/router'
 
 const selectAddress = defineModel({ default: false })
 </script>
@@ -37,7 +38,7 @@ const selectAddress = defineModel({ default: false })
       </scroll-view>
       <view class="ios fixed bottom-0 left-0 box-border w-full px24rpx">
         <view class="pb20rpx">
-          <wd-button block size="large">
+          <wd-button block size="large" @click="router.push({ name: 'common-addressList' })">
             新增收货地址
           </wd-button>
         </view>

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

@@ -0,0 +1,144 @@
+<script setup lang="ts">
+import { handleCommonOrderStatusText, navTabTypeList, orderStatusList } from './order-data'
+import { StaticUrl } from '@/config'
+import router from '@/router'
+
+definePage({
+  name: 'smqjh-order',
+  islogin: true,
+  style: {
+    navigationBarTitleText: '订单列表',
+  },
+})
+const navActiveTab = ref(0)
+const orderStatusActive = ref(0)
+const scrollViewId = ref()
+function handleChangeTypeNav(value: number) {
+  navActiveTab.value = value
+  scrollViewId.value = null
+  nextTick(() => scrollViewId.value = value)
+}
+function handleChangeStatus(value: number) {
+  orderStatusActive.value = value
+}
+function handleClick() {
+  console.log(12)
+  router.push({ name: 'common-orderDetaile' })
+}
+</script>
+
+<template>
+  <view class="page-smqjh">
+    <view class="nav sticky top-0 z-10 bg-white px24rpx py18rpx">
+      <scroll-view scroll-x class="whitespace-nowrap" :scroll-into-view="`id-${scrollViewId}`" :scroll-into-view-offset="-150" scroll-with-animation enable-passive>
+        <view class="flex items-center">
+          <view
+            v-for="item in navTabTypeList"
+            :id="`id-${item.value}`" :key="item.value" class="mr64rpx flex flex-col items-center whitespace-nowrap text-32rpx"
+            :class="[navActiveTab == item.value ? 'font-semibold ' : 'text-#AAAAAA']"
+            @click="handleChangeTypeNav(item.value)"
+          >
+            {{ item.name }}
+            <view
+              class="mt10rpx bg-[var(--them-color)] transition-all transition-duration-400 ease-in"
+              :class="[navActiveTab == item.value ? 'w40rpx h8rpx rounded-4rpx' : '']"
+            />
+          </view>
+        </view>
+      </scroll-view>
+      <view class="mt20rpx flex items-center">
+        <view
+          v-for="item in orderStatusList" :key="item.value"
+          class="mr16rpx rounded-24rpx bg-#F6F6F6 px16rpx py6rpx text-24rpx"
+          :class="[orderStatusActive == item.value ? 'bg-[var(--them-color)] text-white' : '']"
+          @click="handleChangeStatus(item.value)"
+        >
+          {{ item.name }}
+        </view>
+      </view>
+    </view>
+    <view v-for="item in 20" :key="item" class="mt20rpx" @click="handleClick">
+      <wd-card>
+        <template #title>
+          <view class="flex items-center justify-between">
+            <view class="flex items-center">
+              <image :src="`${StaticUrl}/order-icon.png`" class="h36rpx w36rpx" />
+              <view class="ml20rpx text-32rpx font-semibold">
+                海马购官方旗舰店
+              </view>
+            </view>
+            <view class="text-24rpx text-#FF4D3A">
+              {{ handleCommonOrderStatusText(item) }}
+            </view>
+          </view>
+          <view class="mt24rpx h2rpx w-full bg-#F0F0F0" />
+        </template>
+
+        <view>
+          <view class="mb20rpx box-border rounded-16rpx bg-#F9F9F9 p24rpx">
+            <view class="flex items-center">
+              <image :src="`${StaticUrl}/order-car.png`" class="h36rpx w36rpx" />
+              <view class="ml20rpx text-28rpx text-#222 font-semibold">
+                预计10:40前可送达
+              </view>
+            </view>
+            <view class="mt18rpx">
+              您的订单预计3月7日 10:40前送达
+            </view>
+            <view class="mt20rpx">
+              2025-03-26 11:56:07
+            </view>
+          </view>
+          <view class="box-border h176rpx w-full flex items-center justify-between rounded-16rpx bg-#F9F9F9">
+            <view class="box-border h-full w480rpx py28rpx pl20rpx">
+              <scroll-view scroll-x class="h-full w-full whitespace-nowrap">
+                <view class="flex items-center">
+                  <view v-for="item in 20" :key="item" class="mr50rpx">
+                    <image :src="`${StaticUrl}/shu.png`" class="h120rpx w120rpx" />
+                  </view>
+                </view>
+              </scroll-view>
+            </view>
+            <view class="box-shadow box-border h-full flex-1 flex-shrink-0 px14rpx py40rpx">
+              <view class="text-32rpx text-#FF4D3A font-semibold">
+                ¥13.95
+              </view>
+              <view class="text-center text-28rpx text-#AAAAAA">
+                共5件
+              </view>
+            </view>
+          </view>
+        </view>
+        <template #footer>
+          <view class="flex items-center justify-end">
+            <wd-button size="small" plain type="info">
+              取消订单
+            </wd-button>
+            <view class="ml20rpx">
+              <wd-button size="small" plain type="error">
+                付款
+              </wd-button>
+            </view>
+          </view>
+        </template>
+      </wd-card>
+    </view>
+  </view>
+</template>
+
+<style scoped lang="scss">
+.page-smqjh {
+  :deep() {
+    .wd-button.is-plain.is-error {
+      color: #FF4D3A !important;
+    }
+    .wd-tabs__nav-item-text{
+      font-size: 28rpx !important;
+    }
+  }
+
+  .box-shadow {
+    box-shadow: -6rpx 0rpx 6rpx 2rpx rgba(0, 0, 0, 0.04);
+  }
+}
+</style>

+ 41 - 0
src/subPack-smqjh/order/order-data.ts

@@ -0,0 +1,41 @@
+export const navTabTypeList = [
+  { name: '全部', value: 0 },
+  { name: '星闪豹', value: 1 },
+  { name: '电影演出', value: 2 },
+  { name: '视频权益', value: 3 },
+  { name: '大盘点餐', value: 4 },
+]
+
+export const orderStatusList = [
+  { name: '全部', value: 0 },
+  { name: '待支付', value: 1 },
+  { name: '进行中', value: 2 },
+  { name: '已完成', value: 3 },
+]
+
+/**
+ * 订单状态文字统一处理
+ * @param order
+ *
+ */
+export function handleCommonOrderStatusText(order: any) {
+  return order
+}
+
+/**
+ * 统一待支付状态支付按钮逻辑处理
+ * @param order
+ */
+
+export function handleCommonOrderPay(order: any) {
+  return order
+}
+
+/**
+ *  统一取消订单逻辑处理
+ * @param order
+ */
+
+export function handleCommonCancelOrder(order: any) {
+  return order
+}

+ 35 - 27
src/subPack-xsb/commonTab/components/index.vue

@@ -2,7 +2,7 @@
 import { StaticUrl, VITE_OSS_BASE_URL } from '@/config'
 import router from '@/router'
 
-const props = defineProps<{ categoryList: Api.xsbCategories[] }>()
+const props = defineProps<{ categoryList: Api.xsbCategories[], swiper: Api.xsbAdvertInfo[] }>()
 
 const emit = defineEmits(['changeNav'])
 
@@ -11,17 +11,11 @@ const { ScrollDown } = storeToRefs(useSysXsbStore())
 const { statusBarHeight, MenuButtonHeight } = storeToRefs(useSysStore())
 const { name } = storeToRefs(useAddressStore())
 const { topNavActive, leftActive } = storeToRefs(useSysXsbStore())
-const current = ref(0)
-const swiperList = ref([
-  'https://wot-ui.cn/assets/redpanda.jpg',
-  'https://wot-ui.cn/assets/capybara.jpg',
-  'https://wot-ui.cn/assets/panda.jpg',
-  'https://wot-ui.cn/assets/moon.jpg',
-  'https://wot-ui.cn/assets/meng.jpg',
-])
+const swiperList = computed(() => props.swiper)
 const navActive = ref(0)
 const classfiylist = computed(() => props.categoryList.slice(0, 10))
 const swiperClassList = computed(() => props.categoryList.slice(10, props.categoryList.length))
+
 const navList = ref([
   { title: '为你推荐' },
   { title: '疯狂折扣' },
@@ -57,6 +51,9 @@ function handleCommonClass(item: Api.xsbCategories) {
 function handleSwiperClick(e: { index: number, item: Api.xsbCategories }) {
   handleCommonClass(e.item)
 }
+function handleGo(e: { index: number, item: Api.xsbAdvertInfo }) {
+  console.log(e, '跳转消息')
+}
 </script>
 
 <template>
@@ -111,7 +108,9 @@ function handleSwiperClick(e: { index: number, item: Api.xsbCategories }) {
         </scroll-view>
       </view>
       <view class="px24rpx -mt180rpx">
-        <wd-swiper v-model:current="current" :autoplay="false" :list="swiperList" :height="138" :indicator="false" />
+        <wd-swiper
+          :autoplay="false" :list="swiperList" :height="138" :indicator="false" value-key="advertImg" @click="handleGo"
+        />
         <view class="mt20rpx">
           <wd-card title="" custom-class="card-zt">
             <view class="px24rpx pt24rpx">
@@ -147,28 +146,34 @@ function handleSwiperClick(e: { index: number, item: Api.xsbCategories }) {
         <view class="mt20rpx">
           <image :src="`${VITE_OSS_BASE_URL}2025/12/6671332ceef64985858aa8b548027bd3.png`" class="h236rpx w-full" />
         </view>
-        <scroll-view scroll-x class="mb20rpx mt20rpx whitespace-nowrap">
-          <view class="flex items-center">
-            <view v-for="item, idx in navList" :key="idx" class="relative mr44rpx" @click="handleChangeNav(idx)">
-              <image v-show="idx == 2" :src="`${StaticUrl}/chaozhi.png`" class="relative z-2 h-29.06rpx w-105.34rpx" />
-              <text
-                v-show="idx != 2" class="relative z-2 text-32rpx"
-                :class="[navActive == idx ? 'text-36rpx font-semibold' : '']"
-              >
-                {{ item.title }}
-              </text>
-              <view
-                v-show="navActive == idx"
-                class="nav-line absolute bottom-0rpx left-50% z-1 h18rpx w80rpx rounded-10rpx -translate-x-50%"
-              />
+        <view class="my20rpx">
+          <scroll-view scroll-x class="whitespace-nowrap">
+            <view class="h40rpx flex items-center">
+              <view v-for="item, idx in navList" :key="idx" class="relative mr44rpx" @click="handleChangeNav(idx)">
+                <image v-if="idx == 2" :src="`${StaticUrl}/chaozhi.png`" class="relative z-2 h-29.06rpx w-105.34rpx" />
+                <text
+                  v-show="idx != 2" class="relative z-2 text-32rpx"
+                  :class="[navActive == idx ? 'text-36rpx font-semibold' : '']"
+                >
+                  {{ item.title }}
+                </text>
+                <view
+                  v-show="navActive == idx"
+                  class="nav-line absolute bottom-0rpx left-50% z-1 h18rpx w80rpx rounded-10rpx -translate-x-50%"
+                />
+              </view>
             </view>
-          </view>
-        </scroll-view>
+          </scroll-view>
+        </view>
         <view class="mt20rpx">
           <view class="flex items-center">
             <scroll-view scroll-y type="custom">
               <grid-view type="masonry" cross-axis-count="2" main-axis-gap="10" cross-axis-gap="10">
-                <wd-swiper v-model:current="current" :autoplay="false" :list="swiperList" :height="231" />
+                <wd-swiper
+                  :autoplay="false" :list="[
+                    `${StaticUrl}/xsb-swiper1.png`,
+                  ]" :height="231"
+                />
                 <view
                   v-for="it in 20" :key="it" class="overflow-hidden rounded-16rpx bg-white pb16rpx"
                   @click="handleCommonName('xsb-goods')"
@@ -221,4 +226,7 @@ function handleSwiperClick(e: { index: number, item: Api.xsbCategories }) {
 .content {
   height: calc(100vh - var(--window-top) - 80rpx);
 }
+.nav-line{
+  background: linear-gradient( 90deg, #9ED605 0%, rgba(158,214,5,0.7) 43%, rgba(158,214,5,0.2) 79%, rgba(158,214,5,0) 100%);
+}
 </style>

+ 1 - 1
src/subPack-xsb/commonTab/components/my.vue

@@ -65,7 +65,7 @@ const tabList = ref([
     <view class="item-cell mt20rpx">
       <wd-card custom-class="card">
         <wd-cell-group custom-class="cell-group">
-          <wd-cell title="收货地址" custom-title-class="cell-title" clickable is-link @click="router.push({ name: 'common-address' })">
+          <wd-cell title="收货地址" custom-title-class="cell-title" clickable is-link @click="router.push({ name: 'common-addressList' })">
             <template #icon>
               <image :src="`${StaticUrl}/4.png`" class="h50rpx w50rpx" />
             </template>

+ 10 - 1
src/subPack-xsb/commonTab/index.vue

@@ -31,6 +31,7 @@ const tabbarItems = ref([
   { name: 'xsb-my', value: null, active: false, title: '我的', icon1: icon5, icon2: icon6 },
 ])
 const tabbarName = ref('xsb-home')
+const swiperList = ref<Api.xsbAdvertInfo[]>([])
 function handleTabbarChange({ value }: { value: string }) {
   setTabbarItemActive(value)
   tabbarName.value = value
@@ -60,7 +61,14 @@ async function getCategories() {
   topNavActive.value = res[0].code
   leftActive.value = res[0].children[0].code
 }
+async function getCurrentImg() {
+  const res = await Apis.xsb.appAdvertInfo({})
+  console.log(res, '但是')
+  swiperList.value = res
+}
+
 onMounted(() => {
+  getCurrentImg()
   getCategories()
 })
 </script>
@@ -69,13 +77,14 @@ onMounted(() => {
   <view class="page-xsb">
     <indexHome
       v-if="tabbarName == 'xsb-home'" :category-list="commonCategoryData"
+      :swiper="swiperList"
       @change-nav="tabbarName = 'xsb-classfiy'"
     />
     <cart v-if="tabbarName == 'xsb-cart'" />
     <classfiy v-if="tabbarName == 'xsb-classfiy'" :category-list="commonCategoryData" />
     <my v-if="tabbarName == 'xsb-my'" />
     <wd-tabbar
-      :model-value="tabbarName" safe-area-inset-bottom placeholder fixed :bordered="false"
+      :model-value="tabbarName" placeholder safe-area-inset-bottom fixed :bordered="false"
       custom-class="custom-tab"
       :custom-style="`box-shadow:${tabbarName == 'xsb-cart' || tabbarName == 'xsb-classfiy' ? '' : ' 0rpx -6rpx 12rpx 2rpx rgba(0, 0, 0, 0.09)'}`"
       @change="handleTabbarChange"

+ 59 - 79
src/subPack-xsb/order/index.vue

@@ -1,5 +1,4 @@
 <script setup lang="ts">
-import { getRect } from 'wot-design-uni/components/common/util'
 import { handleCommonOrderStatusText, navTabTypeList, orderStatusList } from './order-data'
 import { StaticUrl } from '@/config'
 import router from '@/router'
@@ -8,22 +7,11 @@ definePage({
   name: 'xsb-order',
   islogin: true,
   style: {
-    navigationStyle: 'custom',
-    navigationBarTitleText: '星闪豹订单列表',
-    disableScroll: true,
+    navigationBarTitleText: '订单列表',
   },
 })
 const navActiveTab = ref(0)
 const orderStatusActive = ref(0)
-const { statusBarHeight, MenuButtonHeight } = useSysStore()
-const navHeight = ref(87)
-onMounted(() => {
-  getRect('.nav', false).then((rect) => {
-    if (rect.height) {
-      navHeight.value = rect.height
-    }
-  })
-})
 function handleChangeTypeNav(value: number) {
   navActiveTab.value = value
 }
@@ -38,11 +26,7 @@ function handleClick() {
 
 <template>
   <view class="page-xsb">
-    <wd-navbar
-      title="订单列表" :bordered="false" :z-index="99" safe-area-inset-top left-arrow placeholder fixed
-      @click-left="router.back()"
-    />
-    <view class="nav bg-white px24rpx py18rpx">
+    <view class="nav sticky top-0 z10 bg-white px24rpx py18rpx">
       <view class="flex items-center">
         <view
           v-for="item in navTabTypeList" :key="item.value" class="mr64rpx flex flex-col items-center text-32rpx"
@@ -67,77 +51,73 @@ function handleClick() {
         </view>
       </view>
     </view>
-    <view :style="{ height: `calc(100vh - ${(statusBarHeight + MenuButtonHeight) * 2}rpx - ${navHeight * 2}rpx)` }">
-      <scroll-view scroll-y class="h-full pt24rpx">
-        <view v-for="item in 20" :key="item" @click="handleClick">
-          <wd-card>
-            <template #title>
-              <view class="flex items-center justify-between">
-                <view class="flex items-center">
-                  <image :src="`${StaticUrl}/order-icon.png`" class="h36rpx w36rpx" />
-                  <view class="ml20rpx text-32rpx font-semibold">
-                    海马购官方旗舰店
-                  </view>
-                </view>
-                <view class="text-24rpx text-#FF4D3A">
-                  {{ handleCommonOrderStatusText(item) }}
-                </view>
+    <view v-for="item in 20" :key="item" class="mt20rpx" @click="handleClick">
+      <wd-card>
+        <template #title>
+          <view class="flex items-center justify-between">
+            <view class="flex items-center">
+              <image :src="`${StaticUrl}/order-icon.png`" class="h36rpx w36rpx" />
+              <view class="ml20rpx text-32rpx font-semibold">
+                海马购官方旗舰店
               </view>
-              <view class="mt24rpx h2rpx w-full bg-#F0F0F0" />
-            </template>
+            </view>
+            <view class="text-24rpx text-#FF4D3A">
+              {{ handleCommonOrderStatusText(item) }}
+            </view>
+          </view>
+          <view class="mt24rpx h2rpx w-full bg-#F0F0F0" />
+        </template>
 
-            <view>
-              <view class="mb20rpx box-border rounded-16rpx bg-#F9F9F9 p24rpx">
+        <view>
+          <view class="mb20rpx box-border rounded-16rpx bg-#F9F9F9 p24rpx">
+            <view class="flex items-center">
+              <image :src="`${StaticUrl}/order-car.png`" class="h36rpx w36rpx" />
+              <view class="ml20rpx text-28rpx text-#222 font-semibold">
+                预计10:40前可送达
+              </view>
+            </view>
+            <view class="mt18rpx">
+              您的订单预计3月7日 10:40前送达
+            </view>
+            <view class="mt20rpx">
+              2025-03-26 11:56:07
+            </view>
+          </view>
+          <view class="box-border h176rpx w-full flex items-center justify-between rounded-16rpx bg-#F9F9F9">
+            <view class="box-border h-full w480rpx py28rpx pl20rpx">
+              <scroll-view scroll-x class="h-full w-full whitespace-nowrap">
                 <view class="flex items-center">
-                  <image :src="`${StaticUrl}/order-car.png`" class="h36rpx w36rpx" />
-                  <view class="ml20rpx text-28rpx text-#222 font-semibold">
-                    预计10:40前可送达
+                  <view v-for="item in 20" :key="item" class="mr50rpx">
+                    <image :src="`${StaticUrl}/shu.png`" class="h120rpx w120rpx" />
                   </view>
                 </view>
-                <view class="mt18rpx">
-                  您的订单预计3月7日 10:40前送达
-                </view>
-                <view class="mt20rpx">
-                  2025-03-26 11:56:07
-                </view>
+              </scroll-view>
+            </view>
+            <view class="box-shadow box-border h-full flex-1 flex-shrink-0 px14rpx py40rpx">
+              <view class="text-32rpx text-#FF4D3A font-semibold">
+                ¥13.95
               </view>
-              <view class="box-border h176rpx w-full flex items-center justify-between rounded-16rpx bg-#F9F9F9">
-                <view class="box-border h-full w480rpx py28rpx pl20rpx">
-                  <scroll-view scroll-x class="h-full w-full whitespace-nowrap">
-                    <view class="flex items-center">
-                      <view v-for="item in 20" :key="item" class="mr50rpx">
-                        <image :src="`${StaticUrl}/shu.png`" class="h120rpx w120rpx" />
-                      </view>
-                    </view>
-                  </scroll-view>
-                </view>
-                <view class="box-shadow box-border h-full flex-1 flex-shrink-0 px14rpx py40rpx">
-                  <view class="text-32rpx text-#FF4D3A font-semibold">
-                    ¥13.95
-                  </view>
-                  <view class="text-center text-28rpx text-#AAAAAA">
-                    共5件
-                  </view>
-                </view>
+              <view class="text-center text-28rpx text-#AAAAAA">
+                共5件
               </view>
             </view>
-            <template #footer>
-              <view class="flex items-center justify-end">
-                <wd-button size="small" plain type="info">
-                  取消订单
-                </wd-button>
-                <view class="ml20rpx">
-                  <wd-button size="small" plain type="error">
-                    付款
-                  </wd-button>
-                </view>
-              </view>
-            </template>
-          </wd-card>
+          </view>
         </view>
-        <view class="ios h30rpx" />
-      </scroll-view>
+        <template #footer>
+          <view class="flex items-center justify-end">
+            <wd-button size="small" plain type="info">
+              取消订单
+            </wd-button>
+            <view class="ml20rpx">
+              <wd-button size="small" plain type="error">
+                付款
+              </wd-button>
+            </view>
+          </view>
+        </template>
+      </wd-card>
     </view>
+    <view class="h-20rpx" />
   </view>
 </template>
 

+ 1 - 0
src/subPack-xsb/search/index.vue

@@ -52,6 +52,7 @@ onReachBottom(() => {
 })
 function handleChange(e: { index: number }) {
   activeTab.value = e.index
+  page.value = 1
   data.value = []
   send()
 }

+ 5 - 2
src/uni-pages.d.ts

@@ -13,17 +13,20 @@ type _LocationUrl =
   "/subPack-xsb/goods/index" |
   "/subPack-xsb/order/index" |
   "/subPack-xsb/search/index" |
-  "/subPack-common/address/index" |
+  "/subPack-common/addressList/index" |
   "/subPack-common/afterSales/index" |
   "/subPack-common/afterSalesDetail/index" |
   "/subPack-common/afterSalesList/index" |
+  "/subPack-common/editAddress/index" |
   "/subPack-common/integral/index" |
   "/subPack-common/nickName/index" |
   "/subPack-common/orderDetaile/index" |
   "/subPack-common/revalue/index" |
   "/subPack-common/revalueSuccess/index" |
+  "/subPack-common/selectAddress/index" |
   "/subPack-common/user-center/index" |
-  "/subPack-smqjh/goodsList/index";
+  "/subPack-smqjh/goodsList/index" |
+  "/subPack-smqjh/order/index";
 
 interface NavigateToOptions {
   url: _LocationUrl;