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

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.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;
line-height: 3.3rem;
zoom: 1;
white-space: nowrap;
}
.started_btn .fi-br-loading::before {
transition: all 0.5s;

View File

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

View File

@@ -2,7 +2,8 @@
<div class="detail_modal_body_select">
<div v-show="(type_ == 1 || type_ == 2 || type_ == 4) && select == true">
<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
@click.stop="open(1)"
class="switch_type_item"
@@ -35,7 +36,7 @@
></template>
</a-select>
</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()">
<div class="search_icon_block" @click.stop="getLibraryList()"><span class="icon iconfont icon-sousuo"></span></div>
</div>
@@ -1130,19 +1131,19 @@ export default defineComponent({
)
});
this.selectColorList = selectColorList
// this.getHsvColor(selectColorList)
// this.selectColor = {rgba:{r:color[0],g:color[1],b:color[2],a:1},hex:colorHex}
let colorListIndex = []
this.colorList.forEach((item,index)=>{
if(!item.rgba){
colorListIndex.push(index)
}
})
for (let index = 0; index < selectColorList.length; index++) {
this.colorList[colorListIndex[0]] = selectColorList[index]
this.getPantongName(selectColorList[index].rgba,colorListIndex[0])
colorListIndex.splice(0,1)
}
this.getHsvColor(selectColorList)
this.selectColor = {rgba:{r:color[0],g:color[1],b:color[2],a:1},hex:colorHex}
// let colorListIndex = []
// this.colorList.forEach((item,index)=>{
// if(!item.rgba){
// colorListIndex.push(index)
// }
// })
// for (let index = 0; index < selectColorList.length; index++) {
// this.colorList[colorListIndex[0]] = selectColorList[index]
// this.getPantongName(selectColorList[index].rgba,colorListIndex[0])
// colorListIndex.splice(0,1)
// }
img.remove()
};

View File

