除了颜色选择图片,注册页面
This commit is contained in:
@@ -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()
|
||||
};
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
@@ -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'),
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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}`
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
59
src/component/HomePage/fullScreenImg.vue
Normal file
59
src/component/HomePage/fullScreenImg.vue
Normal 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>
|
||||
@@ -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{
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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)=>{
|
||||
|
||||
850
src/component/LibraryPage/ModelPlacementUpdata.vue
Normal file
850
src/component/LibraryPage/ModelPlacementUpdata.vue
Normal 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>
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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) => {
|
||||
|
||||
Reference in New Issue
Block a user