258 lines
6.3 KiB
Vue
258 lines
6.3 KiB
Vue
<template>
|
||
<view class="flex-col page" :style="{ backgroundImage: 'url(' + bkgPubilcPath + ')' }">
|
||
<view class="flex-row section_2">
|
||
<image
|
||
class="shrink-0 image"
|
||
src="https://www.carboner.cn:8888/api/file/downloadFile?objectKey=test_joXykCyMkUPipYIi_173dc3d4a3850b0bb353efc1a2b99624.png"
|
||
/>
|
||
<view class="flex-col flex-1 ml-7">
|
||
<text class="self-start font text">AI换装</text>
|
||
<text class="self-stretch text_2 mt-6">
|
||
无需更衣室,轻松试穿全球华服!AI智能试衣系统,1秒精准贴合身形,真实还原汉服非遗刺绣、丝绸光泽、现代剪裁等细节。所见即所穿——助你告别网购“想象落差”,让每一件衣服都为你量身呈现。
|
||
</text>
|
||
<text class="self-start text_3 mt-6">注:收集的人像将会在本日自动删除(换装服务由即梦AI提供)</text>
|
||
</view>
|
||
</view>
|
||
<view class="flex-col items-start section_3">
|
||
<text class="font text_4">肖像照</text>
|
||
<uni-file-picker
|
||
fileMediatype="image"
|
||
@select="select"
|
||
limit="1"
|
||
/>
|
||
</view>
|
||
<view class="flex-col items-start section_4">
|
||
<text class="font">AI换装效果</text>
|
||
<text class="text_5 mt-14">说明:AI换装仅供参考,到店试装最佳</text>
|
||
<image
|
||
class="image_3 "
|
||
:src="showImg"
|
||
mode="widthFix"
|
||
/>
|
||
</view>
|
||
<view class="flex-col justify-start items-center section_5">
|
||
<view class="flex-col justify-start items-center text-wrapper" @click="changeClothing"><text class="text_6">一键换装</text></view>
|
||
</view>
|
||
</view>
|
||
|
||
<!-- 遮罩层 -->
|
||
<view v-if="isShow" class="overlay"></view>
|
||
</template>
|
||
|
||
<script setup>
|
||
import { onMounted,ref } from 'vue';
|
||
import { onLoad } from '@dcloudio/uni-app';
|
||
import { baseUrl, domain } from '../../../api/request';
|
||
import { publicPath,bkgPubilcPath } from '../../../common/globalImagesUrl';
|
||
|
||
const clothesImg = ref('');
|
||
const modelImg = ref('')
|
||
const cookie = wx.getStorageSync("cookie") //请求头
|
||
const responseObj = ref('') //后端返回的对象
|
||
const showImg = ref('https://www.carboner.cn:8888/api/file/downloadFile?objectKey=test_XuemOldYRiPrCypr_3e9ee919e2a801d0cb845076a6d3f486.png') //展示样片
|
||
|
||
onLoad((options)=>{
|
||
console.log('服装图片URL---->',options.imgUrl);
|
||
clothesImg.value = publicPath + options.imgUrl;
|
||
})
|
||
|
||
//肖像上传
|
||
const select = async (e)=> {
|
||
// console.log('选择文件:',e.tempFiles[0].file);
|
||
const res = await uni.uploadFile({
|
||
url: baseUrl + '/file/upload',
|
||
filePath: e.tempFilePaths[0],
|
||
name: 'file',
|
||
header: {
|
||
cookie
|
||
},
|
||
formData: {
|
||
biz: "test"
|
||
}
|
||
})
|
||
console.log('上传结果为--->',JSON.parse(res.data));
|
||
responseObj.value = JSON.parse(res.data);
|
||
if(responseObj.value.code === 1) {
|
||
modelImg.value = publicPath + responseObj.value.data;
|
||
}
|
||
console.log('模特url为--->',modelImg.value);
|
||
}
|
||
|
||
|
||
//防抖
|
||
let debounceTimer = null;
|
||
let wxPayTimer = null;
|
||
let loading = false;
|
||
let isLoading = ref(false)
|
||
let isShow = ref(false)
|
||
|
||
|
||
//一键换装 + 防抖
|
||
const changeClothing = async()=> {
|
||
if(modelImg.value === '') {
|
||
uni.showModal({
|
||
content: '模特图片不能为空'
|
||
})
|
||
return
|
||
}
|
||
showLoading()
|
||
isShow.value = true //打开遮罩
|
||
// console.log('服装url----->',clothesImg.value);
|
||
// console.log('模特url--->',modelImg.value);
|
||
const res = await uni.request({
|
||
url: domain + '/clothes/facelift',
|
||
method: 'GET',
|
||
header: {
|
||
cookie
|
||
},
|
||
data: {
|
||
modelURL: modelImg.value,
|
||
clothesURL: clothesImg.value
|
||
}
|
||
})
|
||
console.log('----->返回结果',res.data);
|
||
if(res.data.code === 1) {
|
||
hideLoading()
|
||
console.log('换装返回的结果---->',res.data.data);
|
||
showImg.value = res.data.data
|
||
}
|
||
|
||
}
|
||
|
||
const wxPayFd = (order) => { //微信支付按钮防抖
|
||
showLoading()
|
||
isShow.value = true //打开遮罩
|
||
}
|
||
|
||
function showLoading() { //加载弹窗
|
||
if (!loading) {
|
||
wx.showLoading({
|
||
title: '加载中...',
|
||
});
|
||
loading = true;
|
||
isLoading.value = true
|
||
}
|
||
}
|
||
|
||
function hideLoading() { //关闭弹窗
|
||
if (loading) {
|
||
wx.hideLoading();
|
||
loading = false;
|
||
isLoading.value = false
|
||
isShow.value = false
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style lang="scss" scoped>
|
||
.overlay {
|
||
position: fixed;
|
||
top: 0;
|
||
left: 0;
|
||
width: 100%;
|
||
height: 100%;
|
||
background-color: rgba(0, 0, 0, 0.4); /* 半透明黑色背景 */
|
||
z-index: 999;
|
||
}
|
||
.ml-7 {
|
||
margin-left: 13.13rpx;
|
||
}
|
||
.mt-9 {
|
||
margin-top: 16.88rpx;
|
||
}
|
||
.page {
|
||
padding-top: 26.25rpx;
|
||
background-color: #ffffff;
|
||
// background-image: url('https://ide.code.fun/api/image?token=6815eae14ae84d00122e93ec&name=cf84478130b4f1e349c5b866f9c1a049.png');
|
||
background-size: 100% 100%;
|
||
background-repeat: no-repeat;
|
||
height: 100vh;
|
||
width: 100%;
|
||
overflow-x: hidden;
|
||
overflow-y: auto;
|
||
}
|
||
.section_2 {
|
||
margin-left: 16.88rpx;
|
||
margin-right: 15rpx;
|
||
padding: 10.2rpx 9.38rpx 15rpx;
|
||
background-color: #ffffff;
|
||
border-radius: 18.75rpx;
|
||
}
|
||
.image {
|
||
margin-top: 4.8rpx;
|
||
border-radius: 28.13rpx;
|
||
width: 191.25rpx;
|
||
height: 191.25rpx;
|
||
}
|
||
.font {
|
||
font-size: 37.5rpx;
|
||
line-height: 36.04rpx;
|
||
color: #000000;
|
||
}
|
||
.text {
|
||
color: #323233;
|
||
}
|
||
.text_2 {
|
||
color: #6b6e72;
|
||
font-size: 22.5rpx;
|
||
line-height: 26.25rpx;
|
||
}
|
||
.text_3 {
|
||
color: #6b6e72;
|
||
font-size: 15rpx;
|
||
line-height: 14.59rpx;
|
||
}
|
||
.section_3 {
|
||
margin: 20.63rpx 15rpx 0 16.88rpx;
|
||
padding: 19.57rpx 16.88rpx 24.38rpx;
|
||
background-color: #ffffff;
|
||
border-radius: 18.75rpx;
|
||
}
|
||
.text_4 {
|
||
margin-left: 2.17rpx;
|
||
margin-bottom: 16.88rpx;
|
||
line-height: 35.89rpx;
|
||
}
|
||
.image_2 {
|
||
width: 256.88rpx;
|
||
height: 255rpx;
|
||
}
|
||
.section_4 {
|
||
margin: 20.63rpx 15rpx 0 16.88rpx;
|
||
padding: 30.13rpx 17.18rpx 73.13rpx;
|
||
background-color: #ffffff;
|
||
border-radius: 18.75rpx;
|
||
}
|
||
.text_5 {
|
||
color: #6b6e72;
|
||
font-size: 20.63rpx;
|
||
line-height: 19.82rpx;
|
||
}
|
||
.image_3 {
|
||
// margin-left: 5.32rpx;
|
||
// width: 673.13rpx;
|
||
// height: 673.13rpx;
|
||
}
|
||
.section_5 {
|
||
// margin-top: 181.88rpx;
|
||
padding: 16.88rpx 0 15rpx;
|
||
background-color: #ffffff;
|
||
position: fixed;
|
||
bottom: 0;
|
||
left: 0;
|
||
right: 0;
|
||
}
|
||
.text-wrapper {
|
||
padding: 20.16rpx 0 22.28rpx;
|
||
background-color: #ffaaa5;
|
||
border-radius: 75rpx;
|
||
width: 536.25rpx;
|
||
}
|
||
.text_6 {
|
||
color: #ffffff;
|
||
font-size: 30rpx;
|
||
line-height: 28.84rpx;
|
||
}
|
||
@import url(../../../common/css/global.css);
|
||
</style>
|