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" : "商城", "name" : "商城",
"appid" : "__UNI__A2B711F", "appid" : "__UNI__A3FE0A4",
"description" : "基于 uni-app + Vue3 技术驱动的在线商城系统,内含诸多功能与丰富的活动,期待您的使用和反馈。", "description" : "基于 uni-app + Vue3 技术驱动的在线商城系统,内含诸多功能与丰富的活动,期待您的使用和反馈。",
"versionName" : "2025.09", "versionName" : "2025.09",
"versionCode" : "183", "versionCode" : "183",
+5 -6
View File
@@ -100,13 +100,12 @@
{ {
"path": "pages/uploadClothes/index", "path": "pages/uploadClothes/index",
"style": { "style": {
"navigationBarTitleText": "服饰上传", "navigationBarTitleText": "123",
"navigationStyle": "custom",
"h5": {
"titleNView": false // H5 端直接去掉浏览器默认标题栏
},
"enablePullDownRefresh": false "enablePullDownRefresh": false
},
"meta": {
"sync": true,
"title": "服饰上传",
"group": "服饰上传"
} }
}, },
{ {
+51 -44
View File
@@ -1,54 +1,57 @@
<template> <template
<view> ><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>
<uv-sticky :customNavHeight="0" :offset-top="0"> <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 /> <s-tabs />
</uv-sticky> </uv-sticky>
<s-grid-clothes /> <view class="scroll">
<view class="height1"></view> <s-grid-clothes />
<view class="height1"></view>
</view>
</view> </view>
</template> </template>
<script setup> <script setup>
import { computed, onMounted, reactive, ref } from 'vue'; import { onMounted, reactive } from 'vue';
import { onLoad, onPageScroll, onPullDownRefresh, onUnload } from '@dcloudio/uni-app'; import { onLoad, onPullDownRefresh, onUnload } from '@dcloudio/uni-app';
import sheep from '@/sheep'; import sheep from '@/sheep';
import SSelectMote from './components/s-select-mote.vue'; import SSelectMote from './components/s-select-mote.vue';
import STabs from './components/STabs.vue'; import STabs from './components/STabs.vue';
@@ -128,6 +131,7 @@
.uni-margin-wrap { .uni-margin-wrap {
width: 100%; width: 100%;
position: relative; position: relative;
background: #ffffff;
} }
.swiper { .swiper {
@@ -207,4 +211,7 @@
background: #171717; background: #171717;
} }
} }
.scroll {
overflow-y: scroll;
}
</style> </style>
+44 -42
View File
@@ -1,57 +1,59 @@
<template> <template>
<view class="container-box"> <s-layout :bgStyle="{ color: '#FFF' }" title="服饰上传">
<SelectPic v-if="!imageUrl" @onChange="onChange" /> <view class="container-box">
<template v-if="imageUrl"> <SelectPic v-if="!imageUrl" @onChange="onChange" />
<view class="clothes-box"> <template v-if="imageUrl">
<image :src="imageUrl" class="clothes" mode="aspectFill" @click="uploadFile"></image> <view class="clothes-box">
</view> <image :src="imageUrl" class="clothes" mode="aspectFill" @click="uploadFile"></image>
</view>
<view class="warp"> <view class="warp">
<view class="container"> <view class="container">
<view class="title">分类</view> <view class="title">分类</view>
<uv-radio-group v-model="fittingRoomStore.selectClothesType"> <uv-radio-group v-model="fittingRoomStore.selectClothesType">
<template v-for="(item, index) in fittingRoomStore.tabs"> <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 <uv-radio
v-if="index !== 0 && index !== 6" v-for="(item, index) in pattern"
:key="fittingRoomStore.tabsMap[index]" :key="index"
:customStyle="{ margin: '12rpx' }" :customStyle="{ margin: '12rpx' }"
:label="item" :label="item.label"
:name="fittingRoomStore.tabsMap[index]" :name="item.value"
activeColor="#606060" activeColor="#606060"
iconSize="20rpx" iconSize="20rpx"
shape="square" shape="square"
size="26rpx" size="26rpx"
> >
</uv-radio> </uv-radio>
</template> </uv-radio-group>
</uv-radio-group> </view>
</view> </view>
</view> <view class="operating">
<view class="warp"> <view class="delete" @click="deleteClothes">删除</view>
<view class="container"> <view class="delete" @click="confirmClothes">确认</view>
<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> </view>
</view> </template>
<view class="operating"> </view>
<view class="delete" @click="deleteClothes">删除</view> </s-layout>
<view class="delete" @click="confirmClothes">确认</view>
</view>
</template>
</view>
</template> </template>
<script setup> <script setup>