Files
aida_front/src/component/HomePage/index/model/design/index.vue
2025-05-08 14:09:12 +08:00

1877 lines
53 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<div class="designPage">
<div class="page_content">
<div class="page_content_body">
<div class="designPage_body">
<div class="designPage_left" ref="hidden">
<div class="designPage_left_content" :class="{'active':(domHidden)}">
<!-- 有图状态 start-->
<div class="home_left_info">
<div class="left_info_content scroll_style">
<div class="left_info_content_body" ref="collection_canvas">
<div class="right_content_header">
<div class="content_header_left" style="padding-top: 2rem;">
<i class="fi fi-rs-comments"></i><span class="content_header_des">
{{ $t('HomeView.elementTitle') }}
</span>
</div>
</div>
<NewCollectionReview id="collectionReview"></NewCollectionReview>
<!-- <ExportNewCoolection id="exportNewCoolection"></ExportNewCoolection> -->
</div>
</div>
<div v-show="isMannequinShow" class="left_info_hint">
<span class="icon iconfont icon-zhuyi"></span>
<span>{{ $t('HomeView.masnnequinHint') }}</span>
</div>
</div>
<!-- 有图状态 end-->
</div>
<div class="designPage_left_bottom" @click="setShowHide('domHidden')" >
<span class="icon iconfont icon-xiala" :class="{'active':domHidden}"></span>
</div>
</div>
<div class="designPage_right">
<div class="right_top">
<!-- <div class="right_top" ref="hidden" :class="{'active':domHidden}"> -->
<div class="right_top_left">
<div class="gallery_btn white Guide_1_15" @click="designNewCollection()">
<!-- <div class="gallery_btn white Guide_1_15" @click="designNewCollection()"> -->
{{ $t('HomeView.Design') }}
</div>
<!-- <div class="gallery_btn white button_margin_14 Guide_1_30" v-show="designCollectionId"
@click="resDesignCollection()">
{{ $t('HomeView.Redesign') }}
</div> -->
<div class="silder button_margin_14" v-show="likeDesignCollectionList?.length > 0">
<div class="text">Small</div>
<a-slider
class="system_silder"
v-model:value="elementWidth"
:min="minCollValue"
:max="maxCollValue-1"
@afterChange="setSystemDesigner(500)"
:tooltipVisible="false"
>
</a-slider>
<div class="text">Big</div>
</div>
<!-- <div v-show="designCollectionId && userGroupId" class="gallery_btn Guide_1_31" style="margin-left: auto" @click="exportModel()">
{{$t('HomeView.FinalizeCollection')}}
</div> -->
</div>
</div>
<div class="right_content_block_box">
<div class="right_content_block" @mouseenter="mouseenter($event,'like')">
<div class="right_content_body">
<div class="right_content_header">
<div class="content_header_left">
<i class="fi fi-rs-comments"></i><span class="content_header_des">
{{ $t('HomeView.SelectedDesign') }}
</span>
</div>
</div>
<div class="right_content_img_block scroll_style active">
<div class="right_content_img_item" ref="likeItemDom" designType="like" :index="0">
<div class="content_img_block content_img_GetWidth active" :style="likeStyle"
v-for="(design, index) in likeDesignCollectionList" :key="design.id"
@mousedown.stop="designMousedown(getMousePosition($event,false),design.userLikeSortId,'like')"
@touchstart.passive="designMousedown(getMousePosition($event,true),design.userLikeSortId,'like')"
@click="designDetail(
design,
index,
likeDesignCollectionList,
'like'
)">
<div class="content_img_flex">
<img class="content_img" :src="design.designOutfitUrl"
:key="design.designOutfitUrl" designType="like" :index="index"/>
</div>
<div class="icon iconfont icon-jushoucanggift icon_like" @click.stop="
dislikeDesignCollection(
design,
index
)">
</div>
</div>
</div>
</div>
</div>
</div>
<div class="right_content_block recycleBin" @mouseenter="mouseenter($event,'recycle')" :class="{recycleBinShow:recycleDomHidden}">
<div class="right_content_body">
<div class="right_content_header">
<div class="content_header_left">
<i class="fi fi-rs-comments"></i><span class="content_header_des">
{{ $t('HomeView.GeneratedDesign') }}
</span>
</div>
</div>
<div class="right_content_img_block scroll_style Guide_1_17" :class="[driver__.driver?'showEvents':'']">
<div class="right_content_img_item" ref="collItemDom" designType="dislike" :index="0">
<!-- <div class="content_img_block" v-for="(
design, index
) in deleteDesignCollectionList" :key="design?.designItemId">
<div class="content_img_flex"
@click="
designDetail(
design,
index,
designCollectionList,
'dislike'
)">
<img class="content_img" :src="design.designOutfitUrl" />
</div>
<div class="Dustbin" @click.stop="
cancelDeleteDesign(index)">
Dustbin
</div>
</div> -->
<div class="content_img_block" v-show="showDesignMark" :style="collStyle">
<a-spin size="large" class="content_img_flex"></a-spin>
</div>
<div class="content_img_block content_img_GetWidth" v-for="(
design, index
) in designCollectionList" :key="design?.designItemId" :style="collStyle">
<div class="content_img_flex"
:class="[(driver__.driver && driver__.index == 32)?'hideEvents':'']"
@mousedown.stop="designMousedown(getMousePosition($event,false),design.designItemId,'disLike')"
@touchstart.passive="designMousedown(getMousePosition($event,true),design.designItemId,'disLike')"
@click="
designDetail(
design,
index,
designCollectionList,
'dislike'
)">
<img class="content_img" :src="design.designOutfitUrl" designType="dislike" :index="index"/>
</div>
<div class="icon iconfont icon-jushoucang icon_like" :class="[driver__.driver?index == 0?driver__.index == 32?'Guide_img showEvents':'':'':'']" @click.stop="
likeDesignCollection(
design,
index
)
">
</div>
<i class="fi fi-rr-trash icon_delete" @click.stop="
setDeleteDesign(design,index)">
</i>
</div>
</div>
</div>
</div>
</div>
<div class="designPage_left_bottom" :class="{active:recycleDomHidden}" @click="setShowHide('recycleDomHidden')" v-show="designCollectionId">
<span class="icon iconfont icon-xiala" :class="{'active':recycleDomHidden}"></span>
</div>
</div>
</div>
</div>
</div>
</div>
<KeepAlive>
<CollectionModal :getDesignData="getDesignData" ref="collectionModal" @finishCollection="finishCollection()"></CollectionModal>
</KeepAlive>
<productImg ref="productImg" @setTask="setTask"></productImg>
<!-- <DesignDetail ref="designDetail" @finishRedesign="finishRedesign"></DesignDetail> -->
<!-- 导出缩略图的蒙层 start-->
<div class="mark_loading" v-show="isShowMark">
<a-spin size="large" />
</div>
<!-- 导出缩略图的蒙层 end-->
<!-- design collection的进度蒙层 start-->
<!-- <div class="progress_mark" v-show="showDesignMark">
<div class="mark_content Guide_1_16">
<a-progress type="circle" :percent="designProgress" strokeColor="#341e57" :width="200" />
<div>
<a-spin :indicator="indicator" />
</div>
</div>
</div> -->
<!-- design collection的进度蒙层 end-->
<affiche ref="affiche"></affiche>
<DesignDetailcopy v-if="detailDestroy" ref="designDetail" @destroy="setDetailDestroy" @finishRedesign="finishRedesign"></DesignDetailcopy>
</div>
</template>
<script lang="ts">
import { defineComponent, h, ref, computed, reactive, toRefs, inject,provide,nextTick,createVNode,onBeforeUnmount, toRef} from "vue";
// import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
import CollectionModal from "@/component/HomePage/collectionModal.vue";
import NewCollectionReview from "@/component/HomePage/NewCollectionReview.vue";
import productImg from "@/component/HomePage/productImg.vue";
import generalCanvas from "@/component/modules/generalCanvas.vue";
import affiche from "@/component/HomePage/affiche.vue";
import DesignDetail from "@/component/Detail/DesignDetail.vue";
import DesignDetailcopy from "@/component/DetailCopy/designDetail.vue";
import html2canvas from "html2canvas";
import { message,Modal } from "ant-design-vue";
import { useStore } from "vuex";
import { Https } from "@/tool/https";
import { openGuide,driverObj__ } from "@/tool/guide";
import { LoadingOutlined ,ExclamationCircleOutlined} from "@ant-design/icons-vue";
// import JSZip, { forEach } from "jszip";
import { setCookie, getCookie, WriteCookie } from "@/tool/cookie";
import i18n from "@/lang";
import { useI18n } from "vue-i18n";
import { getMousePosition } from "@/tool/mdEvent";
import { removeClass } from "element-plus/es/utils";
const FileSaver = require("file-saver");
export default defineComponent({
name: "homePage",
components: {
// HeaderComponent,
CollectionModal,
NewCollectionReview,
DesignDetail,
affiche,
productImg,
generalCanvas,
DesignDetailcopy
},
emits:['setTask'],
activated() {
},
deactivated() {
},
props:['isState'],
setup(props,{emit}) {
const store = useStore();
let likeDesignCollectionList: any = computed(() => {
return store.state.HomeStoreModule.likeDesignCollectionList;
});
let deleteDesignCollectionList: any = computed(() => {
return store.state.HomeStoreModule.deleteDesignCollectionList;
});
let designCollectionList: any = computed(() => {
return store.state.HomeStoreModule.designCollectionList;
});
let userDetail= computed(()=>{
return store.state.UserHabit.userDetail
})
let bindEmail= computed(()=>{
return store.state.UserHabit.bindEmail
})
let userGroupId: any = computed(() => {
return store.state.HomeStoreModule.userGroupId;
}); //模特id //当likeDesignCollectionList长度为0时清空startdesign时清空
let setPortfolio = (data:any)=>{
portfolio.value = data
}
provide('setPortfolio',setPortfolio)
let designCollectionId: any = computed(() => {
return store.state.HomeStoreModule.designCollectionId;
});
let designId: any = computed(() => {
return store.state.HomeStoreModule.designId;
});
let contentImgMax = {
width:'',
height:'',
}
let contentImg = {
width:'',
height:'',
}
let exportNav = ref([
{
name:useI18n().t('HomeView.moodboard'),
change:true,
noChange:true,
value:'moodboardFiles',
},{
name:useI18n().t('HomeView.printboard'),
change:true,
noChange:false,
value:'printboardFiles',
},{
name:useI18n().t('HomeView.colorboard'),
change:true,
noChange:false,
value:'colorBoards',
},{
name:useI18n().t('HomeView.sketchboard'),
change:true,
noChange:false,
value:'sketchboardFiles',
},{
name:useI18n().t('HomeView.mannequins'),
change:true,
noChange:true,
value:'',
},
])
provide('exportNav',exportNav)
let isShowOperate = ref(false)
let {t} = useI18n()
let driver__:any = computed(()=>{
return store.state.Guide.guide
})
let likeDesignItemIdList = ref([])
let workspacePosition:any = computed(()=>{
return store.state.Workspace.probjects.positionList
})
let allBoardData:any = computed(()=>{
return store.state.UploadFilesModule.allBoardData})
let isMannequinShow = ref(false)
let chooseIsDesign:any = computed(()=>{
return store.state.UploadFilesModule.chooseIsDesign})
let portfolio:any = ref({})
provide('portfolio',portfolio)
let showDesignMark = ref(false)
let sessionStorageCollValue = JSON.parse(sessionStorage.getItem('collValue') as any)
const collItemSize = reactive({
collValue:6,
elementWidth:100,
minCollValue:100,
maxCollValue:999,
padding:60,
likeStyle:{
width:'240px',
height:'370px',
position:'absolute',
},
collStyle:{
width:'0',
height:'0',
position:'absolute',
},
itemStyle:{
width:0,
height:0,
},
scale:[1,1.54],
collTime:null as any,
isMove:false,
})
const posiitonData = ref({
likeElList:[] as any,
likeSelectIndex:0,
generateElList:[] as any,
generateSelectIndex:0,
})
let likeItemDom = ref()
let collItemDom = ref()
let domHidden = ref(JSON.parse(sessionStorage.getItem('domHidden') as any) || false);
let recycleDomHidden = ref(false);
if(designCollectionList.value.length>0){
recycleDomHidden.value = JSON.parse(sessionStorage.getItem('recycleDomHidden') as any) || false
}
let getDesignTime = null as any;
const setSystemDesigner = (time:any)=>{
clearTimeout(collItemSize.collTime)
collItemSize.collTime = setTimeout(()=>{
nextTick(()=>{
let parentWidth = likeItemDom.value.parentElement.offsetWidth
collItemSize.elementWidth = collItemSize.elementWidth == -1?100:collItemSize.elementWidth
collItemSize.maxCollValue = parentWidth / 2
collItemSize.collValue = Math.floor(parentWidth / collItemSize.elementWidth)
collItemSize.padding = Math.floor(parentWidth - (collItemSize.collValue * collItemSize.elementWidth))
let value = collItemSize.collValue
collItemSize.itemStyle.width = (parentWidth - collItemSize.padding - (value * 10)) / value
collItemSize.itemStyle.height = collItemSize.itemStyle.width * 1.54
collItemSize.collStyle.width = (collItemDom.value.offsetWidth - 30) / 3 * collItemSize.scale[0] + 'px'
collItemSize.collStyle.height = (collItemDom.value.offsetWidth - 30) / 3 * collItemSize.scale[1] + 'px'
collItemSize.likeStyle.width = collItemSize.itemStyle.width + 'px'
collItemSize.likeStyle.height = collItemSize.itemStyle.height + 'px'
let elArr = likeItemDom.value.children
posiitonData.value.likeElList = []
for(let i = 0;i < elArr.length;i++){
posiitonData.value.likeElList.push({
el: elArr[i],
sort: likeDesignCollectionList.value[i].sort - 1,
index: i,
userLikeSortId:likeDesignCollectionList.value[i].userLikeSortId
});
}
moveItem('like')
})
},time)
}
const setDesignItemStyle = ()=>{
posiitonData.value.generateElList = []
let elArr = collItemDom.value.querySelectorAll('.content_img_GetWidth')
designCollectionList.value.forEach((item:any,index:any)=>{
posiitonData.value.generateElList.unshift({
el: elArr[index],
sort: designCollectionList.value.length - index - 1,
index: designCollectionList.value.length - index - 1,
userLikeSortId:item.designItemId
});
})
}
const setDeleteDesign = (value:any,index:any)=>{
store.commit("setDeleteDesignCollectionList",index);
let collItem = posiitonData.value.generateElList.filter((item:any)=>item.userLikeSortId == value.designItemId)[0]
posiitonData.value.generateElList = posiitonData.value.generateElList.filter((item:any)=>item.userLikeSortId != value.designItemId)
posiitonData.value.generateElList.forEach((item:any)=>{
if(item.sort > collItem.sort){
item.sort-=1
}
})
moveItem('')
}
const cancelDeleteDesign = (index:any)=>{
store.commit("cancelDeleteDesignCollectionList",index);
}
const designMousedown = (e:any,Id:number,str:string)=>{
if(str != 'like' && showDesignMark.value) return
let arr = str == 'like'? posiitonData.value.likeElList:posiitonData.value.generateElList
let item:any = arr.filter((item:any)=>item.userLikeSortId == Id)[0]
item.el.style.zIndex = 2;
item.el.style.transition = 'all 0s';
let startX = e.clientX,
startY = e.clientY,
left = item.el.offsetLeft,
top = item.el.offsetTop;
collItemSize.isMove = false
let moveFun = (e:any) => {
collItemSize.isMove = true
let X = e.clientX - startX + left;
let Y = e.clientY - startY + top;
item.el.style.left = `${X}px`;
item.el.style.top = `${Y}px`;
reRange(item, X, Y,str);
};
let mouseUpFun = ()=>{
document.removeEventListener('mousemove',mouseMove)
document.removeEventListener('touchmove',touchmove)
document.removeEventListener('mouseup',mouseUpFun)
document.removeEventListener('touchend',mouseUpFun)
item.el.style.zIndex = 1;
item.el.style.transition = 'top,left .5s';
moveItem(str);
if(str == 'like')sortDesignCollection()
}
let mouseMove = function(event:any){
let e = getMousePosition(event,false)
moveFun(e)
}
let touchmove = function(event:any){
let e = getMousePosition(event,true)
moveFun(e)
}
document.addEventListener('mousemove',mouseMove)
document.addEventListener('touchmove',touchmove)
document.addEventListener('mouseup',mouseUpFun)
document.addEventListener('touchend',mouseUpFun)
}
//排序 从大到小
const sortDesignCollection = ()=> {
let arrData:any = []
if(!likeDesignCollectionList.value)return
likeDesignCollectionList.value.forEach((likeItem:any)=>{
let item = posiitonData.value.likeElList.filter((item:any)=>item.userLikeSortId == likeItem.userLikeSortId)[0]
likeItem.sort = item.sort + 1
let obj = {
id:likeItem.userLikeSortId,
"sort": item.sort + 1,
"userLikeGroupId": likeItem.userLikeGroupId,
"userLikeId": likeItem.id
}
arrData.push(obj)
})
let data = {
"userLikeGroupId": userGroupId.value,
"userLikeSortList": arrData
}
Https.axiosPost(Https.httpUrls.designSort, data).then((rv:any)=>{
})
}
const mouseenter = (e:any,str:string)=>{
}
const reRange = (item:any, x:number, y:number,str:string)=>{
let elList = str == 'like'? posiitonData.value.likeElList:posiitonData.value.generateElList
let index = str == 'like'?posiitonData.value.likeSelectIndex:posiitonData.value.generateSelectIndex
let value = collItemSize.collValue
let width,height,num
if(str == 'like'){
num = value
width = collItemSize.itemStyle.width
height = collItemSize.itemStyle.height
}else{
num = 3
width = (collItemDom.value.offsetWidth - 30) / 3 * collItemSize.scale[0]
height = (collItemDom.value.offsetWidth - 30) / 3 * collItemSize.scale[1]
}
let moveIndex = Math.round(x / (width + 10)) + Math.round(y / (height + 10)) * num;
moveIndex = elList.length - 1 - moveIndex
moveIndex = moveIndex < 0 ? 0 : moveIndex;
moveIndex = moveIndex > elList.length - 1 ? elList.length - 1 : moveIndex;
if(moveIndex != index){
if(str == 'like'){
posiitonData.value.likeSelectIndex = moveIndex;
}else{
posiitonData.value.generateSelectIndex = moveIndex;
}
let currentSort = item.sort;
for(let i = 0;i < elList.length;i++){
if(currentSort < moveIndex){
if(elList[i].sort > currentSort && elList[i].sort <= moveIndex){
elList[i].sort -= 1;
};
}else if(currentSort > moveIndex){
if(elList[i].sort < currentSort && elList[i].sort >= moveIndex){
elList[i].sort += 1;
};
}
};
elList[item.index].sort = moveIndex;
moveItem(str);
}
}
const setLikeDislLike = (str:string,value:any)=>{
posiitonData.value.likeSelectIndex = 0
nextTick(()=>{
if(str == 'like'){
let elArr = likeItemDom.value.children
posiitonData.value.likeElList.push({
el: elArr[0],
sort: value.sort - 1,
index: value.sort - 1,
userLikeSortId:value.userLikeSortId
});
let collItem = posiitonData.value.generateElList.filter((item:any)=>item.userLikeSortId == value.designItemId)[0]
posiitonData.value.generateElList = posiitonData.value.generateElList.filter((item:any)=>item.userLikeSortId != value.designItemId)
posiitonData.value.generateElList.forEach((item:any)=>{
if(item.sort > collItem.sort){
item.sort-=1
}
})
}else if(str == 'disLike'){
let elArr = collItemDom.value.querySelectorAll('.content_img_GetWidth')
posiitonData.value.likeElList = posiitonData.value.likeElList.filter((item:any)=>(item.sort + 1) != value.sort)
posiitonData.value.likeElList.forEach((item:any)=>{
if(item.sort > value.sort - 1){
item.sort-=1
}
})
posiitonData.value.generateElList.push({
el: elArr[elArr.length-1],
sort: posiitonData.value.generateElList.length,
index: posiitonData.value.generateElList.length,
userLikeSortId:value.designItemId
});
}
moveItem('like');
// moveItem('disLike');
})
}
//排列
const moveItem = (str:any)=>{
let elLikeList = posiitonData.value.likeElList
let generateElList = posiitonData.value.generateElList
let value = collItemSize.collValue
let width,height
width = (collItemDom.value.offsetWidth - 30) / 3 * collItemSize.scale[0]
height = (collItemDom.value.offsetWidth - 30) / 3 * collItemSize.scale[1]
// let num = str == 'like'?value:3
for(let i = 0;i < elLikeList.length;i++){
elLikeList[i].el.style.left = (elLikeList.length - 1 - elLikeList[i].sort) % value * (collItemSize.itemStyle.width +10) + collItemSize.padding/2 + 'px';
elLikeList[i].el.style.top = parseInt(String((elLikeList.length - 1 - elLikeList[i].sort) / value)) * (collItemSize.itemStyle.height +10) + 'px';
}
for(let i = 0;i < generateElList.length;i++){
generateElList[i].el.style.left = (generateElList.length - 1 - generateElList[i].sort) % 3 * (width +10) + 'px';
generateElList[i].el.style.top = parseInt(String((generateElList.length - 1 - generateElList[i].sort) / 3)) * (height +10) + 'px';
}
}
return {
store,
likeDesignCollectionList,
deleteDesignCollectionList,
designCollectionList,
userGroupId,
userDetail,
bindEmail,
setPortfolio,
designCollectionId,
designId,
contentImgMax,
contentImg,
exportNav,
isShowOperate,
t,
driver__,
likeDesignItemIdList,
workspacePosition,
allBoardData,
isMannequinShow,
chooseIsDesign,
portfolio,
setSystemDesigner,
setDesignItemStyle,
showDesignMark,
...toRefs(collItemSize),
likeItemDom,
collItemDom,
domHidden,
recycleDomHidden,
getDesignTime,
setDeleteDesign,
cancelDeleteDesign,
designMousedown,
sortDesignCollection,
getMousePosition,
mouseenter,
setLikeDislLike,
posiitonData,
moveItem
};
},
data() {
return {
isFinishLoading: false,
isShowMark: false, //导出的loading蒙层
indicator: h(LoadingOutlined, {
style: {
fontSize: "4.8rem",
marginTop: "3rem",
color:"#341e57",
},
spin: true,
}),
designProgress: 0,
startDesignType: "design", //设计类型 design 和 resdesign
disLikeLoading: false, //不喜欢防抖
likeLoading: false, //喜欢防抖
dragIdx:0,
designRandom:'',
detailDestroy:false,//销毁detail
designFailure:{
num:0,
currentNum:0,
},//获取20次都为空的话就停止获取
};
},
watch: {
workspacePosition:{
handler(newVal:any,oldVal:any){
this.isMannequin()
},
},
allBoardData:{
handler(newVal:any,oldVal:any){
this.isMannequin()
},
},
},
beforeUnmount(){
clearTimeout(this.getDesignTime);
sessionStorage.setItem('domHidden',JSON.stringify(this.domHidden))
sessionStorage.setItem('recycleDomHidden',JSON.stringify(this.recycleDomHidden))
sessionStorage.setItem('collValue',JSON.stringify(this.collValue))
if(this.$props.isState)this.sortDesignCollection()
window.removeEventListener('resize', this.setItemPosition)
},
async mounted() {
window.addEventListener('beforeunload', (event)=>{
this.store.commit("clearAllCollection");
});
// if (this.$route.params.id) {
// if(this.$route.params.type == 'History'){
// this.getHistoryChoose(this.$route.params.id, "normal");
// }else if(this.$route.params.type == 'Works'){
// this.getWorks(this.$route.params.id, "normal");
// }
// this.store.commit("setDesignCollectionList",[]);
// } else {
// }
// designDetail.showDesignDetailModal(data);
window.addEventListener('resize', this.setItemPosition)
this.setSystemDesigner(0)
this.setDesignItemStyle()
},
directives:{
mousewheel:{
mounted (el) {
let bodyDom:any = document.getElementsByClassName('right_content_block')[0]
let dom:any = document.getElementsByClassName('right_content_body')
let mouseover = ()=>{
bodyDom.classList.add('active')
}
let mouseleave = ()=>{
bodyDom.classList.remove('active')
}
dom.forEach((item:any) => {
item.addEventListener('mouseover',mouseover)
item.addEventListener('mouseleave',mouseleave)
});
el.addEventListener('wheel',(e:WheelEvent)=>{
let num = 0
if(e.deltaY > 0){
num = 25
}else{
num = -25
}
el.scrollBy(num, 0);
},{ passive: true })
}
}
},
methods: {
// addTeam (team:any) {
// this.likeDesignCollectionList.push(team)
// },
setItemPosition(){
this.setSystemDesigner(0)
this.setDesignItemStyle()
},
affiche(text:any){
nextTick(()=>{
let affiche:any = this.$refs.affiche
affiche.init(text)
})
},
//判断模特和当前start的sketch是否匹配
isMannequin(){
this.isMannequinShow = false
let num = 0
this.allBoardData?.sketchboardFiles?.forEach((sketchItem:any) => {
this.workspacePosition.forEach((positionItem:any) => {
if(positionItem.value == sketchItem.categoryValue){
num ++
}
});
});
if(this.allBoardData?.sketchboardFiles?.length && this.allBoardData?.sketchboardFiles?.length>0){
if(num != this.allBoardData?.sketchboardFiles?.length){
this.isMannequinShow = true
}
}else{
this.isMannequinShow = false
}
},
formatter(value: number) {
return `${value}%`;
},
//开始设计collection
startNewCollection() {
let collectionModal: any = this.$refs.collectionModal;
this.store.commit("clearAllData");
collectionModal.changeCollectionModal(true);
if(this.driver__.driver){
nextTick().then(()=>{
driverObj__.moveNext();
})
}
},
//recollection
recollection() {
let collectionModal: any = this.$refs.collectionModal;
this.store.commit("clearAllData");
collectionModal.changeCollectionModal(true);
collectionModal.recollection();
},
resetCollection(){
let _this = this
Modal.confirm({
title: this.t('HomeView.jsContent9'),
icon: createVNode(ExclamationCircleOutlined),
okText: 'Yes',
cancelText: 'No',
mask:false,
centered:true,
onOk() {
_this.store.commit("clearAllData");
_this.store.commit("clearAllCollection");
_this.store.commit("setAllBoardDataChoose",{});
_this.store.commit("clearShowSketchboard",{});
}
});
},
//完成设计
finishCollection() {
this.isFinishLoading = false;
},
getContainer() {
return document.querySelector("#system_silder");
},
//设计新的collection
designNewCollection() {
clearTimeout(this.getDesignTime);
let data = this.getDesignData("");
if(this.driver__.driver){
nextTick().then(()=>{
driverObj__.moveNext();
})
}
this.isShowMark = true
// this.store.commit("setLikeDesignCollectionList", []);
Https.axiosPost(Https.httpUrls.designCollection, data)
.then((rv: any) => {
if (rv) {
let value = {
objectSignList:data.requestIdList.join(),
requestId:rv
}
this.posiitonData.generateElList.forEach((item:any) => {
item.sort -= 1
})
this.moveItem('disLike')
this.getDesignResult(value,'newDesign')
this.startDesignType = "design";
// this.posiitonData.likeSelectIndex = 0
// this.posiitonData.likeElList = []
}
this.isShowMark = false;
})
.catch((res) => {
this.isShowMark = false;
})
// this.getDesignProcess(this.designRandom);
},
getDesignResult(data:any,str:any){
this.showDesignMark = true
this.recycleDomHidden = true
this.setSystemDesigner(0)
Https.axiosGet(Https.httpUrls.getDesignResult,{params:data})
.then(async (rv)=>{
if(rv.designCollectionItems){
let arr:any = []
if(this.designCollectionList.length == 0){
arr.push(...rv.designCollectionItems)
}else{
arr = rv.designCollectionItems.filter((itemA:any) =>
!this.designCollectionList.some((itemB:any) => itemA.objectSign === itemB.objectSign)
);
}
for (let index = 0; index < arr.length; index++) {
const item = arr[index];
await new Promise((resolve, reject) => {
setTimeout(() => {
this.designCollectionList.unshift(item)
nextTick().then(()=>{
let dom:any = this.$refs.collItemDom
let elArr:any = dom.querySelectorAll(".content_img_GetWidth");
this.posiitonData.generateElList.push({
el: elArr[0],
sort: elArr.length - 2,
index: elArr.length - 1,
userLikeSortId:item.designItemId
});
this.moveItem('disLike')
})
resolve('')
}, 200);
})
}
}
if(rv.unfinishedList.length == 0){
this.showDesignMark = false
if(str == 'newDesign'){
if(rv.designCollectionItems){
// this.store.commit("deleteUserGroupId");
this.store.commit(
"setDesignCollectionId",
rv.collectionId
);
this.store.commit("setDesignId", rv.designId);
}
}else{
// this.designProgress = 0,
this.store.commit("setDesignId", rv.designId);
}
nextTick().then(()=>{
driverObj__.moveNext();
this.posiitonData.generateElList.forEach((item:any) => {
item.sort += 1
});
this.moveItem('disLike')
})
}else{
data.objectSignList = rv.unfinishedList.join()
this.getDesignTime = setTimeout(()=>{
if(this.designFailure.currentNum == rv.unfinishedList.length){
this.designFailure.num++
if(this.designFailure.num >= 10)data.objectSignList=''
}else{
this.designFailure.num = 0
}
this.getDesignResult(data,str)
},1000)
}
}).catch(()=>this.showDesignMark = false)
},
//重新设计collection
resDesignCollection() {
if(this.driver__.driver){
nextTick().then(()=>{
driverObj__.moveNext();
})
}
clearTimeout(this.getDesignTime);
this.isShowMark = true
let data = this.getDesignData(this.designCollectionId);
Https.axiosPost(Https.httpUrls.reDesignCollection, data)
.then((rv: any) => {
if (rv) {
let value = {
objectSignList:data.requestIdList.join(),
requestId:rv
}
this.posiitonData.generateElList.forEach((item:any) => {
item.sort -= 1
})
this.moveItem('disLike')
this.getDesignResult(value,'resDesign')
this.startDesignType = "resDesign";
this.isShowMark = false
}
})
.catch((res) => {
this.isShowMark = false;
});
// this.getDesignProcess(this.designRandom);
},
getDesignData(designCollectionId: any) {
let {
moodboardFiles,
printboardFiles,
disposeMoodboard,
// generatePrintFiles,
colorBoards,
sketchboardFiles,
marketingSketchFiles,
moodboardPosition,
} = this.store.state.UploadFilesModule.allBoardData;
this.randomNum()
let workspace = this.store.state.Workspace.probjects
let data: any = {
colorBoards: this.getColorBoard(colorBoards),
// marketingSketchs: this.getBoardId(marketingSketchFiles),
moodBoards: this.getBoardId(moodboardFiles),
printBoards: this.getPrintId(printboardFiles),
sketchBoards: this.getSkecthBoard(sketchboardFiles),
moodboardPosition: moodboardPosition?JSON.stringify(moodboardPosition):null,
switchCategory: workspace.type == "seriesDesign"?"": workspace.position.value,
singleOverall: workspace.type == "seriesDesign" ? "overall" : 'single',
systemScale: workspace.systemDesignerPercentage?workspace.systemDesignerPercentage*.01:.3,
// templateId: 3377,
templateId: workspace.model.id,
modelType:workspace.model.type,
modelSex:workspace?.sex,
moodTemplateId: disposeMoodboard?.[0] ? String(disposeMoodboard[0].id) : null,
timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,
processId:this.designRandom,
projectId:workspace.id
};
// data.moodboardPosition = JSON.stringify(this.store.state.UploadFilesModule.moodboardPosition)
this.setSystemDesigner(0)
this.designFailure = {
num:0,
currentNum:0,
}
if(designCollectionId) {
data.collectionId = designCollectionId;
}
let arr = []
for (let index = 0; index < 8; index++) {
let floor = Math.floor(Math.random() * 90000000) + 10000000
arr.push(floor)
}
data.requestIdList = arr
return data;
},
//deisgn的进度
getDesignProcess(num:any) {
Https.axiosGet(Https.httpUrls.designProcess,{params:{processId:num}}).then((rv: any) => {
if (rv) {
}
if (this.showDesignMark) {
this.designProgress = rv;
if(rv == 100){
setTimeout(() => {
this.showDesignMark = false
this.designProgress = 0
if(this.driver__.driver){
nextTick().then(()=>{
driverObj__.moveNext();
})
}
}, 500);
}
setTimeout(() => {
this.getDesignProcess(num);
}, 500);
}
})
// Https.axiosPost(Https.httpUrls.designProcess, {}).then(
// (rv: any) => {
// if (rv < 1 && this.showDesignMark) {
// this.designProgress = rv * 100;
// setTimeout(() => {
// this.getDesignProcess();
// }, 1000);
// }
// }
// );
},
randomNum(){
this.designRandom = String(Math.floor(Math.random() * 9000000000000000) + 1000000000000000)
},
getBoardId(boardData: any) {
boardData = boardData || []
let dataList = boardData.map((v: any) => {
let data: any = {
id: v.resData.id,
designType: v.resData.designType,
};
return data;
});
return dataList;
},
getPrintId(boardData: any) {
boardData = boardData || []
let dataList = boardData.map((v: any) => {
let data: any = {
id: v.resData.id,
designType: v.resData.designType,
level2Type: v.categoryValue,
isPin: v.pin ? 1 : 0,
};
return data;
});
return dataList;
},
getSkecthBoard(boardData: any) {
boardData = boardData || []
let sketchBoards = boardData.map((v: any) => {
let data = {
designType: v.resData.designType,
isPin: v.pin ? 1 : 0,
level2Type: v.categoryValue,
sketchBoardId: v.resData.id,
};
return data;
});
return sketchBoards;
},
getColorBoard(boardData: any) {
boardData = boardData || []
let colorBoards = boardData.map((v: any) => {
let data = {
id: v.id,
name: v.name,
tcx: v.tcx,
gradient:v.gradient,
rgbValue: "",
};
data.rgbValue = `${v.rgbValue.r} ${v.rgbValue.g} ${v.rgbValue.b}`;
return data;
});
return colorBoards;
},
deleteDesignCollection(list:any,index:any){
list.splice(index,1)
},
likeDesignCollection(design: any, index: any) {
let data = {
designItemId: design.designItemId,
userGroupId: this.store.state.HomeStoreModule.userGroupId,
projectId: this.store.state.Workspace.probjects.id,
timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,
designPythonOutfitId:design.designOutfitId?design.designOutfitId:design.designPythonOutfitId
};
if (this.likeLoading) {
return;
}
this.likeLoading = true;
Https.axiosPost(Https.httpUrls.designLike, data)
.then((rv: any) => {
if (rv) {
let value:any = {
...design,
id:rv.userLikeId,
groupDetailId:rv.userLikeId,
userLikeSortId:rv.userLikeSortId,
userLikeGroupId:rv.userGroupId,
sort:rv.sort,
}
this.store.commit("setUserGroupId", rv.userGroupId);
design.groupDetailId = rv.groupDetailId;
this.store.commit(
"addLikeDesignCollectionList",
value
);
this.setLikeDislLike('like',value)
this.store.commit("deleteDesignCollectionList", index);
if (this.startDesignType === "resDesign") {
this.getHistoryChoose(this.userGroupId, "like");
}
}
this.likeLoading = false;
if(this.driver__.driver){
driverObj__.moveNext();
}
})
.catch((rv) => {
this.likeLoading = false;
});
},
//不喜欢设计
dislikeDesignCollection(design: any, index: any) {
let data = {
designId: design.designId || this.designId,
designPythonOutfitId:design.designOutfitId,
groupDetailId: design.groupDetailId || design.id,
timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,
};
if (this.disLikeLoading) {
return;
}
this.disLikeLoading = true;
Https.axiosPost(Https.httpUrls.designDislike, data)
.then((rv: any) => {
if (rv) {
this.store.commit("addDesignCollectionList", [design]);
this.store.commit(
"deleteLikeDesignCollectionList",
index
);
this.likeDesignCollectionList.forEach((item:any)=>{
if(item.sort > design.sort){
item.sort-=1
}
})
this.setLikeDislLike('disLike',design)
// if (!this.likeDesignCollectionList.length) {
// this.store.commit("deleteUserGroupId");
// }
}
this.disLikeLoading = false;
})
.catch((rv) => {
this.disLikeLoading = false;
});
},
//获取选择的组
getHistoryChoose(userGroupId: any, type: any) {
this.isShowMark = true;
let url =
Https.httpUrls.historyChoose + `?userGroupId=${userGroupId}`;
Https.axiosGet(url)
.then((rv: any) => {
this.setPortfolio(rv.portfolioDTO)
this.store.commit("setUserGroupId", rv.userGroupId);
this.dealHistoryChooseData(rv, type);
this.isShowMark = false;
})
.catch((rv) => {
this.isShowMark = false;
});
},
getWorks(userGroupId: any, type: any) {
let data:any = {
"accountId": 0,
"collectionId": 0,
"coverId": 0,
"createDate": "",
"id": userGroupId,
"isDeleted": 0,
"portfolioDes": "",
"portfolioName": "",
"portfolioType": "",
"status": 0,
"updateDate": "",
"userLikeGroupId":''
}
this.isShowMark = true;
Https.axiosPost(Https.httpUrls.setPorfolioChoose, data).then(
(rv: any) => {
this.setPortfolio(rv.portfolioDTO)
this.store.commit("setUserGroupId", rv.userGroupId);
this.dealHistoryChooseData(rv, type);
this.isShowMark = false;
}
).catch((res)=>{
this.isShowMark = false;
});
},
//处理选择组的数据
dealHistoryChooseData(data: any, type: any) {
let collectionData = {
disposeMoodboard: data.collection.moodTemplateId?[{
id:data.collection.moodTemplateId,
imgUrl:data.collection.moodTemplateUrl,
resData:{
name:data.collection.moodTemplateName,
}
}]:[],
moodboardPosition:data.collection.moodboardPosition?JSON.parse(data.collection.moodboardPosition):{},
moodboardFiles: this.dealViewChooseData(
data.collection.moodBoards,"Moodboard"
),
printboardFiles: this.dealViewChooseData(
data.collection.printBoards,"Printboard"
),
generatePrintFiles: [],
colorBoards: this.dealViewChooseColor(
data.collection.colorBoards
),
sketchboardFiles: this.dealViewChooseData(
data.collection.sketchBoards,"Sketchboard"
),
marketingSketchFiles: this.dealViewChooseData(
data.collection.marketingSketchs,""
),
};
this.store.commit("setAllBoardDataChoose", collectionData);
// this.store.commit('clearShowSketchboard')
this.store.commit("setShowSketchboard", data.collection.sketchBoards);
this.store.commit(
"setDesignCollectionId",
data.collection.collectionId
);
if (type === "normal") {
let likeDesignCollectionList = data.userLikeDetails.map(
(v: any) => {
let data = {
...v,
groupDetailId: v.id,
designItemUrl: v.designOutfitUrl,
designItemId: v.designItemId,
};
return data;
}
);
this.store.commit(
"setLikeDesignCollectionList",
likeDesignCollectionList
);
}
this.setSystemDesigner(100)
},
//统一处理选择组的渲染数据
dealViewChooseData(data: any,str:string) {
if (!data) {
return [];
}
let filesList = data.map((v: any) => {
let newData: any = {
imgUrl: v.url?v.url:v.designOutfitUrl,
id: v.id,
status: "done",
resData: v,
type_:{
type1:'material',
type2:v.level1Type
}
};
if (v.level1Type === "Sketchboard") {
newData.pin = v.isPin;
newData.categoryValue = v.level2Type;
newData.level2Type = v.level2Type;
}
if (v.level1Type === "Printboard") {
newData.pin = v.isPin;
newData.level2Type = v.level2Type;
newData.categoryValue = v.level2Type;
}
return newData;
});
return filesList;
},
//统一处理选择组的渲染数据
dealViewChooseColor(data: any) {
let colorList = data.map((v: any) => {
let rgbValue = v.rgbValue.split(" ");
let newData: any = {
id: v.id,
name: v.name,
tcx: v.tcx || "",
rgbValue: {
r: rgbValue[0],
g: rgbValue[1],
b: rgbValue[2],
a: 1,
},
};
if(v.gradient){
newData.gradient = v.gradient;
}else{
delete newData.gradient;
}
return newData;
});
return colorList;
},
//点击下拉图标出现操作
changeShowOperateContent() {
this.isShowOperate = !this.isShowOperate;
document.addEventListener(
"click",
this.closeShowOperateContent,
false
);
},
//关闭下拉图标
closeShowOperateContent() {
this.isShowOperate = false;
document.removeEventListener("click", this.closeShowOperateContent);
},
exportModel(){
let productImg:any = this.$refs.productImg
productImg.productImgMask = true
productImg.init(this.userGroupId)
},
openSetData(button:any){
if(button == 'design'){
this.designNewCollection()
}
nextTick(()=>{
if(this.designCollectionList.length > 0)this.recycleDomHidden = true
this.setSystemDesigner(100)
this.setDesignItemStyle()
})
},
//销毁图片详情
setDetailDestroy() {
// let designDetail: any = this.$refs.designDetail;
// designDetail.destroy();
this.detailDestroy = false
},
//打开图片详情
designDetail(
design: any,
index: number,
collectionList: any,
type: string
) {
if(this.isMove)return
design.designOutfitId = design.designPythonOutfitId?design.designPythonOutfitId:design.designOutfitId
let data = {
design: design,
index: index,
collectionList: collectionList,
type: type,
};
this.detailDestroy = true
nextTick(()=>{
let designDetail: any = this.$refs.designDetail;
designDetail.showDesignDetailModal(data);
})
},
//完成单个图片设计
finishRedesign(event: any) {
let { design, index, type } = event;
if (type === "dislike") {
this.store.commit("setSingleDesignCollectionList", {
index: index,
design: design,
});
} else {
this.store.commit("setSingleLikeDesignCollectionList", {
index: index,
design: design,
});
}
this.setDetailDestroy()
},
setTask(data:any){
this.$emit('setTask',data)
// this.exportModel()
},
setShowHide(str:string){
if(str == 'recycleDomHidden')this.recycleDomHidden = !this.recycleDomHidden
if(str == 'domHidden')this.domHidden = !this.domHidden
this.setSystemDesigner(0)
}
},
});
</script>
<style lang="less" scoped>
.designPage {
width: 100%;
height: 100%;
// padding-right:5rem;
overflow: initial !important;
position: relative;
.page_content {
position: relative;
.designPage_left_bottom{
position: absolute;
width: 4rem;
height: 7rem;
background: #fff;
border: 2px solid;
border-right: none;
border-radius: 2rem 0 0 2rem;
top: 50%;
transform: translate(-100%,-50%);
left: 100%;
display: flex;
align-items: center;
justify-content: center;
z-index: 2;
cursor: pointer;
>span{
transition: all .3s;
transform: rotate(90deg);
&.active{
transform: rotate(270deg);
}
}
}
.page_content_body {
position: absolute;
width: 100%;
height: 100%;
// padding-bottom: 4rem;
box-sizing: border-box;
z-index:1;
.right_content_header {
display: flex;
justify-content: space-between;
height: 4.5rem;
align-items: center;
padding: 0 3.2rem 0 1.9rem;
background: rgba(255, 255, 255, 0.2);
position: relative;
.right_content_export{
display: flex;
align-items: center;
position: relative;
.icon-xiala{
cursor: pointer;
transition: .3s all;
margin-left: 1rem;
}
.icon_rotate{
-moz-transform: rotate(180deg);
-webkit-transform: rotate(180deg);
transform: rotate(180deg);
animation-direction: 0.5s;
}
.export_nav{
display: flex;
flex-direction: column;
position: absolute;
top: 5.5rem;
width: 100%;
background: #fff;
padding: 1rem;
border: 2px solid;
z-index: 2;
label{
margin: 0;
}
}
}
.content_header_left {
display: flex;
justify-content: space-between;
align-items: center;
.icon-dangqianweizhi {
font-size: 1.6rem;
color: #000;
}
.content_header_des {
font-size: 1.6rem;
color: #000000;
margin-left: 1rem;
font-weight: 900;
}
}
}
.designPage_body {
width: 100%;
height: 100%;
display: flex;
// padding-left: 0.7rem;
box-sizing: border-box;
// overflow: hidden;
.designPage_left {
// width: 44.4rem;
height: 100%;
background: rgba(255, 255, 255, 0.2);
position: relative;
// overflow: hidden;
.designPage_left_content {
height: 100%;
width: 55rem;
overflow: hidden;
// transition: all .3s;
padding-right: 1.2rem;
&.active{
padding-right: 0;
width: 0;
}
.home_left_info {
height: 100%;
display: flex;
background: #f6f6fa;
border-radius: 2rem;
flex-direction: column;
.left_info_content {
width: 100%;
height: calc(100% - 6.9rem);
overflow-y: auto;
&.left_info_content::-webkit-scrollbar {
display: none;
}
.left_info_content_body {
width: 100%;
}
}
.left_info_hint{
display: flex;
span{
font-size: 1.3rem;
display: inline-block;
}
}
}
}
}
.designPage_right {
// width: calc(100% - 44.4rem);
flex: 1;
height: 100%;
width: 100%;
// overflow: hidden;
display: flex;
flex-direction: column;
justify-content: space-between;
position: relative;
.designPage_left_bottom{
border-radius: 0 2rem 2rem 0rem;
left: 2rem;
top: 50%;
left: auto;
right: 0;
transform: translate(100%, -50%);
// top: calc(50% - 10.4rem / 2);
border: 2px solid;
border-left: none;
background: #000;
color: #fff;
flex-direction: column;
&.active{
right: 53rem;
transform: translate(0, -50%);
}
}
.right_top {
padding: 1rem 3.2rem 2rem 1.2rem;
display: flex;
justify-content: space-between;
box-shadow: 0rem 0.2rem 8rem 0rem rgba(238, 238, 244, 0.25);
background: rgba(255, 255, 255, 0.4);
transition: all .3s;
&.active{
overflow: hidden;
padding-top: 0;
padding-bottom: 0;
height: 0;
}
.right_top_left {
display: flex;
align-items: center;
width: 100%;
.button_margin_14 {
margin-left: 1.4rem;
}
.silder{
display: flex;
align-items: center;
.text{
font-weight: 600;
font-size: 1.8rem;
}
.system_silder{
margin: 0 3rem;
width: 12rem;
}
}
}
}
.right_content_block_box{
flex: 1;
display: flex;
overflow: hidden;
}
.right_content_block {
flex: 1;
display: flex;
width: 0;
flex-direction: column;
&.recycleBin{
flex: none;
margin-left: 0;
width: 0;
overflow: hidden;
&.recycleBinShow{
width: auto;
margin-left: 2rem;
}
.right_content_body {
width: 55rem;
.right_content_img_block{
.content_img_block{
width: 16rem;
height: 23rem;
}
}
}
}
&.right_content_block::-webkit-scrollbar{display: none;}
&.active{
overflow: hidden;
}
.right_content_body {
// padding: 0 1.8rem 0 1.2rem;
// height: calc(50% - 4.5rem);
flex: 1;
overflow: auto;
background: #f6f6fa;
border-radius: 2rem;
display: flex;
flex-direction: column;
.right_content_img_block {
// overflow-y: auto;
height: 100%;
flex: 1;
display: flex;
width: auto;
// overflow: hidden;
align-items: center;
// padding-bottom: 1rem;
overflow-x: auto;
justify-content: center;
&.active::-webkit-scrollbar {
display: none;
}
// &.active::-webkit-scrollbar-button:single-button{
// display: none;
// }
// &.active::-webkit-scrollbar {
// /* 竖轴的宽度 */
// width: 1rem;
// /* 横轴的高度 */
// height: 1rem;
// transition: all .3s;
// }
// /* 进度 */
// &.active::-webkit-scrollbar-thumb {
// border-radius: 1rem;
// background: rgba(238, 238, 244, 0);
// }
// /* 轨道 */
// &.active::-webkit-scrollbar-track {
// border-radius: 1rem;
// background: rgba(238, 238, 244, 0);
// }
// &.active:hover {
// // overflow-x: scroll;
// &.active::-webkit-scrollbar-thumb {
// background: #543087;
// }
// /* 轨道 */
// &.active::-webkit-scrollbar-track {
// background: rgba(84, 48, 135,.2);
// }
// }
>div{
display: flex;
flex-wrap: wrap;
// padding: 0 2.8rem 0 0.9rem;
width: 100%;
height: 100%;
// align-content: flex-start;
overflow-x: hidden;
position: relative;
&::-webkit-scrollbar {
display: none;
}
}
.content_img_block {
// width: 24rem;
// height: 37rem;
width: calc(33.33% - 30px);
height: calc((33.33% - 30px) * 1.54);
box-sizing: border-box;
margin: 5px;
// min-height: 271px;
// max-height: 80%;
display: inline-block;
position: relative;
vertical-align: top;
flex-shrink: 0;
display: flex;
align-items: center;
justify-content: center;
position: absolute;
transition: top,left .3s;
&:hover .icon_like,&:hover .icon_delete,&:hover .Dustbin {
display: block;
}
// &:nth-child(4n) {
// margin-right: 0;
// }
.content_img_flex {
display: flex;
justify-content: center;
align-items: center;
width: 100%;
height: 100%;
border-radius: 2rem;
border: 2px solid #E0E0E0;
background: #fff;
}
&.active{
.icon_like,.icon_delete{
display: block;
}
.content_img_flex {
border: 2px solid #000;
}
}
.content_img {
// max-width: 100%;
width: 100%;
height: 100%;
// max-height: 100%;
object-fit: contain;
}
.Dustbin{
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
cursor: pointer;
color: #fff;
border-radius: 4rem;
font-size: 1.8rem;
padding: 1rem 1.5rem;
background: rgba(0, 0, 0, 0.7);
display: none;
}
.icon_like,.icon_delete {
font-size: 2.4rem;
top: 1rem;
right: 1rem;
position: absolute;
cursor: pointer;
display: none;
}
.icon_delete{
top: 5rem;
}
.icon-jushoucang {
color: #000;
}
.icon-jushoucanggift {
// color: rgba(52, 53, 121, 1);
color: #000;
}
}
}
}
}
}
}
}
.page_content_bg {
position: absolute;
width: 100%;
height: 100%;
}
}
.progress_mark {
background: #ffffff;
width: 100%;
height: 100%;
position: fixed;
left: 0;
top: 0;
z-index: 9999;
display: flex;
justify-content: center;
align-items: center;
.mark_content {
text-align: center;
}
}
}
</style>