feat(fittingRoom): 优化试衣间页面布局和样式
- 调整页面结构,将轮播图组件移入 sticky 容器内 - 添加页面背景色 #ffffff -为滚动区域添加 scroll 样式类 - 优化上传服饰页面结构,使用 s-layout 组件包裹内容 - 更新页面标题为“服饰上传”- 修改 manifest.json 中的 appid - 调整 pages.json 中 uploadClothes 页面配置,自定义导航栏并禁用标题栏
This commit is contained in:
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name" : "商城",
|
||||
"appid" : "__UNI__A2B711F",
|
||||
"appid" : "__UNI__A3FE0A4",
|
||||
"description" : "基于 uni-app + Vue3 技术驱动的在线商城系统,内含诸多功能与丰富的活动,期待您的使用和反馈。",
|
||||
"versionName" : "2025.09",
|
||||
"versionCode" : "183",
|
||||
|
||||
+5
-6
@@ -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
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user