feat: prompt输入部分样式

This commit is contained in:
zhangyh
2025-11-11 10:35:03 +08:00
parent b216852f14
commit 6aff732a57

View File

@@ -1,16 +1,9 @@
<template> <template>
<div class="toProduct"> <div class="toProduct">
<div class="productImg_content"> <div class="productImg_content">
<!-- <div class="modal_title_text">
<div>{{$t('ProductImg.Finalize')}}</div>
<div class="modal_title_text_intro"></div>
</div> -->
<div class="productImg_content_bottom"> <div class="productImg_content_bottom">
<div class="productImg_left generalModel_state" :class="{ active: button.left }"> <div class="productImg_left generalModel_state" :class="{ active: button.left }">
<!-- <div class="productImg_content_item_title productImg_content_item_title_menu"> <div class="selectImg">
<generalMenu class="productImg_content_item_title_menubtn" :class="{hideEvents:driver__.driver}" :dataList="productimgMenuList" @setprintModel="setproduct" :item="productimgMenu"></generalMenu>
</div> -->
<div class="selectImg" style="margin-bottom: 2rem">
<div class="head"> <div class="head">
<div class="text"> <div class="text">
{{ {{
@@ -23,10 +16,6 @@
</div> </div>
</div> </div>
<div class="imgBox" v-mousewheel> <div class="imgBox" v-mousewheel>
<!-- <div class="item" :class="[item?.isChecked?'active':'']" v-for="item in selectList[productimgMenu.value]" @click="setGenerate(item)">
<img :src="item.imgUrl || item.url" alt="">
<a-checkbox v-model:checked="item.isChecked"></a-checkbox>
</div> -->
<div <div
class="item" class="item"
:class="[item?.isChecked ? 'active' : '']" :class="[item?.isChecked ? 'active' : '']"
@@ -57,7 +46,6 @@
<i class="fi fi-rr-trash icon_delete"></i> <i class="fi fi-rr-trash icon_delete"></i>
</div> </div>
</div> </div>
<!-- <a-checkbox v-model:checked="item.isChecked"></a-checkbox> -->
</div> </div>
<div class="upload_item item" v-show="!isDesignPage"> <div class="upload_item item" v-show="!isDesignPage">
<div class="upload_file_item"> <div class="upload_file_item">
@@ -76,7 +64,6 @@
> >
<div class="upload_tip_block"> <div class="upload_tip_block">
<i class="fi fi-br-upload"></i> <i class="fi fi-br-upload"></i>
<!-- <img class="upload_img_icon" src="@/assets/images/homePage/add_file.png"> -->
</div> </div>
</a-upload> </a-upload>
</div> </div>
@@ -108,13 +95,6 @@
v-model="similarity" v-model="similarity"
/> />
</div> </div>
<!-- <div v-show="productimgMenu.value == 'Relight'" class="productImg_content_item_title productImg_content_item_title_similarity">
<span>{{$t('ProductImg.SelectionFunction')}}</span>
</div> -->
<!-- 暂时去掉 -->
<!-- <div v-show="productimgMenu.value == 'Relight'" class="productImg_content_item_Direction generalModel_state_item">
<a-select size="large" style="width: 100%;" v-model:value="speedData.value" :options="speedList" :field-names="{ label: 'relightLabel', value: 'value' }"></a-select>
</div> -->
<div <div
v-show=" v-show="
productimgMenu.value == 'Relight' && productimgMenu.value == 'Relight' &&
@@ -169,51 +149,52 @@
v-model="brightenValue" v-model="brightenValue"
/> />
</div> </div>
<div class="input_border productImg_content_item_generate"> <div class="prompt-container">
<div class="input_box"> <div class="prompt-title">Prompt</div>
<div class="input_box_btnBox"> <div class="input_border productImg_content_item_generate">
<!-- <input <div class="input_box">
class="search_input" <div class="input_box_btnBox">
:placeholder="productimgMenu.value == 'Relight'?$t('ProductImg.relightInput'):$t('ProductImg.productInput')" <textarea
v-model="searchName[productimgMenu.value]" class="textarea"
@keydown.enter="getPrductimg()" ref="textarea"
/> --> @input="ifMaximumLength"
<textarea :placeholder="
class="textarea" productimgMenu.value == 'Relight'
ref="textarea" ? $t('ProductImg.relightInput')
@input="ifMaximumLength" : $t('ProductImg.productInput')
:placeholder=" "
productimgMenu.value == 'Relight' @keydown.enter.prevent="getPrductimg()"
? $t('ProductImg.relightInput') v-model="searchName[productimgMenu.value]"
: $t('ProductImg.productInput') ></textarea>
" </div>
@keydown.enter.prevent="getPrductimg()"
v-model="searchName[productimgMenu.value]"
></textarea>
</div> </div>
</div> </div>
</div> <div class="asistant-btn" @click="handleClickAssistBtn">
<div <i class="fi fi-bs-magic-wand asistant-icon"></i>
class="selectText" <span>Prompt Assist</span>
v-show="productimgMenu.value == 'ToProductImage' && speedData.value" </div>
> <!-- <div
<a-tooltip class="selectText"
v-for="(promptText, index) in promptTextList" v-show="productimgMenu.value == 'ToProductImage' && speedData.value"
:key="index"
placement="bottom"
> >
<template #title>{{ promptText }}</template> <a-tooltip
<div v-for="(promptText, index) in promptTextList"
@click=" :key="index"
() => { placement="bottom"
searchName[productimgMenu.value] = promptText
ifMaximumLength()
}
"
> >
{{ promptText }} <template #title>{{ promptText }}</template>
</div> <div
</a-tooltip> @click="
() => {
searchName[productimgMenu.value] = promptText
ifMaximumLength()
}
"
>
{{ promptText }}
</div>
</a-tooltip>
</div> -->
</div> </div>
<div class="productImg_content_item_generate_btn input_border"> <div class="productImg_content_item_generate_btn input_border">
<div class="generage_btn_box"> <div class="generage_btn_box">
@@ -362,6 +343,7 @@
:isProductimg="true" :isProductimg="true"
></scaleImage> ></scaleImage>
</div> </div>
<Prompt />
</template> </template>
<script lang="ts"> <script lang="ts">
@@ -392,6 +374,7 @@ import { useStore } from 'vuex'
import scaleImage from '@/component/HomePage/scaleImage.vue' import scaleImage from '@/component/HomePage/scaleImage.vue'
import generalMenu from '@/component/HomePage/generalMenu.vue' import generalMenu from '@/component/HomePage/generalMenu.vue'
import generalDrag from '@/component/modules/generalDrag.vue' import generalDrag from '@/component/modules/generalDrag.vue'
import Prompt from './Prompt.vue'
import { List } from 'echarts' import { List } from 'echarts'
import { useRouter, useRoute } from 'vue-router' import { useRouter, useRoute } from 'vue-router'
@@ -399,7 +382,8 @@ export default defineComponent({
components: { components: {
scaleImage, scaleImage,
generalMenu, generalMenu,
generalDrag generalDrag,
Prompt
}, },
props: { props: {
setTask: { setTask: {
@@ -493,13 +477,6 @@ export default defineComponent({
} }
}) })
// watch(() => route.query.id,
// (query:any, oldQuery:any) => {
// if(oldQuery && query != oldQuery){
// productImgData.generateList = []
// }
// },
// );
watch( watch(
() => store.state.HomeStoreModule.uploadElement.length, () => store.state.HomeStoreModule.uploadElement.length,
(newVal, oldVal) => { (newVal, oldVal) => {
@@ -974,31 +951,6 @@ export default defineComponent({
scaleImage.value.init(arr, index) scaleImage.value.init(arr, index)
scaleImage.value.isComparison = true scaleImage.value.isComparison = true
} }
let generalIsMenuShow: any = {}
let setMenuShow = (item: any) => {
item.menuShow = true
generalIsMenuShow = item
document.addEventListener('click', removeMenuShow)
}
let setMenu = (menuItem: any, item: any) => {
// props.productimgMenu = menuItem
// if(!selectList.value[props.productimgMenu.value]){
// selectList.value[props.productimgMenu.value] = []
// }
// selectList.value[props.productimgMenu.value].forEach((item:any) => {
// item.isChecked = false
// });
// if(selectList.value[menuItem.value].indexOf(item) == -1){
// item.isChecked = true
// selectList.value[menuItem.value].push(item)
// }
// generalIsMenuShow.menuShow = false
}
let removeMenuShow = () => {
generalIsMenuShow.menuShow = false
generalIsMenuShow = {}
document.removeEventListener('click', removeMenuShow)
}
let setSimilarity = (num: any) => {} let setSimilarity = (num: any) => {}
//超分 //超分
@@ -1140,7 +1092,6 @@ export default defineComponent({
) )
onMounted(() => { onMounted(() => {
ifMaximumLength() ifMaximumLength()
console.log('来源:---', props.source, props.isDesignPage)
}) })
// 计算属性:根据条件生成提示词列表 // 计算属性:根据条件生成提示词列表
@@ -1152,10 +1103,7 @@ export default defineComponent({
if (!isFromDesignPage) { if (!isFromDesignPage) {
// 如果不是从design来的返回两个提示词 // 如果不是从design来的返回两个提示词
return [ return [t('poseTransfer.UploadWithModel'), t('poseTransfer.UploadWithoutModel')]
t('poseTransfer.UploadWithModel'),
t('poseTransfer.UploadWithoutModel')
]
} else { } else {
// 如果是从design来的 // 如果是从design来的
if (isSingleDesign) { if (isSingleDesign) {
@@ -1163,10 +1111,7 @@ export default defineComponent({
const secondPrompt = isAdult const secondPrompt = isAdult
? t('poseTransfer.SingleAdultTryOn') ? t('poseTransfer.SingleAdultTryOn')
: t('poseTransfer.SingleChildTryOn') : t('poseTransfer.SingleChildTryOn')
return [ return [t('poseTransfer.SingleGarment'), secondPrompt]
t('poseTransfer.SingleGarment'),
secondPrompt
]
} else { } else {
// SERIES_DESIGN: 一个提示词 // SERIES_DESIGN: 一个提示词
return [ return [
@@ -1178,6 +1123,12 @@ export default defineComponent({
} }
}) })
const showPromptAssist = ref(false)
const showPrompt = ref(false)
const handleClickAssistBtn = () => {
showPromptAssist.value = true
}
return { return {
upload, upload,
driver__, driver__,
@@ -1189,6 +1140,8 @@ export default defineComponent({
RelightDirectionList, RelightDirectionList,
RelightDirection, RelightDirection,
promptTextList, promptTextList,
showPromptAssist,
showPrompt,
setproduct, setproduct,
fileUploadChange, fileUploadChange,
@@ -1200,8 +1153,6 @@ export default defineComponent({
removeProductimg, removeProductimg,
scaleImage, scaleImage,
setScaleImage, setScaleImage,
setMenu,
setMenuShow,
setSimilarity, setSimilarity,
setTask, setTask,
selectSetBtn, selectSetBtn,
@@ -1211,7 +1162,8 @@ export default defineComponent({
ifMaximumLength, ifMaximumLength,
openSpeed, openSpeed,
setSpeed, setSpeed,
locale locale,
handleClickAssistBtn
} }
}, },
directives: { directives: {
@@ -1249,26 +1201,6 @@ export default defineComponent({
mounted() { mounted() {
this.token = getCookie('token') || '' this.token = getCookie('token') || ''
this.uploadUrl = getUploadUrl() this.uploadUrl = getUploadUrl()
},
methods: {
// init(list:any,index:any,dialogueIndex:any){
// },
// cancelDsign(){
// this.productImg = false
// // this.productImgList = []
// // this.productImgIndex = 0
// },
// download(){
// // downloadIamge(this.productImgList[this.productImgIndex].imgUrl)
// },
// setScaleImageIndex(index:any){
// // this.productImgIndex = index
// // console.log(this.productImgIndex);
// },
// LikeFile(item:any,str:string){
// let parent:any = this.$parent
// parent.likeFile(item,str)
// },
} }
}) })
</script> </script>
@@ -1319,68 +1251,13 @@ export default defineComponent({
.productImg_content_item_intro { .productImg_content_item_intro {
font-size: 1.4rem; font-size: 1.4rem;
} }
// .productImg_content_item_imgBox{
// display: flex;
// overflow-x: auto;
// width: auto;
// margin-bottom: 2rem;
// align-items: center;
// flex-wrap: nowrap;
// .content_item_imgBox_itemImg{
// display: flex;
// margin-right: 1rem;
// position: relative;
// height: 36rem;
// max-height: 100%;
// position: relative;
// img{
// height: 100%;
// width: 100%;
// cursor: pointer;
// object-fit: contain;
// opacity: .5;
// &.active{
// opacity: 1;
// }
// }
// .ant-checkbox-wrapper{
// position: absolute;
// right: 0;
// top: 0;
// }
// &.content_item_imgBox_itemImg:hover{
// .content_item_imgBox_itemImg_delete{
// display: block;
// cursor: pointer;
// }
// }
// .content_item_imgBox_itemImg_delete{
// display: none;
// width: 100%;
// height: 100%;
// background: rgba(0,0,0,.2);
// position: absolute;
// i{
// position: absolute;
// left: 50%;
// top: 50%;
// transform: translate(-50%,-50%);
// color: #fff;
// }
// }
// }
// .content_item_imgBox_itemImg:last-child{
// margin-right: 0;
// }
// }
.selectImg { .selectImg {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
> .imgBox { > .imgBox {
flex: 1; flex: 1;
max-height: 45rem; max-height: 45rem;
margin-top: 2rem;
display: flex; display: flex;
flex-direction: row; flex-direction: row;
flex-wrap: nowrap; flex-wrap: nowrap;
@@ -1388,17 +1265,19 @@ export default defineComponent({
width: 100%; width: 100%;
overflow: hidden; overflow: hidden;
overflow-x: auto; overflow-x: auto;
column-gap: 1rem;
// &.active // &.active
> .item { > .item {
margin-right: 1rem; // margin-right: 1rem;
width: calc(100% / 2 - 0.5rem); // width: calc(100% / 2 - 0.5rem);
width: 9.6rem;
cursor: pointer; cursor: pointer;
overflow: hidden; overflow: hidden;
display: flex; display: flex;
justify-content: center; justify-content: center;
flex-shrink: 0; flex-shrink: 0;
height: 25rem; height: 13.4rem;
position: relative; position: relative;
// &.active{ // &.active{
// border: 2px solid; // border: 2px solid;
@@ -1454,6 +1333,7 @@ export default defineComponent({
> .head { > .head {
color: #000; color: #000;
font-weight: 600; font-weight: 600;
margin-bottom: 2rem;
> .text { > .text {
display: inline-block; display: inline-block;
font-size: 1.6rem; font-size: 1.6rem;
@@ -1500,6 +1380,7 @@ export default defineComponent({
flex-shrink: 0; flex-shrink: 0;
height: 25rem; height: 25rem;
position: relative; position: relative;
> .imgBox { > .imgBox {
width: 100%; width: 100%;
} }
@@ -1665,4 +1546,56 @@ export default defineComponent({
.designPage { .designPage {
margin-right: 4rem; margin-right: 4rem;
} }
.upload_file_item {
// height: 13.4rem;
// margin-top: 2rem;
:deep(.ant-upload-picture-card-wrapper) {
.ant-upload-list-picture-card {
.ant-upload-select-picture-card {
width: 9.6rem;
height: 13.4rem;
}
}
}
}
.prompt-container {
margin-top: 4rem;
margin-bottom: 3rem;
position: relative;
.prompt-title {
margin-bottom: 1.4rem;
font-size: 1.6rem;
// margin-bottom: 1rem;
}
.input_border {
padding-bottom: 0;
.input_box {
.input_box_btnBox .textarea {
min-height: 12.7rem;
}
}
}
.asistant-btn {
// width: 9rem;
padding: 0.45rem 0.6rem;
font-size: 1rem;
font-weight: 400;
color: #313131;
position: absolute;
bottom: 1.3rem;
left: 1.3rem;
display: flex;
column-gap: 0.3rem;
justify-content: center;
align-items: center;
background-color: #f2f2f2;
border: 1px solid #dfdfdf;
border-radius: 0.5rem;
cursor: pointer;
.asistant-icon {
font-size: 1rem;
}
}
}
</style> </style>