Files
aida_front/src/views/HomeView/library.vue

2293 lines
81 KiB
Vue
Raw Normal View History

2023-01-06 16:00:15 +08:00
<template>
<div class="library_page">
<div class="page_content">
2023-10-20 17:21:45 +08:00
<!-- <img
2023-01-06 16:00:15 +08:00
class="page_content_bg"
src="@/assets/images/homePage/bg.png"
2023-10-20 17:21:45 +08:00
/> -->
2023-01-06 16:00:15 +08:00
<div class="page_content_body">
2024-03-21 10:49:21 +08:00
<!-- <HeaderComponent></HeaderComponent> -->
2023-01-06 16:00:15 +08:00
<div class="library_page_body">
<div class="library_body_left">
2023-10-20 17:21:45 +08:00
<div>
<div class="library_menu_list" v-for="(menu,index) in menuList" :key="menu.title">
<div :class="['menu_item', selectCode==menu.code ? 'select_menu_item' :'']" @click="selectMenuItem(menu,index)">
<div class="menu_item_left">
<i :class="[menu.icon]"></i>
<div>{{menu.title}}</div>
</div>
2024-06-01 10:02:21 +08:00
<!-- <div v-show="menu.children.length" :class="['icon','iconfont', 'icon-xiala', menu.showChildren?'icon_rotate':'']"></div> -->
2023-10-20 17:21:45 +08:00
</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)">
{{child.title}}
</div>
</div>
</div>
</div>
2023-01-06 16:00:15 +08:00
</div>
<div class="library_body_right">
<div class="library_right_header">
<div class="library_header_left">
2023-11-22 09:37:30 +08:00
<div class="header_operate_item pointer" :class="{operate_select:uploadGenerate == 'Upload'}" @click="uploadGenerateOpen('Upload')">
<div>{{ $t('LibraryPage.Organize') }}</div>
2023-01-06 16:00:15 +08:00
</div>
2024-06-17 09:39:01 +08:00
<div v-show="selectCode != 'Models' && selectCode != 'DesignElements'" class='header_operate_item pointer' :class="{operate_select:uploadGenerate == 'Generate'}" @click="uploadGenerateOpen('Generate')">{{ $t('LibraryPage.Generate') }}</div>
2023-01-06 16:00:15 +08:00
</div>
<div class="librart_headr_right">
2024-06-01 10:02:21 +08:00
<div class="select_block" v-show="selectCode == 'Sketchboard' || selectCode == 'Models'|| selectCode == 'DesignElements'|| selectCode == 'Printboard'" >
2023-10-11 17:34:14 +08:00
<a-select
ref="select"
2024-06-01 10:02:21 +08:00
v-show="selectCode != 'DesignElements' && selectCode != 'Printboard'"
v-model:value="sex"
2023-10-11 17:34:14 +08:00
:options="sexList"
2024-10-20 15:58:29 +08:00
:fieldNames="{ label: 'name', value: 'value' }"
2023-10-11 17:34:14 +08:00
@change="sexChange"
>
<template #suffixIcon
><span
class="icon iconfont icon-xiala"
style="color: #343579"
></span
></template>
</a-select>
2023-01-06 16:00:15 +08:00
<a-select
ref="select"
2024-06-01 10:02:21 +08:00
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"
2024-10-18 13:28:21 +08:00
v-show="designTypeList[selectCode]?.[0]?.value && selectCode == 'Sketchboard' && uploadGenerate != 'Generate'"
2024-06-17 09:39:01 +08:00
v-model:value="designType"
2024-06-01 10:02:21 +08:00
:options="designTypeList[selectCode]"
2023-01-06 16:00:15 +08:00
@change="handleChange"
2024-06-01 10:02:21 +08:00
:fieldNames="{ label: 'name', value: 'value' }"
2023-01-06 16:00:15 +08:00
>
<template #suffixIcon
><span
class="icon iconfont icon-xiala"
style="color: #343579"
></span
></template>
2024-10-18 13:28:21 +08:00
</a-select>
<a-select
ref="select"
v-show="SketchGenerateTypeList?.[0]?.value && selectCode == 'Sketchboard' && uploadGenerate == 'Generate'"
v-model:value="SketchGenerateType"
:options="SketchGenerateTypeList"
@change="setSketchGenerateType"
:fieldNames="{ label: 'name', value: 'value' }"
>
<template #suffixIcon
><span
class="icon iconfont icon-xiala"
style="color: #343579"
></span
></template>
2023-01-06 16:00:15 +08:00
</a-select>
</div>
</div>
</div>
<div class="libray_right_content">
2023-10-20 17:21:45 +08:00
<div class="right_content_body" v-show="uploadGenerate =='Upload'">
2024-06-17 09:39:01 +08:00
<div class="content_body_header" v-show="selectCode == 'DesignElements'">
<div style="font-size:1.5rem;">{{ $t('LibraryPage.generated') }}</div>
2024-06-17 09:39:01 +08:00
</div>
<!-- <div class="content_body_header"> -->
<div class="content_body_header" v-show="selectCode != 'DesignElements'">
2023-10-20 17:21:45 +08:00
<div class="content_body_header_left">
2024-01-10 09:34:32 +08:00
<div class="content_body_header_right">
2023-11-22 09:37:30 +08:00
<div :class="['header_operate_item' , 'fontSize','active']">
<a-upload
:capture="null"
2023-11-22 09:37:30 +08:00
v-show="uploadGenerate == 'Upload'"
:before-upload="beforeUpload"
:customRequest="customRequest "
:multiple="selectCode != 'Models'"
:maxCount="15"
accept=".jpg,.png,.jpeg,.bmp"
@change="fileUploadChange"
>
<div>{{ $t('LibraryPage.Upload') }}</div>
</a-upload>
</div>
2023-10-30 17:26:36 +08:00
<div :class="['header_operate_item' , 'fontSize',selectImgList.length>0?'active':'']" @click="deleteBatchPic()">{{ $t('LibraryPage.Delete') }}</div>
2024-01-04 14:51:57 +08:00
<div :class="['header_operate_item' , 'fontSize',selectImgList.length>0?'active':'']" @click="showRenameModal(selectImgList,'batch')">{{ $t('LibraryPage.Rename') }}</div>
2023-10-20 17:21:45 +08:00
</div>
<div class="content_search_block">
<input
class="search_input"
:placeholder="$t('LibraryPage.inputContent1')"
v-model="searchPictureName"
@keydown.enter="getLibraryList('')">
2023-11-16 09:44:53 +08:00
<div class="search_cascader">
2023-11-16 17:23:17 +08:00
<el-cascader
:options="options"
2023-11-22 17:05:09 +08:00
filterable
2023-11-16 17:23:17 +08:00
v-model="value.labelValue"
:collapse-tags="true"
:show-all-levels="false"
:clearable="true"
2023-11-29 16:30:17 +08:00
:placeholder="$t('LibraryPage.Select')"
2024-01-10 09:34:32 +08:00
:max-collapse-tags=3
:props="prop"
2023-11-16 17:23:17 +08:00
:collapse-tags-tooltip="true"
ref="cascader"
popper-class="libraryPageCascader"
@visible-change="dropdownVisibleChange"
>
2023-11-22 17:05:09 +08:00
<template #empty>
<div>
2023-11-29 16:30:17 +08:00
{{$t('LibraryPage.Select')}}
2023-11-22 17:05:09 +08:00
</div>
</template>
2023-11-16 17:23:17 +08:00
</el-cascader>
2023-11-16 09:44:53 +08:00
</div>
2023-11-22 09:37:30 +08:00
<div class="intersection">
<div :title="$t('LibraryPage.unionSet')" @click="()=>intersection = 1" v-show="intersection == 0" :class="['icon', 'iconfont','icon-bingji',]"></div>
<div :title="$t('LibraryPage.intersection')" @click="()=>intersection = 0" v-show="intersection == 1" :class="['icon', 'iconfont','icon-bingji1',]"></div>
</div>
2024-02-02 17:42:39 +08:00
<!-- <div class="search_icon_block" @click="getLibraryList('')"><span class="icon iconfont icon-sousuo"></span></div> -->
<div class="generage_btn search_icon_block" @click="getLibraryList('')"><span class="icon iconfont icon-sousuo"></span></div>
2023-10-20 17:21:45 +08:00
</div>
</div>
2023-01-06 16:00:15 +08:00
<div v-show="imgList.length" :class="['check_all_block',selectImgList.length == imgList.length ? 'check_all' : '']" @click="selectAllImg()">
<div class="check_block"><div class="check_block_body" v-show="selectImgList.length == imgList.length && imgList.length"></div></div>
2023-10-30 17:26:36 +08:00
<div>{{ $t('LibraryPage.all') }}</div>
2023-01-06 16:00:15 +08:00
</div>
</div>
<div class="content_body_table scroll_style">
2023-11-03 11:16:42 +08:00
<div class="content_img_item" v-for="(img,index) in imgList" :key="img.id" @click="selectImgItem(img)" :draggable="true">
2023-01-06 16:00:15 +08:00
<div :class="['content_img_item_block', selectImgList.indexOf(img.id) > -1 ? 'select_item_img' :'']">
<img v-lazy="img.url" :key="img.url" :class="['content_img', ['Moodboard','Printboard'].indexOf(selectCode) > -1 ? 'board_content_img' :'']"/>
2024-06-17 09:39:01 +08:00
<div class="img_item_hover" v-show="selectCode != 'DesignElements'">
2023-01-06 16:00:15 +08:00
<div class="img_operate_content">
2023-11-30 10:54:22 +08:00
<div class="img_operate_block" :title="t('LibraryPage.Point')" @click.stop="editPlacementClick(img)" v-show="selectCode === 'Models'">
<span class="icon iconfont icon-dianwei operate_icon"></span>
2023-01-06 16:00:15 +08:00
</div>
2024-03-04 16:11:50 +08:00
<div class="img_operate_block" :title="t('LibraryPage.Rename')" @click.stop="showRenameModal(img,'total')">
2023-11-30 10:54:22 +08:00
<span class="icon iconfont icon-tianxie operate_icon"></span>
2023-01-06 16:00:15 +08:00
</div>
2023-11-30 10:54:22 +08:00
<div class="img_operate_block" :title="t('LibraryPage.Delete')" @click.stop="deleteSinglePic(img,index)">
2023-01-06 16:00:15 +08:00
<span class="icon iconfont icon-shanchu operate_icon"></span>
</div>
</div>
</div>
</div>
<div class="content_img_name">{{img.name}}</div>
</div>
<div class="no_data_block" v-show="!imgList.length && !isShowMark">
<img src="@/assets/images/homePage/null_img.png">
</div>
</div>
<div class="table_pagination" v-show="imgList.length">
<a-pagination
v-model:current="currentPage"
v-model:pageSize="pageSize"
:total="total"
:showQuickJumper="true"
:showSizeChanger="false"
@change="changePage"
/>
</div>
</div>
2023-10-20 17:21:45 +08:00
<div class="right_content_body" v-show="uploadGenerate !='Upload'">
<div class="content_body_header content_body_header_generate">
2024-06-01 10:02:21 +08:00
<div class="content_body_header_right"></div>
<!-- <div v-show="selectCode == 'Printboard' && scene?.value == 'Pattern'" class="printModel">
2024-06-01 10:02:21 +08:00
<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> -->
<generalMenu v-if="printModelList" class="printModel" v-show="selectCode == 'Printboard' && scene?.value == 'Pattern'" :dataList="printModelList" :isCanvas="selectCode == 'Sketchboard'" @setprintModel="setprintModel" :item="printModel"></generalMenu>
2024-04-15 16:09:33 +08:00
<div class="input_border">
<div class="input_box" :class="{active:inputShow}">
<div class="input_box_btnBox" v-if="scene?.value != 'extract'">
2024-06-17 15:15:13 +08:00
<div class="upload_item" v-show="selectCode !== 'Moodboard' && ((selectCode == 'Printboard' && scene?.value == 'Pattern') || (selectCode == 'Printboard' && scene?.value == 'Slogan') || selectCode == 'Sketchboard')">
2024-06-01 10:02:21 +08:00
<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>
<!-- <a-popover>
2024-06-17 11:32:31 +08:00
<template #content>
<p>Seed</p>
</template>
2024-06-20 10:36:45 +08:00
<input class="search_seed" max="9999" v-show="selectCode == 'Printboard' && scene?.value == 'Logo'" @input="ifSeedValue" v-model="searchPictureSeed" type="Number" placeholder='Seed' min="0">
</a-popover> -->
2024-06-01 10:02:21 +08:00
<input
class="search_input "
@input="ifMaximumLength"
:maxlength='inputShow?0:9999'
@keydown.enter="getgenerate"
@click="inputFocus()"
:placeholder="(scene?.value == 'Slogan' && selectCode == 'Printboard')?isSloganHint:$t('LibraryPage.inputContent2')"
2024-12-11 16:26:36 +08:00
@paste="onPaste"
2024-06-01 10:02:21 +08:00
v-model="captionGeneration">
2024-07-03 17:32:06 +08:00
<i class="fi fi-br-upload" :title="$t('Generate.uploadTitle')" v-show="!isTextarea && upload.level1Type !== 'Moodboard' && scene?.value != 'Slogan' && scene?.value != 'Logo'">
2024-06-01 10:02:21 +08:00
<a-upload
class="search_upImg"
:capture="null"
:action="uploadUrl + '/api/element/upload'"
list-type="picture-card"
:before-upload="beforeUpload"
:data="{
2024-10-18 13:39:02 +08:00
...upload,
gender:sex,
2024-06-01 10:02:21 +08:00
}"
:headers="{Authorization:token}"
v-model:file-list="selectGenerateList"
multiple
:maxCount="1"
accept=".jpg,.png,.jpeg,.bmp"
@change="generateFileUploadChange"
>
</a-upload>
</i>
2024-07-03 17:32:06 +08:00
<i v-show="selectCode == 'Printboard' && scene?.value == 'Slogan'" :title="$t('Generate.sloganTitle')" @click.stop="setSlogan" class="fi fi-rr-poll-h"></i>
2024-06-01 10:02:21 +08:00
<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>
<div class="input_box_btnBox" v-else>
<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>
<i class="fi fi-br-upload" style="margin-left: 2rem;" v-show="selectGenerateList.length == 0" :title="$t('Generate.uploadproduct')">
<a-upload
class="search_upImg"
:capture="null"
:action="uploadUrl + '/api/element/upload'"
list-type="picture-card"
:data="{
...upload,
2024-10-18 13:39:02 +08:00
gender:sex,
}"
:maxCount='1'
:headers="{ Authorization: token }"
v-model:file-list="selectGenerateList"
:before-upload="beforeUpload"
accept=".jpg,.png,.jpeg,.bmp"
@change="generateFileUploadChange"
>
</a-upload>
</i>
<div :title="$t('Generate.style')">
<generalMenu v-if="printModelList" class="printModel" :dataList="printModelList" :isCanvas="selectCode == 'Sketchboard'" @setprintModel="setprintModel" :item="printModel"></generalMenu>
</div>
</div>
2024-05-20 13:07:42 +08:00
<textarea
v-show="isTextarea "
class="search_textarea "
@input="ifMaximumLength"
:maxlength='inputShow?0:9999'
2024-06-01 10:02:21 +08:00
@keydown.enter="getgenerate"
2024-06-17 15:15:13 +08:00
@click.stop=""
2024-05-20 13:07:42 +08:00
v-model="captionGeneration"
></textarea>
2024-12-01 17:22:20 +08:00
<div class="generage_btn_box" v-show="!isGenerate[selectCode]">
<div class="generage_btn started_btn">
2024-12-01 20:45:37 +08:00
<div @click.stop="getgenerate">
<span v-if="
2024-12-01 17:22:20 +08:00
selectCode == 'Moodboard' ||
(selectCode == 'Printboard' && scene?.value == 'Pattern') ||
(selectCode == 'Sketchboard' && scene?.value == 'generate')">{{ speedData.label }}</span>
2024-12-01 20:45:37 +08:00
<span v-else>{{ $t('LibraryPage.Generate') }}</span>
</div>
2024-12-01 17:22:20 +08:00
<div class="icon iconfont icon-xiala" v-show="
selectCode == 'Moodboard' ||
(selectCode == 'Printboard' && scene?.value == 'Pattern') ||
(selectCode == 'Sketchboard' && scene?.value == 'generate')" :class="{active:speedState}" @click.stop="openSpeed"></div>
</div>
<div class="content" v-show="speedState">
<div v-for="item in speedList" :key="item.value" @click="setSpeed(item)" :title="item.title">{{ item.label }}</div>
</div>
2024-04-25 17:16:34 +08:00
</div>
2024-04-26 16:37:15 +08:00
<div v-show="isGenerate[selectCode] && !remGenerate[selectCode]" class="generage_btn started_btn" @click.stop="getgenerate">
2024-04-25 17:16:16 +08:00
<i class="fi fi-br-loading"></i>
</div>
2024-04-26 16:33:41 +08:00
<div v-show="remGenerate[selectCode]" @click="removeGenerate" class="generage_btn started_btn">
{{$t('Generate.Close')}}
</div>
2024-06-01 10:02:21 +08:00
<span class="inputShowText" ref="inputShowText"></span>
2024-04-15 16:09:33 +08:00
</div>
2024-06-20 10:36:45 +08:00
<div class="search_keyword" v-if="workspace?.allKeywordsByStyle" v-show="isInputFocus" @click.stop="">
2024-06-01 10:02:21 +08:00
<div class="search_keyword_center">
<div class="search_keyword_center_left">
2024-06-20 10:36:45 +08:00
<div v-for="item in workspace?.allKeywordsByStyle?.[selectCode]" @click.stop="cliSetKeyword(item)" class="search_keyword_center_item"> {{item}} </div>
2023-10-20 17:21:45 +08:00
</div>
</div>
</div>
</div>
</div>
<div class="content_body_table scroll_style">
<div class="content_img_item" v-for="(img,index) in generateList[selectCode]" :key="img.id" :class="[img.status != 'Success'?'hideEvents':'']" v-show="img.status == 'Success'"
:draggable="!isGenerate[selectCode]" @dragstart="startDrag($event,index)" @dragover.prevent @drop="drop($event,index)">
2023-10-20 17:21:45 +08:00
<div :class="['content_img_item_block', selectImgList.indexOf(img.id) > -1 ? 'select_item_img' :'']">
<!-- <img v-show="img.status != 'Success'" :class="['content_img', ['Moodboard','Printboard'].indexOf(selectCode) > -1 ? 'board_content_img' :'']" src="@/assets/images/homePage/loading.gif" alt=""> -->
<img :class="['content_img', ['Moodboard','Printboard'].indexOf(selectCode) > -1 ? 'board_content_img' :'']" v-lazy="img.imgUrl">
<div class="img_item_hover">
2023-10-20 17:21:45 +08:00
<div class="img_operate_content">
<div class="img_operate_block" :title="t('LibraryPage.Delete')" @click.stop="deleteGenerate(index)">
<span class="icon iconfont icon-shanchu operate_icon"></span>
2023-10-20 17:21:45 +08:00
</div>
</div>
2024-01-02 13:04:57 +08:00
<div class="img_operate_content left" :class="[driver__.driver?'hideEvents':'']">
<div class="img_operate_block">
<i class="fi fi-bs-expand-arrows-alt" @click.stop="scaleImage(index)"></i>
</div>
<div class="img_operate_block">
<i v-if="!img.like" class="fi fi-rr-heart operate_icon" @click.stop="likeFile(img,'like')"></i>
2024-05-16 09:41:16 +08:00
<i v-else class="fi fi-sr-heart operate_icon" :adminLike="!!img.like" @click.stop="likeFile(img,'noLike')"></i>
2024-01-02 13:04:57 +08:00
</div>
</div>
2023-11-15 09:59:24 +08:00
</div>
2024-06-01 10:02:21 +08:00
<sketchCategory v-show="selectCode == 'Sketchboard'" :disignTypeList="designTypeList[selectCode]" :generateList="generateList['Sketchboard']" :item="img"></sketchCategory>
2023-10-20 17:21:45 +08:00
</div>
2023-10-31 16:04:40 +08:00
<div class="content_img_name"></div>
2023-10-20 17:21:45 +08:00
</div>
2024-04-25 17:16:16 +08:00
<div class="no_data_block" v-show="!generateList[selectCode].length && !isShowMark">
2023-10-20 17:21:45 +08:00
<img src="@/assets/images/homePage/null_img.png">
</div>
</div>
</div>
2023-01-06 16:00:15 +08:00
</div>
</div>
</div>
</div>
</div>
2024-02-19 15:30:49 +08:00
<searchLabel ref="searchLabel"></searchLabel>
2024-10-18 13:39:02 +08:00
<scaleImage ref="scaleImage" :isCanvas="selectCode == 'Sketchboard'" :workspace="{sexEnum:{value:sex}}"></scaleImage>
2023-01-06 16:00:15 +08:00
<ModelPlacement ref="ModelPlacement" @submitModelPlacement="getLibraryList"></ModelPlacement>
2023-11-28 16:21:00 +08:00
<ModelPlacementMobile ref="ModelPlacementMobile" @submitModelPlacement="getLibraryList"></ModelPlacementMobile>
2023-11-07 09:30:25 +08:00
<setLabel ref="setLabel"></setLabel>
2024-06-17 09:39:01 +08:00
<createSlogan ref="createSlogan" @setSloganData="setSloganData"></createSlogan>
2023-01-06 16:00:15 +08:00
<!-- 蒙层 start-->
<div class="mark_loading" v-show="isShowMark || getLangIsShowMark">
<a-spin size="large" />
</div>
2023-01-06 16:00:15 +08:00
<!-- 蒙层 end-->
2024-03-21 10:49:21 +08:00
<!-- <RobotAssist></RobotAssist> -->
2023-10-11 17:34:14 +08:00
2023-01-06 16:00:15 +08:00
</div>
</template>
<script lang="ts">
2023-10-20 17:21:45 +08:00
import { LoadingOutlined } from "@ant-design/icons-vue";
2024-12-01 17:22:20 +08:00
import { defineComponent,h ,ref,createVNode,nextTick,watch,provide,computed,reactive,toRefs} from 'vue'
2024-03-21 10:49:21 +08:00
// import HeaderComponent from "@/component/HomePage/Header.vue";
2023-01-06 16:00:15 +08:00
import ModelPlacement from '@/component/LibraryPage/ModelPlacement.vue';
// import ModelPlacement from '@/component/LibraryPage/ModelPlacementUpdata.vue';
2023-11-07 09:30:25 +08:00
import setLabel from '@/component/LibraryPage/setLabel.vue';
2023-01-06 16:00:15 +08:00
import ModelPlacementMobile from '@/component/LibraryPage/ModelPlacementMobile.vue';
2024-02-19 15:30:49 +08:00
import searchLabel from '@/component/LibraryPage/searchLabel.vue';
2024-03-21 10:49:21 +08:00
// import RobotAssist from "@/component/HomePage/RobotAssist.vue";
2023-11-03 11:16:42 +08:00
import { Modal,message,Upload,CascaderProps } from 'ant-design-vue';
2023-01-06 16:00:15 +08:00
import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
import {getUploadUrl,isMoible} from '@/tool/util'
2023-10-11 17:34:14 +08:00
import { useStore } from "vuex";
2023-01-06 16:00:15 +08:00
import { Https } from "@/tool/https";
2023-10-20 17:21:45 +08:00
import { getCookie } from "@/tool/cookie";
2024-01-02 13:04:57 +08:00
import scaleImage from "@/component/HomePage/scaleImage.vue";
import sketchCategory from "@/component/HomePage/sketchCategory.vue";
2023-10-30 17:26:36 +08:00
import { useI18n } from "vue-i18n";
2023-11-16 17:23:17 +08:00
import { ElCascader } from 'element-plus'
2024-01-24 10:34:05 +08:00
import { remove } from "jszip";
2024-06-17 09:39:01 +08:00
import createSlogan from "@/component/HomePage/createSlogan.vue";
import generalMenu from "@/component/HomePage/generalMenu.vue";
2024-10-18 11:43:29 +08:00
import { id } from "element-plus/es/locale";
2023-01-06 16:00:15 +08:00
export default defineComponent({
components: {
2024-03-21 10:49:21 +08:00
// HeaderComponent,
2023-01-06 16:00:15 +08:00
ModelPlacement,
2023-11-07 09:30:25 +08:00
setLabel,
2023-01-06 16:00:15 +08:00
ModelPlacementMobile,
2024-02-19 15:30:49 +08:00
searchLabel,
2024-03-21 10:49:21 +08:00
// RobotAssist,
2023-11-16 17:23:17 +08:00
ElCascader,
2024-01-02 13:04:57 +08:00
scaleImage,
sketchCategory,
2024-06-17 09:39:01 +08:00
createSlogan,
generalMenu,
2023-01-06 16:00:15 +08:00
},
props:{
getLangIsShowMark:{
type:Boolean,
2024-10-02 12:27:58 +08:00
default:true,
}
},
setup(props) {
2024-06-01 10:02:21 +08:00
const store = useStore();
2023-11-16 09:44:53 +08:00
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:[]},
2024-06-01 10:02:21 +08:00
// {title:'Market Sketch',code:'Elements',icon:'icon-fuwushichang',showChildren:false,children:[]},
2024-07-08 09:42:21 +08:00
{title:useI18n().t('LibraryPage.DesignElements'),code:'DesignElements',icon:'fi fi-ss-puzzle-piece',showChildren:false,children:[]},
2023-11-16 09:44:53 +08:00
{title:useI18n().t('LibraryPage.Mannequins'),code:'Models',icon:'fi fi-rs-people',showChildren:false,children:[]},
]
})
2023-01-06 16:00:15 +08:00
let selectImgList:any = ref([])
let selectCode:any = ref('Moodboard')
let searchPictureName = ref('')
2024-06-17 09:39:01 +08:00
let searchPictureSeed:any = ref(0);
2024-06-01 10:02:21 +08:00
let designType:any = ref({
name:'',
value:''
})
2024-06-20 10:36:45 +08:00
let sex:any = ref('')
// const sexList:any = []
let sexList:any = computed(()=>store.state.UserHabit.sex.value)
2024-06-01 10:02:21 +08:00
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 designTypeList:any = ref({
Sketchboard:positionType,
Moodboard:[],
Printboard:printType,
Models:[],
DesignElements:designElementsType,
})
2024-10-18 13:28:21 +08:00
let SketchGenerateTypeList = computed(()=>{
return store.state.UserHabit.SketchGenerateType
})
let SketchGenerateType = ref({})
2023-01-06 16:00:15 +08:00
let imgList = ref([])
let currentPage:any = ref(1)
let pageSize:any = ref(18)
let total:any = ref(20)
let uploadUrl:any = ref('')
let currentUploadFileNum:any = ref(0) //当次上传文件数量
let isShowMark:any = ref(false) //蒙层
2023-10-20 17:21:45 +08:00
let uploadGenerate:any = ref('Upload')
let inputShow = ref(false)
let generateCheckbox:any = ref()
2024-06-01 10:02:21 +08:00
let captionGeneration:any = ref('')
2023-10-20 17:21:45 +08:00
let inputTime = ref()
2024-04-25 17:16:16 +08:00
let generateList:any = ref({
Sketchboard:[],
Moodboard:[],
2024-04-26 16:33:41 +08:00
Printboard:[],
2024-06-01 10:02:21 +08:00
Models:[],
DesignElements:[],
2024-04-25 17:16:16 +08:00
})
2023-10-20 17:21:45 +08:00
let selectGenerateList:any = ref([])
let printModel = ref({
2024-10-18 11:43:29 +08:00
id:'',
num:1,
optype:false,
2024-10-18 11:43:29 +08:00
value:'',
2023-12-28 10:36:48 +08:00
name:useI18n().t('LibraryPage.Model1')
})
2023-10-30 17:26:36 +08:00
let {t} = useI18n()
2023-11-09 10:16:18 +08:00
let type:any = {
selectCode:selectCode,
}
provide('type',type)
2023-11-13 17:33:41 +08:00
let value = ref({
labelValue:[],
editLabelValue:[],
})
2023-11-16 17:23:17 +08:00
2023-11-22 09:37:30 +08:00
let intersection = ref(1)
2023-11-16 09:44:53 +08:00
let isTest = ref()
2024-01-02 13:04:57 +08:00
let driver__:any = computed(()=>{
return store.state.Guide.guide
})
2024-12-18 17:38:43 +08:00
let userDetail:any= computed(()=>{
return store.state.UserHabit.userDetail
})
2024-04-26 16:33:41 +08:00
let generateTime:any = ref({
Sketchboard:'',
Moodboard:'',
Printboard:'',
2024-06-01 10:02:21 +08:00
Models:'',
DesignElements:'',
2024-04-26 16:33:41 +08:00
})
let generateProceedList = ref([])
2024-04-26 16:37:15 +08:00
let isGenerate:any = ref({
Sketchboard:false,
Moodboard:false,
Printboard:false,
2024-06-01 10:02:21 +08:00
Models:false,
DesignElements:false,
2024-04-26 16:37:15 +08:00
})
2024-04-26 16:33:41 +08:00
let remGenerate:any = ref({
Sketchboard:false,
Moodboard:false,
Printboard:false,
2024-06-01 10:02:21 +08:00
Models:false,
DesignElements:false,
})
let remGenerateTime:any = ref({
2024-04-26 16:33:41 +08:00
Sketchboard:'',
Moodboard:'',
Printboard:'',
2024-06-01 10:02:21 +08:00
Models:'',
DesignElements:'',
2024-04-26 16:33:41 +08:00
})
2024-06-01 10:02:21 +08:00
let scene:any = ref({})
let dragIdx:any=ref(0)
2024-02-02 17:42:39 +08:00
let getLibraryListInputTime:any = ref()
2024-02-19 15:30:49 +08:00
const options:any = ref([
]);
let prop = {
2024-02-19 15:30:49 +08:00
multiple: true,
checkStrictly: true,
emitPath:true,
children:'childList',
value:'id',
label:'classificationName',
}
2024-05-20 13:07:42 +08:00
let isTextarea = ref(false)
let workspace:any = computed(()=>{
return store?.state?.Workspace?.workspace
})
let generateLevel2:any = {}
let isSloganHint:any = ref('')
let printModelList:any = ref([])
2024-12-01 17:22:20 +08:00
let speed = reactive({
speedList:[
2024-12-01 20:45:37 +08:00
{
2024-12-01 17:22:20 +08:00
title:'Picture quality is average, speed is fast',
2024-12-01 20:45:37 +08:00
label:'Low Quality',
2024-12-01 17:22:20 +08:00
value:'fast',
},{
title:'Picture quality is high, speed is slow',
2024-12-01 20:45:37 +08:00
label:'High Quality',
2024-12-01 17:22:20 +08:00
value:'high',
},
],
speedState:false,
speedData:{
title:'Picture quality is average, speed is fast',
2024-12-01 20:45:37 +08:00
label:'Low Quality',
2024-12-01 17:22:20 +08:00
value:'fast',
},
})
const openSpeed = ()=>{
speed.speedState = !speed.speedState
if(speed.speedState){
document.addEventListener('click',openSpeed)
}else{
document.removeEventListener('click',openSpeed)
}
}
const setSpeed = (item:any)=>{
speed.speedData = item
}
let getSex = () =>{
sex.value = store.state.UserHabit.sex.value[0].value
getPosition()
}
let getPosition = ()=>{
store.commit('setPosition',sex.value)
designType.value = designTypeList.value.Sketchboard?.[0].value
}
let getLibraryList = (str:any)=>{
let labelArr:any = []
value.value.labelValue.forEach((item:any)=>{
labelArr.push(item[item.length-1])
})
let design = ''
if(selectCode.value == 'Sketchboard' || selectCode.value == 'DesignElements' || selectCode.value == 'Printboard'){
design = designType.value
}
let data = {
classificationIdList:labelArr,
level1Type:selectCode.value,
level2Type:design,
page:1,
modelSex:sex.value?sex.value:'',
pictureName:searchPictureName.value,
size:pageSize.value,
intersection:intersection.value,
}
if(str == 'page'){
data.page = currentPage.value
}else{
currentPage.value = 1
}
isShowMark.value = true
Https.axiosPost(Https.httpUrls.queryLibraryPage,data).then(
(rv: any) => {
if(rv.content?.length == 0 && currentPage.value != 1){
currentPage.value = 1
getLibraryList('')
}else{
imgList.value = rv.content
total.value = rv.total
isShowMark.value = false
}
}
).catch((res)=>{
isShowMark.value = false
});
}
let getClass = ()=>{
let data = {
"classificationIdList": [],
"classificationName": "",
"createTime": "",
"deleteConfirm": '',
"id": '',
"libraryId": '',
"parentId": '',
"type": selectCode.value,
"updateTime": "",
"userId": ''
}
Https.axiosPost(Https.httpUrls.queryClassification, data).then(
(rv: any) => {
options.value = rv
rv.forEach((rvItem:any,rvIndex:number) => {
options.value[rvIndex].value = rvItem.id
options.value[rvIndex].label = rvItem.classificationName
rvItem.childList.forEach((childItem:any,index:number) => {
options.value[rvIndex].childList[index].value = childItem.id
options.value[rvIndex].childList[index].label = childItem.classificationName
});
});
}
).catch((res)=>{
});
}
2024-10-02 12:27:58 +08:00
watch(
() => props.getLangIsShowMark, // 这里使用了一个 getter 函数
(newValue, oldValue) => {
if(!newValue){
getLibraryList('')
getClass()
getSex()
}
},
{immediate: true,}
)
2023-01-06 16:00:15 +08:00
return {
menuList,
selectImgList,
selectCode,
searchPictureName,
2024-06-17 09:39:01 +08:00
searchPictureSeed,
2023-10-11 17:34:14 +08:00
sexList,
sex,
positionType,
2024-10-18 13:28:21 +08:00
SketchGenerateType,
SketchGenerateTypeList,
2024-06-01 10:02:21 +08:00
designTypeList,
2023-01-06 16:00:15 +08:00
designType,
imgList,
currentPage,
pageSize,
total,
uploadUrl,
currentUploadFileNum,
isShowMark,
2023-10-20 17:21:45 +08:00
store,
uploadGenerate,
inputShow,
generateCheckbox,
captionGeneration,
inputTime,
generateList,
selectGenerateList,
2023-10-30 17:26:36 +08:00
printModel,
2023-11-13 17:33:41 +08:00
value,
2023-10-31 16:04:40 +08:00
t,
2023-11-22 09:37:30 +08:00
intersection,
2023-11-16 09:44:53 +08:00
isTest,
2024-01-24 10:34:05 +08:00
driver__,
2024-12-18 17:38:43 +08:00
userDetail,
2024-01-24 10:34:05 +08:00
generateTime,
generateProceedList,
2024-01-24 10:34:05 +08:00
isGenerate,
2024-01-26 13:16:47 +08:00
remGenerate,
remGenerateTime,
2024-06-01 10:02:21 +08:00
scene,
dragIdx,
2024-02-02 17:42:39 +08:00
getLibraryListInputTime,
prop,
2024-02-19 15:30:49 +08:00
options,
2024-05-20 13:07:42 +08:00
isTextarea,
2024-06-01 10:02:21 +08:00
workspace,
generateLevel2,
isSloganHint,
2024-09-25 11:20:20 +08:00
getSex,
getPosition,
getLibraryList,
getClass,
printModelList,
2024-12-01 17:22:20 +08:00
...toRefs(speed),
openSpeed,
setSpeed,
2023-01-06 16:00:15 +08:00
}
2023-10-20 17:21:45 +08:00
},
data(this_) {
return {
indicator: h(LoadingOutlined, {
style: {
fontSize: "2.4rem",
},
spin: true,
}),
upload: {
isPin: 0,
2024-10-18 13:10:49 +08:00
gender:this_.sex,
2023-10-20 17:21:45 +08:00
level1Type: this_.selectCode,
timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone,
},
token: "",
2024-06-01 10:02:21 +08:00
isInputFocus:false,
2023-10-20 17:21:45 +08:00
};
2023-01-06 16:00:15 +08:00
},
2023-12-13 16:09:17 +08:00
watch:{
2024-02-02 17:42:39 +08:00
searchPictureName(newVal,oldVal){
2024-02-02 17:50:08 +08:00
// clearTimeout(this.getLibraryListInputTime)
// this.getLibraryListInputTime = setTimeout(() => {
// if(newVal != oldVal){
// this.currentPage = 1
// }
// }, 500);
2024-02-02 17:42:39 +08:00
},
scene:{
handler(newVal,oldVal){
if(this.selectCode == 'Printboard' && newVal.value == 'Slogan'){
let sloganType = ['Blue and Yellow Starry Night','Green Cthulhu','Red and yellow fire style','Cyberpunk style','City skyline buildings','Red maple leaves','Golden Sunflower','Emerald Jungle Canopy','Pink Sakura Blossom']
var randomNumber = Math.floor(Math.random() * sloganType.length);
this.isSloganHint = sloganType[randomNumber]
}else{
this.isSloganHint = ''
}
}
}
2023-12-13 16:09:17 +08:00
},
2023-10-12 17:09:05 +08:00
async mounted(){
2024-10-18 13:39:02 +08:00
this.upload.gender = this.sex
2023-11-20 09:47:10 +08:00
let isTest:any = getCookie('isTest')
2024-01-05 16:49:49 +08:00
this.isTest =JSON.parse(isTest)
2023-01-06 16:00:15 +08:00
this.uploadUrl = getUploadUrl()
this.token = getCookie("token") || "";
2023-01-06 16:00:15 +08:00
},
methods:{
2023-10-11 17:34:14 +08:00
2023-11-15 09:59:24 +08:00
likeFile(item:any,str:string){
2024-06-01 10:02:21 +08:00
let designType = ''
2024-07-18 11:29:59 +08:00
if(this.selectCode == 'DesignElements' || this.selectCode == 'Printboard'){
2024-06-17 09:39:01 +08:00
designType = this.designType
2024-07-18 11:29:59 +08:00
}else if(this.selectCode == 'Sketchboard'){
designType = item.categoryValue
2024-06-01 10:02:21 +08:00
}
2023-11-15 09:59:24 +08:00
if(str == 'like'){
let data = {
generateDetailId:item.id,
level1Type:this.selectCode,
2023-11-16 09:44:53 +08:00
level2Type: designType,
2024-06-20 10:36:45 +08:00
gender:this.sex,
2023-11-15 09:59:24 +08:00
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=>{
});
}
},
2023-01-06 16:00:15 +08:00
selectMenuItem(menu:any,index:any){
if(menu.children?.length){ //证明是有子菜单
menu.showChildren = !menu.showChildren
}else{
2023-11-16 09:44:53 +08:00
if(menu.code != this.upload.level1Type){
this.selectCode = menu.code
this.currentPage = 1,
this.total = 0,
this.searchPictureName = ''
this.imgList = [],
this.selectImgList = []
2024-05-20 13:07:42 +08:00
this.isTextarea = false
2023-12-13 16:09:17 +08:00
this.value.labelValue = []
2024-06-01 10:02:21 +08:00
if(this.designTypeList[this.selectCode].length >= 1){
2024-06-17 09:39:01 +08:00
this.designType = this.designTypeList[this.selectCode][0].value
2024-06-01 10:02:21 +08:00
}else{
2024-06-17 09:39:01 +08:00
this.designType = ''
2024-06-01 10:02:21 +08:00
}
if(this.selectCode != 'DesignElements'){
this.getClass()
}
2024-10-08 18:34:22 +08:00
if(this.selectCode == 'Sketchboard' || this.selectCode == 'Models')this.getSex()
if(this.selectCode == 'Sketchboard'){
this.positionType = computed(() => {
return this.store.state.UserHabit.Position;
});
this.printModelList = JSON.parse(JSON.stringify(this.store.state.UserHabit.SketchStyle))
let imgList = ['/image/sketch/sketch-fine.jpg','/image/sketch/sketch-medium.jpg','/image/sketch/sketch-thick.jpg']
this.printModelList.forEach((item:any,index:number)=>{
item.img = imgList[index]
})
}
if(this.selectCode == 'Printboard'){
this.printModelList = [
{
2024-11-29 13:49:15 +08:00
num:1,
optype:false,
value:'Painting Style',
label:this.t('Generate.Model1')
},{
2024-11-29 13:49:15 +08:00
num:2,
optype:false,
value:'Illustration Style',
label:this.t('Generate.Model2')
},{
2024-11-29 13:49:15 +08:00
num:3,
optype:false,
value:'Real Style',
label:this.t('Generate.Model3')
},
]
}
if(this.printModelList[0])this.printModel = this.printModelList[0]
2023-11-16 09:44:53 +08:00
this.captionGeneration = ''
this.selectGenerateList = []
2024-04-24 13:36:27 +08:00
this.inputShow = false
this.uploadGenerateOpen('Upload')
2023-11-16 09:44:53 +08:00
}
2023-10-20 17:21:45 +08:00
this.upload.level1Type = menu.code
2023-01-06 16:00:15 +08:00
}
},
2023-10-12 17:09:05 +08:00
async sexChange(){
2024-10-20 15:58:29 +08:00
// if(this.uploadGenerate == 'Generate' && this.selectCode == 'Sketchboard'){
// }else{
// // this.scene = this.designTypeList[this.selectCode].filter((item:any)=>item.value == this.designType)[0]
// await this.getPosition()
// }
await this.getPosition()
2024-06-17 09:39:01 +08:00
if(this.uploadGenerate == 'Generate')return
2024-02-02 17:42:39 +08:00
this.currentPage = 1
this.getLibraryList('')
2023-10-11 17:34:14 +08:00
},
2023-01-06 16:00:15 +08:00
handleChange(){
2024-06-17 09:39:01 +08:00
this.scene = this.designTypeList[this.selectCode].filter((item:any)=>item.value == this.designType)[0]
this.selectGenerateList = []
2024-06-24 10:10:33 +08:00
if(this.uploadGenerate == 'Generate'){
if(this.selectCode == 'Printboard'){
this.captionGeneration = ''
}
return
}
2024-02-02 17:42:39 +08:00
this.currentPage = 1
this.getLibraryList('')
2023-01-06 16:00:15 +08:00
},
2024-10-18 13:28:21 +08:00
setSketchGenerateType (){
this.selectGenerateList = []
this.scene = this.SketchGenerateTypeList.filter((item:any)=>item.value == this.SketchGenerateType)[0]
},
2023-01-06 16:00:15 +08:00
fileUploadChange(data:any){
let file = data.file
// let Cropper:any = this.$refs.Cropper
2023-11-20 09:47:10 +08:00
2023-01-06 16:00:15 +08:00
if(this.selectCode == 'Models'){
let reader = new FileReader();
//试用用户上传限制
// if(this.imgList.length+this.currentUploadFileNum > 10 && this.isTest){
// message.info(this.t('isTest.image'));
// return
// }
2023-01-06 16:00:15 +08:00
reader.onload = (e:any) => {
let data_new;
if (typeof e.target.result === 'object') {
// 把Array Buffer转化为blob 如果是base64不需要
data_new = window.URL.createObjectURL(new Blob([e.target.result]));
} else {
data_new = e.target.result;
}
this.placementClick({url:data_new,file:file.originFileObj})
};
// 转化为base64
// reader.readAsDataURL(file)
// 转化为blob
reader.readAsArrayBuffer(file.originFileObj);
}
},
//改变页码
changePage(current: number, pageSize: number){
this.currentPage = current
this.pageSize = pageSize
2024-02-02 17:42:39 +08:00
this.getLibraryList('page')
2023-01-06 16:00:15 +08:00
},
//选择图片
selectImgItem(imgData:any){
2024-06-17 09:39:01 +08:00
if(imgData.level2Type == "DesignElements")return
2023-01-06 16:00:15 +08:00
if(this.selectImgList.indexOf(imgData.id) === -1){
this.selectImgList.push(imgData.id)
}else{
let index = this.selectImgList.indexOf(imgData.id)
this.selectImgList.splice(index,1)
}
},
//选择所有的图片
selectAllImg(){
if(this.selectImgList.length == this.imgList.length){
this.selectImgList = []
}else{
this.selectImgList = this.imgList.map((v:any) => v.id)
}
},
//打开修改名称弹窗
showRenameModal(data:any,type:any){
2024-02-19 15:30:49 +08:00
let searchLabel:any = this.$refs.searchLabel
searchLabel.init(data,type)
return
2023-01-06 16:00:15 +08:00
},
2023-10-20 17:21:45 +08:00
uploadGenerateOpen(str:any){
2024-06-17 09:39:01 +08:00
// if(str == 'Generate'){
// if(this.selectCode == 'Printboard'){
// this.scene = this.designTypeList[this.selectCode][0]
// }
// }
2024-10-18 13:28:21 +08:00
// if(this.selectCode == 'Sketchboard' && str == 'Generate'){
// this.designTypeList.Sketchboard = computed(()=>{
// return this.store.state.UserHabit.SketchGenerateType
// })
// }else if(this.selectCode == 'Sketchboard'){
// this.designTypeList.Sketchboard = computed(() => {
// return this.store.state.UserHabit.Position;
// });
// }
2024-06-28 11:50:11 +08:00
if(this.designTypeList[this.selectCode][0]){
this.scene = this.designTypeList[this.selectCode][0]
this.designType = this.designTypeList[this.selectCode][0].value
}
2024-10-18 13:28:21 +08:00
if(str == 'Generate' && this.selectCode == 'Sketchboard'){
this.scene = this.SketchGenerateTypeList[0]
this.SketchGenerateType = this.SketchGenerateTypeList[0].value
}
if(str != 'Generate'){
this.getLibraryList('')
2023-10-20 17:21:45 +08:00
}
2023-11-16 09:44:53 +08:00
this.uploadGenerate = str
2023-10-20 17:21:45 +08:00
},
2023-01-06 16:00:15 +08:00
//删除单个图片
deleteSinglePic(data:any,index:any){
let _this = this
Modal.confirm({
2023-10-30 17:26:36 +08:00
title: this.t('LibraryPage.jsContent1'),
2023-01-06 16:00:15 +08:00
icon: createVNode(ExclamationCircleOutlined),
okText: 'Yes',
cancelText: 'No',
2023-10-30 17:26:36 +08:00
mask:false,
2023-11-27 16:25:32 +08:00
centered:true,
2023-01-06 16:00:15 +08:00
onOk() {
2024-10-20 15:58:29 +08:00
_this.confirmDeletePic(data,index,'')
2023-01-06 16:00:15 +08:00
}
});
},
deleteGenerate(index:any){
// if(this.isGenerate[this.selectCode])return
let num = this.generateList[this.selectCode].length
let _this = this
Modal.confirm({
title: this.t('LibraryPage.jsContent1'),
icon: createVNode(ExclamationCircleOutlined),
okText: 'Yes',
cancelText: 'No',
mask:false,
centered:true,
onOk() {
let a = _this.generateList[_this.selectCode].length - num
_this.generateList[_this.selectCode].splice(index-a,1)
}
});
},
startDrag(event:any, index:any) {
this.dragIdx = index
},
drop(event:any, index:any) {
let _teams = this.generateList[this.selectCode] //将hotteams存起来
let _dragitem = _teams[this.dragIdx] //将被拖拽的那条数据存起来
_teams.splice(this.dragIdx, 1) //删除被拖拽的那条数据
_teams.splice(index, 0, _dragitem)
},
2023-01-06 16:00:15 +08:00
//批量删除图片
deleteBatchPic(){
if(!this.selectImgList.length){
return
}
let _this = this
Modal.confirm({
2023-10-30 17:26:36 +08:00
title: this.t('LibraryPage.jsContent2'),
2023-01-06 16:00:15 +08:00
icon: createVNode(ExclamationCircleOutlined),
okText: 'Yes',
cancelText: 'No',
2023-11-27 16:25:32 +08:00
centered:true,
2023-01-06 16:00:15 +08:00
onOk() {
2024-10-20 15:58:29 +08:00
_this.confirmDeletePic('',0,'')
2023-01-06 16:00:15 +08:00
}
});
},
//确定删除图片 有data则是单个
2024-10-20 15:58:29 +08:00
confirmDeletePic(data:any,index:any,nData:any){
2023-01-06 16:00:15 +08:00
let libraryIds = data ? [data.id] : this.selectImgList
let newData = {
2023-11-22 15:41:46 +08:00
libraryIds:libraryIds,
2024-10-20 15:58:29 +08:00
deleteModelConfirm:this.selectCode == 'Models' ? data.deleteModelConfirm?data.deleteModelConfirm : 0:'',
2023-11-22 15:41:46 +08:00
timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone,
2023-01-06 16:00:15 +08:00
}
2024-10-20 15:58:29 +08:00
if(nData)newData = nData
2023-01-06 16:00:15 +08:00
Https.axiosPost(Https.httpUrls.batchDeleteLibrary, newData).then(
(rv: any) => {
if(data && data.id){
this.imgList.splice(index, 1)
}else{
this.selectImgList = []
2024-02-02 17:42:39 +08:00
this.getLibraryList('')
2023-01-06 16:00:15 +08:00
}
}
).catch((res)=>{
2024-10-20 15:58:29 +08:00
if(this.selectCode == "Models" && res.errCode === 2){
2023-11-16 17:23:17 +08:00
let _this = this
Modal.confirm({
title: res.errMsg,
icon: createVNode(ExclamationCircleOutlined),
okText: 'Yes',
cancelText: 'No',
mask:false,
zIndex:99999,
2023-11-27 16:25:32 +08:00
centered:true,
2023-11-16 17:23:17 +08:00
onOk() {
2024-10-20 15:58:29 +08:00
newData.deleteModelConfirm = 1
2024-05-22 14:08:50 +08:00
let id = _this.store.state.Workspace.workspace.id
Https.axiosGet(Https.httpUrls.workspaceDetail,{params:{id:id}}).then((rv: any) => {
if (rv) {
if(rv.position == "Overall"){
rv.overallSingle = false
}else{
rv.overallSingle = true
}
if(rv.sexEnum.name == 'Female'){
rv.mannequinUrl = rv.femalePresignedUrl
rv.mannequinType = rv.mannequinFemaleType
rv.mannequinId = rv.mannequinFemaleId
}else if(rv.sexEnum.name == 'Male'){
rv.mannequinUrl = rv.malePresignedUrl
rv.mannequinType = rv.mannequinMaleType
rv.mannequinId = rv.mannequinMaleId
}
_this.store.commit("setWorkspace", rv);
}
})
2024-10-20 15:58:29 +08:00
_this.confirmDeletePic('',index,newData)
2023-11-16 17:23:17 +08:00
},
onCancel(){
}
});
}
2023-01-06 16:00:15 +08:00
});
},
beforeUpload(file:any,fileList:any){
const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png' || file.type === 'image/jpg' || file.type === 'image/bmp';
if (!isJpgOrPng) {
2023-11-16 17:23:17 +08:00
message.info(this.t('LibraryPage.jsContent3'));
2023-01-06 16:00:15 +08:00
}
2024-06-17 09:39:01 +08:00
const isLt2M = file.size / 1024 / 1024 < 5;
2023-01-06 16:00:15 +08:00
if (!isLt2M) {
2023-11-16 17:23:17 +08:00
message.info(this.t('LibraryPage.jsContent4'));
2023-01-06 16:00:15 +08:00
}
2023-10-20 17:21:45 +08:00
if(isJpgOrPng && isLt2M){
this.currentUploadFileNum = fileList.length
}else{
return (isJpgOrPng && isLt2M) || Upload.LIST_IGNORE;
}
2023-01-06 16:00:15 +08:00
},
customRequest(event:any){
2023-10-20 17:21:45 +08:00
if(this.selectCode == "Models"){
return
}
//试用用户上传限制
// if(this.imgList.length+this.currentUploadFileNum > 10 && this.isTest){
// message.info(this.t('isTest.image'));
// return
// }
2024-06-01 10:02:21 +08:00
let designType = ''
if(this.selectCode == 'Sketchboard' || this.selectCode == 'DesignElements' || this.selectCode == 'Printboard'){
2024-06-17 09:39:01 +08:00
designType = this.designType
2024-06-01 10:02:21 +08:00
}
2023-01-06 16:00:15 +08:00
let new_data = {
file:event.file,
level1Type:this.selectCode,
level2Type:designType,
2024-06-20 10:36:45 +08:00
sex:this.selectCode == 'Sketchboard' ? this.sex:'',
2023-10-11 17:34:14 +08:00
modelType:'',
2023-10-20 17:21:45 +08:00
checkMd5:1,
2023-01-06 16:00:15 +08:00
timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone,
}
this.isShowMark = true
Https.axiosPost(Https.httpUrls.libraryUpload, new_data,{headers:{'Content-Type': 'multipart/form-data'}}).then(
(rv: any) => {
2023-10-20 17:21:45 +08:00
if(!rv.checkMd5){
this.affirmCstomRequest(new_data)
}else{
this.currentUploadFileNum --
if(!this.currentUploadFileNum){
2024-02-02 17:42:39 +08:00
this.getLibraryList('')
2023-10-20 17:21:45 +08:00
}
}
2023-01-06 16:00:15 +08:00
}
).catch((res)=>{
this.currentUploadFileNum --
if(!this.currentUploadFileNum){
2024-02-02 17:42:39 +08:00
this.getLibraryList('')
2023-01-06 16:00:15 +08:00
}
});
},
2023-10-20 17:21:45 +08:00
affirmCstomRequest(data:any){
let _this = this
Modal.confirm({
2023-10-30 17:26:36 +08:00
title: this.t('LibraryPage.jsContent5'),
2023-10-20 17:21:45 +08:00
icon: createVNode(ExclamationCircleOutlined),
okText: 'Yes',
cancelText: 'No',
mask:false,
2023-10-30 17:26:36 +08:00
zIndex:99999,
2023-11-27 16:25:32 +08:00
centered:true,
2023-10-20 17:21:45 +08:00
onOk() {
data.checkMd5 = 0
Https.axiosPost(Https.httpUrls.libraryUpload, data,{headers:{'Content-Type': 'multipart/form-data'}}).then(
(rv: any) => {
_this.currentUploadFileNum --
if(!_this.currentUploadFileNum){
2024-02-02 17:42:39 +08:00
_this.getLibraryList('')
2023-10-20 17:21:45 +08:00
}
}
).catch((res)=>{
_this.currentUploadFileNum --
if(!_this.currentUploadFileNum){
2024-02-02 17:42:39 +08:00
_this.getLibraryList('')
2023-10-20 17:21:45 +08:00
}
});
},
onCancel(){
_this.currentUploadFileNum --
if(!_this.currentUploadFileNum){
2024-02-02 17:42:39 +08:00
_this.getLibraryList('')
2023-10-20 17:21:45 +08:00
}
}
});
},
2023-01-06 16:00:15 +08:00
//编辑模特打点
editPlacementClick(data:any){
2023-12-14 15:09:07 +08:00
let name = data.name + '.'+data.url.split("?")[0].split(".").pop()
2023-01-06 16:00:15 +08:00
let newData = {
...data.libraryModelPoint,
url:data.url,
2023-12-14 15:09:07 +08:00
name:name,
2023-01-06 16:00:15 +08:00
}
this.placementClick(newData)
},
//给模特打点编辑
placementClick(data:any){
2024-09-11 16:36:08 +08:00
// let placementModal:any = isMoible() ? this.$refs.ModelPlacementMobile : this.$refs.ModelPlacement
let placementModal:any = this.$refs.ModelPlacement
2023-11-30 13:52:36 +08:00
placementModal.showPlacementModal(data,this.sex)
2023-10-20 17:21:45 +08:00
},
2024-05-20 13:07:42 +08:00
setTextareaShow(){
this.isTextarea = !this.isTextarea
2024-06-17 15:15:13 +08:00
this.isTextarea = !this.isTextarea
if(this.isTextarea){
document.addEventListener('click',this.setTextareaShow)
}else{
document.removeEventListener('click',this.setTextareaShow)
}
2024-05-20 13:07:42 +08:00
},
2024-06-01 10:02:21 +08:00
cliSetKeyword(value:any){
let str = ''
if(this.captionGeneration[this.captionGeneration.length-1] != ',' && this.captionGeneration.length != 0){
str = ','
}
this.captionGeneration += str + value
},
2024-06-17 09:39:01 +08:00
ifSeedValue(e:any){
if(this.searchPictureSeed == ''){
this.searchPictureSeed = 0
}
},
2023-10-20 17:21:45 +08:00
ifMaximumLength(){
clearTimeout(this.inputTime)
this.inputTime = setTimeout(()=>{
2024-05-22 10:44:48 +08:00
if(this.captionGeneration?.split(/\s+/).length > 250){
2024-04-24 13:36:27 +08:00
(this.$refs.inputShowText as any).innerHTML = this.t('LibraryPage.maximumLength')
2023-10-20 17:21:45 +08:00
this.inputShow = true
}else{
this.inputShow = false
}
},500)
},
2024-06-17 09:39:01 +08:00
setSlogan(){
let createSlogan:any = this.$refs.createSlogan
createSlogan.init()
},
setSloganData(data:any){
this.selectGenerateList = data
},
2024-06-01 10:02:21 +08:00
inputFocus(){
if(this.isInputFocus) return
this.isInputFocus = true
let setDomCli = ()=>{
this.isInputFocus = false
document.removeEventListener('click',setDomCli)
}
setTimeout(()=>{
document.addEventListener('click',setDomCli)
},200)
},
2023-10-20 17:21:45 +08:00
generateFileUploadChange(data:any){
let file = data.file;
2023-12-13 16:09:17 +08:00
let bor = true
2023-10-20 17:21:45 +08:00
if (file.status === "done") {
2023-12-13 16:09:17 +08:00
let res:any = JSON.parse(file.xhr.response);
if(res.errCode == 0){
2024-06-01 10:02:21 +08:00
let category:any={
value:'',
name:'',
}
2023-12-13 16:09:17 +08:00
file.id = res.data.id;
file.imgUrl = res.data.url;
file.resData = res.data;
file.type_ = "upload";
2024-06-01 10:02:21 +08:00
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;
2024-12-11 16:26:36 +08:00
let paste = this.selectGenerateList.filter((v: any) => v.id === file.id);
if(paste.length == 0)this.selectGenerateList.push(file);
this.selectGenerateList = this.selectGenerateList.filter((v: any) => v.status === "done");
2023-12-13 16:09:17 +08:00
}else{
bor = false
}
2023-10-20 17:21:45 +08:00
} else if (file.status === "error") {
2023-12-13 16:09:17 +08:00
bor = false
}
if(!bor){
let res:any = JSON.parse(file.xhr.response);
2023-10-20 17:21:45 +08:00
let index = -1;
this.selectGenerateList.forEach((ele: any, index1: any) => {
if (file.uid === ele.uid) {
index = index1;
}
});
if (index > -1) {
this.selectGenerateList.splice(index, 1);
}
2023-12-13 16:09:17 +08:00
// message.warning(file.name + this.t('LibraryPage.jsContent8'));
message.warning(res.errMsg);
}
2023-10-20 17:21:45 +08:00
},
deleteFile(index: any) {
if(this.scene?.value == 'Slogan' && this.selectCode == 'Printboard'){
let createSlogan:any = this.$refs.createSlogan
createSlogan.isDeleteSlogan = true
}
2023-10-20 17:21:45 +08:00
this.selectGenerateList.splice(index, 1);
2023-01-06 16:00:15 +08:00
2023-10-20 17:21:45 +08:00
},
PrintModel(){
if(!this.printModel.optype){
document.addEventListener('click',this.removePrintModel)
}
this.printModel.optype = !this.printModel.optype
},
removePrintModel(){
this.printModel.optype = false
document.removeEventListener('click',this.removePrintModel)
},
setprintModel(item:any){
this.printModel = item
// this.printModel = {
// num : num,
// optype:false,
// name:this.t('LibraryPage.Model'+num)
// }
},
imageToSketch(){
if((!this.printModel?.id && !this.printModel?.value) || !this.selectGenerateList?.[0]?.id)return message.info(this.t('Generate.jsContent4'));
this.isShowMark = true
let data = {
"elementId": this.selectGenerateList[0].id,
2024-10-20 16:16:07 +08:00
gender:this.sex,
"style": this.printModel.value,
"styleImageId": this.printModel.id?this.printModel.id:''
}
Https.axiosPost(Https.httpUrls.imageToSketch, data).then((rv)=>{
if(rv){
this.designTypeList[this.selectCode].forEach((itemCategory:any) => {
if(itemCategory.value == rv.category){
rv.categoryValue = itemCategory?.value
rv.category = itemCategory?.name
}
});
this.generateList[this.selectCode].push({
imgUrl:rv.url,
categoryValue:rv.categoryValue,
category:rv.category,
id:rv.id,
status:'Success',
})
this.isShowMark = false
}
}).catch(()=>{
this.isShowMark = false
})
},
2023-10-20 17:21:45 +08:00
getgenerate(){
if(this.scene?.value == 'extract'){
this.imageToSketch()
return
}
2024-06-20 10:36:45 +08:00
this.isInputFocus = false
2024-06-18 10:45:15 +08:00
this.isTextarea = false
let selectCodeStr = JSON.parse(JSON.stringify(this.selectCode))
if(this.isGenerate[selectCodeStr]){
2023-12-29 15:33:05 +08:00
return
}
2024-06-17 09:39:01 +08:00
clearInterval(this.remGenerateTime[selectCodeStr])
this.remGenerate[selectCodeStr] = false
2024-06-01 10:02:21 +08:00
let level2Type = ''
let collectionElementId = ''
let base64 = ''
if(this.selectGenerateList?.[0]){
collectionElementId = this.selectGenerateList[0].id
if(this.selectGenerateList[0].base64){
base64 = this.selectGenerateList[0].imgUrl
}
2023-12-28 10:36:48 +08:00
}
2024-06-20 10:36:45 +08:00
let sloganText = ''
let arr = ["Painting Style","Illustration Style","Real Style"]
sloganText = this.captionGeneration
2024-06-01 10:02:21 +08:00
if(this.selectCode == "Sketchboard"){
2024-06-20 10:36:45 +08:00
level2Type = this.selectGenerateList?.[0]?.categoryValue?this.selectGenerateList[0].categoryValue:''
if(this.workspace.styleName){
sloganText = `${this.workspace.styleName},${sloganText}`
}
2024-06-01 10:02:21 +08:00
}else if(this.selectCode == "Printboard"){
level2Type = this.scene?.value
2024-06-20 10:36:45 +08:00
if(level2Type == 'Slogan' && this.captionGeneration == ''){
sloganText = this.isSloganHint
2024-06-20 10:36:45 +08:00
}else if(level2Type == 'Pattern'){
sloganText = `${arr[this.printModel.num-1]},${sloganText}`
}
if(!base64 && level2Type == 'Slogan'){
message.info(this.t('Generate.jsContent10'));
2024-06-20 10:36:45 +08:00
return
}
2024-06-01 10:02:21 +08:00
}
2023-10-20 17:21:45 +08:00
let data = {
2024-06-01 10:02:21 +08:00
generateType:'text',
2024-04-24 14:37:46 +08:00
designType:'collection',
2024-06-01 10:02:21 +08:00
collectionElementId:collectionElementId,
level1Type:selectCodeStr,
2024-06-01 10:02:21 +08:00
level2Type:level2Type,
2024-12-18 17:38:43 +08:00
userId:(this?.userDetail as any).userId,
isTestUser:this.driver__.driver?false:this.isTest,
2024-06-20 10:36:45 +08:00
text:sloganText,
2024-06-17 09:39:01 +08:00
seed:this.searchPictureSeed,
2023-10-20 17:21:45 +08:00
timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone,
2024-12-01 18:21:21 +08:00
version:this.speedData.value,//为1就是Print
2024-06-20 10:36:45 +08:00
gender:selectCodeStr == 'Sketchboard'?this.sex:'',
2024-06-17 09:39:01 +08:00
sloganBase64:base64,
2023-10-20 17:21:45 +08:00
}
this.generateLevel2[selectCodeStr] = data.level2Type
this.isGenerate[selectCodeStr] = true
2024-05-20 13:07:42 +08:00
this.isTextarea = false
2024-06-17 09:39:01 +08:00
this.remGenerateTime[selectCodeStr] = setTimeout(()=>{
this.remGenerate[selectCodeStr] = true
},10000)
2024-01-24 10:34:05 +08:00
Https.axiosPost(Https.httpUrls.generatePrepare, data).then(
2023-11-06 15:19:52 +08:00
(rv) => {
if(data.isTestUser){
let str:any
if(selectCodeStr == 'Moodboard'){
str = this.t('collectionModal.Moodboard')
}else if(selectCodeStr == 'Printboard'){
str = this.t('collectionModal.Printboard')
}else if(selectCodeStr == 'Sketchboard'){
str = this.t('collectionModal.Sketchboard')
}
if(rv.leftUsageCount >= 1){
2024-01-30 14:23:28 +08:00
message.warning(this.t('Generate.jsContent8',{num:rv.leftUsageCount,str:str}));
}else if(rv.leftUsageCount == 0){
message.warning(this.t('Generate.jsContent9',{str:str}));
this.isGenerate[selectCodeStr] = false
2024-04-25 17:16:16 +08:00
// this.isShowMark = false
return
}
2023-11-06 15:19:52 +08:00
}
this.setGenerate(selectCodeStr,rv.uniqueId)
2023-11-06 15:19:52 +08:00
}
).catch(res=>{
2024-04-25 17:16:16 +08:00
// this.isShowMark = false
this.generateLevel2[selectCodeStr] = ''
this.isGenerate[selectCodeStr] = false
2024-06-17 09:39:01 +08:00
clearInterval(this.remGenerateTime[selectCodeStr])
this.remGenerate[selectCodeStr] = false
2023-11-06 15:19:52 +08:00
});
},
setGenerate(str:any,dataList:any){
2024-06-17 09:39:01 +08:00
let data = dataList
2024-04-30 13:21:15 +08:00
let dataNum = dataList.length
2024-06-17 09:39:01 +08:00
let state = true
2024-04-26 16:33:41 +08:00
this.generateTime[str] = setInterval(()=>{
// let data = this.generateList[str].filter((item:any)=>item.status != 'Success').map((obj:any) => obj.taskId);
2024-06-17 09:39:01 +08:00
if(!state)return
state = false
2024-04-19 10:49:05 +08:00
Https.axiosPost(Https.httpUrls.generateResult, data).then(
2024-01-24 10:34:05 +08:00
(rv) => {
2024-06-17 09:39:01 +08:00
state = true
if(this.isGenerate[str]){//防止取消后有正在执行的获取状态
this.generateProceedList = rv.filter((item:any)=>item.status != 'Success' && item.status != 'Fail' && item.status != 'Invalid')
2024-04-19 10:49:05 +08:00
rv.forEach((element:any) => {
if(element.status === 'Success'){
element.imgUrl = element.url
2024-06-17 15:15:13 +08:00
this.designTypeList[this.selectCode].forEach((itemCategory:any) => {
if(itemCategory.value == element.category){
2024-06-24 09:47:59 +08:00
element.categoryValue = itemCategory?.value
element.category = itemCategory?.name
2024-06-17 15:15:13 +08:00
}
});
// element.categoryValue = this.scene?.name
// element.category = this.scene?.value
this.generateList[str].unshift(element)
data = data.filter((item:any) => item !== element.taskId);
}
2024-04-19 10:49:05 +08:00
});
2024-04-30 13:11:58 +08:00
if((data.length == 0)|| (rv.filter((item:any)=>item.status == 'Invalid').length == data.length)){
2024-04-30 13:21:15 +08:00
if(rv.filter((item:any)=>item.status == 'Invalid').length == dataNum){
2024-04-30 13:11:58 +08:00
message.info(this.t('Generate.effectPoor'));
}
2024-06-28 11:50:11 +08:00
this.store.dispatch('getCredits')
2024-04-26 16:33:41 +08:00
clearInterval(this.generateTime[str])
clearInterval(this.remGenerateTime[str])
this.remGenerate[str] = false
this.isGenerate[str] = false
2024-06-27 17:37:49 +08:00
this.generateLevel2[str] = ''
2024-04-19 10:49:05 +08:00
}
2024-01-24 10:34:05 +08:00
}
}
).catch(res=>{
2024-04-26 16:33:41 +08:00
clearInterval(this.generateTime[str])
clearInterval(this.remGenerateTime[str])
2024-04-25 17:16:16 +08:00
// this.isShowMark = false
this.isGenerate[str] = false
2024-04-30 13:11:58 +08:00
this.remGenerate[str] = false
this.generateLevel2[str] = ''
2024-01-24 10:34:05 +08:00
});
2024-04-19 10:49:05 +08:00
},1000)
2024-01-24 10:34:05 +08:00
},
removeGenerate(){
2024-04-25 17:16:16 +08:00
// this.isShowMark = false
2024-04-26 16:37:15 +08:00
this.isGenerate[this.selectCode] = false
2024-04-26 16:33:41 +08:00
this.remGenerate[this.selectCode] = false
clearInterval(this.generateTime[this.selectCode])
if(this.generateProceedList){
let str = this.generateProceedList.map((obj:any) => obj.taskId).join(',');
let type = 'Generate'
if(this.generateLevel2[str] == 'Logo'){
type = 'Logo'
}
let data = {
uniqueId:str,
2024-12-18 17:38:43 +08:00
userId:(this?.userDetail as any)?.userId,
timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone,
type: type
}
2024-01-24 10:34:05 +08:00
Https.axiosGet(Https.httpUrls.generateStopWaiting, {params:data}).then(
(rv) => {
this.generateProceedList = []
2024-01-24 10:34:05 +08:00
}
).catch(res=>{
});
}
},
2023-11-06 15:19:52 +08:00
dropdownVisibleChange(){
2023-11-29 16:30:17 +08:00
let element:any = this.$refs.cascader
2023-11-16 17:23:17 +08:00
nextTick().then(()=>{
let cascader = document.getElementsByClassName('libraryPageCascader')[0]
let cascaderChild = cascader
2023-11-22 17:05:09 +08:00
let element:any = this.$refs.cascader
2023-11-16 17:23:17 +08:00
if(cascader.children.length > 3 ){
}else{
let button1:any = document.createElement("span")
button1.classList.add('started_btn','cascader_btn1')
let button2:any = document.createElement("span")
button2.classList.add('started_btn','cascader_btn2')
let divMax:any = document.createElement("div")
divMax.classList.add('cascader_btn_max')
2023-11-22 17:05:09 +08:00
button1.textContent = 'Edit'
2023-11-16 17:23:17 +08:00
// button2.textContent = '删除'
button1.addEventListener('click',this.removeLabel,false)
divMax.appendChild(button1)
// divMax.appendChild(button2)
cascaderChild?.insertAdjacentElement("afterbegin", divMax);
2023-11-29 16:30:17 +08:00
2023-11-16 17:23:17 +08:00
// cascader.addEventListener('click',this.cascaderClick)
}
})
2023-11-29 16:30:17 +08:00
let el = element.contentRef?.getElementsByClassName('el-cascader-menu__empty-text')?.[0]
if(el){
2023-11-30 10:54:22 +08:00
el.innerHTML = this.t('LibraryPage.NoLabel')
2023-11-29 16:30:17 +08:00
}
2023-11-06 15:19:52 +08:00
},
2023-11-08 09:31:40 +08:00
// cascaderClick(e:Event){
// console.log(e.target)
// },
2023-11-16 17:23:17 +08:00
removeLabel(){
2023-11-07 09:30:25 +08:00
let setLabel:any = this.$refs.setLabel
2023-11-16 17:23:17 +08:00
let cascader:any = this.$refs.cascader
cascader.togglePopperVisible()
let event = new Event('click', {"bubbles":true, "cancelable":true});
document.dispatchEvent(event);
2023-11-09 13:49:10 +08:00
setLabel.init('add',this.options)
2023-11-06 15:19:52 +08:00
},
2023-11-13 17:33:41 +08:00
labelSearch(){
nextTick().then(()=>{
let cascader = document.getElementsByClassName('editLabel')[0]
cascader.addEventListener('click',(event)=>{
event.stopPropagation()
})
})
2023-11-09 10:16:18 +08:00
},
2024-01-02 13:04:57 +08:00
scaleImage(index:any){
let scaleImage:any = this.$refs.scaleImage
scaleImage.scaleImageMask = true
2024-04-25 17:16:16 +08:00
scaleImage.init(this.generateList[this.selectCode],index)
2024-01-02 13:04:57 +08:00
},
2024-12-11 16:26:36 +08:00
onPaste(e:any){
if(e.clipboardData.items[0] && !this.isTextarea && this.selectCode !== 'Moodboard' && this.scene?.value != 'Slogan' && this.scene?.value != 'Logo'){
let param = new FormData();
param.append('inPin','0')
param.append('gender',this.sex)
param.append('level1Type',this.selectCode)
param.append('timeZone',Intl.DateTimeFormat().resolvedOptions().timeZone)
param.append('file',e.clipboardData.files[0]);
let config:any = {headers:{'Content-Type':'multipart/form-data','Accept':'*/*' }}
Https.axiosPost(Https.httpUrls.elementUpload, param, config).then((v)=>{
let value = {data:v,errCode : 0}
v.status = 'done'
let data = {
file:{
status: 'done',
xhr:{
response:JSON.stringify(value)
}
}
}
this.generateFileUploadChange(data)
})
}
}
2023-01-06 16:00:15 +08:00
}
})
</script>
<style lang="less">
2024-01-24 16:43:54 +08:00
.el-icon{
font-size: 14px;
}
2023-01-06 16:00:15 +08:00
.library_page {
width: 100%;
2023-10-11 17:34:14 +08:00
overflow: hidden;
2023-01-06 16:00:15 +08:00
height: 100%;
2024-12-11 16:26:36 +08:00
padding: 0 6rem;
2023-11-13 09:52:57 +08:00
// min-width: 1440px;
2023-10-20 17:21:45 +08:00
position: relative;
2023-01-06 16:00:15 +08:00
.page_content {
position: relative;
.page_content_bg {
position: absolute;
width: 100%;
height: 100%;
}
.page_content_body {
position: absolute;
width: 100%;
height: 100%;
box-sizing: border-box;
2023-10-20 17:21:45 +08:00
display: flex;
flex-direction: column;
2023-01-06 16:00:15 +08:00
.library_page_body{
2023-10-31 16:04:40 +08:00
overflow: hidden;
2023-01-06 16:00:15 +08:00
width: 100%;
2024-03-21 10:49:21 +08:00
// height: 100%;
2023-10-20 17:21:45 +08:00
flex: 1;
2023-01-06 16:00:15 +08:00
box-sizing: border-box;
display: flex;
2023-10-20 17:21:45 +08:00
padding-top: 2rem;
.printModel{
font-size: 1.4rem;
font-weight: 500;
margin-right: 2rem;
}
2023-01-06 16:00:15 +08:00
.library_body_left{
2024-06-01 10:02:21 +08:00
// width: 27.5rem;
width: 36.5rem;
2023-01-06 16:00:15 +08:00
height: 100%;
background: rgba(255,255,255,0.4);
2024-01-10 09:34:32 +08:00
margin-right: 5rem;
2023-10-20 17:21:45 +08:00
>div{
background: #f7f8fa;
border-radius: 2rem;
overflow: hidden;
padding: 2rem 0;
}
2023-01-06 16:00:15 +08:00
.library_menu_list{
2023-10-20 17:21:45 +08:00
padding-left: 2rem;
2023-01-06 16:00:15 +08:00
.menu_item{
width: 100%;
height: 6.8rem;
display: flex;
2023-10-20 17:21:45 +08:00
font-weight: 900;
2023-01-06 16:00:15 +08:00
align-items: center;
justify-content: space-between;
padding: 0 1rem 0 2.5rem;
border-left: 0.5rem solid transparent;
2023-11-28 16:21:00 +08:00
// font-size: 1.6rem;
font-size: var(--aida-fsize2);
2023-01-06 16:00:15 +08:00
color: #030303;
cursor: pointer;
2023-10-20 17:21:45 +08:00
transition: all .3s;
2023-01-06 16:00:15 +08:00
&.child_menu_item{
padding-left: 6.5rem;
}
&.select_menu_item{
2023-10-20 17:21:45 +08:00
background: #fff;
border-radius: 2rem;
transform: translateX(2rem);
// background: #E6E6F6;
// border-color: #343579;;
2023-01-06 16:00:15 +08:00
}
.menu_item_left{
display: flex;
align-items: center;
user-select: none;
2023-10-20 17:21:45 +08:00
.fi{
2023-01-06 16:00:15 +08:00
font-size: 2.2rem;
2023-10-20 17:21:45 +08:00
display: flex;
2023-01-06 16:00:15 +08:00
color: #030303;
margin-right: 1.8rem;
}
}
.icon_rotate{
-moz-transform:rotate(180deg);
-webkit-transform:rotate(180deg);
transform: rotate(180deg);
animation-direction: 0.5s;
}
}
}
}
.library_body_right{
2024-01-10 09:34:32 +08:00
width: calc(100% - 23.5rem);
2023-01-06 16:00:15 +08:00
height: 100%;
2023-10-20 17:21:45 +08:00
.header_operate_item{
margin-right: 5rem;
color: #C2C2C2;
2023-11-28 16:21:00 +08:00
font-size: var(--aida-fsize1-8);
2023-10-20 17:21:45 +08:00
.ant-upload{
2023-11-22 09:37:30 +08:00
// font-size: 1.6rem;
2023-10-20 17:21:45 +08:00
// font-weight: 900;
}
.ant-upload-list-text{
display: none;
}
&.operate_select{
color:#333333;
cursor: pointer;
font-weight: 900;
}
&.fontSize{
font-size: 1.4rem;
}
&.active{
color:#333333;
cursor: pointer;
}
&.pointer{
cursor: pointer;
}
&:last-child{
margin-right: 11rem;
}
}
.content_search_block{
display: flex;
align-items: center;
2024-01-10 09:34:32 +08:00
width: 75rem;
2023-10-20 17:21:45 +08:00
.search_input{
height: 3rem;
border-radius: 0.5rem;
2023-11-03 11:16:42 +08:00
width: 20rem;
2023-10-20 17:21:45 +08:00
border: 1px solid rgba(0, 0, 0, 0.15);
padding-left: 1.5rem;
border: 0.1rem solid #F1F1F1;
font-size: 1.2rem;
font-weight: 400;
2023-11-03 11:16:42 +08:00
margin-right: 2rem;
2023-10-20 17:21:45 +08:00
&::placeholder {
color: #C2C2C2;
}
}
2024-05-20 10:45:30 +08:00
2023-11-16 09:44:53 +08:00
.search_cascader{
2024-01-10 09:34:32 +08:00
// width: 53%;
width: 38rem;
2023-11-16 09:44:53 +08:00
display: flex;
position: relative;
2023-11-16 17:23:17 +08:00
2023-11-16 09:44:53 +08:00
}
2023-10-20 17:21:45 +08:00
.search_icon_block{
width: 5.2rem;
height: 2.8rem;
line-height: 2.8rem;
text-align: center;
background: #343579;
background-color: #39215b;
cursor: pointer;
border-radius: 2rem;
margin-left: 3rem;
.icon-sousuo{
font-size: 1.6rem;
color: #FFFFFF;
}
}
2023-11-22 09:37:30 +08:00
.intersection{
margin-left: 3rem;
cursor: pointer;
}
2023-11-06 15:19:52 +08:00
2023-10-20 17:21:45 +08:00
}
2023-01-06 16:00:15 +08:00
.library_right_header{
display: flex;
padding: 0 3.5rem 0 2.8rem;
align-items: center;
justify-content: space-between;
background: rgba(255,255,255,0.4);
box-shadow: 0 0.2rem 0.8rem 0 rgba(238,238,244,0.25);
.library_header_left{
2023-10-20 17:21:45 +08:00
height: 4rem;
2023-01-06 16:00:15 +08:00
display: flex;
align-items: center;
2023-10-20 17:21:45 +08:00
2023-01-06 16:00:15 +08:00
}
2023-10-20 17:21:45 +08:00
2023-01-06 16:00:15 +08:00
.librart_headr_right{
display: flex;
align-items: center;
.select_block{
2023-10-11 17:34:14 +08:00
// background: #FFFFFF;
2023-01-06 16:00:15 +08:00
color: #1A1A1A !important;
2023-10-20 17:21:45 +08:00
.ant-select-selector{
border: 2px solid !important;
}
2023-10-11 17:34:14 +08:00
.ant-select{
2023-10-13 17:06:44 +08:00
.ant-select-arrow{
.icon-xiala{
margin-left: -2rem;
zoom: .7;
}
}
2023-10-11 17:34:14 +08:00
}
2023-01-06 16:00:15 +08:00
.icon-xiala{
color: #1A1A1A !important;
}
}
}
}
.libray_right_content{
width:100%;
height:calc(100% - 8rem);
padding: 0.1rem 0 0 0.3rem;
box-sizing: border-box;
.right_content_body{
width: 100%;
height: 100%;
2023-10-20 17:21:45 +08:00
background: #f6f5fa;
2023-01-06 16:00:15 +08:00
padding: 0 2rem 5rem 1rem;
2023-10-20 17:21:45 +08:00
border-radius: 2rem;
overflow: hidden;
display: flex;
flex-direction: column;
2023-01-06 16:00:15 +08:00
.content_body_header{
2023-10-20 17:21:45 +08:00
height: 10rem;
2023-01-06 16:00:15 +08:00
display: flex;
justify-content: flex-end;
align-items: center;
2023-10-20 17:21:45 +08:00
// padding: 2rem 0 2rem 3rem;
2024-01-10 09:34:32 +08:00
padding-left: 3rem;
2023-10-20 17:21:45 +08:00
box-sizing: content-box;
justify-content: space-between;
.content_body_header_left{
display: flex;
2023-11-03 11:16:42 +08:00
align-items: center;
2023-10-20 17:21:45 +08:00
}
.content_body_header_right{
display: flex;
2024-01-10 09:34:32 +08:00
width: 43rem;
2023-10-20 17:21:45 +08:00
}
2023-01-06 16:00:15 +08:00
.check_all_block{
display: flex;
align-items: center;
font-size: 1.6rem;
color: #64686D;
cursor: pointer;
&.check_all{
color: #1A1A1A;
}
.check_block{
width: 2.4rem;
height: 2.4rem;
background: #EBECF4;
border: 0.1rem solid #64686D;
padding: 0.3rem;
margin-right: 0.7rem;
.check_block_body{
width: 100%;
height: 100%;
background: #343579;
}
}
}
2023-10-20 17:21:45 +08:00
&.content_body_header_generate{
justify-content: flex-start;
.checkboxItem {
2024-01-10 09:34:32 +08:00
margin-right: 4rem;
2023-10-20 17:21:45 +08:00
label {
display: flex;
cursor: pointer;
input {
margin-right: 0.5rem;
padding-left: 1.5rem;
}
span {
2024-01-10 09:34:32 +08:00
font-size: 1.4rem;
2023-10-20 17:21:45 +08:00
font-weight: 500;
2024-04-15 16:09:33 +08:00
bottom: -.5rem;
2023-10-20 17:21:45 +08:00
}
}
}
2024-04-15 16:09:33 +08:00
.input_border{
2024-06-01 10:02:21 +08:00
padding-bottom: 0;
2024-04-15 16:09:33 +08:00
background: rgba(0, 0, 0, 0);
2024-12-01 17:22:20 +08:00
width: 55rem;
2024-06-01 10:02:21 +08:00
.input_box_btnBox{
background: #fff;
align-items: center;
2024-12-01 17:22:20 +08:00
width:65%;
2024-06-01 10:02:21 +08:00
.search_input{
2024-04-15 16:09:33 +08:00
height: 3rem;
2023-10-20 17:21:45 +08:00
}
}
}
2024-04-15 16:09:33 +08:00
2023-10-20 17:21:45 +08:00
}
2023-01-06 16:00:15 +08:00
}
.content_body_table{
width: 100%;
height: calc(100% - 12rem);
overflow-y:auto;
2023-10-20 17:21:45 +08:00
display: flex;
flex-wrap: wrap;
justify-content: flex-start;
align-content: flex-start;
2023-10-31 16:04:40 +08:00
&.content_body_table::-webkit-scrollbar {
display: none;
}
2023-01-06 16:00:15 +08:00
.content_img_item{
display: inline-block;
vertical-align: top;
padding: 0 1.4rem;
margin-bottom: 2.8rem;
2023-10-20 17:21:45 +08:00
width: 16.6%;
display: flex;
flex-direction: column;
align-items: center;
2023-11-15 09:59:24 +08:00
position: relative;
2023-01-06 16:00:15 +08:00
.content_img_item_block{
border: 0.1rem solid transparent;
2023-10-20 17:21:45 +08:00
// width: 16.5rem;
// height: 16.5rem;
2024-01-10 09:34:32 +08:00
width: 17rem;
height: 17rem;
2023-01-06 16:00:15 +08:00
display: flex;
align-items: center;
justify-content: center;
position: relative;
cursor: pointer;
2023-10-20 17:21:45 +08:00
background: #fff;
2023-01-06 16:00:15 +08:00
&.select_item_img{
2023-11-22 17:05:09 +08:00
// border-color: #343579;
opacity: 0.5;
border-radius: 1rem;
transform: scale(0.9);
2023-01-06 16:00:15 +08:00
}
.content_img{
max-width: 100%;
max-height: 100%;
}
.board_content_img{
2023-11-30 17:02:15 +08:00
// width: 100%;
// height: 100%;
2023-01-06 16:00:15 +08:00
}
&:hover .img_item_hover{
2024-05-16 09:41:16 +08:00
// display: block;
opacity: 1;
2023-01-06 16:00:15 +08:00
}
.img_item_hover{
position: absolute;
width: 100%;
height: 100%;
left: 0;
top:0;
background: rgba(0,0,0,0.2);
2024-05-16 09:41:16 +08:00
// display: none;
opacity: 0;
2023-01-06 16:00:15 +08:00
.img_operate_content{
position: absolute;
right: 0.6rem;
top: 0.6rem;
2024-01-02 13:04:57 +08:00
&.left{
left: 0.6rem;
right: auto;
}
2023-01-06 16:00:15 +08:00
}
.img_operate_block{
width: 3.6rem;
height: 3.6rem;
background: rgba(0,0,0,0.6);
border-radius: 50%;
text-align: center;
line-height: 3.6rem;
cursor: pointer;
margin-bottom: 0.4rem;
2024-05-16 09:41:16 +08:00
.operate_icon,i{
display: flex;
justify-content: center;
align-items: center;
width: 100%;
height: 100%;
}
2023-01-06 16:00:15 +08:00
.operate_icon{
font-size: 1.8rem;
color: #fff;
2023-11-16 09:44:53 +08:00
&.fi-sr-heart{
color: red;
}
2023-01-06 16:00:15 +08:00
}
2024-01-02 13:04:57 +08:00
i{
font-size: 1.8rem;
color: #fff;
2024-05-16 09:41:16 +08:00
2024-01-02 13:04:57 +08:00
}
2023-01-06 16:00:15 +08:00
}
2024-01-02 13:04:57 +08:00
2023-01-06 16:00:15 +08:00
}
}
.content_img_name{
width: 16.5rem;
height: 3.5rem;
line-height: 3.5rem;
white-space: nowrap;
text-align: center;
overflow: hidden;
text-overflow: ellipsis;
font-size: 1.4rem;
color: #030303;
}
}
.no_data_block{
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
}
}
.table_pagination{
text-align: center;
2023-10-31 16:04:40 +08:00
// height: 5.2rem;
2023-10-20 17:21:45 +08:00
flex: 1;
2023-10-31 16:04:40 +08:00
margin-top: 2rem;
2023-01-06 16:00:15 +08:00
}
}
}
}
}
}
}
}
.library_rename_modal_component{
.collection_rename_content{
padding:0 6.8rem 1.8rem;
2023-12-20 17:03:42 +08:00
.collection_rename_title{
margin: 2rem 0rem 1rem 0;
font-size: var(--aida-fsize1-8);
}
2023-01-06 16:00:15 +08:00
.rename_form_content{
.rename_form_input{
width: 100%;
height: 4.6rem;
2023-12-20 17:03:42 +08:00
border: 0.1rem solid #d9d9d9;
2023-01-06 16:00:15 +08:00
padding-left: 2.1rem;
line-height: 4.6rem;
font-size: 1.8rem;
box-sizing: border-box;
2023-12-20 17:03:42 +08:00
border-radius: 4px;
2023-01-06 16:00:15 +08:00
&::placeholder {
2023-12-20 17:03:42 +08:00
color:#adabb9
2023-01-06 16:00:15 +08:00
}
}
2024-01-05 14:12:03 +08:00
.select_block{
display: flex;
justify-content: space-between;
font-size: 1.8rem;
color:#adabb9;
font-weight: 300;
.ant-select{
border-radius: 4px;
width: 48%;
border: 0.1rem solid #d9d9d9 !important;
.ant-select-arrow{
.icon-xiala{
margin-left: -0rem;
}
}
}
.ant-select-selection-item{
color:#262626;
font-weight: 300;
}
.ant-select-selector{
margin-left: 0rem;
color:#adabb9;
width: 100%;
padding-left: 2.1rem;
}
.icon-xiala{
color: #adabb9 !important;
font-weight: 400;
}
}
2023-01-06 16:00:15 +08:00
}
.rename_button_list{
display: flex;
align-items: center;
justify-content: flex-end;
margin-top: 3rem;
.rename_button_item{
width: 8.6rem;
height: 3.2rem;
line-height: 3.2rem;
text-align: center;
font-size: 1.4rem;
cursor: pointer;
}
.rename_cancel_button{
background: #E4E5EB;
color: #030303;
margin-right: 1.8rem;
}
.rename_submit_button{
background: #343579;
color: #FFFFFF;
}
}
2023-11-16 17:23:17 +08:00
.el-cascader{
2023-12-20 17:03:42 +08:00
.el-input--suffix{
--el-input-hover-border-color: #d9d9d9;
// border: .1rem solid #d9d9d9;
}
2023-11-13 17:33:41 +08:00
height: 4.6rem;
2023-11-16 17:23:17 +08:00
.el-tag__content{
line-height: 2.5;
2023-12-20 17:03:42 +08:00
.el-cascader__tags{
}
}
.el-input__wrapper{
padding-left: 0;
}
.el-cascader__search-input,.el-input__inner{
margin: 0;
width: 100%;
height: 4.6rem;
padding-left: 2.1rem;
line-height: 4.6rem;
font-size: 1.8rem;
box-sizing: border-box;
2023-11-13 17:33:41 +08:00
}
}
2023-01-06 16:00:15 +08:00
}
}
</style>