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

View File

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