修复页面bug
This commit is contained in:
@@ -139,6 +139,7 @@ export default defineComponent({
|
||||
width: 100%;
|
||||
.account_generalMessage_center{
|
||||
.account_generalMessage_item{
|
||||
font-size: var(--aida-fsize1-6);
|
||||
.account_generalMessage_item_right{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
@@ -147,6 +147,7 @@ export default defineComponent({
|
||||
width: 100%;
|
||||
.account_generalMessage_center{
|
||||
.account_generalMessage_item{
|
||||
font-size: var(--aida-fsize1-6);
|
||||
.account_generalMessage_item_right{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
<template>
|
||||
<transition name="fade">
|
||||
<div v-if="visible" class="liquify-panel">
|
||||
<div v-if="visible" class="liquify-panel" :class="{active:!closePanel}">
|
||||
<div class="btn" @click="setClosePanel"><i class="fi fi-br-angle-left"></i></div>
|
||||
<div class="liquify-panel-header">
|
||||
<div class="header-title">液化工具</div>
|
||||
<div class="header-title">{{ $t('liquifyPanel.LiquefactionTool') }}</div>
|
||||
<!-- <div class="header-actions">
|
||||
<button class="header-btn cancel-btn" @click="cancel">取消</button>
|
||||
<button class="header-btn confirm-btn" @click="confirm">完成</button>
|
||||
@@ -251,6 +252,12 @@ const showDistortion = computed(() => {
|
||||
return ["crystal", "edge"].includes(currentMode.value);
|
||||
});
|
||||
|
||||
//打开隐藏操作面板
|
||||
const closePanel = ref(false)
|
||||
const setClosePanel = ()=>{
|
||||
closePanel.value = !closePanel.value
|
||||
}
|
||||
|
||||
// 监听当前工具变化 - 参考 SelectionPanel 的实现方式
|
||||
watch(
|
||||
() => props.activeTool,
|
||||
@@ -262,6 +269,7 @@ watch(
|
||||
// 如果面板未显示且有合适的目标对象,则显示面板
|
||||
if (!visible.value) {
|
||||
visible.value = true;
|
||||
closePanel.value = true
|
||||
// 检查是否有可液化的对象
|
||||
checkAndShowPanel();
|
||||
}
|
||||
@@ -451,6 +459,7 @@ function showPanel(event) {
|
||||
console.log("未选择有效图像或图层不适合液化操作");
|
||||
}
|
||||
visible.value = true; // 仍然显示面板以便用户看到提示
|
||||
closePanel.value = true
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -463,6 +472,7 @@ function showPanel(event) {
|
||||
if (!targetObj) {
|
||||
console.log("未选择有效的图像对象");
|
||||
visible.value = true; // 仍然显示面板以便显示提示
|
||||
closePanel.value = true
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -509,6 +519,7 @@ function showPanel(event) {
|
||||
}
|
||||
|
||||
visible.value = true;
|
||||
closePanel.value = true
|
||||
isEditing.value = true;
|
||||
|
||||
// 初始化液化管理器并准备液化环境
|
||||
@@ -1623,6 +1634,25 @@ function stopPressTimer() {
|
||||
color: #333;
|
||||
border: 1px solid rgba(0, 0, 0, 0.05);
|
||||
padding-bottom: 12px;
|
||||
&.active{
|
||||
transform: translateY(100%);
|
||||
> .btn{
|
||||
> i{
|
||||
transform: rotate(90deg);
|
||||
}
|
||||
}
|
||||
}
|
||||
> .btn{
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
cursor: pointer;
|
||||
|
||||
> i{
|
||||
font-size: 1.4rem;
|
||||
display: block;
|
||||
transform: rotate(270deg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.fade-enter-active,
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<template>
|
||||
<transition name="fade">
|
||||
<div class="selection-toolbar" v-if="visible">
|
||||
<div class="selection-toolbar" v-if="visible" :class="{active:!closePanel}">
|
||||
<div class="btn" @click="setClosePanel"><i class="fi fi-br-angle-left"></i></div>
|
||||
<!-- 顶部选区类型工具栏 -->
|
||||
<div class="toolbar-section">
|
||||
<div class="toolbar-header">
|
||||
@@ -238,6 +239,11 @@ const fillColor = ref("#000000");
|
||||
const hasSelection = ref(false);
|
||||
const showFeatherDialog = ref(false);
|
||||
const showColorPicker = ref(false);
|
||||
//打开隐藏操作面板
|
||||
const closePanel = ref(false)
|
||||
const setClosePanel = ()=>{
|
||||
closePanel.value = !closePanel.value
|
||||
}
|
||||
|
||||
// 国际化
|
||||
const { t } = useI18n();
|
||||
@@ -289,6 +295,7 @@ watch(
|
||||
*/
|
||||
function show() {
|
||||
visible.value = true;
|
||||
closePanel.value = true
|
||||
checkSelectionStatus();
|
||||
}
|
||||
|
||||
@@ -512,6 +519,25 @@ function confirmColorPicker() {
|
||||
color: #333;
|
||||
border: 1px solid rgba(0, 0, 0, 0.05);
|
||||
user-select: none;
|
||||
&.active{
|
||||
transform: translateY(100%);
|
||||
> .btn{
|
||||
> i{
|
||||
transform: rotate(90deg);
|
||||
}
|
||||
}
|
||||
}
|
||||
> .btn{
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
cursor: pointer;
|
||||
|
||||
> i{
|
||||
font-size: 1.4rem;
|
||||
display: block;
|
||||
transform: rotate(270deg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 平板和手机适配 */
|
||||
|
||||
@@ -1,18 +1,20 @@
|
||||
<!-- filepath: /Users/aaron/work/pc/air/canvasEdit/src/components/CanvasEditor/components/TextEditorPanel.vue -->
|
||||
<template>
|
||||
<div v-if="visible" class="text-editor-panel" :class="{ 'is-active': visible }">
|
||||
<div v-if="visible" class="text-editor-panel" :class="{ 'is-active': visible,active:!closePanel }">
|
||||
<div class="btn" @click="setClosePanel"><i class="fi fi-br-angle-left"></i></div>
|
||||
|
||||
<div class="text-editor-panel-header">
|
||||
<div class="header-btn import-btn">编辑文本样式</div>
|
||||
<div class="header-btn import-btn">{{ $t('Canvas.EditTextStyle') }}</div>
|
||||
<div class="header-actions">
|
||||
<div class="header-btn cancel-btn" @click="close">取消</div>
|
||||
<div class="header-btn confirm-btn" @click="confirmEdit">完成</div>
|
||||
<div class="header-btn cancel-btn" @click="close">{{ $t('Canvas.close') }}</div>
|
||||
<div class="header-btn confirm-btn" @click="confirmEdit">{{ $t('Canvas.confirmEdit') }}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="text-editor-content">
|
||||
<!-- 字体选择列表 -->
|
||||
<div class="edit-column font-column">
|
||||
<div class="column-header">字体</div>
|
||||
<div class="column-header">{{ $t('Canvas.fontFamily') }}</div>
|
||||
<div class="font-list">
|
||||
<div
|
||||
v-for="font in availableFonts"
|
||||
@@ -28,7 +30,7 @@
|
||||
|
||||
<!-- 样式选择区域 -->
|
||||
<div class="edit-column style-column">
|
||||
<div class="column-header">样式</div>
|
||||
<div class="column-header">{{ $t('Canvas.fontStyle') }}</div>
|
||||
<div class="style-preview">
|
||||
<div class="style-name">Regular</div>
|
||||
<div class="style-sample" :style="{ fontFamily }">Regular</div>
|
||||
@@ -37,10 +39,10 @@
|
||||
|
||||
<!-- 设计参数区域 -->
|
||||
<div class="edit-column design-column">
|
||||
<div class="column-header">设计</div>
|
||||
<div class="column-header">{{ $t('Canvas.design') }}</div>
|
||||
|
||||
<div class="param-item">
|
||||
<div class="param-label">尺寸</div>
|
||||
<div class="param-label">{{ $t('Canvas.size') }}</div>
|
||||
<div class="param-control">
|
||||
<input
|
||||
type="range"
|
||||
@@ -55,7 +57,7 @@
|
||||
</div>
|
||||
|
||||
<div class="param-item">
|
||||
<div class="param-label">字符间距</div>
|
||||
<div class="param-label">{{ $t('Canvas.charSpacing') }}</div>
|
||||
<div class="param-control">
|
||||
<input
|
||||
type="range"
|
||||
@@ -71,7 +73,7 @@
|
||||
</div>
|
||||
|
||||
<div class="param-item">
|
||||
<div class="param-label">行距</div>
|
||||
<div class="param-label">{{ $t('Canvas.lineHeight') }}</div>
|
||||
<div class="param-control">
|
||||
<input
|
||||
type="range"
|
||||
@@ -102,7 +104,7 @@
|
||||
</div> -->
|
||||
|
||||
<div class="param-item">
|
||||
<div class="param-label">不透明度</div>
|
||||
<div class="param-label">{{ $t('Canvas.opacity') }}</div>
|
||||
<div class="param-control">
|
||||
<input
|
||||
type="range"
|
||||
@@ -120,7 +122,7 @@
|
||||
|
||||
<!-- 字体属性区域 -->
|
||||
<div class="edit-column props-column">
|
||||
<div class="column-header">字体属性</div>
|
||||
<div class="column-header">{{ $t('Canvas.property') }}</div>
|
||||
|
||||
<div class="text-alignment">
|
||||
<div
|
||||
@@ -178,7 +180,7 @@
|
||||
</div>
|
||||
<!-- 添加字体色控制区域 -->
|
||||
<div class="background-controls">
|
||||
<div class="bg-header">字体色</div>
|
||||
<div class="bg-header">{{ $t('Canvas.fontColor') }}</div>
|
||||
<div class="bg-options">
|
||||
<div class="style-btn color-btn" @click="openColorPicker('text')">
|
||||
<div class="style-icon color-icon" :style="{ backgroundColor: textColor }"></div>
|
||||
@@ -187,7 +189,7 @@
|
||||
</div>
|
||||
<!-- 添加背景色控制区域 -->
|
||||
<div class="background-controls">
|
||||
<div class="bg-header">背景色</div>
|
||||
<div class="bg-header">{{ $t('Canvas.BGColor') }}</div>
|
||||
<div class="bg-options">
|
||||
<div class="style-btn color-btn" @click="openColorPicker('background')">
|
||||
<div
|
||||
@@ -207,7 +209,7 @@
|
||||
:class="{ active: hasTransparentBg }"
|
||||
@click="setTransparentBackground"
|
||||
>
|
||||
透明
|
||||
{{ $t('Canvas.BGOpacity') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -218,7 +220,7 @@
|
||||
<div v-if="showColorPicker" class="color-picker-modal">
|
||||
<div class="color-picker-container">
|
||||
<div class="color-picker-header">
|
||||
<span>{{ colorPickerMode === "text" ? "选择文字颜色" : "选择背景颜色" }}</span>
|
||||
<span>{{ colorPickerMode === "text" ? $t('Canvas.SelectTextColor') : $t('Canvas.SelectBGColor') }}</span>
|
||||
<div class="close-color-picker" @click="closeColorPicker">×</div>
|
||||
</div>
|
||||
<div class="color-picker-content">
|
||||
@@ -232,7 +234,7 @@
|
||||
@click="selectPresetColor(color)"
|
||||
></div>
|
||||
</div>
|
||||
<div class="confirm-color-btn" @click="confirmColorSelection">确定</div>
|
||||
<div class="confirm-color-btn" @click="confirmColorSelection">{{ $t('Canvas.ok') }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -349,6 +351,11 @@ export default {
|
||||
return Math.round(lineHeight.value * fontSize.value);
|
||||
});
|
||||
|
||||
//打开隐藏操作面板
|
||||
const closePanel = ref(false)
|
||||
const setClosePanel = ()=>{
|
||||
closePanel.value = !closePanel.value
|
||||
}
|
||||
// 方法
|
||||
const showEditor = (event) => {
|
||||
const { textObject: eventTextObject, layer: eventLayer } = event.detail;
|
||||
@@ -362,6 +369,8 @@ export default {
|
||||
|
||||
// 显示面板
|
||||
visible.value = true;
|
||||
closePanel.value = true
|
||||
|
||||
};
|
||||
|
||||
const close = () => {
|
||||
@@ -626,6 +635,8 @@ export default {
|
||||
textColor,
|
||||
backgroundColor,
|
||||
opacity,
|
||||
setClosePanel,
|
||||
closePanel,
|
||||
hasTransparentBg,
|
||||
fontWeight,
|
||||
fontStyle,
|
||||
@@ -692,6 +703,25 @@ export default {
|
||||
border-top: 1px solid rgba(0, 0, 0, 0.05);
|
||||
border-bottom: 1px solid rgba(0, 0, 0, 0.05);
|
||||
overflow: hidden;
|
||||
&.active{
|
||||
transform: translateY(100%);
|
||||
> .btn{
|
||||
> i{
|
||||
transform: rotate(90deg);
|
||||
}
|
||||
}
|
||||
}
|
||||
> .btn{
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
cursor: pointer;
|
||||
|
||||
> i{
|
||||
font-size: 1.4rem;
|
||||
display: block;
|
||||
transform: rotate(270deg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.text-editor-panel.is-active {
|
||||
|
||||
@@ -290,7 +290,7 @@ export default defineComponent({
|
||||
color,
|
||||
designType:(newData && detailData.currentDetailType == 'sketch' && isCurrent)?newData.designType:list[i].designType,
|
||||
id:(newData && detailData.currentDetailType == 'sketch' && isCurrent)?newData.id:list[i].id,
|
||||
// maskMinioUrl:'',
|
||||
maskMinioUrl:list[i]?.maskMinioUrl,
|
||||
// maskUrl:'',
|
||||
maskUrl:list[i].maskUrl,
|
||||
offset,
|
||||
@@ -333,7 +333,7 @@ export default defineComponent({
|
||||
modelType:(detailData.currentDetailType == 'models' && detailData.designDetail.newModel)?detailData.designDetail.newModel.type:detailData.designDetail.oldModel?detailData.designDetail.oldModel.type:'',
|
||||
timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone,
|
||||
processId:userDetail.value.userId,
|
||||
probjectId:store.state.Workspace.probjects,
|
||||
probjectId:store.state.Workspace.probjects.id,
|
||||
}
|
||||
detailData.loadingShow = true
|
||||
Https.axiosPost(Https.httpUrls.designSingle, data).then((rv)=>{
|
||||
@@ -363,7 +363,7 @@ export default defineComponent({
|
||||
modelType:(detailData.currentDetailType == 'models' && detailData.designDetail.newModel)?detailData.designDetail.newModel.type:detailData.designDetail.oldModel?detailData.designDetail.oldModel.type:'',
|
||||
timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone,
|
||||
processId:userDetail.value.userId,
|
||||
probjectId:store.state.Workspace.probjects,
|
||||
probjectId:store.state.Workspace.probjects.id,
|
||||
}
|
||||
detailData.loadingShow = true
|
||||
Https.axiosPost(Https.httpUrls.designSingle, data).then((rv)=>{
|
||||
|
||||
@@ -221,9 +221,10 @@ export default defineComponent({
|
||||
const index = detailData.designDetail.clothes.findIndex(item => item.id === detailData.selectDetail.id);
|
||||
console.log(index,detailData.selectDetail.id)
|
||||
await new Promise<void>((resolve, reject) => {
|
||||
let canvasJSON = detailDom.editCanvas.getJSON()
|
||||
if(!detailDom?.editCanvas)return resolve()
|
||||
let canvasJSON = detailDom?.editCanvas?.getJSON()
|
||||
let canvasData = JSON.parse(canvasJSON)
|
||||
if(!canvasData)return
|
||||
if(!canvasData)return resolve()
|
||||
canvasData.canvas.objects.forEach((objectsItem:any) => {
|
||||
if(objectsItem.type == 'image')objectsItem.minioUrl = getMinioUrl(objectsItem.src)
|
||||
});
|
||||
|
||||
@@ -943,6 +943,8 @@ export default defineComponent({
|
||||
width: auto;
|
||||
height: auto;
|
||||
min-width: 60%;
|
||||
overflow-y: auto;
|
||||
overflow-x: hidden;
|
||||
// max-height: 80%;
|
||||
position: relative;
|
||||
>img{
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
<template>
|
||||
<div class="modelindex">
|
||||
<div class="modelindex_left">
|
||||
<div class="back" v-show="isEditPattern.value">
|
||||
<i class="fi fi-br-angle-left" @click="setBack"></i>
|
||||
</div>
|
||||
<modelNav @canvasReload="()=>$emit('canvasReload')" @addSketch="()=>$emit('addSketch')" @deleteItem="deleteItem"></modelNav>
|
||||
</div>
|
||||
<div class="modelindex_right">
|
||||
@@ -112,6 +115,9 @@ export default defineComponent({
|
||||
|
||||
},1000)
|
||||
}
|
||||
const setBack = ()=>{
|
||||
emit('detailEdit','edit')
|
||||
}
|
||||
onMounted(()=>{
|
||||
window.addEventListener('resize', handleResize);
|
||||
})
|
||||
@@ -128,6 +134,7 @@ export default defineComponent({
|
||||
deleteItem,
|
||||
oppositeRevocation,
|
||||
mousedownDesignImg,
|
||||
setBack,
|
||||
}
|
||||
},
|
||||
|
||||
@@ -196,6 +203,30 @@ export default defineComponent({
|
||||
}
|
||||
.modelindex_left{
|
||||
justify-content: center;
|
||||
position: relative;
|
||||
> .back{
|
||||
position: absolute;
|
||||
font-size: 3.6rem;
|
||||
font-weight: 500;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 1.2rem;
|
||||
top: 8rem;
|
||||
left: 0;
|
||||
> i {
|
||||
margin-right: 2.8rem;
|
||||
font-size: 2rem;
|
||||
display: flex;
|
||||
cursor: pointer;
|
||||
align-items: center;
|
||||
width: 4.6rem;
|
||||
height: 4.6rem;
|
||||
border-radius: 1.2rem;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
border: 1px solid #D8DADC;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div class="modelNavBox">
|
||||
<div class="modelNavBox" :class="{'modelNavBox_active':designDetail.clothes.length == 5}">
|
||||
<div class="modelNav" ref="modelNav" :style="{height:prentHeight}">
|
||||
<div class="modelNav_item item"
|
||||
v-for="item,index in designDetail.clothes"
|
||||
@@ -259,6 +259,9 @@ export default defineComponent({
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
.modelNavBox{
|
||||
&.modelNavBox_active{
|
||||
margin-top: 12rem;
|
||||
}
|
||||
.modelNav_item{
|
||||
width: 12rem;
|
||||
height: 12rem;
|
||||
|
||||
@@ -187,8 +187,8 @@
|
||||
v-show="item?.imgUrl"
|
||||
class="delete_like_file_block left1"
|
||||
>
|
||||
<i v-if="!item.like" class="fi fi-rr-heart" @click="likeFile(item,'like')"></i>
|
||||
<i v-else class="fi fi-sr-heart" :adminLike="!!item.like" @click.stop="likeFile(item,'noLike')"></i>
|
||||
<i v-if="!item.like" class="fi fi-rr-heart" @click.stop="likeFile(item,'like',index)"></i>
|
||||
<i v-else class="fi fi-sr-heart" :adminLike="!!item.like" @click.stop="likeFile(item,'noLike',index)"></i>
|
||||
</div>
|
||||
<div v-show="item?.imgUrl" class="delete_like_file_block left">
|
||||
<i class="fi fi-bs-expand-arrows-alt" @click.stop="scaleImage(index)"></i>
|
||||
@@ -938,7 +938,7 @@ export default defineComponent({
|
||||
// }
|
||||
// }
|
||||
},
|
||||
likeFile(item:any,str:string){
|
||||
likeFile(item:any,str:string,index:number){
|
||||
if(str == 'like'){
|
||||
let level2Type = ''
|
||||
if(this.upload.level1Type == "Sketchboard"){
|
||||
@@ -960,8 +960,11 @@ export default defineComponent({
|
||||
}
|
||||
).catch(res=>{
|
||||
});
|
||||
this.fileList[index].state = ''
|
||||
this.generageAdd(item)
|
||||
}else{
|
||||
|
||||
this.fileList[index].state = 'delete'
|
||||
this.generageAdd(item)
|
||||
let data = {
|
||||
generateDetailId:item.id,
|
||||
timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
<div class="generalModel_btn" :class="[driver__.driver?'hideEvents':'']">
|
||||
<div class="generalModel_closeIcon" @click.stop="cancelDsign()">
|
||||
<!-- <i class="fi fi-rr-cross-small"></i> -->
|
||||
<svg width="100%" height="100%" viewBox="0 0 46 46" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<svg width="46" height="46" viewBox="0 0 46 46" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="23" cy="23" r="23" fill="white" fill-opacity="0.3"/>
|
||||
<rect x="32.5063" y="12" width="3" height="29" rx="1.5" transform="rotate(45 32.5063 12)" fill="white"/>
|
||||
<rect x="34.6274" y="32.5059" width="3" height="29" rx="1.5" transform="rotate(135 34.6274 32.5059)" fill="white"/>
|
||||
|
||||
@@ -524,7 +524,7 @@ export default defineComponent({
|
||||
message.info(t('ProductImg.jsContent2'))
|
||||
return
|
||||
}
|
||||
let imageStrength = productImgData.similarity == 100? 95 :productImgData.similarity
|
||||
let imageStrength = 70 / 100 * productImgData.similarity
|
||||
let data:any ={
|
||||
prompt:productImgData.searchName[productimgMenu.value.value],
|
||||
toProductImageVOList:selectArr,
|
||||
@@ -606,7 +606,16 @@ export default defineComponent({
|
||||
// productImgData.generateList[productimgMenu.value.value] = []
|
||||
// }
|
||||
let index = productImgData.generateList.findIndex((obj:any) => obj.taskId === element.taskId);
|
||||
productImgData.generateList[index] = element
|
||||
console.log(123123)
|
||||
productImgData.generateList[index] = {
|
||||
...element,
|
||||
prompt:productImgData.searchName[productimgMenu.value.value],
|
||||
modelName:productimgMenu.value.value,
|
||||
sourceUrl:productImgData.selectGenerate?.sourceUrl || productImgData.selectGenerate?.productImage,
|
||||
status:null,
|
||||
resultType:productImgData.selectGenerate?.resultType,
|
||||
}
|
||||
console.log(productImgData.generateList)
|
||||
// productImgData.generateList[productimgMenu.value.value].unshift(element)
|
||||
}else if(element.status == 'Fail'){
|
||||
let index = productImgData.generateList.findIndex((obj:any) => obj.taskId === element.taskId);
|
||||
|
||||
@@ -34,9 +34,10 @@
|
||||
<div v-show="scaleImageList[scaleImageIndex]?.resultType == 'Relight'" class="productImg_content_item_title productImg_content_item_title_similarity">
|
||||
<span>{{$t('ProductImg.SelectionFunction')}}</span>
|
||||
</div>
|
||||
<div v-show="scaleImageList[scaleImageIndex]?.resultType == 'Relight'" class="productImg_content_item_Direction generalModel_state_item" style="margin-bottom: 1rem;">
|
||||
<!-- 暂时去掉 -->
|
||||
<!-- <div v-show="scaleImageList[scaleImageIndex]?.resultType == 'Relight'" class="productImg_content_item_Direction generalModel_state_item" style="margin-bottom: 1rem;">
|
||||
<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="scaleImageList[scaleImageIndex]?.resultType == 'ToProductImage' && speedData.value != 'flux'" class="productImg_content_item_title productImg_content_item_title_similarity">
|
||||
<span>{{$t('ProductImg.Similarity')}}</span>
|
||||
</div>
|
||||
@@ -46,7 +47,7 @@
|
||||
:tooltipVisible="false"
|
||||
:step="5"
|
||||
@afterChange="()=>{}"
|
||||
:max="70"
|
||||
:max="100"
|
||||
>
|
||||
</a-slider>
|
||||
<input style="margin-left: 2rem;" type="number" readonly v-model="productimgSimilarity">
|
||||
@@ -295,7 +296,8 @@ export default defineComponent({
|
||||
elementId:scaleImageList.value[scaleImageIndex.value].elementId,
|
||||
elementType:scaleImageList.value[scaleImageIndex.value].elementType,
|
||||
}
|
||||
let imageStrength = productimg.productimgSimilarity == 100? 95 :productimg.productimgSimilarity
|
||||
// let imageStrength = productimg.productimgSimilarity == 100? 95 :productimg.productimgSimilarity
|
||||
let imageStrength = 70 / 100 * productimg.productimgSimilarity
|
||||
let data:any ={
|
||||
direction:productimg.productimgRelightDirection,
|
||||
prompt:productimg.productimgSearchName,
|
||||
@@ -527,22 +529,20 @@ export default defineComponent({
|
||||
},
|
||||
methods: {
|
||||
setUserData(item:any){
|
||||
console.log(item)
|
||||
this.productimgSearchName = item.prompt
|
||||
this.productimgSimilarity = 100 - item.imageStrength * 100
|
||||
this.productimgRelightDirection = item.direction
|
||||
console.log(this.productimgSearchName)
|
||||
let list = this.speedTypeList.toPorductImg
|
||||
if(list.length == 0)return
|
||||
// let list = this.speedTypeList.toPorductImg
|
||||
if(this.speedList.length == 0)return
|
||||
let modelName = ''
|
||||
if(!item.modelName){
|
||||
modelName = ''
|
||||
}else{
|
||||
modelName = item.modelName
|
||||
}
|
||||
list.forEach((item:any)=>{
|
||||
this.speedList.forEach((item:any)=>{
|
||||
if(modelName == item.value){
|
||||
this.speedData = item
|
||||
this.speedData = {...item}
|
||||
}
|
||||
})
|
||||
},
|
||||
@@ -562,7 +562,7 @@ export default defineComponent({
|
||||
}else{
|
||||
this.speedList = this.speedTypeList.toPorductImg
|
||||
}
|
||||
this.speedData = JSON.parse(JSON.stringify(this.speedList[0]))
|
||||
// this.speedData = JSON.parse(JSON.stringify(this.speedList[0]))
|
||||
document.addEventListener('keydown',this.setKeydown)
|
||||
this.setUserData(list[index])
|
||||
this.$nextTick()
|
||||
|
||||
@@ -41,10 +41,33 @@
|
||||
<i v-else class="fi fi-br-check" @click="editChek('brandSlogan')"></i>
|
||||
</div>
|
||||
</div>
|
||||
<div style="flex:1;text-align: right;" v-show="fall?.list?.length > 0">
|
||||
<div class="gallery_btn" v-show="schedule.num == 1||(schedule.num == 0 && !schedule.state)" @click="compute">{{$t('brandDNA.Compute')}}</div>
|
||||
<div v-show="schedule.num != 1">
|
||||
<a-progress style="width:20rem;" :percent="schedule.num * 100" size="small" :showInfo="false" />
|
||||
<div class="compute" style="flex:1;text-align: right;" v-show="fall?.list?.length > 0">
|
||||
<!-- <div @click="setProgress(50)">123123123</div> -->
|
||||
<div class="gallery_btn" @click="compute" :class="{'loading':!(schedule.num == 1||(schedule.num == 0 && !schedule.state))}">
|
||||
{{$t('brandDNA.Compute')}}
|
||||
<svg width="15" height="15" viewBox="0 0 100 100" v-show="!(schedule.num == 1||(schedule.num == 0 && !schedule.state))">
|
||||
<circle
|
||||
cx="50"
|
||||
cy="50"
|
||||
r="40"
|
||||
fill="none"
|
||||
stroke="#1a1a1a"
|
||||
stroke-width="15"
|
||||
/>
|
||||
|
||||
<circle
|
||||
cx="50"
|
||||
cy="50"
|
||||
r="40"
|
||||
fill="none"
|
||||
stroke="#fff"
|
||||
stroke-width="15"
|
||||
stroke-linecap="round"
|
||||
:stroke-dasharray="circumference"
|
||||
:stroke-dashoffset="dashOffset"
|
||||
transform="rotate(-90 50 50)"
|
||||
/>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -335,7 +358,9 @@ export default defineComponent({
|
||||
Https.axiosPost(Https.httpUrls.getInitializeProgress,{brandId:data.detail.id}).then((res:any)=>{
|
||||
data.schedule.num = res.percent
|
||||
data.schedule.state = res.analyzed
|
||||
if(res.percent == 1 || !res.analyzed){return clearTimeout(data.getProgressTime)}
|
||||
if(res.percent == 1 || !res.analyzed){
|
||||
return clearTimeout(data.getProgressTime)
|
||||
}
|
||||
data.getProgressTime = setTimeout(()=>{
|
||||
getProgress()
|
||||
},5000)
|
||||
@@ -406,8 +431,27 @@ export default defineComponent({
|
||||
data.selectImgList.push(item.id)
|
||||
}
|
||||
}
|
||||
const progress = ref(50);
|
||||
const radius = 40; // 半径调整
|
||||
const strokeWidth = 15; // 描边加粗以便在小尺寸下可见
|
||||
const circumference = computed(() => {
|
||||
return 2 * Math.PI * radius;
|
||||
});
|
||||
const dashOffset = computed(() => {
|
||||
const progressDecimal = data.schedule.num / 100;
|
||||
return circumference.value * (1 - progressDecimal);
|
||||
});
|
||||
const adjustProgress = (amount) => {
|
||||
data.schedule.num = Math.min(Math.max(data.schedule.num + amount, 0), 100);
|
||||
};
|
||||
|
||||
// 设置特定进度值
|
||||
const setProgress = (value) => {
|
||||
data.schedule.num = value;
|
||||
};
|
||||
onBeforeUnmount(()=>{
|
||||
clearInterval(data.getProgressTime)
|
||||
clearTimeout(data.getProgressTime)
|
||||
})
|
||||
return{
|
||||
...toRefs(dataDom),
|
||||
@@ -425,6 +469,9 @@ export default defineComponent({
|
||||
deleteBatchPic,
|
||||
deleteSinglePic,
|
||||
selectImg,
|
||||
circumference,
|
||||
dashOffset,
|
||||
setProgress,
|
||||
}
|
||||
},
|
||||
directives:{
|
||||
@@ -463,6 +510,25 @@ export default defineComponent({
|
||||
border-bottom: 1px solid #ccc;
|
||||
padding-bottom: 1rem;
|
||||
margin-bottom: 1rem;
|
||||
.compute{
|
||||
> div{
|
||||
position: relative;
|
||||
padding-right: 2rem;
|
||||
}
|
||||
.gallery_btn{
|
||||
&.loading{
|
||||
pointer-events: none;
|
||||
color: #5F5F5F;
|
||||
}
|
||||
}
|
||||
svg{
|
||||
transform: translateY(2.5px);
|
||||
circle{
|
||||
transition: all .3s;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
> .logo{
|
||||
position: relative;
|
||||
margin-right: 3rem;
|
||||
|
||||
@@ -191,11 +191,11 @@ export default defineComponent({
|
||||
//获取列表
|
||||
getCreditsDetailList() {
|
||||
let startTime = '00:00:00'
|
||||
let endTime = '00:00:00'
|
||||
let startDate: any = this.rangePickerValue[0]
|
||||
let endTime = '23:59:59'
|
||||
let startDate: any = this.rangePickerValue?.[0]
|
||||
? this.rangePickerValue[0]+' '+startTime
|
||||
: "";
|
||||
let endDate: any = this.rangePickerValue[1]
|
||||
let endDate: any = this.rangePickerValue?.[1]
|
||||
? this.rangePickerValue[1]+' '+endTime
|
||||
: "";
|
||||
let data = {
|
||||
|
||||
@@ -130,12 +130,13 @@ export default defineComponent({
|
||||
let value:any = {
|
||||
projectId:data.selectObject.id,
|
||||
}
|
||||
console.log(str)
|
||||
store.dispatch('getProjectData',str).then((data)=>{
|
||||
if(!data[str])return
|
||||
value[str] = data[str]
|
||||
if(!value[str] || value[str]?.length == 0)return
|
||||
// if(!value[str] || value[str]?.length == 0)return
|
||||
Https.axiosPost(Https.httpUrls.saveModuleContent, value).then((rv)=>{
|
||||
if(rv?.boundingBox)store.commit('setShowSketchboard',rv.boundingBox)
|
||||
if(str == 'sketchBoard')store.commit('setShowSketchboard',rv.boundingBox)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
@@ -154,8 +154,8 @@
|
||||
</div>
|
||||
<div class="modal_accomplish">
|
||||
<div class="modal_img">
|
||||
<div v-for="item,index in sketchboardList" :key="item" class="modal_imgItem" :class="[driver__.driver?'showEvents':'']" >
|
||||
<img v-lazy="item.imgUrl">
|
||||
<div v-for="item,index in sketchboardList" :key="item.id" class="modal_imgItem" :class="[driver__.driver?'showEvents':'']" >
|
||||
<img v-lazy="item.imgUrl" :key="item.imgUrl">
|
||||
<sketchCategory :disignTypeList="sketchCatecoryList" :generateList="sketchboardList" :isSpread="true" :item="item" :driver__="driver__.driver"></sketchCategory>
|
||||
<!-- 在sketch 和print暂时关闭like -->
|
||||
<!-- <div
|
||||
@@ -173,7 +173,7 @@
|
||||
</label>
|
||||
</div>
|
||||
<div class="moreBox" @click.stop>
|
||||
<more level1Type="Sketchboard" :moreList="['edit','down','enlargement','delete']" :item="item" :index="index" @deleteFile="deleteFile" @scaleImage="scaleImage"></more>
|
||||
<more level1Type="Sketchboard" :moreList="['edit','down','enlargement','delete']" :item="item" :list="sketchboardList" :index="index" @deleteFile="deleteFile" @scaleImage="scaleImage"></more>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -107,7 +107,6 @@ export default defineComponent({
|
||||
originalIdSource:props.item.resData.designType,
|
||||
type:props.level1Type,
|
||||
}
|
||||
console.log(data)
|
||||
Https.axiosPost(Https.httpUrls.modifySketch, data).then(
|
||||
(rv) => {
|
||||
// rv.imgUrl = rv.url
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
v-model:value="productimgSimilarity"
|
||||
:tooltipVisible="false"
|
||||
:step="5"
|
||||
:max="70"
|
||||
:max="100"
|
||||
@afterChange="()=>{}"
|
||||
>
|
||||
</a-slider>
|
||||
@@ -354,7 +354,8 @@ setup(props:any,{emit}) {
|
||||
}
|
||||
let getPrductimg = async ()=>{
|
||||
let obj = getData()
|
||||
let imageStrength = productimg.productimgSimilarity == 100? 95 :productimg.productimgSimilarity
|
||||
// let imageStrength = productimg.productimgSimilarity == 100? 95 :productimg.productimgSimilarity
|
||||
let imageStrength = 70 / 100 * productimg.productimgSimilarity
|
||||
let data:any ={
|
||||
direction:productimg.productimgRelightDirection,
|
||||
prompt:productimg.productimgSearchName,
|
||||
|
||||
@@ -173,7 +173,7 @@
|
||||
@mouseenter.stop="gifPlay($event,design)"
|
||||
@mouseleave.stop="gifPause($event,design)" >
|
||||
<!-- <div :style="{'background-image': `url(${design?.designOutfitUrl||design?.url})`}" class="content_img" v-if="design?.designOutfitUrl||design?.url" :key="design?.designOutfitUrl" designType="like" :index="index"></div> -->
|
||||
<img class="content_img" v-if="design?.designOutfitUrl||design?.url" :src="design?.designOutfitUrl||design?.url"
|
||||
<img class="content_img" v-else-if="design?.designOutfitUrl||design?.url" :src="design?.designOutfitUrl||design?.url"
|
||||
:key="design?.status" designType="like" :index="index"/>
|
||||
<a-spin v-show="!design?.designOutfitUrl && !design?.url && !design?.firstFrameUrl" size="large"></a-spin>
|
||||
|
||||
@@ -910,6 +910,7 @@ export default defineComponent({
|
||||
}
|
||||
const addGenerateImg = async (data:any)=>{
|
||||
if(!data.id)return
|
||||
console.log(data)
|
||||
await nextTick().then(()=>{
|
||||
designData.isUnfold = true
|
||||
uploadLikeDom()
|
||||
@@ -1035,6 +1036,11 @@ export default defineComponent({
|
||||
designData.selectLikeDesign[index].elementType = element.elementType
|
||||
designData.selectLikeDesign[index].elementId = element.elementId
|
||||
designData.selectLikeDesign[index].id = element.id
|
||||
if(element?.videoUrl){
|
||||
designData.selectLikeDesign[index].firstFrameUrl = element.firstFrameUrl
|
||||
designData.selectLikeDesign[index].videoUrl = element.videoUrl
|
||||
designData.selectLikeDesign[index].gifUrl = element.gifUrl
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -1047,6 +1053,11 @@ export default defineComponent({
|
||||
likeItem.childList[index].elementType = element.elementType
|
||||
likeItem.childList[index].elementId = element.elementId
|
||||
likeItem.childList[index].id = element.id
|
||||
if(element?.videoUrl){
|
||||
likeItem.childList[index].id.firstFrameUrl = element.firstFrameUrl
|
||||
likeItem.childList[index].id.videoUrl = element.videoUrl
|
||||
likeItem.childList[index].id.gifUrl = element.gifUrl
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -1203,9 +1214,9 @@ export default defineComponent({
|
||||
state = false
|
||||
Https.axiosPost(url, data).then(
|
||||
(rv) => {
|
||||
if(type == 'PoseTransfer'){
|
||||
rv = [rv]
|
||||
}
|
||||
// if(type == 'PoseTransfer'){
|
||||
// rv = [rv]
|
||||
// }
|
||||
state = true
|
||||
rv.forEach((element:any) => {
|
||||
if(element?.status == 'Success'){
|
||||
|
||||
@@ -127,6 +127,9 @@ export default defineComponent({
|
||||
data.libraryList = item.modelList
|
||||
}
|
||||
});
|
||||
if(rv.length == 1){
|
||||
data.libraryList = []
|
||||
}
|
||||
if(data.libraryList?.[0]==null)data.systemUser=true
|
||||
if(!data.systemUser){
|
||||
data.modelList = data.libraryList
|
||||
@@ -396,6 +399,7 @@ export default defineComponent({
|
||||
// max-height: calc(100% - 20rem);
|
||||
height: 100%;
|
||||
position: relative;
|
||||
flex: 1;
|
||||
> .item{
|
||||
width: 25rem;
|
||||
height: 55rem;
|
||||
@@ -461,9 +465,10 @@ export default defineComponent({
|
||||
position: sticky;
|
||||
flex-shrink: 0;
|
||||
background: #fff;
|
||||
margin: auto 0;
|
||||
// margin: auto 0;
|
||||
> .upload{
|
||||
height: 55rem;
|
||||
height: 100%;
|
||||
// height: 55rem;
|
||||
width: 29rem;
|
||||
border: 1px dashed transparent;
|
||||
background: linear-gradient(#fff, #fff) padding-box, repeating-linear-gradient(-45deg, #fff 0, #fff 0.3em, #000 0, #000 0.6em);
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
:isState="openType =='relight'"
|
||||
v-if="openType == 'relight'"
|
||||
></toProductRelight>
|
||||
<poseTransfer v-if="openType == 'poseTransfer'" :source="source" :isDesignPage="true" @setLike="designLike" ref="poseTransfer"></poseTransfer>
|
||||
<poseTransfer v-if="openType == 'poseTransfer'" @unLike="unLike" :source="source" :isDesignPage="true" @setLike="designLike" ref="poseTransfer"></poseTransfer>
|
||||
<div v-if="openType == 'editCanvas'" class="canvasBox" :class="{editCanvas:openType == 'editCanvas'}">
|
||||
<div class="canvas" ref="canvasBox">
|
||||
<editCanvas
|
||||
|
||||
@@ -52,6 +52,7 @@ export default defineComponent({
|
||||
chatData:null as any,
|
||||
dataLoad:true as any,
|
||||
})
|
||||
console.log(data.selectObject)
|
||||
let settingGetHistory:any = inject('settingGetHistory')
|
||||
const setIsShowMark = (boolean:boolean)=>{
|
||||
data.isShowMark = boolean
|
||||
@@ -62,6 +63,12 @@ export default defineComponent({
|
||||
newPorject:null as any,
|
||||
chatDom:null as any,
|
||||
})
|
||||
watch(() => data.selectObject.styleId,()=>{
|
||||
if((data.selectObject?.id == route.query?.history) && route.query?.history){
|
||||
getHistory(route.query.history)
|
||||
}
|
||||
})
|
||||
|
||||
watch(() => route.query,
|
||||
(query:any, oldQuery:any) => {
|
||||
data.routeQuery = query
|
||||
|
||||
@@ -90,12 +90,15 @@
|
||||
<div v-show="isGenerate && !remGenerate" class="generage_btn started_btn">
|
||||
<i class="fi fi-br-loading"></i>
|
||||
</div>
|
||||
<div v-show="remGenerate" @click="removeGenerate" class="generage_btn started_btn">
|
||||
<div v-show="remGenerate" @click="setRemoveGenerate" class="generage_btn started_btn">
|
||||
{{$t('Generate.Close')}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="likeBox">
|
||||
<!-- {{ locale }}
|
||||
<img src="@/assets/images/homePage/toolsGuide/productCN.png" alt="">
|
||||
<img src="@/assets/images/homePage/toolsGuide/productEN.png" alt=""> -->
|
||||
<div class="element">
|
||||
<div class="title"><i class="fi fi-rs-comments"></i><span>{{$t('poseTransfer.LikeVideo')}}</span></div>
|
||||
<div class="content">
|
||||
@@ -148,7 +151,7 @@ export default defineComponent({
|
||||
},
|
||||
emit:['unLike'],
|
||||
setup(props,{emit}) {
|
||||
const {t} = useI18n()
|
||||
const {t,locale} = useI18n()
|
||||
const store = useStore();
|
||||
const data:any = reactive({
|
||||
button:{
|
||||
@@ -302,7 +305,7 @@ export default defineComponent({
|
||||
})
|
||||
}
|
||||
const setGenerate = (dataList:any)=>{
|
||||
let list:any = dataList
|
||||
let list:any = [dataList]
|
||||
data.waitList = list
|
||||
let state = true
|
||||
data.generateTime = setInterval(()=>{
|
||||
@@ -347,7 +350,7 @@ export default defineComponent({
|
||||
});
|
||||
},10000)
|
||||
}
|
||||
const removeGenerate = ()=>{
|
||||
const setRemoveGenerate = ()=>{
|
||||
//取消操作
|
||||
data.isGenerate = false
|
||||
data.remGenerate = false
|
||||
@@ -355,7 +358,7 @@ export default defineComponent({
|
||||
if(data.waitList){
|
||||
// let str = data.waitList.map((obj:any) => obj.taskId).join(',');
|
||||
let value = {
|
||||
uniqueId:data.waitList,
|
||||
uniqueId:data.waitList[0],
|
||||
userId:store.state.UserHabit.userDetail.userId,
|
||||
timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone,
|
||||
type: 'PoseTransferation'
|
||||
@@ -476,13 +479,18 @@ export default defineComponent({
|
||||
if(props.isDesignPage){
|
||||
emit('unLike',item)
|
||||
}
|
||||
console.log(props.isDesignPage)
|
||||
}
|
||||
Https.axiosPost(Https.httpUrls.poselikeOrDisike, {},{params:value}).then(
|
||||
(rv) => {
|
||||
if(str == 'like'){
|
||||
item.newLike = true
|
||||
let value = {
|
||||
likedList:[item],
|
||||
likedList:[{
|
||||
...item,
|
||||
sort:rv.sort,
|
||||
parentId:rv.parentId,
|
||||
}],
|
||||
str:'add',
|
||||
index:-1,
|
||||
}
|
||||
@@ -490,7 +498,9 @@ export default defineComponent({
|
||||
data.noLikeList.splice(index,1)
|
||||
}else{
|
||||
let value = {
|
||||
likedList:[item],
|
||||
likedList:[{
|
||||
...item,
|
||||
}],
|
||||
str:'splice',
|
||||
index:index,
|
||||
}
|
||||
@@ -539,13 +549,11 @@ export default defineComponent({
|
||||
watch(()=>data.noLikeList.length,(newVal,oldVal)=>{
|
||||
nextTick(()=>{
|
||||
let list = store.state.HomeStoreModule.poseTransfer.list
|
||||
let taskIdList = list.filter((item:any)=>!item.videoUrl)
|
||||
console.log(taskIdList)
|
||||
let taskIdList = list.filter((item:any)=>!item.videoUrl)[0]
|
||||
if(taskIdList.length > 0){
|
||||
data.isGenerate = true
|
||||
data.remGenerate = true
|
||||
console.log(taskIdList)
|
||||
setGenerate([taskIdList[0].taskId])
|
||||
setGenerate(taskIdList[0].taskId)
|
||||
}
|
||||
})
|
||||
},{immediate: true })
|
||||
@@ -569,13 +577,14 @@ export default defineComponent({
|
||||
getUploadUrl,
|
||||
beforeUpload,
|
||||
fileUploadChange,
|
||||
removeGenerate,
|
||||
setRemoveGenerate,
|
||||
likeSetBtn,
|
||||
noLikeSetBtn,
|
||||
selectPose,
|
||||
openSpeed,
|
||||
setSpeed,
|
||||
setUploadDelete,
|
||||
locale,
|
||||
}
|
||||
},
|
||||
directives:{
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
@afterChange="setSimilarity"
|
||||
:tooltipVisible="false"
|
||||
:step="5"
|
||||
:max="70"
|
||||
:max="100"
|
||||
>
|
||||
</a-slider>
|
||||
<input style="margin-left: 2rem;" type="number" readonly v-model="similarity">
|
||||
@@ -78,9 +78,10 @@
|
||||
<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">
|
||||
<!-- 暂时去掉 -->
|
||||
<!-- <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="productimgMenu.value == 'Relight' && speedData.value != 'flux'" class="productImg_content_item_title productImg_content_item_title_similarity">
|
||||
<span>{{$t('ProductImg.RelightDirection')}}</span>
|
||||
</div>
|
||||
@@ -145,6 +146,7 @@
|
||||
|
||||
|
||||
<div class="productImg_right">
|
||||
|
||||
<div class="productImg_right_item_box generalScroll">
|
||||
<div class="content_header_left">
|
||||
<i class="fi fi-rs-comments"></i><span class="content_header_des">
|
||||
@@ -152,6 +154,14 @@
|
||||
</span>
|
||||
</div>
|
||||
<div class="content">
|
||||
<img
|
||||
class="guide"
|
||||
v-if="locale == 'ENGLISH' && likeList[productimgMenu.value] == 0 && generateList[productimgMenu.value] == 0"
|
||||
:src="'/src/assets/images/homePage/toolsGuide/' + (productimgMenu.value == 'ToProductImage'?'productEN':'relightEN') + '.png'" alt="">
|
||||
<img
|
||||
class="guide"
|
||||
v-else-if="likeList[productimgMenu.value] == 0 && generateList[productimgMenu.value] == 0"
|
||||
:src="'/src/assets/images/homePage/toolsGuide/' + (productimgMenu.value == 'ToProductImage'?'productCN':'relightCN') + '.png'" alt="">
|
||||
<generalDrag ref="generalDragLeft" :type="productimgMenu.value" :isCopy="!isDesignPage" @setBtn="selectSetBtn" :isDelete="false" :isLike="true" :list="likeList[productimgMenu.value]"></generalDrag>
|
||||
</div>
|
||||
<!-- </div> -->
|
||||
@@ -243,7 +253,7 @@ export default defineComponent({
|
||||
let userDetail:any= computed(()=>{
|
||||
return store.state.UserHabit.userDetail
|
||||
})
|
||||
const {t} = useI18n()
|
||||
const {t,locale} = useI18n()
|
||||
const upload:any = ref({
|
||||
projectId:computed(()=>store.state.Workspace.probjects.id)
|
||||
})
|
||||
@@ -563,7 +573,7 @@ export default defineComponent({
|
||||
message.info(t('ProductImg.jsContent2'))
|
||||
return
|
||||
}
|
||||
let imageStrength = productImgData.similarity == 100? 95 :productImgData.similarity
|
||||
let imageStrength = 70 / 100 * productImgData.similarity
|
||||
let data:any ={
|
||||
prompt:productImgData.searchName[props.productimgMenu.value],
|
||||
toProductImageVOList:selectArr,
|
||||
@@ -644,7 +654,10 @@ export default defineComponent({
|
||||
if(element.status == 'Success'){
|
||||
element.imgUrl = element.url
|
||||
let index = productImgData.generateList[props.productimgMenu.value].findIndex((obj:any) => obj.taskId === element.taskId);
|
||||
productImgData.generateList[props.productimgMenu.value][index] = element
|
||||
productImgData.generateList[props.productimgMenu.value][index] = {
|
||||
...element,
|
||||
modelName:speed.speedData.value,
|
||||
}
|
||||
// productImgData.generateList[props.productimgMenu.value].unshift(element)
|
||||
data = data.filter((item:any) => item !== element.taskId);
|
||||
}else if(element.status == 'Fail'){
|
||||
@@ -899,6 +912,7 @@ export default defineComponent({
|
||||
ifMaximumLength,
|
||||
openSpeed,
|
||||
setSpeed,
|
||||
locale,
|
||||
};
|
||||
},
|
||||
directives:{
|
||||
@@ -1285,6 +1299,15 @@ export default defineComponent({
|
||||
position: relative;
|
||||
flex: 1;
|
||||
overflow: hidden;
|
||||
.guide{
|
||||
position: absolute;
|
||||
width: 50rem;
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
transform: translate(-50%,-50%);
|
||||
max-height: 100%;
|
||||
object-fit: contain;
|
||||
}
|
||||
}
|
||||
> .btnLeft,> .btnRight{
|
||||
position: absolute;
|
||||
|
||||
@@ -280,13 +280,18 @@ methods: {
|
||||
}
|
||||
}
|
||||
.habitSetStyle_ok{
|
||||
width: 60%;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
margin: 0 auto;
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
justify-content: flex-end;
|
||||
>div{
|
||||
width: 40%;
|
||||
width: 12rem;
|
||||
line-height: 6rem;
|
||||
text-align: center;
|
||||
border-radius: 3rem;
|
||||
height: auto;
|
||||
margin-left: 2rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user