@@ -39,10 +39,10 @@
</div>
<div class="print_right show_print_right Guide_1_25" :class="[driver__.driver?'showEvents':'']">
<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)">
</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)">
</div>
<!-- <div class="designOpenrtion_overall" v-show="!overallSingle">
@@ -102,9 +102,10 @@
</li>
</ul>
<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 animtion2"></i>
<li class="designOpenrtion_rotote" v-rotote.stop="[0,printStyleList[stateOverallSingle][0].transform]"></li>
<!-- <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="">
</li> -->
@@ -257,7 +258,9 @@ export default defineComponent({
let x = e.clientX - X
let y = Y - e.clientY
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)"
}
}
@@ -652,7 +655,8 @@ export default defineComponent({
location = [arr[index].style.left.replace(/px/g,'')*sketchNum,arr[index].style.top.replace(/px/g,'')*sketchNum]
}
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,
priority:arr[index].style.zIndex,
scale: scale,
@@ -1038,6 +1042,7 @@ export default defineComponent({
i{
display: flex;
color: #14bcff;
justify-content: center;
}
.animtion1{
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}">
<img :src="item.path" @click="setpitch(item,index)">
</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)">
</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)">
</div>
<!-- <div class="designOpenrtionMobile_overall" v-show="!overallSingle">
@@ -103,9 +103,10 @@
</li>
</ul>
<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 animtion2"></i>
<li class="designOpenrtionMobile_rotote" v-rotote.stop="[0,printStyleList[stateOverallSingle][0].transform]"></li>
<!-- <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="">
</li> -->
@@ -257,7 +258,9 @@ export default defineComponent({
let x = e.targetTouches[0].clientX - X
let y = Y - e.targetTouches[0].clientY
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)"
}
}
@@ -652,7 +655,8 @@ export default defineComponent({
location = [arr[index].style.left.replace(/px/g,'')*sketchNum,arr[index].style.top.replace(/px/g,'')*sketchNum]
}
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,
priority:arr[index].style.zIndex,
scale: scale,
@@ -1074,6 +1078,7 @@ export default defineComponent({
i{
display: flex;
color: #14bcff;
justify-content: center;
}
.animtion1{
animation: anim 4s 2s linear infinite;

View File

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

View File

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

View File

@@ -123,9 +123,8 @@
<img src="#" :title="pantongNameList[index]">
</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 class="right_content_line">
<div class="upload_right_header">
@@ -201,6 +200,7 @@ export default defineComponent({
selectIndex:-1,
gradientShow:false,
})
let isSelectSuccessively = ref(false)
return {
fileList,
colorList,
@@ -209,6 +209,7 @@ export default defineComponent({
driver__,
t,
gradient,
isSelectSuccessively,
}
},
watch:{
@@ -487,16 +488,16 @@ export default defineComponent({
this.selectColor = {rgba:{r:color[0],g:color[1],b:color[2],a:1},hex:colorHex}
// console.log(this.colorList);
// console.log(selectColorList);
let colorListIndex = []
this.colorList.forEach((item,index)=>{
if(!item.rgba){
colorListIndex.push(index)
}
})
for (let index = 0; index < selectColorList.length; index++) {
this.colorList[colorListIndex[0]] = selectColorList[index]
colorListIndex.splice(0,1)
}
// let colorListIndex = []
// this.colorList.forEach((item,index)=>{
// if(!item.rgba){
// colorListIndex.push(index)
// }
// })
// for (let index = 0; index < selectColorList.length; index++) {
// this.colorList[colorListIndex[0]] = selectColorList[index]
// colorListIndex.splice(0,1)
// }
nextTick().then(()=>{
if(this.driver__.driver){
driverObj__.moveNext()
@@ -524,10 +525,21 @@ export default defineComponent({
},
setUplpadColor(color){
nextTick().then(()=>{
this.selectColor = color
if(this.driver__.driver){
driverObj__.moveNext()
if(this.isSelectSuccessively){
for (let index = 0; index < this.colorList.length; index++) {
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)
this.setColorboardList(colorList)
}
},
}
})
</script>
@@ -834,10 +846,12 @@ export default defineComponent({
.right_content_line{
padding-left: calc(3rem*1.2);
position: relative;
padding-right: calc(5rem*1.2);
padding-right: calc(3rem*1.2);
margin-right: 2.4rem;
.upload_centetn{
overflow-x: hidden;
height: calc(100% - 4.4rem*1.2);
padding-bottom: 4rem;
}
.upload_centetn::-webkit-scrollbar {
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{
margin: auto;
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>
<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="setShare">{{ $t('exportModel.Share') }}</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>
</a-modal>
<publish ref="publish"></publish>
<publish ref="publish" @setPublish="setSubmit"></publish>
</a-modal>
</template>
<script>
@@ -573,6 +573,8 @@ export default defineComponent({
isShowMark.value = false
}
updateCanvasState('')//加载完成后记录一下
setOperation('move')
closeNav.value.tool = true
if(driver__.value.driver){
driverObj__.moveNext()
}

View File

@@ -39,12 +39,12 @@
</div>
</div>
</div>
<a-popover>
<!-- <a-popover>
<template #content>
<p>Seed</p>
</template>
<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
class="search_input"
@@ -244,6 +244,7 @@ export default defineComponent({
let remGenerate:any = ref(false)
let remGenerateTime:any = ref()
let styleRecommend:any = inject('styleRecommend')
let generateLevel2Type = ''
return {
searchPictureName,
searchPictureSeed,
@@ -270,6 +271,7 @@ export default defineComponent({
remGenerate,
remGenerateTime,
styleRecommend,
generateLevel2Type,
};
},
data(prop) {
@@ -431,6 +433,9 @@ export default defineComponent({
sloganText = this.searchPictureName
if(this.upload.level1Type == "Sketchboard"){
level2Type = this.sketchboardList?.[0]?.categoryValue?this.sketchboardList[0].categoryValue:''
if(this.workspace.styleName){
sloganText = `${this.workspace.styleName},${sloganText}`
}
}else if(this.upload.level1Type == "Printboard"){
level2Type = this.scene?.value
if(level2Type == 'Slogan' && this.searchPictureName == ''){
@@ -440,7 +445,7 @@ export default defineComponent({
sloganText = `${this.printModel.value},${sloganText}`
}
if(!base64 && level2Type == 'Slogan'){
message.info('请绘制Slogan');
message.info(this.t('Generate.jsContent10'));
return
}
}
@@ -459,6 +464,7 @@ export default defineComponent({
gender:this.workspace.sexEnum.value,
sloganBase64:base64,
}
this.generateLevel2Type = data.level2Type
this.isGenerate = true
this.remGenerateTime = setTimeout(()=>{
this.remGenerate = true
@@ -484,6 +490,7 @@ export default defineComponent({
}
).catch(res=>{
this.generateLevel2Type = ''
this.isGenerate = false
clearInterval(this.remGenerateTime)
this.remGenerate = false
@@ -534,6 +541,7 @@ export default defineComponent({
clearInterval(this.remGenerateTime)
this.remGenerate = false
this.isGenerate = false
this.generateLevel2Type = ''
}
}
}
@@ -542,6 +550,7 @@ export default defineComponent({
clearInterval(this.remGenerateTime)
this.isGenerate = false
this.remGenerate = false
this.generateLevel2Type = ''
});
},1000)
},
@@ -552,7 +561,16 @@ export default defineComponent({
clearInterval(this.generateTime)
if(this.generateProceedList){
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(
(rv) => {
this.generateProceedList = []
@@ -576,6 +594,7 @@ export default defineComponent({
}
if(this.upload.level1Type == "Moodboard"){
this.styleRecommend.push(value)
this.styleRecommend = [...new Set(this.styleRecommend)]
}
this.searchPictureName += str + value
},
@@ -674,6 +693,10 @@ export default defineComponent({
this.sketchboardList = data
},
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);
// if((this.sketchboardList.length<2 && this.moodboarList.length == 0) || this.sketchboardList.length == 0){
// this.printModel = {
@@ -721,7 +744,8 @@ export default defineComponent({
}
},
deleteGenerate(index:any){
if(this.isGenerate)return
// if(this.isGenerate)return
let num = this.fileList.length
let _this = this
Modal.confirm({
title: this.t('LibraryPage.jsContent1'),
@@ -731,7 +755,8 @@ export default defineComponent({
mask:false,
centered:true,
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) => {
if(rv){
if(rv.isTutorial){
if(rv?.isTutorial){
this.record.push({
state:1,
str:this.t('RobotAssist.jsContent5'),

View File

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

View File

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

View File

@@ -27,10 +27,10 @@
<div>Color</div>
<input type="color" v-model="fill">
</div>
<div class="clearSlogan_center_btn_item">
<!-- <div class="clearSlogan_center_btn_item">
<div>font Size</div>
<input type="Number" v-model="fontSize">
</div>
</div> -->
<div class="clearSlogan_center_btn_item">
<div>Font Align</div>
<ul>
@@ -105,6 +105,7 @@ export default defineComponent({
let scale = 2;
let exportWH = 512
let canvasWH = ref(0);
let isDeleteSlogan = ref(false)
let textData = reactive({
fill:'#000000',
fontSize:'51',
@@ -149,6 +150,13 @@ export default defineComponent({
canvasWH.value = height
scale = exportWH/canvasWH.value
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){
var canvasDom = document.createElement("canvas");
@@ -160,7 +168,6 @@ export default defineComponent({
isDrawingMode: false, // 开启绘图模式
});
canvas.on('object:moving',canvasMoving)
setTextFun('请输入\n一段话吧~')
}
@@ -268,8 +275,8 @@ export default defineComponent({
dom.style.left = domXY.x+'px'
dom.style.top = (domXY.y + 5)+'px'
}
let textbox
let setTextFun = (str)=>{
let textbox
textbox = new fabric.IText(str, {
fontSize: 20,
textAlign:'center'
@@ -360,6 +367,7 @@ export default defineComponent({
...toRefs(textData),
...toRefs(textDataList),
textBtnShow,
isDeleteSlogan,
t,
init,
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')}}
</div>
</div>
<div class="input_clear started_btn">清空</div>
<!-- <div class="input_clear started_btn" @click="clearPrductimg">{{$t('ProductImg.Clear')}}</div> -->
</div>
</div>
<div class="productImg_right">
@@ -123,11 +123,14 @@
<div class="productImg_right_item_like">
<i class="fi fi-rr-heart" @click.stop="likeFile(item,'like',index)"></i>
</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>
</div>
<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>
@@ -136,15 +139,15 @@
<div class="button_second" @click="setExport">{{$t('ProductImg.Export')}}</div>
</div>
<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="">
<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>
</div>
<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 class="productImg_right_item_menu">
<div class="productImg_right_item_menu iconLeft">
<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>
@@ -202,15 +205,15 @@ export default defineComponent({
isProductimg:false,//开始生成
selectProductimgList:[],
generateList:{},
likeList:{},
likeList:[],
})
let productimgMenuList = ref([
{
value:'ProductImage',
label:useI18n().t('ProductImg.ProductImage')
},{
value:'ProductImage1',
label:'123123'
value:'Relight',
label:useI18n().t('ProductImg.Relight')
}
])
let productimgMenu:any = ref(productimgMenuList.value[0])
@@ -242,7 +245,7 @@ export default defineComponent({
rv.forEach((item:any) => {
item.imgUrl = item.url
});
productImgData.likeList[productimgMenu.value.value] = rv
productImgData.likeList = rv
}
).catch(res=>{
});
@@ -263,7 +266,7 @@ export default defineComponent({
let cleardata = ()=>{
productImg.value = false
productImgData.isShowMark = false
productImgData.likeList = {}
productImgData.likeList = []
productImgData.generateList = {}
productimgMenu.value = productimgMenuList.value[0]
}
@@ -278,6 +281,9 @@ export default defineComponent({
file.id = res.data.id
file.isChecked = true
file.type = 'ProductElement'
if(productimgMenu.value.value == 'Relight'){
file.type = "ToProductImage"
}
productImgData.fileList[productimgMenu.value.value].filter((v: any) => v.status === "done");
}else{
bor = false
@@ -322,17 +328,14 @@ export default defineComponent({
Https.axiosPost(url, data).then(
(rv) => {
if(str == 'like'){
if(!productImgData.likeList[productimgMenu.value.value]){
productImgData.likeList[productimgMenu.value.value] = []
}
productImgData.likeList[productimgMenu.value.value].push(item)
productImgData.likeList.push(item)
productImgData.generateList[productimgMenu.value.value].splice(index,1)
}else{
if(!productImgData.generateList[productimgMenu.value.value]){
productImgData.generateList[productimgMenu.value.value] = []
}
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 imgList:any = []
productimgMenuList.value.forEach((item:any)=>{
if(productImgData.likeList[item.value]){
imgList.push(...productImgData.likeList[item.value])
}
})
imgList = productImgData.likeList
let data = {
key:'FinalizeImage',
imgList:imgList,
@@ -386,6 +385,10 @@ export default defineComponent({
if(item.isChecked){
obj.elementId = item.designOutfitId
obj.elementType = 'DesignOutfit'
if(productimgMenu.value.value == 'Relight'){
obj.elementId = item.id
obj.elementType = 'ToProductImage'
}
selectArr.push(JSON.parse(JSON.stringify(obj)))
}
})
@@ -404,7 +407,11 @@ export default defineComponent({
remPrductimgTime = setTimeout(()=>{
productImgData.remProductimg = true
},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) => {
let arr:any = []
rv.forEach((item:any)=>{
@@ -424,10 +431,15 @@ export default defineComponent({
let data = dataList
let dataNum = dataList.length
let state = true
let url = Https.httpUrls.toProductImageResult
if(productimgMenu.value.value == 'Relight'){
url = Https.httpUrls.relightResult
}
prductimgTime = setInterval(()=>{
if(!state)return
state = false
Https.axiosPost(Https.httpUrls.toProductImageResult, data).then(
Https.axiosPost(url, data).then(
(rv) => {
state = true
if(productImgData.isProductimg){//防止取消后有正在执行的获取状态
@@ -499,6 +511,7 @@ export default defineComponent({
selectList.value[productimgMenu.value.value] = []
}
if(selectList.value[menuItem.value].indexOf(item) == -1){
item.isChecked = true
selectList.value[menuItem.value].push(item)
}
generalIsMenuShow.menuShow = false
@@ -507,6 +520,9 @@ export default defineComponent({
generalIsMenuShow.menuShow = false
generalIsMenuShow = {}
document.removeEventListener('click',removeMenuShow)
}
let clearPrductimg = ()=>{
}
//超分
let setTask = (data:any)=>{
@@ -538,6 +554,7 @@ export default defineComponent({
setScaleImage,
setMenu,
setMenuShow,
clearPrductimg,
setTask,
};
},
@@ -725,7 +742,7 @@ export default defineComponent({
justify-content: space-around;
.input_box{
flex: 0;
margin-left: auto;
}
.started_btn{
// width: 13rem;
@@ -760,9 +777,16 @@ export default defineComponent({
.productImg_right_item_like,.productImg_right_item_scale,.productImg_right_item_menu{
display: none;
position: absolute;
top: 1rem;
top: 2rem;
right: 2rem;
cursor: pointer;
width: 3rem;
height: 3rem;
background: #fff;
align-items: center;
justify-content: center;
border-radius: .5rem;
border: .1rem solid #ccc;
.fi-sr-heart{
color: red;
}
@@ -771,12 +795,15 @@ export default defineComponent({
ul{
top: 100%;
position: absolute;
width: 10rem;
width: 13rem;
left: 0;
text-align: center;
border-radius: calc(1rem*1.2);
overflow: hidden;
z-index: 3;
li{
background: #cccccc;
padding: .5rem 1rem;
}
li:hover{
// background: rgba(0,0,0,.4);
@@ -790,12 +817,12 @@ export default defineComponent({
right: auto;
}
.productImg_right_item_scale{
top: 4rem;
top: 6rem;
}
}
.productImg_right_item:hover{
.productImg_right_item_like,.productImg_right_item_scale,.productImg_right_item_menu{
display: block;
display: flex;
}
}
.productImg_right_item:last-child{

View File

@@ -20,8 +20,8 @@
</div>
</div>
<div class="scaleImage_content">
<img v-if="isComparison" :src="scaleImageList[scaleImageIndex]?.sourceUrl">
<img :src="scaleImageList[scaleImageIndex]?.imgUrl">
<!-- <img v-if="isComparison" :src="scaleImageList[scaleImageIndex]?.url"> -->
<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-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 = {
libraryId:this.printObject.id,
templateId:this.printObject.templateId || null,
@@ -610,7 +610,7 @@ export default defineComponent({
modelSex:this.sex,
checkMd5:1,
timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone,
...this.getPrintLocation()
...await this.getPrintLocation()
}
if(this.userInfo.userId == 88 || this.userInfo.userId == 83){
param.modelType = this.modelType
@@ -686,8 +686,19 @@ export default defineComponent({
});
})
},
getPrintLocation(){
async getPrintLocation(){
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 returnData:any = {}
let newLocationList = JSON.parse(JSON.stringify(this.locationList))
@@ -720,7 +731,7 @@ export default defineComponent({
libraryId:this.printObject.relationId || null,
templateId:this.printObject.templateId || null,
timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone,
...this.getPrintLocation()
...await this.getPrintLocation()
}
let cropper:any = this.$refs.cropper
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();
}
},
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() {
if (this.wait_list.length <= 0) {
this.loading = false;

View File

@@ -12,7 +12,7 @@
:destroyOnClose="true"
>
<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>
</div>
<!-- <div class="collection_closeIcon" @click.stop="download()">
@@ -24,7 +24,10 @@
<div class="newScaleImage_content_right">
<div class="newScaleImage_content_right_img">
<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"> -->
</div>
</div>
@@ -44,16 +47,58 @@
<div class="scaleImage_chunk_title_intro">
Overall
</div> -->
<div class="scaleImage_chunk_title">{{scaleImageData.portfolioName}}</div>
<div class="scaleImage_chunk_title_intro">{{scaleImageData.portfolioDes}}</div>
<!-- <div class="scaleImage_chunk_title_intro">zhh</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 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="content_left_collection_content_list">
<img v-for="item in scaleImageData?.designPythonOutfitList" v-lazy="item.designUrl">
</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 v-else class="newScaleImage_right_content_generate">
<div class="scaleImage_chunk_item content_left_generate_item">
@@ -75,18 +120,9 @@
</div>
</div>
</div>
<div class="newScaleImage_right_detail">
<div v-if="false" class="newScaleImage_right_detail">
<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="scaleImage_chunk_title">{{ scaleImageData?.portfolioName }}</div> -->
<!-- <div class="scaleImage_chunk_title_intro">{{ scaleImageData?.portfolioDes }}</div> -->
@@ -101,27 +137,7 @@
<span>{{ scaleImageData.updateDate }}</span>
</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="scaleImage_chunk_title">Auther Other Products</div>
<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.first')}}</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 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">
<img v-lazy="scaleImageData?.imgUrl">
</div> -->
@@ -170,13 +192,12 @@
<span>123</span>
</div> -->
<div class="left_content_item_btn">
{{userInfo.userName }}{{item.userName}}
<div class="left_content_item_delete" v-if="userInfo.userName === item.userName" @click="setDelete(item)">删除</div>
<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_unfold" @click="()=>item.detailUnfold = !item.detailUnfold">{{item.detailUnfold?$t('newScaleImage.Collapse'):$t('newScaleImage.unfold')}}</div>
</div>
</div>
<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">
<!-- <img v-lazy="scaleImageData?.imgUrl"> -->
</div>
@@ -196,7 +217,7 @@
<span>123</span>
</div> -->
<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>
</div>
@@ -216,12 +237,7 @@
</span>
</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>
@@ -230,18 +246,22 @@
</template>
<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 { getCookie } from "@/tool/cookie";
// import domTurnImg from '@/tool/domTurnImg'
import { useStore } from "vuex";
import { useRouter } from 'vue-router'
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 { ExclamationCircleOutlined } from '@ant-design/icons-vue';
import fullScreenImg from '@/component/HomePage/fullScreenImg.vue'
export default defineComponent({
setup() {
components:{fullScreenImg},
emits:['deletePorfolio'],
setup(props:any,{emit}) {
let {t} = useI18n()
//首先在setup中定义
let userInfo = ref({});
@@ -288,7 +308,10 @@ export default defineComponent({
document.addEventListener('click',removeCommentReply)
// let scaleImageList = this.store.state.UploadFilesModule.moodboard
}
let cancelDsign = ()=>{
let cancelDsign = (id:any)=>{
if(id){
emit('deletePorfolio',id)
}
scaleImage.value = false
imgData.scaleImageIndex = 0
imgData.scaleImageData = {}
@@ -385,6 +408,9 @@ export default defineComponent({
imgData.commentInput = t('newScaleImage.jsContent3')
}
let setComment = ()=>{
if(!imgData.commentText){
return message.info(t('LibraryPage.jsContent7'))
}
let data = {
"accountId": 0,
"comment": imgData.commentText,
@@ -398,21 +424,20 @@ export default defineComponent({
Https.axiosPost(Https.httpUrls.portfolioComment, data)
.then((rv) => {
imgData.commentText = ''
getCommentPage('comment')
getCommentPage({str:'comment',id:imgData.scaleImageData.id})
})
.catch((rv) => {
});
}
let getCommentPage = (str:any)=>{
let getCommentPage = (value:any)=>{
let data = imgData.getCommentData
imgData.isShowMark = true
Https.axiosPost(Https.httpUrls.portfolioCommentPage,data).then(
(rv: any) => {
if(rv.content.length == imgData.commentList.length&&str != 'comment'){
imgData.isNoData = true
return
}
rv.content.forEach((item:any)=>{
if(value.id == item.portfolioId){
item.unfold = true
}
item.createTimes = setPubDate(item.createTime)
if (item.childCommentVOList) {
item.childCommentVOList.forEach((obj:any)=>{
@@ -422,8 +447,10 @@ export default defineComponent({
})
// imgData.commentList.push(...rv.content)
imgData.commentList = rv.content
imgData.isShowMark = false
if(rv.total == rv.content.length&&value?.str != 'comment'){
imgData.isNoData = true
}
}
).catch((res)=>{
imgData.isShowMark = false
@@ -453,8 +480,64 @@ export default defineComponent({
.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,
(newVal,oldVal)=>{
@@ -466,7 +549,7 @@ export default defineComponent({
)
onMounted(()=>{
let user:any = getCookie('userInfo')
userInfo = JSON.parse(user)
userInfo.value = JSON.parse(user)
})
return {
userInfo,
@@ -484,9 +567,10 @@ export default defineComponent({
LikeFile,
setChoose,
setCommentReply,
deletePortfolio,
setComment,
setPortfolioLike,
setDelete,
setDeleteComment,
};
},
directives:{
@@ -590,9 +674,15 @@ export default defineComponent({
color: #000;
overflow: hidden;
max-height: 100px;
text-align: left;
&.active{
max-height: max-content;
}
span{
font-size: 1.8rem;
font-weight: 300;
color: #535353;
}
}
.scaleImage_chunk_title_comment{
font-size: 1.6rem;
@@ -612,7 +702,24 @@ export default defineComponent({
// text-overflow: ellipsis;
// 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{
display: flex;
width: 60%;
@@ -643,6 +750,10 @@ export default defineComponent({
>div{
width: 100%;
height: auto;
>div{
width: 100%;
height: 100%;
}
img{
// width: auto;
max-width: 100%;
@@ -717,6 +828,12 @@ export default defineComponent({
display: flex;
flex-direction: column;
height: var(--content-height);
.detail_left_right_item_click{
cursor: pointer;
i{
color: #9e9ea7;
}
}
.generate_item_title_left{
font-size: 2.4rem;
}
@@ -744,7 +861,7 @@ export default defineComponent({
}
}
.content_left_collection_detail{
height: calc(8rem + var(--padding) * 2);
// height: calc(8rem + var(--padding) * 2);
display: flex;
flex-direction: column;
align-items: flex-start;
@@ -752,6 +869,9 @@ export default defineComponent({
.scaleImage_chunk_title{
margin-right: 1rem;
}
>div{
margin-bottom: .5rem;
}
}
.content_left_collection_content{
flex: 1;
@@ -825,12 +945,7 @@ export default defineComponent({
.detail_left_right_item{
margin-bottom: var(--margin);
}
.detail_left_right_item_click{
cursor: pointer;
i{
color: #9e9ea7;
}
}
.detail_left_right_item:last-child{
margin-bottom: 0;
}
@@ -964,18 +1079,18 @@ export default defineComponent({
align-items: center;
height: 8rem;
justify-content: center;
margin-top: 3rem;
position: sticky;
z-index: 2;
padding-bottom: var(--padding);
padding-top: var(--padding);
bottom: 0;
top: 0;
background: #f5f5f5;
input,.detail_left_setComment_btn{
border-radius: 1rem;
}
input{
padding-left: var(--padding);
flex: 1;
height: 100%;
width: 50%;
font-size: 2rem;
@@ -1040,23 +1155,7 @@ export default defineComponent({
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{
display: flex;
justify-content: space-between;

View File

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

View File

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

View File

@@ -151,6 +151,8 @@ export default {
SelectedProduct:'Selected Product',
Export:'Export',
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?',
jsContent2:'Please select at least one picture',
},
@@ -171,6 +173,7 @@ export default {
NoLabel:'No Label',
unionSet:'union set',
all:'all',
generated:'All default materials are generated by AiDA ourselves',
ImageOnly:'Image Only',
TextOnly:'Text Only',
TextImage:'Text-Image',
@@ -308,6 +311,8 @@ export default {
RGBA:'RGBA',
UploadImage:'Upload Image',////////////
ColorCode:'Color Code',
SelectSuccessively:'Select Successively',
SelectSeparately:'Select Separately',
ExtractColor:'Extract Color',
Single:'Single',
Gradual:'Gradual',
@@ -383,6 +388,7 @@ export default {
jsContent7:"upload failed",
jsContent8:"You have {num} remaining opportunity to generate {str}.",
jsContent9:"You have exhausted your generation opportunities {str}.",
jsContent10:"Please complete the slogan picture",
},
collectionModal:{
Moodboard:'Moodboard',
@@ -472,6 +478,7 @@ export default {
Permissions:'Permissions',
PermissionsItem1:'Whether to allow other users to perform secondary creation.',
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?',
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?',
@@ -487,11 +494,16 @@ export default {
first:'You can be the first!',
reply:'Reply',
unfold:'Expand',
Title:'Title',
Delete:'Delete',
Describe:'Describe',
Collapse:'Collapse',
replyAll:'All replies',
jsContent1:'Please log in or upgrade to an official user',
jsContent2:'The author is not allowed to use it',
jsContent3:'Please enter a comment',
jsContent4:'Do you need to delete this comment',
jsContent5:'Whether to delete the current gallery',
},
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.",

View File

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

View File

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

View File

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

View File

@@ -10,39 +10,40 @@
/>
</div>
</div>
<div class="homeRecommend_right" v-if="systemUser.value == 0">
<a class="started_btn" href="https://code-create.com.hk/aida/" target="_blank">升级成为正式用户</a>
<div class="started_btn started_btn2" @click="logout">退出登录</div>
<div class="homeRecommend_right">
<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" v-if="systemUser.value != -1" @click="logout">log off</div>
</div>
<div class="homeRecommend_right" v-else-if="systemUser.value == -1">
<div class="started_btn" @click="setLogin">登录</div>
<div class="started_btn started_btn2" @click="setRegister">注册</div>
<div class="homeRecommend_right" v-if="systemUser.value == -1">
<div class="started_btn" @click="setLogin">Login</div>
<div class="started_btn started_btn2" @click="setRegister">Visitor registration</div>
</div>
</header>
<div class="homeRecommend_content_body">
<div class="homeRecommend_content_body_recommend" id="aaaa">
<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_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_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_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_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_img1 content_body_img" src="/image/mainImg/img1.png" alt="">
<img class="content_body_img2 content_body_img" src="/image/mainImg/img2.png" alt="">
<img class="content_body_img3 content_body_img" src="/image/mainImg/img3.png" alt="">
<img class="content_body_img4 content_body_img" src="/image/mainImg/img4.png" alt="">
<img class="content_body_img5 content_body_img" src="/image/mainImg/img5.png" alt="">
</div>
<div class="content_body_recommend_center content_body_text">
<div class="content_body_recommend_center_title">
<h1>全球<div>最佳创作者</div>齐聚AIDA</h1>
<h1>AiDA × ANY</h1>
<h3>bloom your creativity</h3>
</div>
<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-trial/" 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">START TRIAL</a>
</div>
</div>
<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_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_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_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_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_img1 content_body_img" src="/image/mainImg/img6.png" alt="">
<img class="content_body_img2 content_body_img" src="/image/mainImg/img7.png" alt="">
<img class="content_body_img3 content_body_img" src="/image/mainImg/img8.png" alt="">
<img class="content_body_img4 content_body_img" src="/image/mainImg/img9.png" alt="">
<img class="content_body_img5 content_body_img" src="/image/mainImg/img10.png" alt="">
</div>
</div>
<Works :isScroll="false"></Works>
@@ -377,11 +378,18 @@ export default defineComponent({
h1{
line-height: 1;
font-size: 13rem;
font-weight: 600;
font-weight: 900;
margin: 7rem;
div{
color: #341e57;
}
}
h3{
line-height: 1;
margin: 7rem;
font-size: 5rem;
font-weight: 900;
}
}
.content_body_recommend_center_btn{
display: flex;

View File

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

View File

@@ -89,7 +89,7 @@
<div class="libray_right_content">
<div class="right_content_body" v-show="uploadGenerate =='Upload'">
<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 class="content_body_header"> -->
<div class="content_body_header" v-show="selectCode != 'DesignElements'">
@@ -225,12 +225,12 @@
</div>
</div>
</div>
<a-popover>
<!-- <a-popover>
<template #content>
<p>Seed</p>
</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">
</a-popover>
</a-popover> -->
<input
class="search_input "
@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 HeaderComponent from "@/component/HomePage/Header.vue";
import ModelPlacement from '@/component/LibraryPage/ModelPlacement.vue';
// import ModelPlacement from '@/component/LibraryPage/ModelPlacementUpdata.vue';
import setLabel from '@/component/LibraryPage/setLabel.vue';
import ModelPlacementMobile from '@/component/LibraryPage/ModelPlacementMobile.vue';
import searchLabel from '@/component/LibraryPage/searchLabel.vue';
@@ -508,6 +509,7 @@ export default defineComponent({
}
let isTextarea = ref(false)
let workspace:any = ref({})
let generateLevel2:any = {}
return {
menuList,
selectImgList,
@@ -551,6 +553,7 @@ export default defineComponent({
options,
isTextarea,
workspace,
generateLevel2,
}
},
data(this_) {
@@ -824,7 +827,9 @@ export default defineComponent({
});
},
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
Modal.confirm({
title: this.t('LibraryPage.jsContent1'),
@@ -834,7 +839,8 @@ export default defineComponent({
mask:false,
centered:true,
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) {
if(this.scene?.value == 'Slogan' && this.selectCode == 'Printboard'){
let createSlogan:any = this.$refs.createSlogan
createSlogan.isDeleteSlogan = true
}
this.selectGenerateList.splice(index, 1);
},
@@ -1224,6 +1234,9 @@ export default defineComponent({
sloganText = this.captionGeneration
if(this.selectCode == "Sketchboard"){
level2Type = this.selectGenerateList?.[0]?.categoryValue?this.selectGenerateList[0].categoryValue:''
if(this.workspace.styleName){
sloganText = `${this.workspace.styleName},${sloganText}`
}
}else if(this.selectCode == "Printboard"){
level2Type = this.scene?.value
if(level2Type == 'Slogan' && this.captionGeneration == ''){
@@ -1233,7 +1246,7 @@ export default defineComponent({
sloganText = `${arr[this.printModel.num-1]},${sloganText}`
}
if(!base64 && level2Type == 'Slogan'){
message.info('请绘制Slogan');
message.info(this.t('Generate.jsContent10'));
return
}
}
@@ -1252,6 +1265,7 @@ export default defineComponent({
gender:selectCodeStr == 'Sketchboard'?this.sex:'',
sloganBase64:base64,
}
this.generateLevel2[selectCodeStr] = data.level2Type
this.isGenerate[selectCodeStr] = true
this.isTextarea = false
this.remGenerateTime[selectCodeStr] = setTimeout(()=>{
@@ -1282,6 +1296,7 @@ export default defineComponent({
}
).catch(res=>{
// this.isShowMark = false
this.generateLevel2[selectCodeStr] = ''
this.isGenerate[selectCodeStr] = false
clearInterval(this.remGenerateTime[selectCodeStr])
this.remGenerate[selectCodeStr] = false
@@ -1314,6 +1329,7 @@ export default defineComponent({
// element.category = this.scene?.value
this.generateList[str].unshift(element)
data = data.filter((item:any) => item !== element.taskId);
}
});
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])
this.remGenerate[str] = false
this.isGenerate[str] = false
this.generateLevel2 = ''
}
}
}
@@ -1333,6 +1350,7 @@ export default defineComponent({
// this.isShowMark = false
this.isGenerate[str] = false
this.remGenerate[str] = false
this.generateLevel2[str] = ''
});
},1000)
},
@@ -1343,7 +1361,16 @@ export default defineComponent({
clearInterval(this.generateTime[this.selectCode])
if(this.generateProceedList){
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(
(rv) => {
this.generateProceedList = []

View File

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

View File

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