feat(fittingRoom): 优化试衣间页面布局和样式

- 调整页面结构,将轮播图组件移入 sticky 容器内
- 添加页面背景色 #ffffff
-为滚动区域添加 scroll 样式类
- 优化上传服饰页面结构,使用 s-layout 组件包裹内容
- 更新页面标题为“服饰上传”- 修改 manifest.json 中的 appid
- 调整 pages.json 中 uploadClothes 页面配置,自定义导航栏并禁用标题栏
This commit is contained in:
liguigong
2025-10-09 15:04:41 +08:00
parent f9861d09f9
commit 738f56caad
4 changed files with 101 additions and 93 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name" : "商城",
"appid" : "__UNI__A2B711F",
"appid" : "__UNI__A3FE0A4",
"description" : "基于 uni-app + Vue3 技术驱动的在线商城系统,内含诸多功能与丰富的活动,期待您的使用和反馈。",
"versionName" : "2025.09",
"versionCode" : "183",
+5 -6
View File
@@ -100,13 +100,12 @@
{
"path": "pages/uploadClothes/index",
"style": {
"navigationBarTitleText": "服饰上传",
"navigationBarTitleText": "123",
"navigationStyle": "custom",
"h5": {
"titleNView": false // H5 端直接去掉浏览器默认标题栏
},
"enablePullDownRefresh": false
},
"meta": {
"sync": true,
"title": "服饰上传",
"group": "服饰上传"
}
},
{
+51 -44
View File
@@ -1,54 +1,57 @@
<template>
<view>
<view class="uni-margin-wrap">
<!-- https://ext.dcloud.net.cn/plugin?id=22930-->
<hbxw-stack-carousel
:key="fittingRoomStore.testResults"
:autoplay="false"
:height="680"
:interval="15000"
:list="fittingRoomStore.testResults"
:width="430"
indicatorStyle="line"
loop
@change="handleChange"
@click="handleItemClick"
>
<template #default="{ item, index }">
<view class="custom-item">
<image
:src="item.tryOnResultUrl || '/static/uploads/loading12.gif'"
class="swiper-image"
mode="aspectFill"
/>
</view>
</template>
<template #indicator="{ currentIndex, total, handleClick }">
<view class="custom-indicators">
<view
v-for="i in total"
:key="i"
:class="{ active: currentIndex === i - 1 }"
class="custom-indicator"
@click="handleClick(i - 1)"
></view>
</view>
</template>
</hbxw-stack-carousel>
<s-select-mote />
<Clothespic />
</view>
<template
><view>
<uv-sticky :customNavHeight="0" :offset-top="0">
<view class="uni-margin-wrap">
<!-- https://ext.dcloud.net.cn/plugin?id=22930-->
<hbxw-stack-carousel
:key="fittingRoomStore.testResults"
:autoplay="false"
:height="680"
:interval="15000"
:list="fittingRoomStore.testResults"
:width="430"
indicatorStyle="line"
loop
@change="handleChange"
@click="handleItemClick"
>
<template #default="{ item, index }">
<view class="custom-item">
<image
:src="item.tryOnResultUrl || '/static/uploads/loading12.gif'"
class="swiper-image"
mode="aspectFill"
/>
</view>
</template>
<template #indicator="{ currentIndex, total, handleClick }">
<view class="custom-indicators">
<view
v-for="i in total"
:key="i"
:class="{ active: currentIndex === i - 1 }"
class="custom-indicator"
@click="handleClick(i - 1)"
></view>
</view>
</template>
</hbxw-stack-carousel>
<s-select-mote />
<Clothespic />
</view>
<s-tabs />
</uv-sticky>
<s-grid-clothes />
<view class="height1"></view>
<view class="scroll">
<s-grid-clothes />
<view class="height1"></view>
</view>
</view>
</template>
<script setup>
import { computed, onMounted, reactive, ref } from 'vue';
import { onLoad, onPageScroll, onPullDownRefresh, onUnload } from '@dcloudio/uni-app';
import { onMounted, reactive } from 'vue';
import { onLoad, onPullDownRefresh, onUnload } from '@dcloudio/uni-app';
import sheep from '@/sheep';
import SSelectMote from './components/s-select-mote.vue';
import STabs from './components/STabs.vue';
@@ -128,6 +131,7 @@
.uni-margin-wrap {
width: 100%;
position: relative;
background: #ffffff;
}
.swiper {
@@ -207,4 +211,7 @@
background: #171717;
}
}
.scroll {
overflow-y: scroll;
}
</style>
+44 -42
View File
@@ -1,57 +1,59 @@
<template>
<view class="container-box">
<SelectPic v-if="!imageUrl" @onChange="onChange" />
<template v-if="imageUrl">
<view class="clothes-box">
<image :src="imageUrl" class="clothes" mode="aspectFill" @click="uploadFile"></image>
</view>
<s-layout :bgStyle="{ color: '#FFF' }" title="服饰上传">
<view class="container-box">
<SelectPic v-if="!imageUrl" @onChange="onChange" />
<template v-if="imageUrl">
<view class="clothes-box">
<image :src="imageUrl" class="clothes" mode="aspectFill" @click="uploadFile"></image>
</view>
<view class="warp">
<view class="container">
<view class="title">分类</view>
<uv-radio-group v-model="fittingRoomStore.selectClothesType">
<template v-for="(item, index) in fittingRoomStore.tabs">
<view class="warp">
<view class="container">
<view class="title">分类</view>
<uv-radio-group v-model="fittingRoomStore.selectClothesType">
<template v-for="(item, index) in fittingRoomStore.tabs">
<uv-radio
v-if="index !== 0 && index !== 6"
:key="fittingRoomStore.tabsMap[index]"
:customStyle="{ margin: '12rpx' }"
:label="item"
:name="fittingRoomStore.tabsMap[index]"
activeColor="#606060"
iconSize="20rpx"
shape="square"
size="26rpx"
>
</uv-radio>
</template>
</uv-radio-group>
</view>
</view>
<view class="warp">
<view class="container">
<view class="title">长度</view>
<uv-radio-group v-model="fittingRoomStore.selectPattern">
<uv-radio
v-if="index !== 0 && index !== 6"
:key="fittingRoomStore.tabsMap[index]"
v-for="(item, index) in pattern"
:key="index"
:customStyle="{ margin: '12rpx' }"
:label="item"
:name="fittingRoomStore.tabsMap[index]"
:label="item.label"
:name="item.value"
activeColor="#606060"
iconSize="20rpx"
shape="square"
size="26rpx"
>
</uv-radio>
</template>
</uv-radio-group>
</uv-radio-group>
</view>
</view>
</view>
<view class="warp">
<view class="container">
<view class="title">长度</view>
<uv-radio-group v-model="fittingRoomStore.selectPattern">
<uv-radio
v-for="(item, index) in pattern"
:key="index"
:customStyle="{ margin: '12rpx' }"
:label="item.label"
:name="item.value"
activeColor="#606060"
iconSize="20rpx"
shape="square"
size="26rpx"
>
</uv-radio>
</uv-radio-group>
<view class="operating">
<view class="delete" @click="deleteClothes">删除</view>
<view class="delete" @click="confirmClothes">确认</view>
</view>
</view>
<view class="operating">
<view class="delete" @click="deleteClothes">删除</view>
<view class="delete" @click="confirmClothes">确认</view>
</view>
</template>
</view>
</template>
</view>
</s-layout>
</template>
<script setup>