moodboard改为删除任意元素就删掉布局的图片 画布新加icon 链接到用户指引 调整detial页面布局 pose上传图片bug
This commit is contained in:
@@ -18,7 +18,7 @@ const emit = defineEmits([
|
|||||||
"undo-redo-status-changed",
|
"undo-redo-status-changed",
|
||||||
"trigger-library"
|
"trigger-library"
|
||||||
]);
|
]);
|
||||||
const {t} = useI18n()
|
const {t,locale} = useI18n()
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
activeTool: String,
|
activeTool: String,
|
||||||
minimapEnabled: {
|
minimapEnabled: {
|
||||||
@@ -166,6 +166,16 @@ const normalToolsList = ref([
|
|||||||
icon: { name: "CFont", size: "20" },
|
icon: { name: "CFont", size: "20" },
|
||||||
class: "text-btn",
|
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");
|
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() {
|
function undo() {
|
||||||
if (!canUndo.value) return;
|
if (!canUndo.value) return;
|
||||||
undoFun();
|
undoFun();
|
||||||
|
|||||||
@@ -357,7 +357,7 @@ export default defineComponent({
|
|||||||
designSingleItemDTOList:clothes,
|
designSingleItemDTOList:clothes,
|
||||||
isPreview:true,
|
isPreview:true,
|
||||||
// ifSubmit:designItemDetail.isPreview,
|
// ifSubmit:designItemDetail.isPreview,
|
||||||
gender:workspace?.sex == 'Male'?1:0,
|
gender:workspace?.sex,
|
||||||
sketchString:'',
|
sketchString:'',
|
||||||
modelId:(detailData.currentDetailType == 'models' && detailData.designDetail.newModel)?detailData.designDetail.newModel.id:detailData.designDetail.oldModel?detailData.designDetail.oldModel.id:'',
|
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:'',
|
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%;
|
height: 100%;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
&.detailLeft{
|
&.detailLeft{
|
||||||
width: 34rem;
|
width: 30rem;
|
||||||
// width: 34rem;
|
// width: 34rem;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
&.isEditPattern{width: 0px;}
|
&.isEditPattern{width: 0px;}
|
||||||
&.model{
|
&.model{
|
||||||
width: 50rem;
|
width: 45rem;
|
||||||
margin: 0 10rem;
|
// width: 50rem;
|
||||||
|
margin: 0 8rem;
|
||||||
|
// margin: 0 10rem;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,14 +16,6 @@
|
|||||||
imageMode:'contains',
|
imageMode:'contains',
|
||||||
}"
|
}"
|
||||||
ref="editCanvas">
|
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>
|
</editCanvas>
|
||||||
<!-- <canvasContent ref="canvasContent"></canvasContent> -->
|
<!-- <canvasContent ref="canvasContent"></canvasContent> -->
|
||||||
</div>
|
</div>
|
||||||
@@ -35,6 +27,7 @@
|
|||||||
ref="editFrontBack">
|
ref="editFrontBack">
|
||||||
</editFrontBack> -->
|
</editFrontBack> -->
|
||||||
<editCanvas v-if="canvasLoad" :config="canvasConfig"
|
<editCanvas v-if="canvasLoad" :config="canvasConfig"
|
||||||
|
@canvasInit="canvasInit"
|
||||||
:enabledRedGreenMode="true"
|
:enabledRedGreenMode="true"
|
||||||
:clothingImageUrl="selectDetail.path"
|
:clothingImageUrl="selectDetail.path"
|
||||||
:redGreenImageUrl="frontBack.front[imgDomIndex].maskUrl"
|
:redGreenImageUrl="frontBack.front[imgDomIndex].maskUrl"
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ export default defineComponent({
|
|||||||
</script>
|
</script>
|
||||||
<style lang="less" scoped>
|
<style lang="less" scoped>
|
||||||
.detailLeft{
|
.detailLeft{
|
||||||
width: 34rem;
|
// width: 34rem;
|
||||||
// width: 100%;
|
// width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|||||||
@@ -179,8 +179,11 @@ export default defineComponent({
|
|||||||
> .switch_type_item{
|
> .switch_type_item{
|
||||||
position: relative;
|
position: relative;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
margin-right: 6.5rem;
|
margin-right: 4rem;
|
||||||
font-size: 1.8rem;
|
font-size: 1.8rem;
|
||||||
|
> .detailText{
|
||||||
|
font-size: 1.6rem;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
> .switch_type_item::before {
|
> .switch_type_item::before {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
|
|||||||
@@ -940,6 +940,9 @@ export default defineComponent({
|
|||||||
flex: 1;
|
flex: 1;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
margin: 2rem 0;
|
||||||
|
width: 80%;
|
||||||
|
align-self: center;
|
||||||
> .mark_loading{
|
> .mark_loading{
|
||||||
position: absolute;
|
position: absolute;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
v-model:visible="cutPicuterModal"
|
v-model:visible="cutPicuterModal"
|
||||||
:footer="null"
|
:footer="null"
|
||||||
:get-container="() => $refs.cutPrictureModal"
|
:get-container="() => $refs.cutPrictureModal"
|
||||||
width="78%"
|
width="75%"
|
||||||
:maskClosable="false"
|
:maskClosable="false"
|
||||||
:centered="true"
|
:centered="true"
|
||||||
:closable="false"
|
:closable="false"
|
||||||
|
|||||||
@@ -502,6 +502,7 @@ export default defineComponent({
|
|||||||
if(item.isChecked){
|
if(item.isChecked){
|
||||||
obj.elementId = item.id
|
obj.elementId = item.id
|
||||||
obj.elementType = item.type
|
obj.elementType = item.type
|
||||||
|
obj.elementType = obj.elementType == 'Relight'?'ToProductImage':obj.elementType
|
||||||
selectArr.push(JSON.parse(JSON.stringify(obj)))
|
selectArr.push(JSON.parse(JSON.stringify(obj)))
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -296,6 +296,8 @@ export default defineComponent({
|
|||||||
elementId:scaleImageList.value[scaleImageIndex.value].elementId,
|
elementId:scaleImageList.value[scaleImageIndex.value].elementId,
|
||||||
elementType:scaleImageList.value[scaleImageIndex.value].elementType,
|
elementType:scaleImageList.value[scaleImageIndex.value].elementType,
|
||||||
}
|
}
|
||||||
|
obj.elementType = obj.elementType == 'Relight'?'ToProductImage':obj.elementType
|
||||||
|
|
||||||
// let imageStrength = productimg.productimgSimilarity == 100? 95 :productimg.productimgSimilarity
|
// let imageStrength = productimg.productimgSimilarity == 100? 95 :productimg.productimgSimilarity
|
||||||
let imageStrength = 70 / 100 * productimg.productimgSimilarity
|
let imageStrength = 70 / 100 * productimg.productimgSimilarity
|
||||||
let data:any ={
|
let data:any ={
|
||||||
|
|||||||
@@ -126,6 +126,10 @@ export default defineComponent({
|
|||||||
})
|
})
|
||||||
const cancelDsign = ()=>{
|
const cancelDsign = ()=>{
|
||||||
data.showLoadsBrandDNA = false;
|
data.showLoadsBrandDNA = false;
|
||||||
|
data.brandName = ''
|
||||||
|
data.brandSlogan = ''
|
||||||
|
data.generateText = ''
|
||||||
|
data.uploadList = []
|
||||||
}
|
}
|
||||||
const upFileUploadChange = (value:any)=>{
|
const upFileUploadChange = (value:any)=>{
|
||||||
let file = value.file;
|
let file = value.file;
|
||||||
|
|||||||
@@ -3,8 +3,7 @@
|
|||||||
<div class="captcha">
|
<div class="captcha">
|
||||||
<input v-for="(c, index) in getCtData" :key="index"
|
<input v-for="(c, index) in getCtData" :key="index"
|
||||||
type="text"
|
type="text"
|
||||||
v-model="getCtData[index]" ref="input"
|
ref="input"
|
||||||
pattern="[0-9]*"
|
|
||||||
@input="e => {onInput(e.target.value, index)}"
|
@input="e => {onInput(e.target.value, index)}"
|
||||||
@keydown.delete="e=>{onKeydown(e.target.value, index)}"
|
@keydown.delete="e=>{onKeydown(e.target.value, index)}"
|
||||||
@focus="onFocus"
|
@focus="onFocus"
|
||||||
|
|||||||
@@ -355,11 +355,11 @@ export default defineComponent({
|
|||||||
this.fileList.splice(moodboard,1)
|
this.fileList.splice(moodboard,1)
|
||||||
this.store.commit("setMoodboardFile", this.fileList);
|
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.store.commit("clearMoodTemplateId");
|
||||||
this.layoutList = []
|
this.layoutList = []
|
||||||
this.edieShow = false
|
this.edieShow = false
|
||||||
}
|
// }
|
||||||
},
|
},
|
||||||
openSetData() {
|
openSetData() {
|
||||||
let arr = JSON.parse(
|
let arr = JSON.parse(
|
||||||
|
|||||||
@@ -228,6 +228,7 @@ export default defineComponent({
|
|||||||
let uploadElementData = {
|
let uploadElementData = {
|
||||||
str:'add',
|
str:'add',
|
||||||
list:rv.uploadElement,
|
list:rv.uploadElement,
|
||||||
|
isGetModule:true,
|
||||||
}
|
}
|
||||||
store.commit('setUploadElement',uploadElementData)
|
store.commit('setUploadElement',uploadElementData)
|
||||||
|
|
||||||
|
|||||||
@@ -39,8 +39,7 @@
|
|||||||
}"
|
}"
|
||||||
:headers="{ Authorization: token }"
|
:headers="{ Authorization: token }"
|
||||||
:before-upload="beforeUpload"
|
:before-upload="beforeUpload"
|
||||||
v-model:file-list="fileList"
|
:multiple="!!upload.projectId"
|
||||||
:multiple="true"
|
|
||||||
accept=".jpg,.png,.jpeg,.bmp"
|
accept=".jpg,.png,.jpeg,.bmp"
|
||||||
@change="(file) => fileUploadChange(file)"
|
@change="(file) => fileUploadChange(file)"
|
||||||
>
|
>
|
||||||
@@ -136,6 +135,7 @@ import generalDrag from '@/component/modules/generalDrag.vue';
|
|||||||
import { getUploadUrl,isMoible,getMinioUrl } from "@/tool/util";
|
import { getUploadUrl,isMoible,getMinioUrl } from "@/tool/util";
|
||||||
import { getCookie,setCookie } from "@/tool/cookie";
|
import { getCookie,setCookie } from "@/tool/cookie";
|
||||||
import showViewVideo from "@/tool/mount";
|
import showViewVideo from "@/tool/mount";
|
||||||
|
import router from '@/router';
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
components:{
|
components:{
|
||||||
@@ -156,6 +156,7 @@ export default defineComponent({
|
|||||||
setup(props,{emit}) {
|
setup(props,{emit}) {
|
||||||
const {t,locale} = useI18n()
|
const {t,locale} = useI18n()
|
||||||
const store = useStore();
|
const store = useStore();
|
||||||
|
const route = useRoute();
|
||||||
const data:any = reactive({
|
const data:any = reactive({
|
||||||
button:{
|
button:{
|
||||||
left:false,
|
left:false,
|
||||||
@@ -381,6 +382,11 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
let isSelectObject = false
|
let isSelectObject = false
|
||||||
|
watch(()=>route?.query,(newVal)=>{
|
||||||
|
if(!newVal.id){
|
||||||
|
isSelectObject = false
|
||||||
|
}
|
||||||
|
},{immediate:true})
|
||||||
let beforeUpload = async (file: any)=>{
|
let beforeUpload = async (file: any)=>{
|
||||||
const isJpgOrPng =
|
const isJpgOrPng =
|
||||||
file.type === "image/jpeg" ||
|
file.type === "image/jpeg" ||
|
||||||
@@ -394,6 +400,7 @@ export default defineComponent({
|
|||||||
if (!isLt2M) {
|
if (!isLt2M) {
|
||||||
message.info(useI18n().t('MoodboardUpload.jsContent4'));
|
message.info(useI18n().t('MoodboardUpload.jsContent4'));
|
||||||
}
|
}
|
||||||
|
console.log(data?.upload,isSelectObject)
|
||||||
if(!data?.upload?.projectId && !isSelectObject){
|
if(!data?.upload?.projectId && !isSelectObject){
|
||||||
isSelectObject = true
|
isSelectObject = true
|
||||||
await createProbject()
|
await createProbject()
|
||||||
@@ -409,28 +416,28 @@ export default defineComponent({
|
|||||||
file.imgUrl = res.data.url;
|
file.imgUrl = res.data.url;
|
||||||
file.id = res.data.id
|
file.id = res.data.id
|
||||||
data.currentList.forEach((listItem:any)=>listItem.isChecked = false)
|
data.currentList.forEach((listItem:any)=>listItem.isChecked = false)
|
||||||
data.fileList.forEach((listItem:any)=>{
|
// data.fileList.forEach((listItem:any)=>{
|
||||||
if(listItem.id == file.id){
|
// if(listItem.id == file.id){
|
||||||
listItem.isChecked = true
|
// listItem.isChecked = true
|
||||||
}else{
|
// }else{
|
||||||
listItem.isChecked = false
|
// listItem.isChecked = false
|
||||||
}
|
// }
|
||||||
})
|
// })
|
||||||
file.type = 'ProductElement'
|
file.type = 'ProductElement'
|
||||||
// if(props.productimgMenu.value == 'Relight'){
|
// if(props.productimgMenu.value == 'Relight'){
|
||||||
// file.type = "ToProductImage"
|
// file.type = "ToProductImage"
|
||||||
// }
|
// }
|
||||||
data.selectImg = res.data
|
data.selectImg = res.data
|
||||||
data.fileList.filter((v: any) => v.status === "done");
|
// data.fileList.filter((v: any) => v.status === "done");
|
||||||
let storeData = {
|
let storeData = {
|
||||||
str:'add',
|
str:'add',
|
||||||
list:[file]
|
list:[file]
|
||||||
}
|
}
|
||||||
|
|
||||||
store.commit('setUploadElement',storeData)
|
store.commit('setUploadElement',storeData)
|
||||||
}else{
|
}else{
|
||||||
bor = false
|
bor = false
|
||||||
}
|
}
|
||||||
// this.showFileList = productImgData.fileList
|
|
||||||
} else if (file.status === "error") {
|
} else if (file.status === "error") {
|
||||||
bor = false
|
bor = false
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -563,6 +563,7 @@ export default defineComponent({
|
|||||||
}else{
|
}else{
|
||||||
obj.elementId = item.id
|
obj.elementId = item.id
|
||||||
obj.elementType = item.resultType || 'ProductElement'
|
obj.elementType = item.resultType || 'ProductElement'
|
||||||
|
obj.elementType = obj.elementType == 'Relight'?'ToProductImage':obj.elementType
|
||||||
}
|
}
|
||||||
obj.parentId = item?.parentId || item?.userLikeSortId,
|
obj.parentId = item?.parentId || item?.userLikeSortId,
|
||||||
selectArr.push(JSON.parse(JSON.stringify(obj)))
|
selectArr.push(JSON.parse(JSON.stringify(obj)))
|
||||||
|
|||||||
@@ -229,7 +229,7 @@ const DesignDetail : Module<DesignDetail,RootState> = {
|
|||||||
left:item.layersObject[i].position?.[1] * scale + 'px',
|
left:item.layersObject[i].position?.[1] * scale + 'px',
|
||||||
width:item.layersObject[i].imageSize?.[0] * scale + 'px',
|
width:item.layersObject[i].imageSize?.[0] * scale + 'px',
|
||||||
height:item.layersObject[i].imageSize?.[1] * scale + 'px',
|
height:item.layersObject[i].imageSize?.[1] * scale + 'px',
|
||||||
zIndex:v?.style?.zIndex?v.style.zIndex:state.frontBack.front.length
|
zIndex:v?.style?.zIndex?v.style.zIndex:v.priority?v.priority:state.frontBack.front.length
|
||||||
}
|
}
|
||||||
item.layersObject[i].centers={
|
item.layersObject[i].centers={
|
||||||
left:0,
|
left:0,
|
||||||
|
|||||||
@@ -95,6 +95,10 @@ const HomeStoreModule : Module<DesignDetail,RootState> = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
setUploadElement(state,data){
|
setUploadElement(state,data){
|
||||||
|
console.log(data)
|
||||||
|
if(data?.isGetModule){
|
||||||
|
state.uploadElement = []
|
||||||
|
}
|
||||||
if(data.str == 'add'){
|
if(data.str == 'add'){
|
||||||
state.uploadElement.unshift(...data.list)
|
state.uploadElement.unshift(...data.list)
|
||||||
}else{
|
}else{
|
||||||
|
|||||||
@@ -402,10 +402,10 @@ export default defineComponent({
|
|||||||
homeMainData.openType = Object.keys(query)[0]
|
homeMainData.openType = Object.keys(query)[0]
|
||||||
homeMainData.openTypeChild = query[Object.keys(query)[0]]
|
homeMainData.openTypeChild = query[Object.keys(query)[0]]
|
||||||
}
|
}
|
||||||
if((query?.id || query?.history) && !await getIdExistToHistory()){
|
// if((query?.id || query?.history) && !await getIdExistToHistory()){
|
||||||
router.push('/home')
|
// router.push('/home')
|
||||||
return
|
// return
|
||||||
}
|
// }
|
||||||
}else{
|
}else{
|
||||||
homeMainData.openType = ''
|
homeMainData.openType = ''
|
||||||
homeMainData.openTypeChild = ''
|
homeMainData.openTypeChild = ''
|
||||||
|
|||||||
Reference in New Issue
Block a user