除了颜色选择图片,注册页面

This commit is contained in:
X1627315083
2024-06-26 17:26:31 +08:00
parent 15077d37ea
commit c661454590
43 changed files with 1494 additions and 271 deletions

View File

@@ -9,4 +9,4 @@ VUE_APP_BASE_URL = 'https://develop.api.aida.com.hk'
# 佩佩 # 佩佩
# VUE_APP_BASE_URL = 'http://192.168.1.7:5567' # VUE_APP_BASE_URL = 'http://192.168.1.7:5567'
# 海波 # 海波
# VUE_APP_BASE_URL = 'http://192.168.1.9:5567' VUE_APP_BASE_URL = 'http://192.168.1.9:5567'

Binary file not shown.

After

Width:  |  Height:  |  Size: 443 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 429 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 432 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 424 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 376 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 456 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 365 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 428 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 477 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 503 KiB

View File

@@ -163,6 +163,7 @@ li {
height: 3.3rem; height: 3.3rem;
line-height: 3.3rem; line-height: 3.3rem;
zoom: 1; zoom: 1;
white-space: nowrap;
} }
.started_btn .fi-br-loading::before { .started_btn .fi-br-loading::before {
transition: all 0.5s; transition: all 0.5s;

View File

@@ -173,6 +173,7 @@ input:focus{
height: 3.3rem; height: 3.3rem;
line-height: 3.3rem; line-height: 3.3rem;
zoom: 1; zoom: 1;
white-space: nowrap;
.fi-br-loading::before{ .fi-br-loading::before{
transition: all .5s; transition: all .5s;
display: inline-block; display: inline-block;

View File

@@ -2,7 +2,8 @@
<div class="detail_modal_body_select"> <div class="detail_modal_body_select">
<div v-show="(type_ == 1 || type_ == 2 || type_ == 4) && select == true"> <div v-show="(type_ == 1 || type_ == 2 || type_ == 4) && select == true">
<div class="detail_uploadLibrary"> <div class="detail_uploadLibrary">
<div class="switch_type_list"> <div v-show="type_ == 4" style="font-size:1.5rem; margin:1rem 0">{{ $t('LibraryPage.generated') }}</div>
<div class="switch_type_list" v-show="type_ != 4">
<div <div
@click.stop="open(1)" @click.stop="open(1)"
class="switch_type_item" class="switch_type_item"
@@ -35,7 +36,7 @@
></template> ></template>
</a-select> </a-select>
</div> </div>
<div class="content_search_block"> <div class="content_search_block" v-show="type_ != 4">
<input class="search_input" :placeholder="$t('DesignDetailAlter.inputContent1')" v-model="searchPictureName" @keydown.enter="getLibraryList()"> <input class="search_input" :placeholder="$t('DesignDetailAlter.inputContent1')" v-model="searchPictureName" @keydown.enter="getLibraryList()">
<div class="search_icon_block" @click.stop="getLibraryList()"><span class="icon iconfont icon-sousuo"></span></div> <div class="search_icon_block" @click.stop="getLibraryList()"><span class="icon iconfont icon-sousuo"></span></div>
</div> </div>
@@ -1130,19 +1131,19 @@ export default defineComponent({
) )
}); });
this.selectColorList = selectColorList this.selectColorList = selectColorList
// this.getHsvColor(selectColorList) this.getHsvColor(selectColorList)
// this.selectColor = {rgba:{r:color[0],g:color[1],b:color[2],a:1},hex:colorHex} this.selectColor = {rgba:{r:color[0],g:color[1],b:color[2],a:1},hex:colorHex}
let colorListIndex = [] // let colorListIndex = []
this.colorList.forEach((item,index)=>{ // this.colorList.forEach((item,index)=>{
if(!item.rgba){ // if(!item.rgba){
colorListIndex.push(index) // colorListIndex.push(index)
} // }
}) // })
for (let index = 0; index < selectColorList.length; index++) { // for (let index = 0; index < selectColorList.length; index++) {
this.colorList[colorListIndex[0]] = selectColorList[index] // this.colorList[colorListIndex[0]] = selectColorList[index]
this.getPantongName(selectColorList[index].rgba,colorListIndex[0]) // this.getPantongName(selectColorList[index].rgba,colorListIndex[0])
colorListIndex.splice(0,1) // colorListIndex.splice(0,1)
} // }
img.remove() img.remove()
}; };

View File

