2023-01-06 16:00:15 +08:00
< template >
2023-11-28 16:21:00 +08:00
< div class = "printboard_upload_modal" :class = "[driver__.driver?'showEvents':'']" >
2023-08-21 10:55:39 +08:00
2023-01-06 16:00:15 +08:00
< div class = "printboard_left_upload" >
< div class = "left_upload_header" >
< div class = "upload_header_item" >
< div class = "switch_type_list" >
2023-08-05 12:52:56 +08:00
< div
2024-05-28 16:00:26 +08:00
2023-08-05 12:52:56 +08:00
class = "switch_type_item"
: class = "[openClick == 1 ? 'select_swtich' : '']"
>
2024-05-28 16:00:26 +08:00
< span @click.stop ="open(1)" > {{ $ t ( ' PrintboardUpload.Upload ' ) }} < / span >
2023-08-05 12:52:56 +08:00
< / div >
< div
2024-05-28 16:00:26 +08:00
2023-08-05 12:52:56 +08:00
class = "switch_type_item"
: class = "[openClick == 2 ? 'select_swtich' : '']"
>
2024-05-28 16:00:26 +08:00
< span @click.stop ="open(2)" > {{ $ t ( ' PrintboardUpload.Library ' ) }} < / span >
2023-08-05 12:52:56 +08:00
< / div >
< div
2024-05-28 16:00:26 +08:00
2023-12-08 16:27:35 +08:00
class = "switch_type_item Guide_1_2_1"
: class = "[openClick == 3 ? 'select_swtich' : '',driver__.driver?'showEvents':'']"
2023-08-05 12:52:56 +08:00
>
2024-05-28 16:00:26 +08:00
< span @click.stop ="open(3)" > {{ $ t ( ' PrintboardUpload.Generate ' ) }} < / span >
< / div >
< div v-show = "openClick == 3" class="generalMenu_printModel printMenu" >
< div @click.stop ="openPrintModel" > {{ scene.label }} < i class = "icon iconfont icon-xiala" :class = "{forbidden:openMenu}" > < / i > < / div >
< ul v-show = "openMenu" >
< li v-for = "item,index in sceneList" class="printModel_item" @click.stop="setSceneList(item)" > {{ item.label }} < / li >
< / ul >
2023-08-05 12:52:56 +08:00
< / div >
2023-01-06 16:00:15 +08:00
< / div >
< / div >
< / div >
2023-08-05 12:52:56 +08:00
< div v-show = "openClick == 1" class="printboard_body" >
2023-01-06 16:00:15 +08:00
< div class = "upload_img_body" >
< div class = "upload_item" >
< div :class = "['upload_file_item']" v-for = "(file, index) in fileList" :key="file" >
< div class = "upload_file_img_block" >
< div class = "upload_file_item_content" v-show = "file?.status === 'uploading'" >
< a-spin :indicator = "indicator" tip = "Uploading..." / >
< / div >
2023-08-23 17:50:09 +08:00
< div class = "upload_file_item_content" v-show = "file?.status === 'done'" >
2023-01-06 16:00:15 +08:00
< img v-lazy = "file.imgUrl" class="upload_img" :key="file.imgUrl" >
2023-09-12 10:11:27 +08:00
< div class = "delete_like_file_block" @click.stop ="deleteFile(file)" >
2023-08-23 17:50:09 +08:00
< span
class = "icon iconfont icon-shanchu"
> < / span >
< / div >
2023-01-06 16:00:15 +08:00
< / div >
< / div >
< div class = "pin_block" v-show = "file?.status === 'done'" >
2023-10-30 17:26:36 +08:00
< a-checkbox v -model :checked = "file.pin" > { { $t ( 'PrintboardUpload.PIN' ) } } < / a-checkbox >
2023-01-06 16:00:15 +08:00
< / div >
< / div >
2023-12-08 16:27:35 +08:00
< div class = "upload_file_item upload_component" v-show = "printboardList.length < 8" >
2023-01-06 16:00:15 +08:00
< a-upload
: action = "uploadUrl + '/api/element/upload'"
2024-01-27 15:20:23 +08:00
: capture = "null"
2023-01-06 16:00:15 +08:00
list - type = "picture-card"
: before - upload = "beforeUpload"
: data = " {
... upload
} "
: headers = "{Authorization:token}"
v - model : file - list = "fileList"
: customRequest = "function(){}"
2023-12-07 14:26:21 +08:00
: multiple = "!driver__.driver"
2023-09-25 10:09:00 +08:00
: maxCount = "8 - printboardList.length+fileList.length"
2023-01-06 16:00:15 +08:00
accept = ".jpg,.png,.jpeg,.bmp"
@ change = "fileUploadChange"
>
2023-08-21 10:55:39 +08:00
< div
class = "upload_tip_block"
2023-09-25 10:09:00 +08:00
v - show = "printboardList.length < 8"
2023-08-21 10:55:39 +08:00
>
< i class = "fi fi-br-upload" > < / i >
<!-- < img class = "upload_img_icon" src = "@/assets/images/homePage/add_file.png" > -- >
2023-01-06 16:00:15 +08:00
< / div >
< / a-upload >
< / div >
< / div >
< / div >
2023-11-06 15:19:52 +08:00
< div class = "upload_max_tip" >
< span class = "icon iconfont icon-zhuyi" > < / span >
< span > { { $t ( 'PrintboardUpload.Maximum' ) } } < / span >
< / div >
2023-01-06 16:00:15 +08:00
< / div >
2024-04-03 17:39:44 +08:00
< Material v-show = "openClick == 2" ref="Material" msg="Printboard" @setLibrary = setSetchboardGenerate @confirmSelect="confirmSelect" > < / Material >
2024-05-28 16:00:26 +08:00
< Generate v-show = "openClick == 3" ref="Generate" :scene="scene" msg="Printboard" @setGenerate = setSetchboardGenerate @generateCheckbox="getgenerateCheckbox" > < / Generate >
2023-01-06 16:00:15 +08:00
< / div >
2023-08-21 10:55:39 +08:00
< div class = "modal_right" >
< div class = "modal_layout" >
< div class = "modal_text" >
2023-10-30 17:26:36 +08:00
< div > { { $t ( 'PrintboardUpload.Thumbnail' ) } } < / div >
2023-08-21 10:55:39 +08:00
<!-- < div class = "modal_btn started_btn" @click ="layout()" > layout < / div > - - >
< / div >
< div class = "modal_img" >
2023-08-23 17:50:09 +08:00
< div class = "modal_img_item" v-for = "item,index in printboardList" :key="item" @click.stop="deleteFile(item)" >
2023-08-21 10:55:39 +08:00
< img v-lazy = "item.imgUrl" >
< div class = "checked" >
< i class = "fi fi-rr-trash" > < / i >
< / div >
< / div >
< / div >
< / div >
2024-04-15 16:09:33 +08:00
< div v-show = "openClick == 3" class="modal_accomplish" >
2024-04-03 17:39:44 +08:00
< div class = "input_border" >
< div class = "Guide_1_2_8 input_box" :class = "[inputShow?'active':'',driver__.driver?'showEvents':'']" >
2024-05-28 16:00:26 +08:00
< 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 >
2024-05-20 13:07:42 +08:00
< 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 >
2024-04-26 15:27:01 +08:00
<!-- < div class = "generage_btn started_btn" @click.stop ="getgenerate" > {{ $ t ( ' PrintboardUpload.Generate ' ) }} < / div > - - >
2024-04-29 15:12:27 +08:00
<!-- < div v-show = "!isGenerate" class="generage_btn started_btn" @click.stop="getgenerate" >
{ { $t ( 'PrintboardUpload.Generate' ) } }
< / div > -- >
2024-04-26 15:27:01 +08:00
< div v-show = "!isGenerate" class="generage_btn started_btn" @click.stop="getgenerate" >
{ { $t ( 'PrintboardUpload.Generate' ) } }
2024-04-29 15:12:27 +08:00
<!-- < div v-show = "isGenerate"><a-spin size="large" / > < / div > -- >
2024-04-26 15:27:01 +08:00
< / div >
2024-04-29 15:12:27 +08:00
< div v-show = "isGenerate && !remGenerate" class="generage_btn started_btn" @click.stop="getgenerate" >
2024-04-26 15:27:01 +08:00
< i class = "fi fi-br-loading" > < / i >
< / div >
2024-04-29 15:12:27 +08:00
< div v-show = "remGenerate" @click="removeGenerate" class="generage_btn started_btn" >
{ { $t ( 'Generate.Close' ) } }
< / div >
2024-04-24 13:36:27 +08:00
< span ref = "inputShowText" > < / span >
2024-04-03 17:39:44 +08:00
< / div >
2024-05-28 16:00:26 +08:00
< 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 >
2024-04-15 16:09:33 +08:00
<!-- < div >
2024-04-03 17:39:44 +08:00
< div v-show = "!isUseGenerate" @click="setUseGenerate" > Printboard < / div >
< div v-show = "isUseGenerate" @click="setUseGenerate" > Generate < / div >
2024-04-15 16:09:33 +08:00
< / div > -- >
2023-08-21 10:55:39 +08:00
< / div >
2024-04-19 10:49:05 +08:00
< div class = "modal_img" :style = "[loadingShow?'overflow:hidden':'']" >
2024-04-29 15:12:27 +08:00
< 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)" >
2023-09-12 10:11:27 +08:00
< div
2024-04-30 11:45:19 +08:00
class = "delete_like_file_block left1"
2023-12-08 16:27:35 +08:00
: class = "[driver__.driver?'hideEvents':'']"
2023-09-12 10:11:27 +08:00
>
2023-09-25 10:09:00 +08:00
< i v-if = "!item.like" class="fi fi-rr-heart" @click.stop="likeFile(item,'like')" > < / i >
2024-05-16 09:41:16 +08:00
< i v-else class = "fi fi-sr-heart" :adminLike = "!!item.like" @click.stop ="likeFile(item,'noLike')" > < / i >
2023-09-12 10:11:27 +08:00
< / div >
2023-12-15 11:10:32 +08:00
< div class = "delete_like_file_block left" :class = "[driver__.driver?'hideEvents':'']" >
2024-01-02 13:04:57 +08:00
< i class = "fi fi-bs-expand-arrows-alt" @click.stop ="scaleImage(index)" > < / i >
2023-12-15 11:10:32 +08:00
< / div >
2024-04-30 11:45:19 +08:00
< div class = "delete_like_file_block" :title = "t('LibraryPage.Delete')" @click.stop ="deleteGenerate(index)" >
< span class = "icon iconfont icon-shanchu operate_icon" > < / span >
< / div >
2023-08-23 17:50:09 +08:00
< div class = "pin_block" >
2023-10-30 17:26:36 +08:00
< a-checkbox v -model :checked = "item.pin" > { { $t ( 'PrintboardUpload.PIN' ) } } < / a-checkbox >
2023-08-23 17:50:09 +08:00
< / div >
2023-08-21 10:55:39 +08:00
< / div >
2024-01-26 13:16:47 +08:00
< / div >
< div class = "mark_loading" v-show = "loadingShow" >
2024-01-24 10:34:05 +08:00
< a-spin size = "large" / >
2024-01-26 13:16:47 +08:00
< div v-show = "remGenerate" :class="[driver__.driver?'hideEvents':'']" class="mark_loading_btn" @click="removeGenerate" > {{ $ t ( ' Generate.Close ' ) }} < / div >
2024-01-24 10:34:05 +08:00
< / div >
2023-08-21 10:55:39 +08:00
< / div >
< / div >
2024-01-04 09:40:28 +08:00
<!-- 取消请求 -- >
<!-- < button @click ="canelAxios" > 9999999999999999999 < / button > - - >
2023-12-15 11:10:32 +08:00
< scaleImage ref = "scaleImage" > < / scaleImage >
2023-08-23 17:50:09 +08:00
< Cropper ref = "Cropper" @handleCropperSuccess ="handleCropperSuccess" @closeCropper ="deletUploadFile()" :cropperFileData = "cropperFileData" :isUpload = "isUpload" > < / Cropper >
2023-01-06 16:00:15 +08:00
< / div >
< / template >
< script lang = "ts" >
2024-05-28 16:00:26 +08:00
import { defineComponent , h , ref , computed , inject , createVNode , provide , nextTick } from 'vue'
2023-01-06 16:00:15 +08:00
import { LoadingOutlined } from '@ant-design/icons-vue' ;
import { getCookie } from '@/tool/cookie'
import { getUploadUrl } from '@/tool/util'
import { useStore } from 'vuex'
import { Https } from "@/tool/https" ;
2024-04-30 11:45:19 +08:00
import { Modal , message , Upload } from 'ant-design-vue' ;
2023-01-06 16:00:15 +08:00
import Cropper from '@/component/HomePage/Cropper.vue'
import Material from '@/component/HomePage/Material.vue'
2023-08-05 12:52:56 +08:00
import Generate from "@/component/HomePage/Generate.vue" ;
2023-08-23 17:50:09 +08:00
import GO from "@/tool/GO" ;
2023-10-30 17:26:36 +08:00
import { useI18n } from 'vue-i18n' ;
2023-11-23 15:31:40 +08:00
import { openGuide , driverObj _ _ } from "@/tool/guide" ;
2023-12-15 11:10:32 +08:00
import scaleImage from "@/component/HomePage/scaleImage.vue" ;
2024-04-30 11:45:19 +08:00
import { ExclamationCircleOutlined } from '@ant-design/icons-vue' ;
2024-01-04 09:40:28 +08:00
import axios from 'axios'
2024-05-28 16:00:26 +08:00
import generalMenu from "@/component/HomePage/generalMenu.vue" ;
2024-04-19 10:49:05 +08:00
import { overflow } from 'html2canvas/dist/types/css/property-descriptors/overflow' ;
2023-08-23 17:50:09 +08:00
2023-01-06 16:00:15 +08:00
export default defineComponent ( {
components : {
Cropper ,
2023-08-05 12:52:56 +08:00
Material ,
2023-12-15 11:10:32 +08:00
Generate ,
scaleImage ,
2024-05-28 16:00:26 +08:00
generalMenu ,
2023-01-06 16:00:15 +08:00
} ,
setup ( ) {
let store : any = useStore ( )
let fileList : any = ref ( [ ] ) , //选中的文件id数据
printImgList : any = ref ( [ ] ) , //print的印花图片
2023-11-10 10:56:18 +08:00
moodBoards : any = computed ( ( ) => { return store . state . UploadFilesModule . moodboard } ) ,
2023-11-23 15:31:40 +08:00
printBoards : any = computed ( ( ) => {
return store . state . UploadFilesModule . printboard
} )
2023-08-05 12:52:56 +08:00
let openClick : any = ref ( 1 ) ;
2023-08-21 10:55:39 +08:00
let generateCheckbox : any = ref ( )
2023-12-15 11:10:32 +08:00
let generateList : any = ref ( [
] )
2023-09-25 10:09:00 +08:00
let loadingShow = ref ( false )
2024-04-26 15:27:01 +08:00
let isGenerate = ref ( false )
2023-10-20 17:21:45 +08:00
let inputShow = ref ( false )
let inputTime = ref ( )
2023-11-23 15:42:36 +08:00
let driver _ _ : any = inject ( 'driver__' )
2023-10-30 17:26:36 +08:00
let { t } = useI18n ( )
2023-11-16 09:44:53 +08:00
let isTest = ref ( )
2024-01-24 10:34:05 +08:00
let userInfo : any = { }
let generateTime : any = ref ( )
2024-04-29 15:12:27 +08:00
let generateProceedList = ref ( [ ] )
2024-01-26 13:16:47 +08:00
let remGenerate : any = ref ( false )
let remGenerateTime : any = ref ( )
2024-04-03 17:39:44 +08:00
let isUseGenerate = ref ( false )
let useGenerate : any = ref ( {
imgId : '' ,
imgUrl : 1 ,
checked : false ,
level2Type : '' ,
designType : ''
} )
2024-05-28 16:00:26 +08:00
let workspace = ref ( { } )
let sceneList = ref ( [
{
label : 'pattern' ,
value : 'pattern'
} , {
label : 'slogan' ,
value : 'slogan'
} , {
label : 'logo' ,
value : 'logo'
} ,
] )
let scene = ref ( {
label : 'pattern' ,
value : 'pattern'
} )
let openMenu = ref ( false )
2023-01-06 16:00:15 +08:00
return {
fileList ,
printImgList ,
2023-08-05 12:52:56 +08:00
moodBoards ,
2023-11-10 10:56:18 +08:00
printBoards ,
2023-08-21 10:55:39 +08:00
openClick ,
generateCheckbox ,
generateList ,
2023-09-25 10:09:00 +08:00
loadingShow ,
2024-04-26 15:27:01 +08:00
isGenerate ,
2023-10-20 17:21:45 +08:00
inputShow ,
inputTime ,
2023-11-23 15:42:36 +08:00
driver _ _ ,
2023-10-30 17:26:36 +08:00
t ,
2023-11-16 09:44:53 +08:00
isTest ,
2024-01-24 10:34:05 +08:00
userInfo ,
2024-04-29 15:12:27 +08:00
generateProceedList ,
2024-01-24 10:34:05 +08:00
generateTime ,
2024-01-26 13:16:47 +08:00
remGenerate ,
remGenerateTime ,
2024-04-03 17:39:44 +08:00
useGenerate ,
isUseGenerate ,
2024-05-28 16:00:26 +08:00
workspace ,
sceneList ,
scene ,
openMenu ,
2023-01-06 16:00:15 +08:00
}
} ,
computed : {
2024-01-03 10:50:22 +08:00
// getPinLength(){
// let selectLength:any = 0
// for(let item of this.printBoards){
// if(item.pin){
// selectLength++
// }
// }
// return selectLength
// }
2023-01-06 16:00:15 +08:00
} ,
2023-11-23 15:31:40 +08:00
watch : {
printBoards : {
handler ( newVal : any , oldVal : any ) {
2023-12-07 14:26:21 +08:00
// if(newVal.length>=2 && this.driver__.driver && newVal.length!=oldVal.length){
// driverObj__.moveTo(7)
// }
2023-11-23 15:31:40 +08:00
}
}
} ,
2023-01-06 16:00:15 +08:00
data ( ) {
return {
swtich _type : 'upload' ,
indicator : h ( LoadingOutlined , {
style : {
2024-01-10 14:09:44 +08:00
fontSize : '2.4rem*1.2)' ,
2023-01-06 16:00:15 +08:00
} ,
spin : true ,
} ) ,
upload : {
isPin : 0 ,
2023-12-11 15:22:55 +08:00
gender : '' ,
2023-01-06 16:00:15 +08:00
level1Type : 'Printboard' ,
timeZone : Intl . DateTimeFormat ( ) . resolvedOptions ( ) . timeZone ,
} ,
token : '' ,
uploadUrl : '' ,
store : useStore ( ) ,
cropperFileData : { name : '' , uid : '' } , //裁剪的原始文件数据
currentFileNum : 0 , //当前上传的文件数
isUpload : false ,
2023-08-21 10:55:39 +08:00
captionGeneration : '' ,
printboardList : computed ( ( ) => {
return useStore ( ) . state . UploadFilesModule . printboard
} ) ,
2024-05-20 13:07:42 +08:00
source : axios . CancelToken . source ( ) ,
isTextarea : false ,
2024-05-28 16:00:26 +08:00
isInputFocus : false ,
2023-01-06 16:00:15 +08:00
}
} ,
mounted ( ) {
2024-01-24 10:34:05 +08:00
let userInfo : any = getCookie ( "userInfo" )
this . userInfo = JSON . parse ( userInfo ) ;
2023-01-06 16:00:15 +08:00
this . token = getCookie ( 'token' ) || ''
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 ( )
2024-05-28 16:00:26 +08:00
this . workspace = computed ( ( ) => {
return this . store ? . state ? . Workspace ? . workspace
} )
2023-12-08 16:27:35 +08:00
if ( this . driver _ _ . driver ) {
2024-01-29 17:53:07 +08:00
this . captionGeneration = 'Elegant floral print for high-fashion attire'
2023-12-08 16:27:35 +08:00
} else {
this . captionGeneration = ''
}
2023-01-06 16:00:15 +08:00
} ,
methods : {
2024-04-03 17:39:44 +08:00
//设置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
this . useGenerate . level2Type = item . level2Type
this . useGenerate . designType = item . designType
let Material : any = this . $refs . Material
let generate : any = this . $refs . Generate
if ( item . designType == 'collection' ) {
Material . setUseGenerate ( [ ] )
} else {
generate . sketchboardList . forEach ( ( item : any ) => {
item . checked = false
} ) ;
}
} ,
2024-01-04 09:40:28 +08:00
//取消请求测试
canelAxios ( ) {
// Https.axiosCanel()
this . source . cancel ( '请求被取消' ) ;
this . source = axios . CancelToken . source ( )
} ,
2023-08-05 12:52:56 +08:00
open ( num : Number ) {
this . openClick = num ;
2023-09-12 10:11:27 +08:00
let material : any = this . $refs . Material
if ( num == 2 ) {
material . init ( 'Printboard' )
}
2023-12-08 16:27:35 +08:00
if ( num == 3 ) {
nextTick ( ) . then ( ( ) => {
if ( this . driver _ _ . driver ) {
driverObj _ _ . moveNext ( )
}
} )
}
2023-01-06 16:00:15 +08:00
} ,
fileUploadChange ( data : any ) {
let file = data . file
2023-12-07 14:26:21 +08:00
// let res = JSON.parse(data?.xhr?.response);
2023-08-23 17:50:09 +08:00
file . id _ = GO . id ++
file . type _ = {
type1 : 'upload' ,
2023-09-12 10:11:27 +08:00
type2 : 'Printboard'
2023-08-23 17:50:09 +08:00
} ;
file . pin = false ;
2023-12-07 14:26:21 +08:00
// file.id = res.data.id?res.data.id:""
2023-01-06 16:00:15 +08:00
let Cropper : any = this . $refs . Cropper
if ( this . currentFileNum === 1 ) {
var reader = new FileReader ( ) ;
2023-12-07 14:26:21 +08:00
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 ;
}
Cropper . getOptionImg ( data _new )
2023-12-07 14:26:21 +08:00
2023-01-06 16:00:15 +08:00
} ;
// 转化为base64
// reader.readAsDataURL(file)
// 转化为blob
reader . readAsArrayBuffer ( file . originFileObj ) ;
this . cropperFileData = file
Cropper . changeShowModal ( true )
2023-12-07 14:26:21 +08:00
nextTick ( ) . then ( ( ) => {
if ( this . driver _ _ . driver ) {
driverObj _ _ . moveNext ( )
}
} )
2023-01-06 16:00:15 +08:00
} else {
this . customRequest ( file )
}
} ,
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 ( 'PrintboardUpload.jsContent1' ) ) ;
2023-01-06 16:00:15 +08:00
}
const isLt2M = file . size / 1024 / 1024 < 2 ;
if ( ! isLt2M ) {
2023-11-16 17:23:17 +08:00
message . info ( this . t ( 'PrintboardUpload.jsContent2' ) ) ;
2023-01-06 16:00:15 +08:00
}
if ( isJpgOrPng && isLt2M ) {
this . currentFileNum = fileList . length
} else {
return ( isJpgOrPng && isLt2M ) || Upload . LIST _IGNORE ;
}
} ,
2023-08-21 10:55:39 +08:00
deleteFile ( item : any ) {
// this.fileList.splice(item, 1)
// this.store.commit('setPrintboardFile',this.fileList)
if ( item . type _ . type1 == 'generate' || item . type _ . type1 == 'material' ) {
2023-12-11 11:02:48 +08:00
item . jsContent1 = this . t ( 'uploadFile.jsContent1' , { maxImg : 8 } )
2023-08-21 10:55:39 +08:00
this . store . commit ( "addGenerateMaterialFils" , item ) ;
} else {
2023-09-12 10:11:27 +08:00
this . fileList = this . store . state . UploadFilesModule . printboardFiles
2023-08-21 10:55:39 +08:00
let moodboard
2023-09-12 10:11:27 +08:00
this . store . state . UploadFilesModule . printboardFiles . forEach ( ( items : any , index : Number ) => {
2023-08-21 10:55:39 +08:00
if ( items . id _ == item . id _ ) {
moodboard = index
}
} )
this . fileList . splice ( moodboard , 1 )
2023-09-12 10:11:27 +08:00
this . store . commit ( "setPrintboardFile" , this . fileList ) ;
2023-08-21 10:55:39 +08:00
}
2023-01-06 16:00:15 +08:00
} ,
2023-09-25 10:09:00 +08:00
likeFile ( item : any , str : string ) {
if ( str == 'like' ) {
let data = {
generateDetailId : item . id ,
level1Type : "Printboard" ,
level2Type : '' ,
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-09-12 10:11:27 +08:00
} ,
2024-04-30 11:45:19 +08:00
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 )
}
} ) ;
} ,
2023-01-06 16:00:15 +08:00
customRequest ( data : any ) {
let new _data = {
... this . upload ,
file : data . originFileObj
}
let fileUid = data . uid
Https . axiosPost ( '/api/element/upload' , new _data , { headers : { 'Content-Type' : 'multipart/form-data' } } ) . then (
( rv : any ) => {
if ( rv ) {
for ( let file of this . fileList ) {
if ( fileUid === file . uid ) {
file . status = 'done'
file . imgUrl = rv . url
file . pin = false
file . id = rv . id
file . resData = rv
}
}
let fileList = this . fileList . filter ( ( v : any ) => v . status === 'done' )
this . store . commit ( 'setPrintboardFile' , fileList )
}
}
) . catch ( ( res ) => {
let index = - 1
this . fileList . forEach ( ( ele : any , index1 : any ) => {
if ( fileUid === ele . uid ) {
index = index1
}
} ) ;
if ( index > - 1 ) {
this . fileList . splice ( index , 1 )
}
} ) ;
} ,
closeCropper ( type : any ) {
if ( this . isUpload ) {
return
}
if ( type == 'error' ) {
let index = - 1
this . fileList . forEach ( ( ele : any , index1 : any ) => {
if ( this . cropperFileData . uid === ele . uid ) {
index = index1
}
} ) ;
if ( index > - 1 ) {
this . fileList . splice ( index , 1 )
}
}
let Cropper : any = this . $refs . Cropper
Cropper . closeCropper ( )
} ,
deletUploadFile ( ) {
let index = - 1
this . fileList . forEach ( ( ele : any , index1 : any ) => {
if ( this . cropperFileData . uid === ele . uid ) {
index = index1
}
} ) ;
if ( index > - 1 ) {
this . fileList . splice ( index , 1 )
}
} ,
handleCropperSuccess ( event : any ) {
let { file , fileData } = event
let new _data = {
... this . upload ,
file : file
}
if ( this . isUpload ) {
return
}
this . isUpload = true
const hide = message . loading ( 'loading' , 0 ) ;
Https . axiosPost ( '/api/element/upload' , new _data , { headers : { 'Content-Type' : 'multipart/form-data' } } ) . then (
( rv : any ) => {
for ( let file of this . fileList ) {
if ( fileData . uid === file . uid ) {
file . status = 'done'
file . imgUrl = rv . url
file . id = rv . id
file . resData = rv
}
}
let fileList = this . fileList . filter ( ( v : any ) => v . status === 'done' )
this . isUpload = false
this . closeCropper ( 'success' )
this . cropperFileData = { name : '' , uid : '' }
this . store . commit ( 'setPrintboardFile' , fileList )
hide ( )
2023-12-07 14:26:21 +08:00
nextTick ( ) . then ( ( ) => {
if ( this . driver _ _ . driver ) {
driverObj _ _ . moveNext ( )
}
} )
2023-01-06 16:00:15 +08:00
}
) . catch ( res => {
let index = - 1
this . fileList . forEach ( ( ele : any , index1 : any ) => {
if ( fileData . uid === ele . uid ) {
index = index1
}
} ) ;
if ( index > - 1 ) {
this . fileList . splice ( index , 1 )
}
this . cropperFileData = { name : '' , uid : '' }
this . isUpload = false
this . closeCropper ( 'error' )
hide ( )
} ) ;
} ,
recollection ( ) {
2024-04-03 17:39:44 +08:00
this . isUseGenerate = false
this . useGenerate = {
imgId : '' ,
imgUrl : 1 ,
checked : false ,
level2Type : '' ,
designType : '' ,
}
2023-08-23 17:50:09 +08:00
let arr = JSON . parse ( JSON . stringify ( this . store . state . UploadFilesModule . allBoardData . printboardFiles ) )
let setboard = {
generate : [ ] as any ,
material : [ ] as any ,
moodboard : [ ] as any ,
}
arr . forEach ( ( v : any ) => {
if ( v . type _ . type1 == 'generate' ) {
setboard . generate . push ( v )
} else if ( v . type _ . type1 == 'material' ) {
setboard . material . push ( v )
} else {
setboard . moodboard . push ( v )
}
} )
this . store . commit ( "setPrintboardGenerateFiles" , setboard . generate ) ;
this . store . commit ( "setPrintboardMaterialFiles" , setboard . material ) ;
this . store . commit ( "setPrintboardFile" , setboard . moodboard ) ;
this . fileList = setboard . moodboard
// this.printImgList = JSON.parse(JSON.stringify(this.store.state.UploadFilesModule.allBoardData.generatePrintFiles))
2023-01-06 16:00:15 +08:00
this . store . commit ( 'setPrintboardFile' , this . fileList )
2023-08-23 17:50:09 +08:00
// this.store.commit('setGeneratePrintFile',this.printImgList)
2023-01-06 16:00:15 +08:00
} ,
confirmSelect ( event : any ) {
for ( let item of event ) {
let data = {
imgUrl : item . url ,
resData : item ,
pin : false ,
id : item . id ,
status : 'done' ,
}
if ( this . fileList . length == 15 ) {
2023-10-30 17:26:36 +08:00
message . warning ( this . t ( 'PrintboardUpload.jsContent3' ) )
2023-01-06 16:00:15 +08:00
break
}
this . fileList . push ( data )
}
this . store . commit ( 'setPrintboardFile' , this . fileList )
2023-08-21 10:55:39 +08:00
} ,
getgenerateCheckbox ( value : any ) {
this . generateCheckbox = value
} ,
2024-05-20 13:07:42 +08:00
setTextareaShow ( ) {
if ( this . generateCheckbox ) return
this . isTextarea = ! this . isTextarea
} ,
2024-05-28 16:00:26 +08:00
cliSetKeyword ( value : any ) {
let str = ''
if ( this . captionGeneration [ this . captionGeneration . length - 1 ] != ',' && this . captionGeneration . length != 0 ) {
str = ','
}
this . captionGeneration += str + value
} ,
2023-10-20 17:21:45 +08:00
ifMaximumLength ( ) {
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 ( 'PrintboardUpload.maximumLength' )
2023-10-20 17:21:45 +08:00
this . inputShow = true
} else {
this . inputShow = false
}
} , 500 )
} ,
2024-05-28 16:00:26 +08:00
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 )
} ,
2023-08-21 10:55:39 +08:00
getgenerate ( ) {
2024-01-26 13:16:47 +08:00
clearInterval ( this . remGenerateTime )
this . remGenerate = false
2024-01-30 13:33:08 +08:00
// if(this.isTest){//试用用户禁止使用
// message.warning(
// this.t('isTest.available')
// );
// return
// }
2024-04-26 15:27:01 +08:00
if ( this . isGenerate ) {
2023-12-29 15:33:05 +08:00
return
}
2023-08-21 10:55:39 +08:00
let generage : any = this . $refs . Generate
2024-01-03 10:50:22 +08:00
2023-11-10 10:56:18 +08:00
if ( generage . printModel . num == 'Generate' ) {
this . generatePrint ( )
return
}
2024-01-03 10:50:22 +08:00
//如果是通过moodboard随即图片生成
let generateType = generage . checkbox . filter ( ( v : any ) => v . type ) [ 0 ] . name
2023-08-21 10:55:39 +08:00
let data = {
generateType : generateType ,
2024-04-24 14:37:46 +08:00
// designType:this.useGenerate.designType,
designType : 'collection' ,
2024-04-03 17:39:44 +08:00
collectionElementId : this . useGenerate . imgId ,
// collectionElementId:generage?.collectionElementid,
level1Type : this . upload . level1Type ,
2023-09-25 10:09:00 +08:00
level2Type : '' ,
2024-01-02 13:04:57 +08:00
text : ` ${ generage . printModel . value } , ${ this . captionGeneration } ` ,
2023-08-21 10:55:39 +08:00
timeZone : Intl . DateTimeFormat ( ) . resolvedOptions ( ) . timeZone ,
2024-01-24 10:34:05 +08:00
userId : this ? . userInfo ? . userId ,
2024-01-30 13:33:08 +08:00
isTestUser : this . driver _ _ . driver ? false : this . isTest ,
2024-01-02 13:04:57 +08:00
version : 1 , //为1就是Print
2023-10-20 17:21:45 +08:00
gender : '' ,
2023-08-21 10:55:39 +08:00
}
2023-12-15 15:23:34 +08:00
if ( generateType == 'image' ) {
2023-10-31 16:04:40 +08:00
if ( generage ? . collectionElementid ) {
2024-04-25 17:16:16 +08:00
data . text = generage . printModel . value
2024-01-03 10:50:22 +08:00
2023-08-21 10:55:39 +08:00
} else {
2023-11-16 17:23:17 +08:00
message . info (
2023-10-30 17:26:36 +08:00
this . t ( 'PrintboardUpload.jsContent4' )
2023-08-21 10:55:39 +08:00
) ;
return
}
} else if ( generateType == 'text' ) {
2023-09-12 10:11:27 +08:00
data . collectionElementId = ''
data . level2Type = ''
2023-08-21 10:55:39 +08:00
// this.beforeUpload(false)
2023-09-25 10:09:00 +08:00
if ( this . captionGeneration ) {
2023-10-20 17:21:45 +08:00
let arr = this . captionGeneration . split ( /\s+/ ) . length
2024-05-20 10:45:30 +08:00
if ( arr > 250 ) {
2023-11-16 17:23:17 +08:00
message . info (
2023-10-30 17:26:36 +08:00
this . t ( 'PrintboardUpload.jsContent5' )
2023-10-20 17:21:45 +08:00
) ;
return
}
2023-09-25 10:09:00 +08:00
} else {
2023-11-16 17:23:17 +08:00
message . info (
2023-10-30 17:26:36 +08:00
this . t ( 'PrintboardUpload.jsContent6' )
2023-09-25 10:09:00 +08:00
) ;
return
}
2023-12-15 15:23:34 +08:00
} else if ( generateType == 'text-image' ) {
2024-04-03 17:39:44 +08:00
if ( this . useGenerate . imgId ) {
2023-12-15 15:23:34 +08:00
if ( this . captionGeneration ) {
let arr = this . captionGeneration . split ( /\s+/ ) . length
2024-05-20 10:45:30 +08:00
if ( arr > 250 ) {
2023-12-15 15:23:34 +08:00
message . info (
this . t ( 'PrintboardUpload.jsContent5' )
) ;
return
}
} else {
message . info (
this . t ( 'PrintboardUpload.jsContent6' )
) ;
return
}
} else {
message . info (
this . t ( 'PrintboardUpload.jsContent4' )
) ;
return
}
2023-12-15 11:10:32 +08:00
}
2024-04-26 15:27:01 +08:00
this . isGenerate = true
2024-01-04 09:40:28 +08:00
//取消请求
// Https.axiosPost(Https.httpUrls.sketchAndPrintGenerate, data,{cancelToken: this.source?.token}).then(
2024-01-24 10:34:05 +08:00
Https . axiosPost ( Https . httpUrls . generatePrepare , data ) . then (
2023-11-13 17:33:41 +08:00
( rv ) => {
2024-01-30 13:33:08 +08:00
if ( data . isTestUser ) {
if ( rv . leftUsageCount >= 1 ) {
2024-01-30 14:23:28 +08:00
message . warning ( this . t ( 'Generate.jsContent8' , { num : rv . leftUsageCount , str : this . t ( 'collectionModal.Printboard' ) } ) ) ;
2024-01-30 13:33:08 +08:00
} else if ( rv . leftUsageCount == 0 ) {
message . warning ( this . t ( 'Generate.jsContent9' , { str : this . t ( 'collectionModal.Printboard' ) } ) ) ;
2024-04-26 15:27:01 +08:00
this . isGenerate = false
2024-01-30 13:33:08 +08:00
return
}
2023-11-13 17:33:41 +08:00
}
2024-04-29 15:12:27 +08:00
// rv.uniqueId.forEach((item:any) => {
// let arr:any = {}
// arr.taskId = item
// arr.status = 'execution'
// this.generateList.unshift(arr)
// });
this . setGenerate ( rv . uniqueId )
2023-11-13 17:33:41 +08:00
}
) . catch ( res => {
2024-04-26 15:27:01 +08:00
this . isGenerate = false
2023-11-13 17:33:41 +08:00
} ) ;
2023-08-21 10:55:39 +08:00
} ,
2024-04-29 15:12:27 +08:00
setGenerate ( dataList : any ) {
this . remGenerateTime = setTimeout ( ( ) => {
this . remGenerate = true
} , 10000 )
let data = dataList
2024-04-30 13:21:15 +08:00
let dataNum = dataList . length
2024-01-24 10:34:05 +08:00
this . generateTime = setInterval ( ( ) => {
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-04-26 15:27:01 +08:00
if ( this . isGenerate ) { //防止取消后有正在执行的获取状态
2024-04-29 15:12:27 +08:00
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 ) => {
2024-04-29 15:12:27 +08:00
if ( element . status == 'Success' ) {
element . imgUrl = element . url
element . id _ = GO . id ++
this . generateList . 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-04-19 10:49:05 +08:00
nextTick ( ) . then ( ( ) => {
if ( this . driver _ _ . driver ) {
driverObj _ _ . moveNext ( )
}
} )
clearInterval ( this . generateTime )
clearInterval ( this . remGenerateTime )
this . remGenerate = false
2024-04-30 13:11:58 +08:00
this . isGenerate = false
2024-04-19 10:49:05 +08:00
}
2024-01-24 10:34:05 +08:00
}
2024-04-19 10:49:05 +08:00
2024-01-24 10:34:05 +08:00
}
) . catch ( res => {
2024-01-31 17:11:10 +08:00
clearInterval ( this . generateTime )
clearInterval ( this . remGenerateTime )
2024-04-30 13:11:58 +08:00
this . remGenerate = false
2024-04-26 15:27:01 +08:00
this . isGenerate = false
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-22 09:46:40 +08:00
//取消操作
2024-04-26 15:27:01 +08:00
this . isGenerate = false
2024-04-29 15:12:27 +08:00
this . remGenerate = false
2024-04-22 09:46:40 +08:00
clearInterval ( this . generateTime )
2024-04-29 15:12:27 +08:00
if ( this . generateProceedList ) {
let str = this . generateProceedList . map ( ( obj : any ) => obj . taskId ) . join ( ',' ) ;
2024-04-19 10:49:05 +08:00
let data = { uniqueId : str , userId : this ? . userInfo ? . userId , timeZone : Intl . DateTimeFormat ( ) . resolvedOptions ( ) . timeZone }
2024-01-24 10:34:05 +08:00
Https . axiosGet ( Https . httpUrls . generateStopWaiting , { params : data } ) . then (
( rv ) => {
2024-04-29 15:12:27 +08:00
this . generateProceedList = [ ]
2024-01-24 10:34:05 +08:00
}
) . catch ( res => {
} ) ;
}
} ,
2023-11-10 10:56:18 +08:00
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
} ,
2024-01-03 10:50:22 +08:00
2023-11-10 10:56:18 +08:00
generatePrint ( ) {
let data : any = { }
//随机获取图片id
2024-01-03 10:50:22 +08:00
let generage : any = this . $refs . Generate
let generateList = generage . sketchboardList
let isGenerateListChecked = generateList . filter ( ( item : any ) => item . checked )
2023-11-10 10:56:18 +08:00
if ( ! this . moodBoards . length ) { //mood没有图片
let index1 = - 1
let index2 = - 2
2024-01-03 10:50:22 +08:00
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 ) {
2023-11-10 10:56:18 +08:00
index1 = index
}
} ) ;
2024-01-03 10:50:22 +08:00
index2 = this . randomRange ( 0 , generateList . length , index1 )
2023-11-10 10:56:18 +08:00
} else { //pin住多个
let selectIndexList : any = [ ]
2024-01-03 10:50:22 +08:00
generateList . forEach ( ( element : any , index : number ) => {
2023-11-10 10:56:18 +08:00
if ( element . pin ) {
selectIndexList . push ( index )
}
} ) ;
index1 = this . randomRange ( 0 , selectIndexList . length , - 1 ) //pin住的中随机选一个
2024-01-03 10:50:22 +08:00
index2 = this . randomRange ( 0 , generateList . length , selectIndexList [ index1 ] ) //除了选中的外再来一个
2023-11-10 10:56:18 +08:00
}
data = {
2024-01-03 10:50:22 +08:00
select1Id : generateList [ index1 ] . id ,
select2Id : generateList [ index2 ] . id
2023-11-10 10:56:18 +08:00
}
} else {
let index1 = this . randomRange ( 0 , this . moodBoards . length , - 1 )
let index2 = - 2
2024-01-03 10:50:22 +08:00
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 ) => {
2023-11-10 10:56:18 +08:00
if ( element . pin ) {
index2 = index
}
} ) ;
} else { //pin住多个
let selectIndexList : any = [ ]
2024-01-03 10:50:22 +08:00
generateList . forEach ( ( element : any , index : number ) => {
2023-11-10 10:56:18 +08:00
if ( element . pin ) {
selectIndexList . push ( index )
}
} ) ;
index2 = this . randomRange ( 0 , selectIndexList . length , - 1 ) //pin住的中随机选一个
}
data = {
select1Id : this . moodBoards [ index1 ] . resData . id ,
2024-01-03 10:50:22 +08:00
select2Id : generateList [ index2 ] . id
2023-11-10 10:56:18 +08:00
}
}
data . timeZone = Intl . DateTimeFormat ( ) . resolvedOptions ( ) . timeZone ,
this . loadingShow = true
Https . axiosPost ( Https . httpUrls . elementGeneratePrint , data ) . then ( ( rv ) => {
if ( rv ) {
2023-11-16 17:23:17 +08:00
this . generateList = [ ]
let value = {
id : rv . generateItemId ,
imgUrl : rv . generateItemUrl ,
id _ : GO . id ++ ,
like : rv . isLiked
}
this . generateList . push ( value )
this . loadingShow = false
2023-11-10 10:56:18 +08:00
}
} ) . catch ( res => {
this . loadingShow = false
} )
} ,
2024-01-02 13:04:57 +08:00
scaleImage ( index : any ) {
2023-12-15 11:10:32 +08:00
let scaleImage : any = this . $refs . scaleImage
2024-01-02 13:04:57 +08:00
scaleImage . init ( this . generateList , index )
2023-12-15 11:10:32 +08:00
} ,
2023-08-21 10:55:39 +08:00
generageAdd ( item : any ) {
2024-04-03 17:39:44 +08:00
// 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 ( )
}
// }
2024-05-28 16:00:26 +08:00
} ,
setSceneList ( data : any ) {
if ( this . scene . value === data . value ) return
this . scene = data
console . log ( data ) ;
let generate : any = this . $refs . Generate
generate . scene = data
this . openMenu = false
} ,
openPrintModel ( ) {
if ( this . openMenu ) return
document . addEventListener ( 'click' , this . removePrintModel )
this . openMenu = true
} ,
removePrintModel ( ) {
this . openMenu = false
document . removeEventListener ( 'click' , this . removePrintModel )
2023-08-21 10:55:39 +08:00
}
2023-01-06 16:00:15 +08:00
}
} )
< / script >
< style lang = "less" scoped >
. printboard _upload _modal {
2024-01-10 14:09:44 +08:00
// padding: calc(1rem*1.2) calc(1rem*1.2) calc(1.8rem*1.2) calc(1rem*1.2);
2023-08-21 10:55:39 +08:00
height : 100 % ;
2023-01-06 16:00:15 +08:00
display : flex ;
. printboard _left _upload {
2023-09-12 10:11:27 +08:00
display : flex ;
flex - direction : column ;
2024-01-10 14:09:44 +08:00
padding - top : calc ( 4 rem * 1.2 ) ;
2023-08-21 10:55:39 +08:00
width : 47 % ;
. switch _type _list {
2023-01-06 16:00:15 +08:00
display : flex ;
2023-08-21 10:55:39 +08:00
align - items : center ;
position : relative ;
2024-05-28 16:00:26 +08:00
z - index : 11 ;
2023-08-21 10:55:39 +08:00
. switch _type _item {
2023-01-06 16:00:15 +08:00
display : flex ;
align - items : center ;
2024-01-10 14:09:44 +08:00
// padding: 0 2rem*1.2);
height : calc ( 4 rem * 1.2 ) ;
2023-08-21 10:55:39 +08:00
background : # fff ;
2024-01-10 14:09:44 +08:00
border - radius : calc ( 0.8 rem * 1.2 ) ;
line - height : calc ( 4 rem * 1.2 ) ;
2023-11-27 16:25:32 +08:00
font - size : var ( -- aida - fsize1 - 8 ) ;
2024-01-10 14:09:44 +08:00
// margin-right: 2.2rem*1.2);
margin - right : calc ( 8 rem * 1.2 ) ;
2023-08-21 10:55:39 +08:00
color : # 000 ;
cursor : pointer ;
position : relative ;
text - align : center ;
transform - origin : left ;
transform : scale ( 1 ) ;
transition : 0.3 s all ;
& . switch _type _item : : before {
position : absolute ;
content : "" ;
display : block ;
background : # 000 ;
2024-01-10 14:09:44 +08:00
height : calc ( .3 rem * 1.2 ) ;
2023-08-21 10:55:39 +08:00
left : 50 % ;
transform : translateX ( - 50 % ) ;
2024-01-10 14:09:44 +08:00
bottom : calc ( .6 rem * 1.2 ) ;
2023-08-21 10:55:39 +08:00
width : 0 px ;
transition : 0.3 s all ;
2023-01-06 16:00:15 +08:00
}
2023-08-21 10:55:39 +08:00
& . select _swtich {
color : # 000 ;
// font-weight: 900;
transform : scale ( 1.15 ) ;
2023-01-06 16:00:15 +08:00
}
2023-08-21 10:55:39 +08:00
& . select _swtich : : before {
width : 100 % ;
2023-01-06 16:00:15 +08:00
}
2024-05-28 16:00:26 +08:00
2023-08-21 10:55:39 +08:00
. switch _icon {
2024-01-10 14:09:44 +08:00
font - size : calc ( 1.8 rem * 1.2 ) ;
margin - right : calc ( 0.8 rem * 1.2 ) ;
2023-01-06 16:00:15 +08:00
}
}
2024-05-28 16:00:26 +08:00
. printMenu {
margin - right : 0 ;
margin - top : auto ;
> div {
width : 14 rem ;
font - size : var ( -- aida - fsize1 - 6 ) ;
border : 0 ;
i {
transition : all .3 s ;
display : inline - block ;
}
. forbidden {
transform : rotate ( 180 deg ) ;
}
}
ul {
width : 14 rem ;
}
}
. switch _type _item : nth - child ( 3 ) {
margin : 0 ;
}
2023-01-06 16:00:15 +08:00
}
. printboard _body {
2023-11-06 15:19:52 +08:00
display : flex ;
flex - direction : column ;
2024-01-10 14:09:44 +08:00
// height: calc(100% - 5rem*1.2));
2023-09-12 10:11:27 +08:00
flex : 1 ;
2024-01-10 14:09:44 +08:00
padding - top : calc ( 2.5 rem * 1.2 ) ;
height : calc ( 30 rem * 1.2 ) ;
2023-08-21 10:55:39 +08:00
overflow - x : hidden ;
border - right : 1 px solid # e5e5e5 ;
& . printboard _body : : - webkit - scrollbar {
display : none ;
}
2023-01-06 16:00:15 +08:00
. upload _img _body {
2024-01-10 14:09:44 +08:00
height : calc ( 100 % - 3 rem * 1.2 ) ;
2023-01-06 16:00:15 +08:00
overflow - y : auto ;
2024-01-10 14:09:44 +08:00
margin - bottom : calc ( 1 rem * 1.2 ) ;
2023-08-21 10:55:39 +08:00
& . upload _img _body : : - webkit - scrollbar {
display : none ;
}
2023-01-06 16:00:15 +08:00
}
2023-08-21 10:55:39 +08:00
2023-01-06 16:00:15 +08:00
. upload _file _item {
2024-01-10 14:09:44 +08:00
margin : 0 calc ( 2 rem * 1.2 ) calc ( 5 rem * 1.2 ) 0 ;
// margin: 0 2rem*1.2) 2rem*1.2) 0;
2023-08-21 10:55:39 +08:00
display : inline - block ;
2024-01-10 14:09:44 +08:00
width : calc ( 10 rem * 1.2 ) ;
height : calc ( 10 rem * 1.2 ) ;
2023-08-21 10:55:39 +08:00
border : 1 px solid # f5f5f5 ;
vertical - align : top ;
position : relative ;
2023-10-20 17:21:45 +08:00
text - align : center ;
2023-08-21 10:55:39 +08:00
img {
2023-10-20 17:21:45 +08:00
width : auto ;
object - fit : cover ;
2023-08-21 10:55:39 +08:00
height : 100 % ;
2023-10-20 17:21:45 +08:00
max - width : 100 % ;
2023-08-21 10:55:39 +08:00
}
2023-01-06 16:00:15 +08:00
2023-10-20 17:21:45 +08:00
. upload _file _img _block {
height : 100 % ;
}
2023-01-06 16:00:15 +08:00
& . upload _component {
border : none ;
2023-08-21 10:55:39 +08:00
: deep ( . ant - upload - picture - card - wrapper ) {
position : absolute ;
top : 50 % ;
left : 50 % ;
transform : translate ( - 50 % , - 50 % ) ;
}
: deep ( . ant - upload - select - picture - card ) {
2024-01-10 14:09:44 +08:00
width : calc ( 6 rem * 1.2 ) ;
height : calc ( 6 rem * 1.2 ) ;
border : calc ( 0.3 rem * 1.2 ) solid # ededed ;
border - radius : calc ( 1 rem * 1.2 ) ;
2023-08-21 10:55:39 +08:00
margin : 0 ;
}
}
. checked {
position : absolute ;
top : 0 ;
left : 0 ;
width : 100 % ;
height : 100 % ;
cursor : pointer ;
display : none ;
justify - content : center ;
align - items : center ;
}
& . modal _img _item : hover . checked {
display : flex ;
2023-09-12 10:11:27 +08:00
}
. upload _file _item _content {
display : flex ;
align - items : center ;
justify - content : center ;
height : 100 % ;
position : relative ;
cursor : pointer ;
. upload _img {
display : block ;
max - height : 100 % ;
2023-10-20 17:21:45 +08:00
width : auto ;
2023-09-12 10:11:27 +08:00
max - width : 100 % ;
2023-10-20 17:21:45 +08:00
object - fit : cover ;
2023-09-12 10:11:27 +08:00
}
& : hover . delete _like _file _block {
display : block ;
}
}
2023-08-21 10:55:39 +08:00
}
2023-11-06 15:19:52 +08:00
. upload _max _tip {
display : flex ;
align - items : center ;
justify - content : center ;
2024-01-10 14:09:44 +08:00
font - size : calc ( 1.4 rem * 1.2 ) ;
2023-11-06 15:19:52 +08:00
color : # 030303 ;
. icon - zhuyi {
2024-01-10 14:09:44 +08:00
font - size : calc ( 1.6 rem * 1.2 ) ;
margin - right : calc ( 0.7 rem * 1.2 ) ;
2023-11-06 15:19:52 +08:00
}
}
2023-01-06 16:00:15 +08:00
}
}
2023-09-12 10:11:27 +08:00
2023-08-21 10:55:39 +08:00
. modal _right {
flex : 1 ;
2024-01-10 14:09:44 +08:00
margin - left : calc ( 3 rem * 1.2 ) ;
2023-08-23 17:50:09 +08:00
display : flex ;
flex - direction : column ;
2023-08-21 10:55:39 +08:00
. modal _layout , . modal _accomplish {
. modal _text {
2023-11-27 16:25:32 +08:00
font - size : var ( -- aida - fsize1 - 4 ) ;
2023-08-21 10:55:39 +08:00
font - weight : 400 ;
color : rgba ( 0 , 0 , 0 , 0.45 ) ;
display : flex ;
align - items : center ;
justify - content : space - between ;
}
}
. modal _layout {
. modal _img {
2024-01-10 14:09:44 +08:00
width : calc ( 40 rem * 1.2 ) ;
height : calc ( 5 rem * 1.2 ) ;
2023-08-21 10:55:39 +08:00
overflow - x : hidden ;
display : flex ;
flex - direction : row ;
& . modal _img : : - webkit - scrollbar {
display : none ;
}
. modal _img _item {
2024-01-10 14:09:44 +08:00
width : calc ( 4 rem * 1.2 ) ;
height : calc ( 4 rem * 1.2 ) ;
margin : 0 calc ( 1 rem * 1.2 ) calc ( 1 rem * 1.2 ) 0 ;
2023-08-21 10:55:39 +08:00
position : relative ;
cursor : pointer ;
2023-10-20 17:21:45 +08:00
text - align : center ;
2023-11-06 15:19:52 +08:00
overflow : hidden ;
2023-08-21 10:55:39 +08:00
img {
2023-10-20 17:21:45 +08:00
width : auto ;
2023-08-21 10:55:39 +08:00
height : 100 % ;
2023-10-20 17:21:45 +08:00
object - fit : cover ;
max - width : 100 % ;
2023-08-21 10:55:39 +08:00
}
. checked {
position : absolute ;
top : 0 ;
left : 0 ;
width : 100 % ;
height : 100 % ;
cursor : pointer ;
display : none ;
justify - content : center ;
align - items : center ;
}
& . modal _img _item : hover . checked {
display : flex ;
}
}
}
}
. modal _accomplish {
2024-01-10 14:09:44 +08:00
// margin-top: 2rem*1.2);
2024-04-19 10:49:05 +08:00
overflow - x : hidden ;
2024-01-10 14:09:44 +08:00
height : calc ( 30 rem * 1.2 ) ;
2023-08-21 10:55:39 +08:00
display : flex ;
flex - direction : column ;
2023-08-23 17:50:09 +08:00
flex : 1 ;
2023-11-02 11:00:38 +08:00
position : relative ;
. mark _loading {
position : absolute ;
width : 100 % ;
height : 100 % ;
z - index : 99 ;
}
2023-10-20 17:21:45 +08:00
// overflow-x: hidden;
2023-08-23 17:50:09 +08:00
& . modal _accomplish : : - webkit - scrollbar {
display : none ;
}
2023-08-21 10:55:39 +08:00
. modal _text {
2024-01-10 14:09:44 +08:00
padding - top : calc ( 2 rem * 1.2 ) ;
padding - block : calc ( 2 rem * 1.2 ) ;
2023-08-21 10:55:39 +08:00
}
. input _box {
input {
2024-04-23 14:01:56 +08:00
2023-08-21 10:55:39 +08:00
}
}
. modal _img {
flex : 1 ;
display : flex ;
flex - wrap : wrap ;
justify - content : flex - start ;
2023-10-31 16:04:40 +08:00
position : relative ;
align - content : flex - start ;
2023-08-21 10:55:39 +08:00
. modal _imgItem {
2024-01-10 14:09:44 +08:00
margin : 0 calc ( 2 rem * 1.2 ) calc ( 5 rem * 1.2 ) 0 ;
2023-08-21 10:55:39 +08:00
display : inline - block ;
2024-01-10 14:09:44 +08:00
width : calc ( 10 rem * 1.2 ) ;
height : calc ( 10 rem * 1.2 ) ;
2023-08-21 10:55:39 +08:00
border : 1 px solid # f5f5f5 ;
position : relative ;
cursor : pointer ;
img {
object - fit : cover ;
height : 100 % ;
2023-10-20 17:21:45 +08:00
max - width : 100 % ;
width : auto ;
2023-08-21 10:55:39 +08:00
}
2023-09-12 10:11:27 +08:00
& : hover . delete _like _file _block {
2024-05-16 17:46:22 +08:00
// display: block;
opacity : 1 ;
2023-09-12 10:11:27 +08:00
}
2023-08-21 10:55:39 +08:00
& . active {
opacity : 0.5 ;
// border: 2px solid;
2024-01-10 14:09:44 +08:00
border - radius : calc ( 1 rem * 1.2 ) ;
2023-09-12 10:11:27 +08:00
transform : scale ( 0.9 ) ;
2023-08-21 10:55:39 +08:00
img {
2023-09-12 10:11:27 +08:00
}
. pin _block {
pointer - events : none ;
}
. delete _like _file _block {
pointer - events : none
2023-08-21 10:55:39 +08:00
}
}
}
}
}
}
2023-01-06 16:00:15 +08:00
}
< / style >