style生成接入接口

This commit is contained in:
X1627315083
2025-10-24 11:48:15 +08:00
parent 81b7882f81
commit 6ad265f936
8 changed files with 92 additions and 48 deletions

View File

@@ -52,12 +52,8 @@ html:root {
--van-dialog-has-title-message-padding-top: 2.5rem;
--van-button-default-color: #1B73E7;
--van-dialog-confirm-button-text-color: #1B73E7;
}
.van-toast__text {
font-size: 4rem;
height: 5rem;
line-height: 5rem;
padding: 0 2rem;
--van-notify-font-size: 3.5rem;
--van-notify-line-height: 10rem;
}
.van-toast__text {
font-size: 4rem;

View File

@@ -61,6 +61,9 @@ html:root {
--van-dialog-has-title-message-padding-top: 2.5rem;
--van-button-default-color: #1B73E7;
--van-dialog-confirm-button-text-color: #1B73E7;
//消息提示
--van-notify-font-size: 3.5rem;
--van-notify-line-height: 10rem
}

View File

@@ -82,7 +82,7 @@ const router = createRouter({
{
path: '/workshop/selectStyle',
name: 'SelectStyle',
component: () => import('../views/Workshop/selectStyle.vue')
component: () => import('../views/Workshop/selectStyle.vue'),
},
{
path: '/workshop/selectModel',

View File

@@ -4,49 +4,50 @@ export const useGenerateStore = defineStore({
id: 'generate', // 必须指明唯一的pinia仓库的id
state: () => {
return {
userData: {
title: '123123',
name: '123123',
describe: '',
id: '',
style: {
id: -1,
oldId: -1,//表示从生成页面返回回来需要调整的样式id
},
model: {
id: -1,
}
style: {
id: -1,
oldId: -1,//表示从生成页面返回回来需要调整的样式id
},
queryList: []
model: {
id: -1,
},
tryOnId:{//生成穿好衣服的回参
id: -1,
isLike: false,//是否喜欢
},
isGenerate: false,//点击继续按钮后是否需要生成
}
},
getters: {
customerId: (state) => state.userData.style.id,//顾客id
visitRecordId: (state) => state.userData.style.id,//进店记录id
styleId: (state) => state.userData.style.id,//服装id
modelPhotoId: (state) => state.userData.model.id,//模特照片id
originalTryOnId: (state) => state.userData.style.id,//原始试穿id
customerId: (state) => state.style.id,//顾客id
visitRecordId: (state) => state.style.id,//进店记录id
styleId: (state) => state.style.id,//服装id
modelPhotoId: (state) => state.model.id,//模特照片id
originalTryOnId: (state) => state.style.id,//原始试穿id
},
actions: {
selectStyle(data: any) {
this.userData.style.id = data.id
console.log(this.userData)
this.style.id = data.id
console.log(this)
},
//生成后去掉id 设置oldId来修改样式
useStyleGenerate() {
this.userData.style.oldId = this.userData.style.id
this.userData.style.id = -1
this.style.oldId = this.style.id
this.style.id = -1
},
updateStyle(data) {
console.log(data)
if (data.id == this.userData.style.oldId) {
this.userData.style.oldId = -1
if (data.id == this.style.oldId) {
this.style.oldId = -1
}
},
//模特相关
selectModel(data: any) {
this.userData.model.id = data.id
console.log(this.userData)
this.model.id = data.id
console.log(this)
},
setIsGenerate(isGenerate: boolean) {
this.isGenerate = isGenerate
}
}
})

View File

@@ -32,7 +32,7 @@
visitRecordId: store.visitRecordId,
styleId: store.styleId,
modelPhotoId: store.modelPhotoId,
customerPhotoId: store.userData.id,
customerPhotoId: store.id,
originalTryOnId: store.originalTryOnId,
isRegenerated: isRegenerated ? 1 : 0,
prompt: inputText.value,

View File

@@ -2,9 +2,10 @@
import { onMounted, onUnmounted, reactive, toRefs } from "vue";
import HeaderTitle from '@/components/HeaderTitle.vue'
import FooterNavigation from '@/components/FooterNavigation.vue'
import { useRouter } from 'vue-router'
import { useRouter, useRoute } from 'vue-router'
import GenerateLoading from '@/views/asistant/components/GenerateLoading.vue'
import { useGenerateStore } from '@/stores'
import { generateTryOnEffect, setTryOnEffectFavorite, cancelTryOnEffectFavorite } from '@/api/workshop'
const router = useRouter()
//const props = defineProps({
//})
@@ -17,6 +18,8 @@ let data = reactive({
isLoading: false,
})
const generateStore = useGenerateStore()
// const setSelectedModelId = (item)=>{
// data.selectedModelId = item.id;
// }
@@ -30,13 +33,45 @@ const changeModel = ()=>{
router.push('selectModel')
}
const startGenerate = ()=>{
data.isLoading = true;
let value = {
customerId:generateStore.customerId,
visitRecordId:generateStore.visitRecordId,
styleId:generateStore.style.id,
customerPhotoId:null,
modelPhotoId:null,
prompt:null,
originalTryOnId:null,
isRegenerated:0,
}
generateTryOnEffect(value).then((res:any)=>{
data.isLoading = false;
generateStore.tryOnId.id = res.id
generateStore.tryOnId.isLike = false
generateStore.useStyleGenerate()//生成后需要对选择衣服页面设置不可选中样式
generateStore.setIsGenerate(false)
})
}
const setLike = ()=>{
let tryOnId = generateStore.tryOnId.id
if(generateStore.tryOnId.isLike){
cancelTryOnEffectFavorite(tryOnId).then(()=>{
generateStore.tryOnId.isLike = false
})
}else{
setTryOnEffectFavorite(tryOnId).then(()=>{
generateStore.tryOnId.isLike = true
})
}
}
onMounted(() => {
emit('view-type', 1)
data.isLoading = true;
setTimeout(()=>{
useGenerateStore().useStyleGenerate()
data.isLoading = false;
}, 2000)
if (generateStore.isGenerate) {
startGenerate()
}
})
onUnmounted(()=>{
})
@@ -62,15 +97,15 @@ const { isLoading } = toRefs(data);
<div class="model">
<img src="@/assets/images/workshop/posture/posture_1.png" />
<div class="operation">
<div><SvgIcon name="love_0" size="35" /></div>
<div><SvgIcon name="reload" size="35" /></div>
<div><SvgIcon name="download" size="35" /></div>
<div><SvgIcon :name="`love_${generateStore.tryOnId.isLike ? '1' : '0'}`" size="35" @click="setLike" /></div>
<div><SvgIcon name="reload" size="35" @click="startGenerate"/></div>
<!-- <div><SvgIcon name="download" size="35" /></div> -->
</div>
</div>
</div>
<div class="again">
<div @click="changeModel">Change Model</div>
<div @click="onContinue">Continue</div>
<!-- <div @click="changeModel">Change Model</div> -->
<div @click="onContinue" style="margin-left: auto;">Continue</div>
</div>
</div>
</div>

View File

@@ -40,7 +40,7 @@ let data = reactive({
},
],
selectModel:computed(()=>generateStore.userData.model),
selectModel:computed(()=>generateStore.model),
})
const setSelectedModelId = (item)=>{

View File

@@ -8,6 +8,7 @@ import editProfile2 from '@/assets/images/workshop/selectStyle/selectStyle2.png'
import editProfile3 from '@/assets/images/workshop/selectStyle/selectStyle3.png'
import editProfile4 from '@/assets/images/workshop/selectStyle/selectStyle4.png'
import { useGenerateStore } from '@/stores'
import { showNotify } from 'vant';
const router = useRouter()
//const props = defineProps({
@@ -36,7 +37,7 @@ let data = reactive({
imgUrl:editProfile4,
},
],
select:computed(()=>generateStore.userData.style)
select:computed(()=>generateStore.style)
})
const selectItem = (item)=>{
@@ -52,11 +53,19 @@ const updateStyle = ({item,index})=>{
}
const toProduct = ()=>{
console.log(generateStore.style)
if(generateStore.style.id == -1 && !generateStore.style.oldId){
showNotify({ message: 'Please select a style.', type:'warning' });
return
}
if(generateStore.style.id){
generateStore.setIsGenerate(true)
}
router.push({ path: 'product' })
}
onMounted(()=>{
emit('view-type', 1)
console.log(useGenerateStore())
})
onUnmounted(()=>{
})