@@ -39,10 +39,10 @@
</div> </div>
<div class="print_right show_print_right Guide_1_25" :class="[driver__.driver?'showEvents':'']"> <div class="print_right show_print_right Guide_1_25" :class="[driver__.driver?'showEvents':'']">
<div class="designOpenrtion_nav"> <div class="designOpenrtion_nav">
<div class="designOpenrtion_single" v-for="item,index in designOpenrtionList" :key="item" v-show="(stateOverallSingle == 'overall' && item.level2Type == 'Pattern') || stateOverallSingle == 'single'"> <div class="designOpenrtion_single" v-for="item,index in designOpenrtionList" :key="item" v-show="(stateOverallSingle == 'single' && item.level2Type != 'Pattern') || stateOverallSingle == 'overall'">
<img :class="[(item.checked == true && overallSingle == false)?'active':'']" :src="item.path" @click="setpitch(item,index)"> <img :class="[(item.checked == true && overallSingle == false)?'active':'']" :src="item.path" @click="setpitch(item,index)">
</div> </div>
<div class="designOpenrtion_single" v-for="item,index in designList" :key="item" v-show="(stateOverallSingle == 'overall' && item.level2Type == 'Pattern') || stateOverallSingle == 'single'"> <div class="designOpenrtion_single" v-for="item,index in designList" :key="item" v-show="(stateOverallSingle == 'single' && item.level2Type != 'Pattern') || stateOverallSingle == 'overall'">
<img :class="[(item.checked == true && overallSingle == false)?'active':'']" :src="item.path" @click="setpitch(item,index)"> <img :class="[(item.checked == true && overallSingle == false)?'active':'']" :src="item.path" @click="setpitch(item,index)">
</div> </div>
<!-- <div class="designOpenrtion_overall" v-show="!overallSingle"> <!-- <div class="designOpenrtion_overall" v-show="!overallSingle">
@@ -102,9 +102,10 @@
</li> </li>
</ul> </ul>
<div v-show="!overallSingle"></div> <div v-show="!overallSingle"></div>
<ul v-if="!overallSingle && printStyleList[stateOverallSingle][0]" :class="{active:printStyleList[stateOverallSingle][0]?.designOpenrtionBtn}" class="designOpenrtion_Mouoverall" :style="'left:'+printStyleList[stateOverallSingle][0]?.style?.left+';top:'+printStyleList[stateOverallSingle][0]?.style?.top+';'" @mousedown.stop="itemMoveMousedown(0,$event)"> <ul v-if="!overallSingle && printStyleList[stateOverallSingle][0]" class="designOpenrtion_Mouoverall active" :style="'left:'+printStyleList[stateOverallSingle][0]?.style?.left+';top:'+printStyleList[stateOverallSingle][0]?.style?.top+';'" @mousedown.stop="itemMoveMousedown(0,$event)">
<i class="fi fi-rr-arrows animtion1"></i> <i class="fi fi-rr-arrows animtion1"></i>
<i class="fi fi-rr-arrows animtion2"></i> <i class="fi fi-rr-arrows animtion2"></i>
<li class="designOpenrtion_rotote" v-rotote.stop="[0,printStyleList[stateOverallSingle][0].transform]"></li>
<!-- <li class="designOpenrtion_delete" @click="deletePrint"> <!-- <li class="designOpenrtion_delete" @click="deletePrint">
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAACxAAAAsQHGLUmNAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAdBJREFUSImt1r1uU0EQBeDPFh1pgBQEEwFVAg9BROhCAh1FAg1gkMA8DA0oKOEB3IEIRQgF4SEQBIUC6ENSGgPFXaPx+udeSxxppPXOzJnZ8e7MrRmPWdzANZxPv+EbvmILL/G9hGcADayjgz8l0kUb56qSX8dhBeJcDrFSRv44ZRQdt3EPczieZB5NvB1ymta4zCP5J1yucOIFfM6CDJykob8s73GiAnkPJ7Eb/H9iJhpsZJlPQh6D7AWe9Z5iFr+CIpalhjWspnXZ/pXA01FURkv/HxpxK+g2UE+yGfZXM5+doHt4DEtB2R5dAXdD9nfG2LVxNa2XKGreiziXGefZ5rKZbCLmg/4jHIWNqSEZ1fC0IrnE0bM5qqdFGWoV92RBf/P/S3RRVqI3YaOZGd8eQpgHXMt8HgTd67qi5fZwMzOO5XuREmim9ShEji04q78tLwSDSR/aYuD599DgeVDsY3pMhqOQt4pnUXlGf7PbTQ5VcQofgv8BTudGK/rb9Z6it5RhEV+CX1cxYoeiZXDg7OC+4vpNJbmkuC3vMtsuHpVltKzo55OOzINxmeeYxhPVhn5H0ftnhhGNeu49NBSjdBkX9H+27Cvu+Sv8GEXwF9+O3b1zwZqdAAAAAElFTkSuQmCC" alt=""> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAACxAAAAsQHGLUmNAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAdBJREFUSImt1r1uU0EQBeDPFh1pgBQEEwFVAg9BROhCAh1FAg1gkMA8DA0oKOEB3IEIRQgF4SEQBIUC6ENSGgPFXaPx+udeSxxppPXOzJnZ8e7MrRmPWdzANZxPv+EbvmILL/G9hGcADayjgz8l0kUb56qSX8dhBeJcDrFSRv44ZRQdt3EPczieZB5NvB1ymta4zCP5J1yucOIFfM6CDJykob8s73GiAnkPJ7Eb/H9iJhpsZJlPQh6D7AWe9Z5iFr+CIpalhjWspnXZ/pXA01FURkv/HxpxK+g2UE+yGfZXM5+doHt4DEtB2R5dAXdD9nfG2LVxNa2XKGreiziXGefZ5rKZbCLmg/4jHIWNqSEZ1fC0IrnE0bM5qqdFGWoV92RBf/P/S3RRVqI3YaOZGd8eQpgHXMt8HgTd67qi5fZwMzOO5XuREmim9ShEji04q78tLwSDSR/aYuD599DgeVDsY3pMhqOQt4pnUXlGf7PbTQ5VcQofgv8BTudGK/rb9Z6it5RhEV+CX1cxYoeiZXDg7OC+4vpNJbmkuC3vMtsuHpVltKzo55OOzINxmeeYxhPVhn5H0ftnhhGNeu49NBSjdBkX9H+27Cvu+Sv8GEXwF9+O3b1zwZqdAAAAAElFTkSuQmCC" alt="">
</li> --> </li> -->
@@ -257,7 +258,9 @@ export default defineComponent({
let x = e.clientX - X let x = e.clientX - X
let y = Y - e.clientY let y = Y - e.clientY
angle = Math.atan2(x,y)*(180 / Math.PI) angle = Math.atan2(x,y)*(180 / Math.PI)
elParent.firstElementChild.style.transform = "rotateZ("+ angle + "deg)" if(elParent){
elParent.firstElementChild.style.transform = "rotateZ("+ angle + "deg)"
}
el.style.transform = "translate(-50%, -50%)rotateZ("+ angle + "deg)" el.style.transform = "translate(-50%, -50%)rotateZ("+ angle + "deg)"
} }
} }
@@ -652,7 +655,8 @@ export default defineComponent({
location = [arr[index].style.left.replace(/px/g,'')*sketchNum,arr[index].style.top.replace(/px/g,'')*sketchNum] location = [arr[index].style.left.replace(/px/g,'')*sketchNum,arr[index].style.top.replace(/px/g,'')*sketchNum]
} }
let obj = { let obj = {
angle : !this.overallSingle ? 0:arr[index].transform.rotateZ, angle : arr[index].transform.rotateZ,
// angle : !this.overallSingle ? 0:arr[index].transform.rotateZ,
location : location, location : location,
priority:arr[index].style.zIndex, priority:arr[index].style.zIndex,
scale: scale, scale: scale,
@@ -1038,6 +1042,7 @@ export default defineComponent({
i{ i{
display: flex; display: flex;
color: #14bcff; color: #14bcff;
justify-content: center;
} }
.animtion1{ .animtion1{
animation: anim 4s 2s linear infinite; animation: anim 4s 2s linear infinite;

View File

@@ -42,10 +42,10 @@
<!-- <div class="designOpenrtionMobile_single" v-show="overallSingle" v-for="item,index in designOpenrtionList" :key="item" :class="{active:printStyleList[index]?.designOpenrtionBtn?printStyleList[index]?.designOpenrtionBtn:false}"> <!-- <div class="designOpenrtionMobile_single" v-show="overallSingle" v-for="item,index in designOpenrtionList" :key="item" :class="{active:printStyleList[index]?.designOpenrtionBtn?printStyleList[index]?.designOpenrtionBtn:false}">
<img :src="item.path" @click="setpitch(item,index)"> <img :src="item.path" @click="setpitch(item,index)">
</div> --> </div> -->
<div class="designOpenrtionMobile_single" v-for="item,index in designOpenrtionList" :key="item" v-show="(stateOverallSingle == 'overall' && item.level2Type == 'Pattern') || stateOverallSingle == 'single'"> <div class="designOpenrtionMobile_single" v-for="item,index in designOpenrtionList" :key="item" v-show="(stateOverallSingle == 'single' && item.level2Type != 'Pattern') || stateOverallSingle == 'overall'">
<img :class="[(item.checked == true && overallSingle == false)?'active':'']" :src="item.path" @click="setpitch(item,index)"> <img :class="[(item.checked == true && overallSingle == false)?'active':'']" :src="item.path" @click="setpitch(item,index)">
</div> </div>
<div class="designOpenrtionMobile_single" v-for="item,index in designList" :key="item" v-show="(stateOverallSingle == 'overall' && item.level2Type == 'Pattern') || stateOverallSingle == 'single'"> <div class="designOpenrtionMobile_single" v-for="item,index in designList" :key="item" v-show="(stateOverallSingle == 'single' && item.level2Type != 'Pattern') || stateOverallSingle == 'overall'">
<img :class="[(item.checked == true && overallSingle == false)?'active':'']" :src="item.path" @click="setpitch(item,index)"> <img :class="[(item.checked == true && overallSingle == false)?'active':'']" :src="item.path" @click="setpitch(item,index)">
</div> </div>
<!-- <div class="designOpenrtionMobile_overall" v-show="!overallSingle"> <!-- <div class="designOpenrtionMobile_overall" v-show="!overallSingle">
@@ -103,9 +103,10 @@
</li> </li>
</ul> </ul>
<div v-show="!overallSingle"></div> <div v-show="!overallSingle"></div>
<ul v-if="!overallSingle && printStyleList[stateOverallSingle][0]" :class="{active:printStyleList[stateOverallSingle][0]?.designOpenrtionBtn}" class="designOpenrtionMobile_Mouoverall" :style="'left:'+printStyleList[stateOverallSingle][0]?.style?.left+';top:'+printStyleList[stateOverallSingle][0]?.style?.top+';'" @touchstart.stop="itemMoveMousedown(0,$event)"> <ul v-if="!overallSingle && printStyleList[stateOverallSingle][0]" class="designOpenrtionMobile_Mouoverall active" :style="'left:'+printStyleList[stateOverallSingle][0]?.style?.left+';top:'+printStyleList[stateOverallSingle][0]?.style?.top+';'" @touchstart.stop="itemMoveMousedown(0,$event)">
<i class="fi fi-rr-arrows animtion1"></i> <i class="fi fi-rr-arrows animtion1"></i>
<i class="fi fi-rr-arrows animtion2"></i> <i class="fi fi-rr-arrows animtion2"></i>
<li class="designOpenrtionMobile_rotote" v-rotote.stop="[0,printStyleList[stateOverallSingle][0].transform]"></li>
<!-- <li class="designOpenrtionMobile__delete" @click="deletePrint"> <!-- <li class="designOpenrtionMobile__delete" @click="deletePrint">
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAACxAAAAsQHGLUmNAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAdBJREFUSImt1r1uU0EQBeDPFh1pgBQEEwFVAg9BROhCAh1FAg1gkMA8DA0oKOEB3IEIRQgF4SEQBIUC6ENSGgPFXaPx+udeSxxppPXOzJnZ8e7MrRmPWdzANZxPv+EbvmILL/G9hGcADayjgz8l0kUb56qSX8dhBeJcDrFSRv44ZRQdt3EPczieZB5NvB1ymta4zCP5J1yucOIFfM6CDJykob8s73GiAnkPJ7Eb/H9iJhpsZJlPQh6D7AWe9Z5iFr+CIpalhjWspnXZ/pXA01FURkv/HxpxK+g2UE+yGfZXM5+doHt4DEtB2R5dAXdD9nfG2LVxNa2XKGreiziXGefZ5rKZbCLmg/4jHIWNqSEZ1fC0IrnE0bM5qqdFGWoV92RBf/P/S3RRVqI3YaOZGd8eQpgHXMt8HgTd67qi5fZwMzOO5XuREmim9ShEji04q78tLwSDSR/aYuD599DgeVDsY3pMhqOQt4pnUXlGf7PbTQ5VcQofgv8BTudGK/rb9Z6it5RhEV+CX1cxYoeiZXDg7OC+4vpNJbmkuC3vMtsuHpVltKzo55OOzINxmeeYxhPVhn5H0ftnhhGNeu49NBSjdBkX9H+27Cvu+Sv8GEXwF9+O3b1zwZqdAAAAAElFTkSuQmCC" alt=""> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAACxAAAAsQHGLUmNAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAdBJREFUSImt1r1uU0EQBeDPFh1pgBQEEwFVAg9BROhCAh1FAg1gkMA8DA0oKOEB3IEIRQgF4SEQBIUC6ENSGgPFXaPx+udeSxxppPXOzJnZ8e7MrRmPWdzANZxPv+EbvmILL/G9hGcADayjgz8l0kUb56qSX8dhBeJcDrFSRv44ZRQdt3EPczieZB5NvB1ymta4zCP5J1yucOIFfM6CDJykob8s73GiAnkPJ7Eb/H9iJhpsZJlPQh6D7AWe9Z5iFr+CIpalhjWspnXZ/pXA01FURkv/HxpxK+g2UE+yGfZXM5+doHt4DEtB2R5dAXdD9nfG2LVxNa2XKGreiziXGefZ5rKZbCLmg/4jHIWNqSEZ1fC0IrnE0bM5qqdFGWoV92RBf/P/S3RRVqI3YaOZGd8eQpgHXMt8HgTd67qi5fZwMzOO5XuREmim9ShEji04q78tLwSDSR/aYuD599DgeVDsY3pMhqOQt4pnUXlGf7PbTQ5VcQofgv8BTudGK/rb9Z6it5RhEV+CX1cxYoeiZXDg7OC+4vpNJbmkuC3vMtsuHpVltKzo55OOzINxmeeYxhPVhn5H0ftnhhGNeu49NBSjdBkX9H+27Cvu+Sv8GEXwF9+O3b1zwZqdAAAAAElFTkSuQmCC" alt="">
</li> --> </li> -->
@@ -257,7 +258,9 @@ export default defineComponent({
let x = e.targetTouches[0].clientX - X let x = e.targetTouches[0].clientX - X
let y = Y - e.targetTouches[0].clientY let y = Y - e.targetTouches[0].clientY
angle = Math.atan2(x,y)*(180 / Math.PI) angle = Math.atan2(x,y)*(180 / Math.PI)
elParent.firstElementChild.style.transform = "rotateZ("+ angle + "deg)" if(elParent){
elParent.firstElementChild.style.transform = "rotateZ("+ angle + "deg)"
}
el.style.transform = "translate(-50%, -50%)rotateZ("+ angle + "deg)" el.style.transform = "translate(-50%, -50%)rotateZ("+ angle + "deg)"
} }
} }
@@ -652,7 +655,8 @@ export default defineComponent({
location = [arr[index].style.left.replace(/px/g,'')*sketchNum,arr[index].style.top.replace(/px/g,'')*sketchNum] location = [arr[index].style.left.replace(/px/g,'')*sketchNum,arr[index].style.top.replace(/px/g,'')*sketchNum]
} }
let obj = { let obj = {
angle : !this.overallSingle ? 0:arr[index].transform.rotateZ, angle : arr[index].transform.rotateZ,
// angle : !this.overallSingle ? 0:arr[index].transform.rotateZ,
location : location, location : location,
priority:arr[index].style.zIndex, priority:arr[index].style.zIndex,
scale: scale, scale: scale,
@@ -1074,6 +1078,7 @@ export default defineComponent({
i{ i{
display: flex; display: flex;
color: #14bcff; color: #14bcff;
justify-content: center;
} }
.animtion1{ .animtion1{
animation: anim 4s 2s linear infinite; animation: anim 4s 2s linear infinite;

View File

@@ -521,24 +521,37 @@ export default defineComponent({
this.setPosition('') this.setPosition('')
// this.getworkspace() // this.getworkspace()
} }
}) }).catch((res)=>{
this.isShowMark = false
// this.getworkspace()
});
}, },
getMannequins(){//获取模特 getMannequins(isSetmannequins:any){//获取模特
Https.axiosGet(Https.httpUrls.getMannequins,{params:{sex:this.workspaceItem.sex}}).then((rv: any) => { let styleData = this.workspaceItem.style?this.workspaceItem.style:''
if (rv) { return new Promise((resolve,reject)=>{
// rv.forEach((item:any)=>{ Https.axiosGet(Https.httpUrls.getMannequins,{params:{sex:this.workspaceItem.sex,style:styleData}}).then(async (rv: any) => {
// item.type == if (rv) {
// }) if(rv[0].type == 'System'){
if(rv[0].type == 'System'){ let a = rv[0]
let a = rv[0] rv[0] = rv[1]
rv[0] = rv[1] rv[1] = a
rv[1] = a }
this.mannequins = rv
if(this.mannequins?.[0]==null){
this.systemSeleves = false
}
if(isSetmannequins){
// this.workspaceItem.femalePresignedUrl = this.mannequins?.[1]?.modelList[0].presignedUrl
// this.workspaceItem.mannequinFemaleType = 'System'
// this.workspaceItem.mannequinFemaleId = this.mannequins?.[1]?.modelList[0].id
await this.setMannequins(this.mannequins?.[1]?.modelList[0],'System')
// this.workspaceItem.mannequinUrl = this.mannequins?.[1]?.modelList[0].presignedUrl
// this.workspaceItem.mannequinType = 'System'
// this.workspaceItem.mannequinId = this.mannequins?.[1]?.modelList[0].id
}
resolve('')
} }
this.mannequins = rv })
if(this.mannequins?.[0]==null){
this.systemSeleves = false
}
}
}) })
}, },
putWorkspace(data:any,index:any){//修改workspace putWorkspace(data:any,index:any){//修改workspace
@@ -678,7 +691,7 @@ export default defineComponent({
this.workspaceItem.sexEnum = v this.workspaceItem.sexEnum = v
this.openType.sex = false this.openType.sex = false
this.workspaceItem.sex = v.value this.workspaceItem.sex = v.value
this.getMannequins() this.getMannequins(false)
this.setMannequinsSex() this.setMannequinsSex()
this.setPosition('sex') this.setPosition('sex')
@@ -694,33 +707,37 @@ export default defineComponent({
// this.workspaceItem.mannequinId = item.id // this.workspaceItem.mannequinId = item.id
// this.workspaceItem.mannequinType = str // this.workspaceItem.mannequinType = str
// this.workspaceItem.mannequinUrl = item.presignedUrl // this.workspaceItem.mannequinUrl = item.presignedUrl
let id return new Promise((resolve, reject) => {
if(this.workspaceItem.sexEnum.value == 'Female'){ let id
id = this.workspaceItem.mannequinFemaleId if(this.workspaceItem.sexEnum.value == 'Female'){
this.workspaceItem.femalePresignedUrl = item.presignedUrl id = this.workspaceItem.mannequinFemaleId
this.workspaceItem.mannequinFemaleType = str this.workspaceItem.femalePresignedUrl = item.presignedUrl
this.workspaceItem.mannequinFemaleId = item.id this.workspaceItem.mannequinFemaleType = str
}else if(this.workspaceItem.sexEnum.value == 'Male'){ this.workspaceItem.mannequinFemaleId = item.id
id = this.workspaceItem.mannequinMaleId }else if(this.workspaceItem.sexEnum.value == 'Male'){
this.workspaceItem.malePresignedUrl = item.presignedUrl id = this.workspaceItem.mannequinMaleId
this.workspaceItem.mannequinMaleType = str this.workspaceItem.malePresignedUrl = item.presignedUrl
this.workspaceItem.mannequinMaleId = item.id this.workspaceItem.mannequinMaleType = str
} this.workspaceItem.mannequinMaleId = item.id
// if(id != item.id){ }
if(this.driver__.driver){ // if(id != item.id){
// this.openType.habit = false if(this.driver__.driver){
nextTick().then(()=>{ // this.openType.habit = false
// driverObj__.moveTo(2); nextTick().then(()=>{
driverObj__.moveNext(); // driverObj__.moveTo(2);
this.openType.model = false driverObj__.moveNext();
this.openType.model = false
// driverObj__.moveNext(); // driverObj__.moveNext();
}) })
} }
// } // }
this.workspaceItem.mannequinUrl = item.presignedUrl this.workspaceItem.mannequinUrl = item.presignedUrl
this.workspaceItem.mannequinType = str this.workspaceItem.mannequinType = str
this.workspaceItem.mannequinId = item.id this.workspaceItem.mannequinId = item.id
resolve('')
})
}, },
// FEMALE MALE // FEMALE MALE
setMannequinsSex(){ setMannequinsSex(){
@@ -755,7 +772,7 @@ export default defineComponent({
this.openType.workspace = false this.openType.workspace = false
this.openType.sex = false this.openType.sex = false
this.openType.model = !this.openType.model this.openType.model = !this.openType.model
this.getMannequins() this.getMannequins(false)
if(this.driver__.driver && this.openType.model){ if(this.driver__.driver && this.openType.model){
nextTick().then(()=>{ nextTick().then(()=>{
driverObj__.moveTo(4); driverObj__.moveTo(4);
@@ -794,9 +811,14 @@ export default defineComponent({
// sureSelectModel(event: any) { // sureSelectModel(event: any) {
// this.store.commit("setTemplateData", event); // this.store.commit("setTemplateData", event);
// }, // },
setWorkspaceStyle(data: any){ async setWorkspaceStyle(data: any){
this.workspaceItem.styleId = data.id // this.workspaceItem.styleId = data.id
this.workspaceItem.styleName = data.name this.workspaceItem.styleName = data.name
this.workspaceItem.style = data.value
this.workspaceItem.styleId = data.id
if(data.isRevampModel){
await this.getMannequins(true)
}
this.putWorkspace(this.workspaceItem,this.workspaceItem.id) this.putWorkspace(this.workspaceItem,this.workspaceItem.id)
}, },
setStyle(){ setStyle(){
@@ -1025,6 +1047,8 @@ export default defineComponent({
justify-content: space-between; justify-content: space-between;
.model_current{ .model_current{
margin-right: calc(3rem*1.2); margin-right: calc(3rem*1.2);
display: flex;
flex-direction: column;
.model_text{ .model_text{
text-align: center; text-align: center;
} }

View File

@@ -121,6 +121,7 @@ setup(props,{emit}) {
let data = { let data = {
id:habitSetStyleData.selectStyle.id, id:habitSetStyleData.selectStyle.id,
name:habitSetStyleData.selectStyle.name, name:habitSetStyleData.selectStyle.name,
value:habitSetStyleData.selectStyle.value,
isRevampModel:false, isRevampModel:false,
} }
if(oldDataId == data.id){ if(oldDataId == data.id){
@@ -150,10 +151,10 @@ setup(props,{emit}) {
let setClear = ()=>{ let setClear = ()=>{
habitSetStyleData.selectStyle.id = '' habitSetStyleData.selectStyle.id = ''
habitSetStyleData.selectStyle.name = '' habitSetStyleData.selectStyle.name = ''
habitSetStyleData.selectStyle.value = ''
} }
let setItemSelect = (item:any)=>{ let setItemSelect = (item:any)=>{
habitSetStyleData.selectStyle.name = item.name habitSetStyleData.selectStyle = Object.assign({},item)
habitSetStyleData.selectStyle.id = item.id
} }
return { return {
habitSetStyle, habitSetStyle,

View File

@@ -123,9 +123,8 @@
<img src="#" :title="pantongNameList[index]"> <img src="#" :title="pantongNameList[index]">
</div> </div>
</div> </div>
<div class="started_btn upload_color_btn" v-show="selectColorList.length>0" @click="()=>isSelectSuccessively = !isSelectSuccessively">{{isSelectSuccessively?$t('ColorboardUpload.SelectSuccessively'):$t('ColorboardUpload.SelectSeparately')}}</div>
</div> </div>
</div> </div>
<div class="right_content_line"> <div class="right_content_line">
<div class="upload_right_header"> <div class="upload_right_header">
@@ -201,6 +200,7 @@ export default defineComponent({
selectIndex:-1, selectIndex:-1,
gradientShow:false, gradientShow:false,
}) })
let isSelectSuccessively = ref(false)
return { return {
fileList, fileList,
colorList, colorList,
@@ -209,6 +209,7 @@ export default defineComponent({
driver__, driver__,
t, t,
gradient, gradient,
isSelectSuccessively,
} }
}, },
watch:{ watch:{
@@ -487,16 +488,16 @@ export default defineComponent({
this.selectColor = {rgba:{r:color[0],g:color[1],b:color[2],a:1},hex:colorHex} this.selectColor = {rgba:{r:color[0],g:color[1],b:color[2],a:1},hex:colorHex}
// console.log(this.colorList); // console.log(this.colorList);
// console.log(selectColorList); // console.log(selectColorList);
let colorListIndex = [] // let colorListIndex = []
this.colorList.forEach((item,index)=>{ // this.colorList.forEach((item,index)=>{
if(!item.rgba){ // if(!item.rgba){
colorListIndex.push(index) // colorListIndex.push(index)
} // }
}) // })
for (let index = 0; index < selectColorList.length; index++) { // for (let index = 0; index < selectColorList.length; index++) {
this.colorList[colorListIndex[0]] = selectColorList[index] // this.colorList[colorListIndex[0]] = selectColorList[index]
colorListIndex.splice(0,1) // colorListIndex.splice(0,1)
} // }
nextTick().then(()=>{ nextTick().then(()=>{
if(this.driver__.driver){ if(this.driver__.driver){
driverObj__.moveNext() driverObj__.moveNext()
@@ -524,10 +525,21 @@ export default defineComponent({
}, },
setUplpadColor(color){ setUplpadColor(color){
nextTick().then(()=>{ nextTick().then(()=>{
this.selectColor = color if(this.isSelectSuccessively){
if(this.driver__.driver){ for (let index = 0; index < this.colorList.length; index++) {
driverObj__.moveNext() if(!this.colorList[index].rgba){
this.selectIndex = index
this.selectColor = color
break
}
}
}else{
this.selectColor = color
if(this.driver__.driver){
driverObj__.moveNext()
}
} }
}) })
}, },
@@ -746,7 +758,7 @@ export default defineComponent({
} }
let colorList =this.colorList.filter((v) => v && Object.keys(v).length) let colorList =this.colorList.filter((v) => v && Object.keys(v).length)
this.setColorboardList(colorList) this.setColorboardList(colorList)
} },
} }
}) })
</script> </script>
@@ -834,10 +846,12 @@ export default defineComponent({
.right_content_line{ .right_content_line{
padding-left: calc(3rem*1.2); padding-left: calc(3rem*1.2);
position: relative; position: relative;
padding-right: calc(5rem*1.2); padding-right: calc(3rem*1.2);
margin-right: 2.4rem;
.upload_centetn{ .upload_centetn{
overflow-x: hidden; overflow-x: hidden;
height: calc(100% - 4.4rem*1.2); height: calc(100% - 4.4rem*1.2);
padding-bottom: 4rem;
} }
.upload_centetn::-webkit-scrollbar { .upload_centetn::-webkit-scrollbar {
display: none; display: none;
@@ -923,6 +937,13 @@ export default defineComponent({
} }
} }
} }
.upload_color_btn{
position: absolute;
left: 50%;
transform: translateX(-50%);
bottom: 0;
white-space: nowrap;
}
.color_setting_block{ .color_setting_block{
margin: auto; margin: auto;
background: linear-gradient(70deg, #eee4f3, #f3f4e6); background: linear-gradient(70deg, #eee4f3, #f3f4e6);

View File

@@ -205,7 +205,7 @@
<div><span class="icon iconfont icon-zhuyi"></span>{{ $t('exportModel.insufficient') }}</div> <div><span class="icon iconfont icon-zhuyi"></span>{{ $t('exportModel.insufficient') }}</div>
</div> </div>
<div class="exportCanvasBox_left_btn"> <div class="exportCanvasBox_left_btn">
<div class="subitOkPreviewBtn" :class="{active:allBoardData.printboardFiles.length<=0}" :title="allBoardData.printboardFiles.length<=0?$t('exportModel.jsContent2'):''" @click="setHDExport">{{ $t('exportModel.HDExport') }}</div> <!-- <div class="subitOkPreviewBtn" :class="{active:allBoardData.printboardFiles.length<=0}" :title="allBoardData.printboardFiles.length<=0?$t('exportModel.jsContent2'):''" @click="setHDExport">{{ $t('exportModel.HDExport') }}</div> -->
<div class="subitOkPreviewBtn" @click="setSubmit">{{ $t('exportModel.Save') }}</div> <div class="subitOkPreviewBtn" @click="setSubmit">{{ $t('exportModel.Save') }}</div>
<div class="subitOkPreviewBtn" @click="setShare">{{ $t('exportModel.Share') }}</div> <div class="subitOkPreviewBtn" @click="setShare">{{ $t('exportModel.Share') }}</div>
<div class="subitOkPreviewBtn Guide_1_32" @click="setExport">{{ $t('exportModel.Export') }}</div> <div class="subitOkPreviewBtn Guide_1_32" @click="setExport">{{ $t('exportModel.Export') }}</div>
@@ -289,7 +289,7 @@
<div class="generalModelOperate_btn_ok" :class="[credits < (allExportSR.filter(item=> item.checked ).length*5)?'active':'']" @click="setExportSR">OK</div> <div class="generalModelOperate_btn_ok" :class="[credits < (allExportSR.filter(item=> item.checked ).length*5)?'active':'']" @click="setExportSR">OK</div>
</div> </div>
</a-modal> </a-modal>
<publish ref="publish"></publish> <publish ref="publish" @setPublish="setSubmit"></publish>
</a-modal> </a-modal>
</template> </template>
<script> <script>
@@ -573,6 +573,8 @@ export default defineComponent({
isShowMark.value = false isShowMark.value = false
} }
updateCanvasState('')//加载完成后记录一下 updateCanvasState('')//加载完成后记录一下
setOperation('move')
closeNav.value.tool = true
if(driver__.value.driver){ if(driver__.value.driver){
driverObj__.moveNext() driverObj__.moveNext()
} }

View File

@@ -39,12 +39,12 @@
</div> </div>
</div> </div>
</div> </div>
<a-popover> <!-- <a-popover>
<template #content> <template #content>
<p>Seed</p> <p>Seed</p>
</template> </template>
<input class="search_seed" max="9999" v-show="scene?.value == 'Logo'" @input="ifSeedValue" v-model="searchPictureSeed" type="Number" placeholder='Seed' min="0"> <input class="search_seed" max="9999" v-show="scene?.value == 'Logo'" @input="ifSeedValue" v-model="searchPictureSeed" type="Number" placeholder='Seed' min="0">
</a-popover> </a-popover> -->
<input <input
class="search_input" class="search_input"
@@ -244,6 +244,7 @@ export default defineComponent({
let remGenerate:any = ref(false) let remGenerate:any = ref(false)
let remGenerateTime:any = ref() let remGenerateTime:any = ref()
let styleRecommend:any = inject('styleRecommend') let styleRecommend:any = inject('styleRecommend')
let generateLevel2Type = ''
return { return {
searchPictureName, searchPictureName,
searchPictureSeed, searchPictureSeed,
@@ -270,6 +271,7 @@ export default defineComponent({
remGenerate, remGenerate,
remGenerateTime, remGenerateTime,
styleRecommend, styleRecommend,
generateLevel2Type,
}; };
}, },
data(prop) { data(prop) {
@@ -431,6 +433,9 @@ export default defineComponent({
sloganText = this.searchPictureName sloganText = this.searchPictureName
if(this.upload.level1Type == "Sketchboard"){ if(this.upload.level1Type == "Sketchboard"){
level2Type = this.sketchboardList?.[0]?.categoryValue?this.sketchboardList[0].categoryValue:'' level2Type = this.sketchboardList?.[0]?.categoryValue?this.sketchboardList[0].categoryValue:''
if(this.workspace.styleName){
sloganText = `${this.workspace.styleName},${sloganText}`
}
}else if(this.upload.level1Type == "Printboard"){ }else if(this.upload.level1Type == "Printboard"){
level2Type = this.scene?.value level2Type = this.scene?.value
if(level2Type == 'Slogan' && this.searchPictureName == ''){ if(level2Type == 'Slogan' && this.searchPictureName == ''){
@@ -440,7 +445,7 @@ export default defineComponent({
sloganText = `${this.printModel.value},${sloganText}` sloganText = `${this.printModel.value},${sloganText}`
} }
if(!base64 && level2Type == 'Slogan'){ if(!base64 && level2Type == 'Slogan'){
message.info('请绘制Slogan'); message.info(this.t('Generate.jsContent10'));
return return
} }
} }
@@ -459,6 +464,7 @@ export default defineComponent({
gender:this.workspace.sexEnum.value, gender:this.workspace.sexEnum.value,
sloganBase64:base64, sloganBase64:base64,
} }
this.generateLevel2Type = data.level2Type
this.isGenerate = true this.isGenerate = true
this.remGenerateTime = setTimeout(()=>{ this.remGenerateTime = setTimeout(()=>{
this.remGenerate = true this.remGenerate = true
@@ -484,6 +490,7 @@ export default defineComponent({
} }
).catch(res=>{ ).catch(res=>{
this.generateLevel2Type = ''
this.isGenerate = false this.isGenerate = false
clearInterval(this.remGenerateTime) clearInterval(this.remGenerateTime)
this.remGenerate = false this.remGenerate = false
@@ -534,6 +541,7 @@ export default defineComponent({
clearInterval(this.remGenerateTime) clearInterval(this.remGenerateTime)
this.remGenerate = false this.remGenerate = false
this.isGenerate = false this.isGenerate = false
this.generateLevel2Type = ''
} }
} }
} }
@@ -542,6 +550,7 @@ export default defineComponent({
clearInterval(this.remGenerateTime) clearInterval(this.remGenerateTime)
this.isGenerate = false this.isGenerate = false
this.remGenerate = false this.remGenerate = false
this.generateLevel2Type = ''
}); });
},1000) },1000)
}, },
@@ -552,7 +561,16 @@ export default defineComponent({
clearInterval(this.generateTime) clearInterval(this.generateTime)
if(this.generateProceedList){ if(this.generateProceedList){
let str = this.generateProceedList.map((obj:any) => obj.taskId).join(','); let str = this.generateProceedList.map((obj:any) => obj.taskId).join(',');
let data = {uniqueId:str,userId:this?.userInfo?.userId,timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone} let type = 'Generate'
if(this.generateLevel2Type == 'Logo'){
type = 'Logo'
}
let data = {
uniqueId:str,
userId:this?.userInfo?.userId,
timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone,
type: type
}
Https.axiosGet(Https.httpUrls.generateStopWaiting, {params:data}).then( Https.axiosGet(Https.httpUrls.generateStopWaiting, {params:data}).then(
(rv) => { (rv) => {
this.generateProceedList = [] this.generateProceedList = []
@@ -576,6 +594,7 @@ export default defineComponent({
} }
if(this.upload.level1Type == "Moodboard"){ if(this.upload.level1Type == "Moodboard"){
this.styleRecommend.push(value) this.styleRecommend.push(value)
this.styleRecommend = [...new Set(this.styleRecommend)]
} }
this.searchPictureName += str + value this.searchPictureName += str + value
}, },
@@ -674,6 +693,10 @@ export default defineComponent({
this.sketchboardList = data this.sketchboardList = data
}, },
deleteFile(item: any) { deleteFile(item: any) {
if(this.scene?.value == 'Slogan' && this.type_.type2 == 'Printboard'){
let createSlogan:any = this.$refs.createSlogan
createSlogan.isDeleteSlogan = true
}
this.sketchboardList.splice(item, 1); this.sketchboardList.splice(item, 1);
// if((this.sketchboardList.length<2 && this.moodboarList.length == 0) || this.sketchboardList.length == 0){ // if((this.sketchboardList.length<2 && this.moodboarList.length == 0) || this.sketchboardList.length == 0){
// this.printModel = { // this.printModel = {
@@ -721,7 +744,8 @@ export default defineComponent({
} }
}, },
deleteGenerate(index:any){ deleteGenerate(index:any){
if(this.isGenerate)return // if(this.isGenerate)return
let num = this.fileList.length
let _this = this let _this = this
Modal.confirm({ Modal.confirm({
title: this.t('LibraryPage.jsContent1'), title: this.t('LibraryPage.jsContent1'),
@@ -731,7 +755,8 @@ export default defineComponent({
mask:false, mask:false,
centered:true, centered:true,
onOk() { onOk() {
_this.fileList.splice(index,1) let a = _this.fileList.length - num
_this.fileList.splice(index-a,1)
} }
}); });
}, },

View File

@@ -315,7 +315,7 @@ export default defineComponent({
(rv) => { (rv) => {
if(rv){ if(rv){
if(rv.isTutorial){ if(rv?.isTutorial){
this.record.push({ this.record.push({
state:1, state:1,
str:this.t('RobotAssist.jsContent5'), str:this.t('RobotAssist.jsContent5'),

View File

@@ -95,7 +95,7 @@ export default defineComponent({
value:'SR', value:'SR',
}) })
let getTaskTime:any = null let getTaskTime:any = null
let isShowMark:any = false let isShowMark:any = ref(false)
return { return {
...toRefs(filter), ...toRefs(filter),
store, store,

View File

@@ -240,7 +240,7 @@ export default defineComponent({
} }
let httpsUrl let httpsUrl
if(this.modeOfPayment == 'paypal'){ if(this.modeOfPayment == 'paypal'){
httpsUrl = Https.httpUrls.payAlipay+`/${this.price.num}?returnUrl=${url}` httpsUrl = Https.httpUrls.payPaypal+`/${this.price.num}?returnUrl=${url}`
}else{ }else{
httpsUrl = Https.httpUrls.payAlipayHK+`?amount=${this.price.num}&wallet=${this.modeOfPaymentDetail}` httpsUrl = Https.httpUrls.payAlipayHK+`?amount=${this.price.num}&wallet=${this.modeOfPaymentDetail}`
} }

View File

@@ -27,10 +27,10 @@
<div>Color</div> <div>Color</div>
<input type="color" v-model="fill"> <input type="color" v-model="fill">
</div> </div>
<div class="clearSlogan_center_btn_item"> <!-- <div class="clearSlogan_center_btn_item">
<div>font Size</div> <div>font Size</div>
<input type="Number" v-model="fontSize"> <input type="Number" v-model="fontSize">
</div> </div> -->
<div class="clearSlogan_center_btn_item"> <div class="clearSlogan_center_btn_item">
<div>Font Align</div> <div>Font Align</div>
<ul> <ul>
@@ -105,6 +105,7 @@ export default defineComponent({
let scale = 2; let scale = 2;
let exportWH = 512 let exportWH = 512
let canvasWH = ref(0); let canvasWH = ref(0);
let isDeleteSlogan = ref(false)
let textData = reactive({ let textData = reactive({
fill:'#000000', fill:'#000000',
fontSize:'51', fontSize:'51',
@@ -149,6 +150,13 @@ export default defineComponent({
canvasWH.value = height canvasWH.value = height
scale = exportWH/canvasWH.value scale = exportWH/canvasWH.value
let oldCanvasDom = canvasBox.querySelector('.canvas-container') let oldCanvasDom = canvasBox.querySelector('.canvas-container')
if(isDeleteSlogan.value && oldCanvasDom){
oldCanvasDom.remove()
canvas.remove(textbox);
canvas.dispose();
oldCanvasDom = null
isDeleteSlogan.value = false
}
// if(oldCanvasDom)oldCanvasDom.remove() // if(oldCanvasDom)oldCanvasDom.remove()
if(!oldCanvasDom){ if(!oldCanvasDom){
var canvasDom = document.createElement("canvas"); var canvasDom = document.createElement("canvas");
@@ -160,7 +168,6 @@ export default defineComponent({
isDrawingMode: false, // 开启绘图模式 isDrawingMode: false, // 开启绘图模式
}); });
canvas.on('object:moving',canvasMoving) canvas.on('object:moving',canvasMoving)
setTextFun('请输入\n一段话吧~') setTextFun('请输入\n一段话吧~')
} }
@@ -268,8 +275,8 @@ export default defineComponent({
dom.style.left = domXY.x+'px' dom.style.left = domXY.x+'px'
dom.style.top = (domXY.y + 5)+'px' dom.style.top = (domXY.y + 5)+'px'
} }
let textbox
let setTextFun = (str)=>{ let setTextFun = (str)=>{
let textbox
textbox = new fabric.IText(str, { textbox = new fabric.IText(str, {
fontSize: 20, fontSize: 20,
textAlign:'center' textAlign:'center'
@@ -360,6 +367,7 @@ export default defineComponent({
...toRefs(textData), ...toRefs(textData),
...toRefs(textDataList), ...toRefs(textDataList),
textBtnShow, textBtnShow,
isDeleteSlogan,
t, t,
init, init,
setTextFun, setTextFun,

View File

@@ -0,0 +1,59 @@
<!-- <template>
<a-image
class="fullScreenImg"
:src="src"
/>
</template> -->
<template>
<a-image
class="fullScreenImg"
:width="width"
:src="src"
/>
</template>
<script lang="ts">
import { defineComponent } from 'vue';
export default defineComponent({
name: 'fullScreenImg',
props:{
width:{
type:String,
default:'100%'
},
center:{
type:Boolean,
default:false
},
src:{
type:String,
default:''
},
},
setup() {
return {};
},
});
</script>
<style lang='less'>
.ant-image{
height: 100%;
.fullScreenImg{
width: 100%;
cursor: zoom-in;
&.active{
}
}
.ant-image-mask{
display: none;
}
}
.ant-image-preview-mask{
.ant-image-preview-body{
.ant-image-preview-operations{
background: rgba(0, 0, 0, .5);
}
}
}
</style>

View File

@@ -112,7 +112,7 @@
{{$t('Generate.Close')}} {{$t('Generate.Close')}}
</div> </div>
</div> </div>
<div class="input_clear started_btn">清空</div> <!-- <div class="input_clear started_btn" @click="clearPrductimg">{{$t('ProductImg.Clear')}}</div> -->
</div> </div>
</div> </div>
<div class="productImg_right"> <div class="productImg_right">
@@ -123,11 +123,14 @@
<div class="productImg_right_item_like"> <div class="productImg_right_item_like">
<i class="fi fi-rr-heart" @click.stop="likeFile(item,'like',index)"></i> <i class="fi fi-rr-heart" @click.stop="likeFile(item,'like',index)"></i>
</div> </div>
<div class="productImg_right_item_scale"> <div class="productImg_right_item_scale iconLeft">
<i class="fi fi-bs-expand-arrows-alt" @click.stop="setScaleImage(generateList[productimgMenu.value],index)"></i> <i class="fi fi-bs-expand-arrows-alt" @click.stop="setScaleImage(generateList[productimgMenu.value],index)"></i>
</div> </div>
<div class="productImg_right_item_menu iconLeft"> <div class="productImg_right_item_menu iconLeft">
<i class="fi fi-rr-circle-ellipsis" @click.stop="setScaleImage(generateList[productimgMenu.value],index)"></i> <i class="fi fi-rr-circle-ellipsis" @click.stop="setMenuShow(item)"></i>
<ul v-show="item.menuShow">
<li v-for="menuItem,index in productimgMenuList" v-show="index != 0" @click.stop="setMenu(menuItem,item)" :key="menuItem.value">{{ menuItem.label }}</li>
</ul>
</div> </div>
</div> </div>
</div> </div>
@@ -136,15 +139,15 @@
<div class="button_second" @click="setExport">{{$t('ProductImg.Export')}}</div> <div class="button_second" @click="setExport">{{$t('ProductImg.Export')}}</div>
</div> </div>
<div class="productImg_right_item_box generalScroll" v-mousewheel> <div class="productImg_right_item_box generalScroll" v-mousewheel>
<div class="productImg_right_item" v-for="item,index in likeList[productimgMenu.value]" :key="item"> <div class="productImg_right_item" v-for="item,index in likeList" :key="item">
<img :src="item.url" alt=""> <img :src="item.url" alt="">
<div class="productImg_right_item_like iconLeft"> <div class="productImg_right_item_like">
<i class="fi fi-sr-heart" @click.stop="likeFile(item,'noLike',index)"></i> <i class="fi fi-sr-heart" @click.stop="likeFile(item,'noLike',index)"></i>
</div> </div>
<div class="productImg_right_item_scale iconLeft"> <div class="productImg_right_item_scale iconLeft">
<i class="fi fi-bs-expand-arrows-alt" @click.stop="setScaleImage(likeList[productimgMenu.value],index)"></i> <i class="fi fi-bs-expand-arrows-alt" @click.stop="setScaleImage(likeList,index)"></i>
</div> </div>
<div class="productImg_right_item_menu"> <div class="productImg_right_item_menu iconLeft">
<i class="fi fi-rr-circle-ellipsis" @click.stop="setMenuShow(item)"></i> <i class="fi fi-rr-circle-ellipsis" @click.stop="setMenuShow(item)"></i>
<ul v-show="item.menuShow"> <ul v-show="item.menuShow">
<li v-for="menuItem,index in productimgMenuList" v-show="index != 0" @click.stop="setMenu(menuItem,item)" :key="menuItem.value">{{ menuItem.label }}</li> <li v-for="menuItem,index in productimgMenuList" v-show="index != 0" @click.stop="setMenu(menuItem,item)" :key="menuItem.value">{{ menuItem.label }}</li>
@@ -202,15 +205,15 @@ export default defineComponent({
isProductimg:false,//开始生成 isProductimg:false,//开始生成
selectProductimgList:[], selectProductimgList:[],
generateList:{}, generateList:{},
likeList:{}, likeList:[],
}) })
let productimgMenuList = ref([ let productimgMenuList = ref([
{ {
value:'ProductImage', value:'ProductImage',
label:useI18n().t('ProductImg.ProductImage') label:useI18n().t('ProductImg.ProductImage')
},{ },{
value:'ProductImage1', value:'Relight',
label:'123123' label:useI18n().t('ProductImg.Relight')
} }
]) ])
let productimgMenu:any = ref(productimgMenuList.value[0]) let productimgMenu:any = ref(productimgMenuList.value[0])
@@ -242,7 +245,7 @@ export default defineComponent({
rv.forEach((item:any) => { rv.forEach((item:any) => {
item.imgUrl = item.url item.imgUrl = item.url
}); });
productImgData.likeList[productimgMenu.value.value] = rv productImgData.likeList = rv
} }
).catch(res=>{ ).catch(res=>{
}); });
@@ -263,7 +266,7 @@ export default defineComponent({
let cleardata = ()=>{ let cleardata = ()=>{
productImg.value = false productImg.value = false
productImgData.isShowMark = false productImgData.isShowMark = false
productImgData.likeList = {} productImgData.likeList = []
productImgData.generateList = {} productImgData.generateList = {}
productimgMenu.value = productimgMenuList.value[0] productimgMenu.value = productimgMenuList.value[0]
} }
@@ -278,6 +281,9 @@ export default defineComponent({
file.id = res.data.id file.id = res.data.id
file.isChecked = true file.isChecked = true
file.type = 'ProductElement' file.type = 'ProductElement'
if(productimgMenu.value.value == 'Relight'){
file.type = "ToProductImage"
}
productImgData.fileList[productimgMenu.value.value].filter((v: any) => v.status === "done"); productImgData.fileList[productimgMenu.value.value].filter((v: any) => v.status === "done");
}else{ }else{
bor = false bor = false
@@ -322,17 +328,14 @@ export default defineComponent({
Https.axiosPost(url, data).then( Https.axiosPost(url, data).then(
(rv) => { (rv) => {
if(str == 'like'){ if(str == 'like'){
if(!productImgData.likeList[productimgMenu.value.value]){ productImgData.likeList.push(item)
productImgData.likeList[productimgMenu.value.value] = []
}
productImgData.likeList[productimgMenu.value.value].push(item)
productImgData.generateList[productimgMenu.value.value].splice(index,1) productImgData.generateList[productimgMenu.value.value].splice(index,1)
}else{ }else{
if(!productImgData.generateList[productimgMenu.value.value]){ if(!productImgData.generateList[productimgMenu.value.value]){
productImgData.generateList[productimgMenu.value.value] = [] productImgData.generateList[productimgMenu.value.value] = []
} }
productImgData.generateList[productimgMenu.value.value].push(item) productImgData.generateList[productimgMenu.value.value].push(item)
productImgData.likeList[productimgMenu.value.value].splice(index,1) productImgData.likeList.splice(index,1)
} }
} }
@@ -341,11 +344,7 @@ export default defineComponent({
} }
let setExport = ()=>{ let setExport = ()=>{
let imgList:any = [] let imgList:any = []
productimgMenuList.value.forEach((item:any)=>{ imgList = productImgData.likeList
if(productImgData.likeList[item.value]){
imgList.push(...productImgData.likeList[item.value])
}
})
let data = { let data = {
key:'FinalizeImage', key:'FinalizeImage',
imgList:imgList, imgList:imgList,
@@ -386,6 +385,10 @@ export default defineComponent({
if(item.isChecked){ if(item.isChecked){
obj.elementId = item.designOutfitId obj.elementId = item.designOutfitId
obj.elementType = 'DesignOutfit' obj.elementType = 'DesignOutfit'
if(productimgMenu.value.value == 'Relight'){
obj.elementId = item.id
obj.elementType = 'ToProductImage'
}
selectArr.push(JSON.parse(JSON.stringify(obj))) selectArr.push(JSON.parse(JSON.stringify(obj)))
} }
}) })
@@ -404,7 +407,11 @@ export default defineComponent({
remPrductimgTime = setTimeout(()=>{ remPrductimgTime = setTimeout(()=>{
productImgData.remProductimg = true productImgData.remProductimg = true
},10000) },10000)
Https.axiosPost(Https.httpUrls.toProduct, data).then( let url = Https.httpUrls.toProduct
if(productimgMenu.value.value == 'Relight'){
url = Https.httpUrls.relight
}
Https.axiosPost(url, data).then(
(rv) => { (rv) => {
let arr:any = [] let arr:any = []
rv.forEach((item:any)=>{ rv.forEach((item:any)=>{
@@ -424,10 +431,15 @@ export default defineComponent({
let data = dataList let data = dataList
let dataNum = dataList.length let dataNum = dataList.length
let state = true let state = true
let url = Https.httpUrls.toProductImageResult
if(productimgMenu.value.value == 'Relight'){
url = Https.httpUrls.relightResult
}
prductimgTime = setInterval(()=>{ prductimgTime = setInterval(()=>{
if(!state)return if(!state)return
state = false state = false
Https.axiosPost(Https.httpUrls.toProductImageResult, data).then( Https.axiosPost(url, data).then(
(rv) => { (rv) => {
state = true state = true
if(productImgData.isProductimg){//防止取消后有正在执行的获取状态 if(productImgData.isProductimg){//防止取消后有正在执行的获取状态
@@ -499,6 +511,7 @@ export default defineComponent({
selectList.value[productimgMenu.value.value] = [] selectList.value[productimgMenu.value.value] = []
} }
if(selectList.value[menuItem.value].indexOf(item) == -1){ if(selectList.value[menuItem.value].indexOf(item) == -1){
item.isChecked = true
selectList.value[menuItem.value].push(item) selectList.value[menuItem.value].push(item)
} }
generalIsMenuShow.menuShow = false generalIsMenuShow.menuShow = false
@@ -507,6 +520,9 @@ export default defineComponent({
generalIsMenuShow.menuShow = false generalIsMenuShow.menuShow = false
generalIsMenuShow = {} generalIsMenuShow = {}
document.removeEventListener('click',removeMenuShow) document.removeEventListener('click',removeMenuShow)
}
let clearPrductimg = ()=>{
} }
//超分 //超分
let setTask = (data:any)=>{ let setTask = (data:any)=>{
@@ -538,6 +554,7 @@ export default defineComponent({
setScaleImage, setScaleImage,
setMenu, setMenu,
setMenuShow, setMenuShow,
clearPrductimg,
setTask, setTask,
}; };
}, },
@@ -725,7 +742,7 @@ export default defineComponent({
justify-content: space-around; justify-content: space-around;
.input_box{ .input_box{
flex: 0; flex: 0;
margin-left: auto;
} }
.started_btn{ .started_btn{
// width: 13rem; // width: 13rem;
@@ -760,9 +777,16 @@ export default defineComponent({
.productImg_right_item_like,.productImg_right_item_scale,.productImg_right_item_menu{ .productImg_right_item_like,.productImg_right_item_scale,.productImg_right_item_menu{
display: none; display: none;
position: absolute; position: absolute;
top: 1rem; top: 2rem;
right: 2rem; right: 2rem;
cursor: pointer; cursor: pointer;
width: 3rem;
height: 3rem;
background: #fff;
align-items: center;
justify-content: center;
border-radius: .5rem;
border: .1rem solid #ccc;
.fi-sr-heart{ .fi-sr-heart{
color: red; color: red;
} }
@@ -771,12 +795,15 @@ export default defineComponent({
ul{ ul{
top: 100%; top: 100%;
position: absolute; position: absolute;
width: 10rem; width: 13rem;
left: 0;
text-align: center; text-align: center;
border-radius: calc(1rem*1.2); border-radius: calc(1rem*1.2);
overflow: hidden; overflow: hidden;
z-index: 3;
li{ li{
background: #cccccc; background: #cccccc;
padding: .5rem 1rem;
} }
li:hover{ li:hover{
// background: rgba(0,0,0,.4); // background: rgba(0,0,0,.4);
@@ -790,12 +817,12 @@ export default defineComponent({
right: auto; right: auto;
} }
.productImg_right_item_scale{ .productImg_right_item_scale{
top: 4rem; top: 6rem;
} }
} }
.productImg_right_item:hover{ .productImg_right_item:hover{
.productImg_right_item_like,.productImg_right_item_scale,.productImg_right_item_menu{ .productImg_right_item_like,.productImg_right_item_scale,.productImg_right_item_menu{
display: block; display: flex;
} }
} }
.productImg_right_item:last-child{ .productImg_right_item:last-child{

View File

@@ -20,8 +20,8 @@
</div> </div>
</div> </div>
<div class="scaleImage_content"> <div class="scaleImage_content">
<img v-if="isComparison" :src="scaleImageList[scaleImageIndex]?.sourceUrl">
<img :src="scaleImageList[scaleImageIndex]?.imgUrl"> <img :src="scaleImageList[scaleImageIndex]?.imgUrl">
<!-- <img v-if="isComparison" :src="scaleImageList[scaleImageIndex]?.url"> -->
<div class="img_operate_block" v-if="isLike"> <div class="img_operate_block" v-if="isLike">
<i v-if="!scaleImageList[scaleImageIndex]?.like" class="fi fi-rr-heart operate_icon" @click.stop="LikeFile(scaleImageList[scaleImageIndex],'like')"></i> <i v-if="!scaleImageList[scaleImageIndex]?.like" class="fi fi-rr-heart operate_icon" @click.stop="LikeFile(scaleImageList[scaleImageIndex],'like')"></i>
<i v-else class="fi fi-sr-heart operate_icon" :adminLike="!!scaleImageList[scaleImageIndex]?.like" @click.stop="LikeFile(scaleImageList[scaleImageIndex],'noLike')"></i> <i v-else class="fi fi-sr-heart operate_icon" :adminLike="!!scaleImageList[scaleImageIndex]?.like" @click.stop="LikeFile(scaleImageList[scaleImageIndex],'noLike')"></i>

View File

@@ -602,7 +602,7 @@ export default defineComponent({
}, },
confrimSubmit(){ async confrimSubmit(){
let param = { let param = {
libraryId:this.printObject.id, libraryId:this.printObject.id,
templateId:this.printObject.templateId || null, templateId:this.printObject.templateId || null,
@@ -610,7 +610,7 @@ export default defineComponent({
modelSex:this.sex, modelSex:this.sex,
checkMd5:1, checkMd5:1,
timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone, timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone,
...this.getPrintLocation() ...await this.getPrintLocation()
} }
if(this.userInfo.userId == 88 || this.userInfo.userId == 83){ if(this.userInfo.userId == 88 || this.userInfo.userId == 83){
param.modelType = this.modelType param.modelType = this.modelType
@@ -686,8 +686,19 @@ export default defineComponent({
}); });
}) })
}, },
getPrintLocation(){ async getPrintLocation(){
let {width , height} = this.imgBox let {width , height} = this.imgBox
if(this.modelType == 'System'){
await new Promise((resolve, reject) => {
let img = new Image()
img.src = this.option.img
img.onload = () => {
width = img.width
height = img.height
resolve(true)
}
})
}
let locationData:any = {} let locationData:any = {}
let returnData:any = {} let returnData:any = {}
let newLocationList = JSON.parse(JSON.stringify(this.locationList)) let newLocationList = JSON.parse(JSON.stringify(this.locationList))
@@ -720,7 +731,7 @@ export default defineComponent({
libraryId:this.printObject.relationId || null, libraryId:this.printObject.relationId || null,
templateId:this.printObject.templateId || null, templateId:this.printObject.templateId || null,
timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone, timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone,
...this.getPrintLocation() ...await this.getPrintLocation()
} }
let cropper:any = this.$refs.cropper let cropper:any = this.$refs.cropper
await cropper.getCropData((value:any)=>{ await cropper.getCropData((value:any)=>{

View File

@@ -0,0 +1,850 @@
<template>
<div v-show="placementShow">
<a-modal class="models_placement_component"
v-model:visible="placementShow"
:footer="null"
width="111.5rem"
:maskClosable="false"
:centered="true"
>
<template #closeIcon>
<div class="close_icon" @click.stop="closeModal()"><span class="icon iconfont icon-guanbi"></span></div>
</template>
<div class="models_placement_body" >
<div class="palcement_modal_header">
<div class="models_placement_title">Registration</div>
<div class="placement_operate_list">
<div class="operate_item" v-show="locationList.length == 6" @click="submitPlacement">
<div class="icon iconfont icon-baocun1 operate_icon"></div>
<div class="operate_item_des">Submit</div>
</div>
<div class="operate_item" v-show="locationList.length == 6" @click="printPreview">
<div class="icon iconfont icon-shengchengyulan operate_icon"></div>
<div class="operate_item_des">Preview</div>
</div>
<div class="operate_item" v-show="perviewUrl" @click="backPreview">
<div class="icon iconfont icon-fanhui1 operate_icon"></div>
<div class="operate_item_des">Back</div>
</div>
<div class="operate_item" @click="restoreLocationList">
<div class="icon iconfont icon-huifu operate_icon"></div>
<div class="operate_item_des">Restore</div>
</div>
</div>
</div>
<div class="plcaement_point_content" v-if="userInfo.userId == 88 || userInfo.userId == 83">
<div style="display: flex; align-items: center;">
<div style="display: flex; align-items: center;">
<input type="checkbox" model="false" @click="()=>{modelType = 'System'}">
System
</div>
<div style="display: flex; align-items: center;">
<input type="checkbox" model="false" @click="()=>{modelType = 'Library'}">
Library
</div>
</div>
<div style="display: flex; align-items: center;">
<div style="display: flex; align-items: center;">
<input type="checkbox" model="false" @click="()=>{sex = 'Female'}">
Female
</div>
<div style="display: flex; align-items: center;">
<input type="checkbox" model="false" @click="()=>{sex = 'Male'}">
Male
</div>
</div>
</div>
<div class="models_placement_content">
<div class="plcaement_point_content">
<div class="select_block">
<a-select
ref="select"
v-model:value="sex"
:options="sexList"
>
<template #suffixIcon
><span
class="icon iconfont icon-xiala"
style="color: #343579"
></span
></template>
</a-select>
</div>
<div class="placement_point_item" v-for="(point,index) in pointList" :key="index" >
<div class="ponit_title">{{point.title}}</div>
<div class="point_list">
<div class="point_item" v-for="item in point.pointList" :key="item.color" :style="{borderColor:item.color,visibility:item.show?'inherit':'hidden'}" @mousedown="AddDian(item)"><div class="point_block" :style="{background:item.color}"></div></div>
</div>
</div>
</div>
<div class="placement_content_operate_list">
<div class="placement_content_operate_item" @click="changeRemoveStatus">
<div class="placement_remove_point_block"></div>
<div class="placement_content_operate_des">Remove Point</div>
</div>
</div>
<div class="placement_tip_content">Please change the pure white inside the mannequin for another color to enhance your experience</div>
<div class="img_preview_block" >
<div class="perview_mark_loading" v-show="isShowMark">
<a-spin size="large" />
</div>
<div class="img_content_block" ref="imgbox" @mousemove="startMove($event)">
<img class="placement_img" :src="perviewUrl || printObject?.url">
<div :class="['ponit_click',isRemoveStatus?'remove_point_click':'']" v-show="!perviewUrl" v-for="(item,index) in locationList" :key="item" :style="{left:item.left+'px', top:item.top+'px',borderColor:item.color}" @mousedown="getMouseDown($event,item,index)" @mousemove="startMove($event)">
<div class="placement_add_point_content" :style="{background:item.color}" v-show="!isRemoveStatus"></div>
<div class="icon iconfont icon-guanbi" v-show="isRemoveStatus"></div>
</div>
</div>
</div>
</div>
</div>
</a-modal>
</div>
</template>
<script lang="ts">
import { defineComponent,ref,createVNode} from 'vue'
import { Https } from "@/tool/https";
import {dataURLtoFile} from "@/tool/util"
import { getCookie } from "@/tool/cookie";
import { useStore } from "vuex";
import { Modal,message } from 'ant-design-vue';
import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
export default defineComponent({
setup() {
const store = useStore()
let oldLocationList:any = ref([])
let locationList:any = ref([])
let printObject:any = ref({})
let imgBox:any = ref({})
let intObj:any = ref(null)
let currentSign:any = ref({})
let oldPointList:any = ref([]) //备份点
let pointList:any = ref([])
let isSubmit:any = ref(false) //判断历史是否有提交过
let manager:any = ref(false)
let userInfo:any = ref()
return {
store,
oldLocationList,
locationList,
printObject,
imgBox,
intObj,
currentSign,
oldPointList,
pointList,
isSubmit,
manager,
userInfo
}
},
data(){
return{
placementShow:false,
collectionIndex:0,
startDian:false,
moveOriginal:{posX: 0, posY: 0},
isRemoveStatus:false,
placement_sacle:30,
perviewUrl:'',//预览的图片地址
isShowMark:false,
modelType:'Library',
sex:'Male',
sexList: [
]
}
},
mounted(){
let userInfo:any = getCookie("userInfo")
this.userInfo = JSON.parse(userInfo);
this.getSex()
},
methods:{
formatter(value:number){
return `${value}%`;
},
showPlacementModal(data:any){
this.placementShow = true
this.printObject = {
...data
}
setTimeout(()=>{
let imgbox:any = this.$refs.imgbox
let position = imgbox.getBoundingClientRect()
this.imgBox = {
width:imgbox.clientWidth,
height:imgbox.scrollHeight,
left : position.left,
top:position.top,
scrollTop:imgbox.scrollTop || 0,
}
this.getDefaultPointList(this.imgBox)
},500)
},
getSex(){
Https.axiosGet(Https.httpUrls.workspaceenumValues,{params:{enumName:'Sex'}}).then((rv: any) => {
if (rv) {
let arr:any = []
rv.forEach((item:any) => {
let obj = {
value:item.name,
label:item.name,
}
arr.push(obj)
});
this.sex = arr[0].value
this.sexList = arr
}
})
},
//初始化可以使用的点位
getDefaultPointList(imgBox:any){
this.isSubmit = false
this.pointList = [
{
title:'SHOULDER',
pointList:[{type:'shoulderLeft',color:'#6E70FF',show:true,field:'shoulder'},{type:'shoulderRight',color:'#6E70FF',show:true,field:'shoulder'}]
},
{
title:'WAISTBAND',
pointList:[{type:'waistbandLeft',color:'#6FCEFF',show:true,field:'waistband'},{type:'waistbandRight',color:'#6FCEFF',show:true,field:'waistband'}]
},
{
title:'HAND',
pointList:[{type:'handLeft',color:'#d88e8e',show:true,field:'hand'},{type:'handRight',color:'#d88e8e',show:true,field:'hand'}]
},
]
if(this.printObject.templateId){//编辑
this.isSubmit = true
for(let ponit of this.pointList){
for(let pointItem of ponit.pointList){
if(this.printObject[pointItem.type]?.length){
pointItem.show = false
let data = {
left:this.printObject[pointItem.type][0] * imgBox.width - 12,
top:this.printObject[pointItem.type][1] * imgBox.height - 12,
color:pointItem.color,
type:pointItem.type,
field:pointItem.field,
}
this.locationList.push(data)
}
}
}
this.oldLocationList = JSON.parse(JSON.stringify(this.locationList))
}
this.oldPointList = JSON.parse(JSON.stringify(this.pointList))
},
AddDian(point:any){
if(!point.show){
return
}
this.startDian = true
this.isRemoveStatus = false
this.intObj = point
},
changeRemoveStatus(){
this.isRemoveStatus = true
},
startMove(event:any){
if(this.isRemoveStatus){
return
}
let imgbox:any = this.$refs.imgbox
let scrollTop = imgbox.scrollTop;
if(this.intObj){
this.currentSign.left = event.clientX - this.imgBox.left
this.currentSign.top = event.clientY + scrollTop - this.imgBox.top
this.currentSign.color = this.intObj.color
this.currentSign.type= this.intObj.type
this.currentSign.field = this.intObj.field
this.locationList.push(this.currentSign)
this.intObj.show = false
this.intObj = null
}else{
if(this.startDian){
this.currentSign.left = event.clientX - this.imgBox.left - this.moveOriginal.posX
this.currentSign.top = event.clientY + scrollTop - this.imgBox.top -this.moveOriginal.posY
document.addEventListener('mouseup', this.getMouseOver);
this.$forceUpdate()
this.setBoundarySign()
}
}
},
// 在边界上的签名域处理
setBoundarySign() {
let imgbox:any = this.$refs.imgbox
let height = imgbox.offsetHeight + imgbox.scrollTop;
// 2 为签名域的边框
let maxPosHeight = height - 24
let maxPosWidth = imgbox.clientWidth - 24 //+ this.signBox.paddLeft;
if (this.currentSign.top <= 0) {
this.currentSign.top = 0
} else if (this.currentSign.top >= maxPosHeight ) {
this.currentSign.top = maxPosHeight;
}
if (this.currentSign.left <= 0) {
this.currentSign.left = 0
} else if (this.currentSign.left >= maxPosWidth) {
this.currentSign.left = maxPosWidth;
}
},
getMouseDown(event:any,item:any,index:number){
if(this.isRemoveStatus){
for(let itemPoint of this.pointList){
for(let point of itemPoint.pointList){
if(item.type == point.type){
point.show = true
break
}
}
}
this.locationList.splice(index,1)
}else{
this.currentSign = item
// 计算出鼠标在签名域上的偏移
this.moveOriginal.posX = event.offsetX
this.moveOriginal.posY = event.offsetY // 1为边框
this.startDian = true
}
},
getMouseOver(){
this.startDian = false
this.currentSign = {}
document.removeEventListener('mouseup', this.getMouseOver);
},
closeModal(){
let _this = this
if(!this.isSubmit){
Modal.confirm({
title: "You haven't marked the image yet, and the model will not be uploaded. Are you sure you want to close it?",
icon: createVNode(ExclamationCircleOutlined),
okText: 'Ok',
cancelText: 'Cancel',
mask:false,
// centered:true,
onOk() {
// _this.getDefaultPointList(_this.imgBox)
_this.oldLocationList = []
_this.locationList = []
_this.intObj = null
_this.currentSign = {}
_this.isRemoveStatus = false
_this.placementShow = false
_this.perviewUrl = ''
}
});
}else{
// _this.getDefaultPointList(_this.imgBox)
_this.oldLocationList = []
_this.locationList = []
_this.intObj = null
_this.currentSign = {}
_this.isRemoveStatus = false
_this.placementShow = false
_this.perviewUrl = ''
}
},
restoreLocationList(){
this.pointList = JSON.parse(JSON.stringify(this.oldPointList))
this.locationList = JSON.parse(JSON.stringify(this.oldLocationList))
},
submitPlacement(){
if(this.printObject.templateId){
this.printObject.id = this.printObject.libraryId
this.confrimSubmit()
}else{
this.customRequest().then((rv:any)=>{
this.isShowMark = false
this.printObject.id = rv.id
this.confrimSubmit()
}).catch((res:any)=>{
this.isShowMark = false
})
}
},
confrimSubmit(){
let param = {
libraryId:this.printObject.id,
templateId:this.printObject.templateId || null,
modelType:'System',
checkMd5:1,
timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone,
...this.getPrintLocation()
}
if(this.userInfo.userId == 88 || this.userInfo.userId == 83){
// param.modelType = this.modelType
}
this.isShowMark = true
Https.axiosPost(Https.httpUrls.saveOrEditTemplatePoint, param).then(
(rv: any) => {
this.isShowMark = false
this.isSubmit = true
this.$emit('submitModelPlacement')
this.closeModal()
}
).catch(res=>{
this.isShowMark = false
});
},
customRequest(){
let new_data = {
file:this.printObject.file,
level1Type:'Models',
level2Type:'',
checkMd5:1,
sex:this.sex,
modelType:'System',
timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone,
}
if(this.userInfo.userId == 88 || this.userInfo.userId == 83){
// new_data.modelType = this.modelType
new_data.sex = this.sex
}
this.isShowMark = true
return new Promise((resolve,reject)=>{
Https.axiosPost(Https.httpUrls.libraryUpload, new_data,{headers:{'Content-Type': 'multipart/form-data'}}).then(
(rv: any) => {
if(!rv.checkMd5){
resolve(this.affirmCstomRequest(new_data))
}else{
resolve(rv)
}
}
).catch((res)=>{
reject(res)
});
})
},
affirmCstomRequest(data:any){
let _this = this
return new Promise((resolve,reject)=>{
Modal.confirm({
title: 'This picture has been uploaded whether to continue uploading ',
icon: createVNode(ExclamationCircleOutlined),
okText: 'Yes',
cancelText: 'No',
mask:false,
onOk() {
data.checkMd5 = 0
Https.axiosPost(Https.httpUrls.libraryUpload, data,{headers:{'Content-Type': 'multipart/form-data'}}).then(
(rv: any) => {
_this.isShowMark = false
resolve(rv)
}
).catch((res)=>{
reject(res)
});
},
onCancel(){
_this.isShowMark = false
}
});
})
},
getPrintLocation(){
let {width , height} = this.imgBox
let locationData:any = {}
let returnData:any = {}
let newLocationList = JSON.parse(JSON.stringify(this.locationList))
//进行字段归类
for(let item of newLocationList){
locationData[item.field] = locationData[item.field] || []
locationData[item.field].push(item)
}
for(let key in locationData){
locationData[key].sort(this.sortBy("left")) //通过left字段进行排序
locationData[key].forEach((v:any,index:any) => {
v.type = !index ?v.field + 'Left' :v.field +'Right' //第一个是left第二个是right
v.left = ((v.left + 12) / width).toFixed(4)
v.top = ((v.top + 12) / height).toFixed(4)
returnData[v.type] = [v.left, v.top]
});
}
return returnData
},
sortBy(field:any) {
return function(a:any,b:any) {
return a[field] - b[field];
}
},
printPreview(){
let file = this.printObject.templateId ? null :this.printObject.file,
models = {
libraryId:this.printObject.libraryId || null,
templateId:this.printObject.templateId || null,
timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone,
...this.getPrintLocation()
}
let formData = new FormData();
formData.append('file', file);
formData.append("models", new Blob([JSON.stringify(models)], {type: "application/json"}));
if(this.isShowMark){
return
}
this.isShowMark = true
Https.axiosPost(Https.httpUrls.libraryModelsDot, formData,{headers:{'Content-Type': 'multipart/form-data'}}).then(
(rv: any) => {
this.perviewUrl = rv
this.isShowMark = false
}
).catch(res=>{
this.isShowMark = false
});
},
backPreview(){
this.perviewUrl = ''
}
}
})
</script>
<style lang="less">
.models_placement_component{
.ant-modal-close{
width: 3.6rem;
height: 3.6rem;
position: absolute;
top: -1.8rem;
right: -1.8rem;
}
.ant-modal-header{
display: none;
}
.ant-modal-body{
background: #F2F3FB;
min-height: 72rem;
overflow-y: hidden;
padding: 0;
}
.close_icon{
width: 3.6rem;
height: 3.6rem;
background: #000000;
border-radius: 50%;
line-height: 3.6rem;
text-align: center;
.icon-guanbi{
font-size: 2rem;
color: #ffffff;
}
}
.models_placement_body{
width: 100%;
height: 100%;
.palcement_modal_header{
position: relative;
height: 6.6rem;
width: 100%;
background: #F7F7F7;
.models_placement_title{
position: absolute;
height: 100%;
line-height: 6.6rem;
left: 3.7rem;
top: 0;
font-size: 1.8rem;
color: #030303;
}
.placement_operate_list{
display: flex;
align-items: center;
margin:0 auto;
position: absolute;
left: 50%;
transform: translateX(-50%);
height: 100%;
.operate_item{
margin-right: 4rem;
text-align: center;
cursor: pointer;
.operate_icon{
font-size: 2.1rem;
color: #64686D;
}
.operate_item_des{
height: 1.2rem;
font-size: 1.3rem;
color: #64686D;
}
&:last-child{
margin-right: 0;
}
}
}
}
.models_placement_content{
position: relative;
height: calc(100% - 6.6rem);
width: 100%;
padding: 1.1rem 0;
.plcaement_point_content{
width: 22rem;
background: #EBECF4;
position: absolute;
left: 0;
top:18.4rem;
padding: 3rem 2.7rem 0 1.4rem;
.select_block{
// background: #FFFFFF;
margin-bottom: 3rem;
color: #1A1A1A !important;
.ant-select{
width: 100%;
.ant-select-selector{
padding: 0;
width: 100%;
margin: 0;
background: rgba(0, 0, 0, 0);
font-size: 1.3rem;
color: #64686D;
-webkit-user-select: none;
-moz-user-select: none;
user-select: none;
height: 3rem;
.ant-select-selection-item, .select_block .ant-select-single .ant-select-selector .ant-select-selection-placeholder{
font-weight: 300 !important;
line-height: 1.5715 !important;
width: 100%;
display: block;
position: relative;
padding: 0;
}
}
}
.icon-xiala{
color: #1A1A1A !important;
}
}
.placement_point_item{
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 3rem;
.ponit_title{
font-size: 1.3rem;
color: #64686D;
user-select:none; /* CSS3属性 */
}
.point_list{
display: flex;
align-items: center;
width: 6.2rem;
justify-content: space-between;
.point_item{
width: 2.4rem;
height: 2.4rem;
border-radius: 50%;
border:solid 0.2rem transparent;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
-moz-user-select:none; /* Firefox私有属性 */
-webkit-user-select:none; /* WebKit内核私有属性 */
-ms-user-select:none; /* IE私有属性(IE10及以后) */
-khtml-user-select:none; /* KHTML内核私有属性 */
-o-user-select:none; /* Opera私有属性 */
user-select:none; /* CSS3属性 */
.point_block{
width: 0.4rem;
height: 0.4rem;
border-radius: 50%;
}
}
}
}
}
.placement_content_operate_list{
width: 10.6rem;
background: #EBECF4;
position: absolute;
right: 0;
top:18.4rem;
.placement_content_operate_item{
padding: 1.5rem 0;
text-align: center;
cursor: pointer;
.placement_content_operate_des{
width: 100%;
font-size: 1.3rem;
color: #64686D;
-moz-user-select:none;
user-select:none
}
.print_scale_value{
height: 1.1rem;
font-size: 1.2rem;
text-align: center;
margin-bottom: 0.3rem;
color: #64686D;
}
.ant-tooltip-placement-top{
top: -37px !important;
}
.ant-slider-track{
background: #343579;
}
.ant-slider-handle{
border-color: #343579;
}
.placement_remove_point_block{
width: 2.4rem;
height: 2.4rem;
border: 2px solid #000000;
border-radius: 50%;
margin: 0 auto 0.4rem;
}
}
}
.placement_tip_content{
position: absolute;
right: 2rem;
bottom: 2rem;
width: 30rem;
font-size: 1.3rem;
color: #64686D;
}
.img_preview_block{
width: 40.8rem;
background: #ffffff;
margin: 0 auto;
position: relative;
user-select:none;
-moz-user-select:none;
position: relative;
.img_content_block{
width: 40.8rem;
height: 100%;
max-height: 63.2rem;
overflow-y: auto;
-ms-overflow-style: none;
overflow: -moz-scrollbars-none;
position: relative;
&::-webkit-scrollbar { width: 0 !important }
}
.perview_mark_loading{
position: absolute;
left: 0;
height: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.2);
z-index: 9;
display: flex;
align-items: center;
justify-content: center;
}
.placement_img{
width: 100%;
user-select:none;
-moz-user-select:none;
}
.ponit_click{
width: 24px;
height: 24px;
position: absolute;
border: 2px solid transparent;
border-radius: 50%;
-moz-user-select:none; /* Firefox私有属性 */
-webkit-user-select:none; /* WebKit内核私有属性 */
-ms-user-select:none; /* IE私有属性(IE10及以后) */
-khtml-user-select:none; /* KHTML内核私有属性 */
-o-user-select:none; /* Opera私有属性 */
user-select:none; /* CSS3属性 */
cursor: pointer;
&.remove_point_click{
border-color: transparent;
background: #EF3C3C;
}
.placement_add_point_content{
width: 4px;
height: 4px;
border-radius: 50%;
background: #6E70FF;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
.icon-guanbi{
font-size: 20px;
line-height: 20px;
color:#ffffff;
}
}
}
}
}
}
</style>

View File

@@ -161,6 +161,16 @@ export default defineComponent({
this.loadImg(); this.loadImg();
} }
}, },
deleteItem(id){
console.log(this.list,id);
for (let index = 0; index < this.list.length; index++) {
if(this.list[index].id == id){
this.list.splice(index,1)
this.resize()
break;
}
}
},
loadImg() { loadImg() {
if (this.wait_list.length <= 0) { if (this.wait_list.length <= 0) {
this.loading = false; this.loading = false;

View File

@@ -12,7 +12,7 @@
:destroyOnClose="true" :destroyOnClose="true"
> >
<div class="generalModel_btn"> <div class="generalModel_btn">
<div class="generalModel_closeIcon" @click.stop="cancelDsign()"> <div class="generalModel_closeIcon" @click.stop="cancelDsign('')">
<i class="fi fi-rr-cross-small"></i> <i class="fi fi-rr-cross-small"></i>
</div> </div>
<!-- <div class="collection_closeIcon" @click.stop="download()"> <!-- <div class="collection_closeIcon" @click.stop="download()">
@@ -24,7 +24,10 @@
<div class="newScaleImage_content_right"> <div class="newScaleImage_content_right">
<div class="newScaleImage_content_right_img"> <div class="newScaleImage_content_right_img">
<div> <div>
<img :src="scaleImageList[scaleImageIndex]"> <img v-show="scaleImageIndex > 0" :src="scaleImageList[scaleImageIndex]">
<div v-show="scaleImageIndex == 0">
<fullScreenImg :src="scaleImageList[scaleImageIndex]" width="100%" :center="true"></fullScreenImg>
</div>
<!-- <img :src="scaleImageData?.canvasUrl"> --> <!-- <img :src="scaleImageData?.canvasUrl"> -->
</div> </div>
</div> </div>
@@ -44,16 +47,58 @@
<div class="scaleImage_chunk_title_intro"> <div class="scaleImage_chunk_title_intro">
Overall Overall
</div> --> </div> -->
<div class="scaleImage_chunk_title">{{scaleImageData.portfolioName}}</div> <!-- <div class="scaleImage_chunk_title_intro">zhh</div> -->
<div class="scaleImage_chunk_title_intro">{{scaleImageData.portfolioDes}}</div> <div class="detail_right_user detail_left_right_item">
<!-- <div class="detail_right_user_head">
<img v-lazy="scaleImageData?.imgUrl">
</div> -->
<div class="detail_right_user_content">
<div class="scaleImage_chunk_title_intro">@{{scaleImageData.userName}}</div>
<!-- <div class="scaleImage_chunk_title_intro">个性签名</div>
<div class="scaleImage_chunk_btn">关注</div> -->
</div>
</div>
<div class="scaleImage_chunk_title">
{{$t('newScaleImage.Title')}}:
<span class="scaleImage_chunk_title_intro">{{scaleImageData.portfolioName}}</span>
</div>
<div v-show="scaleImageData.portfolioDes" class="scaleImage_chunk_title">
{{$t('newScaleImage.Describe')}}: <span>{{scaleImageData.portfolioDes}}</span>
</div>
<div class="scaleImage_chunk_title_intro">{{scaleImageData.createDate}}</div>
<div class="detail_right_look_operation detail_left_right_item">
<!-- <div class="detail_left_right_item_click">
<svg :adminLike="!!true" xmlns="http://www.w3.org/2000/svg" width="2.5rem" height="2.5rem" viewBox="0 0 16 16" fill="none" role="img" :style="{color:'#9e9ea7',fill: 'currentColor'}">
<path d="M10.7408 2C13.0889 2 14.6667 4.235 14.6667 6.32C14.6667 10.5425 8.11856 14 8.00004 14C7.88152 14 1.33337 10.5425 1.33337 6.32C1.33337 4.235 2.91115 2 5.2593 2C6.60745 2 7.48893 2.6825 8.00004 3.2825C8.51115 2.6825 9.39263 2 10.7408 2Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span>321</span>
</div> -->
<div class="detail_left_right_item_click" @click="setPortfolioLike">
<i v-if="scaleImageData?.isLike == 1" :adminLike="!!true" class="fi fi-sr-thumbs-up" style="color: rgba(158, 158, 167);"></i>
<i v-else class="fi fi-rr-social-network"></i>
<span>{{scaleImageData.likeNum}}</span>
</div>
<div>
<i class="fi fi-sr-eye"></i>
<span>{{scaleImageData.viewNums}}</span>
</div>
<div>
<i class="fi fi-rr-comment-alt-dots"></i>
<span>{{commentList.length}}</span>
</div>
<div v-if="userInfo?.userName === scaleImageData.userName" @click="deletePortfolio" class="detail_left_right_item_click">
<i class="icon iconfont icon-shanchu operate_icon"></i>
<!-- <span>{{$t('newScaleImage.Delete')}}</span> -->
</div>
</div>
</div> </div>
<div class="scaleImage_chunk_item content_left_collection_content" v-show="scaleImageData.openSource == 1"> <div v-if="false" class="scaleImage_chunk_item content_left_collection_content" v-show="scaleImageData.openSource == 1">
<div class="scaleImage_chunk_title">{{scaleImageData.Collection}}</div> <div class="scaleImage_chunk_title">{{scaleImageData.Collection}}</div>
<div class="content_left_collection_content_list"> <div class="content_left_collection_content_list">
<img v-for="item in scaleImageData?.designPythonOutfitList" v-lazy="item.designUrl"> <img v-for="item in scaleImageData?.designPythonOutfitList" v-lazy="item.designUrl">
</div> </div>
</div> </div>
<div class="started_btn" @click="setChoose" :title="systemUser.value != 1?$t('newScaleImage.jsContent1'): scaleImageData.openSource == 0?$t('newScaleImage.jsContent2'):''" :class="{active:systemUser.value != 1?true:scaleImageData.openSource == 0}">{{$t('newScaleImage.SecondaryCreation')}}</div> <div v-if="systemUser.value == 1" class="started_btn" @click="setChoose" :title="systemUser.value != 1?$t('newScaleImage.jsContent1'): scaleImageData.openSource == 0?$t('newScaleImage.jsContent2'):''" :class="{active:systemUser.value != 1?true:scaleImageData.openSource == 0}">{{$t('newScaleImage.SecondaryCreation')}}</div>
</div> </div>
<div v-else class="newScaleImage_right_content_generate"> <div v-else class="newScaleImage_right_content_generate">
<div class="scaleImage_chunk_item content_left_generate_item"> <div class="scaleImage_chunk_item content_left_generate_item">
@@ -75,18 +120,9 @@
</div> </div>
</div> </div>
</div> </div>
<div class="newScaleImage_right_detail"> <div v-if="false" class="newScaleImage_right_detail">
<div class="scaleImage_chunk_item"> <div class="scaleImage_chunk_item">
<div class="detail_right_user detail_left_right_item">
<!-- <div class="detail_right_user_head">
<img v-lazy="scaleImageData?.imgUrl">
</div> -->
<div class="detail_right_user_content">
<div class="scaleImage_chunk_title">{{scaleImageData.userName}}</div>
<!-- <div class="scaleImage_chunk_title_intro">个性签名</div>
<div class="scaleImage_chunk_btn">关注</div> -->
</div>
</div>
<div class="detail_right_work_detail detail_left_right_item"> <div class="detail_right_work_detail detail_left_right_item">
<!-- <div class="scaleImage_chunk_title">{{ scaleImageData?.portfolioName }}</div> --> <!-- <div class="scaleImage_chunk_title">{{ scaleImageData?.portfolioName }}</div> -->
<!-- <div class="scaleImage_chunk_title_intro">{{ scaleImageData?.portfolioDes }}</div> --> <!-- <div class="scaleImage_chunk_title_intro">{{ scaleImageData?.portfolioDes }}</div> -->
@@ -101,27 +137,7 @@
<span>{{ scaleImageData.updateDate }}</span> <span>{{ scaleImageData.updateDate }}</span>
</div> </div>
</div> </div>
<div class="detail_right_look_operation detail_left_right_item">
<!-- <div class="detail_left_right_item_click">
<svg :adminLike="!!true" xmlns="http://www.w3.org/2000/svg" width="2.5rem" height="2.5rem" viewBox="0 0 16 16" fill="none" role="img" :style="{color:'#9e9ea7',fill: 'currentColor'}">
<path d="M10.7408 2C13.0889 2 14.6667 4.235 14.6667 6.32C14.6667 10.5425 8.11856 14 8.00004 14C7.88152 14 1.33337 10.5425 1.33337 6.32C1.33337 4.235 2.91115 2 5.2593 2C6.60745 2 7.48893 2.6825 8.00004 3.2825C8.51115 2.6825 9.39263 2 10.7408 2Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span>321</span>
</div> -->
<div class="detail_left_right_item_click" @click="setPortfolioLike">
<i v-if="scaleImageData?.isLike == 1" :adminLike="!!true" class="fi fi-sr-thumbs-up" style="color: rgba(158, 158, 167);"></i>
<i v-else class="fi fi-rr-social-network"></i>
<span>{{scaleImageData.likeNum}}</span>
</div>
<div>
<i class="fi fi-sr-eye"></i>
<span>{{scaleImageData.viewNums}}</span>
</div>
<div>
<i class="fi fi-rr-comment-alt-dots"></i>
<span>{{commentList.length}}</span>
</div>
</div>
<!-- <div class="detail_right_auther detail_left_right_item"> <!-- <div class="detail_right_auther detail_left_right_item">
<div class="scaleImage_chunk_title">Auther Other Products</div> <div class="scaleImage_chunk_title">Auther Other Products</div>
<div class="detail_right_auther_img"> <div class="detail_right_auther_img">
@@ -150,8 +166,14 @@
<div class="scaleImage_chunk_title">{{$t('newScaleImage.NoComments')}}</div> <div class="scaleImage_chunk_title">{{$t('newScaleImage.NoComments')}}</div>
<div class="scaleImage_chunk_title">{{$t('newScaleImage.first')}}</div> <div class="scaleImage_chunk_title">{{$t('newScaleImage.first')}}</div>
</div> --> </div> -->
<div class="newScaleImage_right_comment_setComment" @click.stop="">
<input type="text" ref="commentInputFocus" v-model="commentText" :placeholder="commentInput">
<div class="detail_left_setComment_btn" @click="setComment">
<i class="fi fi-ss-paper-plane-top"></i>
</div>
</div>
<div v-show="commentList.length !== 0" class="newScaleImage_right_comment_content"> <div v-show="commentList.length !== 0" class="newScaleImage_right_comment_content">
<div class="detail_left_content_item" v-for="item in commentList" :key="item.id"> <div class="detail_left_content_item" v-for="item,index in commentList" :key="item.id">
<!-- <div class="detail_left_content_item_img"> <!-- <div class="detail_left_content_item_img">
<img v-lazy="scaleImageData?.imgUrl"> <img v-lazy="scaleImageData?.imgUrl">
</div> --> </div> -->
@@ -170,13 +192,12 @@
<span>123</span> <span>123</span>
</div> --> </div> -->
<div class="left_content_item_btn"> <div class="left_content_item_btn">
{{userInfo.userName }}{{item.userName}} <div class="left_content_item_delete" v-if="userInfo?.userName === item.userName" @click="setDeleteComment(item,index,'')">{{$t('newScaleImage.Delete')}}</div>
<div class="left_content_item_delete" v-if="userInfo.userName === item.userName" @click="setDelete(item)">删除</div>
<div class="left_content_item_unfold" @click="()=>item.detailUnfold = !item.detailUnfold">{{item.detailUnfold?$t('newScaleImage.Collapse'):$t('newScaleImage.unfold')}}</div> <div class="left_content_item_unfold" @click="()=>item.detailUnfold = !item.detailUnfold">{{item.detailUnfold?$t('newScaleImage.Collapse'):$t('newScaleImage.unfold')}}</div>
</div> </div>
</div> </div>
<div v-if="item.childCommentVOList" class="detail_left_content_item_replyContent_box" :class="[item.unfold?'':'active']"> <div v-if="item.childCommentVOList" class="detail_left_content_item_replyContent_box" :class="[item.unfold?'':'active']">
<div class="detail_left_content_item_replyContent" v-for="children in item.childCommentVOList" :key="children.id"> <div class="detail_left_content_item_replyContent" v-for="children,childrenIndex in item.childCommentVOList" :key="children.id">
<div class="detail_left_content_item_img"> <div class="detail_left_content_item_img">
<!-- <img v-lazy="scaleImageData?.imgUrl"> --> <!-- <img v-lazy="scaleImageData?.imgUrl"> -->
</div> </div>
@@ -196,7 +217,7 @@
<span>123</span> <span>123</span>
</div> --> </div> -->
<div class="left_content_item_btn"> <div class="left_content_item_btn">
<div class="left_content_item_delete" v-if="userInfo.userName === children.userName" @click="setDelete(children)">删除</div> <div class="left_content_item_delete" v-if="userInfo?.userName === children.userName" @click="setDeleteComment(children,index,childrenIndex)">{{$t('newScaleImage.Delete')}}</div>
<div class="left_content_item_unfold" @click="()=>children.detailUnfold = !children.detailUnfold">{{children.detailUnfold?$t('newScaleImage.Collapse'):$t('newScaleImage.unfold')}}</div> <div class="left_content_item_unfold" @click="()=>children.detailUnfold = !children.detailUnfold">{{children.detailUnfold?$t('newScaleImage.Collapse'):$t('newScaleImage.unfold')}}</div>
</div> </div>
</div> </div>
@@ -216,12 +237,7 @@
</span> </span>
</div> </div>
</div> </div>
<div class="newScaleImage_right_comment_setComment" @click.stop="">
<input type="text" ref="commentInputFocus" v-model="commentText" :placeholder="commentInput">
<div class="detail_left_setComment_btn" @click="setComment">
<i class="fi fi-ss-paper-plane-top"></i>
</div>
</div>
</div> </div>
</div> </div>
@@ -230,18 +246,22 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import { defineComponent,watch,getCurrentInstance, h, ref ,toRefs,computed,reactive,triggerRef, nextTick, onMounted} from "vue"; import { defineComponent,watch,getCurrentInstance, createVNode, ref ,toRefs,computed,reactive,triggerRef, nextTick, onMounted} from "vue";
import { Https } from "@/tool/https"; import { Https } from "@/tool/https";
import { getCookie } from "@/tool/cookie"; import { getCookie } from "@/tool/cookie";
// import domTurnImg from '@/tool/domTurnImg' // import domTurnImg from '@/tool/domTurnImg'
import { useStore } from "vuex"; import { useStore } from "vuex";
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import { downloadIamge,setPubDate } from "@/tool/util"; import { downloadIamge,setPubDate } from "@/tool/util";
import { message } from "ant-design-vue"; import { Modal,message } from "ant-design-vue";
import { useI18n } from 'vue-i18n'; import { useI18n } from 'vue-i18n';
import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
import fullScreenImg from '@/component/HomePage/fullScreenImg.vue'
export default defineComponent({ export default defineComponent({
setup() { components:{fullScreenImg},
emits:['deletePorfolio'],
setup(props:any,{emit}) {
let {t} = useI18n() let {t} = useI18n()
//首先在setup中定义 //首先在setup中定义
let userInfo = ref({}); let userInfo = ref({});
@@ -288,7 +308,10 @@ export default defineComponent({
document.addEventListener('click',removeCommentReply) document.addEventListener('click',removeCommentReply)
// let scaleImageList = this.store.state.UploadFilesModule.moodboard // let scaleImageList = this.store.state.UploadFilesModule.moodboard
} }
let cancelDsign = ()=>{ let cancelDsign = (id:any)=>{
if(id){
emit('deletePorfolio',id)
}
scaleImage.value = false scaleImage.value = false
imgData.scaleImageIndex = 0 imgData.scaleImageIndex = 0
imgData.scaleImageData = {} imgData.scaleImageData = {}
@@ -385,6 +408,9 @@ export default defineComponent({
imgData.commentInput = t('newScaleImage.jsContent3') imgData.commentInput = t('newScaleImage.jsContent3')
} }
let setComment = ()=>{ let setComment = ()=>{
if(!imgData.commentText){
return message.info(t('LibraryPage.jsContent7'))
}
let data = { let data = {
"accountId": 0, "accountId": 0,
"comment": imgData.commentText, "comment": imgData.commentText,
@@ -398,21 +424,20 @@ export default defineComponent({
Https.axiosPost(Https.httpUrls.portfolioComment, data) Https.axiosPost(Https.httpUrls.portfolioComment, data)
.then((rv) => { .then((rv) => {
imgData.commentText = '' imgData.commentText = ''
getCommentPage('comment') getCommentPage({str:'comment',id:imgData.scaleImageData.id})
}) })
.catch((rv) => { .catch((rv) => {
}); });
} }
let getCommentPage = (str:any)=>{ let getCommentPage = (value:any)=>{
let data = imgData.getCommentData let data = imgData.getCommentData
imgData.isShowMark = true imgData.isShowMark = true
Https.axiosPost(Https.httpUrls.portfolioCommentPage,data).then( Https.axiosPost(Https.httpUrls.portfolioCommentPage,data).then(
(rv: any) => { (rv: any) => {
if(rv.content.length == imgData.commentList.length&&str != 'comment'){
imgData.isNoData = true
return
}
rv.content.forEach((item:any)=>{ rv.content.forEach((item:any)=>{
if(value.id == item.portfolioId){
item.unfold = true
}
item.createTimes = setPubDate(item.createTime) item.createTimes = setPubDate(item.createTime)
if (item.childCommentVOList) { if (item.childCommentVOList) {
item.childCommentVOList.forEach((obj:any)=>{ item.childCommentVOList.forEach((obj:any)=>{
@@ -422,8 +447,10 @@ export default defineComponent({
}) })
// imgData.commentList.push(...rv.content) // imgData.commentList.push(...rv.content)
imgData.commentList = rv.content imgData.commentList = rv.content
imgData.isShowMark = false imgData.isShowMark = false
if(rv.total == rv.content.length&&value?.str != 'comment'){
imgData.isNoData = true
}
} }
).catch((res)=>{ ).catch((res)=>{
imgData.isShowMark = false imgData.isShowMark = false
@@ -453,8 +480,64 @@ export default defineComponent({
.catch((rv) => { .catch((rv) => {
}); });
} }
let setDelete = (value:any)=>{ let setDeleteComment = (value:any,index:any,childrenIndex:any)=>{
console.log(value);
Modal.confirm({
title: t('newScaleImage.jsContent4'),
icon: createVNode(ExclamationCircleOutlined),
okText: 'Ok',
cancelText: 'No',
mask:false,
centered:true,
onOk() {
let data = {
"accountId": 0,
"comment": "",
"createTime": "",
"id": value.id,
"isDeleted": 0,
"parentLevel1Id": 0,
"parentLevel2Id": 0,
"portfolioId": imgData.scaleImageData.id,
}
Https.axiosPost(Https.httpUrls.commentDelete, data)
.then((rv) => {
let commentData = {
str:'comment',
id:imgData.scaleImageData.id,
}
getCommentPage(commentData)
})
.catch((rv) => {
});
},
onCancel(){
}
});
}
let deletePortfolio = ()=>{
Modal.confirm({
title: t('newScaleImage.jsContent5'),
icon: createVNode(ExclamationCircleOutlined),
okText: 'Yes',
cancelText: 'No',
mask:false,
centered:true,
onOk() {
let data = {
id:imgData.scaleImageData.id
}
Https.axiosGet(Https.httpUrls.porfolioDelete, {params:data})
.then((rv) => {
cancelDsign(imgData.scaleImageData.id)
})
.catch((rv) => {
});
},
onCancel(){
}
});
} }
watch(()=>imgData.scaleImageIndex, watch(()=>imgData.scaleImageIndex,
(newVal,oldVal)=>{ (newVal,oldVal)=>{
@@ -466,7 +549,7 @@ export default defineComponent({
) )
onMounted(()=>{ onMounted(()=>{
let user:any = getCookie('userInfo') let user:any = getCookie('userInfo')
userInfo = JSON.parse(user) userInfo.value = JSON.parse(user)
}) })
return { return {
userInfo, userInfo,
@@ -484,9 +567,10 @@ export default defineComponent({
LikeFile, LikeFile,
setChoose, setChoose,
setCommentReply, setCommentReply,
deletePortfolio,
setComment, setComment,
setPortfolioLike, setPortfolioLike,
setDelete, setDeleteComment,
}; };
}, },
directives:{ directives:{
@@ -590,9 +674,15 @@ export default defineComponent({
color: #000; color: #000;
overflow: hidden; overflow: hidden;
max-height: 100px; max-height: 100px;
text-align: left;
&.active{ &.active{
max-height: max-content; max-height: max-content;
} }
span{
font-size: 1.8rem;
font-weight: 300;
color: #535353;
}
} }
.scaleImage_chunk_title_comment{ .scaleImage_chunk_title_comment{
font-size: 1.6rem; font-size: 1.6rem;
@@ -612,7 +702,24 @@ export default defineComponent({
// text-overflow: ellipsis; // text-overflow: ellipsis;
// white-space: nowrap; // white-space: nowrap;
} }
.detail_right_look_operation{
display: flex;
justify-content: space-between;
width: 100%;
>div{
display: flex;
align-items: center;
font-size: 2rem;
i{
display: flex;
font-size: 2rem;
color: #9e9ea7;
}
span{
margin-left: calc(var(--padding) / 2);
}
}
}
.newScaleImage_left{ .newScaleImage_left{
display: flex; display: flex;
width: 60%; width: 60%;
@@ -643,6 +750,10 @@ export default defineComponent({
>div{ >div{
width: 100%; width: 100%;
height: auto; height: auto;
>div{
width: 100%;
height: 100%;
}
img{ img{
// width: auto; // width: auto;
max-width: 100%; max-width: 100%;
@@ -717,6 +828,12 @@ export default defineComponent({
display: flex; display: flex;
flex-direction: column; flex-direction: column;
height: var(--content-height); height: var(--content-height);
.detail_left_right_item_click{
cursor: pointer;
i{
color: #9e9ea7;
}
}
.generate_item_title_left{ .generate_item_title_left{
font-size: 2.4rem; font-size: 2.4rem;
} }
@@ -744,7 +861,7 @@ export default defineComponent({
} }
} }
.content_left_collection_detail{ .content_left_collection_detail{
height: calc(8rem + var(--padding) * 2); // height: calc(8rem + var(--padding) * 2);
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: flex-start; align-items: flex-start;
@@ -752,6 +869,9 @@ export default defineComponent({
.scaleImage_chunk_title{ .scaleImage_chunk_title{
margin-right: 1rem; margin-right: 1rem;
} }
>div{
margin-bottom: .5rem;
}
} }
.content_left_collection_content{ .content_left_collection_content{
flex: 1; flex: 1;
@@ -825,12 +945,7 @@ export default defineComponent({
.detail_left_right_item{ .detail_left_right_item{
margin-bottom: var(--margin); margin-bottom: var(--margin);
} }
.detail_left_right_item_click{
cursor: pointer;
i{
color: #9e9ea7;
}
}
.detail_left_right_item:last-child{ .detail_left_right_item:last-child{
margin-bottom: 0; margin-bottom: 0;
} }
@@ -964,18 +1079,18 @@ export default defineComponent({
align-items: center; align-items: center;
height: 8rem; height: 8rem;
justify-content: center; justify-content: center;
margin-top: 3rem;
position: sticky; position: sticky;
z-index: 2; z-index: 2;
padding-bottom: var(--padding); padding-bottom: var(--padding);
padding-top: var(--padding); padding-top: var(--padding);
bottom: 0; top: 0;
background: #f5f5f5; background: #f5f5f5;
input,.detail_left_setComment_btn{ input,.detail_left_setComment_btn{
border-radius: 1rem; border-radius: 1rem;
} }
input{ input{
padding-left: var(--padding); padding-left: var(--padding);
flex: 1;
height: 100%; height: 100%;
width: 50%; width: 50%;
font-size: 2rem; font-size: 2rem;
@@ -1040,23 +1155,7 @@ export default defineComponent({
height: auto height: auto
} }
} }
.detail_right_look_operation{
display: flex;
justify-content: space-between;
>div{
display: flex;
align-items: center;
font-size: 2rem;
i{
display: flex;
font-size: 2rem;
color: #9e9ea7;
}
span{
margin-left: calc(var(--padding) / 2);
}
}
}
.detail_right_date{ .detail_right_date{
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;

View File

@@ -73,7 +73,7 @@
</div> </div>
<div class="publidh_right_btn"> <div class="publidh_right_btn">
<div class="started_btn" @click="cancelDsign">{{$t('Publish.Close')}}</div> <div class="started_btn" @click="cancelDsign">{{$t('Publish.Close')}}</div>
<div class="started_btn" @click="setPublish">{{beenPublished == 0?'Publish':'Updata Publish'}}</div> <div class="started_btn" @click="setPublish">{{beenPublished == 0?$t('Publish.Publish'):$t('Publish.UpdatePublish')}}</div>
</div> </div>
</div> </div>
</div> </div>
@@ -96,7 +96,7 @@ import { downloadIamge,base64ToFile } from "@/tool/util";
import { useI18n } from 'vue-i18n'; import { useI18n } from 'vue-i18n';
export default defineComponent({ export default defineComponent({
setup() { setup(prop,{emit}) {
let {t} = useI18n() let {t} = useI18n()
let publish: any = ref(false);//弹窗 let publish: any = ref(false);//弹窗
let publishMask:any = ref(false)//弹窗遮罩 let publishMask:any = ref(false)//弹窗遮罩
@@ -222,6 +222,7 @@ export default defineComponent({
.then((rv) => { .then((rv) => {
cleardata() cleardata()
publishData.isShowMark = false publishData.isShowMark = false
emit('setPublish')
message.success(t('Publish.jsContent4')) message.success(t('Publish.jsContent4'))
}) })
.catch((rv) => { .catch((rv) => {

View File

@@ -140,6 +140,7 @@ export default {
jsContent5:"我们很高兴让您体验AiDA 3.0。请注意,部分服务在试用期间可能会受到限制。如果您已经准备好全身心投入并享受完整的体验,我们诚挚地邀请您订阅。只需访问", jsContent5:"我们很高兴让您体验AiDA 3.0。请注意,部分服务在试用期间可能会受到限制。如果您已经准备好全身心投入并享受完整的体验,我们诚挚地邀请您订阅。只需访问",
jsContent6:" 就可以开始订阅。感谢您试用我们的服务!", jsContent6:" 就可以开始订阅。感谢您试用我们的服务!",
jsContent9:"是否清除当前收集?", jsContent9:"是否清除当前收集?",
jsContent10:"请完成标语图片",
}, },
ProductImg:{ ProductImg:{
Finalize:'完成', Finalize:'完成',
@@ -150,6 +151,8 @@ export default {
SelectedProduct:'选择的产品', SelectedProduct:'选择的产品',
Export:'导出', Export:'导出',
ProductImage:'产品图', ProductImage:'产品图',
Relight:'打光',
Clear:'清空',
jsContent1:'如果您离开此页,您的更改将会丢失。您确定要离开这一页吗?', jsContent1:'如果您离开此页,您的更改将会丢失。您确定要离开这一页吗?',
jsContent2:'请至少选择一张图片', jsContent2:'请至少选择一张图片',
}, },
@@ -170,6 +173,7 @@ export default {
NoLabel:'空标签', NoLabel:'空标签',
unionSet:'并集', unionSet:'并集',
all:'全选', all:'全选',
generated:'所有默认材质都是AiDA自己生成',
ImageOnly:'图片', ImageOnly:'图片',
TextOnly:'文字', TextOnly:'文字',
TextImage:'图片-文字', TextImage:'图片-文字',
@@ -307,6 +311,8 @@ export default {
RGBA:'RGBA', RGBA:'RGBA',
UploadImage:'上传图片', UploadImage:'上传图片',
ColorCode:'颜色代码', ColorCode:'颜色代码',
SelectSuccessively:'连选',
SelectSeparately:'单选',
ExtractColor:'提取颜色', ExtractColor:'提取颜色',
Single:'单色', Single:'单色',
Gradual:'渐变', Gradual:'渐变',
@@ -471,6 +477,7 @@ export default {
Permissions:'权限', Permissions:'权限',
PermissionsItem1:'是否允许其他用户进行二次创建。', PermissionsItem1:'是否允许其他用户进行二次创建。',
Close:'关闭', Close:'关闭',
UpdatePublish:'更新发布',
jsContent1:'如果您离开此页,您的更改将会丢失。您确定要离开这一页吗?', jsContent1:'如果您离开此页,您的更改将会丢失。您确定要离开这一页吗?',
jsContent2:'请输入您的作品名称', jsContent2:'请输入您的作品名称',
jsContent3:'这将把您的作品发布到广场上,供所有用户查看。请确认是否发布?', jsContent3:'这将把您的作品发布到广场上,供所有用户查看。请确认是否发布?',
@@ -487,10 +494,15 @@ export default {
reply:'回复', reply:'回复',
unfold:'展开', unfold:'展开',
Collapse:'折叠', Collapse:'折叠',
Title:'标题',
Delete:'删除',
Describe:'描述',
replyAll:'所有回复', replyAll:'所有回复',
jsContent1:'请先登录或者升级为正式用户', jsContent1:'请先登录或者升级为正式用户',
jsContent2:'作者不允许二次创作', jsContent2:'作者不允许二次创作',
jsContent3:'请输入评论内容', jsContent3:'请输入评论内容',
jsContent4:'是否删除当前评论',
jsContent5:'是否删除当前作品',
}, },
guide:{ guide:{
guide1:"在<strong>工作空间</strong>中,您可以个性化您的设计设置,包括选择适用于男装或女装的设计,以及选择用于创作的人体模型。", guide1:"在<strong>工作空间</strong>中,您可以个性化您的设计设置,包括选择适用于男装或女装的设计,以及选择用于创作的人体模型。",

View File

@@ -151,6 +151,8 @@ export default {
SelectedProduct:'Selected Product', SelectedProduct:'Selected Product',
Export:'Export', Export:'Export',
ProductImage:'Product Image', ProductImage:'Product Image',
Relight:'Relight',
Clear:'Clear',
jsContent1:'Your changes will be lost if you navigate away from this page. Are you sure you want to leave this page?', jsContent1:'Your changes will be lost if you navigate away from this page. Are you sure you want to leave this page?',
jsContent2:'Please select at least one picture', jsContent2:'Please select at least one picture',
}, },
@@ -171,6 +173,7 @@ export default {
NoLabel:'No Label', NoLabel:'No Label',
unionSet:'union set', unionSet:'union set',
all:'all', all:'all',
generated:'All default materials are generated by AiDA ourselves',
ImageOnly:'Image Only', ImageOnly:'Image Only',
TextOnly:'Text Only', TextOnly:'Text Only',
TextImage:'Text-Image', TextImage:'Text-Image',
@@ -308,6 +311,8 @@ export default {
RGBA:'RGBA', RGBA:'RGBA',
UploadImage:'Upload Image',//////////// UploadImage:'Upload Image',////////////
ColorCode:'Color Code', ColorCode:'Color Code',
SelectSuccessively:'Select Successively',
SelectSeparately:'Select Separately',
ExtractColor:'Extract Color', ExtractColor:'Extract Color',
Single:'Single', Single:'Single',
Gradual:'Gradual', Gradual:'Gradual',
@@ -383,6 +388,7 @@ export default {
jsContent7:"upload failed", jsContent7:"upload failed",
jsContent8:"You have {num} remaining opportunity to generate {str}.", jsContent8:"You have {num} remaining opportunity to generate {str}.",
jsContent9:"You have exhausted your generation opportunities {str}.", jsContent9:"You have exhausted your generation opportunities {str}.",
jsContent10:"Please complete the slogan picture",
}, },
collectionModal:{ collectionModal:{
Moodboard:'Moodboard', Moodboard:'Moodboard',
@@ -472,6 +478,7 @@ export default {
Permissions:'Permissions', Permissions:'Permissions',
PermissionsItem1:'Whether to allow other users to perform secondary creation.', PermissionsItem1:'Whether to allow other users to perform secondary creation.',
Close:'Close', Close:'Close',
UpdatePublish:'Update Publish',
jsContent1:'Your changes will be lost if you navigate away from this page. Are you sure you want to leave this page?', jsContent1:'Your changes will be lost if you navigate away from this page. Are you sure you want to leave this page?',
jsContent2:'Please enter the name of your work', jsContent2:'Please enter the name of your work',
jsContent3:'This will publish your work to the square for all users to see. Please confirm whether to publish?', jsContent3:'This will publish your work to the square for all users to see. Please confirm whether to publish?',
@@ -487,11 +494,16 @@ export default {
first:'You can be the first!', first:'You can be the first!',
reply:'Reply', reply:'Reply',
unfold:'Expand', unfold:'Expand',
Title:'Title',
Delete:'Delete',
Describe:'Describe',
Collapse:'Collapse', Collapse:'Collapse',
replyAll:'All replies', replyAll:'All replies',
jsContent1:'Please log in or upgrade to an official user', jsContent1:'Please log in or upgrade to an official user',
jsContent2:'The author is not allowed to use it', jsContent2:'The author is not allowed to use it',
jsContent3:'Please enter a comment', jsContent3:'Please enter a comment',
jsContent4:'Do you need to delete this comment',
jsContent5:'Whether to delete the current gallery',
}, },
guide:{ guide:{
guide1:"You can personalize your design settings right here in the <strong>Workspace</strong>, including choosing to design for men's or women's wear, as well as selecting the mannequin to use for your creations.", guide1:"You can personalize your design settings right here in the <strong>Workspace</strong>, including choosing to design for men's or women's wear, as well as selecting the mannequin to use for your creations.",

View File

@@ -228,6 +228,7 @@ function removeDiv(element){
} }
const openGuide = () =>{ const openGuide = () =>{
return//暂时关闭
let isTest = JSON.parse(getCookie('isTest')) let isTest = JSON.parse(getCookie('isTest'))
let isBeginner = JSON.parse(getCookie('isBeginner')) let isBeginner = JSON.parse(getCookie('isBeginner'))
// console.log(isBeginner); // console.log(isBeginner);

View File

@@ -91,7 +91,7 @@ axios.interceptors.response.use((res) =>{
if(!isLoginTime){ if(!isLoginTime){
isLoginTime = true isLoginTime = true
router.replace('/') router.replace('/')
message.warning('请登陆后重试~') message.warning('Please login and try again~')
clonAllCookie() clonAllCookie()
store.commit('clearSystemUser') store.commit('clearSystemUser')
setTimeout(()=>[ setTimeout(()=>[
@@ -241,7 +241,9 @@ export const Https = {
portfolioNoLike:`/api/portfolio/unlike`,//作品广场取消点赞 portfolioNoLike:`/api/portfolio/unlike`,//作品广场取消点赞
portfolioComment:`/api/portfolio/comment`,//作品广场评论 portfolioComment:`/api/portfolio/comment`,//作品广场评论
portfolioCommentPage:`/api/portfolio/commentPage`,//作品广场评论列表 portfolioCommentPage:`/api/portfolio/commentPage`,//作品广场评论列表
commentDelete:`/api/portfolio/commentDelete`,//删除评论
porfolioDelete:`/api/portfolio/delete`,//删除作品
//product生成 //product生成
toProduct:`/api/history/toProduct`,//开始生成 toProduct:`/api/history/toProduct`,//开始生成
toProductImageResult:`/api/history/toProductImageResult`,//获取结果 toProductImageResult:`/api/history/toProductImageResult`,//获取结果
@@ -250,7 +252,10 @@ export const Https = {
productImageUnLike:`/api/history/productImageUnLike`,//取消like生成结果 productImageUnLike:`/api/history/productImageUnLike`,//取消like生成结果
productImageLikeList:`/api/history/productImageLikeList`,//like生成结果 productImageLikeList:`/api/history/productImageLikeList`,//like生成结果
//打光
relight:`/api/history/relight`,//开始生成
relightResult:`/api/history/relightResult`,//开始生成
//保存画布 //保存画布
canvasElementUpload:`/api/history/canvasElementUpload`,//画布上传临时图片 canvasElementUpload:`/api/history/canvasElementUpload`,//画布上传临时图片
exportSave:`/api/history/exportSave`,//保存画布 exportSave:`/api/history/exportSave`,//保存画布

View File

@@ -19,6 +19,7 @@
</div> </div>
<div <div
v-if="isTest"
class="trialApproval button_second credits hideChecked" class="trialApproval button_second credits hideChecked"
> >
{{$t('Header.Credits')}}:&nbsp; {{$t('Header.Credits')}}:&nbsp;
@@ -65,11 +66,11 @@
<span class="icon iconfont icon-yuyan"></span> <span class="icon iconfont icon-yuyan"></span>
<span class="select_item_des">{{$t('Header.language')}}</span> <span class="select_item_des">{{$t('Header.language')}}</span>
</div> </div>
<div class="select_item" @click="openTask()"> <!-- <div class="select_item" @click="openTask()">
<i class="icon iconfont icon-renwu"></i> <i class="icon iconfont icon-renwu"></i>
<span class="select_item_des">{{$t('Header.TaskList')}}</span> <span class="select_item_des">{{$t('Header.TaskList')}}</span>
</div> </div> -->
<div class="select_item" @click="orderForm()"> <div class="select_item" @click="orderForm()">
<i class="fi fi-rs-notebook"></i> <i class="fi fi-rs-notebook"></i>

View File

@@ -10,39 +10,40 @@
/> />
</div> </div>
</div> </div>
<div class="homeRecommend_right" v-if="systemUser.value == 0"> <div class="homeRecommend_right">
<a class="started_btn" href="https://code-create.com.hk/aida/" target="_blank">升级成为正式用户</a> <a class="started_btn" v-if="systemUser.value == 0" href="https://code-create.com.hk/aida/" target="_blank">Upgrade to an official user</a>
<div class="started_btn started_btn2" @click="logout">退出登录</div> <div class="started_btn started_btn2" v-if="systemUser.value != -1" @click="logout">log off</div>
</div> </div>
<div class="homeRecommend_right" v-else-if="systemUser.value == -1"> <div class="homeRecommend_right" v-if="systemUser.value == -1">
<div class="started_btn" @click="setLogin">登录</div> <div class="started_btn" @click="setLogin">Login</div>
<div class="started_btn started_btn2" @click="setRegister">注册</div> <div class="started_btn started_btn2" @click="setRegister">Visitor registration</div>
</div> </div>
</header> </header>
<div class="homeRecommend_content_body"> <div class="homeRecommend_content_body">
<div class="homeRecommend_content_body_recommend" id="aaaa"> <div class="homeRecommend_content_body_recommend" id="aaaa">
<div class="content_body_recommend_left"> <div class="content_body_recommend_left">
<img class="content_body_img1 content_body_img" src="https://img2.baidu.com/it/u=1061364893,2453516073&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500" alt=""> <img class="content_body_img1 content_body_img" src="/image/mainImg/img1.png" alt="">
<img class="content_body_img2 content_body_img" src="https://img2.baidu.com/it/u=1061364893,2453516073&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500" alt=""> <img class="content_body_img2 content_body_img" src="/image/mainImg/img2.png" alt="">
<img class="content_body_img3 content_body_img" src="https://img2.baidu.com/it/u=1061364893,2453516073&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500" alt=""> <img class="content_body_img3 content_body_img" src="/image/mainImg/img3.png" alt="">
<img class="content_body_img4 content_body_img" src="https://img2.baidu.com/it/u=1061364893,2453516073&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500" alt=""> <img class="content_body_img4 content_body_img" src="/image/mainImg/img4.png" alt="">
<img class="content_body_img5 content_body_img" src="https://img2.baidu.com/it/u=1061364893,2453516073&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500" alt=""> <img class="content_body_img5 content_body_img" src="/image/mainImg/img5.png" alt="">
</div> </div>
<div class="content_body_recommend_center content_body_text"> <div class="content_body_recommend_center content_body_text">
<div class="content_body_recommend_center_title"> <div class="content_body_recommend_center_title">
<h1>全球<div>最佳创作者</div>齐聚AIDA</h1> <h1>AiDA × ANY</h1>
<h3>bloom your creativity</h3>
</div> </div>
<div class="content_body_recommend_center_btn"> <div class="content_body_recommend_center_btn">
<a class="started_btn" href="https://code-create.com.hk/aida/" target="_blank">立即购买</a> <a class="started_btn" href="https://code-create.com.hk/aida/" target="_blank">SUBSCRIBE NOW</a>
<a class="started_btn" href="https://code-create.com.hk/aida-trial/" target="_blank">立即试用</a> <a class="started_btn" href="https://code-create.com.hk/aida-trial/" target="_blank">START TRIAL</a>
</div> </div>
</div> </div>
<div class="content_body_recommend_right"> <div class="content_body_recommend_right">
<img class="content_body_img1 content_body_img" src="https://img2.baidu.com/it/u=1061364893,2453516073&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500" alt=""> <img class="content_body_img1 content_body_img" src="/image/mainImg/img6.png" alt="">
<img class="content_body_img2 content_body_img" src="https://img2.baidu.com/it/u=1061364893,2453516073&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500" alt=""> <img class="content_body_img2 content_body_img" src="/image/mainImg/img7.png" alt="">
<img class="content_body_img3 content_body_img" src="https://img2.baidu.com/it/u=1061364893,2453516073&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500" alt=""> <img class="content_body_img3 content_body_img" src="/image/mainImg/img8.png" alt="">
<img class="content_body_img4 content_body_img" src="https://img2.baidu.com/it/u=1061364893,2453516073&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500" alt=""> <img class="content_body_img4 content_body_img" src="/image/mainImg/img9.png" alt="">
<img class="content_body_img5 content_body_img" src="https://img2.baidu.com/it/u=1061364893,2453516073&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500" alt=""> <img class="content_body_img5 content_body_img" src="/image/mainImg/img10.png" alt="">
</div> </div>
</div> </div>
<Works :isScroll="false"></Works> <Works :isScroll="false"></Works>
@@ -377,11 +378,18 @@ export default defineComponent({
h1{ h1{
line-height: 1; line-height: 1;
font-size: 13rem; font-size: 13rem;
font-weight: 600; font-weight: 900;
margin: 7rem;
div{ div{
color: #341e57; color: #341e57;
} }
} }
h3{
line-height: 1;
margin: 7rem;
font-size: 5rem;
font-weight: 900;
}
} }
.content_body_recommend_center_btn{ .content_body_recommend_center_btn{
display: flex; display: flex;

View File

@@ -21,7 +21,7 @@
</div> </div>
</div> </div>
<newScaleImage ref="newScaleImage"></newScaleImage> <newScaleImage ref="newScaleImage" @deletePorfolio="deletePorfolio"></newScaleImage>
<!-- <RobotAssist></RobotAssist> --> <!-- <RobotAssist></RobotAssist> -->
</div> </div>
@@ -131,7 +131,7 @@ export default defineComponent({
} }
filter.getListDate.page = 0 filter.getListDate.page = 0
fall.value.clearData() fall.value.clearData()
getPorfolio() // getPorfolio()
} }
let likeFile = (item:any,type:string) => { let likeFile = (item:any,type:string) => {
} }
@@ -175,8 +175,13 @@ export default defineComponent({
// .catch((rv) => { // .catch((rv) => {
// }); // });
} }
let deletePorfolio = (value:any)=>{
fall.value.deleteItem(value);
}
onMounted (()=>{ onMounted (()=>{
filter.isShowMark = false filter.isShowMark = false
filter.isNoData = false filter.isNoData = false
getPorfolio() getPorfolio()
let worksPage:any = document.querySelector('.works_page') let worksPage:any = document.querySelector('.works_page')
@@ -204,6 +209,7 @@ export default defineComponent({
t, t,
setprintModel, setprintModel,
setPortfolioLike, setPortfolioLike,
deletePorfolio,
} }
}, },
data() { data() {

View File

@@ -89,7 +89,7 @@
<div class="libray_right_content"> <div class="libray_right_content">
<div class="right_content_body" v-show="uploadGenerate =='Upload'"> <div class="right_content_body" v-show="uploadGenerate =='Upload'">
<div class="content_body_header" v-show="selectCode == 'DesignElements'"> <div class="content_body_header" v-show="selectCode == 'DesignElements'">
<div style="font-size:1.5rem;">All default materials are generated by AiDA ourselves</div> <div style="font-size:1.5rem;">{{ $t('LibraryPage.generated') }}</div>
</div> </div>
<!-- <div class="content_body_header"> --> <!-- <div class="content_body_header"> -->
<div class="content_body_header" v-show="selectCode != 'DesignElements'"> <div class="content_body_header" v-show="selectCode != 'DesignElements'">
@@ -225,12 +225,12 @@
</div> </div>
</div> </div>
</div> </div>
<a-popover> <!-- <a-popover>
<template #content> <template #content>
<p>Seed</p> <p>Seed</p>
</template> </template>
<input class="search_seed" max="9999" v-show="selectCode == 'Printboard' && scene?.value == 'Logo'" @input="ifSeedValue" v-model="searchPictureSeed" type="Number" placeholder='Seed' min="0"> <input class="search_seed" max="9999" v-show="selectCode == 'Printboard' && scene?.value == 'Logo'" @input="ifSeedValue" v-model="searchPictureSeed" type="Number" placeholder='Seed' min="0">
</a-popover> </a-popover> -->
<input <input
class="search_input " class="search_input "
@input="ifMaximumLength" @input="ifMaximumLength"
@@ -354,6 +354,7 @@ import { LoadingOutlined } from "@ant-design/icons-vue";
import { defineComponent,h ,ref,createVNode,nextTick,reactive,provide,computed} from 'vue' import { defineComponent,h ,ref,createVNode,nextTick,reactive,provide,computed} from 'vue'
// import HeaderComponent from "@/component/HomePage/Header.vue"; // import HeaderComponent from "@/component/HomePage/Header.vue";
import ModelPlacement from '@/component/LibraryPage/ModelPlacement.vue'; import ModelPlacement from '@/component/LibraryPage/ModelPlacement.vue';
// import ModelPlacement from '@/component/LibraryPage/ModelPlacementUpdata.vue';
import setLabel from '@/component/LibraryPage/setLabel.vue'; import setLabel from '@/component/LibraryPage/setLabel.vue';
import ModelPlacementMobile from '@/component/LibraryPage/ModelPlacementMobile.vue'; import ModelPlacementMobile from '@/component/LibraryPage/ModelPlacementMobile.vue';
import searchLabel from '@/component/LibraryPage/searchLabel.vue'; import searchLabel from '@/component/LibraryPage/searchLabel.vue';
@@ -508,6 +509,7 @@ export default defineComponent({
} }
let isTextarea = ref(false) let isTextarea = ref(false)
let workspace:any = ref({}) let workspace:any = ref({})
let generateLevel2:any = {}
return { return {
menuList, menuList,
selectImgList, selectImgList,
@@ -551,6 +553,7 @@ export default defineComponent({
options, options,
isTextarea, isTextarea,
workspace, workspace,
generateLevel2,
} }
}, },
data(this_) { data(this_) {
@@ -824,7 +827,9 @@ export default defineComponent({
}); });
}, },
deleteGenerate(index:any){ deleteGenerate(index:any){
if(this.isGenerate[this.selectCode])return // if(this.isGenerate[this.selectCode])return
let num = this.generateList[this.selectCode].length
let _this = this let _this = this
Modal.confirm({ Modal.confirm({
title: this.t('LibraryPage.jsContent1'), title: this.t('LibraryPage.jsContent1'),
@@ -834,7 +839,8 @@ export default defineComponent({
mask:false, mask:false,
centered:true, centered:true,
onOk() { onOk() {
_this.generateList[_this.selectCode].splice(index,1) let a = _this.generateList[_this.selectCode].length - num
_this.generateList[_this.selectCode].splice(index-a,1)
} }
}); });
}, },
@@ -1178,6 +1184,10 @@ export default defineComponent({
} }
}, },
deleteFile(index: any) { deleteFile(index: any) {
if(this.scene?.value == 'Slogan' && this.selectCode == 'Printboard'){
let createSlogan:any = this.$refs.createSlogan
createSlogan.isDeleteSlogan = true
}
this.selectGenerateList.splice(index, 1); this.selectGenerateList.splice(index, 1);
}, },
@@ -1224,6 +1234,9 @@ export default defineComponent({
sloganText = this.captionGeneration sloganText = this.captionGeneration
if(this.selectCode == "Sketchboard"){ if(this.selectCode == "Sketchboard"){
level2Type = this.selectGenerateList?.[0]?.categoryValue?this.selectGenerateList[0].categoryValue:'' level2Type = this.selectGenerateList?.[0]?.categoryValue?this.selectGenerateList[0].categoryValue:''
if(this.workspace.styleName){
sloganText = `${this.workspace.styleName},${sloganText}`
}
}else if(this.selectCode == "Printboard"){ }else if(this.selectCode == "Printboard"){
level2Type = this.scene?.value level2Type = this.scene?.value
if(level2Type == 'Slogan' && this.captionGeneration == ''){ if(level2Type == 'Slogan' && this.captionGeneration == ''){
@@ -1233,7 +1246,7 @@ export default defineComponent({
sloganText = `${arr[this.printModel.num-1]},${sloganText}` sloganText = `${arr[this.printModel.num-1]},${sloganText}`
} }
if(!base64 && level2Type == 'Slogan'){ if(!base64 && level2Type == 'Slogan'){
message.info('请绘制Slogan'); message.info(this.t('Generate.jsContent10'));
return return
} }
} }
@@ -1252,6 +1265,7 @@ export default defineComponent({
gender:selectCodeStr == 'Sketchboard'?this.sex:'', gender:selectCodeStr == 'Sketchboard'?this.sex:'',
sloganBase64:base64, sloganBase64:base64,
} }
this.generateLevel2[selectCodeStr] = data.level2Type
this.isGenerate[selectCodeStr] = true this.isGenerate[selectCodeStr] = true
this.isTextarea = false this.isTextarea = false
this.remGenerateTime[selectCodeStr] = setTimeout(()=>{ this.remGenerateTime[selectCodeStr] = setTimeout(()=>{
@@ -1282,6 +1296,7 @@ export default defineComponent({
} }
).catch(res=>{ ).catch(res=>{
// this.isShowMark = false // this.isShowMark = false
this.generateLevel2[selectCodeStr] = ''
this.isGenerate[selectCodeStr] = false this.isGenerate[selectCodeStr] = false
clearInterval(this.remGenerateTime[selectCodeStr]) clearInterval(this.remGenerateTime[selectCodeStr])
this.remGenerate[selectCodeStr] = false this.remGenerate[selectCodeStr] = false
@@ -1314,6 +1329,7 @@ export default defineComponent({
// element.category = this.scene?.value // element.category = this.scene?.value
this.generateList[str].unshift(element) this.generateList[str].unshift(element)
data = data.filter((item:any) => item !== element.taskId); data = data.filter((item:any) => item !== element.taskId);
} }
}); });
if((data.length == 0)|| (rv.filter((item:any)=>item.status == 'Invalid').length == data.length)){ if((data.length == 0)|| (rv.filter((item:any)=>item.status == 'Invalid').length == data.length)){
@@ -1324,6 +1340,7 @@ export default defineComponent({
clearInterval(this.remGenerateTime[str]) clearInterval(this.remGenerateTime[str])
this.remGenerate[str] = false this.remGenerate[str] = false
this.isGenerate[str] = false this.isGenerate[str] = false
this.generateLevel2 = ''
} }
} }
} }
@@ -1333,6 +1350,7 @@ export default defineComponent({
// this.isShowMark = false // this.isShowMark = false
this.isGenerate[str] = false this.isGenerate[str] = false
this.remGenerate[str] = false this.remGenerate[str] = false
this.generateLevel2[str] = ''
}); });
},1000) },1000)
}, },
@@ -1343,7 +1361,16 @@ export default defineComponent({
clearInterval(this.generateTime[this.selectCode]) clearInterval(this.generateTime[this.selectCode])
if(this.generateProceedList){ if(this.generateProceedList){
let str = this.generateProceedList.map((obj:any) => obj.taskId).join(','); let str = this.generateProceedList.map((obj:any) => obj.taskId).join(',');
let data = {uniqueId:str,userId:(this?.userInfo as any)?.userId,timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone} let type = 'Generate'
if(this.generateLevel2[str] == 'Logo'){
type = 'Logo'
}
let data = {
uniqueId:str,
userId:(this?.userInfo as any)?.userId,
timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone,
type: type
}
Https.axiosGet(Https.httpUrls.generateStopWaiting, {params:data}).then( Https.axiosGet(Https.httpUrls.generateStopWaiting, {params:data}).then(
(rv) => { (rv) => {
this.generateProceedList = [] this.generateProceedList = []

View File

@@ -676,8 +676,7 @@ export default defineComponent({
let submit = (value:any)=>{ let submit = (value:any)=>{
Https.axiosPost(Https.httpUrls.questionnaire, value).then( Https.axiosPost(Https.httpUrls.questionnaire, value).then(
(rv) => { (rv) => {
console.log(rv); alert('Submit Successfully!')
} }
).catch(res=>{ ).catch(res=>{
}); });
@@ -790,7 +789,7 @@ export default defineComponent({
border: 2px solid rgb(173, 173, 173); border: 2px solid rgb(173, 173, 173);
} }
input,select{ input,select{
height: 40px; height: 7rem;
} }
input, input,
button, button,

View File

@@ -672,6 +672,7 @@ export default defineComponent({
let submit = (value:any)=>{ let submit = (value:any)=>{
Https.axiosPost(Https.httpUrls.questionnaire, value).then( Https.axiosPost(Https.httpUrls.questionnaire, value).then(
(rv) => { (rv) => {
alert('提交成功!')
} }
).catch(res=>{ ).catch(res=>{
}); });
@@ -783,7 +784,7 @@ export default defineComponent({
border: 2px solid rgb(173, 173, 173); border: 2px solid rgb(173, 173, 173);
} }
input,select{ input,select{
height: 40px; height: 7rem;
} }
input, input,
button, button,