2025-05-20 16:47:27 +08:00
|
|
|
|
<template>
|
|
|
|
|
|
<div class="designPage">
|
|
|
|
|
|
<div class="page_content">
|
|
|
|
|
|
|
|
|
|
|
|
<div class="page_content_body">
|
|
|
|
|
|
<div class="designPage_body">
|
2025-07-19 14:04:48 +08:00
|
|
|
|
<div class="designPage_left" :class="{'active':(domHidden)}" ref="hidden">
|
|
|
|
|
|
<div class="designPage_left_content">
|
2025-05-20 16:47:27 +08:00
|
|
|
|
<!-- 有图状态 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>
|
2025-09-08 14:50:59 +08:00
|
|
|
|
<NewCollectionReview id="collectionReview" :probjects="selectProbject" @openCollection="openCollection"></NewCollectionReview>
|
2025-05-20 16:47:27 +08:00
|
|
|
|
</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>
|
|
|
|
|
|
<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()">
|
|
|
|
|
|
{{ $t('HomeView.Design') }}
|
|
|
|
|
|
</div>
|
2025-06-30 10:53:25 +08:00
|
|
|
|
<div class="generage_btn_box white">
|
2025-06-20 11:36:44 +08:00
|
|
|
|
<div class="generage_btn started_btn" style="margin-left: 2rem;">
|
2025-10-03 16:31:42 +08:00
|
|
|
|
<div class="" @click.stop="openEditTools()" style="margin-left: 1rem;">
|
2025-06-26 15:41:08 +08:00
|
|
|
|
{{ $t('Header.Tools') }}
|
2025-06-20 11:36:44 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
<div class="icon iconfont icon-xiala" :class="{active:speedState}" @click.stop="openSpeed"></div>
|
|
|
|
|
|
<div class="content" v-show="speedState">
|
2025-07-19 14:04:48 +08:00
|
|
|
|
<div v-for="item in speedList" v-show="(item.value != 'poseTransfer' || selectProbject.type != 'singleProductDesign')" :key="item.value" style="font-size: 1.4rem;" :class="{active:item.value == speedData.value}" @click.stop="setSpeed(item)" :title="item.title">{{ item.label }}</div>
|
2025-06-20 11:36:44 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
2025-06-26 15:41:08 +08:00
|
|
|
|
<div class="gallery_btn white" @click="openCanvas()" style="margin-left: auto;">
|
|
|
|
|
|
{{ $t('Header.toolsCanvas') }}
|
2025-06-23 09:27:29 +08:00
|
|
|
|
</div>
|
2025-06-20 11:36:44 +08:00
|
|
|
|
|
2025-05-20 16:47:27 +08:00
|
|
|
|
<!-- <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">
|
2025-06-03 14:57:18 +08:00
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="right_top_right">
|
2025-06-09 10:25:54 +08:00
|
|
|
|
|
2025-05-20 16:47:27 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="right_content_block_box">
|
2025-06-09 10:25:54 +08:00
|
|
|
|
<div class="right_content_block" ref="rightContentBlockBox" @mouseenter="mouseenter($event,'like')">
|
2025-05-20 16:47:27 +08:00
|
|
|
|
<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>
|
2025-07-19 14:04:48 +08:00
|
|
|
|
<div class="generalModel_state">
|
2025-06-30 10:53:25 +08:00
|
|
|
|
<div>
|
|
|
|
|
|
<selectMenu
|
|
|
|
|
|
:selectList="resultTypeList"
|
|
|
|
|
|
@change="changeResultType"
|
|
|
|
|
|
:isBtnOpen='true'
|
|
|
|
|
|
:style="{
|
|
|
|
|
|
'border-radius':'0rem',
|
|
|
|
|
|
'border':'none',
|
|
|
|
|
|
'font-weight': '900',
|
|
|
|
|
|
'border-right':'2px solid rgba(0,0,0,.2)',
|
|
|
|
|
|
'line-height': '3rem',
|
|
|
|
|
|
'height': '3rem',
|
|
|
|
|
|
'background': 'rgba(0,0,0,0)',
|
|
|
|
|
|
}"
|
|
|
|
|
|
v-model:select="resultType"
|
|
|
|
|
|
>
|
|
|
|
|
|
<template v-slot:btnText>
|
2025-07-19 14:04:48 +08:00
|
|
|
|
{{ $t('Header.Filter') }}
|
2025-06-30 10:53:25 +08:00
|
|
|
|
</template>
|
|
|
|
|
|
</selectMenu>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div>
|
|
|
|
|
|
<selectMenu
|
|
|
|
|
|
:selectList="[
|
|
|
|
|
|
{
|
2025-07-19 14:04:48 +08:00
|
|
|
|
label:$t('Header.expand'),
|
2025-06-30 10:53:25 +08:00
|
|
|
|
value:true,
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
2025-07-19 14:04:48 +08:00
|
|
|
|
label:$t('Header.collapse'),
|
2025-06-30 10:53:25 +08:00
|
|
|
|
value:false,
|
|
|
|
|
|
},
|
|
|
|
|
|
]"
|
|
|
|
|
|
@change="setUnfold"
|
|
|
|
|
|
:isBtnOpen='true'
|
|
|
|
|
|
:style="{
|
|
|
|
|
|
'border-radius':'0rem',
|
|
|
|
|
|
'border':'none',
|
|
|
|
|
|
'font-weight': '900',
|
|
|
|
|
|
'border-right':'2px solid rgba(0,0,0,.2)',
|
|
|
|
|
|
'line-height': '3rem',
|
|
|
|
|
|
'height': '3rem',
|
|
|
|
|
|
'background': 'rgba(0,0,0,0)',
|
|
|
|
|
|
}"
|
|
|
|
|
|
v-model:select="isUnfold"
|
|
|
|
|
|
>
|
|
|
|
|
|
<template v-slot:btnText>
|
|
|
|
|
|
{{ $t('Header.Unfold') }}
|
|
|
|
|
|
</template>
|
|
|
|
|
|
</selectMenu>
|
2025-06-18 11:05:23 +08:00
|
|
|
|
</div>
|
2025-06-30 10:53:25 +08:00
|
|
|
|
<!-- <div class="generalModel_state_item smail" style="margin-right: 1rem;">
|
2025-06-26 15:41:08 +08:00
|
|
|
|
<span>{{ $t('Header.Unfold') }} :</span>
|
2025-06-18 11:05:23 +08:00
|
|
|
|
<a-switch v-model:checked="isUnfold" @change="setUnfold" />
|
2025-06-30 10:53:25 +08:00
|
|
|
|
</div> -->
|
|
|
|
|
|
<div>
|
|
|
|
|
|
<selectMenu
|
|
|
|
|
|
:selectList="widthList"
|
|
|
|
|
|
@change="setSystemDesigner(500)"
|
|
|
|
|
|
:isBtnOpen='true'
|
|
|
|
|
|
:style="{
|
|
|
|
|
|
'border-radius':'0rem',
|
|
|
|
|
|
'border':'none',
|
|
|
|
|
|
'font-weight': '900',
|
|
|
|
|
|
'line-height': '3rem',
|
|
|
|
|
|
'height': '3rem',
|
|
|
|
|
|
'background': 'rgba(0,0,0,0)',
|
|
|
|
|
|
}"
|
|
|
|
|
|
v-model:select="widthValue.value"
|
|
|
|
|
|
>
|
|
|
|
|
|
<template v-slot:btnText>
|
|
|
|
|
|
{{ $t('Header.Size') }}
|
|
|
|
|
|
</template>
|
|
|
|
|
|
</selectMenu>
|
2025-06-09 10:25:54 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
2025-05-20 16:47:27 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
<div class="right_content_img_block scroll_style active">
|
|
|
|
|
|
<div class="right_content_img_item" ref="likeItemDom" designType="like" :index="0">
|
2025-06-18 11:05:23 +08:00
|
|
|
|
<!-- likeDesignCollectionList -->
|
2025-05-20 16:47:27 +08:00
|
|
|
|
<div class="content_img_block content_img_GetWidth active" :style="likeStyle"
|
2025-06-18 11:05:23 +08:00
|
|
|
|
v-for="(design, index) in selectLikeDesign" :key="design.id || design.designItemId">
|
2025-06-09 10:25:54 +08:00
|
|
|
|
<div class="content_img_flex"
|
2025-06-18 11:05:23 +08:00
|
|
|
|
:class="[design.resultType]"
|
|
|
|
|
|
@mouseenter="startHover(getMousePosition($event,false),design)"
|
|
|
|
|
|
@mouseleave="endHover(getMousePosition($event,false),design)"
|
|
|
|
|
|
@mousedown.stop="designMousedown(getMousePosition($event,false),design,'like')"
|
|
|
|
|
|
@touchstart.passive="designMousedown(getMousePosition($event,true),design,'like')"
|
2025-05-20 16:47:27 +08:00
|
|
|
|
@click="designDetail(
|
|
|
|
|
|
design,
|
|
|
|
|
|
index,
|
2025-06-18 11:05:23 +08:00
|
|
|
|
selectLikeDesign,
|
2025-05-20 16:47:27 +08:00
|
|
|
|
'like'
|
|
|
|
|
|
)">
|
2025-06-11 15:08:17 +08:00
|
|
|
|
<img class="content_img"
|
2025-07-19 14:04:48 +08:00
|
|
|
|
v-if="design?.resultType == 'PoseTransfer' && design?.firstFrameUrl"
|
2025-06-26 15:41:08 +08:00
|
|
|
|
:src="design?.firstFrameUrl" alt=""
|
2025-06-11 15:08:17 +08:00
|
|
|
|
@mouseenter.stop="gifPlay($event,design)"
|
|
|
|
|
|
@mouseleave.stop="gifPause($event,design)" >
|
2025-06-26 15:41:08 +08:00
|
|
|
|
<!-- <div :style="{'background-image': `url(${design?.designOutfitUrl||design?.url})`}" class="content_img" v-if="design?.designOutfitUrl||design?.url" :key="design?.designOutfitUrl" designType="like" :index="index"></div> -->
|
2025-08-26 10:14:34 +08:00
|
|
|
|
<img class="content_img" v-else-if="design?.designOutfitUrl||design?.url" :src="design?.designOutfitUrl||design?.url"
|
2025-07-19 14:04:48 +08:00
|
|
|
|
:key="design?.status" designType="like" :index="index"/>
|
2025-06-26 15:41:08 +08:00
|
|
|
|
<a-spin v-show="!design?.designOutfitUrl && !design?.url && !design?.firstFrameUrl" size="large"></a-spin>
|
2025-06-18 11:05:23 +08:00
|
|
|
|
|
|
|
|
|
|
<!-- <div class="content_img_block_child" @click.stop>
|
|
|
|
|
|
<div class="content_img_block content_img_GetWidth active childItem"
|
|
|
|
|
|
:style="likeStyle"
|
|
|
|
|
|
v-for="childItem,childIndex in design.childList"
|
|
|
|
|
|
>
|
|
|
|
|
|
<div class="content_img_flex">
|
|
|
|
|
|
<img class="content_img" v-show="!design?.generateAwait" :src="childItem.designOutfitUrl||childItem.url" alt="">
|
|
|
|
|
|
<a-spin v-show="design?.generateAwait" size="large"></a-spin>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="btn" v-show="!childItem?.generateAwait">
|
|
|
|
|
|
<i @click.stop="openEditBtn(childItem,childIndex,$event)" class="fi fi-br-menu-dots-vertical"></i>
|
2025-06-03 14:57:18 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
2025-06-18 11:05:23 +08:00
|
|
|
|
<div class="content_img_block content_img_GetWidth active childItem"
|
|
|
|
|
|
:style="likeStyle"
|
|
|
|
|
|
v-for="childItem,childIndex in design.childList"
|
|
|
|
|
|
>
|
|
|
|
|
|
<div class="content_img_flex">
|
|
|
|
|
|
<img class="content_img" v-show="!design?.generateAwait" :src="childItem.designOutfitUrl||childItem.url" alt="">
|
|
|
|
|
|
<a-spin v-show="design?.generateAwait" size="large"></a-spin>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="btn" v-show="!childItem?.generateAwait">
|
|
|
|
|
|
<i @click.stop="openEditBtn(childItem,childIndex,$event)" class="fi fi-br-menu-dots-vertical"></i>
|
|
|
|
|
|
</div>
|
2025-06-03 14:57:18 +08:00
|
|
|
|
</div>
|
2025-06-18 11:05:23 +08:00
|
|
|
|
</div> -->
|
|
|
|
|
|
</div>
|
2025-06-26 15:41:08 +08:00
|
|
|
|
<div class="btn" v-if="design?.designOutfitUrl||design?.url || design?.firstFrameUrl" v-show="!design?.generateAwait">
|
2025-06-18 11:05:23 +08:00
|
|
|
|
<i @click.stop="openEditBtn(design,index,$event)" class="fi fi-br-menu-dots-vertical"></i>
|
2025-06-03 14:57:18 +08:00
|
|
|
|
|
2025-05-20 16:47:27 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
2025-09-01 15:45:15 +08:00
|
|
|
|
<div class="designPage_left_bottom left" v-show="!designTools?.designTools" @click="setShowHide('domHidden')" >
|
2025-06-30 10:53:25 +08:00
|
|
|
|
<span class="icon iconfont icon-xiala" :class="{'active':domHidden}"></span>
|
|
|
|
|
|
</div>
|
2025-09-01 15:45:15 +08:00
|
|
|
|
<div class="designPage_left_bottom right" :class="{active:recycleDomHidden}" @click="setShowHide('recycleDomHidden')" v-show="designCollectionList.length > 0 && !designTools?.designTools">
|
2025-06-30 10:53:25 +08:00
|
|
|
|
<span class="icon iconfont icon-xiala" :class="{'active':recycleDomHidden}"></span>
|
|
|
|
|
|
</div>
|
2025-05-20 16:47:27 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
<div class="right_content_block recycleBin" @mouseenter="mouseenter($event,'recycle')" :class="{recycleBinShow:recycleDomHidden}">
|
2025-06-30 10:53:25 +08:00
|
|
|
|
|
2025-05-20 16:47:27 +08:00
|
|
|
|
<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':'']">
|
2025-06-09 10:25:54 +08:00
|
|
|
|
<div class="right_content_img_item" ref="collItemDom" designType="disLike" :index="0">
|
2025-05-20 16:47:27 +08:00
|
|
|
|
<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':'']"
|
2025-08-22 10:27:48 +08:00
|
|
|
|
@mousedown.stop="designMousedown(getMousePosition($event,false),design,'disLike')"
|
|
|
|
|
|
@touchstart.passive="designMousedown(getMousePosition($event,true),design,'disLike')"
|
2025-05-20 16:47:27 +08:00
|
|
|
|
@click="
|
|
|
|
|
|
designDetail(
|
|
|
|
|
|
design,
|
|
|
|
|
|
index,
|
|
|
|
|
|
designCollectionList,
|
2025-06-09 10:25:54 +08:00
|
|
|
|
'disLike'
|
2025-05-20 16:47:27 +08:00
|
|
|
|
)">
|
2025-06-11 15:08:17 +08:00
|
|
|
|
<img class="content_img"
|
|
|
|
|
|
v-if="design.resultType == 'PoseTransfer'"
|
|
|
|
|
|
:src="design.firstFrameUrl" alt=""
|
|
|
|
|
|
@mouseenter.stop="gifPlay($event,design)"
|
|
|
|
|
|
@mouseleave.stop="gifPause($event,design)" >
|
2025-06-09 10:25:54 +08:00
|
|
|
|
<img class="content_img" v-show="!design?.generateAwait" :src="design.designOutfitUrl || design.url" designType="disLike" :index="index"/>
|
|
|
|
|
|
<a-spin v-show="design?.generateAwait" size="large"></a-spin>
|
2025-05-20 16:47:27 +08:00
|
|
|
|
</div>
|
2025-06-03 14:57:18 +08:00
|
|
|
|
<div class="btn">
|
2025-06-18 11:05:23 +08:00
|
|
|
|
<div class="icon iconfont icon-jushoucang icon_like" @click="likeDesignCollection(design,index,design.resultType)">
|
2025-06-03 14:57:18 +08:00
|
|
|
|
</div>
|
2025-06-18 11:05:23 +08:00
|
|
|
|
<i class="fi fi-rr-trash icon_delete" @click="setDeleteDesign(design,index)">
|
|
|
|
|
|
</i>
|
2025-05-20 16:47:27 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
2025-06-30 10:53:25 +08:00
|
|
|
|
|
2025-05-20 16:47:27 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
2025-06-18 11:05:23 +08:00
|
|
|
|
<div ref="designBtn" class="btnOpen" @click.stop="()=>openEditBtnId=-1" :class="{active:openEditBtnId == selectEditBtn?.designItemId||openEditBtnId == selectEditBtn?.id}">
|
2025-06-20 11:36:44 +08:00
|
|
|
|
<div class="item" v-show="selectEditBtn?.resultType == 'Design'" @click="setEditDesignType(selectLikeDesign,selectEditBtnIndex,'ToProductImage','add','like')">
|
2025-06-26 15:41:08 +08:00
|
|
|
|
<div class="text">{{$t('Header.toolsToProduct')}}</div>
|
2025-06-20 11:36:44 +08:00
|
|
|
|
<i class="fi fi fi-ss-box-open"></i>
|
2025-06-18 11:05:23 +08:00
|
|
|
|
</div>
|
2025-07-19 14:04:48 +08:00
|
|
|
|
<div class="item" v-show="(selectEditBtn?.resultType == 'ToProductImage' || selectEditBtn?.resultType == 'Relight')" @click="setEditDesignType(selectLikeDesign,selectEditBtnIndex,'Relight','add','like')">
|
2025-06-26 15:41:08 +08:00
|
|
|
|
<div class="text">{{$t('Header.toolsRelight')}}</div>
|
2025-06-18 11:05:23 +08:00
|
|
|
|
<i class="fi fi fi-br-keyboard-brightness"></i>
|
|
|
|
|
|
</div>
|
2025-07-19 14:04:48 +08:00
|
|
|
|
<div class="item" v-show="(selectEditBtn?.resultType == 'ToProductImage' || selectEditBtn?.resultType == 'Relight') && (selectProbject.type != 'singleProductDesign')" @click="setEditDesignType(selectLikeDesign,selectEditBtnIndex,'PoseTransfer','add','like')">
|
2025-06-26 15:41:08 +08:00
|
|
|
|
<div class="text">{{$t('Header.toolsToTransferPose')}}</div>
|
2025-06-20 11:36:44 +08:00
|
|
|
|
<i class="fi fi fi-rr-play-alt"></i>
|
2025-06-18 11:05:23 +08:00
|
|
|
|
</div>
|
2025-07-19 14:04:48 +08:00
|
|
|
|
<div class="item" v-show="selectEditBtn?.resultType != 'Design'" @click="setNoDesignLike(selectEditBtn,selectEditBtnIndex,selectEditBtn?.resultType,'disLike')">
|
2025-06-26 15:41:08 +08:00
|
|
|
|
<div class="text">{{$t('Header.Delete')}}</div>
|
2025-06-20 11:36:44 +08:00
|
|
|
|
<i class="fi fi-rr-trash icon_delete">
|
|
|
|
|
|
</i>
|
|
|
|
|
|
</div>
|
2025-07-19 14:04:48 +08:00
|
|
|
|
<div class="item" v-show="selectEditBtn?.resultType == 'Design'" @click="dislikeDesignCollection(selectEditBtn,selectEditBtn?.resultType,selectEditBtnIndex)">
|
|
|
|
|
|
<div class="text">{{$t('Header.onLiked')}}</div>
|
|
|
|
|
|
<i class="icon iconfont icon-jushoucang icon_like">
|
|
|
|
|
|
</i>
|
|
|
|
|
|
</div>
|
2025-06-20 11:36:44 +08:00
|
|
|
|
|
2025-06-18 11:05:23 +08:00
|
|
|
|
</div>
|
2025-05-22 14:26:47 +08:00
|
|
|
|
<collectionModal ref="collectionModal"></collectionModal>
|
2025-05-20 16:47:27 +08:00
|
|
|
|
<!-- <DesignDetail ref="designDetail" @finishRedesign="finishRedesign"></DesignDetail> -->
|
|
|
|
|
|
<!-- 导出缩略图的蒙层 start-->
|
|
|
|
|
|
<div class="mark_loading" v-show="isShowMark">
|
|
|
|
|
|
<a-spin size="large" />
|
|
|
|
|
|
</div>
|
2025-09-01 15:45:15 +08:00
|
|
|
|
|
2025-05-20 16:47:27 +08:00
|
|
|
|
<!-- 导出缩略图的蒙层 end-->
|
|
|
|
|
|
<!-- design collection的进度蒙层 start-->
|
|
|
|
|
|
<!-- design collection的进度蒙层 end-->
|
|
|
|
|
|
<affiche ref="affiche"></affiche>
|
|
|
|
|
|
<DesignDetailcopy v-if="detailDestroy" ref="designDetail" @destroy="setDetailDestroy" @finishRedesign="finishRedesign"></DesignDetailcopy>
|
2025-06-03 14:57:18 +08:00
|
|
|
|
<editDesignType ref="editDesignType"
|
|
|
|
|
|
@addGenerateImg="addGenerateImg"
|
2025-07-19 14:04:48 +08:00
|
|
|
|
@upDataDesignLikeList="generateLoad"
|
2025-09-02 16:11:47 +08:00
|
|
|
|
:onlike="onLike"
|
2025-06-03 14:57:18 +08:00
|
|
|
|
:productData="{
|
|
|
|
|
|
upload:upload,
|
|
|
|
|
|
RelightDirection:RelightDirection,
|
|
|
|
|
|
RelightDirectionList:RelightDirectionList,
|
|
|
|
|
|
}"
|
|
|
|
|
|
:isProductimg="true"></editDesignType>
|
2025-07-19 14:04:48 +08:00
|
|
|
|
<designTools ref="designTools" :source="'design'" @editToolsSuccess="generateLoad"></designTools>
|
2025-05-20 16:47:27 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
|
|
<script lang="ts">
|
2025-07-19 14:04:48 +08:00
|
|
|
|
import { defineComponent, h, ref, computed, toRefs, createVNode,provide,nextTick,reactive,onBeforeUnmount, toRef, watch} from "vue";
|
2025-05-20 16:47:27 +08:00
|
|
|
|
// import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
|
|
|
|
|
|
import NewCollectionReview from "@/component/HomePage/NewCollectionReview.vue";
|
|
|
|
|
|
import generalCanvas from "@/component/modules/generalCanvas.vue";
|
|
|
|
|
|
import affiche from "@/component/HomePage/affiche.vue";
|
2025-09-11 15:55:31 +08:00
|
|
|
|
import DesignDetailcopy from "@/component/Detail/DesignDetail.vue";
|
2025-05-20 16:47:27 +08:00
|
|
|
|
import html2canvas from "html2canvas";
|
|
|
|
|
|
import { message,Modal } from "ant-design-vue";
|
|
|
|
|
|
import { useStore } from "vuex";
|
2025-06-26 15:41:08 +08:00
|
|
|
|
import { setGradual } from "@/tool/util";
|
2025-05-20 16:47:27 +08:00
|
|
|
|
import { Https } from "@/tool/https";
|
|
|
|
|
|
import { openGuide,driverObj__ } from "@/tool/guide";
|
|
|
|
|
|
import { LoadingOutlined ,ExclamationCircleOutlined} from "@ant-design/icons-vue";
|
2025-06-03 14:57:18 +08:00
|
|
|
|
import editDesignType from './editDesignType/index.vue'
|
2025-05-20 16:47:27 +08:00
|
|
|
|
// 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";
|
2025-05-22 14:26:47 +08:00
|
|
|
|
import collectionModal from './collection.vue'
|
2025-06-20 11:36:44 +08:00
|
|
|
|
import designTools from './tools.vue'
|
2025-06-30 10:53:25 +08:00
|
|
|
|
import selectMenu from '@/component/modules/selectMenu.vue'
|
2025-07-19 14:04:48 +08:00
|
|
|
|
import { forEach } from "jszip";
|
2025-05-20 16:47:27 +08:00
|
|
|
|
|
|
|
|
|
|
export default defineComponent({
|
|
|
|
|
|
name: "homePage",
|
|
|
|
|
|
components: {
|
2025-05-22 14:26:47 +08:00
|
|
|
|
collectionModal,
|
2025-05-20 16:47:27 +08:00
|
|
|
|
// HeaderComponent,
|
|
|
|
|
|
NewCollectionReview,
|
|
|
|
|
|
affiche,
|
|
|
|
|
|
generalCanvas,
|
2025-06-03 14:57:18 +08:00
|
|
|
|
DesignDetailcopy,
|
|
|
|
|
|
editDesignType,
|
2025-06-20 11:36:44 +08:00
|
|
|
|
designTools,
|
2025-06-30 10:53:25 +08:00
|
|
|
|
selectMenu,
|
2025-05-20 16:47:27 +08:00
|
|
|
|
},
|
|
|
|
|
|
emits:['setTask'],
|
|
|
|
|
|
activated() {
|
|
|
|
|
|
},
|
|
|
|
|
|
deactivated() {
|
|
|
|
|
|
},
|
|
|
|
|
|
props:['isState'],
|
|
|
|
|
|
setup(props,{emit}) {
|
2025-08-22 10:27:48 +08:00
|
|
|
|
const {t,locale} = useI18n()
|
2025-05-20 16:47:27 +08:00
|
|
|
|
const store = useStore();
|
2025-06-03 14:57:18 +08:00
|
|
|
|
const editDesignType = reactive({
|
2025-07-19 14:04:48 +08:00
|
|
|
|
selectProbject:computed(()=>{
|
|
|
|
|
|
return store.state.Workspace.probjects
|
|
|
|
|
|
}),
|
2025-06-03 14:57:18 +08:00
|
|
|
|
upload:{id:store.state.Workspace.probjects.id},
|
|
|
|
|
|
RelightDirectionList:[
|
|
|
|
|
|
{
|
|
|
|
|
|
value:'Right Light',
|
2025-06-26 15:41:08 +08:00
|
|
|
|
label:t('ProductImg.RightLight')
|
2025-06-03 14:57:18 +08:00
|
|
|
|
},{
|
|
|
|
|
|
value:'Left Light',
|
2025-06-26 15:41:08 +08:00
|
|
|
|
label:t('ProductImg.LeftLight')
|
2025-06-03 14:57:18 +08:00
|
|
|
|
},{
|
|
|
|
|
|
value:'Top Light',
|
2025-06-26 15:41:08 +08:00
|
|
|
|
label:t('ProductImg.TopLight')
|
2025-06-03 14:57:18 +08:00
|
|
|
|
},{
|
|
|
|
|
|
value:'Bottom Light',
|
2025-06-26 15:41:08 +08:00
|
|
|
|
label:t('ProductImg.BottomLight')
|
2025-06-03 14:57:18 +08:00
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
RelightDirection:'Right Light'
|
|
|
|
|
|
})
|
2025-05-20 16:47:27 +08:00
|
|
|
|
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:'',
|
|
|
|
|
|
},
|
|
|
|
|
|
])
|
2025-05-22 14:26:47 +08:00
|
|
|
|
const dataDom = reactive({
|
|
|
|
|
|
collectionModal:null as any,
|
2025-06-03 14:57:18 +08:00
|
|
|
|
editDesignType:null as any,
|
2025-06-18 11:05:23 +08:00
|
|
|
|
designBtn:null as any,
|
2025-06-20 11:36:44 +08:00
|
|
|
|
designTools:null as any,
|
2025-06-03 14:57:18 +08:00
|
|
|
|
})
|
2025-06-20 11:36:44 +08:00
|
|
|
|
//可使用的tools类型
|
|
|
|
|
|
let speed = reactive({
|
|
|
|
|
|
speedList:[
|
|
|
|
|
|
{
|
2025-06-26 15:41:08 +08:00
|
|
|
|
label:computed(()=>t('Header.toolsToProduct')),
|
2025-06-20 11:36:44 +08:00
|
|
|
|
value:'toProduct',
|
|
|
|
|
|
|
|
|
|
|
|
},{
|
2025-06-26 15:41:08 +08:00
|
|
|
|
label:computed(()=>t('Header.toolsRelight')),
|
2025-06-20 11:36:44 +08:00
|
|
|
|
value:'relight',
|
2025-07-19 14:04:48 +08:00
|
|
|
|
},{
|
|
|
|
|
|
label:computed(()=>t('Header.toolsToTransferPose')),
|
|
|
|
|
|
value:'poseTransfer',
|
2025-06-20 11:36:44 +08:00
|
|
|
|
},
|
|
|
|
|
|
],
|
|
|
|
|
|
speedState:false,
|
|
|
|
|
|
speedData:{
|
2025-06-26 15:41:08 +08:00
|
|
|
|
label:computed(()=>t('Header.toolsToProduct')),
|
2025-06-20 11:36:44 +08:00
|
|
|
|
value:'toProduct',
|
|
|
|
|
|
},
|
|
|
|
|
|
})
|
|
|
|
|
|
const openSpeed = ()=>{
|
|
|
|
|
|
speed.speedState = !speed.speedState
|
|
|
|
|
|
if(speed.speedState){
|
|
|
|
|
|
document.addEventListener('click',openSpeed)
|
|
|
|
|
|
}else{
|
|
|
|
|
|
document.removeEventListener('click',openSpeed)
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
const setSpeed = (item:any)=>{
|
|
|
|
|
|
speed.speedState = false
|
2025-06-30 10:53:25 +08:00
|
|
|
|
document.removeEventListener('click',openSpeed)
|
2025-06-20 11:36:44 +08:00
|
|
|
|
speed.speedData = item
|
|
|
|
|
|
}
|
|
|
|
|
|
const openEditTools = ()=>{
|
2025-08-22 10:27:48 +08:00
|
|
|
|
dataDom.designTools.init(speed.speedData.value,likeDesignCollectionList.value,t,locale)
|
2025-06-20 11:36:44 +08:00
|
|
|
|
}
|
2025-06-23 09:27:29 +08:00
|
|
|
|
const openCanvas = ()=>{
|
2025-08-22 10:27:48 +08:00
|
|
|
|
dataDom.designTools.init('editCanvas','',t,locale)
|
2025-06-23 09:27:29 +08:00
|
|
|
|
}
|
2025-06-03 14:57:18 +08:00
|
|
|
|
const designData = reactive({
|
|
|
|
|
|
openEditBtnId:-1,
|
2025-06-18 11:05:23 +08:00
|
|
|
|
selectEditBtn:null as any,
|
|
|
|
|
|
selectEditBtnIndex:-1,
|
2025-06-03 14:57:18 +08:00
|
|
|
|
likeLoading: false, //喜欢防抖
|
|
|
|
|
|
widthList:[
|
|
|
|
|
|
{
|
2025-06-26 15:41:08 +08:00
|
|
|
|
label:t('Header.Small'),
|
2025-06-03 14:57:18 +08:00
|
|
|
|
value:170,
|
|
|
|
|
|
},{
|
2025-06-26 15:41:08 +08:00
|
|
|
|
label:t('Header.Medium'),
|
2025-06-03 14:57:18 +08:00
|
|
|
|
value:250,
|
|
|
|
|
|
},{
|
2025-06-26 15:41:08 +08:00
|
|
|
|
label:t('Header.Large'),
|
2025-06-03 14:57:18 +08:00
|
|
|
|
value:400,
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
2025-06-18 11:05:23 +08:00
|
|
|
|
selectDesign:null as any,//当前选择的design
|
|
|
|
|
|
isUnfold:false,
|
|
|
|
|
|
selectLikeDesign:[] as any,
|
|
|
|
|
|
//类型
|
|
|
|
|
|
resultTypeList:[
|
|
|
|
|
|
{
|
2025-06-26 15:41:08 +08:00
|
|
|
|
label:t('Header.All'),
|
2025-06-18 11:05:23 +08:00
|
|
|
|
value:'All',
|
|
|
|
|
|
},{
|
2025-06-26 15:41:08 +08:00
|
|
|
|
label:t('Header.Design'),
|
2025-06-18 11:05:23 +08:00
|
|
|
|
value:'Design',
|
|
|
|
|
|
},{
|
2025-06-26 15:41:08 +08:00
|
|
|
|
label:t('Header.Product'),
|
2025-06-18 11:05:23 +08:00
|
|
|
|
value:'Product',
|
|
|
|
|
|
},
|
|
|
|
|
|
// ,{
|
|
|
|
|
|
{
|
2025-06-26 15:41:08 +08:00
|
|
|
|
label:t('Header.PoseTransfer'),
|
2025-06-18 11:05:23 +08:00
|
|
|
|
value:'PoseTransfer',
|
|
|
|
|
|
},
|
|
|
|
|
|
],
|
|
|
|
|
|
resultType:'All',
|
2025-06-26 15:41:08 +08:00
|
|
|
|
likeDesignTools:false,
|
2025-06-18 11:05:23 +08:00
|
|
|
|
})
|
|
|
|
|
|
watch(()=>likeDesignCollectionList.value.length,(val)=>{
|
2025-06-26 15:41:08 +08:00
|
|
|
|
if(val>0){
|
|
|
|
|
|
uploadLikeDom()
|
2025-08-22 10:27:48 +08:00
|
|
|
|
setPrductimgAll()
|
2025-06-26 15:41:08 +08:00
|
|
|
|
}else{
|
|
|
|
|
|
designData.selectLikeDesign = []
|
|
|
|
|
|
|
|
|
|
|
|
}
|
2025-05-22 14:26:47 +08:00
|
|
|
|
})
|
2025-05-20 16:47:27 +08:00
|
|
|
|
provide('exportNav',exportNav)
|
|
|
|
|
|
let isShowOperate = ref(false)
|
|
|
|
|
|
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({
|
2025-06-09 10:25:54 +08:00
|
|
|
|
widthValue:{
|
|
|
|
|
|
label:'Medium',
|
|
|
|
|
|
value:170,
|
|
|
|
|
|
},
|
2025-05-20 16:47:27 +08:00
|
|
|
|
collValue:6,
|
|
|
|
|
|
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
|
2025-06-09 10:25:54 +08:00
|
|
|
|
collItemSize.widthValue.value = collItemSize.widthValue.value == -1?100:collItemSize.widthValue.value
|
|
|
|
|
|
collItemSize.widthValue.value = collItemSize.widthValue.value > parentWidth?parentWidth:collItemSize.widthValue.value
|
|
|
|
|
|
collItemSize.collValue = Math.floor(parentWidth / collItemSize.widthValue.value)
|
|
|
|
|
|
collItemSize.padding = Math.floor(parentWidth - (collItemSize.collValue * collItemSize.widthValue.value))
|
2025-05-20 16:47:27 +08:00
|
|
|
|
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],
|
2025-06-18 11:05:23 +08:00
|
|
|
|
sort: designData.selectLikeDesign[i].sort - 1,
|
|
|
|
|
|
// sort: likeDesignCollectionList.value[i].sort - 1,
|
2025-05-20 16:47:27 +08:00
|
|
|
|
index: i,
|
2025-06-18 11:05:23 +08:00
|
|
|
|
userLikeSortId:designData.selectLikeDesign[i].userLikeSortId || designData.selectLikeDesign[i].id
|
|
|
|
|
|
// userLikeSortId:likeDesignCollectionList.value[i].userLikeSortId || likeDesignCollectionList.value[i].id
|
2025-05-20 16:47:27 +08:00
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
moveItem('like')
|
|
|
|
|
|
})
|
|
|
|
|
|
},time)
|
|
|
|
|
|
}
|
|
|
|
|
|
const setDesignItemStyle = ()=>{
|
|
|
|
|
|
posiitonData.value.generateElList = []
|
2025-09-01 14:03:30 +08:00
|
|
|
|
if(!collItemDom.value)return
|
2025-05-20 16:47:27 +08:00
|
|
|
|
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,
|
2025-06-09 10:25:54 +08:00
|
|
|
|
userLikeSortId:item.designItemId || item.id
|
2025-05-20 16:47:27 +08:00
|
|
|
|
});
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
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)=>{
|
2025-10-03 13:46:20 +08:00
|
|
|
|
if(item.sort > collItem.sort) item.sort --
|
|
|
|
|
|
if(item.index > collItem.index) item.index --
|
2025-05-20 16:47:27 +08:00
|
|
|
|
})
|
|
|
|
|
|
moveItem('')
|
|
|
|
|
|
}
|
|
|
|
|
|
const cancelDeleteDesign = (index:any)=>{
|
|
|
|
|
|
store.commit("cancelDeleteDesignCollectionList",index);
|
|
|
|
|
|
}
|
2025-06-18 11:05:23 +08:00
|
|
|
|
const designMousedown = (e:any,design:any,str:string)=>{
|
2025-07-19 14:04:48 +08:00
|
|
|
|
if(str != 'disLike'){
|
|
|
|
|
|
if(design.resultType != 'Design' || designData.isUnfold)return
|
|
|
|
|
|
if(str != 'like' && showDesignMark.value) return
|
|
|
|
|
|
}
|
2025-08-22 10:27:48 +08:00
|
|
|
|
let Id = design.userLikeSortId || design.id || design.designItemId
|
|
|
|
|
|
console.log(design)
|
2025-05-20 16:47:27 +08:00
|
|
|
|
let arr = str == 'like'? posiitonData.value.likeElList:posiitonData.value.generateElList
|
2025-08-22 10:27:48 +08:00
|
|
|
|
console.log(arr)
|
2025-05-20 16:47:27 +08:00
|
|
|
|
let item:any = arr.filter((item:any)=>item.userLikeSortId == Id)[0]
|
2025-08-22 10:27:48 +08:00
|
|
|
|
console.log(item)
|
2025-05-20 16:47:27 +08:00
|
|
|
|
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)=>{
|
2025-06-09 10:25:54 +08:00
|
|
|
|
let item = posiitonData.value.likeElList.filter((item:any)=>item.userLikeSortId == likeItem.userLikeSortId || item.userLikeSortId == likeItem.id)[0]
|
2025-05-20 16:47:27 +08:00
|
|
|
|
likeItem.sort = item.sort + 1
|
|
|
|
|
|
let obj = {
|
2025-06-09 10:25:54 +08:00
|
|
|
|
id:likeItem.userLikeSortId || likeItem.id,
|
2025-05-20 16:47:27 +08:00
|
|
|
|
"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'){
|
2025-06-09 10:25:54 +08:00
|
|
|
|
num = value
|
2025-05-20 16:47:27 +08:00
|
|
|
|
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]
|
|
|
|
|
|
}
|
2025-06-09 10:25:54 +08:00
|
|
|
|
let padding = str == 'like'?collItemSize.padding/2:0
|
|
|
|
|
|
let moveIndex = Math.round((x-padding) / (width + 10)) + Math.round(y / (height + 10)) * num;
|
2025-05-20 16:47:27 +08:00
|
|
|
|
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'){
|
2025-07-19 14:04:48 +08:00
|
|
|
|
designData.selectLikeDesign = []
|
2025-05-20 16:47:27 +08:00
|
|
|
|
let elArr = likeItemDom.value.children
|
2025-07-19 14:04:48 +08:00
|
|
|
|
// posiitonData.value.likeElList.push({
|
|
|
|
|
|
// el: elArr[0],
|
|
|
|
|
|
// sort: value.sort - 1,
|
|
|
|
|
|
// index: value.sort - 1,
|
|
|
|
|
|
// userLikeSortId:value.userLikeSortId
|
|
|
|
|
|
// });
|
2025-06-09 10:25:54 +08:00
|
|
|
|
let collItem = posiitonData.value.generateElList.filter((item:any)=>(item.userLikeSortId == value.designItemId || item.userLikeSortId == value.id))[0]
|
|
|
|
|
|
if(collItem){
|
|
|
|
|
|
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
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
2025-05-20 16:47:27 +08:00
|
|
|
|
}else if(str == 'disLike'){
|
|
|
|
|
|
let elArr = collItemDom.value.querySelectorAll('.content_img_GetWidth')
|
2025-07-19 14:04:48 +08:00
|
|
|
|
// 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
|
|
|
|
|
|
// }
|
|
|
|
|
|
// })
|
2025-05-20 16:47:27 +08:00
|
|
|
|
posiitonData.value.generateElList.push({
|
|
|
|
|
|
el: elArr[elArr.length-1],
|
|
|
|
|
|
sort: posiitonData.value.generateElList.length,
|
|
|
|
|
|
index: posiitonData.value.generateElList.length,
|
2025-06-09 10:25:54 +08:00
|
|
|
|
userLikeSortId:value.designItemId||value.id
|
2025-05-20 16:47:27 +08:00
|
|
|
|
});
|
|
|
|
|
|
}
|
2025-06-09 10:25:54 +08:00
|
|
|
|
setSystemDesigner(100)
|
2025-07-19 14:04:48 +08:00
|
|
|
|
setDesignItemStyle()
|
|
|
|
|
|
uploadLikeDom()
|
|
|
|
|
|
|
2025-05-20 16:47:27 +08:00
|
|
|
|
// moveItem('disLike');
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
//排列
|
|
|
|
|
|
const moveItem = (str:any)=>{
|
|
|
|
|
|
let elLikeList = posiitonData.value.likeElList
|
|
|
|
|
|
let generateElList = posiitonData.value.generateElList
|
|
|
|
|
|
let value = collItemSize.collValue
|
2025-06-09 10:25:54 +08:00
|
|
|
|
let width:any,height:any
|
2025-05-20 16:47:27 +08:00
|
|
|
|
width = (collItemDom.value.offsetWidth - 30) / 3 * collItemSize.scale[0]
|
|
|
|
|
|
height = (collItemDom.value.offsetWidth - 30) / 3 * collItemSize.scale[1]
|
2025-06-09 10:25:54 +08:00
|
|
|
|
|
2025-05-20 16:47:27 +08:00
|
|
|
|
// let num = str == 'like'?value:3
|
2025-06-09 10:25:54 +08:00
|
|
|
|
nextTick(()=>{
|
|
|
|
|
|
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';
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
|
2025-05-20 16:47:27 +08:00
|
|
|
|
}
|
2025-05-22 14:26:47 +08:00
|
|
|
|
const openCollection = (str:string)=>{
|
|
|
|
|
|
dataDom.collectionModal.init(str)
|
|
|
|
|
|
}
|
2025-06-18 11:05:23 +08:00
|
|
|
|
const openEditBtn = (design:any,index:number,event:any)=>{
|
|
|
|
|
|
if(designData.selectLikeDesign[index].resultType != 'Design'){
|
|
|
|
|
|
designData.selectDesign = designData.selectLikeDesign.filter((item:any)=>(item.resultType == 'Design' && item.userLikeSortId == designData.selectLikeDesign[index].parentId))[0]
|
|
|
|
|
|
}else{
|
|
|
|
|
|
designData.selectDesign = designData.selectLikeDesign[index]
|
|
|
|
|
|
}
|
|
|
|
|
|
designData.openEditBtnId = design.designItemId||design.id
|
|
|
|
|
|
designData.selectEditBtn = design
|
|
|
|
|
|
designData.selectEditBtnIndex = index
|
|
|
|
|
|
let width = event.target.offsetWidth
|
|
|
|
|
|
let height = event.target.offsetHeight
|
|
|
|
|
|
let parentRect = dataDom.designBtn.parentElement.getBoundingClientRect()
|
|
|
|
|
|
|
|
|
|
|
|
let x = event.clientX - parentRect.x - event.offsetX + width
|
|
|
|
|
|
let y = event.clientY - parentRect.y - event.offsetY + height
|
|
|
|
|
|
dataDom.designBtn.style.left = x+'px'
|
|
|
|
|
|
dataDom.designBtn.style.top = y+'px'
|
|
|
|
|
|
|
2025-06-03 14:57:18 +08:00
|
|
|
|
let removeEditBtnId = ()=>{
|
|
|
|
|
|
designData.openEditBtnId = -1
|
|
|
|
|
|
document.removeEventListener('click',removeEditBtnId)
|
|
|
|
|
|
}
|
|
|
|
|
|
document.addEventListener('click',removeEditBtnId)
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
let setEditDesignType = (arr:any,index:any,type:any,status:any,listType:string)=>{
|
|
|
|
|
|
arr = JSON.parse(JSON.stringify(arr))
|
2025-07-19 14:04:48 +08:00
|
|
|
|
store.commit('setOpenChatStatus',false)
|
2025-06-03 14:57:18 +08:00
|
|
|
|
let item = arr[index]
|
|
|
|
|
|
if(status == 'add'){
|
|
|
|
|
|
item.sourceUrl = item.designOutfitUrl || item.url
|
|
|
|
|
|
}else{
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
arr[index].resultType = type
|
|
|
|
|
|
// dataDom.editDesignType.isProductimg = isLike
|
|
|
|
|
|
dataDom.editDesignType.isProductimg = true
|
2025-07-19 14:04:48 +08:00
|
|
|
|
clearInterval(prductimgTime.ToProductImage)
|
|
|
|
|
|
clearInterval(prductimgTime.PoseTransfer)
|
|
|
|
|
|
clearInterval(prductimgTime.Relight)
|
2025-08-22 10:27:48 +08:00
|
|
|
|
arr[index].sort = arr[index].oldSort || arr[index].sort
|
|
|
|
|
|
console.log(JSON.parse(JSON.stringify(arr[index])))
|
2025-06-03 14:57:18 +08:00
|
|
|
|
dataDom.editDesignType.init(arr,index,null,status,listType)
|
2025-09-01 18:01:01 +08:00
|
|
|
|
if(item != 'Design'){
|
|
|
|
|
|
designData.selectDesign = designData.selectLikeDesign.filter((item:any)=>(item.resultType == 'Design' && item.userLikeSortId == designData.selectLikeDesign[index].parentId))[0]
|
|
|
|
|
|
}else{
|
|
|
|
|
|
designData.selectDesign = designData.selectLikeDesign[index]
|
|
|
|
|
|
}
|
2025-06-03 14:57:18 +08:00
|
|
|
|
dataDom.editDesignType.isLike = false
|
2025-07-22 18:16:33 +08:00
|
|
|
|
// dataDom.editDesignType.productimgRelightDirection = editDesignType.RelightDirection
|
2025-06-03 14:57:18 +08:00
|
|
|
|
dataDom.editDesignType.isComparison = true
|
|
|
|
|
|
}
|
2025-07-19 14:04:48 +08:00
|
|
|
|
const addGenerateImg = async (data:any)=>{
|
2025-06-03 14:57:18 +08:00
|
|
|
|
if(!data.id)return
|
2025-08-26 10:14:34 +08:00
|
|
|
|
console.log(data)
|
2025-07-19 14:04:48 +08:00
|
|
|
|
await nextTick().then(()=>{
|
|
|
|
|
|
designData.isUnfold = true
|
|
|
|
|
|
uploadLikeDom()
|
|
|
|
|
|
})
|
|
|
|
|
|
upDataSuccess(data)
|
2025-06-03 14:57:18 +08:00
|
|
|
|
}
|
|
|
|
|
|
const setNoDesignLike = (design:any,index:any,type:any,str:string) => {
|
|
|
|
|
|
let url
|
2025-09-01 18:01:01 +08:00
|
|
|
|
let designItem = design || designData.selectEditBtn
|
|
|
|
|
|
console.log(designItem,designData?.selectDesign)
|
2025-06-03 14:57:18 +08:00
|
|
|
|
let data = {
|
2025-09-01 18:01:01 +08:00
|
|
|
|
toProductImageResultId:[(designItem.designItemId || designItem.id)],
|
2025-06-03 14:57:18 +08:00
|
|
|
|
projectId: store.state.Workspace.probjects.id,
|
2025-09-01 18:01:01 +08:00
|
|
|
|
collectionSortParentId:designData?.selectDesign?.parentId || designItem?.parentId,
|
2025-06-11 15:08:17 +08:00
|
|
|
|
} as any
|
|
|
|
|
|
let params = {} as any
|
2025-06-03 14:57:18 +08:00
|
|
|
|
if(type == 'ToProductImage' || type == 'Relight'){
|
|
|
|
|
|
if(str == 'like'){
|
|
|
|
|
|
url = Https.httpUrls.productImageLike
|
|
|
|
|
|
}else{
|
|
|
|
|
|
url = Https.httpUrls.productImageUnLike
|
|
|
|
|
|
}
|
2025-06-11 15:08:17 +08:00
|
|
|
|
}else if(type == 'PoseTransfer'){
|
|
|
|
|
|
url = Https.httpUrls.poselikeOrDisike
|
|
|
|
|
|
if(str == 'like'){
|
|
|
|
|
|
params = {
|
|
|
|
|
|
likeOrDislike:'like',
|
2025-09-01 18:01:01 +08:00
|
|
|
|
transformedId:designItem.id,
|
2025-06-11 15:08:17 +08:00
|
|
|
|
projectId:store.state.Workspace.probjects.id,
|
2025-09-01 18:01:01 +08:00
|
|
|
|
collectionSortParentId:designItem.parentId || designData?.selectDesign?.userLikeSortId,
|
2025-06-11 15:08:17 +08:00
|
|
|
|
}
|
|
|
|
|
|
}else{
|
|
|
|
|
|
params = {
|
|
|
|
|
|
likeOrDislike:'dislike',
|
2025-09-01 18:01:01 +08:00
|
|
|
|
transformedId:designItem.id,
|
2025-06-11 15:08:17 +08:00
|
|
|
|
projectId:store.state.Workspace.probjects.id,
|
2025-09-01 18:01:01 +08:00
|
|
|
|
collectionSortParentId:designItem.parentId || designData?.selectDesign?.userLikeSortId,
|
2025-06-11 15:08:17 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-06-03 14:57:18 +08:00
|
|
|
|
}else{
|
|
|
|
|
|
if(str == 'like'){
|
|
|
|
|
|
url = Https.httpUrls.productImageLike
|
|
|
|
|
|
}else{
|
|
|
|
|
|
url = Https.httpUrls.productImageUnLike
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
designData.likeLoading = true;
|
2025-06-11 15:08:17 +08:00
|
|
|
|
Https.axiosPost(url, data,{params:params.likeOrDislike?params:''}).then(
|
2025-07-19 14:04:48 +08:00
|
|
|
|
async (rv) => {
|
|
|
|
|
|
await new Promise((resolve, reject) => {
|
|
|
|
|
|
if(str == 'like'){
|
|
|
|
|
|
likeDesignCollectionList.value.forEach((item:any)=>{
|
|
|
|
|
|
if(item.resultType == 'Design' && item.userLikeSortId == designData.selectDesign.userLikeSortId){
|
|
|
|
|
|
if(!item?.childList)item.childList = []
|
|
|
|
|
|
// if(item?.childList)
|
2025-09-01 18:01:01 +08:00
|
|
|
|
const removeIndex = item?.childList.findIndex(childItem => childItem?.taskId === designItem?.taskId);
|
2025-07-19 14:04:48 +08:00
|
|
|
|
if (removeIndex !== -1) {
|
2025-09-01 18:01:01 +08:00
|
|
|
|
item.childList[removeIndex] = designItem
|
2025-07-19 14:04:48 +08:00
|
|
|
|
}else{
|
2025-09-01 18:01:01 +08:00
|
|
|
|
item.childList.push(designItem)
|
2025-07-19 14:04:48 +08:00
|
|
|
|
}
|
2025-06-26 15:41:08 +08:00
|
|
|
|
}
|
2025-07-19 14:04:48 +08:00
|
|
|
|
})
|
|
|
|
|
|
}else{
|
|
|
|
|
|
likeDesignCollectionList.value.forEach((item:any)=>{
|
|
|
|
|
|
if(item.resultType == 'Design' && item.userLikeSortId == designData.selectDesign.userLikeSortId){
|
|
|
|
|
|
item.childList.forEach((childItem:any)=>{
|
2025-09-01 18:01:01 +08:00
|
|
|
|
if(childItem.sort > designItem.oldSort){
|
2025-07-19 14:04:48 +08:00
|
|
|
|
childItem.sort -= 1
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
item.childList = item.childList.filter((childItem:any)=>{
|
2025-09-01 18:01:01 +08:00
|
|
|
|
return childItem.id != designItem.id
|
2025-07-19 14:04:48 +08:00
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
resolve('')
|
|
|
|
|
|
})
|
|
|
|
|
|
|
2025-06-18 11:05:23 +08:00
|
|
|
|
nextTick().then(()=>{
|
2025-06-20 11:36:44 +08:00
|
|
|
|
designData.isUnfold = true
|
2025-06-18 11:05:23 +08:00
|
|
|
|
uploadLikeDom()
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//一下代码是生成的design时候也可以toproduct
|
|
|
|
|
|
// if(str == 'like'){
|
|
|
|
|
|
// let value:any = {
|
|
|
|
|
|
// ...design,
|
|
|
|
|
|
// sort:likeDesignCollectionList.value.length + 1,
|
|
|
|
|
|
// userLikeGroupId:design.id,
|
|
|
|
|
|
// }
|
|
|
|
|
|
// design.groupDetailId = rv.groupDetailId;
|
|
|
|
|
|
// store.commit(
|
|
|
|
|
|
// "addLikeDesignCollectionList",
|
|
|
|
|
|
// value
|
|
|
|
|
|
// );
|
|
|
|
|
|
// setLikeDislLike('like',value)
|
|
|
|
|
|
// if(index != -1)store.commit("deleteDesignCollectionList", index);
|
|
|
|
|
|
// }else{
|
|
|
|
|
|
// if(index != -1)store.commit("deleteLikeDesignCollectionList", index);
|
|
|
|
|
|
// store.commit("addDesignCollectionList", [design]);
|
|
|
|
|
|
// likeDesignCollectionList.value.forEach((item:any)=>{
|
|
|
|
|
|
// if(item.sort > design.sort){
|
|
|
|
|
|
// item.sort-=1
|
|
|
|
|
|
// }
|
|
|
|
|
|
// })
|
|
|
|
|
|
// }
|
2025-06-03 14:57:18 +08:00
|
|
|
|
designData.likeLoading = false;
|
|
|
|
|
|
}
|
|
|
|
|
|
).catch(res=>{
|
|
|
|
|
|
designData.likeLoading = false;
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
2025-07-19 14:04:48 +08:00
|
|
|
|
const upDataLikeListType = ()=>{
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
const upDataSuccess = (element)=>{
|
|
|
|
|
|
if(designData.isUnfold){
|
|
|
|
|
|
designData.selectLikeDesign.forEach((item:any,index:any) => {
|
|
|
|
|
|
if(element.taskId == item.taskId){
|
|
|
|
|
|
designData.selectLikeDesign[index].url = element.url
|
|
|
|
|
|
designData.selectLikeDesign[index].status = element.status
|
|
|
|
|
|
designData.selectLikeDesign[index].elementType = element.elementType
|
|
|
|
|
|
designData.selectLikeDesign[index].elementId = element.elementId
|
|
|
|
|
|
designData.selectLikeDesign[index].id = element.id
|
2025-08-26 10:14:34 +08:00
|
|
|
|
if(element?.videoUrl){
|
|
|
|
|
|
designData.selectLikeDesign[index].firstFrameUrl = element.firstFrameUrl
|
|
|
|
|
|
designData.selectLikeDesign[index].videoUrl = element.videoUrl
|
|
|
|
|
|
designData.selectLikeDesign[index].gifUrl = element.gifUrl
|
|
|
|
|
|
}
|
2025-07-19 14:04:48 +08:00
|
|
|
|
}
|
|
|
|
|
|
});
|
2025-06-03 14:57:18 +08:00
|
|
|
|
}
|
2025-07-19 14:04:48 +08:00
|
|
|
|
likeDesignCollectionList.value.forEach((likeItem:any,index:any)=>{
|
|
|
|
|
|
if(likeItem?.childList?.length > 0){
|
|
|
|
|
|
likeItem.childList.forEach((childItem:any,index:any)=>{
|
|
|
|
|
|
if(childItem.taskId == element.taskId){
|
|
|
|
|
|
likeItem.childList[index].url = element.url
|
|
|
|
|
|
likeItem.childList[index].status = element.status
|
|
|
|
|
|
likeItem.childList[index].elementType = element.elementType
|
|
|
|
|
|
likeItem.childList[index].elementId = element.elementId
|
|
|
|
|
|
likeItem.childList[index].id = element.id
|
2025-08-26 10:14:34 +08:00
|
|
|
|
if(element?.videoUrl){
|
|
|
|
|
|
likeItem.childList[index].id.firstFrameUrl = element.firstFrameUrl
|
|
|
|
|
|
likeItem.childList[index].id.videoUrl = element.videoUrl
|
|
|
|
|
|
likeItem.childList[index].id.gifUrl = element.gifUrl
|
|
|
|
|
|
}
|
2025-07-19 14:04:48 +08:00
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
nextTick(()=>{
|
|
|
|
|
|
setSystemDesigner(0)
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
const upDataSort = (generateCourseItem:any,likeIndex:number)=>{
|
|
|
|
|
|
let list = likeDesignCollectionList.value
|
|
|
|
|
|
if(list[likeIndex].childList.length == 0)return
|
|
|
|
|
|
list[likeIndex].childList.forEach((likeItem:any,index:any)=>{
|
|
|
|
|
|
if(likeItem.sort >= generateCourseItem.sort){
|
|
|
|
|
|
likeItem.sort += 1
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
const generateLoad = async (data:any)=>{
|
|
|
|
|
|
// return
|
|
|
|
|
|
let list = likeDesignCollectionList.value
|
2025-07-24 20:15:39 +08:00
|
|
|
|
//添加元素
|
|
|
|
|
|
if(data.addList){
|
|
|
|
|
|
data.addList.forEach((generateCourseItem:any)=>{
|
|
|
|
|
|
let oldData = generateCourseItem.oldData
|
|
|
|
|
|
if(oldData?.resultType == "Design"){
|
|
|
|
|
|
let index = list.findIndex((item:any)=>(item.userLikeSortId == generateCourseItem.parentId && item.resultType == "Design"))
|
|
|
|
|
|
if(!list[index]?.childList)list[index].childList = []
|
2025-08-22 10:27:48 +08:00
|
|
|
|
generateCourseItem.oldSort = generateCourseItem.sort
|
2025-07-19 14:04:48 +08:00
|
|
|
|
generateCourseItem.sort = list[index]?.childList.length + 1
|
2025-07-22 18:16:33 +08:00
|
|
|
|
if(data.status == 'add'){
|
|
|
|
|
|
upDataSort(generateCourseItem,index)
|
|
|
|
|
|
list[index]?.childList.push(generateCourseItem)
|
2025-07-24 20:15:39 +08:00
|
|
|
|
}
|
|
|
|
|
|
}else{
|
|
|
|
|
|
let index = list.findIndex((item:any)=>(item.userLikeSortId == generateCourseItem.parentId))
|
|
|
|
|
|
if(index != -1){
|
|
|
|
|
|
if(!list[index]?.childList){
|
|
|
|
|
|
list[index].childList = []
|
|
|
|
|
|
}
|
|
|
|
|
|
if(data.status == 'add'){
|
|
|
|
|
|
upDataSort(generateCourseItem,index)
|
|
|
|
|
|
list[index]?.childList.push(generateCourseItem)
|
|
|
|
|
|
}else{
|
2025-08-22 10:27:48 +08:00
|
|
|
|
upDataSuccess(generateCourseItem)
|
|
|
|
|
|
// let childIndex = list[index].childList.findIndex((item:any)=>(item.id == generateCourseItem?.oldId || generateCourseItem?.id))
|
|
|
|
|
|
// console.log(childIndex)
|
|
|
|
|
|
// console.log(list[index].childList)
|
|
|
|
|
|
// list[index].childList[childIndex] = generateCourseItem
|
2025-07-24 20:15:39 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
if(data.deleteList){
|
|
|
|
|
|
data.deleteList.forEach((generateCourseItem:any)=>{
|
|
|
|
|
|
let oldData = generateCourseItem.oldData
|
|
|
|
|
|
if(oldData?.resultType == "Design"){
|
|
|
|
|
|
}else{
|
|
|
|
|
|
let index = list.findIndex((item:any)=>(item.userLikeSortId == generateCourseItem.parentId))
|
|
|
|
|
|
if(index != -1){
|
|
|
|
|
|
if(!list[index]?.childList){
|
|
|
|
|
|
list[index].childList = []
|
|
|
|
|
|
}
|
2025-07-22 18:16:33 +08:00
|
|
|
|
let childIndex = list[index].childList.findIndex((item:any)=>(item.id == generateCourseItem.id))
|
2025-07-24 20:15:39 +08:00
|
|
|
|
list[index].childList.forEach((childItem)=>{
|
|
|
|
|
|
if(childItem.sort > list[index].childList[childIndex].sort){
|
|
|
|
|
|
childItem.sort -= 1
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
list[index].childList.splice(childIndex,1)
|
2025-07-22 18:16:33 +08:00
|
|
|
|
}
|
2025-07-19 14:04:48 +08:00
|
|
|
|
}
|
2025-07-24 20:15:39 +08:00
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-07-19 14:04:48 +08:00
|
|
|
|
await nextTick().then(()=>{
|
|
|
|
|
|
designData.isUnfold = true
|
2025-08-22 10:27:48 +08:00
|
|
|
|
console.log('111s')
|
2025-07-19 14:04:48 +08:00
|
|
|
|
uploadLikeDom()
|
|
|
|
|
|
})
|
2025-08-22 10:27:48 +08:00
|
|
|
|
setPrductimgAll()
|
|
|
|
|
|
}
|
|
|
|
|
|
const setPrductimgAll = ()=>{
|
|
|
|
|
|
clearInterval(prductimgTime.ToProductImage)
|
|
|
|
|
|
clearInterval(prductimgTime.PoseTransfer)
|
|
|
|
|
|
clearInterval(prductimgTime.Relight)
|
|
|
|
|
|
let list = likeDesignCollectionList.value
|
2025-07-19 14:04:48 +08:00
|
|
|
|
let toProductImage = []
|
|
|
|
|
|
let poseTransfer = []
|
|
|
|
|
|
let relight = []
|
|
|
|
|
|
list.forEach((item:any)=>{
|
|
|
|
|
|
if(!item?.childList)item.childList = []
|
|
|
|
|
|
item.childList.forEach((childItem:any)=>{
|
|
|
|
|
|
if(childItem.resultType == 'PoseTransfer'){
|
2025-08-22 10:27:48 +08:00
|
|
|
|
if((!childItem.status || childItem.status != "Success") && !childItem?.firstFrameUrl){
|
2025-07-19 14:04:48 +08:00
|
|
|
|
poseTransfer.push(childItem.taskId)
|
|
|
|
|
|
}
|
|
|
|
|
|
}else if(childItem.resultType == 'ToProductImage'){
|
2025-08-22 10:27:48 +08:00
|
|
|
|
if((!childItem.status || childItem.status != "Success") && (!childItem?.url)){
|
2025-07-19 14:04:48 +08:00
|
|
|
|
toProductImage.push(childItem.taskId)
|
|
|
|
|
|
}
|
|
|
|
|
|
}else if(childItem.resultType == 'Relight'){
|
2025-08-22 10:27:48 +08:00
|
|
|
|
console.log(JSON.parse(JSON.stringify(childItem)))
|
|
|
|
|
|
console.log((!childItem.status || childItem.status != "Success"), (!childItem?.url))
|
|
|
|
|
|
if((!childItem.status || childItem.status != "Success") && (!childItem?.url)){
|
2025-07-19 14:04:48 +08:00
|
|
|
|
relight.push(childItem.taskId)
|
2025-06-03 14:57:18 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
2025-07-19 14:04:48 +08:00
|
|
|
|
})
|
|
|
|
|
|
setPrductimg(toProductImage,'ToProductImage')
|
|
|
|
|
|
setPrductimg(poseTransfer,'PoseTransfer')
|
|
|
|
|
|
setPrductimg(relight,'Relight')
|
2025-06-03 14:57:18 +08:00
|
|
|
|
}
|
2025-07-19 14:04:48 +08:00
|
|
|
|
let prductimgTime = {
|
|
|
|
|
|
ToProductImage:null,
|
|
|
|
|
|
PoseTransfer:null,
|
|
|
|
|
|
Relight:null,
|
2025-06-09 10:25:54 +08:00
|
|
|
|
}
|
2025-07-19 14:04:48 +08:00
|
|
|
|
const setFail = (list:any)=>{
|
|
|
|
|
|
list.forEach((listItem)=>{
|
|
|
|
|
|
if(designData.isUnfold){
|
|
|
|
|
|
let index = designData.selectLikeDesign.findIndex((item:any)=>{return item.taskId == listItem})
|
|
|
|
|
|
designData.selectLikeDesign.splice(index,1)
|
2025-06-26 15:41:08 +08:00
|
|
|
|
}
|
2025-07-19 14:04:48 +08:00
|
|
|
|
likeDesignCollectionList.value.forEach((likeItem:any,index:any)=>{
|
|
|
|
|
|
if(likeItem?.childList?.length > 0){
|
|
|
|
|
|
let index = likeItem.childList.findIndex((item:any)=>{return item.taskId == listItem})
|
|
|
|
|
|
likeItem.childList.splice(index,1)
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
2025-06-26 15:41:08 +08:00
|
|
|
|
})
|
|
|
|
|
|
nextTick().then(()=>{
|
|
|
|
|
|
uploadLikeDom()
|
|
|
|
|
|
})
|
2025-07-19 14:04:48 +08:00
|
|
|
|
}
|
|
|
|
|
|
let setPrductimg = (dataList:any,type:string)=>{
|
|
|
|
|
|
if(dataList.length == 0)return
|
|
|
|
|
|
let data = dataList
|
|
|
|
|
|
let state = true
|
|
|
|
|
|
let url = Https.httpUrls.relightResult
|
|
|
|
|
|
if(type == 'ToProductImage'){
|
|
|
|
|
|
url = Https.httpUrls.toProductImageResult
|
|
|
|
|
|
}else if(type == 'PoseTransfer'){
|
|
|
|
|
|
url = Https.httpUrls.poseTransformResult
|
|
|
|
|
|
}
|
|
|
|
|
|
// url = Https.httpUrls.poseTransformResult
|
|
|
|
|
|
// data = {taskId: "00169296-220e-4032-bfce-ca8ff67d6468-83"}
|
|
|
|
|
|
prductimgTime[type] = setInterval(()=>{
|
|
|
|
|
|
if(!state)return
|
|
|
|
|
|
state = false
|
|
|
|
|
|
Https.axiosPost(url, data).then(
|
|
|
|
|
|
(rv) => {
|
2025-08-26 10:14:34 +08:00
|
|
|
|
// if(type == 'PoseTransfer'){
|
|
|
|
|
|
// rv = [rv]
|
|
|
|
|
|
// }
|
2025-07-19 14:04:48 +08:00
|
|
|
|
state = true
|
|
|
|
|
|
rv.forEach((element:any) => {
|
|
|
|
|
|
if(element?.status == 'Success'){
|
|
|
|
|
|
// setFail([element.taskId])
|
|
|
|
|
|
upDataSuccess(element)
|
|
|
|
|
|
data = data.filter((item:any) => item !== element.taskId);
|
2025-09-02 12:59:30 +08:00
|
|
|
|
store.dispatch('getCredits')
|
2025-07-19 14:04:48 +08:00
|
|
|
|
}else if(element?.status == 'Fail' || element?.status == 'Invalid'){
|
|
|
|
|
|
data = data.filter((item:any) => item !== element.taskId);
|
|
|
|
|
|
setFail([element.taskId])
|
|
|
|
|
|
message.info(t('Generate.everyTimeEffectPoor'));
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
if(data.length == 0){
|
|
|
|
|
|
store.state.store.dispatch('getCredits')
|
|
|
|
|
|
clearInterval(prductimgTime[type])
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
).catch(res=>{
|
|
|
|
|
|
clearInterval(prductimgTime[type])
|
|
|
|
|
|
setFail(data)
|
|
|
|
|
|
});
|
2025-08-22 10:27:48 +08:00
|
|
|
|
},type == 'PoseTransfer'?10000:3000)
|
2025-06-09 10:25:54 +08:00
|
|
|
|
}
|
2025-06-11 15:08:17 +08:00
|
|
|
|
const gifPlay = (e:any,item:any)=>{
|
|
|
|
|
|
e.target.src = item.gif || item.gifUrl//使用gif图片
|
|
|
|
|
|
}
|
|
|
|
|
|
const gifPause = (e:any,item:any)=>{
|
|
|
|
|
|
e.target.src = item.firstFrame || item.firstFrameUrl//静态图片
|
|
|
|
|
|
}
|
2025-06-18 11:05:23 +08:00
|
|
|
|
const startHover = (e:any,item:any)=>{
|
|
|
|
|
|
}
|
|
|
|
|
|
const endHover = (e:any,item:any)=>{
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
const setUnfold = ()=>{
|
|
|
|
|
|
if(!designData.isUnfold){
|
2025-07-24 20:15:39 +08:00
|
|
|
|
designData.selectLikeDesign = []
|
2025-06-18 11:05:23 +08:00
|
|
|
|
}
|
|
|
|
|
|
uploadLikeDom()
|
|
|
|
|
|
}
|
2025-07-24 20:15:39 +08:00
|
|
|
|
const getSelectList = ()=>{
|
|
|
|
|
|
let list = [] as any
|
|
|
|
|
|
let childLength = 0
|
|
|
|
|
|
likeDesignCollectionList.value.sort((a:any,b:any)=>{return a.sort - b.sort})
|
|
|
|
|
|
likeDesignCollectionList.value.forEach((likeItem:any,index:any)=>{
|
|
|
|
|
|
let item = JSON.parse(JSON.stringify(likeItem))
|
|
|
|
|
|
item.oldSort = item.sort
|
|
|
|
|
|
if(item?.childList?.length > 0){
|
|
|
|
|
|
item.childList.forEach((childItem:any,childIndex:number)=>{
|
2025-08-22 10:27:48 +08:00
|
|
|
|
|
|
|
|
|
|
childItem.oldSort = childItem.sort
|
2025-07-24 20:15:39 +08:00
|
|
|
|
childItem.oldSort = childItem.sort
|
|
|
|
|
|
childItem.sort = childItem.sort + childLength + index
|
|
|
|
|
|
// childItem.sort = childIndex + item.sort + childLength
|
|
|
|
|
|
list.push(childItem)
|
|
|
|
|
|
})
|
|
|
|
|
|
childLength = item.childList.length + childLength
|
|
|
|
|
|
}
|
|
|
|
|
|
item.sort = childLength + item.sort
|
|
|
|
|
|
list.push(item)
|
|
|
|
|
|
})
|
|
|
|
|
|
return list
|
|
|
|
|
|
}
|
2025-06-18 11:05:23 +08:00
|
|
|
|
const uploadLikeDom = ()=>{
|
|
|
|
|
|
if(designData.isUnfold){
|
|
|
|
|
|
// const parents = designData.selectLikeDesign.filter((item:any) => item.type === 'design');
|
2025-07-24 20:15:39 +08:00
|
|
|
|
designData.selectLikeDesign = getSelectList()
|
2025-06-18 11:05:23 +08:00
|
|
|
|
designData.resultType = 'All'
|
|
|
|
|
|
}else{
|
|
|
|
|
|
if(designData.selectLikeDesign.length == 0){
|
|
|
|
|
|
designData.selectLikeDesign = likeDesignCollectionList.value
|
2025-06-19 09:21:32 +08:00
|
|
|
|
nextTick(()=>{
|
|
|
|
|
|
setSystemDesigner(0)
|
|
|
|
|
|
})
|
2025-06-18 11:05:23 +08:00
|
|
|
|
return
|
|
|
|
|
|
}
|
|
|
|
|
|
const parents = designData.selectLikeDesign.filter((item:any) => item.resultType === 'Design');
|
|
|
|
|
|
parents.map((parent:any) => {
|
|
|
|
|
|
parent.sort = parent.oldSort||parent.sort
|
2025-07-19 14:04:48 +08:00
|
|
|
|
delete parent.oldSort
|
2025-06-18 11:05:23 +08:00
|
|
|
|
return {
|
|
|
|
|
|
...parent,
|
|
|
|
|
|
childList: designData.selectLikeDesign.filter((item:any) =>
|
|
|
|
|
|
item.parentId === parent.userLikeSortId && item.resultType !== 'Design'
|
|
|
|
|
|
)
|
|
|
|
|
|
};
|
|
|
|
|
|
});
|
|
|
|
|
|
designData.selectLikeDesign = parents
|
|
|
|
|
|
}
|
|
|
|
|
|
nextTick(()=>{
|
|
|
|
|
|
setSystemDesigner(0)
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
const changeResultType = ()=>{
|
2025-07-19 14:04:48 +08:00
|
|
|
|
if(designData.resultType == 'Design'){
|
|
|
|
|
|
designData.isUnfold = false
|
|
|
|
|
|
setUnfold()
|
|
|
|
|
|
}else{
|
|
|
|
|
|
designData.isUnfold = true
|
|
|
|
|
|
// setUnfold()
|
|
|
|
|
|
}
|
2025-06-18 11:05:23 +08:00
|
|
|
|
if(designData.resultType != 'All'){
|
|
|
|
|
|
if(designData.resultType == 'Product'){
|
2025-07-24 20:15:39 +08:00
|
|
|
|
designData.selectLikeDesign = getSelectList().filter((item:any) => (item.resultType === 'ToProductImage' || item.resultType === 'Relight'));
|
2025-06-18 11:05:23 +08:00
|
|
|
|
}else{
|
2025-07-24 20:15:39 +08:00
|
|
|
|
designData.selectLikeDesign = getSelectList().filter((item:any) => item.resultType === designData.resultType);
|
2025-06-18 11:05:23 +08:00
|
|
|
|
}
|
|
|
|
|
|
designData.selectLikeDesign.forEach((item:any,index:number) => {
|
|
|
|
|
|
item.sort = index + 1
|
|
|
|
|
|
})
|
|
|
|
|
|
}else{
|
2025-07-24 20:15:39 +08:00
|
|
|
|
designData.selectLikeDesign = getSelectList()
|
2025-06-18 11:05:23 +08:00
|
|
|
|
designData.selectLikeDesign.forEach((item:any,index:number) => {
|
|
|
|
|
|
item.sort = index + 1
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
nextTick(()=>{
|
|
|
|
|
|
setSystemDesigner(0)
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
2025-09-02 16:11:47 +08:00
|
|
|
|
const onLike = async (generate,selectType)=>{
|
|
|
|
|
|
await setNoDesignLike(generate,null,selectType,'onLike')
|
|
|
|
|
|
}
|
2025-05-20 16:47:27 +08:00
|
|
|
|
return {
|
|
|
|
|
|
store,
|
2025-06-03 14:57:18 +08:00
|
|
|
|
...toRefs(editDesignType),
|
2025-05-20 16:47:27 +08:00
|
|
|
|
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),
|
2025-06-03 14:57:18 +08:00
|
|
|
|
...toRefs(designData),
|
2025-05-22 14:26:47 +08:00
|
|
|
|
...toRefs(dataDom),
|
2025-06-20 11:36:44 +08:00
|
|
|
|
//编辑tools相关
|
|
|
|
|
|
...toRefs(speed),
|
|
|
|
|
|
openSpeed,
|
|
|
|
|
|
setSpeed,
|
|
|
|
|
|
openEditTools,
|
2025-06-23 09:27:29 +08:00
|
|
|
|
openCanvas,
|
2025-06-26 15:41:08 +08:00
|
|
|
|
uploadLikeDom,
|
2025-06-20 11:36:44 +08:00
|
|
|
|
|
2025-05-20 16:47:27 +08:00
|
|
|
|
likeItemDom,
|
|
|
|
|
|
collItemDom,
|
|
|
|
|
|
domHidden,
|
|
|
|
|
|
recycleDomHidden,
|
|
|
|
|
|
getDesignTime,
|
|
|
|
|
|
|
|
|
|
|
|
setDeleteDesign,
|
|
|
|
|
|
cancelDeleteDesign,
|
|
|
|
|
|
designMousedown,
|
|
|
|
|
|
sortDesignCollection,
|
|
|
|
|
|
getMousePosition,
|
|
|
|
|
|
mouseenter,
|
|
|
|
|
|
setLikeDislLike,
|
|
|
|
|
|
posiitonData,
|
2025-05-22 14:26:47 +08:00
|
|
|
|
moveItem,
|
|
|
|
|
|
openCollection,
|
2025-06-03 14:57:18 +08:00
|
|
|
|
setEditDesignType,
|
|
|
|
|
|
openEditBtn,
|
|
|
|
|
|
setNoDesignLike,
|
2025-06-09 10:25:54 +08:00
|
|
|
|
upDataLikeListType,
|
2025-06-26 15:41:08 +08:00
|
|
|
|
generateLoad,
|
2025-06-11 15:08:17 +08:00
|
|
|
|
gifPlay,
|
|
|
|
|
|
gifPause,
|
2025-06-18 11:05:23 +08:00
|
|
|
|
startHover,
|
|
|
|
|
|
endHover,
|
|
|
|
|
|
setUnfold,
|
|
|
|
|
|
changeResultType,
|
2025-07-19 14:04:48 +08:00
|
|
|
|
addGenerateImg,
|
2025-09-02 16:11:47 +08:00
|
|
|
|
onLike,
|
2025-05-20 16:47:27 +08:00
|
|
|
|
};
|
|
|
|
|
|
},
|
|
|
|
|
|
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, //不喜欢防抖
|
|
|
|
|
|
dragIdx:0,
|
|
|
|
|
|
designRandom:'',
|
|
|
|
|
|
detailDestroy:false,//销毁detail
|
|
|
|
|
|
designFailure:{
|
|
|
|
|
|
num:0,
|
|
|
|
|
|
currentNum:0,
|
|
|
|
|
|
},//获取20次都为空的话就停止获取
|
2025-06-09 10:25:54 +08:00
|
|
|
|
observerData:{
|
|
|
|
|
|
time:false as any,
|
|
|
|
|
|
observer:null as any,
|
|
|
|
|
|
},
|
2025-05-20 16:47:27 +08:00
|
|
|
|
};
|
|
|
|
|
|
},
|
|
|
|
|
|
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()
|
2025-06-09 10:25:54 +08:00
|
|
|
|
// window.removeEventListener('resize', this.setItemPosition)
|
2025-09-04 13:10:18 +08:00
|
|
|
|
if(this.observerData?.observer)this.observerData.observer.unobserve(this.$refs.rightContentBlockBox);
|
2025-05-20 16:47:27 +08:00
|
|
|
|
},
|
|
|
|
|
|
async mounted() {
|
2025-06-26 15:41:08 +08:00
|
|
|
|
// if(window.innerWidth < 1200){
|
|
|
|
|
|
// this.widthList = [
|
|
|
|
|
|
// {
|
|
|
|
|
|
// label:'Medium',
|
|
|
|
|
|
// value:70,
|
|
|
|
|
|
// },{
|
|
|
|
|
|
// label:'Large',
|
|
|
|
|
|
// value:150,
|
|
|
|
|
|
// },{
|
|
|
|
|
|
// label:'Extra-large',
|
|
|
|
|
|
// value:200,
|
|
|
|
|
|
// }
|
|
|
|
|
|
// ]
|
|
|
|
|
|
// this.widthValue = {
|
|
|
|
|
|
// label:'Medium',
|
|
|
|
|
|
// value:70,
|
|
|
|
|
|
// }
|
|
|
|
|
|
// }
|
2025-05-20 16:47:27 +08:00
|
|
|
|
window.addEventListener('beforeunload', (event)=>{
|
|
|
|
|
|
this.store.commit("clearAllCollection");
|
|
|
|
|
|
});
|
2025-06-09 10:25:54 +08:00
|
|
|
|
// window.addEventListener('resize', this.setItemPosition)
|
|
|
|
|
|
|
|
|
|
|
|
this.$refs.rightContentBlockBox
|
|
|
|
|
|
this.observerData.observer = new ResizeObserver(entries => {
|
|
|
|
|
|
for (let entry of entries) {
|
|
|
|
|
|
clearTimeout(this.observerData.time)
|
2025-06-26 15:41:08 +08:00
|
|
|
|
if(entries[0].contentRect.width > 800){
|
|
|
|
|
|
this.likeDesignTools = true
|
|
|
|
|
|
}else{
|
|
|
|
|
|
this.likeDesignTools = false
|
|
|
|
|
|
}
|
2025-06-09 10:25:54 +08:00
|
|
|
|
this.observerData.time = setTimeout(()=>{
|
2025-06-26 15:41:08 +08:00
|
|
|
|
|
2025-06-09 10:25:54 +08:00
|
|
|
|
this.setSystemDesigner(0)
|
|
|
|
|
|
this.setDesignItemStyle()
|
|
|
|
|
|
},100)
|
|
|
|
|
|
// const { width } = entry.contentRect;
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
this.observerData.observer.observe(this.$refs.rightContentBlockBox);
|
2025-06-11 15:08:17 +08:00
|
|
|
|
if(this.designCollectionList?.length > 0){
|
|
|
|
|
|
nextTick(()=>{
|
|
|
|
|
|
this.setDesignItemStyle()
|
|
|
|
|
|
this.setShowHide('recycleDomHidden')
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
2025-06-20 11:36:44 +08:00
|
|
|
|
this.isUnfold = true
|
|
|
|
|
|
this.setUnfold()
|
2025-05-20 16:47:27 +08:00
|
|
|
|
},
|
|
|
|
|
|
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)
|
|
|
|
|
|
// },
|
|
|
|
|
|
openSetData(){
|
|
|
|
|
|
this.setItemPosition()
|
|
|
|
|
|
},
|
|
|
|
|
|
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
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
//设计新的collection
|
2025-06-26 15:41:08 +08:00
|
|
|
|
async designNewCollection() {
|
2025-05-20 16:47:27 +08:00
|
|
|
|
clearTimeout(this.getDesignTime);
|
2025-09-26 17:13:29 +08:00
|
|
|
|
let probjects = this.store.state.Workspace.probjects
|
|
|
|
|
|
|
|
|
|
|
|
if(probjects.type == "seriesDesign" && probjects?.model?.length == 0)return message.info(this.t('collectionModal.jsContent7'));
|
2025-06-26 15:41:08 +08:00
|
|
|
|
let data = await this.getDesignData("");
|
2025-05-20 16:47:27 +08:00
|
|
|
|
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;
|
|
|
|
|
|
})
|
|
|
|
|
|
},
|
|
|
|
|
|
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
|
2025-06-26 15:41:08 +08:00
|
|
|
|
async resDesignCollection() {
|
2025-05-20 16:47:27 +08:00
|
|
|
|
if(this.driver__.driver){
|
|
|
|
|
|
nextTick().then(()=>{
|
|
|
|
|
|
driverObj__.moveNext();
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
clearTimeout(this.getDesignTime);
|
|
|
|
|
|
this.isShowMark = true
|
2025-06-26 15:41:08 +08:00
|
|
|
|
let data = await this.getDesignData(this.designCollectionId);
|
2025-05-20 16:47:27 +08:00
|
|
|
|
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;
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
2025-06-26 15:41:08 +08:00
|
|
|
|
async getDesignData(designCollectionId: any) {
|
2025-05-20 16:47:27 +08:00
|
|
|
|
let {
|
|
|
|
|
|
moodboardFiles,
|
|
|
|
|
|
printboardFiles,
|
|
|
|
|
|
disposeMoodboard,
|
|
|
|
|
|
// generatePrintFiles,
|
|
|
|
|
|
colorBoards,
|
|
|
|
|
|
sketchboardFiles,
|
|
|
|
|
|
marketingSketchFiles,
|
|
|
|
|
|
moodboardPosition,
|
|
|
|
|
|
} = this.store.state.UploadFilesModule.allBoardData;
|
|
|
|
|
|
this.randomNum()
|
2025-05-28 10:28:07 +08:00
|
|
|
|
let modelList = [] as any;
|
|
|
|
|
|
let workspace:any = this.store.state.Workspace.probjects
|
|
|
|
|
|
workspace.model.forEach((item:any)=>{
|
|
|
|
|
|
let obj = {
|
|
|
|
|
|
id:item.id,
|
|
|
|
|
|
type:item.type,
|
|
|
|
|
|
collectionElementId:item.collectionElementId
|
|
|
|
|
|
}
|
|
|
|
|
|
modelList.push(obj)
|
|
|
|
|
|
})
|
2025-05-20 16:47:27 +08:00
|
|
|
|
let data: any = {
|
2025-06-26 15:41:08 +08:00
|
|
|
|
colorBoards: await this.getColorBoard(colorBoards),
|
2025-05-20 16:47:27 +08:00
|
|
|
|
// 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,
|
2025-05-28 10:28:07 +08:00
|
|
|
|
templateId: '',
|
|
|
|
|
|
// templateId: workspace.model.id,
|
|
|
|
|
|
mannequins: modelList,
|
|
|
|
|
|
modelType:'',
|
2025-05-20 16:47:27 +08:00
|
|
|
|
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;
|
|
|
|
|
|
},
|
|
|
|
|
|
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) {
|
2025-09-23 16:03:08 +08:00
|
|
|
|
console.log(boardData,this.store.state.Workspace.probjects)
|
2025-05-20 16:47:27 +08:00
|
|
|
|
boardData = boardData || []
|
2025-09-23 16:03:08 +08:00
|
|
|
|
const mapB = new Map();
|
|
|
|
|
|
boardData.forEach(item => {
|
|
|
|
|
|
if (item.categoryValue !== undefined) {
|
|
|
|
|
|
mapB.set(item.categoryValue, true);
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
boardData.filter(item =>
|
|
|
|
|
|
item.categoryValue !== undefined && mapB.has(item.categoryValue)
|
|
|
|
|
|
);
|
|
|
|
|
|
console.log(boardData)
|
2025-05-20 16:47:27 +08:00
|
|
|
|
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 || []
|
2025-06-26 15:41:08 +08:00
|
|
|
|
let colorBoards = [] as any
|
|
|
|
|
|
for (let index = 0; index < boardData.length; index++) {
|
|
|
|
|
|
new Promise(async (resolve,reject)=>{
|
|
|
|
|
|
const item = boardData[index];
|
|
|
|
|
|
if(item.gradient){
|
|
|
|
|
|
item.gradient.colorImg = await setGradual(item.gradient,320,700)
|
|
|
|
|
|
}
|
|
|
|
|
|
let data = {
|
|
|
|
|
|
id: item.id,
|
|
|
|
|
|
name: item.name,
|
|
|
|
|
|
tcx: item.tcx,
|
|
|
|
|
|
gradient:item.gradient,
|
|
|
|
|
|
rgbValue: "",
|
|
|
|
|
|
};
|
|
|
|
|
|
data.rgbValue = `${item.rgbValue.r} ${item.rgbValue.g} ${item.rgbValue.b}`;
|
|
|
|
|
|
colorBoards.push(data);
|
|
|
|
|
|
resolve('')
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
2025-05-20 16:47:27 +08:00
|
|
|
|
return colorBoards;
|
|
|
|
|
|
},
|
|
|
|
|
|
deleteDesignCollection(list:any,index:any){
|
|
|
|
|
|
list.splice(index,1)
|
|
|
|
|
|
},
|
2025-06-03 14:57:18 +08:00
|
|
|
|
|
|
|
|
|
|
likeDesignCollection(design: any, index: any,type:any) {
|
|
|
|
|
|
if (this.likeLoading) {
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
if(type != 'Design'){
|
|
|
|
|
|
this.setNoDesignLike(design,index,type,'like')
|
|
|
|
|
|
return
|
|
|
|
|
|
}
|
2025-05-20 16:47:27 +08:00
|
|
|
|
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
|
|
|
|
|
|
};
|
2025-06-03 14:57:18 +08:00
|
|
|
|
|
2025-05-20 16:47:27 +08:00
|
|
|
|
|
|
|
|
|
|
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)
|
2025-06-03 14:57:18 +08:00
|
|
|
|
if(index != -1)this.store.commit("deleteDesignCollectionList", index);
|
2025-05-20 16:47:27 +08:00
|
|
|
|
if (this.startDesignType === "resDesign") {
|
|
|
|
|
|
this.getHistoryChoose(this.userGroupId, "like");
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
this.likeLoading = false;
|
|
|
|
|
|
})
|
|
|
|
|
|
.catch((rv) => {
|
|
|
|
|
|
this.likeLoading = false;
|
|
|
|
|
|
});
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
//不喜欢设计
|
2025-07-19 14:04:48 +08:00
|
|
|
|
async dislikeDesignCollection(design:any,type:string) {
|
|
|
|
|
|
if(design?.childList?.length > 0){
|
|
|
|
|
|
await new Promise((resolve, reject) => {
|
|
|
|
|
|
Modal.confirm({
|
2025-09-15 13:33:27 +08:00
|
|
|
|
title: this.t('HomeView.jsContent12'),
|
2025-07-19 14:04:48 +08:00
|
|
|
|
icon: createVNode(ExclamationCircleOutlined),
|
|
|
|
|
|
okText: 'Yes',
|
|
|
|
|
|
cancelText: 'No',
|
|
|
|
|
|
mask:false,
|
|
|
|
|
|
zIndex:99999,
|
|
|
|
|
|
centered:true,
|
|
|
|
|
|
onOk() {
|
|
|
|
|
|
resolve('')
|
|
|
|
|
|
},
|
|
|
|
|
|
onCancel(){
|
|
|
|
|
|
return
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
}
|
2025-05-20 16:47:27 +08:00
|
|
|
|
let data = {
|
|
|
|
|
|
designId: design.designId || this.designId,
|
|
|
|
|
|
designPythonOutfitId:design.designOutfitId,
|
|
|
|
|
|
groupDetailId: design.groupDetailId || design.id,
|
|
|
|
|
|
timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,
|
2025-06-19 09:21:32 +08:00
|
|
|
|
projectId:this.store.state.Workspace.probjects.id,
|
2025-05-20 16:47:27 +08:00
|
|
|
|
};
|
|
|
|
|
|
if (this.disLikeLoading) {
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
this.disLikeLoading = true;
|
|
|
|
|
|
Https.axiosPost(Https.httpUrls.designDislike, data)
|
|
|
|
|
|
.then((rv: any) => {
|
|
|
|
|
|
if (rv) {
|
2025-07-19 14:04:48 +08:00
|
|
|
|
this.recycleDomHidden = true
|
|
|
|
|
|
this.store.commit("addDesignCollectionList", [design]);
|
|
|
|
|
|
let index = -1
|
|
|
|
|
|
this.likeDesignCollectionList.forEach((item:any,likeIndex:number)=>{
|
|
|
|
|
|
if(item.id == design.id){
|
|
|
|
|
|
design.childList = []
|
|
|
|
|
|
index = likeIndex
|
|
|
|
|
|
}
|
|
|
|
|
|
if((item?.oldSort || item.sort) > (design?.oldSort || design.sort)){
|
2025-05-20 16:47:27 +08:00
|
|
|
|
item.sort-=1
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
2025-07-19 14:04:48 +08:00
|
|
|
|
this.likeDesignCollectionList.splice(index,1)
|
|
|
|
|
|
// this.store.commit(
|
|
|
|
|
|
// "deleteLikeDesignCollectionList",
|
|
|
|
|
|
// index
|
|
|
|
|
|
// );
|
|
|
|
|
|
design.childList = []
|
|
|
|
|
|
nextTick(()=>{
|
|
|
|
|
|
this.setLikeDislLike('disLike',design)
|
|
|
|
|
|
})
|
2025-05-20 16:47:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
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;
|
|
|
|
|
|
});
|
|
|
|
|
|
},
|
|
|
|
|
|
//处理选择组的数据
|
|
|
|
|
|
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;
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
//销毁图片详情
|
|
|
|
|
|
setDetailDestroy() {
|
|
|
|
|
|
// let designDetail: any = this.$refs.designDetail;
|
|
|
|
|
|
// designDetail.destroy();
|
|
|
|
|
|
this.detailDestroy = false
|
2025-06-26 15:41:08 +08:00
|
|
|
|
this.uploadLikeDom()
|
2025-05-20 16:47:27 +08:00
|
|
|
|
},
|
|
|
|
|
|
//打开图片详情
|
|
|
|
|
|
designDetail(
|
|
|
|
|
|
design: any,
|
|
|
|
|
|
index: number,
|
|
|
|
|
|
collectionList: any,
|
|
|
|
|
|
type: string
|
|
|
|
|
|
) {
|
2025-06-03 14:57:18 +08:00
|
|
|
|
// if()
|
2025-09-25 14:29:23 +08:00
|
|
|
|
if(this.isMove || this.isShowMark)return
|
2025-07-19 14:04:48 +08:00
|
|
|
|
this.store.commit('setOpenChatStatus',false)
|
2025-06-03 14:57:18 +08:00
|
|
|
|
if(design.resultType != "Design"){
|
2025-09-01 18:01:01 +08:00
|
|
|
|
this.selectEditBtn = design
|
2025-06-03 14:57:18 +08:00
|
|
|
|
this.setEditDesignType(collectionList,index,design.resultType,'edit',type)
|
|
|
|
|
|
return
|
|
|
|
|
|
}
|
2025-09-25 14:29:23 +08:00
|
|
|
|
this.isShowMark = true
|
2025-05-20 16:47:27 +08:00
|
|
|
|
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;
|
2025-09-25 14:29:23 +08:00
|
|
|
|
designDetail.showDesignDetailModal(data).then(()=>{
|
|
|
|
|
|
this.isShowMark = false
|
|
|
|
|
|
})
|
2025-05-20 16:47:27 +08:00
|
|
|
|
})
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
//完成单个图片设计
|
|
|
|
|
|
finishRedesign(event: any) {
|
|
|
|
|
|
let { design, index, type } = event;
|
2025-06-09 10:25:54 +08:00
|
|
|
|
if (type === "disLike") {
|
2025-05-20 16:47:27 +08:00
|
|
|
|
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
|
2025-06-09 10:25:54 +08:00
|
|
|
|
// this.setSystemDesigner(0)
|
2025-05-20 16:47:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
});
|
|
|
|
|
|
</script>
|
|
|
|
|
|
<style lang="less" scoped>
|
|
|
|
|
|
.designPage {
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
height: 100%;
|
|
|
|
|
|
// padding-right:5rem;
|
|
|
|
|
|
overflow: initial !important;
|
|
|
|
|
|
position: relative;
|
|
|
|
|
|
.page_content {
|
|
|
|
|
|
position: relative;
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-06-30 10:53:25 +08:00
|
|
|
|
|
2025-05-20 16:47:27 +08:00
|
|
|
|
.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;
|
2025-06-09 10:25:54 +08:00
|
|
|
|
height: 6.5rem;
|
2025-05-20 16:47:27 +08:00
|
|
|
|
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;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-06-18 11:05:23 +08:00
|
|
|
|
|
2025-05-20 16:47:27 +08:00
|
|
|
|
.designPage_body {
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
height: 100%;
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
box-sizing: border-box;
|
|
|
|
|
|
.designPage_left {
|
|
|
|
|
|
// width: 44.4rem;
|
2025-07-19 14:04:48 +08:00
|
|
|
|
width: 33%;
|
2025-05-20 16:47:27 +08:00
|
|
|
|
height: 100%;
|
|
|
|
|
|
background: rgba(255, 255, 255, 0.2);
|
|
|
|
|
|
position: relative;
|
|
|
|
|
|
// overflow: hidden;
|
|
|
|
|
|
|
2025-07-19 14:04:48 +08:00
|
|
|
|
&.active{
|
|
|
|
|
|
width: 0;
|
|
|
|
|
|
.designPage_left_content{
|
|
|
|
|
|
padding-right: 0;
|
|
|
|
|
|
width: 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-05-20 16:47:27 +08:00
|
|
|
|
.designPage_left_content {
|
|
|
|
|
|
height: 100%;
|
2025-07-19 14:04:48 +08:00
|
|
|
|
// width: 50rem;
|
|
|
|
|
|
width: 100%;
|
2025-05-20 16:47:27 +08:00
|
|
|
|
overflow: hidden;
|
|
|
|
|
|
padding-right: 1.2rem;
|
2025-07-19 14:04:48 +08:00
|
|
|
|
|
2025-05-20 16:47:27 +08:00
|
|
|
|
.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{
|
2025-06-30 10:53:25 +08:00
|
|
|
|
position: absolute;
|
|
|
|
|
|
width: 3rem;
|
|
|
|
|
|
height: 7rem;
|
|
|
|
|
|
background: #fff;
|
2025-05-20 16:47:27 +08:00
|
|
|
|
border: 2px solid;
|
2025-06-30 10:53:25 +08:00
|
|
|
|
border-right: none;
|
|
|
|
|
|
border-radius: 2rem 0 0 2rem;
|
|
|
|
|
|
top: 50%;
|
|
|
|
|
|
transform: translate(-100%,-50%);
|
|
|
|
|
|
left: 0;
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
justify-content: center;
|
|
|
|
|
|
z-index: 2;
|
|
|
|
|
|
cursor: pointer;
|
|
|
|
|
|
transition: width .3s;
|
|
|
|
|
|
&:hover{
|
|
|
|
|
|
width: 4rem;
|
|
|
|
|
|
}
|
|
|
|
|
|
>span{
|
|
|
|
|
|
transition: all .3s;
|
|
|
|
|
|
transform: rotate(90deg);
|
|
|
|
|
|
&.active{
|
|
|
|
|
|
transform: rotate(270deg);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
&.right{
|
|
|
|
|
|
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;
|
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
|
|
|
|
|
|
|
&.active{
|
|
|
|
|
|
// left: 44rem;
|
|
|
|
|
|
}
|
2025-05-20 16:47:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-06-30 10:53:25 +08:00
|
|
|
|
|
2025-05-20 16:47:27 +08:00
|
|
|
|
.right_top {
|
|
|
|
|
|
padding: 1rem 3.2rem 2rem 1.2rem;
|
2025-06-30 10:53:25 +08:00
|
|
|
|
padding-right: 0;
|
2025-05-20 16:47:27 +08:00
|
|
|
|
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;
|
|
|
|
|
|
}
|
|
|
|
|
|
.right_content_block {
|
|
|
|
|
|
flex: 1;
|
|
|
|
|
|
display: flex;
|
2025-06-30 10:53:25 +08:00
|
|
|
|
position: relative;
|
2025-05-20 16:47:27 +08:00
|
|
|
|
flex-direction: column;
|
2025-07-19 14:04:48 +08:00
|
|
|
|
// min-width: 40%;
|
|
|
|
|
|
width: 50%;
|
2025-05-20 16:47:27 +08:00
|
|
|
|
&.recycleBin{
|
|
|
|
|
|
flex: none;
|
|
|
|
|
|
margin-left: 0;
|
|
|
|
|
|
width: 0;
|
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
|
&.recycleBinShow{
|
|
|
|
|
|
width: auto;
|
|
|
|
|
|
margin-left: 2rem;
|
2025-07-19 14:04:48 +08:00
|
|
|
|
width: calc(50% - 2rem);
|
2025-05-20 16:47:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
.right_content_body {
|
2025-07-19 14:04:48 +08:00
|
|
|
|
width: 100%;
|
2025-06-09 10:25:54 +08:00
|
|
|
|
// width: 55rem;
|
2025-05-20 16:47:27 +08:00
|
|
|
|
.right_content_img_block{
|
|
|
|
|
|
|
|
|
|
|
|
.content_img_block{
|
|
|
|
|
|
width: 16rem;
|
|
|
|
|
|
height: 23rem;
|
2025-06-18 11:05:23 +08:00
|
|
|
|
position: relative;
|
|
|
|
|
|
|
2025-05-20 16:47:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
&.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;
|
2025-06-18 11:05:23 +08:00
|
|
|
|
transition: top,left .5s;
|
|
|
|
|
|
// transition: top,left .3s;
|
2025-06-03 14:57:18 +08:00
|
|
|
|
&:hover .btn{
|
|
|
|
|
|
display: flex;
|
2025-05-20 16:47:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
.content_img_flex {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
justify-content: center;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
width: 100%;
|
|
|
|
|
|
height: 100%;
|
|
|
|
|
|
border-radius: 2rem;
|
|
|
|
|
|
border: 2px solid #E0E0E0;
|
2025-06-03 14:57:18 +08:00
|
|
|
|
overflow: hidden;
|
2025-05-20 16:47:27 +08:00
|
|
|
|
background: #fff;
|
2025-06-18 11:05:23 +08:00
|
|
|
|
.content_img_block_child{
|
|
|
|
|
|
position: absolute;
|
|
|
|
|
|
border-radius: 2rem;
|
|
|
|
|
|
border: 2px solid #00000070;
|
|
|
|
|
|
background: #fff;
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
left: -43%;
|
|
|
|
|
|
transform: translateX(69%);
|
|
|
|
|
|
top: 0rem;
|
|
|
|
|
|
> .childItem{
|
|
|
|
|
|
> .content_img_flex{
|
2025-07-19 14:04:48 +08:00
|
|
|
|
object-fit: contain;
|
2025-06-18 11:05:23 +08:00
|
|
|
|
border: 2px solid #00000070;
|
|
|
|
|
|
}
|
|
|
|
|
|
position: relative !important;
|
|
|
|
|
|
>img{
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-05-20 16:47:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
&.active{
|
|
|
|
|
|
.icon_like,.icon_delete{
|
|
|
|
|
|
display: block;
|
|
|
|
|
|
}
|
|
|
|
|
|
.content_img_flex {
|
2025-06-18 11:05:23 +08:00
|
|
|
|
&.Design{
|
|
|
|
|
|
border: 2px solid #000;
|
|
|
|
|
|
}
|
|
|
|
|
|
&.PoseTransfer{
|
2025-07-19 14:04:48 +08:00
|
|
|
|
border: 2px solid #c7c7c7;
|
2025-06-18 11:05:23 +08:00
|
|
|
|
}
|
|
|
|
|
|
&.ToProductImage{
|
2025-07-19 14:04:48 +08:00
|
|
|
|
border: 2px solid #c7c7c7;
|
2025-06-18 11:05:23 +08:00
|
|
|
|
}
|
|
|
|
|
|
&.Relight{
|
2025-07-19 14:04:48 +08:00
|
|
|
|
border: 2px solid #c7c7c7;
|
2025-06-18 11:05:23 +08:00
|
|
|
|
}
|
2025-05-20 16:47:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
.content_img {
|
|
|
|
|
|
height: 100%;
|
2025-07-19 14:04:48 +08:00
|
|
|
|
width: 100%;
|
|
|
|
|
|
object-fit: contain;
|
|
|
|
|
|
// object-fit: cover;
|
2025-05-20 16:47:27 +08:00
|
|
|
|
}
|
2025-06-03 14:57:18 +08:00
|
|
|
|
|
|
|
|
|
|
.btn{
|
2025-05-20 16:47:27 +08:00
|
|
|
|
top: 1rem;
|
|
|
|
|
|
right: 1rem;
|
2025-06-03 14:57:18 +08:00
|
|
|
|
display: flex;
|
2025-05-20 16:47:27 +08:00
|
|
|
|
position: absolute;
|
2025-06-03 14:57:18 +08:00
|
|
|
|
flex-direction: column;
|
|
|
|
|
|
align-items: center;
|
2025-07-19 14:04:48 +08:00
|
|
|
|
@media (min-width: 1024px) {
|
|
|
|
|
|
top: 1.5rem;
|
|
|
|
|
|
right: 1.5rem;
|
|
|
|
|
|
}
|
2025-06-03 14:57:18 +08:00
|
|
|
|
> i{
|
|
|
|
|
|
cursor: pointer;
|
|
|
|
|
|
width: 3rem;
|
|
|
|
|
|
height: 3rem;
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
justify-content: center;
|
2025-06-26 15:41:08 +08:00
|
|
|
|
text-shadow: 0px 0px 2px black, 0px 0px 2px black, 0px 0px 2px black;
|
|
|
|
|
|
color: #fff;
|
|
|
|
|
|
font-size: 1.7rem;
|
2025-07-19 14:04:48 +08:00
|
|
|
|
@media (min-width: 1024px) {
|
|
|
|
|
|
font-size: 2rem;
|
|
|
|
|
|
}
|
2025-06-03 14:57:18 +08:00
|
|
|
|
}
|
2025-06-18 11:05:23 +08:00
|
|
|
|
|
2025-06-03 14:57:18 +08:00
|
|
|
|
.icon_like,.icon_delete {
|
|
|
|
|
|
font-size: 1.4rem;
|
|
|
|
|
|
cursor: pointer;
|
2025-06-26 15:41:08 +08:00
|
|
|
|
text-shadow: 0px 0px 2px black, 0px 0px 2px black, 0px 0px 2px black;
|
|
|
|
|
|
color: #fff;
|
|
|
|
|
|
font-size: 1.7rem;
|
2025-06-03 14:57:18 +08:00
|
|
|
|
}
|
2025-05-20 16:47:27 +08:00
|
|
|
|
}
|
2025-06-03 14:57:18 +08:00
|
|
|
|
|
2025-05-20 16:47:27 +08:00
|
|
|
|
.icon_delete{
|
|
|
|
|
|
top: 5rem;
|
|
|
|
|
|
}
|
|
|
|
|
|
.icon-jushoucang {
|
|
|
|
|
|
color: #000;
|
|
|
|
|
|
}
|
|
|
|
|
|
.icon-jushoucanggift {
|
|
|
|
|
|
// color: rgba(52, 53, 121, 1);
|
|
|
|
|
|
color: #000;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-06-18 11:05:23 +08:00
|
|
|
|
|
2025-05-20 16:47:27 +08:00
|
|
|
|
.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;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-06-18 11:05:23 +08:00
|
|
|
|
.btnOpen{
|
|
|
|
|
|
position: absolute;
|
|
|
|
|
|
width: max-content;
|
|
|
|
|
|
left: 30px;
|
|
|
|
|
|
top: 30px;
|
|
|
|
|
|
transform: translateX(-100%);
|
|
|
|
|
|
background: #e4e4e7;
|
|
|
|
|
|
padding: 12px;
|
|
|
|
|
|
border-radius: 12px;
|
|
|
|
|
|
display: none;
|
|
|
|
|
|
z-index: 999;
|
|
|
|
|
|
&.active{
|
|
|
|
|
|
display: block;
|
|
|
|
|
|
}
|
|
|
|
|
|
> .item{
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
margin-bottom: 8px;
|
|
|
|
|
|
padding: 8px;
|
|
|
|
|
|
border-radius: 8px;
|
|
|
|
|
|
cursor: pointer;
|
|
|
|
|
|
&:last-child{
|
|
|
|
|
|
margin: 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
> .text{
|
|
|
|
|
|
font-size: 12px;
|
|
|
|
|
|
margin-right: 10px;
|
|
|
|
|
|
}
|
|
|
|
|
|
&:hover{
|
|
|
|
|
|
background: #efeff1;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-05-20 16:47:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
</style>
|