moodboard改为删除任意元素就删掉布局的图片 画布新加icon 链接到用户指引 调整detial页面布局 pose上传图片bug

This commit is contained in:
X1627315083
2025-09-23 13:45:11 +08:00
parent 21f569a0ac
commit 29a68c2481
19 changed files with 74 additions and 36 deletions

View File

@@ -18,7 +18,7 @@ const emit = defineEmits([
"undo-redo-status-changed",
"trigger-library"
]);
const {t} = useI18n()
const {t,locale} = useI18n()
const props = defineProps({
activeTool: String,
minimapEnabled: {
@@ -166,6 +166,16 @@ const normalToolsList = ref([
icon: { name: "CFont", size: "20" },
class: "text-btn",
},
{
id: "help",
title: t("Canvas.help"),
action: () => openTutorial(),
icon: { name: "CHelp", size: "30" },
class: "text-btn",
style: {
'margin-top': 'auto',
},
},
]);
// 红绿图模式工具列表
@@ -244,6 +254,14 @@ function addText() {
emit("add-text");
}
function openTutorial() {
if(locale == 'ENGLISH'){
window.open('https://aida-user-manual.super.site/specific-scenarios/freely-sketching-in-canvas', '_blank');
}else{
window.open('https://aida-user-manual-chinese.super.site/%e4%bd%bf%e7%94%a8%e7%94%bb%e5%b8%83%e8%bf%9b%e8%a1%8c%e7%bc%96%e8%be%91 ', '_blank');
}
}
function undo() {
if (!canUndo.value) return;
undoFun();

View File

@@ -357,7 +357,7 @@ export default defineComponent({
designSingleItemDTOList:clothes,
isPreview:true,
// ifSubmit:designItemDetail.isPreview,
gender:workspace?.sex == 'Male'?1:0,
gender:workspace?.sex,
sketchString:'',
modelId:(detailData.currentDetailType == 'models' && detailData.designDetail.newModel)?detailData.designDetail.newModel.id:detailData.designDetail.oldModel?detailData.designDetail.oldModel.id:'',
modelType:(detailData.currentDetailType == 'models' && detailData.designDetail.newModel)?detailData.designDetail.newModel.type:detailData.designDetail.oldModel?detailData.designDetail.oldModel.type:'',
@@ -567,15 +567,17 @@ export default defineComponent({
height: 100%;
overflow: hidden;
&.detailLeft{
width: 34rem;
width: 30rem;
// width: 34rem;
display: flex;
flex-direction: column;
}
&.isEditPattern{width: 0px;}
&.model{
width: 50rem;
margin: 0 10rem;
width: 45rem;
// width: 50rem;
margin: 0 8rem;
// margin: 0 10rem;
display: flex;
flex-direction: column;
}

View File

@@ -16,14 +16,6 @@
imageMode:'contains',
}"
ref="editCanvas">
<template #customToolsBottom="{ toolButtonProps }">
<!-- 也可以直接使用普通的按钮 -->
<div class="custom-tool-btn" :class="{active:currentView === 'redGreenExample'}" style="margin-top: auto;" @click="editFront('redGreenExample')">
<SvgIcon name="CHelp" size="30" />
<div class="tool-tooltip">{{ $t('Canvas.help') }}</div>
</div>
</template>
</editCanvas>
<!-- <canvasContent ref="canvasContent"></canvasContent> -->
</div>
@@ -35,6 +27,7 @@
ref="editFrontBack">
</editFrontBack> -->
<editCanvas v-if="canvasLoad" :config="canvasConfig"
@canvasInit="canvasInit"
:enabledRedGreenMode="true"
:clothingImageUrl="selectDetail.path"
:redGreenImageUrl="frontBack.front[imgDomIndex].maskUrl"

View File

@@ -70,7 +70,7 @@ export default defineComponent({
</script>
<style lang="less" scoped>
.detailLeft{
width: 34rem;
// width: 34rem;
// width: 100%;
height: 100%;
display: flex;

View File

@@ -179,8 +179,11 @@ export default defineComponent({
> .switch_type_item{
position: relative;
cursor: pointer;
margin-right: 6.5rem;
margin-right: 4rem;
font-size: 1.8rem;
> .detailText{
font-size: 1.6rem;
}
}
> .switch_type_item::before {
position: absolute;

View File

@@ -940,6 +940,9 @@ export default defineComponent({
flex: 1;
overflow: hidden;
position: relative;
margin: 2rem 0;
width: 80%;
align-self: center;
> .mark_loading{
position: absolute;
}

View File

@@ -4,7 +4,7 @@
v-model:visible="cutPicuterModal"
:footer="null"
:get-container="() => $refs.cutPrictureModal"
width="78%"
width="75%"
:maskClosable="false"
:centered="true"
:closable="false"

View File

@@ -502,6 +502,7 @@ export default defineComponent({
if(item.isChecked){
obj.elementId = item.id
obj.elementType = item.type
obj.elementType = obj.elementType == 'Relight'?'ToProductImage':obj.elementType
selectArr.push(JSON.parse(JSON.stringify(obj)))
}
})

View File

@@ -296,6 +296,8 @@ export default defineComponent({
elementId:scaleImageList.value[scaleImageIndex.value].elementId,
elementType:scaleImageList.value[scaleImageIndex.value].elementType,
}
obj.elementType = obj.elementType == 'Relight'?'ToProductImage':obj.elementType
// let imageStrength = productimg.productimgSimilarity == 100? 95 :productimg.productimgSimilarity
let imageStrength = 70 / 100 * productimg.productimgSimilarity
let data:any ={

View File

@@ -126,6 +126,10 @@ export default defineComponent({
})
const cancelDsign = ()=>{
data.showLoadsBrandDNA = false;
data.brandName = ''
data.brandSlogan = ''
data.generateText = ''
data.uploadList = []
}
const upFileUploadChange = (value:any)=>{
let file = value.file;

View File

@@ -3,8 +3,7 @@
<div class="captcha">
<input v-for="(c, index) in getCtData" :key="index"
type="text"
v-model="getCtData[index]" ref="input"
pattern="[0-9]*"
ref="input"
@input="e => {onInput(e.target.value, index)}"
@keydown.delete="e=>{onKeydown(e.target.value, index)}"
@focus="onFocus"

View File

@@ -355,11 +355,11 @@ export default defineComponent({
this.fileList.splice(moodboard,1)
this.store.commit("setMoodboardFile", this.fileList);
}
if(this.store.state.UploadFilesModule.moodboard.length == 0){
// if(this.store.state.UploadFilesModule.moodboard.length == 0){
this.store.commit("clearMoodTemplateId");
this.layoutList = []
this.edieShow = false
}
// }
},
openSetData() {
let arr = JSON.parse(

View File

@@ -228,6 +228,7 @@ export default defineComponent({
let uploadElementData = {
str:'add',
list:rv.uploadElement,
isGetModule:true,
}
store.commit('setUploadElement',uploadElementData)

View File

@@ -39,8 +39,7 @@
}"
:headers="{ Authorization: token }"
:before-upload="beforeUpload"
v-model:file-list="fileList"
:multiple="true"
:multiple="!!upload.projectId"
accept=".jpg,.png,.jpeg,.bmp"
@change="(file) => fileUploadChange(file)"
>
@@ -136,6 +135,7 @@ import generalDrag from '@/component/modules/generalDrag.vue';
import { getUploadUrl,isMoible,getMinioUrl } from "@/tool/util";
import { getCookie,setCookie } from "@/tool/cookie";
import showViewVideo from "@/tool/mount";
import router from '@/router';
export default defineComponent({
components:{
@@ -156,6 +156,7 @@ export default defineComponent({
setup(props,{emit}) {
const {t,locale} = useI18n()
const store = useStore();
const route = useRoute();
const data:any = reactive({
button:{
left:false,
@@ -381,6 +382,11 @@ export default defineComponent({
}
}
let isSelectObject = false
watch(()=>route?.query,(newVal)=>{
if(!newVal.id){
isSelectObject = false
}
},{immediate:true})
let beforeUpload = async (file: any)=>{
const isJpgOrPng =
file.type === "image/jpeg" ||
@@ -394,6 +400,7 @@ export default defineComponent({
if (!isLt2M) {
message.info(useI18n().t('MoodboardUpload.jsContent4'));
}
console.log(data?.upload,isSelectObject)
if(!data?.upload?.projectId && !isSelectObject){
isSelectObject = true
await createProbject()
@@ -409,28 +416,28 @@ export default defineComponent({
file.imgUrl = res.data.url;
file.id = res.data.id
data.currentList.forEach((listItem:any)=>listItem.isChecked = false)
data.fileList.forEach((listItem:any)=>{
if(listItem.id == file.id){
listItem.isChecked = true
}else{
listItem.isChecked = false
}
})
// data.fileList.forEach((listItem:any)=>{
// if(listItem.id == file.id){
// listItem.isChecked = true
// }else{
// listItem.isChecked = false
// }
// })
file.type = 'ProductElement'
// if(props.productimgMenu.value == 'Relight'){
// file.type = "ToProductImage"
// }
data.selectImg = res.data
data.fileList.filter((v: any) => v.status === "done");
// data.fileList.filter((v: any) => v.status === "done");
let storeData = {
str:'add',
list:[file]
}
store.commit('setUploadElement',storeData)
}else{
bor = false
}
// this.showFileList = productImgData.fileList
} else if (file.status === "error") {
bor = false
}

View File

@@ -563,6 +563,7 @@ export default defineComponent({
}else{
obj.elementId = item.id
obj.elementType = item.resultType || 'ProductElement'
obj.elementType = obj.elementType == 'Relight'?'ToProductImage':obj.elementType
}
obj.parentId = item?.parentId || item?.userLikeSortId,
selectArr.push(JSON.parse(JSON.stringify(obj)))