This commit is contained in:
X1627315083
2024-06-01 10:02:21 +08:00
parent 89ee910ce9
commit ff9e2f510b
21 changed files with 2046 additions and 1798 deletions

11
package-lock.json generated
View File

@@ -18,6 +18,7 @@
"element-plus": "^2.4.2",
"file-saver": "^2.0.5",
"fingerprintjs2": "^2.1.4",
"gsap": "^3.12.5",
"html2canvas": "^1.4.1",
"jszip": "^3.10.1",
"md5": "^2.3.0",
@@ -6893,6 +6894,11 @@
"integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
"dev": true
},
"node_modules/gsap": {
"version": "3.12.5",
"resolved": "https://registry.npmmirror.com/gsap/-/gsap-3.12.5.tgz",
"integrity": "sha512-srBfnk4n+Oe/ZnMIOXt3gT605BX9x5+rh/prT2F1SsNJsU1XuMiP0E2aptW481OnonOGACZWBqseH5Z7csHxhQ=="
},
"node_modules/gzip-size": {
"version": "6.0.0",
"resolved": "https://registry.npmmirror.com/gzip-size/-/gzip-size-6.0.0.tgz",
@@ -17722,6 +17728,11 @@
"integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
"dev": true
},
"gsap": {
"version": "3.12.5",
"resolved": "https://registry.npmmirror.com/gsap/-/gsap-3.12.5.tgz",
"integrity": "sha512-srBfnk4n+Oe/ZnMIOXt3gT605BX9x5+rh/prT2F1SsNJsU1XuMiP0E2aptW481OnonOGACZWBqseH5Z7csHxhQ=="
},
"gzip-size": {
"version": "6.0.0",
"resolved": "https://registry.npmmirror.com/gzip-size/-/gzip-size-6.0.0.tgz",

View File

@@ -22,6 +22,7 @@
"element-plus": "^2.4.2",
"file-saver": "^2.0.5",
"fingerprintjs2": "^2.1.4",
"gsap": "^3.12.5",
"html2canvas": "^1.4.1",
"jszip": "^3.10.1",
"md5": "^2.3.0",

View File

@@ -38,7 +38,7 @@ li {
border: 2px solid;
}
.button_second {
width: 11.85rem;
width: 14rem;
text-align: center;
height: 4rem;
line-height: 4rem;
@@ -1166,7 +1166,8 @@ li {
.design_detail_modal_component .ant-modal-body,
.designOpenrtion_modal .ant-modal-body,
.library_page .ant-modal-body,
.Export .ant-modal-body {
.Export .ant-modal-body,
.productImg_modal .ant-modal-body {
overflow-y: hidden;
}
.collection_modal .ant-upload.ant-upload-select-picture-card,
@@ -1175,7 +1176,8 @@ li {
.design_detail_modal_component .ant-upload.ant-upload-select-picture-card,
.designOpenrtion_modal .ant-upload.ant-upload-select-picture-card,
.library_page .ant-upload.ant-upload-select-picture-card,
.Export .ant-upload.ant-upload-select-picture-card {
.Export .ant-upload.ant-upload-select-picture-card,
.productImg_modal .ant-upload.ant-upload-select-picture-card {
background: #FFFFFF;
width: calc(6rem*1.2);
height: calc(6rem*1.2);
@@ -1189,7 +1191,8 @@ li {
.design_detail_modal_component .ant-upload.ant-upload-select-picture-card .upload_tip_block .icon-jiahao,
.designOpenrtion_modal .ant-upload.ant-upload-select-picture-card .upload_tip_block .icon-jiahao,
.library_page .ant-upload.ant-upload-select-picture-card .upload_tip_block .icon-jiahao,
.Export .ant-upload.ant-upload-select-picture-card .upload_tip_block .icon-jiahao {
.Export .ant-upload.ant-upload-select-picture-card .upload_tip_block .icon-jiahao,
.productImg_modal .ant-upload.ant-upload-select-picture-card .upload_tip_block .icon-jiahao {
font-size: calc(3.2rem*1.2);
color: #B7B7B7;
}
@@ -1199,7 +1202,8 @@ li {
.design_detail_modal_component .ant-upload.ant-upload-select-picture-card .ant-upload-text,
.designOpenrtion_modal .ant-upload.ant-upload-select-picture-card .ant-upload-text,
.library_page .ant-upload.ant-upload-select-picture-card .ant-upload-text,
.Export .ant-upload.ant-upload-select-picture-card .ant-upload-text {
.Export .ant-upload.ant-upload-select-picture-card .ant-upload-text,
.productImg_modal .ant-upload.ant-upload-select-picture-card .ant-upload-text {
font-size: calc(1.6rem*1.2);
color: #B7B7B7;
}
@@ -1209,7 +1213,8 @@ li {
.design_detail_modal_component .ant-upload-list-picture-card-container,
.designOpenrtion_modal .ant-upload-list-picture-card-container,
.library_page .ant-upload-list-picture-card-container,
.Export .ant-upload-list-picture-card-container {
.Export .ant-upload-list-picture-card-container,
.productImg_modal .ant-upload-list-picture-card-container {
display: none !important;
}
.collection_modal .ant-upload-picture-card-wrapper,
@@ -1218,7 +1223,8 @@ li {
.design_detail_modal_component .ant-upload-picture-card-wrapper,
.designOpenrtion_modal .ant-upload-picture-card-wrapper,
.library_page .ant-upload-picture-card-wrapper,
.Export .ant-upload-picture-card-wrapper {
.Export .ant-upload-picture-card-wrapper,
.productImg_modal .ant-upload-picture-card-wrapper {
width: auto;
vertical-align: top;
}
@@ -1323,10 +1329,20 @@ textarea:focus {
flex: 1;
display: flex;
align-items: center;
flex-wrap: wrap;
}
.collection_modal_body .input_border .input_box.active input,
.design_detail_modal_component .input_border .input_box.active input,
.library_page .input_border .input_box.active input {
.collection_modal_body .input_border .input_box .inputShowText,
.design_detail_modal_component .input_border .input_box .inputShowText,
.library_page .input_border .input_box .inputShowText {
width: 100%;
display: none;
}
.collection_modal_body .input_border .input_box.active .input_box_btnBox,
.design_detail_modal_component .input_border .input_box.active .input_box_btnBox,
.library_page .input_border .input_box.active .input_box_btnBox,
.collection_modal_body .input_border .input_box.active textarea,
.design_detail_modal_component .input_border .input_box.active textarea,
.library_page .input_border .input_box.active textarea {
border: 1px solid #ff0001;
box-shadow: 0px 0px 3px 1px rgba(255, 0, 0, 0.2);
}
@@ -1334,6 +1350,8 @@ textarea:focus {
.design_detail_modal_component .input_border .input_box.active span,
.library_page .input_border .input_box.active span {
opacity: 1;
display: block;
color: rgba(255, 0, 0.7);
}
.collection_modal_body .input_border .search_keyword,
.design_detail_modal_component .input_border .search_keyword,
@@ -1376,6 +1394,7 @@ textarea:focus {
padding: 0.5rem 1rem;
color: #fff;
font-weight: 600;
font-size: 1.2rem;
cursor: pointer;
}
.collection_modal_body .input_border .search_keyword .search_keyword_center .search_keyword_center_item:last-child,
@@ -1391,6 +1410,11 @@ textarea:focus {
display: flex;
float: left;
}
.collection_modal_body .input_border .input_box_btnBox .ant-spin-text,
.design_detail_modal_component .input_border .input_box_btnBox .ant-spin-text,
.library_page .input_border .input_box_btnBox .ant-spin-text {
font-size: 1.2rem;
}
.collection_modal_body .input_border .upload_item .upload_file_item,
.design_detail_modal_component .input_border .upload_item .upload_file_item,
.library_page .input_border .upload_item .upload_file_item {
@@ -1444,8 +1468,15 @@ textarea:focus {
z-index: 4;
width: 4rem;
align-items: center;
background-color: #fff;
justify-content: center;
}
.collection_modal_body .input_border .fi.fi-br-loading,
.design_detail_modal_component .input_border .fi.fi-br-loading,
.library_page .input_border .fi.fi-br-loading {
height: 100%;
background-color: rgba(0, 0, 0, 0);
}
.collection_modal_body .input_border .fi.active,
.design_detail_modal_component .input_border .fi.active,
.library_page .input_border .fi.active {
@@ -1489,7 +1520,7 @@ textarea:focus {
width: var(--width);
border-radius: 4px;
height: 20rem;
top: 0.2rem;
top: 0rem;
border: 1px solid #dcdfe6;
}
.collection_modal_body .input_border .generage_btn,
@@ -1664,6 +1695,32 @@ textarea:focus {
padding: 8rem 5rem !important;
overflow-y: hidden;
}
.generalScroll {
/* 进度 */
/* 轨道 */
}
.generalScroll.generalScroll::-webkit-scrollbar {
width: calc(1rem*1.2);
height: calc(1rem*1.2);
transition: all 0.3s;
}
.generalScroll.generalScroll::-webkit-scrollbar-thumb {
border-radius: calc(1rem*1.2);
background: rgba(238, 238, 244, 0);
}
.generalScroll.generalScroll::-webkit-scrollbar-track {
border-radius: calc(1rem*1.2);
background: rgba(238, 238, 244, 0);
}
.generalScroll.generalScroll:hover {
/* 轨道 */
}
.generalScroll.generalScroll:hover.generalScroll::-webkit-scrollbar-thumb {
background: #543087;
}
.generalScroll.generalScroll:hover.generalScroll::-webkit-scrollbar-track {
background: rgba(84, 48, 135, 0.2);
}
.scroll_style::-webkit-scrollbar-button:single-button {
display: block;
border-style: solid;

View File

@@ -42,7 +42,7 @@ input:focus{
border: 2px solid;
}
.button_second{
width: 11.85rem;
width: 14rem;
text-align: center;
// background: #343579;
height: 4rem;
@@ -1305,7 +1305,7 @@ input:focus{
}
}
//collection 弹窗
.collection_modal,.generalModel_modal,.payOrder_modal,.design_detail_modal_component,.designOpenrtion_modal,.library_page,.Export{
.collection_modal,.generalModel_modal,.payOrder_modal,.design_detail_modal_component,.designOpenrtion_modal,.library_page,.Export,.productImg_modal{
.ant-modal-body{
overflow-y: hidden;
@@ -1407,7 +1407,7 @@ textarea:focus{
outline: none; /* 清除默认焦点样式 */
}
//设计input和上传按钮样式
.collection_modal_body,.design_detail_modal_component,.library_page{
.collection_modal_body,.design_detail_modal_component,.library_page,{
.input_border{
z-index: 2;
display: flex;
@@ -1424,15 +1424,21 @@ textarea:focus{
flex: 1;
display: flex;
align-items: center;
flex-wrap: wrap;
.inputShowText{
width: 100%;
display: none;
}
&.active{
input{
.input_box_btnBox,textarea{
// color: rgb(255, 0, .7);
border: 1px solid rgb(255, 0, .7);
box-shadow: 0px 0px 3px 1px rgba(255, 0, 0, 0.2);
}
span{
opacity: 1;
display: block;
color: rgba(255, 0, .7);
}
}
}
@@ -1468,6 +1474,7 @@ textarea:focus{
padding: .5rem 1rem;
color: #fff;
font-weight: 600;
font-size: 1.2rem;
cursor: pointer;
}
.search_keyword_center_item:last-child{
@@ -1480,6 +1487,9 @@ textarea:focus{
width: var(--width);
display: flex;
float: left;
.ant-spin-text{
font-size: 1.2rem;
}
}
.upload_item{
.upload_file_item{
@@ -1523,8 +1533,12 @@ textarea:focus{
z-index: 4;
width: 4rem;
align-items: center;
background-color: #fff;
justify-content: center;
&.fi-br-loading{
height: 100%;
background-color: rgba(0, 0, 0, 0);
}
&.active{
transform: rotate(180deg);
}
@@ -1558,7 +1572,7 @@ textarea:focus{
width: var(--width);
border-radius: 4px;
height: 20rem;
top: .2rem;
top: 0rem;
border: 1px solid #dcdfe6;
}
@@ -1729,7 +1743,33 @@ textarea:focus{
overflow-y: hidden;
}
}
.generalScroll{
&.generalScroll::-webkit-scrollbar {
width: calc(1rem*1.2);
height: calc(1rem*1.2);
transition: all .3s;
}
/* 进度 */
&.generalScroll::-webkit-scrollbar-thumb {
border-radius: calc(1rem*1.2);
background: rgba(238, 238, 244, 0);
}
/* 轨道 */
&.generalScroll::-webkit-scrollbar-track {
border-radius: calc(1rem*1.2);
background: rgba(238, 238, 244, 0);
}
&.generalScroll:hover {
// overflow-x: scroll;
&.generalScroll::-webkit-scrollbar-thumb {
background: #543087;
}
/* 轨道 */
&.generalScroll::-webkit-scrollbar-track {
background: rgba(84, 48, 135,.2);
}
}
}
.scroll_style{
&::-webkit-scrollbar-button:single-button {
// background-color: #ffffff;

View File

@@ -129,7 +129,7 @@
<div class="habit_btn">
<div class="model_current">
<div class="model_text">{{ $t('Habit.Current') }}</div>
<div class="model_img">
<div class="model_img generalScroll">
<img :src="workspaceItem.mannequinUrl" alt="">
</div>
</div>
@@ -149,14 +149,14 @@
{{ $t('Habit.User') }}
</div>
</div>
<div class="model_img" v-show="systemSeleves" v-mousewheel>
<div class="model_img generalScroll" v-show="systemSeleves" v-mousewheel>
<div class="model_img_item">
<div v-for="(item,index) in mannequins?.[0]?.modelList" :key="item.id">
<img :src="item?.presignedUrl" alt="" @click="setMannequins(item,'Library')" :class="[driver__.index == 4?driver__.driver?'Guide_img':'':'']">
</div>
</div>
</div>
<div class="model_img" v-show="!systemSeleves" v-mousewheel>
<div class="model_img generalScroll" v-show="!systemSeleves" v-mousewheel>
<div class="model_img_item">
<div v-for="(item,index) in mannequins?.[1]?.modelList" :key="item.id">
<img :src="item?.presignedUrl" alt="" @click="setMannequins(item,'System')" :class="[driver__.index == 4?driver__.driver?'Guide_img':'':'']">
@@ -1128,33 +1128,7 @@ export default defineComponent({
flex: 1;
align-items: center;
overflow-x: auto;
&.model_img::-webkit-scrollbar {
/* 竖轴的宽度 */
width: calc(1rem*1.2);
/* 横轴的高度 */
height: calc(1rem*1.2);
transition: all .3s;
}
/* 进度 */
&.model_img::-webkit-scrollbar-thumb {
border-radius: calc(1rem*1.2);
background: rgba(238, 238, 244, 0);
}
/* 轨道 */
&.model_img::-webkit-scrollbar-track {
border-radius: calc(1rem*1.2);
background: rgba(238, 238, 244, 0);
}
&.model_img:hover {
// overflow-x: scroll;
&.model_img::-webkit-scrollbar-thumb {
background: #543087;
}
/* 轨道 */
&.model_img::-webkit-scrollbar-track {
background: rgba(84, 48, 135,.2);
}
}
>div{
display: flex;

View File

@@ -465,7 +465,8 @@ export default defineComponent({
position.y = maxHeight;
}
}
setCanvasImage(img,key,position.x,position.y)//设置图片
console.log(allItem,key);
setCanvasImage(img,key,position.x,position.y,allItem)//设置图片
position.height = img.height * scaleWH + margin;
if (key == "sketchboardFiles") {
if (sketchGroupingItem.length <3) {
@@ -611,7 +612,27 @@ export default defineComponent({
}
return imgWidth
}
let setCanvasImage = (img,key,left,top)=>{
let setCanvasImage = (img,key,left,top,data)=>{
// data
console.log(data);
let imgId = 0
let designType = ''//表示收藏或者generate
let level1Type = ''//表示sketch或者print
if(key == 'disposeMoodboard'){
imgId = data.id
}else if(key == 'moodboardFiles'){
}else if(key == 'sketchboardFiles'){
}else if(key == 'printboardFiles'){
}else if(key == 'likeDesignCollectionList'){
}else if(key == 'upImgFiles'){
}
// let id =
let proportion = img.height / img.width; //计算图形宽高比例
let imgWidth = setImageWidth(key)
let scaleWH = imgWidth / img.width; //计算放到画布上缩小倍率
@@ -916,6 +937,10 @@ export default defineComponent({
//设置画布监听修改添加事件,用来做撤回功能
let updateCanvasState = (str) =>{
const canvasAsJson = JSON.stringify(canvas.toJSON());
console.log(canvas.toJSON());
var json = canvas.toJSON(['aaaID']);
const d = canvas.toObject(['myFabricType1', 'myFabricType2'])
console.log(json,d);
if(str == 'loadingCompleted'){
// reverseCanvasState.value.push(canvasAsJson);
}
@@ -1128,7 +1153,7 @@ export default defineComponent({
const reader = new FileReader();
reader.onload = (e) => {
fabric.Image.fromURL(e.target.result,(img) => {
setCanvasImage(img,"sketchboardFiles",0,canvas.wrapperEl.parentNode.scrollTop)
setCanvasImage(img,"upImgFiles",0,canvas.wrapperEl.parentNode.scrollTop,e.target.result)
canvas.add(img);
},{ crossOrigin: "Anonymous" })
input.value = ''

View File

@@ -1,40 +1,6 @@
<template>
<div class="generate">
<div v-if="type_.type2 == 'Sketchboard'|| type_.type2 == 'Printboard'" class="generate_checkbox Guide_1_2_2" :class="[driver__.driver?'hideEvents':'']">
<!-- <div v-show="type_.type2 != 'Sketchboard'">
<label>
<input
type="checkbox"
v-model="checkbox[0].type"
@click="setKeyword(0)"
/>
<span>{{ $t('Generate.ImageOnly') }}</span>
</label>
</div>
<div>
<label
:class="[driver__.driver ? driver__.index == 29?'showEvents':'':'',type_.type2 == 'Sketchboard'?'Guide_1_9_1':'']"
>
<input
type="checkbox"
v-model="checkbox[1].type"
@click="setKeyword(1)"
/>
<span>{{ $t('Generate.TextOnly') }}</span>
</label>
</div>
<div>
<label class="Guide_1_2_3" :class="[driver__.driver?'showEvents':'']">
<input
type="checkbox"
v-model="checkbox[2].type"
@click="setKeyword(2)"
/>
<span>{{ $t('Generate.TextImage') }}</span>
</label>
</div> -->
<!-- <generalMenu :dataList="checkbox" @setprintModel="emitSetKeyword" :item="selectCheckbox" :deleteItem="type_.type2 == 'Sketchboard'?0:-1" :driver__="driver__.driver" :driverClass="{class1: '',class2:'',classList:{item1:'',item2:'',item3:''}}"></generalMenu> -->
<div v-if="type_.type2 == 'Printboard' && scene.value == 'Pattern'" class="generate_checkbox Guide_1_2_2" :class="[driver__.driver?'hideEvents':'']">
<generalMenu :dataList="printModelList" @setprintModel="setprintModel" :item="printModel" :driver__="driver__.driver" :driverClass="{class1: 'Guide_1_2_4',class2:'Guide_1_2_5'}"></generalMenu>
<!-- <generalMenu :dataList="sceneList" @setprintModel="setSceneList" :item="scene"></generalMenu> -->
<!-- <div v-if="type_.type2 == 'Printboard'" class="printModel">
@@ -54,26 +20,19 @@
class="upload_file_item Guide_1_2_7"
v-for="(file, index) in sketchboardList"
:key="file"
:class="[checkboxImage? 'forbidden':'',driver__.driver?'showEvents':'']"
:class="[driver__.driver?'showEvents':'']"
>
<div
class="upload_file_item_content"
v-show="file?.status === 'uploading'"
>
<a-spin :indicator="indicator" tip="Uploading..." />
<a-spin size="small" :indicator="indicator" tip="Uploading..." />
</div>
<div
class="upload_file_item_content"
v-show="file?.status === 'done' || file?.base64"
>
<img :src="file?.imgUrl" class="upload_img" />
<!-- <div
class="delete_file_block"
:class="[driver__.driver?'hideEvents':'']"
@click.stop="deleteFile(index)"
>
<span class="icon iconfont icon-shanchu"></span>
</div> -->
<div class="delete_like_file_block" :class="[driver__.driver?'hideEvents':'']">
<span class="icon iconfont icon-shanchu operate_icon" @click.stop="deleteFile(index)"></span>
</div>
@@ -89,7 +48,7 @@
@keydown.enter="getgenerate()"
@click="inputFocus()"
/>
<i class="fi fi-br-upload" v-show="!isTextarea && upload.level1Type !== 'Moodboard'">
<i class="fi fi-br-upload" v-show="!isTextarea && upload.level1Type !== 'Moodboard' && scene?.value != 'Slogan' && scene?.value != 'Logo'">
<a-upload
class="search_upImg"
:capture="null"
@@ -107,10 +66,9 @@
>
</a-upload>
</i>
<i v-show="scene?.value == 'Slogan'" @click.stop="setSlogan" class="fi fi-rr-poll-h"></i>
<i v-show="!isTextarea" class="fi fi-br-expand" @click.stop="setTextareaShow"></i>
<i v-show="isTextarea" class="fi fi-bs-compress" @click.stop="setTextareaShow"></i>
<i v-show="scene?.value == 'slogan'" @click.stop="setSlogan" class="fi fi-rr-poll-h"></i>
<!-- <i class="icon iconfont icon-xiala" :class="{active:isTextarea}" @click.stop="setTextareaShow"></i> -->
</div>
<textarea
v-show="isTextarea"
@@ -131,7 +89,7 @@
<div v-show="remGenerate" @click="removeGenerate" class="generage_btn started_btn">
{{$t('Generate.Close')}}
</div>
<span ref="inputShowText"></span>
<span class="inputShowText" ref="inputShowText"></span>
</div>
<div class="search_keyword" v-show="isInputFocus" @click.stop="">
<div class="search_keyword_center">
@@ -172,7 +130,7 @@
</div>
</div>
</div> -->
<div class="generage_img Guide_1_6" :style="[loadingShow?'overflow:hidden':'']">
<div class="generage_img Guide_1_6" :style="[isGenerate?'overflow:hidden':'']">
<div
class="generage_img_item"
v-for="(item, index) in fileList"
@@ -181,6 +139,7 @@
:class="[item.status != 'Success'?'hideEvents':'',item?.checked?'active':'']"
>
<img v-lazy="item.imgUrl" @click.stop="generageAdd(item)">
<sketchCategory v-if="type_.type2 == 'Sketchboard'" :disignTypeList="sketchCatecoryList" :generateList="fileList" :item="item" :driver__="driver__.driver" :driverClass="{class1: 'Guide_1_13',class2:'Guide_1_13_1'}"></sketchCategory>
<div
class="delete_like_file_block left1"
:class="[driver__.driver?'hideEvents':'',]"
@@ -195,10 +154,6 @@
<span class="icon iconfont icon-shanchu operate_icon"></span>
</div>
</div>
</div>
<div class="mark_loading" v-show="loadingShow">
<a-spin size="large" />
<div v-show="remGenerate" :class="[driver__.driver?'hideEvents':'']" class="mark_loading_btn" @click="removeGenerate">{{$t('Generate.Close')}}</div>
</div>
<scaleImage ref="scaleImage"></scaleImage>
<createSlogan ref="createSlogan" @setSloganData="setSloganData"></createSlogan>
@@ -220,33 +175,18 @@ import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
import { openGuide,driverObj__,driverIndex__ } from "@/tool/guide";
import createSlogan from "@/component/HomePage/createSlogan.vue";
import { useI18n } from "vue-i18n";
import sketchCategory from "@/component/HomePage/sketchCategory.vue";
export default defineComponent({
components: {
scaleImage,
generalMenu,
createSlogan,
sketchCategory,
},
props: ["msg",'sketchCatecoryList','scene'],
setup(props) {
// console.log(prop.msg);
let checkbox = ref([
{
name: "image",
type: true,
label:useI18n().t('Generate.ImageOnly'),
},
{
name: "text",
type: false,
label:useI18n().t('Generate.TextOnly'),
},
{
name: "text-image",
type: false,
label:useI18n().t('Generate.TextImage')
},
]);
let selectCheckbox = checkbox.value[0]
let printModelList = ref([
{
num:'',
@@ -271,69 +211,37 @@ export default defineComponent({
value:'Painting Style',
label:useI18n().t('Generate.Model1')
})
let checkboxImage = ref()
let imgList = ref([]);
let selectImgList: any = ref([]);
let selectImgListIds: any = ref([]);
let isShowLoading: any = ref(false);
let selectCode: any = ref("");
let currentPage: any = ref(1);
let searchPictureName = ref("");
let pageSize = ref(20);
let total = ref(0);
let searcMaterialhName: any = ref(""); //搜索名字
let designType: any = ref(null);
let store = useStore();
let fileList: any = ref([
]);
let sketchboardList:any = ref([])
let collectionElementid = ref()
let level2Type = ref('')
// let printBoards:any = computed(()=>{return store.state.UploadFilesModule.printboard})
// let moodboarList:any = computed(()=>{return store.state.UploadFilesModule.moodboard})
// let sketchCatecoryList:any = ref([])
let workspace:any = ref({})
let loadingShow = ref(false)
let isGenerate = ref(false)//判断是否正在进行generate
let inputShow = ref(false)//表示是否出现红框
let inputTime = ref()
let driver__:any = inject('driver__')
let {t} = useI18n()
let isMmerge = ref(false)
let isTest = ref()
let userInfo:any = {}
let generateId:any = ref([])
let generateTime:any = ref()
let generateProceedList = ref([])
let remGenerate:any = ref(false)
let remGenerateTime:any = ref()
let scene:any = props.scene
return {
imgList,
selectImgList,
selectImgListIds,
isShowLoading,
selectCode,
currentPage,
searchPictureName,
pageSize,
total,
searcMaterialhName,
designType,
checkbox,
selectCheckbox,
store,
fileList,
sketchboardList,
collectionElementid,
level2Type,
checkboxImage,
printModel,
printModelList,
loadingShow,
isGenerate,
scene,
@@ -345,10 +253,8 @@ export default defineComponent({
inputTime,
driver__,
t,
isMmerge,
isTest,
userInfo,
generateId,
generateTime,
generateProceedList,
remGenerate,
@@ -376,6 +282,7 @@ export default defineComponent({
type1: "generate",
type2: prop.msg,
},
workspaceCom:{},
isTextarea:false,
isInputFocus:false,
};
@@ -394,39 +301,15 @@ export default defineComponent({
let isTest:any = getCookie('isTest')
this.isTest =JSON.parse(isTest)
this.uploadUrl = getUploadUrl();
this.workspace = computed(()=>{
this.workspaceCom = computed(()=>{
return this.store?.state?.Workspace?.workspace
})
if(this.type_.type2 == 'Sketchboard'){
this.checkbox=[
{
name: "image",
type: false,
label:useI18n().t('Generate.ImageOnly'),
},
{
name: "text",
type: true,
label:useI18n().t('Generate.TextOnly'),
},
{
name: "text-image",
type: false,
label:useI18n().t('Generate.TextImage')
},
]
this.selectCheckbox = this.checkbox[1]
}
this.$emit('generateCheckbox',this.checkbox[0].type)
},
watch:{
driver__:{
handler(newVal,oldVal){
if(this.type_.type2 == 'Printboard'){
if(newVal.index >= 14 && newVal.index < 15){
this.setKeyword(newVal.index-14)
}else{
}
}else if(this.type_.type2 == 'Sketchboard'){
@@ -435,7 +318,8 @@ export default defineComponent({
}
},
workspace(newVal,oldVal){
workspaceCom(newVal,oldVal){
this.workspace = newVal
this.upload.gender = newVal?.sexEnum?.name
},
// moodboarList(newVal,oldVal){
@@ -480,7 +364,6 @@ export default defineComponent({
driverObj__.moveNext()
}
},
beforeUpload(file: any) {
const isJpgOrPng =
file.type === "image/jpeg" ||
@@ -495,61 +378,12 @@ export default defineComponent({
message.info(this.t('Generate.jsContent2'));
}
return (isJpgOrPng && isLt2M) || Upload.LIST_IGNORE;
},
emitSetKeyword(data:any){
this.selectCheckbox = data
this.checkbox.forEach((item:any,index:any) => {
if(item.name == data.name){
this.setKeyword(index)
}
});
},
setKeyword(num: any) {
this.checkbox.forEach((v: any) => {
v.type = false;
});
nextTick().then(()=>{
this.checkbox[num].type = true
this.$emit('generateCheckbox',this.checkbox[0].type)
this.checkboxImage = this.checkbox[1].type
// if(this.checkboxImage){
// this.sketchboardList.forEach((v:any)=>{
// v.checked = false
// })
// }
})
if(num == 1){
this.level2Type = ''//点击文字生成就把衣服类型清空
}
if(num == 2 || num == 1){
if(this.driver__.driver){
driverObj__.moveNext()
}
}
},
setprintModel(value:any){
this.printModel = value
},
getgenerate(){
clearInterval(this.remGenerateTime)
// this.remGenerate = false
// // if(this.isTest){//试用用户禁止使用
// // message.info(
// // this.t('isTest.available')
// // );
// // return
// // }
// if(this.isGenerate){
// return
// }
// // if(!this.searchPictureName){
// // message.info(
// // this.t('Generate.jsContent3')
// // );
// // return
// // }
if(this.searchPictureName){
let arr = this.searchPictureName.split(/\s+/).length
if(arr > 250){
@@ -559,7 +393,7 @@ export default defineComponent({
return
}
}else{
if(this.sketchboardList[0].imgUrl){
if(this.sketchboardList?.[0]?.imgUrl){
}else{
message.info(
@@ -569,23 +403,36 @@ export default defineComponent({
}
}
let level2Type = ''
let collectionElementId = ''
let base64 = ''
if(this.sketchboardList?.[0]){
level2Type = this.sketchboardList[0].categoryValue?this.sketchboardList[0].categoryValue:''
collectionElementId = this.sketchboardList[0].id
if(this.sketchboardList[0].base64){
base64 = this.sketchboardList[0].imgUrl
}
}
if(this.upload.level1Type == "Sketchboard"){
console.log(this.sketchboardList);
}else if(this.upload.level1Type == "Printboard"){
level2Type = this.scene?.value
}
let data = {
generateType:'',
generateType:'text',
designType:'collection',
collectionElementId:this.sketchboardList[0].id?this.sketchboardList[0].id:'',
collectionElementId:collectionElementId,
level1Type:this.upload.level1Type,
level2Type:this.scene?.value?this.scene?.value:'',
level2Type:level2Type,
text:this.searchPictureName,
userId:this?.userInfo?.userId,
timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone,
version:1,//为1就是Print
isTestUser:this.driver__.driver?false:this.isTest,
gender:'',
base64:this.sketchboardList[0].base64?this.sketchboardList[0].imgUrl:'',
gender:this.workspace.sexEnum.name,
base64:base64,
}
console.log(data);
return
this.isGenerate = true
Https.axiosPost(Https.httpUrls.generatePrepare, data).then(
(rv) => {
@@ -610,31 +457,6 @@ export default defineComponent({
).catch(res=>{
this.isGenerate = false
});
// Https.axiosPost(Https.httpUrls.sketchAndPrintGenerate, data).then(
// (rv) => {
// console.log(rv)
// if(rv){
// this.fileList = []
// let arr
// rv.generatedCollectionItems.forEach((v:any,index:number)=>{
// arr = {
// id:rv.generatedCollectionItems[index].generateItemId,
// imgUrl:rv.generatedCollectionItems[index].generateItemUrl,
// like:rv.generatedCollectionItems[index].isLiked
// }
// this.fileList.push(arr)
// this.loadingShow = false
// })
// nextTick().then(()=>{
// if(this.driver__.driver){
// driverObj__.moveNext()
// }
// })
// }
// }
// ).catch(res=>{
// this.loadingShow = false
// });
},
setGenerate(dataList:any){
this.remGenerateTime = setTimeout(()=>{
@@ -653,6 +475,12 @@ export default defineComponent({
element.id_ = GO.id++
this.fileList.unshift(element)
data = data.filter((item:any) => item !== element.taskId);
this.sketchCatecoryList.forEach((itemCategory:any) => {
if(itemCategory.value == element.category){
element.categoryValue = itemCategory?.name
element.category = itemCategory?.value
}
});
}
});
if((data.length == 0)|| (rv.filter((item:any)=>item.status == 'Invalid').length ==data.length)){
@@ -794,39 +622,7 @@ export default defineComponent({
setSloganData(data:any){
this.sketchboardList = data
},
// setSketchboardItem(item:any){
// if(this.checkboxImage){
// return
// }
// let parent:any = this.$parent
// if(item.checked){
// item.checked = false
// this.collectionElementid = ''
// }else{
// let obj = {
// imgId : item.id,
// imgUr: item.imgUrl,
// level2Type:item.category,
// designType:'collection'
// }
// // parent.useGenerate.designType = 'collection'
// this.$emit('setGenerate',obj)
// this.sketchboardList.forEach((v:any)=>{
// if(v.checked){
// v.checked = false
// }
// })
// item.checked = true
// this.collectionElementid = item.id
// }
// this.level2Type = item.category
// if(this.driver__.driver){
// driverObj__.moveNext()
// }
// },
deleteFile(item: any) {
this.collectionElementid = ''
this.sketchboardList.splice(item, 1);
// if((this.sketchboardList.length<2 && this.moodboarList.length == 0) || this.sketchboardList.length == 0){
// this.printModel = {
@@ -839,10 +635,18 @@ export default defineComponent({
},
likeFile(item:any,str:string){
if(str == 'like'){
console.log();
let level2Type = ''
if(this.upload.level1Type == "Sketchboard"){
level2Type = item.category
}else if(this.upload.level1Type == "Printboard"){
level2Type = this.scene?.value
}
let data = {
generateDetailId:item.id,
level1Type:"Moodboard",
level2Type: '',
level1Type:this.type_.type2,
level2Type: level2Type,
timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone
}
Https.axiosPost(Https.httpUrls.generateLike, data).then(
@@ -888,13 +692,6 @@ export default defineComponent({
closeModal() {
// this.myMaterialModalShow = false
this.searchPictureName = "";
this.designType = null;
this.selectImgList = [];
this.selectImgListIds = [];
this.imgList = [];
this.currentPage = 1;
// this.pageSize = 10;
this.total = 0;
},
},
});
@@ -930,21 +727,6 @@ export default defineComponent({
z-index: 2;
}
.generate_checkbox {
z-index: 10;
div {
label {
display: flex;
cursor: pointer;
input {
margin-right: calc(0.5rem*1.2);
padding-left: calc(1.5rem*1.2);
}
span {
font-size: calc(1.2rem*1.2);
font-weight: 500;
}
}
}
}
.generage_input {
}
@@ -968,6 +750,9 @@ export default defineComponent({
.delete_like_file_block{
pointer-events:none;
}
.operate_file_block{
pointer-events:none;
}
}
img {
width: calc(10rem*1.2);
@@ -995,13 +780,6 @@ export default defineComponent({
// img {
// }
// }
&.forbidden{
cursor:not-allowed;
img{
cursor:not-allowed;
}
}
.upload_file_item_content {
display: flex;
align-items: center;

View File

@@ -22,17 +22,17 @@
<div v-for="item,index in imgList" :key="item" class="content_img_item" :class="[ item?.checked ? 'active':'' , selectCode == 'Moodboard' ? 'moodb':'' ]" >
<img :src="item?.imgUrl" @click.stop="selectImgItem(item)">
<sketchCategory v-if="selectCode == 'Sketchboard'" :disignTypeList="disignTypeList" :generateList="imgList" :item="item" :isSetSketchCategory="true"></sketchCategory>
<div v-if="selectCode == 'Sketchboard' || selectCode == 'Printboard'" class="pin_block">
<!-- <div v-if="selectCode == 'Sketchboard' || selectCode == 'Printboard'" class="pin_block">
<a-checkbox v-model:checked="item.pin">{{ $t('Material.PIN') }}</a-checkbox>
</div>
</div> -->
</div>
<div v-show="total > imgList?.length && total != 0" class="material_content_list_loding" v-observe>
<img src="@/assets/images/homePage/loading.gif" alt="">
</div>
</div>
<div class="no_data_block loading_block" v-show="isShowLoading">
<!-- <div class="no_data_block loading_block" v-show="isShowLoading">
<a-spin size="large"></a-spin>
</div>
</div> -->
</div>
<!-- </a-modal> -->
@@ -519,7 +519,7 @@ export default defineComponent({
&.material_content_body::-webkit-scrollbar{display: none;}
.content_img_item{
margin: 0 calc(2rem*1.2) calc(5rem*1.2) 0;
margin: 0 calc(2rem*1.2) calc(2rem*1.2) 0;
display: inline-block;
width: calc(10rem*1.2);
height: calc(10rem*1.2);

View File

@@ -53,9 +53,9 @@
</div>
</div>
</div>
<div class="pin_block" v-show="file?.status === 'done'">
<!-- <div class="pin_block" v-show="file?.status === 'done'">
<a-checkbox v-model:checked="file.pin">{{ $t('PrintboardUpload.PIN') }}</a-checkbox>
</div>
</div> -->
</div>
<div class="upload_file_item upload_component" v-show="printboardList.length < 8">
@@ -92,7 +92,7 @@
</div>
</div>
<Material v-show="openClick == 2" ref="Material" msg="Printboard" @setLibrary = setSetchboardGenerate @confirmSelect="confirmSelect"></Material>
<Generate v-show="openClick == 3" ref="Generate" :scene="scene" msg="Printboard" @setGenerate = setSetchboardGenerate @generateCheckbox="getgenerateCheckbox"></Generate>
<Generate v-show="openClick == 3" ref="Generate" :scene="scene" msg="Printboard"></Generate>
</div>
<div class="modal_right">
<div class="modal_layout">
@@ -100,90 +100,40 @@
<div>{{ $t('PrintboardUpload.Thumbnail') }}</div>
<!-- <div class="modal_btn started_btn" @click="layout()">layout</div> -->
</div>
<div class="modal_img">
<!-- <div class="modal_img">
<div class="modal_img_item" v-for="item,index in printboardList" :key="item" @click.stop="deleteFile(item)">
<img v-lazy="item.imgUrl">
<div class="checked" >
<i class="fi fi-rr-trash"></i>
</div>
</div>
</div>
</div>
<div v-show="openClick == 3" class="modal_accomplish">
<div class="input_border">
<div class="Guide_1_2_8 input_box" :class="[inputShow?'active':'',driver__.driver?'showEvents':'']">
<div class="input_box_btnBox">
<input class="search_input"
@click="inputFocus()"
@input="ifMaximumLength"
@keydown.enter="getgenerate"
:maxlength='inputShow?0:9999'
:class="{forbidden:generateCheckbox}"
:readonly="generateCheckbox"
:placeholder="$t('PrintboardUpload.inputContent1')" v-model="captionGeneration">
<i class="icon iconfont icon-xiala" :class="{active:isTextarea,forbidden:generateCheckbox}" @click.stop="setTextareaShow"></i>
</div>
<textarea class="search_textarea" v-show="isTextarea && !generateCheckbox" @input="ifMaximumLength" @keydown.enter="getgenerate" :maxlength='inputShow?0:9999' :class="{forbidden:generateCheckbox}" :readonly="generateCheckbox" v-model="captionGeneration">
</textarea>
<!-- <div class="generage_btn started_btn" @click.stop="getgenerate">{{ $t('PrintboardUpload.Generate') }}</div> -->
<!-- <div v-show="!isGenerate" class="generage_btn started_btn" @click.stop="getgenerate">
{{ $t('PrintboardUpload.Generate') }}
</div> -->
<div v-show="!isGenerate" class="generage_btn started_btn" @click.stop="getgenerate">
{{ $t('PrintboardUpload.Generate') }}
<!-- <div v-show="isGenerate"><a-spin size="large" /></div> -->
</div>
<div v-show="isGenerate && !remGenerate" class="generage_btn started_btn" @click.stop="getgenerate">
<i class="fi fi-br-loading"></i>
</div>
<div v-show="remGenerate" @click="removeGenerate" class="generage_btn started_btn">
{{$t('Generate.Close')}}
</div>
<span ref="inputShowText"></span>
</div>
<div class="search_keyword" v-show="isInputFocus" @click.stop="">
<div class="search_keyword_center">
<div class="search_keyword_center_left">
<div v-for="item in workspace?.keyWord?.[upload.level1Type]" @click.stop="cliSetKeyword(item.name)" class="search_keyword_center_item"> {{item.name}} </div>
</div>
</div>
</div>
<!-- <div>
<div v-show="!isUseGenerate" @click="setUseGenerate">Printboard</div>
<div v-show="isUseGenerate" @click="setUseGenerate">Generate</div>
</div> -->
</div>
<div class="modal_img" :style="[loadingShow?'overflow:hidden':'']">
<div v-for="item,index in generateList" :key="item" class="modal_imgItem Guide_1_2_9" :class="[item.status != 'Success'?'hideEvents':'',item?.checked?'active':'',driver__.driver?'showEvents':'']" >
<!-- <img v-show="item.status != 'Success'" src="@/assets/images/homePage/loading.gif" alt=""> -->
<img v-lazy="item.imgUrl" @click.stop="generageAdd(item)">
<div
<div class="modal_accomplish">
<div class="modal_img">
<div v-for="item,index in printboardList" :key="item" class="modal_imgItem Guide_1_2_9" :class="[driver__.driver?'showEvents':'']" >
<img v-lazy="item.imgUrl">
<!-- <div
class="delete_like_file_block left1"
:class="[driver__.driver?'hideEvents':'']"
>
<i v-if="!item.like" class="fi fi-rr-heart" @click.stop="likeFile(item,'like')"></i>
<i v-else class="fi fi-sr-heart" :adminLike="!!item.like" @click.stop="likeFile(item,'noLike')"></i>
</div>
</div> -->
<div class="delete_like_file_block left" :class="[driver__.driver?'hideEvents':'']">
<i class="fi fi-bs-expand-arrows-alt" @click.stop="scaleImage(index)"></i>
</div>
<div class="delete_like_file_block" :title="t('LibraryPage.Delete')" @click.stop="deleteGenerate(index)">
<div class="delete_like_file_block" :title="t('LibraryPage.Delete')" @click.stop="deleteFile(item)">
<span class="icon iconfont icon-shanchu operate_icon"></span>
</div>
<div class="pin_block">
<a-checkbox v-model:checked="item.pin">{{ $t('PrintboardUpload.PIN') }}</a-checkbox>
</div>
</div>
</div>
<div class="mark_loading" v-show="loadingShow">
<a-spin size="large" />
<div v-show="remGenerate" :class="[driver__.driver?'hideEvents':'']" class="mark_loading_btn" @click="removeGenerate">{{$t('Generate.Close')}}</div>
</div>
</div>
</div>
<!-- 取消请求 -->
<!-- <button @click="canelAxios">9999999999999999999</button> -->
<scaleImage ref="scaleImage"></scaleImage>
<Cropper ref="Cropper" @handleCropperSuccess="handleCropperSuccess" @closeCropper="deletUploadFile()" :cropperFileData="cropperFileData" :isUpload="isUpload"></Cropper>
</div>
@@ -220,28 +170,12 @@ export default defineComponent({
let store:any =useStore()
let fileList:any = ref([]),//选中的文件id数据
printImgList:any = ref([]), //print的印花图片
moodBoards:any = computed(()=>{return store.state.UploadFilesModule.moodboard}),
printBoards:any = computed(()=>{
return store.state.UploadFilesModule.printboard
})
moodBoards:any = computed(()=>{return store.state.UploadFilesModule.moodboard})
let openClick: any = ref(1);
let generateCheckbox:any = ref()
let generateList:any = ref([
])
let loadingShow = ref(false)
let isGenerate = ref(false)
let inputShow = ref(false)
let inputTime = ref()
let driver__:any = inject('driver__')
let {t} = useI18n()
let isTest = ref()
let userInfo:any = {}
let generateTime:any = ref()
let generateProceedList = ref([])
let remGenerate:any = ref(false)
let remGenerateTime:any = ref()
let isUseGenerate = ref(false)
let useGenerate:any = ref({
imgId : '',
imgUrl:1,
@@ -252,43 +186,31 @@ export default defineComponent({
let workspace = ref({})
let sceneList = ref([
{
label:'pattern',
value:'pattern'
label:'Pattern',
value:'Pattern'
},{
label:'slogan',
value:'slogan'
label:'Slogan',
value:'Slogan'
},{
label:'logo',
value:'logo'
label:'Logo',
value:'Logo'
},
])
let scene = ref({
label:'pattern',
value:'pattern'
label:'Pattern',
value:'Pattern'
})
let openMenu = ref(false)
return {
fileList,
printImgList,
moodBoards,
printBoards,
openClick,
generateCheckbox,
generateList,
loadingShow,
isGenerate,
inputShow,
inputTime,
driver__,
t,
isTest,
userInfo,
generateProceedList,
generateTime,
remGenerate,
remGenerateTime,
useGenerate,
isUseGenerate,
workspace,
sceneList,
scene,
@@ -296,24 +218,9 @@ export default defineComponent({
}
},
computed:{
// getPinLength(){
// let selectLength:any = 0
// for(let item of this.printBoards){
// if(item.pin){
// selectLength++
// }
// }
// return selectLength
// }
},
watch:{
printBoards:{
handler(newVal:any,oldVal:any){
// if(newVal.length>=2 && this.driver__.driver && newVal.length!=oldVal.length){
// driverObj__.moveTo(7)
// }
}
}
},
data(){
return {
@@ -340,7 +247,6 @@ export default defineComponent({
printboardList:computed(()=>{
return useStore().state.UploadFilesModule.printboard
}),
source:axios.CancelToken.source(),
isTextarea:false,
isInputFocus:false,
}
@@ -362,26 +268,6 @@ export default defineComponent({
}
},
methods:{
//设置library里面选择generate图片
setUseGenerate(){
this.isUseGenerate = !this.isUseGenerate
let printMaterialFiles:any = computed(()=>{
return this.store.state.UploadFilesModule.printMaterialFiles
})
let Material:any = this.$refs.Material
Material.setUseGenerate(printMaterialFiles.value)
if(this.isUseGenerate){
let generate:any = this.$refs.Generate
generate.checkbox.forEach((item:any)=>{
if(item.name == "text-image"){
item.type = true
}else{
item.type = false
}
})
this.generateCheckbox = false
}
},
setSetchboardGenerate(item:any){
this.useGenerate.imgId = item.imgId
this.useGenerate.imgUrl = item.imgUrl
@@ -391,19 +277,12 @@ export default defineComponent({
let generate:any = this.$refs.Generate
if(item.designType == 'collection'){
Material.setUseGenerate([])
}else {
generate.sketchboardList.forEach((item:any) => {
item.checked = false
});
}
},
//取消请求测试
canelAxios(){
// Https.axiosCanel()
this.source.cancel('请求被取消');
this.source = axios.CancelToken.source()
},
open(num: Number) {
this.openClick = num;
let material:any = this.$refs.Material
@@ -525,21 +404,6 @@ export default defineComponent({
}
},
deleteGenerate(index:any){
if(this.isGenerate)return
let _this = this
Modal.confirm({
title: this.t('LibraryPage.jsContent1'),
icon: createVNode(ExclamationCircleOutlined),
okText: 'Yes',
cancelText: 'No',
mask:false,
centered:true,
onOk() {
_this.generateList.splice(index,1)
}
});
},
customRequest(data:any){
let new_data = {
@@ -661,7 +525,6 @@ export default defineComponent({
},
recollection(){
this.isUseGenerate = false
this.useGenerate = {
imgId : '',
imgUrl:1,
@@ -711,337 +574,17 @@ export default defineComponent({
}
this.store.commit('setPrintboardFile',this.fileList)
},
getgenerateCheckbox(value:any){
this.generateCheckbox = value
},
setTextareaShow(){
if(this.generateCheckbox) return
this.isTextarea = !this.isTextarea
},
cliSetKeyword(value:any){
let str = ''
if(this.captionGeneration[this.captionGeneration.length-1] != ',' && this.captionGeneration.length != 0){
str = ','
}
this.captionGeneration += str + value
},
ifMaximumLength(){
this.inputTime = setTimeout(()=>{
if(this.captionGeneration?.split(/\s+/).length > 250){
(this.$refs.inputShowText as any).innerHTML = this.t('PrintboardUpload.maximumLength')
this.inputShow = true
}else{
this.inputShow = false
}
},500)
},
inputFocus(){
if(this.isInputFocus) return
if(this.generateCheckbox) return
this.isInputFocus = true
let setDomCli = ()=>{
this.isInputFocus = false
document.removeEventListener('click',setDomCli)
}
setTimeout(()=>{
document.addEventListener('click',setDomCli)
},200)
},
getgenerate(){
clearInterval(this.remGenerateTime)
this.remGenerate = false
// if(this.isTest){//试用用户禁止使用
// message.warning(
// this.t('isTest.available')
// );
// return
// }
if(this.isGenerate){
return
}
let generage:any = this.$refs.Generate
if(generage.printModel.num == 'Generate'){
this.generatePrint()
return
}
//如果是通过moodboard随即图片生成
let generateType = generage.checkbox.filter((v:any)=>v.type)[0].name
let data = {
generateType:generateType,
// designType:this.useGenerate.designType,
designType:'collection',
collectionElementId:this.useGenerate.imgId,
// collectionElementId:generage?.collectionElementid,
level1Type:this.upload.level1Type,
level2Type:'',
text:`${generage.printModel.value},${this.captionGeneration}`,
timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone,
userId:this?.userInfo?.userId,
isTestUser:this.driver__.driver?false:this.isTest,
version:1,//为1就是Print
gender:'',
}
if(generateType == 'image'){
if(generage?.collectionElementid){
data.text = generage.printModel.value
}else{
message.info(
this.t('PrintboardUpload.jsContent4')
);
return
}
}else if(generateType == 'text'){
data.collectionElementId = ''
data.level2Type = ''
// this.beforeUpload(false)
if(this.captionGeneration){
let arr = this.captionGeneration.split(/\s+/).length
if(arr > 250){
message.info(
this.t('PrintboardUpload.jsContent5')
);
return
}
}else{
message.info(
this.t('PrintboardUpload.jsContent6')
);
return
}
}else if(generateType == 'text-image'){
if(this.useGenerate.imgId){
if(this.captionGeneration){
let arr = this.captionGeneration.split(/\s+/).length
if(arr > 250){
message.info(
this.t('PrintboardUpload.jsContent5')
);
return
}
}else{
message.info(
this.t('PrintboardUpload.jsContent6')
);
return
}
}else{
message.info(
this.t('PrintboardUpload.jsContent4')
);
return
}
}
this.isGenerate = true
//取消请求
// Https.axiosPost(Https.httpUrls.sketchAndPrintGenerate, data,{cancelToken: this.source?.token}).then(
Https.axiosPost(Https.httpUrls.generatePrepare, data).then(
(rv) => {
if(data.isTestUser){
if(rv.leftUsageCount >= 1){
message.warning(this.t('Generate.jsContent8',{num:rv.leftUsageCount,str:this.t('collectionModal.Printboard')}));
}else if(rv.leftUsageCount == 0){
message.warning(this.t('Generate.jsContent9',{str:this.t('collectionModal.Printboard')}));
this.isGenerate = false
return
}
}
// rv.uniqueId.forEach((item:any) => {
// let arr:any = {}
// arr.taskId = item
// arr.status = 'execution'
// this.generateList.unshift(arr)
// });
this.setGenerate(rv.uniqueId)
}
).catch(res=>{
this.isGenerate = false
});
},
setGenerate(dataList:any){
this.remGenerateTime = setTimeout(()=>{
this.remGenerate = true
},10000)
let data = dataList
let dataNum = dataList.length
this.generateTime = setInterval(()=>{
Https.axiosPost(Https.httpUrls.generateResult, data).then(
(rv) => {
if(this.isGenerate){//防止取消后有正在执行的获取状态
this.generateProceedList = rv.filter((item:any)=>item.status != 'Success' && item.status != 'Fail' && item.status != 'Invalid')
rv.forEach((element:any) => {
if(element.status == 'Success'){
element.imgUrl = element.url
element.id_ = GO.id++
this.generateList.unshift(element)
data = data.filter((item:any) => item !== element.taskId);
}
});
if((data.length == 0)|| (rv.filter((item:any)=>item.status == 'Invalid').length == data.length)){
if(rv.filter((item:any)=>item.status == 'Invalid').length == dataNum){
message.info(this.t('Generate.effectPoor'));
}
nextTick().then(()=>{
if(this.driver__.driver){
driverObj__.moveNext()
}
})
clearInterval(this.generateTime)
clearInterval(this.remGenerateTime)
this.remGenerate = false
this.isGenerate = false
}
}
}
).catch(res=>{
clearInterval(this.generateTime)
clearInterval(this.remGenerateTime)
this.remGenerate = false
this.isGenerate = false
});
},1000)
},
removeGenerate(){
//取消操作
this.isGenerate = false
this.remGenerate = false
clearInterval(this.generateTime)
if(this.generateProceedList){
let str = this.generateProceedList.map((obj:any) => obj.taskId).join(',');
let data = {uniqueId:str,userId:this?.userInfo?.userId,timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone}
Https.axiosGet(Https.httpUrls.generateStopWaiting, {params:data}).then(
(rv) => {
this.generateProceedList = []
}
).catch(res=>{
});
}
},
randomRange(min:any, max:any, num:any) { // min最小值max最大值 num排除的值
let index = Math.floor(Math.random() * (max - min)) + min;
while(index === num){
index = Math.floor(Math.random() * (max - min)) + min;
}
return index
},
generatePrint(){
let data:any = {}
//随机获取图片id
let generage:any = this.$refs.Generate
let generateList = generage.sketchboardList
let isGenerateListChecked = generateList.filter((item:any) => item.checked)
if(!this.moodBoards.length){ //mood没有图片
let index1 = -1
let index2 = -2
if(isGenerateListChecked.length == 0){ //没pin住
index1 = this.randomRange(0, generateList.length, -1)
index2 = this.randomRange(0, generateList.length, index1)
}else if(isGenerateListChecked.lengthh === 1){ //pin住1个
generateList.forEach((element:any,index:number) => {
if(element.checked){
index1 = index
}
});
index2 = this.randomRange(0, generateList.length, index1)
}else{ //pin住多个
let selectIndexList:any = []
generateList.forEach((element:any,index:number) => {
if(element.pin){
selectIndexList.push(index)
}
});
index1 = this.randomRange(0, selectIndexList.length, -1) //pin住的中随机选一个
index2 = this.randomRange(0, generateList.length, selectIndexList[index1]) //除了选中的外再来一个
}
data = {
select1Id:generateList[index1].id,
select2Id:generateList[index2].id
}
}else{
let index1 = this.randomRange(0, this.moodBoards.length, -1)
let index2 = -2
if(isGenerateListChecked.length == 0){ //没pin住
index2 = this.randomRange(0, generateList.length, -1)
}else if(isGenerateListChecked.lengthh === 1){ //pin住1个
generateList.forEach((element:any,index:number) => {
if(element.pin){
index2 = index
}
});
}else{ //pin住多个
let selectIndexList:any = []
generateList.forEach((element:any,index:number) => {
if(element.pin){
selectIndexList.push(index)
}
});
index2 = this.randomRange(0, selectIndexList.length, -1) //pin住的中随机选一个
}
data = {
select1Id:this.moodBoards[index1].resData.id,
select2Id:generateList[index2].id
}
}
data.timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone,
this.loadingShow = true
Https.axiosPost(Https.httpUrls.elementGeneratePrint, data).then((rv) =>{
if(rv){
this.generateList = []
let value = {
id:rv.generateItemId,
imgUrl:rv.generateItemUrl,
id_:GO.id++,
like:rv.isLiked
}
this.generateList.push(value)
this.loadingShow = false
}
}).catch(res=>{
this.loadingShow = false
})
},
scaleImage(index:any){
let scaleImage:any = this.$refs.scaleImage
scaleImage.init(this.generateList,index)
},
generageAdd(item:any){
// if(this.isUseGenerate){
// let data = {
// imgId:item.id,
// imgUrl:item.imgUrl,
// designType:'generate',
// level2Type:'',
// }
// this.setSetchboardGenerate(data)
// }else{
item.type_ = {
type1: "generate",
type2: 'Printboard',
},
item.resData = JSON.parse(JSON.stringify(item))
item.jsContent1 = this.t('uploadFile.jsContent1',{maxImg:8})
this.store.commit("addGenerateMaterialFils", item);
if(this.driver__.driver){
driverObj__.moveNext()
}
// }
scaleImage.init(this.printboardList,index)
},
setSceneList(data:any){
if(this.scene.value === data.value) return
this.scene = data
console.log(data);
let generate:any = this.$refs.Generate
generate.sketchboardList = []
generate.scene = data
this.openMenu = false
},
@@ -1163,7 +706,7 @@ export default defineComponent({
}
.upload_file_item{
margin: 0 calc(2rem*1.2) calc(5rem*1.2) 0;
margin: 0 calc(2rem*1.2) calc(2rem*1.2) 0;
// margin: 0 2rem*1.2) 2rem*1.2) 0;
display: inline-block;
width: calc(10rem*1.2);
@@ -1252,7 +795,7 @@ export default defineComponent({
margin-left: calc(3rem*1.2);
display: flex;
flex-direction: column;
.modal_layout,.modal_accomplish{
.modal_layout{
.modal_text{
font-size: var(--aida-fsize1-4);
font-weight: 400;
@@ -1263,6 +806,7 @@ export default defineComponent({
}
}
.modal_layout{
padding-bottom: 4.8rem;
.modal_img{
width: calc(40rem*1.2);
height: calc(5rem*1.2);
@@ -1326,11 +870,6 @@ export default defineComponent({
padding-top: calc(2rem*1.2);
padding-block: calc(2rem*1.2);
}
.input_box{
input{
}
}
.modal_img{
flex: 1;
display: flex;
@@ -1338,11 +877,17 @@ export default defineComponent({
justify-content: flex-start;
position: relative;
align-content: flex-start;
.modal_imgItem:hover .delete_like_file_block{
// display: block;
opacity: 1;
}
.modal_imgItem{
margin: 0 calc(2rem*1.2) calc(5rem*1.2) 0;
display: inline-block;
width: calc(10rem*1.2);
height: calc(10rem*1.2);
// width: calc(10rem*1.2);
// height: calc(10rem*1.2);
width: 30rem;
height: 30rem;
border: 1px solid #f5f5f5;
position: relative;
cursor: pointer;
@@ -1352,10 +897,7 @@ export default defineComponent({
max-width: 100%;
width: auto;
}
&:hover .delete_like_file_block{
// display: block;
opacity: 1;
}
&.active{
opacity: 0.5;
// border: 2px solid;

View File

@@ -56,14 +56,14 @@
></span>
</div>
</div>
<div
<!-- <div
class="pin_block"
v-show="file?.status === 'done'"
>
<a-checkbox v-model:checked="file.pin"
>{{ $t('SketchboardUpload.PIN') }}</a-checkbox
>
</div>
</div> -->
</div>
<div
class="upload_file_item upload_component"
@@ -114,8 +114,6 @@
ref="Generate"
msg="Sketchboard"
:sketchCatecoryList="sketchCatecoryList"
@generateCheckbox="getgenerateCheckbox"
@setGenerate = setSetchboardGenerate
></Generate>
</div>
<div class="modal_right">
@@ -124,7 +122,7 @@
<div>{{ $t('SketchboardUpload.Thumbnail') }}</div>
<!-- <div class="modal_btn started_btn" @click="layout()">layout</div> -->
</div>
<div class="modal_img modal_img_x" v-mousewheel>
<!-- <div class="modal_img modal_img_x" v-mousewheel>
<div class="mousewheel">
<div class="modal_img_item" v-for="item,index in sketchboardList" :key="item" @click="deleteFile(item)">
<img v-lazy="item.imgUrl">
@@ -134,79 +132,33 @@
</div>
</div>
</div>
</div>
<div v-show="openClick == 3" class="modal_accomplish">
<div class="input_border">
<div class="Guide_1_9_2 input_box" :class="[inputShow?'active':'',driver__.driver?'showEvents':'']">
<div class="input_box_btnBox">
<input class="search_input"
@click="inputFocus()"
@input="ifMaximumLength"
@keydown.enter="getgenerate"
:maxlength='inputShow?0:9999'
:class="{forbidden:generateCheckbox}"
:readonly="generateCheckbox"
:placeholder="$t('PrintboardUpload.inputContent1')"
v-model="captionGeneration">
<i class="icon iconfont icon-xiala" :class="{active:isTextarea,forbidden:generateCheckbox}" @click.stop="setTextareaShow"></i>
</div>
<textarea class="search_textarea" v-show="isTextarea && !generateCheckbox" @input="ifMaximumLength" @keydown.enter="getgenerate" :maxlength='inputShow?0:9999' :class="{forbidden:generateCheckbox}" :readonly="generateCheckbox" v-model="captionGeneration">
</textarea>
<!-- <div class="generage_btn started_btn" @click.stop="getgenerate">{{ $t('PrintboardUpload.Generate') }}</div> -->
<div v-show="!isGenerate" class="generage_btn started_btn" @click.stop="getgenerate">
{{ $t('LibraryPage.Generate') }}
</div>
<div v-show="isGenerate && !remGenerate" class="generage_btn started_btn" @click.stop="getgenerate">
<i class="fi fi-br-loading"></i>
</div>
<div v-show="remGenerate" @click="removeGenerate" class="generage_btn started_btn">
{{$t('Generate.Close')}}
</div>
<span ref="inputShowText"></span>
</div>
<div class="search_keyword" v-show="isInputFocus" @click.stop="">
<div class="search_keyword_center">
<div class="search_keyword_center_left">
<div v-for="item in workspace?.keyWord?.[upload.level1Type]" @click.stop="cliSetKeyword(item.name)" class="search_keyword_center_item"> {{item.name}} </div>
</div>
</div>
</div>
<!-- <div>
<div v-show="!isUseGenerate" @click="setUseGenerate">Printboard</div>
<div v-show="isUseGenerate" @click="setUseGenerate">Generate</div>
</div> -->
</div>
<div class="modal_img" :style="[loadingShow?'overflow:hidden':'']">
<div v-for="item,index in generateList" class="modal_imgItem Guide_1_13_2" :class="[item.status != 'Success'?'hideEvents':'',driver__.driver?'showEvents':'',item?.checked?'active':'']" :key="item">
<!-- <img v-show="item.status != 'Success'" src="@/assets/images/homePage/loading.gif" alt=""> -->
<img v-lazy="item.imgUrl" @click.stop="generageAdd(item)">
<sketchCategory :disignTypeList="sketchCatecoryList" :generateList="generateList" :item="item" :driver__="driver__.driver" :driverClass="{class1: 'Guide_1_13',class2:'Guide_1_13_1'}"></sketchCategory>
<div
<div class="modal_accomplish">
<div class="modal_img">
<div v-for="item,index in sketchboardList" :key="item" class="modal_imgItem Guide_1_2_9" :class="[driver__.driver?'showEvents':'']" >
<img v-lazy="item.imgUrl">
<sketchCategory :disignTypeList="sketchCatecoryList" :generateList="sketchboardList" :item="item" :driver__="driver__.driver"></sketchCategory>
<!-- <div
class="delete_like_file_block left1"
:class="[driver__.driver?'hideEvents':'']"
>
<i v-if="!item.like" class="fi fi-rr-heart" @click.stop="likeFile(item,'like')"></i>
<i v-else class="fi fi-sr-heart" :adminLike="!!item.like" @click.stop="likeFile(item,'noLike')"></i>
</div>
</div> -->
<div class="delete_like_file_block left" :class="[driver__.driver?'hideEvents':'']">
<i class="fi fi-bs-expand-arrows-alt" @click.stop="scaleImage(index)"></i>
</div>
<div class="delete_like_file_block" :title="t('LibraryPage.Delete')" @click.stop="deleteGenerate(index)">
<div class="delete_like_file_block" :title="t('LibraryPage.Delete')" @click.stop="deleteFile(item)">
<span class="icon iconfont icon-shanchu operate_icon"></span>
</div>
<div class="pin_block">
<a-checkbox v-model:checked="item.pin">{{ $t('SketchboardUpload.PIN') }}</a-checkbox>
<a-checkbox v-model:checked="item.pin">{{ $t('PrintboardUpload.PIN') }}</a-checkbox>
</div>
</div>
</div>
<div class="mark_loading" v-show="loadingShow">
<a-spin size="large" />
<div v-show="remGenerate" class="mark_loading_btn" :class="[driver__.driver?'hideEvents':'']" @click="removeGenerate">{{$t('Generate.Close')}}</div>
</div>
</div>
</div>
<scaleImage ref="scaleImage"></scaleImage>
@@ -238,20 +190,13 @@ export default defineComponent({
let fileList: any = ref([
]);
let openClick: any = ref(1);
let generateList:any = ref([
])
let store:any =useStore()
let generateCheckbox:any = ref()
let loadingShow = ref(false)
let isGenerate = ref(false)
let store:any =useStore()
let sketchCatecoryList:any = computed(()=>{
return store.state.Workspace.workspacePosition
})
let workspace:any = ref({})
let inputShow = ref(false)
let inputTime = ref()
let sketchboardList:any = computed(()=>{
return store.state.UploadFilesModule.sketchboard
})
@@ -259,11 +204,6 @@ export default defineComponent({
let driver__:any = inject('driver__')
let isTest = ref()
let userInfo:any = {}
let generateTime:any = ref()
let generateProceedList = ref([])
let remGenerate:any = ref(false)
let remGenerateTime:any = ref()
let isUseGenerate = ref(false)
let useGenerate:any = ref({
imgId : '',
imgUrl:1,
@@ -274,26 +214,15 @@ export default defineComponent({
return {
fileList,
openClick,
generateList,
store,
generateCheckbox,
loadingShow,
isGenerate,
sketchCatecoryList,
workspace,
inputShow,
inputTime,
sketchboardList,
t,
driver__,
isTest,
userInfo,
generateTime,
remGenerate,
generateProceedList,
remGenerateTime,
useGenerate,
isUseGenerate,
};
},
data() {
@@ -314,6 +243,7 @@ export default defineComponent({
token: "",
uploadUrl: "",
captionGeneration:'',
workspaceCom:{},
isTextarea:false,
isInputFocus:false,
};
@@ -362,7 +292,8 @@ export default defineComponent({
}
},
watch:{
workspace(newVal,oldVal){
workspaceCom(newVal,oldVal){
this.workspace = newVal
this.upload.gender = newVal?.sexEnum?.name
},
sketchboardList:{
@@ -392,7 +323,7 @@ export default defineComponent({
let isTest:any = getCookie('isTest')
this.isTest =JSON.parse(isTest)
this.uploadUrl = getUploadUrl();
this.workspace = computed(()=>{
this.workspaceCom = computed(()=>{
return this.store?.state?.Workspace?.workspace
})
if(this.driver__.driver){
@@ -402,25 +333,6 @@ export default defineComponent({
}
},
methods: {
setUseGenerate(){
this.isUseGenerate = !this.isUseGenerate
let sketchMaterialFiles:any = computed(()=>{
return this.store.state.UploadFilesModule.sketchMaterialFiles
})
let Material:any = this.$refs.Material
Material.setUseGenerate(sketchMaterialFiles.value)
if(this.isUseGenerate){
let generate:any = this.$refs.Generate
generate.checkbox.forEach((item:any)=>{
if(item.name == "text-image"){
item.type = true
}else{
item.type = false
}
})
this.generateCheckbox = false
}
},
setSetchboardGenerate(item:any){
this.useGenerate.imgId = item.imgId
this.useGenerate.imgUrl = item.imgUrl
@@ -430,7 +342,6 @@ export default defineComponent({
let generate:any = this.$refs.Generate
if(item.designType == 'collection'){
Material.setUseGenerate([])
}else {
generate.sketchboardList.forEach((item:any) => {
item.checked = false
@@ -454,11 +365,9 @@ export default defineComponent({
},
scaleImage(index:any){
let scaleImage:any = this.$refs.scaleImage
scaleImage.init(this.generateList,index)
},
getgenerateCheckbox(value:any){
this.generateCheckbox = value
scaleImage.init(this.sketchboardList,index)
},
fileUploadChange(data: any) {
let file = data.file;
let bor = true
@@ -528,10 +437,6 @@ export default defineComponent({
message.info(this.t('SketchboardUpload.jsContent3'));
}
return (isJpgOrPng && isLt2M) || Upload.LIST_IGNORE;
},
setTextareaShow(){
if(this.generateCheckbox) return
this.isTextarea = !this.isTextarea
},
cliSetKeyword(value:any){
let str = ''
@@ -540,34 +445,6 @@ export default defineComponent({
}
this.captionGeneration += str + value
},
ifMaximumLength(){
clearTimeout(this.inputTime)
let inputBox = document.getElementsByClassName('sketchboard_upload_modal')[0].getElementsByClassName('input_box')[0]
let input = inputBox.getElementsByClassName('search_input')[0]
this.inputTime = setTimeout(()=>{
// let num1 = ((input as HTMLInputElement).value.match(/ /g) || []).length
// let num2 = (input as HTMLInputElement).value.split(' ').length
if(this.captionGeneration?.split(/\s+/).length > 250){
(this.$refs.inputShowText as any).innerHTML = this.t('SketchboardUpload.maximumLength')
this.inputShow = true
}else{
this.inputShow = false
}
},500)
},
inputFocus(){
if(this.isInputFocus) return
if(this.generateCheckbox) return
this.isInputFocus = true
let setDomCli = ()=>{
this.isInputFocus = false
document.removeEventListener('click',setDomCli)
}
setTimeout(()=>{
document.addEventListener('click',setDomCli)
},200)
},
deleteFile(item: any) {
if(item?.type_?.type1 == 'generate' || item?.type_?.type1 == 'material'){
item.jsContent1 = this.t('uploadFile.jsContent1',{maxImg:20})
@@ -585,51 +462,7 @@ export default defineComponent({
this.store.commit("setSketchboardFile", this.fileList);
}
},
likeFile(item:any,str:string){
if(str == 'like'){
let data = {
generateDetailId:item.id,
level1Type:"Sketchboard",
level2Type: item.category,
gender:this.workspace.sex,
timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone
}
Https.axiosPost(Https.httpUrls.generateLike, data).then(
(rv) => {
item.like = true
}
).catch(res=>{
});
}else{
let data = {
generateDetailId:item.id,
timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone
}
Https.axiosGet(Https.httpUrls.generateDislike, {params:data}).then(
(rv) => {
item.like = false
}
).catch(res=>{
});
}
},
deleteGenerate(index:any){
if(this.isGenerate)return
let _this = this
Modal.confirm({
title: this.t('LibraryPage.jsContent1'),
icon: createVNode(ExclamationCircleOutlined),
okText: 'Yes',
cancelText: 'No',
mask:false,
centered:true,
onOk() {
_this.generateList.splice(index,1)
}
});
},
recollection() {
this.isUseGenerate = false
this.useGenerate = {
imgId : '',
imgUrl:1,
@@ -682,202 +515,6 @@ export default defineComponent({
}
this.store.commit("setSketchboardFile", this.fileList);
},
//发送请求生成图片
getgenerate(){
clearInterval(this.remGenerateTime)
this.remGenerate = false
// this.sketchCatecoryList = this.store.state.Workspace.workspacePosition
let sketchCatecoryList = this.sketchCatecoryList
// if(this.isTest){//试用用户禁止使用
// message.warning(
// this.t('isTest.available')
// );
// return
// }
if(this.isGenerate){
return
}
let generage:any = this.$refs.Generate
let generateType = generage.checkbox.filter((v:any)=>v.type)[0].name
let data = {
generateType:generateType,
// designType:this.useGenerate.designType,
designType:'collection',
collectionElementId:this.useGenerate.imgId,
level1Type:this.upload.level1Type,
level2Type:this.useGenerate.level2Type,
text:this.captionGeneration,
timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone,
userId:this?.userInfo?.userId,
isTestUser:this.driver__.driver?false:this.isTest,
version:1,//为1就是Print
gender:this.workspace.sex,
}
if(generateType == 'image'){
if(this.useGenerate.imgId){
data.text = ''
}else{
message.info(
this.t('PrintboardUpload.jsContent4')
);
return
}
}else if(generateType == 'text'){
data.collectionElementId = ''
data.level2Type = ''
// this.beforeUpload(false)
if(this.captionGeneration){
let arr = this.captionGeneration.split(/\s+/).length
if(arr > 250){
message.info(
this.t('PrintboardUpload.jsContent5')
);
return
}
}else{
message.info(
this.t('PrintboardUpload.jsContent6')
);
return
}
}else if(generateType == 'text-image'){
if(this.useGenerate.imgId){
if(this.captionGeneration){
let arr = this.captionGeneration.split(/\s+/).length
if(arr > 250){
message.info(
this.t('PrintboardUpload.jsContent5')
);
return
}
}else{
message.info(
this.t('PrintboardUpload.jsContent6')
);
return
}
}else{
message.info(
this.t('PrintboardUpload.jsContent4')
);
return
}
}
this.isGenerate = true
Https.axiosPost(Https.httpUrls.generatePrepare, data).then(
(rv) => {
if(data.isTestUser){
if(rv.leftUsageCount >= 1){
message.warning(this.t('Generate.jsContent8',{num:rv.leftUsageCount,str:this.t('collectionModal.Printboard')}));
}else if(rv.leftUsageCount == 0){
message.warning(this.t('Generate.jsContent9',{str:this.t('collectionModal.Printboard')}));
this.isGenerate = false
return
}
}
// rv.uniqueId.forEach((item:any) => {
// let arr:any = {}
// arr.taskId = item
// arr.status = 'execution'
// this.generateList.unshift(arr)
// });
this.setGenerate(rv.uniqueId)
}
).catch(res=>{
this.isGenerate = false
});
},
setGenerate(dataList:any){
let generage:any = this.$refs.Generate
let sketchCatecoryList = this.sketchCatecoryList
let categoryValue:any
let data = dataList
let dataNum = dataList.length
this.remGenerateTime = setTimeout(()=>{
this.remGenerate = true
},10000)
generage.sketchboardList.forEach((item:any) => {
if(item.checked){
categoryValue = item.categoryValue
}
});
this.generateTime = setInterval(()=>{
// let data = this.generateList.filter((item:any)=>item.status != 'Success').map((obj:any) => obj.taskId);
Https.axiosPost(Https.httpUrls.generateResult, data).then(
(rv) => {
if(this.isGenerate){//防止取消后有正在执行的获取状态
this.generateProceedList = rv.filter((item:any)=>item.status != 'Success' && item.status != 'Fail' && item.status != 'Invalid')
rv.forEach((element:any) => {
if(element.status === 'Success'){
element.imgUrl = element.url
element.id_ = GO.id++
this.sketchCatecoryList.forEach((itemCategory:any) => {
if(itemCategory.value == element.category){
element.categoryValue = itemCategory?.name
element.category = itemCategory?.value
}
});
this.generateList.unshift(element)
data = data.filter((item:any) => item !== element.taskId);
}
});
if((data.length == 0)|| (rv.filter((item:any)=>item.status == 'Invalid').length == data.length)){
if(rv.filter((item:any)=>item.status == 'Invalid').length == dataNum){
message.info(this.t('Generate.effectPoor'));
}
nextTick().then(()=>{
if(this.driver__.driver){
driverObj__.moveNext()
}
})
clearInterval(this.generateTime)
clearInterval(this.remGenerateTime)
this.remGenerate = false
this.isGenerate = false
}
}
}
).catch(res=>{
clearInterval(this.generateTime)
clearInterval(this.remGenerateTime)
this.remGenerate = false
this.isGenerate = false
});
},1000)
},
removeGenerate(){
//取消操作
this.isGenerate = false
this.remGenerate = false
clearInterval(this.generateTime)
if(this.generateProceedList){
let str = this.generateProceedList.map((obj:any) => obj.taskId).join(',');
let data = {uniqueId:str,userId:this?.userInfo?.userId,timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone}
Https.axiosGet(Https.httpUrls.generateStopWaiting, {params:data}).then(
(rv) => {
this.generateProceedList = []
}
).catch(res=>{
});
}
},
generageAdd(item:any){
item.type_ = {
type1: "generate",
type2: 'Sketchboard',
},
item.resData = JSON.parse(JSON.stringify(item))
item.jsContent1 = this.t('uploadFile.jsContent1',{maxImg:20})
this.store.commit("addGenerateMaterialFils", item);
nextTick().then(()=>{
if(this.driver__.driver){
driverObj__.moveNext()
}
})
}
},
});
</script>
@@ -963,7 +600,7 @@ export default defineComponent({
.upload_file_item{
margin: 0 calc(2rem*1.2) calc(4rem*1.2) 0;
margin: 0 calc(2rem*1.2) calc(2rem*1.2) 0;
// margin: 0 2rem*1.2) 2rem*1.2) 0;
display: inline-block;
width: calc(10rem*1.2);
@@ -1058,6 +695,7 @@ export default defineComponent({
}
}
.modal_layout{
padding-bottom: 4.8rem;
.modal_img{
width: calc(40rem*1.2);
height: calc(5rem*1.2);
@@ -1144,6 +782,8 @@ export default defineComponent({
display: inline-block;
width: calc(10rem*1.2);
height: calc(10rem*1.2);
width: 30rem;
height: 30rem;
border: 1px solid #f5f5f5;
position: relative;
cursor: pointer;
@@ -1152,7 +792,7 @@ export default defineComponent({
opacity: 1;
}
img{
object-fit: cover;
object-fit: contain;
width: 100%;
height: 100%;
}

View File

@@ -101,6 +101,7 @@ export default defineComponent({
let { t } = useI18n();
let canvas = reactive({});
let scale = 2;
let exportWH = 512
let canvasWH = ref(0);
let textData = reactive({
fill:'#000000',
@@ -143,6 +144,7 @@ export default defineComponent({
let height = canvasBox.offsetHeight;
canvasBox.style.width = height+'px'
canvasWH.value = height
scale = exportWH/canvasWH.value
var canvasDom = document.createElement("canvas");
let oldCanvasDom = canvasBox.querySelector('canvas')
if(oldCanvasDom)canvasBox.removeChild(oldCanvasDom); // 清空原有内容

View File

@@ -0,0 +1,500 @@
<template>
<a-modal
class="productImg_modal generalModel"
v-model:visible="productImg"
:footer="null"
width="78%"
:maskClosable="false"
:centered="true"
:closable="false"
:mask="productImgMask"
:keyboard="false"
:destroyOnClose="true"
>
<div class="generalModel_btn">
<div class="generalModel_closeIcon" @click.stop="cancelDsign()">
<i class="fi fi-rr-cross-small"></i>
</div>
</div>
<div class="productImg_content">
<div class="modal_title_text">
<div>Finalize</div>
<div class="modal_title_text_intro"></div>
</div>
<div class="productImg_content_bottom">
<div class="productImg_left">
<div class="productImg_content_item_title">Select Collection</div>
<div class="productImg_content_item_imgBox generalScroll" v-mousewheel>
<div class="content_item_imgBox_itemImg" v-for="item in likeDesignCollectionList" :key="item.id" >
<img v-lazy="item.designOutfitUrl" alt="">
</div>
</div>
<div class="productImg_content_item_title">Up Load</div>
<div class="productImg_content_item_imgBox generalScroll upload_item" v-mousewheel>
<div class="upload_file_item" v-for="(file, index) in fileList" :key="file">
<div class="upload_file_item_content" v-show="file?.status === 'uploading'" >
<a-spin
:indicator="indicator"
tip="Uploading..."
/>
</div>
<div
class="upload_file_item_content content_item_imgBox_itemImg"
v-show="file?.status === 'done'"
>
<img :src="file?.imgUrl" class="upload_img" />
<div class="content_item_imgBox_itemImg_delete" @click="deleteFile(index)">
<i class="fi fi-rr-trash"></i>
</div>
</div>
</div>
<div class="upload_file_item upload_component ">
<!-- :action="uploadUrl + '/api/history/toProductImageElementUpload'" -->
<a-upload
:action="uploadUrl + '/api/element/upload'"
list-type="picture-card"
:capture="null"
:data="{
...upload,
}"
:headers="{ Authorization: token }"
:before-upload="beforeUpload"
v-model:file-list="fileList"
:multiple="true"
:maxCount="8"
accept=".jpg,.png,.jpeg,.bmp"
@change="(file) => fileUploadChange(file)"
>
<div
class="upload_tip_block"
>
<i class="fi fi-br-upload"></i>
<!-- <img class="upload_img_icon" src="@/assets/images/homePage/add_file.png"> -->
</div>
</a-upload>
</div>
</div>
<div class="productImg_content_item_title">Magic Tools</div>
</div>
<div class="productImg_right">
<div class="productImg_content_item_title">Selected Product</div>
<div class="productImg_right_item_box generalScroll" v-mousewheel>
<div class="productImg_right_item" v-for="item,index in generateList" :key="item">
<img v-lazy="item.url" alt="">
<div class="productImg_right_item_like">
<i class="fi fi-rr-heart" @click.stop="likeFile(item,'like',index)"></i>
</div>
</div>
</div>
<div class="productImg_content_item_title productImg_right_titleBtn">
Selected Product
<div class="button_second">Export</div>
</div>
<div class="productImg_right_item_box generalScroll" v-mousewheel>
<div class="productImg_right_item" v-for="item,index in likeList" :key="item">
<img v-lazy="item.url" alt="">
<div class="productImg_right_item_like">
<i class="fi fi-sr-heart" @click.stop="likeFile(item,'noLike',index)"></i>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="mark_loading" v-show="isShowMark">
<a-spin size="large" />
</div>
<ExportModel ref="ExportModel" @setTask="setTask"></ExportModel>
</a-modal>
</template>
<script lang="ts">
import { LoadingOutlined } from "@ant-design/icons-vue";
import { defineComponent,watch,createVNode, h, ref ,toRefs,computed,reactive,triggerRef, nextTick} from "vue";
// import { getCookie } from "@/tool/cookie";
import { Https } from "@/tool/https";
import { getCookie,setCookie } from "@/tool/cookie";
// import domTurnImg from '@/tool/domTurnImg'
import { getUploadUrl,isMoible } from "@/tool/util";
import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
import { Upload,message,Modal } from 'ant-design-vue';
import { downloadIamge } from "@/tool/util";
import { useI18n } from "vue-i18n";
import ExportModel from "@/component/HomePage/ExportModel.vue";
import { useStore } from "vuex";
export default defineComponent({
components:{
ExportModel,
},
setup(props,{emit}) {
const store = useStore();
const {t} = useI18n()
let productImg: any = ref(false);//弹窗
let productImgMask:any = ref(false)//弹窗遮罩
let productImgData:any = reactive({
isShowMark:false,
fileList:[],
generateList:[
{
url:'https://www.minio.aida.com.hk:9000/aida-results/result_ebc01b0e-1c13-11ef-b404-0242ac120002.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20240531%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240531T080213Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=0f4b856a1246dd2d1076c69b220833c9c27b349f9a2f30cf036cf59339ce9679',
id:2,
}
],
likeList:[
{
url:'https://www.minio.aida.com.hk:9000/aida-results/result_ebc01b0e-1c13-11ef-b404-0242ac120002.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20240531%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240531T080213Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=0f4b856a1246dd2d1076c69b220833c9c27b349f9a2f30cf036cf59339ce9679',
id:1,
},{
url:'https://www.minio.aida.com.hk:9000/aida-results/result_ebc01b0e-1c13-11ef-b404-0242ac120002.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20240531%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240531T080213Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=0f4b856a1246dd2d1076c69b220833c9c27b349f9a2f30cf036cf59339ce9679',
id:1,
},{
url:'https://www.minio.aida.com.hk:9000/aida-results/result_ebc01b0e-1c13-11ef-b404-0242ac120002.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20240531%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240531T080213Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=0f4b856a1246dd2d1076c69b220833c9c27b349f9a2f30cf036cf59339ce9679',
id:1,
},{
url:'https://www.minio.aida.com.hk:9000/aida-results/result_ebc01b0e-1c13-11ef-b404-0242ac120002.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20240531%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240531T080213Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=0f4b856a1246dd2d1076c69b220833c9c27b349f9a2f30cf036cf59339ce9679',
id:1,
},{
url:'https://www.minio.aida.com.hk:9000/aida-results/result_ebc01b0e-1c13-11ef-b404-0242ac120002.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20240531%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240531T080213Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=0f4b856a1246dd2d1076c69b220833c9c27b349f9a2f30cf036cf59339ce9679',
id:1,
},{
url:'https://www.minio.aida.com.hk:9000/aida-results/result_ebc01b0e-1c13-11ef-b404-0242ac120002.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20240531%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240531T080213Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=0f4b856a1246dd2d1076c69b220833c9c27b349f9a2f30cf036cf59339ce9679',
id:1,
},{
url:'https://www.minio.aida.com.hk:9000/aida-results/result_ebc01b0e-1c13-11ef-b404-0242ac120002.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20240531%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240531T080213Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=0f4b856a1246dd2d1076c69b220833c9c27b349f9a2f30cf036cf59339ce9679',
id:1,
},{
url:'https://www.minio.aida.com.hk:9000/aida-results/result_ebc01b0e-1c13-11ef-b404-0242ac120002.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20240531%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240531T080213Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=0f4b856a1246dd2d1076c69b220833c9c27b349f9a2f30cf036cf59339ce9679',
id:1,
},{
url:'https://www.minio.aida.com.hk:9000/aida-results/result_ebc01b0e-1c13-11ef-b404-0242ac120002.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20240531%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240531T080213Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=0f4b856a1246dd2d1076c69b220833c9c27b349f9a2f30cf036cf59339ce9679',
id:1,
},{
url:'https://www.minio.aida.com.hk:9000/aida-results/result_ebc01b0e-1c13-11ef-b404-0242ac120002.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20240531%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240531T080213Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=0f4b856a1246dd2d1076c69b220833c9c27b349f9a2f30cf036cf59339ce9679',
id:1,
},{
url:'https://www.minio.aida.com.hk:9000/aida-results/result_ebc01b0e-1c13-11ef-b404-0242ac120002.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20240531%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240531T080213Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=0f4b856a1246dd2d1076c69b220833c9c27b349f9a2f30cf036cf59339ce9679',
id:1,
},{
url:'https://www.minio.aida.com.hk:9000/aida-results/result_ebc01b0e-1c13-11ef-b404-0242ac120002.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20240531%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240531T080213Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=0f4b856a1246dd2d1076c69b220833c9c27b349f9a2f30cf036cf59339ce9679',
id:1,
},{
url:'https://www.minio.aida.com.hk:9000/aida-results/result_ebc01b0e-1c13-11ef-b404-0242ac120002.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20240531%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240531T080213Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=0f4b856a1246dd2d1076c69b220833c9c27b349f9a2f30cf036cf59339ce9679',
id:1,
},
],
})
let likeDesignCollectionList: any = computed(() => {
return store.state.HomeStoreModule.likeDesignCollectionList;
});
let init = ()=>{
productImg.value = true
console.log(likeDesignCollectionList);
}
let cancelDsign = ()=>{
Modal.confirm({
title: 'Your changes will be lost if you navigate away from this page. Are you sure you want to leave this page?',
icon: createVNode(ExclamationCircleOutlined),
okText: 'Yes',
cancelText: 'No',
mask:false,
centered:true,
onOk() {
cleardata()
}
});
}
let cleardata = ()=>{
productImg.value = false
productImgData.isShowMark = false
}
let fileUploadChange = (data: any)=> {
let file = data.file;
let bor = true
if (file.status === "done") {
let res = JSON.parse(file.xhr.response);
if(res.errCode == 0){
file.imgUrl = res.data.url;
// file.type_ = {
// type1:'upload',
// type2:'Moodboard'
// };
file.id = res.data.id
productImgData.fileList.filter((v: any) => v.status === "done");
}else{
bor = false
}
// this.showFileList = productImgData.fileList
} else if (file.status === "error") {
bor = false
}
}
let beforeUpload = (file: any)=>{
const isJpgOrPng =
file.type === "image/jpeg" ||
file.type === "image/png" ||
file.type === "image/jpg" ||
file.type === "image/bmp";
if (!isJpgOrPng) {
message.info(useI18n().t('MoodboardUpload.jsContent3'));
}
const isLt2M = file.size / 1024 / 1024 < 2;
if (!isLt2M) {
message.info(useI18n().t('MoodboardUpload.jsContent4'));
}
return (isJpgOrPng && isLt2M) || Upload.LIST_IGNORE;
}
let deleteFile = (index:any)=>{
productImgData.fileList.splice(index,1)
}
let likeFile = (item:any,str:any,index:any) =>{
if(str == 'like'){
productImgData.likeList.push(item)
productImgData.generateList.splice(index,1)
}else{
productImgData.generateList.push(item)
productImgData.likeList.splice(index,1)
}
}
let setExport = ()=>{
// let exportModel:any = this.$refs.ExportModel
// exportModel.init()
}
let setTask = (data:any)=>{
emit('setTask',data)
}
return {
productImg,
productImgMask,
...toRefs(productImgData),
likeDesignCollectionList,
init,
cancelDsign,
fileUploadChange,
beforeUpload,
deleteFile,
likeFile,
setExport,
setTask,
};
},
directives:{
mousewheel:{
mounted (el) {
el.addEventListener('wheel',(e:WheelEvent)=>{
let num = 0
if(e.deltaY > 0){
num = 25
}else{
num = -25
}
el.scrollBy(num, 0);
},{ passive: true })
}
},
},
data() {
return {
indicator: h(LoadingOutlined, {
style: {
fontSize: "2.4rem",
},
spin: true,
}),
// moodTemplateId: "", //模板id
token: "",
uploadUrl: "",
upload: {
isPin: 0,
gender:'',
level1Type: "Moodboard",
timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,
},
};
},
mounted() {
this.token = getCookie("token") || "";
this.uploadUrl = getUploadUrl();
},
methods: {
// init(list:any,index:any,dialogueIndex:any){
// },
// cancelDsign(){
// this.productImg = false
// // this.productImgList = []
// // this.productImgIndex = 0
// },
// download(){
// // downloadIamge(this.productImgList[this.productImgIndex].imgUrl)
// },
// setScaleImageIndex(index:any){
// // this.productImgIndex = index
// // console.log(this.productImgIndex);
// },
// LikeFile(item:any,str:string){
// let parent:any = this.$parent
// parent.likeFile(item,str)
// },
},
});
</script>
<style lang="less">
.productImg_modal {
.productImg_page{
overflow-y: auto;
height: 100%;
&.productImg_page::-webkit-scrollbar{display: none;}
}
.productImg_content{
display: flex;
flex-direction: column;
height: 100%;
.modal_title_text{
height: 4rem;
}
}
.productImg_content_bottom{
height: calc(100% - 4rem - 2.4rem);
--border-color: #c4c4c4;
display: flex;
justify-content: space-between;
flex: 1;
.upload_item{
}
.upload_file_item{
display: flex;
margin-right: 1rem;
&.upload_file_item:last-child{
margin-right: 0rem;
}
}
.productImg_content_item_title{
font-weight: 600;
font-size: 1.8rem;
margin-bottom: 1rem;
}
.productImg_content_item_intro{
font-size: 1.4rem;
}
.productImg_content_item_imgBox{
display: flex;
overflow-x: auto;
width: auto;
margin-bottom: 2rem;
align-items: center;
.content_item_imgBox_itemImg{
display: flex;
margin-right: 1rem;
position: relative;
height: 12rem;
img{
width: 100%;
object-fit: contain;
}
&.content_item_imgBox_itemImg:hover{
.content_item_imgBox_itemImg_delete{
display: block;
cursor: pointer;
}
}
.content_item_imgBox_itemImg_delete{
display: none;
width: 100%;
height: 100%;
background: rgba(0,0,0,.2);
position: absolute;
i{
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%,-50%);
color: #fff;
}
}
}
.content_item_imgBox_itemImg:last-child{
margin-right: 0;
}
}
.productImg_left,.productImg_right{
display: flex;
flex-direction: column;
}
.productImg_content_item:last-child{
margin-bottom: 0;
}
.productImg_left{
width: 25%;
// width: 45%;
.productImg_content_item_imgBox{
.content_item_imgBox_itemImg{
width: 5rem;
flex-shrink: 0;
}
}
}
.productImg_right{
width: 75%;
padding-left: 2rem;
height: 100%;
justify-content: space-between;
.productImg_right_item_box{
height: 40%;
display: flex;
overflow-x: auto;
background: #f6f6fa;
border-radius: 2rem;
margin-bottom: 2%;
padding: 0 1.5rem;
.productImg_right_item{
height: 100%;
padding: 1rem 0;
margin-right: 1rem;
position: relative;
img{
height: 100%;
}
.productImg_right_item_like{
display: none;
position: absolute;
top: 1rem;
right: 2rem;
cursor: pointer;
.fi-sr-heart{
color: red;
}
}
}
.productImg_right_item:hover{
.productImg_right_item_like{
display: block;
}
}
.productImg_right_item:last-child{
margin-right: 0;
}
}
.productImg_right_item_box:last-child{
margin-bottom: 0;
}
.productImg_right_titleBtn{
display: flex;
justify-content: space-between;
}
}
}
}
</style>

View File

@@ -34,7 +34,7 @@
cate, index
) in disignTypeList"
:key="index"
@click="
@click.stop="
selectFileCategory(
item,
cate

View File

@@ -0,0 +1,337 @@
<template>
<div class="Falls">
<div class="falls_item" v-fadeIn="isScroll" v-for="item in list" :key="item.id"
:style="{
width: item.style.width + 'px',
height: item.style.height + 'px',
top: item.style.top + 'px',
left: item.style.left + 'px',
}"
>
<!-- 图片 -->
<div class="falls_item_img">
<img
v-lazy="item.designPythonOutfitUrl"
:style="{
height: item.style.imgHeihgt + 'px',
}"
/>
</div>
<!-- 文字 -->
<div class="falls_item_bottom">
<div class="falls_item_text" :title="item.text">
{{item.text}}
</div>
<div class="falls_item_content">
<div class="falls_item_user">
<img src="http://121.40.53.210:3000/falls/5.png" alt="">
<div class="falls_item_user_detail">
<div>{{item.name}}</div>
<span>地区</span>
</div>
</div>
<div class="falls_item_detail">
<div>
<svg xmlns="http://www.w3.org/2000/svg" width="2.5rem" height="2.5rem" viewBox="0 0 16 16" fill="none" role="img" :style="{color:'#9e9ea7',fill: 'currentColor'}">
<path d="M10.7408 2C13.0889 2 14.6667 4.235 14.6667 6.32C14.6667 10.5425 8.11856 14 8.00004 14C7.88152 14 1.33337 10.5425 1.33337 6.32C1.33337 4.235 2.91115 2 5.2593 2C6.60745 2 7.48893 2.6825 8.00004 3.2825C8.51115 2.6825 9.39263 2 10.7408 2Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span>321</span>
</div>
<div>
<i v-if="true" class="fi fi-sr-thumbs-up" style="color:rgba(158, 158, 167);"></i>
<i v-else class="fi fi-rr-social-network"></i>
<span>321</span>
</div>
<div>
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none" role="img" style="color: #9e9ea7;fill: currentColor;">
<path d="M8 3C4.36992 3 1.98789 6.21774 1.18763 7.49059C1.09079 7.64462 1.04237 7.72163 1.01527 7.84042C0.99491 7.92964 0.99491 8.07036 1.01527 8.15958C1.04237 8.27837 1.09079 8.35539 1.18763 8.50941C1.98789 9.78226 4.36992 13 8 13C11.6301 13 14.0121 9.78226 14.8124 8.50941L14.8124 8.50939C14.9092 8.35538 14.9576 8.27837 14.9847 8.15958C15.0051 8.07036 15.0051 7.92964 14.9847 7.84042C14.9576 7.72163 14.9092 7.64462 14.8124 7.4906L14.8124 7.49059C14.0121 6.21774 11.6301 3 8 3Z" fill="currentColor"></path>
<path d="M8 10C9.10457 10 10 9.10457 10 8C10 6.89543 9.10457 6 8 6C6.89543 6 6 6.89543 6 8C6 9.10457 6.89543 10 8 10Z" fill="white"></path>
</svg>
<span>321</span>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import { defineComponent,h ,toRefs,ref,reactive,onMounted,onBeforeDestroy,nextTick,provide,computed} from 'vue'
import { gsap, TweenMax } from "gsap";
import { ScrollTrigger } from "gsap/ScrollTrigger";
export default defineComponent({
props:{
isScroll:{
type:Boolean,
default:true,
},
},
setup(){
let list = ref([])
let wait_list = ref([])
let width = ref(300)
let num_x = ref(1)
let gap_x = ref(0)
let gap_y = ref(0)
let poss = ref([])
let loading = ref(false)
let computedHeight = 0
return{
list,
wait_list,
width,
num_x,
gap_x,
gap_y,
poss,
loading,
computedHeight,
}
},
directives:{
fadeIn:{
mounted (el,binding) {
let dom
if(binding.value){
dom = document.querySelector('.works_page .page_content')
}else{
dom = document.querySelector('.homeRecommend_content_body')
}
gsap.registerPlugin(ScrollTrigger);
let tl1 = gsap.timeline();
tl1.from(el,1, {y:'30px',opacity:0},)
ScrollTrigger.create({
trigger: el, // 触发器元素
start: "top 90%", // 滚动触发器的起始滚动位置
end: '100% 80%', // 滚动触发器的结束滚动位置
// markers: true, // 开启标注功能
scrub: true,
animation:tl1,
scroller:dom,//设置指定元素为滚动依据
scrub:2,
// onUpdate:(v)=>{
// if(v.progress < 0.1){
// v.trigger?.classList.remove('active')
// }else{
// v.trigger?.classList.add('active')
// // v.trigger?.classList.add('active')
// }
// }
});
}
},
},
mounted () {
this.resize()
window.addEventListener("resize", this.resize);
let domFalls = document.querySelector('.Falls')
let domCss = getComputedStyle(domFalls);
const paddingBottom = domCss.getPropertyValue('--paddingBottom').split('px')[0]*1;
const textMarginTop = domCss.getPropertyValue('--textMarginTop').split('px')[0]*1;
const textHeight = domCss.getPropertyValue('--textHeight').split('px')[0]*1;
const contentHeight = domCss.getPropertyValue('--contentHeight').split('px')[0]*1;
this.computedHeight = paddingBottom + textMarginTop + textHeight + contentHeight;
},
beforeDestroy () {
this.wait_list = []
window.removeEventListener("resize", this.resize);
},
// 挂载方法
methods: {
push(arr) {
this.wait_list = this.wait_list.concat(arr);
if (!this.loading) {
this.loading = true;
this.loadImg();
}
},
loadImg() {
if (this.wait_list.length <= 0) {
this.loading = false;
this.$emit("loadend");
return;
}
let url = this.wait_list[0].designPythonOutfitUrl;
let data = this.wait_list[0]
let img = document.createElement("img");
img.src = url;
img.style.width = this.width + "px";
img.style.maxHeight = this.width+330 + "px";
img.style.position = "absolute";
img.style.top = "-99999px";
document.body.appendChild(img);
img.addEventListener("load", () => {
var idx = 0;
var pos_num = this.poss[idx];
for (var i = 1; i < this.poss.length; i++) {
if (pos_num > this.poss[i]) {
idx = i;
pos_num = this.poss[i];
}
}
let width = img.offsetWidth;
let height = img.offsetHeight+this.computedHeight;
let top = this.poss[idx] + this.gap_y;
let left = (idx + 1) * this.gap_x + idx * width;
let imgHeight = height - this.computedHeight
this.poss[idx] = top + height;
let obj = {
designPythonOutfitUrl:url,
style: { width, height, top, left, imgHeight },
...data
};
this.list.push(obj);
img.remove();
this.wait_list.splice(0, 1);
this.$el.style.height =
Math.max(...this.poss) + this.gap_y + "px";
if (this.wait_list.length <= 0) {
this.loading = false;
this.$emit("loadend");
} else {
this.loadImg();
}
});
},
resize() {
var t_width = this.$el.offsetWidth;
var width = this.width;
var num_x = parseInt(t_width / (width + 20));
if (num_x < 1) num_x = 1;
var remain = t_width - width * num_x;
var gap_x = remain / (num_x + 1);
this.gap_x = gap_x;
this.gap_y = gap_x > 30 ? 30 : gap_x;
this.num_x = num_x;
var poss = [];
for (var i = 0; i < num_x; i++) poss.push(0);
this.poss = poss;
this.reset();
},
reset() {
for (let i = 0; i < this.list.length; i++) {
let width = this.list[i].style.width;
let height = this.list[i].style.height;
var idx = 0;
var pos_num = this.poss[idx];
for (var j = 1; j < this.poss.length; j++) {
if (pos_num > this.poss[j]) {
idx = j;
pos_num = this.poss[j];
}
}
let top = this.poss[idx] + this.gap_y;
let left = (idx + 1) * this.gap_x + idx * width;
this.poss[idx] = top + height;
this.list[i].style = { width, height, top, left };
}
this.$el.style.height = Math.max(...this.poss) + this.gap_y + "px";
},
},
})
</script>
<style lang='less' scoped>
.Falls {
width: 100%;
height: auto;
position: relative;
--paddingBottom:10px;
--textMarginTop:10px;
--textHeight:25px;
--contentHeight:35px;
.falls_item{
position: absolute;
transition: all 0.15s;
display: flex;
flex-direction: column;
background: #fff;
border-radius: 2rem;
overflow: hidden;
padding-bottom: var(--paddingBottom);
&.falls_item:hover{
.falls_item_img{
img{
transform: scale(1.1);
}
}
}
.falls_item_img{
cursor: pointer;
width: 100%;
overflow: hidden;
img{
width: 100%;
object-fit: cover;
transition: all .3s;
}
}
.falls_item_bottom{
padding: 0 10px;
.falls_item_text{
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
font-weight: 600;
font-size: 18px;
margin-top: var(--textMarginTop);
height: var(--textHeight);
}
.falls_item_content{
display: flex;
justify-content: space-between;
align-items: center;
color: #525252;
height: var(--contentHeight);
.falls_item_user{
width: 50%;
display: flex;
align-items: center;
img{
width: 25px;
height: 25px;
border-radius: 50%;
margin-right: 10px;
}
.falls_item_user_detail{
line-height: 1;
width: 60%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
color: #000;
div{
font-size: 16px;
}
span{
font-size: 12px;
color: #525252;
}
}
}
.falls_item_detail{
display: flex;
width: 40%;
justify-content: space-between;
>div{
svg,i{
width: 10px;
height: 10px;
}
span{
margin-left: 3px;
font-size: 12px;
}
}
}
}
}
}
}
</style>

View File

@@ -10,8 +10,12 @@ const routes: Array<RouteRecordRaw> = [
{
path: "/",
// redirect重定向
redirect: "/login"
// redirect: "/login"
// redirect: "/upgrade"
name: "HomeRecommend",
component: _import('HomeRecommend'),
children:[]
},
{
path: '/login',
@@ -36,6 +40,7 @@ const routes: Array<RouteRecordRaw> = [
children:[
{
path: "",
name:'""',
redirect: "home/homePage"
},
{

View File

@@ -1,22 +1,31 @@
import {Module} from 'vuex'
import {RootState} from '../index'
import { Https } from "@/tool/https";
interface DesignDetail{
interface UserHabit{
clothingType:any,
credits:any,
// devise:any,
// deviseType:any,
// system_per:any,
// model:any,
printType:any,
designElementsType:any,
FemalePosition:any,
MalePosition:any,
Position:any,
}
const HomeStoreModule : Module<DesignDetail,RootState> = {
const userHabit : Module<UserHabit,RootState> = {
state:{
clothingType:[],
credits:{
value:0
},
printType:[],
designElementsType:[],
FemalePosition:[],
MalePosition:[],
Position:[],
},
mutations:{
res_clothingType(state,data){
@@ -25,6 +34,25 @@ const HomeStoreModule : Module<DesignDetail,RootState> = {
setCredits(state,data){
state.credits.value = data
},
setPrintType(state,data){
state.printType = data
},
setDesignElementsType(state,data){
state.designElementsType = data
},
setFemalePosition(state,data){
state.FemalePosition = data
},
setMalePosition(state,data){
state.MalePosition = data
},
setPosition(state,data){
if(data == 'Female'){
state.Position = state.FemalePosition
}else{
state.Position = state.MalePosition
}
},
},
actions:{
@@ -54,9 +82,51 @@ const HomeStoreModule : Module<DesignDetail,RootState> = {
resolve(true)
});
})
},
getLangType(context){
Https.axiosGet(Https.httpUrls.workspaceenumValues,{params:{enumName:'DesignElementsEnum'}}).then((rv: any) => {
if (rv) {
rv.forEach((item:any) => {
let name = item.name
item.name = item.value
item.value = name
});
context.commit('setDesignElementsType',rv)
}
})
Https.axiosGet(Https.httpUrls.workspaceenumValues,{params:{enumName:'PrintboardLevel2TypeEnum'}}).then((rv: any) => {
if (rv) {
rv.forEach((item:any) => {
let name = item.name
item.name = item.value
item.value = name
});
context.commit('setPrintType',rv)
}
})
Https.axiosGet(Https.httpUrls.workspaceenumValues,{params:{enumName:'FemalePosition'}}).then((rv: any) => {
if (rv) {
rv.forEach((item:any) => {
let name = item.name
item.name = item.value
item.value = name
});
context.commit('setFemalePosition',rv)
}
})
Https.axiosGet(Https.httpUrls.workspaceenumValues,{params:{enumName:'MalePosition'}}).then((rv: any) => {
if (rv) {
rv.forEach((item:any) => {
let name = item.name
item.name = item.value
item.value = name
});
context.commit('setMalePosition',rv)
context.commit('setPosition','MalePosition')
}
})
}
}
}
export default HomeStoreModule
export default userHabit

View File

@@ -208,6 +208,8 @@ export default defineComponent({
}
this.getCredits()
this.getLang('')
//语言适配
this.store.dispatch('getLangType')
},
methods: {
setTask(data){
@@ -394,13 +396,15 @@ export default defineComponent({
.homeMain_max{
position: relative;
display: flex;
height: 100%;
height: 100vh;
flex-direction: column;
.homeMain_content_body{
flex: 1;
height: calc(100vh - 7rem);
}
}
.homeMain_heade {
flex-shrink: 0;
display: flex;
justify-content: space-between;
// padding: 0 30px;

376
src/views/HomeRecommend.vue Normal file
View File

@@ -0,0 +1,376 @@
<template>
<div class="homeRecommend_max Guide_1_16_1">
<header class="homeRecommend_heade">
<div class="homeRecommend_right_content">
<div class="homeRecommend_user_content">
<img
class="homeRecommend_logo"
@click="turnToNewPage('https://www.aidlab.hk/en/')"
src="@/assets/images/loginPage/aida_logo.png"
/>
</div>
</div>
<div class="homeRecommend_right">
<div class="started_btn" @click="setLogin">登录</div>
<div class="started_btn started_btn2">注册</div>
</div>
</header>
<div class="homeRecommend_content_body">
<div class="homeRecommend_content_body_recommend" id="aaaa">
<div class="content_body_recommend_left">
<img class="content_body_img1 content_body_img" src="https://www.minio.aida.com.hk:9000/aida-users/83/print/a62e60ac-f588-11ee-a728-0242ac160004_0.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20240530%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240530T021835Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=79c44f3b98ec7efa46c8b64050aa9c6ef58e7ec9b7944328492b51b7f249a1e8" alt="">
<img class="content_body_img2 content_body_img" src="https://www.minio.aida.com.hk:9000/aida-users/83/print/a62e60ac-f588-11ee-a728-0242ac160004_0.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20240530%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240530T021835Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=79c44f3b98ec7efa46c8b64050aa9c6ef58e7ec9b7944328492b51b7f249a1e8" alt="">
<img class="content_body_img3 content_body_img" src="https://www.minio.aida.com.hk:9000/aida-users/83/print/a62e60ac-f588-11ee-a728-0242ac160004_0.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20240530%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240530T021835Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=79c44f3b98ec7efa46c8b64050aa9c6ef58e7ec9b7944328492b51b7f249a1e8" alt="">
<img class="content_body_img4 content_body_img" src="https://www.minio.aida.com.hk:9000/aida-users/83/print/a62e60ac-f588-11ee-a728-0242ac160004_0.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20240530%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240530T021835Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=79c44f3b98ec7efa46c8b64050aa9c6ef58e7ec9b7944328492b51b7f249a1e8" alt="">
<img class="content_body_img5 content_body_img" src="https://www.minio.aida.com.hk:9000/aida-users/83/print/a62e60ac-f588-11ee-a728-0242ac160004_0.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20240530%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240530T021835Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=79c44f3b98ec7efa46c8b64050aa9c6ef58e7ec9b7944328492b51b7f249a1e8" alt="">
</div>
<div class="content_body_recommend_center content_body_text">
<div class="content_body_recommend_center_title">
<h1>全球<div>最佳创作者</div>齐聚AIDA</h1>
</div>
<div class="content_body_recommend_center_btn">
<a class="started_btn" href="https://code-create.com.hk/aida/" target="_blank">立即购买</a>
<a class="started_btn" href="https://code-create.com.hk/aida-trial/" target="_blank">立即试用</a>
</div>
</div>
<div class="content_body_recommend_right">
<img class="content_body_img1 content_body_img" src="https://www.minio.aida.com.hk:9000/aida-users/83/print/a62e60ac-f588-11ee-a728-0242ac160004_0.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20240530%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240530T021835Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=79c44f3b98ec7efa46c8b64050aa9c6ef58e7ec9b7944328492b51b7f249a1e8" alt="">
<img class="content_body_img2 content_body_img" src="https://www.minio.aida.com.hk:9000/aida-users/83/print/a62e60ac-f588-11ee-a728-0242ac160004_0.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20240530%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240530T021835Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=79c44f3b98ec7efa46c8b64050aa9c6ef58e7ec9b7944328492b51b7f249a1e8" alt="">
<img class="content_body_img3 content_body_img" src="https://www.minio.aida.com.hk:9000/aida-users/83/print/a62e60ac-f588-11ee-a728-0242ac160004_0.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20240530%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240530T021835Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=79c44f3b98ec7efa46c8b64050aa9c6ef58e7ec9b7944328492b51b7f249a1e8" alt="">
<img class="content_body_img4 content_body_img" src="https://www.minio.aida.com.hk:9000/aida-users/83/print/a62e60ac-f588-11ee-a728-0242ac160004_0.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20240530%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240530T021835Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=79c44f3b98ec7efa46c8b64050aa9c6ef58e7ec9b7944328492b51b7f249a1e8" alt="">
<img class="content_body_img5 content_body_img" src="https://www.minio.aida.com.hk:9000/aida-users/83/print/a62e60ac-f588-11ee-a728-0242ac160004_0.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20240530%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240530T021835Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=79c44f3b98ec7efa46c8b64050aa9c6ef58e7ec9b7944328492b51b7f249a1e8" alt="">
</div>
</div>
<Works :isScroll="false"></Works>
</div>
<div class="homeRecommend_content_adminTop" @click="setAdminUp">
<i class="fi fi-rr-arrow-small-up"></i>
</div>
</div>
</template>
<script >
import { defineComponent, createVNode, ref , nextTick } from "vue";
import { isEmail } from "@/tool/util";
import { setCookie, getCookie, WriteCookie,clonAllCookie } from "@/tool/cookie";
import VerificationCodeInput from "@/component/LoginPage/verificationCodeInput.vue";
import Habit from "@/component/Detail/habit.vue";
import { Https } from "@/tool/https";
import { Modal, message } from "ant-design-vue";
import { ExclamationCircleOutlined } from "@ant-design/icons-vue";
import Works from "@/views/HomeView/Works.vue";
import { useStore } from "vuex";
import { setLang } from "@/tool/guide";
import { useI18n } from "vue-i18n";
import { useRouter } from 'vue-router';
import { gsap, TweenMax } from "gsap";
import { ScrollTrigger } from "gsap/ScrollTrigger";
export default defineComponent({
components: {
VerificationCodeInput,
Habit,
Works,
},
setup(){
const store = useStore();
const router = useRouter();
let setLogin = ()=>{
router.push("/login");
}
let setAdminUp = ()=>{
let scrollDom = document.querySelector('.homeRecommend_content_body')
scrollDom.scrollTo({
top: 0,
behavior: 'smooth' // 平滑滚动到顶部
});
}
return {
setLogin,
setAdminUp,
}
},
data() {
return {
};
},
watch: {
// credits.value(newVal,oldVal){
// console.log(String(newVal).length);
// }
},
mounted() {
nextTick().then(()=>{
let dom = document.querySelector('.homeRecommend_content_body')
let codeTween = document.querySelectorAll('.homeRecommend_content_body_recommend .content_body_img')
let codeTweenText = document.querySelectorAll('.homeRecommend_content_body_recommend .content_body_text')
for (let index = 0; index < codeTween.length; index++) {
gsap.from(codeTween[index],.5, {scale:.6 },);
gsap.registerPlugin(ScrollTrigger);
let tl1 = gsap.timeline();
tl1.to(codeTween[index],1, {y:'-30px',opacity:0},)
ScrollTrigger.create({
trigger: codeTween[index], // 触发器元素
start: "top 0%", // 滚动触发器的起始滚动位置
end: '200% 20%', // 滚动触发器的结束滚动位置
// markers: true, // 开启标注功能
scrub: true,
animation:tl1,
scroller:dom,//设置指定元素为滚动依据
scrub:2,
// onUpdate:(v)=>{
// if(v.progress < 0.1){
// v.trigger?.classList.remove('active')
// }else{
// v.trigger?.classList.add('active')
// // v.trigger?.classList.add('active')
// }
// }
});
}
gsap.registerPlugin(ScrollTrigger);
let tl1 = gsap.timeline();
tl1.from(codeTweenText,1, {'margin-top':'30px',opacity:1},)
ScrollTrigger.create({
trigger: codeTweenText, // 触发器元素
start: "top 0%", // 滚动触发器的起始滚动位置
end: '200% 20%', // 滚动触发器的结束滚动位置
// markers: true, // 开启标注功能
scrub: true,
animation:tl1,
scroller:dom,//设置指定元素为滚动依据
scrub:2,
});
})
},
methods: {
},
});
</script>
<style lang="less" scoped>
.homeRecommend_max{
position: relative;
display: flex;
height: 100%;
flex-direction: column;
.homeRecommend_content_body{
flex: 1;
}
}
.homeRecommend_heade {
display: flex;
justify-content: space-between;
// padding: 0 30px;
padding: 0 9rem;
width: 100%;
height: 7rem;
flex-shrink: 0;
background: rgba(255, 255, 255, 0.2);
// border-bottom: 0.1rem solid rgba(3, 3, 3, 0.1);
position: relative;
align-items: center;
z-index: 1049;
background-color: #fff;
.homeRecommend_right{
width: 33%;
display: flex;
justify-content: flex-end;
align-items: center;
.started_btn2{
color: #000;
background: #fff;
border: 2px solid #39215b;
margin-left: 2rem;
}
}
.homeRecommend_logo {
width: 14.4rem;
height: 3.2rem;
margin-top: 0;
}
.homeRecommend_right_content {
top: 0;
left: 0;
display: flex;
width: 33%;
height: 100%;
align-items: center;
overflow: hidden;
.homeRecommend_user_content {
display: flex;
align-items: center;
position: relative;
height: 3.7rem;
&.marLeft2{
margin-left: 2rem;
}
.username {
font-size: 1.8rem;
color: #1a1a1a;
margin: 0 0.8rem;
font-weight: 900;
span{
margin: .7rem;
}
}
.icon-xiala {
font-size: 1.4rem;
cursor: pointer;
transition: .3s all;
}
.icon_rotate {
-moz-transform: rotate(180deg);
-webkit-transform: rotate(180deg);
transform: rotate(180deg);
animation-direction: 0.5s;
}
}
}
}
.homeRecommend_content_body{
overflow-y: auto;
overflow-x: hidden;
&.homeRecommend_content_body::-webkit-scrollbar {
display: none;
}
.homeRecommend_content_body_recommend{
// display: flex;
// justify-content: center;
position: relative;
border-bottom: 1px solid #ececec;
.content_body_recommend_left,
.content_body_recommend_right{
position: absolute;
top: 0;
img{
border-radius: 2rem;
position: absolute;
width: 20px;
object-fit: cover;
}
}
--margin:3rem;
.content_body_recommend_right{
right: 0;
.content_body_img1{
width: 20rem;
top: 10rem;
right: calc(20rem + var(--margin));
}
.content_body_img2{
width: 15rem;
top: calc(30rem + var(--margin));
right: calc(20rem + var(--margin));
}
.content_body_img3{
top: 38rem;
width: 30rem;
right: calc(-13rem + var(--margin));
}
.content_body_img4{
width: 20rem;
top: 51rem;
right: calc(20rem + var(--margin));
}
.content_body_img5{
width: 20rem;
top: 15rem;
right: 0;
}
}
.content_body_recommend_left{
left: 0;
.content_body_img1{
width: 15rem;
top: 5rem;
left: calc(20rem + var(--margin));
}
.content_body_img2{
width: 25rem;
top: calc(20rem + var(--margin));
left: calc(20rem + var(--margin));
}
.content_body_img3{
width: 20rem;
top: calc(10rem + var(--margin));
left: calc(0 + var(--margin));
}
.content_body_img4{
width: 30rem;
top: 36rem;
left: calc(-13rem + var(--margin));
}
.content_body_img5{
width: 20rem;
top: 51rem;
left: calc(20rem + var(--margin));
}
.content_body_img6{
width: 20rem;
top: 20rem;
left: calc(0 + var(--margin));
}
}
.content_body_recommend_center{
padding: 20rem 0;
text-align: center;
width: 50%;
position: relative;
left: 50%;
transform: translateX(-50%);
z-index: 2;
opacity: 0;
.content_body_recommend_center_title{
h1{
line-height: 1;
font-size: 13rem;
font-weight: 600;
div{
color: #341e57;
}
}
}
.content_body_recommend_center_btn{
display: flex;
justify-content: center;
cursor: pointer;
a{
margin: 0 2rem;
}
}
}
}
}
.homeRecommend_content_adminTop{
position: fixed;
bottom: 5rem;
right: 5rem;
width: 7rem;
height: 7rem;
cursor: pointer;
border-radius: 50%;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
display: flex;
align-items: center;
justify-content: center;
background: #fff;
z-index: 999;
i{
display: flex;
font-size: 3rem;
transition: all .3s;
}
&.homeRecommend_content_adminTop:hover{
i{
transform: scale(1.2);
}
}
}
</style>

View File

@@ -117,7 +117,8 @@
<div class="right_content_export" v-show="likeDesignCollectionList.length">
<!-- <div class="button_second Guide_1_31" @click="exportCanvas()"> -->
<div class="button_second Guide_1_31" @click="exportModel()">
{{ $t('HomeView.Export') }}
<!-- {{ $t('HomeView.Export') }} -->
finalize collection
</div>
<!-- <div
:class="[
@@ -194,9 +195,9 @@
<KeepAlive>
<CollectionModal ref="collectionModal" @finishCollection="finishCollection()"></CollectionModal>
</KeepAlive>
<productImg ref="productImg" @setTask="setTask"></productImg>
<DesignDetail ref="designDetail" @finishRedesign="finishRedesign"></DesignDetail>
<ExportNewCoolection id="exportNewCoolection"></ExportNewCoolection>
<ExportModel ref="ExportModel" @setTask="setTask"></ExportModel>
<!-- 导出缩略图的蒙层 start-->
<div class="mark_loading" v-show="isShowMark">
<a-spin size="large" />
@@ -227,7 +228,7 @@ import { defineComponent, h, ref, computed ,inject,provide,nextTick,createVNode}
import CollectionModal from "@/component/HomePage/collectionModal.vue";
import NewCollectionReview from "@/component/HomePage/NewCollectionReview.vue";
import ExportNewCoolection from "@/component/HomePage/ExportNewCoolection.vue";
import ExportModel from "@/component/HomePage/ExportModel.vue";
import productImg from "@/component/HomePage/productImg.vue";
import affiche from "@/component/HomePage/affiche.vue";
import DesignDetail from "@/component/Detail/DesignDetail.vue";
// import RobotAssist from "@/component/HomePage/RobotAssist.vue";
@@ -252,10 +253,10 @@ export default defineComponent({
NewCollectionReview,
DesignDetail,
ExportNewCoolection,
ExportModel,
affiche,
// RobotAssist,
draggable
draggable,
productImg
},
setup(props,{emit}) {
const store = useStore();
@@ -1074,8 +1075,10 @@ export default defineComponent({
document.removeEventListener("click", this.closeShowOperateContent);
},
exportModel(){
let exportModel:any = this.$refs.ExportModel
exportModel.init()
let productImg:any = this.$refs.productImg
productImg.productImgMask = true
productImg.init()
},
//打开图片详情

View File

@@ -1,59 +1,27 @@
<template>
<div class="works_page">
<div class="works_page" :class="{active:isScroll}">
<!-- <div class="modal_title_text">
<div>Works</div>
</div> -->
<div class="modal_title_text">
<div v-for="item in worksType" :key="item" class="modal_title_text_assistant" @click="setWorksSelect(item)" :class="{active:item.value == worksSelect}">{{ item.name }}</div>
<div class="modal_title_text modal_search">
<div v-for="item in worksType" :key="item" v-show="isScroll?true:(item.value != 'myWorks')" class="modal_title_text_assistant" @click="setWorksSelect(item)" :class="{active:item.value == worksSelect}">
{{ item.name }}
</div>
<div class="modal_search_menu">
<generalMenu :dataList="menuList" @setprintModel="setprintModel" :item="selectMenu"></generalMenu>
</div>
</div>
<div class="page_content" >
<div class="page_content_item" v-for="item,index in worksList" :key="item">
<div class="page_content_item_img" @click.stop="getImgScale(index)">
<img v-lazy="item.designPythonOutfitUrl" alt="">
<div class="delete_like_file_block" >
<i v-if="!item.like" class="fi fi-rr-heart" @click.stop="likeFile(item,'like')"></i>
<i v-else class="fi fi-sr-heart" @click.stop="likeFile(item,'noLike')"></i>
</div>
</div>
<div class="page_content_item_text">
<div class="page_content_item_text_name" :title="item.portfolioName">
{{item.portfolioName}}
</div>
<div class="page_content_item_text_bottom">
<div>
<svg xmlns="http://www.w3.org/2000/svg" width="2.5rem" height="2.5rem" viewBox="0 0 16 16" fill="none" role="img" :style="{color:'#9e9ea7',fill: 'currentColor'}">
<path d="M10.7408 2C13.0889 2 14.6667 4.235 14.6667 6.32C14.6667 10.5425 8.11856 14 8.00004 14C7.88152 14 1.33337 10.5425 1.33337 6.32C1.33337 4.235 2.91115 2 5.2593 2C6.60745 2 7.48893 2.6825 8.00004 3.2825C8.51115 2.6825 9.39263 2 10.7408 2Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<span>321</span>
<!-- <span>{{ item.likeNum }}</span> -->
</div>
<div>
<i v-if="true" class="fi fi-sr-thumbs-up" style="color:rgba(158, 158, 167);"></i>
<i v-else class="fi fi-rr-social-network"></i>
<span>321</span>
</div>
<div>
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none" role="img" style="color: #9e9ea7;fill: currentColor;">
<path d="M8 3C4.36992 3 1.98789 6.21774 1.18763 7.49059C1.09079 7.64462 1.04237 7.72163 1.01527 7.84042C0.99491 7.92964 0.99491 8.07036 1.01527 8.15958C1.04237 8.27837 1.09079 8.35539 1.18763 8.50941C1.98789 9.78226 4.36992 13 8 13C11.6301 13 14.0121 9.78226 14.8124 8.50941L14.8124 8.50939C14.9092 8.35538 14.9576 8.27837 14.9847 8.15958C15.0051 8.07036 15.0051 7.92964 14.9847 7.84042C14.9576 7.72163 14.9092 7.64462 14.8124 7.4906L14.8124 7.49059C14.0121 6.21774 11.6301 3 8 3Z" fill="currentColor"></path>
<path d="M8 10C9.10457 10 10 9.10457 10 8C10 6.89543 9.10457 6 8 6C6.89543 6 6 6.89543 6 8C6 9.10457 6.89543 10 8 10Z" fill="white"></path>
</svg>
<span>321</span>
<!-- <span>{{ item.lookNum }}</span> -->
</div>
<!-- <div>
<i class="fi fi-rr-comment-alt-dots"></i>
<span>{{ item.lookNum }}</span>
</div> -->
</div>
</div>
</div>
</div>
<newScaleImage ref="newScaleImage"></newScaleImage>
<!-- 蒙层 start-->
<div class="mark_loading" v-show="isShowMark">
<Falls ref="fall" @loadend="isShowMark = false" :isScroll="isScroll"></Falls>
<div class="page_loading_box">
<span class="page_loading" v-show="!isShowMark"></span>
<span v-show="isShowMark">
<a-spin size="large" />
</span>
</div>
<!-- 蒙层 end-->
</div>
<newScaleImage ref="newScaleImage"></newScaleImage>
<!-- <RobotAssist></RobotAssist> -->
</div>
@@ -73,9 +41,20 @@ import newScaleImage from "@/component/WorksPage/newScaleImage.vue";
import { useI18n } from "vue-i18n";
import { ElCascader } from 'element-plus'
import { remove } from "jszip";
import generalMenu from "@/component/HomePage/generalMenu.vue";
import Falls from "@/component/WorksPage/Falls.vue";
export default defineComponent({
components: {
newScaleImage,
Falls,
generalMenu,
},
props:{
isScroll:{
type:Boolean,
default:true,
},
},
setup() {
let filter:any = reactive({
@@ -93,101 +72,121 @@ export default defineComponent({
name: 'freehand sketching',
value: 'freehandSketching'
},
{
name: 'My Works',
value: 'myWorks'
},
],
worksList: [
{
imgUrl: 'https://www.minio.aida.com.hk:9000/aida-users/83/print/296f19da-bd0c-11ee-9529-b48351119060_0.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20240507%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240507T072105Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=befcc3f0e0c4c258595df3722d59fbeb6e09cbbf3510b8167a1c56efa5a354ad',
designPythonOutfitUrl: 'http://121.40.53.210:3000/falls/2.png',
text:'ak jsdlasfj ;ljaf;lks j;lsfjl;askdfj l;kajg; lkjsdf;lgk jskl;gf jskl;',
name:'bbb',
lookNum:'999',
likeNum:'123',
like: true,
},
{
imgUrl: 'https://cdn.dribbble.com/userupload/14355607/file/original-930ddf037011f7acd6bd810a5cb6f0fc.jpg?resize=450x338&vertical=center',
designPythonOutfitUrl: 'http://121.40.53.210:3000/falls/5.png',
text:'ak jsdlasfj ;ljaf;lks j;lsfjl;askdfj l;kajg; lkjsdf;lgk jskl;gf jskl;',
name:'aaa',
lookNum:'213',
likeNum:'123',
like: false,
},{
imgUrl: 'https://cdn.dribbble.com/userupload/14355607/file/original-930ddf037011f7acd6bd810a5cb6f0fc.jpg?resize=450x338&vertical=center',
designPythonOutfitUrl: 'http://121.40.53.210:3000/falls/5.png',
text:'ak jsdlasfj ;ljaf;lks j;lsfjl;askdfj l;kajg; lkjsdf;lgk jskl;gf jskl;',
name:'aaa',
lookNum:'213',
likeNum:'123',
like: false,
},{
imgUrl: 'https://cdn.dribbble.com/userupload/14355607/file/original-930ddf037011f7acd6bd810a5cb6f0fc.jpg?resize=450x338&vertical=center',
designPythonOutfitUrl: 'http://121.40.53.210:3000/falls/5.png',
text:'ak jsdlasfj ;ljaf;lks j;lsfjl;askdfj l;kajg; lkjsdf;lgk jskl;gf jskl;',
name:'aaa',
lookNum:'213',
likeNum:'123',
like: false,
},{
imgUrl: 'https://www.minio.aida.com.hk:9000/aida-users/83/print/296f19da-bd0c-11ee-9529-b48351119060_0.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20240507%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240507T072105Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=befcc3f0e0c4c258595df3722d59fbeb6e09cbbf3510b8167a1c56efa5a354ad',
designPythonOutfitUrl: 'http://121.40.53.210:3000/falls/2.png',
text:'ak jsdlasfj ;ljaf;lks j;lsfjl;askdfj l;kajg; lkjsdf;lgk jskl;gf jskl;',
name:'aaa',
lookNum:'213',
likeNum:'123',
like: false,
},{
imgUrl: 'https://www.minio.aida.com.hk:9000/aida-users/83/print/296f19da-bd0c-11ee-9529-b48351119060_0.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20240507%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240507T072105Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=befcc3f0e0c4c258595df3722d59fbeb6e09cbbf3510b8167a1c56efa5a354ad',
designPythonOutfitUrl: 'http://121.40.53.210:3000/falls/2.png',
text:'ak jsdlasfj ;ljaf;lks j;lsfjl;askdfj l;kajg; lkjsdf;lgk jskl;gf jskl;',
name:'bbb',
lookNum:'999',
likeNum:'123',
like: true,
},{
imgUrl: 'https://cdn.dribbble.com/userupload/14368520/file/original-253a09d85fc1d5ff83c96c046d535ff7.jpg?resize=450x338&vertical=center',
designPythonOutfitUrl: 'http://121.40.53.210:3000/falls/11.png',
text:'ak jsdlasfj ;ljaf;lks j;lsfjl;askdfj l;kajg; lkjsdf;lgk jskl;gf jskl;',
name:'bbb',
lookNum:'999',
likeNum:'123',
like: true,
},{
imgUrl: 'https://cdn.dribbble.com/userupload/14355607/file/original-930ddf037011f7acd6bd810a5cb6f0fc.jpg?resize=450x338&vertical=center',
designPythonOutfitUrl: 'http://121.40.53.210:3000/falls/5.png',
text:'ak jsdlasfj ;ljaf;lks j;lsfjl;askdfj l;kajg; lkjsdf;lgk jskl;gf jskl;',
name:'aaa',
lookNum:'213',
likeNum:'123',
like: false,
},{
imgUrl: 'https://cdn.dribbble.com/userupload/14355607/file/original-930ddf037011f7acd6bd810a5cb6f0fc.jpg?resize=450x338&vertical=center',
designPythonOutfitUrl: 'http://121.40.53.210:3000/falls/5.png',
text:'ak jsdlasfj ;ljaf;lks j;lsfjl;askdfj l;kajg; lkjsdf;lgk jskl;gf jskl;',
name:'aaa',
lookNum:'213',
likeNum:'123',
like: false,
},{
imgUrl: 'https://cdn.dribbble.com/userupload/14355607/file/original-930ddf037011f7acd6bd810a5cb6f0fc.jpg?resize=450x338&vertical=center',
designPythonOutfitUrl: 'http://121.40.53.210:3000/falls/5.png',
text:'ak jsdlasfj ;ljaf;lks j;lsfjl;askdfj l;kajg; lkjsdf;lgk jskl;gf jskl;',
name:'aaa',
lookNum:'213',
likeNum:'123',
like: false,
},{
imgUrl: 'https://cdn.dribbble.com/userupload/14355607/file/original-930ddf037011f7acd6bd810a5cb6f0fc.jpg?resize=450x338&vertical=center',
designPythonOutfitUrl: 'http://121.40.53.210:3000/falls/5.png',
text:'ak jsdlasfj ;ljaf;lks j;lsfjl;askdfj l;kajg; lkjsdf;lgk jskl;gf jskl;',
name:'aaa',
lookNum:'213',
likeNum:'123',
like: false,
},{
imgUrl: 'https://cdn.dribbble.com/userupload/14355607/file/original-930ddf037011f7acd6bd810a5cb6f0fc.jpg?resize=450x338&vertical=center',
designPythonOutfitUrl: 'http://121.40.53.210:3000/falls/5.png',
text:'ak jsdlasfj ;ljaf;lks j;lsfjl;askdfj l;kajg; lkjsdf;lgk jskl;gf jskl;',
name:'aaa',
lookNum:'213',
likeNum:'123',
like: false,
},{
imgUrl: 'https://cdn.dribbble.com/userupload/14355607/file/original-930ddf037011f7acd6bd810a5cb6f0fc.jpg?resize=450x338&vertical=center',
designPythonOutfitUrl: 'http://121.40.53.210:3000/falls/5.png',
text:'ak jsdlasfj ;ljaf;lks j;lsfjl;askdfj l;kajg; lkjsdf;lgk jskl;gf jskl;',
name:'aaa',
lookNum:'213',
likeNum:'123',
like: false,
},{
imgUrl: 'https://cdn.dribbble.com/userupload/14355607/file/original-930ddf037011f7acd6bd810a5cb6f0fc.jpg?resize=450x338&vertical=center',
designPythonOutfitUrl: 'http://121.40.53.210:3000/falls/5.png',
text:'ak jsdlasfj ;ljaf;lks j;lsfjl;askdfj l;kajg; lkjsdf;lgk jskl;gf jskl;',
name:'aaa',
lookNum:'213',
likeNum:'123',
like: false,
},{
imgUrl: 'https://www.minio.aida.com.hk:9000/aida-results/result_eabc59d4-110a-11ef-bb36-0242ac160002.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=admin%2F20240514%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240514T093050Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=64f2098d15a2ebf5883946c472bbeecaed1a443c618e1f15d92f44b97cb63542',
designPythonOutfitUrl: 'http://121.40.53.210:3000/falls/1.png',
text:'ak jsdlasfj ;ljaf;lks j;lsfjl;askdfj l;kajg; lkjsdf;lgk jskl;gf jskl;',
name:'aaa',
lookNum:'213',
likeNum:'123',
like: false,
},{
imgUrl: 'https://cdn.dribbble.com/userupload/14355607/file/original-930ddf037011f7acd6bd810a5cb6f0fc.jpg?resize=450x338&vertical=center',
designPythonOutfitUrl: 'http://121.40.53.210:3000/falls/5.png',
text:'ak jsdlasfj ;ljaf;lks j;lsfjl;askdfj l;kajg; lkjsdf;lgk jskl;gf jskl;',
name:'aaa',
lookNum:'213',
likeNum:'123',
@@ -198,9 +197,36 @@ export default defineComponent({
page:1,
size:10,
},
isShowMark:false
isShowMark:false,
isNoData:false,//如果数据为空就不加载
})
let menuList:any = ref([
{
label:'全部',
value:'all',
},{
label:'男装',
value:'man',
},{
label:'女装',
value:'woman',
},{
label:'鞋子',
value:'shoes',
},{
label:'包包',
value:'bag',
},{
label:'配饰',
value:'accessories',
}
])
let selectMenu:any = ref({
label:'全部',
value:'all',
})
let newScaleImage:any = ref()
let fall:any = ref()
let setWorksSelect = (val:any) => {
filter.worksSelect = val.value
}
@@ -211,25 +237,49 @@ export default defineComponent({
newScaleImage.value.init(filter.worksList,index)
}
let getPorfolio = ()=>{
let data = filter.getListDate
Https.axiosPost(Https.httpUrls.getPorfolio, data)
.then((rv) => {
console.log(rv);
filter.worksList = rv.content
})
.catch((rv) => {});
// let data = filter.getListDate
// Https.axiosPost(Https.httpUrls.getPorfolio, data)
// .then((rv) => {
// console.log(rv);
// filter.worksList = rv.content
// })
// .catch((rv) => {});
if(filter.isShowMark && !filter.isNoData)return
filter.isShowMark = true
setTimeout(() => {
filter.isShowMark = false
fall.value.push(filter.worksList);
}, 1000);
}
let {t} = useI18n()
let setprintModel= (data:any)=>{
selectMenu.value = data
}
onMounted (()=>{
getPorfolio()
let worksPage:any = document.querySelector('.works_page')
let imgParent:any = document.querySelector('.page_loading')
new IntersectionObserver(
(entries, observer) => {
// 如果不是相交,则直接返回
// console.log(entries[0]);
if (!entries[0].intersectionRatio) return;
getPorfolio()
},
// { root:worksPage }
).observe(imgParent);
})
return {
...toRefs(filter),
menuList,
selectMenu,
newScaleImage,
fall,
setWorksSelect,
likeFile,
getImgScale,
t,
setprintModel,
}
},
data() {
@@ -273,14 +323,20 @@ export default defineComponent({
font-size: 14px;
}
.works_page {
border-radius: 4rem;
width: 100%;
overflow: hidden;
height: 100%;
// overflow: hidden;
// height: 100%;
height: auto;
padding: 0 9rem;
// min-width: 1440px;
position: relative;
padding-top: 5rem;
.modal_title_text{
display: flex;
margin: 0;
padding-bottom: 2.4rem;
.modal_title_text_assistant{
padding: 1rem 3rem;
border-radius: 2rem;
@@ -295,84 +351,36 @@ export default defineComponent({
background: #39215b;
color: #fff;
}
.modal_search_menu{
margin-left: auto;
z-index: 10;
.generalMenu_printModel{
margin-right: 0;
}
}
}
.page_content {
position: relative;
display: flex;
flex-wrap: wrap;
overflow-y: auto;
height: 125rem;
align-content: flex-start;
.page_content_item{
height: auto;
background: #f7f8fa;
.page_loading_box{
text-align: center;
.page_loading{
display: block;
width: 20px;
height: 20px;
}
}
}
&.active{
display: flex;
flex-direction: column;
margin-right: 4rem;
margin-bottom: 4rem;
width: 30rem;
}
.page_content_item_text,.page_content_item_img{
display: flex;
}
.page_content_item_img{
width: 30rem;
height: 30rem;
overflow: hidden;
padding: 2rem 0;
justify-content: center;
border-radius: 2rem;
position: relative;
img{
// width: 100%;
cursor: pointer;
max-height: 100%;
object-fit: cover;
transform: scale(1.15);
transition: all 0.5s;
}
.delete_like_file_block{
cursor: pointer;
}
&:hover{
.delete_like_file_block{
display: block;
}
img{
transform: scale(1);
}
}
}
.page_content_item_text{
justify-content: space-between;
align-items: center;
>div{
font-size: 2rem;
}
.page_content_item_text_name{
width: 30%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.page_content_item_text_bottom{
width: 70%;
display: flex;
align-items: center;
justify-content: flex-end;
>div{
display: flex;
align-items: center;
font-size: 2rem;
margin-right: 1rem;
i{
display: flex;
font-size: 2rem;
}
span{
margin-left: calc(var(--padding) / 2);
}
}
}
height: 100%;
.page_content{
overflow-y: auto;
width: 100%;
}
}
}
</style>

View File

@@ -16,7 +16,7 @@
<i :class="[menu.icon]"></i>
<div>{{menu.title}}</div>
</div>
<div v-show="menu.children.length" :class="['icon','iconfont', 'icon-xiala', menu.showChildren?'icon_rotate':'']"></div>
<!-- <div v-show="menu.children.length" :class="['icon','iconfont', 'icon-xiala', menu.showChildren?'icon_rotate':'']"></div> -->
</div>
<div v-show="menu.showChildren && menu.children.length">
<div :class="['menu_item','child_menu_item', selectCode==child.code ? 'select_menu_item' :'']" v-for="child in menu.children" :key="child.title" @click="selectMenuItem(child,index)">
@@ -37,10 +37,11 @@
</div>
<div class="librart_headr_right">
<div class="select_block" v-show="selectCode == 'Sketchboard' || selectCode == 'Models'">
<div class="select_block" v-show="selectCode == 'Sketchboard' || selectCode == 'Models'|| selectCode == 'DesignElements'|| selectCode == 'Printboard'" >
<a-select
ref="select"
v-model:value="sex.value"
v-show="selectCode != 'DesignElements' && selectCode != 'Printboard'"
v-model:value="sex"
:options="sexList"
@change="sexChange"
>
@@ -53,10 +54,26 @@
</a-select>
<a-select
ref="select"
v-show="selectCode == 'Sketchboard' && uploadGenerate != 'Generate'"
v-model:value="designType.value"
:options="disignTypeList"
v-show="designTypeList[selectCode]?.[0]?.value && selectCode != 'Sketchboard'"
v-model:value="designType"
:options="designTypeList[selectCode]"
@change="handleChange"
:fieldNames="{ label: 'name', value: 'value' }"
>
<template #suffixIcon
><span
class="icon iconfont icon-xiala"
style="color: #343579"
></span
></template>
</a-select>
<a-select
ref="select"
v-show="designTypeList[selectCode]?.[0]?.value && selectCode == 'Sketchboard' && uploadGenerate != 'Generate'"
v-model:value="designType.value"
:options="designTypeList[selectCode]"
@change="handleChange"
:fieldNames="{ label: 'name', value: 'value' }"
>
<template #suffixIcon
><span
@@ -169,57 +186,78 @@
</div>
<div class="right_content_body" v-show="uploadGenerate !='Upload'">
<div class="content_body_header content_body_header_generate">
<div class="content_body_header_right" >
<div class="content_body_header_right" v-show="selectCode != 'Moodboard'">
<div class="checkboxItem" v-show="selectCode != 'Sketchboard'">
<label>
<input
type="checkbox"
v-model="checkbox[0].type"
@click="setKeyword(0)"
/>
<span>{{ $t('LibraryPage.ImageOnly') }}</span>
</label>
</div>
<div class="checkboxItem">
<label>
<input
type="checkbox"
v-model="checkbox[1].type"
@click="setKeyword(1)"
/>
<span>{{ $t('LibraryPage.TextOnly') }}</span>
</label>
</div>
<div class="checkboxItem">
<label>
<input
type="checkbox"
v-model="checkbox[2].type"
@click="setKeyword(2)"
/>
<span>{{ $t('LibraryPage.TextImage') }}</span>
</label>
</div>
</div>
<div class="content_body_header_right"></div>
<div v-show="selectCode == 'Printboard'" class="printModel">
<div @click.stop="PrintModel">{{ printModel.name }}</div>
<ul v-show="printModel.optype">
<li class="printModel_item" @click="setprintModel(1)">{{ $t('LibraryPage.Model1') }}</li>
<li class="printModel_item" @click="setprintModel(2)">{{ $t('LibraryPage.Model2') }}</li>
<li class="printModel_item" @click="setprintModel(3)">{{ $t('LibraryPage.Model3') }}</li>
</ul>
</div>
<div class="input_border">
<div class="input_box" :class="{active:inputShow}">
<div class="input_box_btnBox">
<div class="upload_item">
<div
class="upload_file_item"
v-for="(file, index) in selectGenerateList"
:key="file"
>
<div
class="upload_file_item_content"
v-show="file?.status === 'uploading'"
>
<a-spin :indicator="indicator" tip="Uploading..." />
</div>
<div
class="upload_file_item_content"
v-show="file?.status === 'done' || file?.base64"
>
<img :src="file?.imgUrl" class="upload_img" />
<div class="delete_like_file_block" :class="[driver__.driver?'hideEvents':'']">
<span class="icon iconfont icon-shanchu operate_icon" @click.stop="deleteFile(index)"></span>
</div>
</div>
</div>
</div>
<input
class="search_input "
@input="ifMaximumLength"
:maxlength='inputShow?0:9999'
:class="{active:checkbox[0].type && selectCode != 'Moodboard'}"
@keydown.enter="getgenerate" :readonly="checkbox[0].type && selectCode != 'Moodboard'"
@keydown.enter="getgenerate"
@click="inputFocus()"
:placeholder="$t('LibraryPage.inputContent2')"
v-model="captionGeneration">
<i class="icon iconfont icon-xiala" :class="{active:isTextarea, forbidden:checkbox[0].type&& selectCode != 'Moodboard'}" @click.stop="setTextareaShow"></i>
<i class="fi fi-br-upload" v-show="!isTextarea && upload.level1Type !== 'Moodboard' && scene?.value != 'Slogan' && scene?.value != 'Logo'">
<a-upload
class="search_upImg"
:capture="null"
:action="uploadUrl + '/api/element/upload'"
list-type="picture-card"
:before-upload="beforeUpload"
:data="{
...upload
}"
:headers="{Authorization:token}"
v-model:file-list="selectGenerateList"
multiple
:maxCount="1"
accept=".jpg,.png,.jpeg,.bmp"
@change="generateFileUploadChange"
>
</a-upload>
</i>
<i v-show="scene?.value == 'Slogan'" @click.stop="setSlogan" class="fi fi-rr-poll-h"></i>
<i v-show="!isTextarea" class="fi fi-br-expand" @click.stop="setTextareaShow"></i>
<i v-show="isTextarea" class="fi fi-bs-compress" @click.stop="setTextareaShow"></i>
</div>
<textarea
v-show="isTextarea "
class="search_textarea "
@input="ifMaximumLength"
:maxlength='inputShow?0:9999'
@keydown.enter="getgenerate" :readonly="checkbox[0].type && selectCode != 'Moodboard'"
@keydown.enter="getgenerate"
v-model="captionGeneration"
></textarea>
<div v-show="!isGenerate[selectCode]" class="generage_btn started_btn" @click.stop="getgenerate">
@@ -232,67 +270,16 @@
<div v-show="remGenerate[selectCode]" @click="removeGenerate" class="generage_btn started_btn">
{{$t('Generate.Close')}}
</div>
<span ref="inputShowText"></span>
<span class="inputShowText" ref="inputShowText"></span>
</div>
</div>
<div v-show="selectCode == 'Printboard'" class="printModel">
<div @click.stop="PrintModel">{{ printModel.name }}</div>
<ul v-show="printModel.optype">
<li class="printModel_item" @click="setprintModel(1)">{{ $t('LibraryPage.Model1') }}</li>
<li class="printModel_item" @click="setprintModel(2)">{{ $t('LibraryPage.Model2') }}</li>
<li class="printModel_item" @click="setprintModel(3)">{{ $t('LibraryPage.Model3') }}</li>
</ul>
</div>
<div v-show="selectCode != 'Moodboard'" class="upload_item">
<div
class="upload_file_item"
v-for="(file, index) in selectGenerateList"
:key="file"
:class="[file?.checked?'active':'']"
>
<div
class="upload_file_item_content"
v-show="file?.status === 'uploading'"
>
<a-spin :indicator="indicator" tip="Uploading..." />
</div>
<div class="upload_file_item_content" @click.stop="setSketchboardItem(file)" v-show="file?.status === 'done'">
<img :src="file?.imgUrl" class="upload_img" />
<div class="delete_file_block rightTop" @click.stop="deleteFile(index)" >
<span class="icon iconfont icon-shanchu"></span>
<div class="search_keyword" v-show="isInputFocus" @click.stop="">
<div class="search_keyword_center">
<div class="search_keyword_center_left">
<div v-for="item in workspace?.keyWord?.[selectCode]" @click.stop="cliSetKeyword(item.name)" class="search_keyword_center_item"> {{item.name}} </div>
</div>
</div>
</div>
<div
class="upload_component upload_file_item"
v-show="selectGenerateList.length <= 2"
>
<a-upload
:capture="null"
:action="uploadUrl + '/api/element/upload'"
list-type="picture-card"
:before-upload="beforeUpload"
:disabled="checkbox[1].type"
:data="{
...upload
}"
:headers="{Authorization:token}"
v-model:file-list="selectGenerateList"
multiple
:maxCount="3"
accept=".jpg,.png,.jpeg,.bmp"
@change="generateFileUploadChange"
>
<div class="upload_tip_block">
<i class="fi fi-br-upload"></i>
<!-- <img class="upload_img_icon" src="@/assets/images/homePage/add_file.png"> -->
</div>
</a-upload>
</div>
</div>
</div>
<div class="content_body_table scroll_style">
@@ -318,7 +305,7 @@
</div>
</div>
</div>
<sketchCategory v-show="selectCode == 'Sketchboard'" :disignTypeList="disignTypeList" :generateList="generateList['Sketchboard']" :item="img"></sketchCategory>
<sketchCategory v-show="selectCode == 'Sketchboard'" :disignTypeList="designTypeList[selectCode]" :generateList="generateList['Sketchboard']" :item="img"></sketchCategory>
</div>
<div class="content_img_name"></div>
</div>
@@ -351,7 +338,7 @@
</template>
<script lang="ts">
import { LoadingOutlined } from "@ant-design/icons-vue";
import { defineComponent,h ,ref,createVNode,nextTick,provide,computed} from 'vue'
import { defineComponent,h ,ref,createVNode,nextTick,reactive,provide,computed} from 'vue'
// import HeaderComponent from "@/component/HomePage/Header.vue";
import ModelPlacement from '@/component/LibraryPage/ModelPlacement.vue';
import setLabel from '@/component/LibraryPage/setLabel.vue';
@@ -382,14 +369,15 @@ export default defineComponent({
sketchCategory,
},
setup() {
const store = useStore();
let menuList = computed(()=>{
return [
{title:useI18n().t('LibraryPage.Moodboard'),code:'Moodboard',icon:'fi fi-rr-grid',showChildren:false,children:[]},
{title:useI18n().t('LibraryPage.Prints'),code:'Printboard',icon:'fi fi-rs-objects-column',showChildren:false,children:[]},
// {title:'Sketches',code:'SketchboardFirst',icon:'fi icon iconfont icon-a-waitao_changkuanwaitao11x',showChildren:false,children:[{title:'Apparel',code:'Sketchboard'}]},
{title:useI18n().t('LibraryPage.Sketches'),code:'Sketchboard',icon:'fi icon iconfont icon-a-waitao_changkuanwaitao11x',showChildren:false,children:[]},
// {title:'Market Sketch',code:'MarketingSketch',icon:'icon-fuwushichang',showChildren:false,children:[]},
// {title:'Market Sketch',code:'Elements',icon:'icon-fuwushichang',showChildren:false,children:[]},
{title:'Design Elements',code:'DesignElements',icon:'fi fi-rs-people',showChildren:false,children:[]},
{title:useI18n().t('LibraryPage.Mannequins'),code:'Models',icon:'fi fi-rs-people',showChildren:false,children:[]},
]
@@ -397,15 +385,32 @@ export default defineComponent({
let selectImgList:any = ref([])
let selectCode:any = ref('Moodboard')
let searchPictureName = ref('')
let newSearchPictureName = ref('')
let designType:any = ref('Outwear')
let sex:any = ref('Meal')
let sexList:any = [
let designType:any = ref({
name:'',
value:''
})
let sex:any = ref({
label:'',
value:''
})
const sexList:any = ref([])
const printType = computed(() => {
return store.state.UserHabit.printType;
});
const designElementsType = computed(() => {
return store.state.UserHabit.designElementsType;
});
const positionType = computed(() => {
return store.state.UserHabit.Position;
});
]
let disignTypeList:any = [
]
let designTypeList:any = ref({
Sketchboard:positionType,
Moodboard:[],
Printboard:printType,
Models:[],
DesignElements:designElementsType,
})
let imgList = ref([])
let currentPage:any = ref(1)
let pageSize:any = ref(18)
@@ -413,32 +418,17 @@ export default defineComponent({
let uploadUrl:any = ref('')
let currentUploadFileNum:any = ref(0) //当次上传文件数量
let isShowMark:any = ref(false) //蒙层
let store = useStore();
let uploadGenerate:any = ref('Upload')
let checkbox = ref([
{
name: "image",
type: true,
},
{
name: "text",
type: false,
},
{
name: "text-image",
type: false,
},
]);
let inputShow = ref(false)
let generateCheckbox:any = ref()
let captionGeneration:any = ref()
let captionGeneration:any = ref('')
let inputTime = ref()
let generateList:any = ref({
Sketchboard:[],
Moodboard:[],
Printboard:[],
Models:[]
Models:[],
DesignElements:[],
})
let selectGenerateList:any = ref([])
let printModel = ref({
@@ -449,7 +439,6 @@ export default defineComponent({
let {t} = useI18n()
let type:any = {
selectCode:selectCode,
designType:designType
}
provide('type',type)
let value = ref({
@@ -466,27 +455,32 @@ export default defineComponent({
Sketchboard:'',
Moodboard:'',
Printboard:'',
Models:''
Models:'',
DesignElements:'',
})
let generateProceedList = ref([])
let isGenerate:any = ref({
Sketchboard:false,
Moodboard:false,
Printboard:false,
Models:false
Models:false,
DesignElements:false,
})
let remGenerate:any = ref({
Sketchboard:false,
Moodboard:false,
Printboard:false,
Models:false
Models:false,
DesignElements:false,
})
let remGenerateTime:any = ref({
Sketchboard:'',
Moodboard:'',
Printboard:'',
Models:''
Models:'',
DesignElements:'',
})
let scene:any = ref({})
let dragIdx:any=ref(0)
let getLibraryListInputTime:any = ref()
const options:any = ref([
@@ -500,15 +494,15 @@ export default defineComponent({
label:'classificationName',
}
let isTextarea = ref(false)
let workspace:any = ref({})
return {
menuList,
selectImgList,
selectCode,
searchPictureName,
newSearchPictureName,
sexList,
sex,
disignTypeList,
designTypeList,
designType,
imgList,
currentPage,
@@ -519,7 +513,6 @@ export default defineComponent({
isShowMark,
store,
uploadGenerate,
checkbox,
inputShow,
generateCheckbox,
captionGeneration,
@@ -537,11 +530,13 @@ export default defineComponent({
isGenerate,
remGenerate,
remGenerateTime,
scene,
dragIdx,
getLibraryListInputTime,
props,
options,
isTextarea,
workspace,
}
},
data(this_) {
@@ -560,6 +555,7 @@ export default defineComponent({
timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,
},
token: "",
isInputFocus:false,
};
},
watch:{
@@ -585,6 +581,9 @@ export default defineComponent({
this.getClass()
this.getSex()
this.token = getCookie("token") || "";
this.workspace = computed(()=>{
return this.store?.state?.Workspace?.workspace
})
},
methods:{
@@ -606,31 +605,36 @@ export default defineComponent({
})
},
async getPosition(){
let params
if(this.sex.value == 'Female'){
params = 'FemalePosition'
}else{
params = 'MalePosition'
}
await Https.axiosGet(Https.httpUrls.workspaceenumValues,{params:{enumName:params}}).then((rv: any) => {
if (rv) {
let arr:any = []
rv.forEach((item:any) => {
arr.push({
value:item.name,
label:item.value,
name:item.value
})
});
this.designType = arr[0]
this.disignTypeList = arr
// this.workspaceItem.position = this.totalTypeList[0].label
}
})
// let params
// if(this.sex.value == 'Female'){
// params = 'FemalePosition'
// }else{
// params = 'MalePosition'
// }
this.store.commit('setPosition',this.sex.value)
this.designType = this.designTypeList.Sketchboard[0]
// await Https.axiosGet(Https.httpUrls.workspaceenumValues,{params:{enumName:params}}).then((rv: any) => {
// if (rv) {
// let arr:any = []
// rv.forEach((item:any) => {
// arr.push({
// value:item.name,
// label:item.value,
// name:item.value
// })
// });
// this.designType = arr[0]
// this.designTypeList['Sketchboard'] = arr
// // this.workspaceItem.position = this.totalTypeList[0].label
// }
// })
},
likeFile(item:any,str:string){
let designType = this.selectCode == 'Sketchboard' || this.selectCode == 'MarketingSketch' ? item.category : ''
let designType = ''
if(this.selectCode == 'Sketchboard' || this.selectCode == 'DesignElements' || this.selectCode == 'Printboard'){
designType = this.designType.value
}
if(str == 'like'){
let data = {
generateDetailId:item.id,
@@ -668,42 +672,29 @@ export default defineComponent({
this.total = 0,
this.searchPictureName = ''
this.imgList = [],
// this.sex = 'Female',
// this.designType = 'Outwear',
this.selectImgList = []
this.isTextarea = false
this.value.labelValue = []
this.getLibraryList('')
this.getClass()
if(this.designTypeList[this.selectCode].length >= 1){
this.designType = this.designTypeList[this.selectCode][0]
}else{
this.designType = {
name:'',
value:'',
}
}
if(this.selectCode == 'Models')this.uploadGenerate = 'Upload'
if(this.selectCode == 'Printboard')this.uploadGenerate = 'Upload'
if(this.selectCode != 'DesignElements'){
this.getClass()
}
this.getLibraryList('')
this.captionGeneration = ''
this.selectGenerateList = []
// this.generateList = {
// 'Sketchboard':[],
// 'Moodboard':[],
// 'Printboard':[]
// }
this.inputShow = false
}
this.upload.level1Type = menu.code
}
if(this.selectCode == 'Sketchboard'){
this.checkbox=[
{
name: "image",
type: false,
},
{
name: "text",
type: true,
},
{
name: "text-image",
type: false,
},
]
}
},
async sexChange(){
@@ -933,7 +924,10 @@ export default defineComponent({
// message.info(this.t('isTest.image'));
// return
// }
let designType = this.selectCode == 'Sketchboard' || this.selectCode == 'MarketingSketch' ? this.designType.value : ''
let designType = ''
if(this.selectCode == 'Sketchboard' || this.selectCode == 'DesignElements' || this.selectCode == 'Printboard'){
designType = this.designType.value
}
let new_data = {
file:event.file,
level1Type:this.selectCode,
@@ -1001,7 +995,10 @@ export default defineComponent({
this.value.labelValue.forEach((item:any)=>{
labelArr.push(item[item.length-1])
})
let designType = this.selectCode == 'Sketchboard' || this.selectCode == 'MarketingSketch' ? this.designType.value : ''
let designType = ''
if(this.selectCode == 'Sketchboard' || this.selectCode == 'DesignElements' || this.selectCode == 'Printboard'){
designType = this.designType.value
}
let data = {
classificationIdList:labelArr,
level1Type:this.selectCode,
@@ -1020,13 +1017,12 @@ export default defineComponent({
this.isShowMark = true
Https.axiosPost(Https.httpUrls.queryLibraryPage,data).then(
(rv: any) => {
if(rv.content.length == 0 && this.currentPage != 1){
if(rv.content?.length == 0 && this.currentPage != 1){
this.currentPage = 1
this.getLibraryList('')
}else{
this.imgList = rv.content
this.total = rv.total
this.newSearchPictureName = this.searchPictureName
this.isShowMark = false
}
}
@@ -1050,25 +1046,17 @@ export default defineComponent({
placementClick(data:any){
let placementModal:any = isMoible() ? this.$refs.ModelPlacementMobile : this.$refs.ModelPlacement
placementModal.showPlacementModal(data,this.sex)
},
//generate
setKeyword(num: any) {
this.checkbox.forEach((v: any) => {
v.type = false;
});
nextTick().then(()=>{
this.checkbox[num].type = true
if(this.checkbox[1].type){
this.selectGenerateList.forEach((v:any)=>{
v.checked = false
})
}
})
},
setTextareaShow(){
if(this.checkbox[0].type && this.selectCode != 'Moodboard') return
this.isTextarea = !this.isTextarea
},
cliSetKeyword(value:any){
let str = ''
if(this.captionGeneration[this.captionGeneration.length-1] != ',' && this.captionGeneration.length != 0){
str = ','
}
this.captionGeneration += str + value
},
ifMaximumLength(){
clearTimeout(this.inputTime)
this.inputTime = setTimeout(()=>{
@@ -1080,16 +1068,41 @@ export default defineComponent({
}
},500)
},
inputFocus(){
if(this.isInputFocus) return
this.isInputFocus = true
let setDomCli = ()=>{
this.isInputFocus = false
document.removeEventListener('click',setDomCli)
}
setTimeout(()=>{
document.addEventListener('click',setDomCli)
},200)
},
generateFileUploadChange(data:any){
let file = data.file;
let bor = true
if (file.status === "done") {
let res:any = JSON.parse(file.xhr.response);
if(res.errCode == 0){
let category:any={
value:'',
name:'',
}
file.id = res.data.id;
file.imgUrl = res.data.url;
file.resData = res.data;
file.type_ = "upload";
if(this.designTypeList[this.selectCode] && this.selectCode == 'Sketchboard'){
this.designTypeList[this.selectCode].forEach((item:any) => {
if(item.name == res.data.level2Type){
category.value = item?.value
category.name = item?.name
}
});
}
file.categoryValue = category?.value;
file.category = category?.name;
}else{
bor = false
}
@@ -1114,21 +1127,6 @@ export default defineComponent({
deleteFile(index: any) {
this.selectGenerateList.splice(index, 1);
},
setSketchboardItem(item:any){
if(this.checkbox[1].type){
return
}
if(item.checked){
item.checked = false
}else{
this.selectGenerateList.forEach((v:any)=>{
if(v.checked){
v.checked = false
}
})
item.checked = true
}
},
PrintModel(){
if(!this.printModel.optype){
@@ -1154,79 +1152,36 @@ export default defineComponent({
if(this.isGenerate[selectCodeStr]){
return
}
let arr = ["Painting Style","Illustration Style","Real Style"]
let generateType = this.checkbox.filter((v:any)=>v.type)[0].name
if(selectCodeStr == 'Moodboard'){
generateType = this.checkbox[1].name
let level2Type = ''
let collectionElementId = ''
let base64 = ''
if(this.selectGenerateList?.[0]){
level2Type = this.selectGenerateList[0].categoryValue?this.selectGenerateList[0].categoryValue:''
collectionElementId = this.selectGenerateList[0].id
if(this.selectGenerateList[0].base64){
base64 = this.selectGenerateList[0].imgUrl
}
let generageImg = this.selectGenerateList.filter((v:any)=>v.checked)[0]
}
if(this.selectCode == "Sketchboard"){
console.log(this.selectGenerateList);
}else if(this.selectCode == "Printboard"){
level2Type = this.scene?.value
}
let arr = ["Painting Style","Illustration Style","Real Style"]
let data = {
generateType:generateType,
generateType:'text',
designType:'collection',
collectionElementId:generageImg?.id,
collectionElementId:collectionElementId,
level1Type:selectCodeStr,
level2Type:selectCodeStr == 'Sketchboard'?this.designType.value:'',
level2Type:level2Type,
userId:(this?.userInfo as any).userId,
isTestUser:this.driver__.driver?false:this.isTest,
text:selectCodeStr == 'Printboard'?`${arr[this.printModel.num-1]},${this.captionGeneration}`:this.captionGeneration,
timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone,
version:1,//为1就是Print
gender:selectCodeStr == 'Sketchboard'?this.sex.value:'',
base64:base64,
}
if(generateType == 'image'){
if(generageImg?.id){
data.text = arr[this.printModel.num-1]
}else{
message.info(
this.t('LibraryPage.jsContent9')
);
return
}
}else if(generateType == 'text'){
data.collectionElementId = ''
data.level2Type = ''
// this.beforeUpload(false)
if(this.captionGeneration){
let arr = this.captionGeneration.split(/\s+/).length
if(arr > 250){
message.info(
this.t('LibraryPage.jsContent6')
);
return
}
}else{
message.info(
this.t('LibraryPage.jsContent7')
);
return
}
}else if(generateType == 'text-image'){
if(generageImg?.id){
if(this.captionGeneration){
let arr = this.captionGeneration.split(/\s+/).length
if(arr > 250){
message.info(
this.t('LibraryPage.jsContent6')
);
return
}
}else{
message.info(
this.t('LibraryPage.jsContent7')
);
return
}
}else{
message.info(
this.t('LibraryPage.jsContent9')
);
return
}
}
// this.isShowMark = true
this.isGenerate[selectCodeStr] = true
this.isTextarea = false
Https.axiosPost(Https.httpUrls.generatePrepare, data).then(
@@ -1249,12 +1204,6 @@ export default defineComponent({
return
}
}
// rv.uniqueId.forEach((item:any) => {
// let arr:any = {}
// arr.taskId = item
// arr.status = 'execution'
// this.generateList[selectCodeStr].unshift(arr)
// });
this.setGenerate(selectCodeStr,rv.uniqueId)
}
@@ -1278,7 +1227,7 @@ export default defineComponent({
rv.forEach((element:any) => {
if(element.status === 'Success'){
element.imgUrl = element.url
this.disignTypeList.forEach((itemCategory:any) => {
this.designTypeList[this.selectCode].forEach((itemCategory:any) => {
if(itemCategory.value == element.category){
element.categoryValue = itemCategory?.label
element.category = itemCategory?.value
@@ -1376,7 +1325,6 @@ export default defineComponent({
},
getClass(){
let designType = this.selectCode == 'Sketchboard' || this.selectCode == 'MarketingSketch' ? this.designType.value : ''
let data = {
"classificationIdList": [],
"classificationName": "",
@@ -1449,7 +1397,8 @@ export default defineComponent({
display: flex;
padding-top: 2rem;
.library_body_left{
width: 27.5rem;
// width: 27.5rem;
width: 36.5rem;
height: 100%;
background: rgba(255,255,255,0.4);
margin-right: 5rem;
@@ -1715,57 +1664,14 @@ export default defineComponent({
}
}
.input_border{
padding-bottom: 0;
background: rgba(0, 0, 0, 0);
padding: 0;
.input_box{
background:initial;
position: relative;
padding: 1.5rem 0;
padding: 0;
// &:hover{
// .search_textarea{
// display: block
// }
// }
input{
width: 30rem;
width: 50rem;
.input_box_btnBox{
background: #fff;
align-items: center;
.search_input{
height: 3rem;
&.active{
cursor: no-drop;
}
}
.icon-xiala{
display: inline-block;
cursor: pointer;
transition: all .3s;
&.active{
transform: rotate(180deg);
}
&.forbidden{
cursor: no-drop;
}
}
.search_textarea{
z-index:3;
height: auto;
position: absolute;
left: 0;
width: 30rem;
border-radius: 4px;
height: 20rem;
top: .5rem;
border: 1px solid #dcdfe6;
&.forbidden{
cursor: no-drop;
}
}
.started_btn{
}
.generage_btn{
margin: 0 3rem;
}
}
}
@@ -1773,6 +1679,7 @@ export default defineComponent({
.printModel{
font-size: 1.4rem;
font-weight: 500;
margin-right: 2rem;
>div{
width: 13rem;
// display: flex;
@@ -1809,38 +1716,6 @@ export default defineComponent({
}
}
}
.upload_item{
margin-left: 4rem;
.upload_file_item{
width: 8rem;
height: 8rem;
margin: 0;
margin-right: 2rem;
.delete_file_block{
width: 3rem;
height: 3rem;
display: flex;
align-items: center;
justify-content: center;
opacity: 0;
span{
font-size: 1.4rem;
}
}
}
.upload_component{
margin: 0;
}
}
.upload_item:hover{
.upload_file_item{
.delete_file_block{
opacity: 1;
}
}
}
}
}