2023-10-30-语言适配 en
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
<div class="colorboard_upload_modal">
|
||||
<div class="modal_layout">
|
||||
<div class="modal_text">
|
||||
<div>Thumbnail preview of selected moodboard</div>
|
||||
<div>{{ $t('ColorboardUpload.Thumbnail') }}</div>
|
||||
</div>
|
||||
<div class="modal_img">
|
||||
<div class="modal_img_item" v-for="color,index in colorList" :key="color" >
|
||||
@@ -10,7 +10,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<span class="started_btn" @click="clearCurrentColor">Clear</span>
|
||||
<span class="started_btn" @click="clearCurrentColor">{{ $t('ColorboardUpload.Clear') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -19,7 +19,7 @@
|
||||
<div class="right_content_line">
|
||||
<div class="upload_right_header">
|
||||
<i class="color_edit fi fi-bs-comments" ></i>
|
||||
<span>Palette</span>
|
||||
<span>{{ $t('ColorboardUpload.Palette') }}</span>
|
||||
</div>
|
||||
<div class="color_setting_block">
|
||||
<Sketch class="sketch_color" v-model="selectColor" :show.sync="colorPickerVisible"/>
|
||||
@@ -28,10 +28,10 @@
|
||||
<div class="color_block">
|
||||
<div class="color_left" @click="colorBlockHex = !colorBlockHex">
|
||||
<div v-show="colorBlockHex">
|
||||
HEX
|
||||
{{ $t('ColorboardUpload.HEX') }}
|
||||
</div>
|
||||
<div v-show="!colorBlockHex">
|
||||
RGBA
|
||||
{{ $t('ColorboardUpload.RGBA') }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="color_right">
|
||||
@@ -58,7 +58,7 @@
|
||||
<div class="right_content_line right_content_line_upload">
|
||||
<div class="upload_right_header">
|
||||
<i class="color_edit fi fi-bs-comments" ></i>
|
||||
<span>Auto Recognize</span>
|
||||
<span>{{ $t('ColorboardUpload.AutoRecognize') }}</span>
|
||||
</div>
|
||||
<div class="upload_centetn">
|
||||
<div class="upload_item">
|
||||
@@ -99,13 +99,13 @@
|
||||
<div class="right_content_line">
|
||||
<div class="upload_right_header">
|
||||
<i class="color_edit fi fi-bs-comments" ></i>
|
||||
<span>Color Code</span>
|
||||
<span>{{ $t('ColorboardUpload.ColorCode') }}</span>
|
||||
</div>
|
||||
<div class="get_color_block">
|
||||
<input class="get_color_input" placeholder="tcx value (e.g.: 19-4052)" v-model="tcxColor" @keydown.enter="getTcxColor()"/>
|
||||
<div class="get_color_button" @click="getTcxColor()">
|
||||
<span class="icon iconfont icon-huoquduixiang"></span>
|
||||
<span class="get_color_des">Extract Color</span>
|
||||
<span class="get_color_des">{{ $t('ColorboardUpload.ExtractColor') }}</span>
|
||||
</div>
|
||||
<div v-show="getColorBg" class="get_color_bg" @click="setUplpadColor(reviewColor)" :style="{'background-color':`rgba(${getSelectRGB(reviewColor).r},${getSelectRGB(reviewColor).g},${getSelectRGB(reviewColor).b},${getSelectRGB(reviewColor).a})`}">
|
||||
<img src="#" :title="pantongName">
|
||||
@@ -127,6 +127,7 @@ import {getUploadUrl,rgbToHsv} from '@/tool/util'
|
||||
import {useStore} from 'vuex'
|
||||
import ColorThief from '@/tool/colorthief/colorthief'
|
||||
import { message,Upload} from 'ant-design-vue';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
export default defineComponent({
|
||||
components:{
|
||||
Chrome,
|
||||
@@ -141,11 +142,14 @@ export default defineComponent({
|
||||
}) //顔色选择器默认颜色
|
||||
let selectColorList = ref({
|
||||
})
|
||||
|
||||
let {t} = useI18n()
|
||||
return {
|
||||
fileList,
|
||||
colorList,
|
||||
selectColor,
|
||||
selectColorList,
|
||||
t,
|
||||
}
|
||||
},
|
||||
watch:{
|
||||
@@ -218,7 +222,7 @@ export default defineComponent({
|
||||
// return `rgb(${r}, ${g}, ${b})`;
|
||||
// box.style.backgroundColor = label.textContent = result.sRGBHex;
|
||||
} catch (e) {
|
||||
message.warning("Your browser does not support it")
|
||||
message.warning(this.t('ColorboardUpload.jsContent1'))
|
||||
}
|
||||
})
|
||||
// if ("EyeDropper" in window) {
|
||||
@@ -266,7 +270,7 @@ export default defineComponent({
|
||||
this.setColorboardList(colorList)
|
||||
this.getColorBg = true
|
||||
}else{
|
||||
message.warning("Can't find the TCX color")
|
||||
message.warning(this.t('ColorboardUpload.jsContent2'))
|
||||
}
|
||||
})
|
||||
},
|
||||
@@ -371,11 +375,11 @@ export default defineComponent({
|
||||
beforeUpload(file){
|
||||
const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png' || file.type === 'image/jpg' || file.type === 'image/bmp';
|
||||
if (!isJpgOrPng) {
|
||||
message.warning('You can only upload Image file!');
|
||||
message.warning(this.t('ColorboardUpload.jsContent3'));
|
||||
}
|
||||
const isLt2M = file.size / 1024 / 1024 < 5;
|
||||
if (!isLt2M) {
|
||||
message.warning('Image must smaller than 5MB!');
|
||||
message.warning(this.t('ColorboardUpload.jsContent4'));
|
||||
}
|
||||
return (isJpgOrPng && isLt2M) || Upload.LIST_IGNORE;
|
||||
},
|
||||
|
||||
@@ -10,11 +10,11 @@
|
||||
>
|
||||
<div class="collection_title">
|
||||
<div class="collection_title_text">
|
||||
<div>Cut picture</div>
|
||||
<div>{{ $t('Cropper.Cutpicture') }}</div>
|
||||
</div>
|
||||
<div class="header_right_block" @click.stop="">
|
||||
<div class="next_step_button" @click.stop="finishCropper()">Finish</div>
|
||||
<div class="header_cancel_button" @click.stop="cancleCropper()">Cancel</div>
|
||||
<div class="next_step_button" @click.stop="finishCropper()">{{ $t('Cropper.Finish') }}</div>
|
||||
<div class="header_cancel_button" @click.stop="cancleCropper()">{{ $t('Cropper.Cancel') }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="collection_modal_body">
|
||||
@@ -45,7 +45,7 @@
|
||||
<div class="cut_picture_right">
|
||||
<div class="cur_picture_right_header">
|
||||
<div class="review_logo icon iconfont icon-yulan"></div>
|
||||
<div>Crop Preview</div>
|
||||
<div>{{ $t('Cropper.CropPreview') }}</div>
|
||||
</div>
|
||||
<div class="cut_picture_review_block">
|
||||
<div class="cut_picture_review_item">
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
v-model="checkbox[0].type"
|
||||
@click="setKeyword(0)"
|
||||
/>
|
||||
<span>Image Only</span>
|
||||
<span>{{ $t('Generate.ImageOnly') }}</span>
|
||||
</label>
|
||||
</div>
|
||||
<div>
|
||||
@@ -18,7 +18,7 @@
|
||||
v-model="checkbox[1].type"
|
||||
@click="setKeyword(1)"
|
||||
/>
|
||||
<span>Text Only</span>
|
||||
<span>{{ $t('Generate.TextOnly') }}</span>
|
||||
</label>
|
||||
</div>
|
||||
<div>
|
||||
@@ -28,14 +28,14 @@
|
||||
v-model="checkbox[2].type"
|
||||
@click="setKeyword(2)"
|
||||
/>
|
||||
<span>Text-Image</span>
|
||||
<span>{{ $t('Generate.TextImage') }}</span>
|
||||
</label>
|
||||
</div>
|
||||
<div v-if="type_.type2 == 'Printboard'" class="printModel">
|
||||
<div @click.stop="PrintModel">{{ printModel.name }}</div>
|
||||
<ul v-show="printModel.optype">
|
||||
<li class="printModel_item" @click="setprintModel(1)">Model1</li>
|
||||
<li class="printModel_item" @click="setprintModel(2)">Model2</li>
|
||||
<li class="printModel_item" @click="setprintModel(1)">{{ $t('Generate.Model1') }}</li>
|
||||
<li class="printModel_item" @click="setprintModel(2)">{{ $t('Generate.Model2') }}</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@@ -43,13 +43,13 @@
|
||||
<input
|
||||
class="search_input"
|
||||
@input="ifMaximumLength"
|
||||
placeholder="Prompt input"
|
||||
:placeholder="$t('Generate.inputContent1')"
|
||||
:maxlength='inputShow?0:9999'
|
||||
v-model="searchPictureName"
|
||||
@keydown.enter="getgenerate()"
|
||||
/>
|
||||
<div class="generage_btn started_btn" @click.stop="getgenerate">Generate</div>
|
||||
<span>The entered content exceeds the maximum length.</span>
|
||||
<div class="generage_btn started_btn" @click.stop="getgenerate">{{ $t('Generate.Generate') }}</div>
|
||||
<span>{{ $t('Generate.maximumLength') }}</span>
|
||||
|
||||
</div>
|
||||
<div v-if="type_.type2 == 'Sketchboard' || type_.type2 == 'Printboard'" class="generage_img">
|
||||
@@ -182,6 +182,7 @@ import GO from "@/tool/GO";
|
||||
import { getCookie } from "@/tool/cookie";
|
||||
import { getUploadUrl } from "@/tool/util";
|
||||
import { forEach } from "jszip";
|
||||
import { useI18n } from "vue-i18n";
|
||||
export default defineComponent({
|
||||
props: ["msg",'sketchCatecoryList'],
|
||||
setup() {
|
||||
@@ -230,6 +231,8 @@ export default defineComponent({
|
||||
let loadingShow = ref(false)
|
||||
let inputShow = ref(false)
|
||||
let inputTime = ref()
|
||||
|
||||
let {t} = useI18n()
|
||||
return {
|
||||
imgList,
|
||||
selectImgList,
|
||||
@@ -255,6 +258,7 @@ export default defineComponent({
|
||||
workspace,
|
||||
inputShow,
|
||||
inputTime,
|
||||
t,
|
||||
};
|
||||
},
|
||||
data(prop) {
|
||||
@@ -320,11 +324,11 @@ export default defineComponent({
|
||||
file.type === "image/jpg" ||
|
||||
file.type === "image/bmp";
|
||||
if (!isJpgOrPng) {
|
||||
message.warning("You can only upload Image file!");
|
||||
message.warning(this.t('Generate.jsContent1'));
|
||||
}
|
||||
const isLt2M = file.size / 1024 / 1024 < 2;
|
||||
if (!isLt2M) {
|
||||
message.warning("Image must smaller than 2MB!");
|
||||
message.warning(this.t('Generate.jsContent2'));
|
||||
}
|
||||
return (isJpgOrPng && isLt2M) || Upload.LIST_IGNORE;
|
||||
},
|
||||
@@ -364,7 +368,7 @@ export default defineComponent({
|
||||
getgenerate(){
|
||||
if(!this.searchPictureName){
|
||||
message.warning(
|
||||
"Please enter content"
|
||||
this.t('Generate.jsContent3')
|
||||
);
|
||||
return
|
||||
}
|
||||
@@ -372,13 +376,13 @@ export default defineComponent({
|
||||
let arr = this.searchPictureName.split(/\s+/).length
|
||||
if(arr > 75){
|
||||
message.warning(
|
||||
"The entered content exceeds the maximum length."
|
||||
this.t('Generate.jsContent4')
|
||||
);
|
||||
return
|
||||
}
|
||||
}else{
|
||||
message.warning(
|
||||
"Please enter content"
|
||||
this.t('Generate.jsContent5')
|
||||
);
|
||||
return
|
||||
}
|
||||
@@ -444,7 +448,7 @@ export default defineComponent({
|
||||
);
|
||||
let arr = this.store.state.UploadFilesModule.sketchboard;
|
||||
if (arr.length >= 8) {
|
||||
message.warning("You can select up to 8 images");
|
||||
message.warning(this.t('Generate.jsContent6'));
|
||||
} else {
|
||||
this.sketchboardList = fileList
|
||||
}
|
||||
@@ -458,7 +462,7 @@ export default defineComponent({
|
||||
if (index > -1) {
|
||||
this.sketchboardList.splice(index, 1);
|
||||
}
|
||||
message.error(file.name + "upload failed");
|
||||
message.error(file.name + this.t('Generate.jsContent5'));
|
||||
}
|
||||
},
|
||||
showFileCategory(file: any) {
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<div class="header_user_icon"></div>
|
||||
<!-- <div class="header_icon icon iconfont icon-touxiang3"></div> -->
|
||||
<div class="header_user_content">
|
||||
<div class="username"><span>/</span> hello@{{ userInfo?.userName }}</div>
|
||||
<div class="username"><span>/</span> {{$t('Header.hello')}}@{{ userInfo?.userName }}</div>
|
||||
<div
|
||||
:class="[
|
||||
'icon',
|
||||
@@ -27,7 +27,7 @@
|
||||
]"
|
||||
@click="turnToPage('home')"
|
||||
>
|
||||
HOME
|
||||
{{$t('Header.HOME')}}
|
||||
</div>
|
||||
<div
|
||||
:class="[
|
||||
@@ -36,7 +36,7 @@
|
||||
]"
|
||||
@click="turnToPage('library')"
|
||||
>
|
||||
LIBRARY
|
||||
{{$t('Header.LIBRARY')}}
|
||||
</div>
|
||||
<div
|
||||
:class="[
|
||||
@@ -45,7 +45,8 @@
|
||||
]"
|
||||
@click="turnToPage('history')"
|
||||
>
|
||||
HISTORY
|
||||
{{$t('Header.HISTORY')}}
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
@@ -60,12 +61,12 @@
|
||||
</div>
|
||||
</header>
|
||||
<nav class="select_block" v-show="isShowOperate">
|
||||
<!-- <div class="select_item" @click="showBindEmailModal()">
|
||||
<span class="icon iconfont icon-youxiang"></span><span class="select_item_des">bind email</span>
|
||||
</div> -->
|
||||
<div class="select_item" @click="showBindEmailModal()">
|
||||
<span class="icon iconfont icon-youxiang"></span><span class="select_item_des">{{$t('Header.bindEmail')}}</span>
|
||||
</div>
|
||||
<div class="select_item" @click="logout()">
|
||||
<span class="icon iconfont icon-tuichu"></span
|
||||
><span class="select_item_des">log off</span>
|
||||
><span class="select_item_des">{{$t('Header.logOff')}}</span>
|
||||
</div>
|
||||
</nav>
|
||||
<a-modal
|
||||
@@ -78,17 +79,17 @@
|
||||
:centered="true"
|
||||
>
|
||||
<template #closeIcon v-if="!isHaveBindEmail && bindEmailStep === 1">
|
||||
<div class="skip_content">skip</div>
|
||||
<div class="skip_content">{{$t('Header.skip')}}</div>
|
||||
</template>
|
||||
<div class="bind_email_content" v-if="isHaveBindEmail">
|
||||
<div class="bind_email_tip">you have binded email</div>
|
||||
<div class="bind_email_tip">{{$t('Header.emailContent')}}</div>
|
||||
<div class="bind_email">{{ userInfo.email }}</div>
|
||||
</div>
|
||||
<div class="bind_email_content" v-else>
|
||||
<!-- 绑定邮箱第一步 start -->
|
||||
<div v-show="bindEmailStep === 1">
|
||||
<div class="bind_email_form_content">
|
||||
<div class="bind_email_form_title">Email</div>
|
||||
<div class="bind_email_form_title">{{$t('Header.Email')}}</div>
|
||||
<input
|
||||
class="bind_email_form_input"
|
||||
placeholder="Enter a new email"
|
||||
@@ -100,7 +101,7 @@
|
||||
class="bind_email_submit_button"
|
||||
@click="emailNextStepFun()"
|
||||
>
|
||||
Next step
|
||||
{{$t('Header.NextStep')}}
|
||||
</div>
|
||||
</div>
|
||||
<!-- 绑定邮箱第一步 end -->
|
||||
@@ -110,17 +111,17 @@
|
||||
<div @click="emailLastStepFun()">
|
||||
<span class="icon iconfont icon--shangyibu"></span
|
||||
><span class="email_last_step_content"
|
||||
>Enter verification code</span
|
||||
>{{$t('Header.verification')}}</span
|
||||
>
|
||||
</div>
|
||||
<div class="email_last_step_des">
|
||||
<div class="sent_email_content">
|
||||
Sent to {{ email }}
|
||||
{{$t('Header.SentTo')}} {{ email }}
|
||||
</div>
|
||||
<div class="tip_content">
|
||||
<span v-show="time">{{ time }}s</span>
|
||||
<span v-show="!time" @click="emailNextStepFun()"
|
||||
>Resend</span
|
||||
>{{$t('Header.Resend')}}Resend</span
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
@@ -143,11 +144,18 @@ import Habit from "@/component/Detail/habit.vue";
|
||||
import { Https } from "@/tool/https";
|
||||
import { Modal, message } from "ant-design-vue";
|
||||
import { ExclamationCircleOutlined } from "@ant-design/icons-vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
export default defineComponent({
|
||||
components: {
|
||||
VerificationCodeInput,
|
||||
Habit,
|
||||
},
|
||||
setup(){
|
||||
const {t} = useI18n()
|
||||
return {
|
||||
t
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
isShowOperate: false,
|
||||
@@ -210,7 +218,7 @@ export default defineComponent({
|
||||
|
||||
emailNextStepFun() {
|
||||
if (!isEmail(this.email)) {
|
||||
message.warning("The email format is incorrect");
|
||||
message.warning(this.t('Header.jsContent1'));
|
||||
return;
|
||||
}
|
||||
let data = {
|
||||
@@ -225,7 +233,7 @@ export default defineComponent({
|
||||
(this.emailCode = ["", "", "", "", "", ""]),
|
||||
this.createTimer();
|
||||
hide();
|
||||
message.success("Succeeded in binding the mailbox.");
|
||||
message.success(this.t('Header.jsContent2'));
|
||||
}
|
||||
})
|
||||
.catch((res) => {
|
||||
@@ -312,7 +320,7 @@ export default defineComponent({
|
||||
this.timer = setTimeout(() => {
|
||||
this.modalWarning = Modal.warning({
|
||||
title: () =>
|
||||
`You have not performed any operation for a long time. You must be active;otherwise, you will log out in ${_this.numTime} S`,
|
||||
this.t('Header.jsContent3',{numTime:_this.numTime}),
|
||||
icon: createVNode(ExclamationCircleOutlined),
|
||||
okText: "Ok",
|
||||
onOk() {
|
||||
|
||||
@@ -2,10 +2,10 @@
|
||||
<div class="collection_modal_item">
|
||||
<div class="switch_type_list">
|
||||
<div class="switch_type_item select_swtich">
|
||||
<span>Upload</span>
|
||||
<span>{{ $t('MarketingSketchUpload.Upload') }}</span>
|
||||
</div>
|
||||
<div @click="openLibrary()" class="switch_type_item">
|
||||
<span>My Library</span>
|
||||
<span>{{ $t('MarketingSketchUpload.MyLibrary') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
</div>
|
||||
<div class="upload_max_tip">
|
||||
<span class="icon iconfont icon-zhuyi"></span>
|
||||
<span>Maximum 15 images can be uploaded, Maximum 2M per image</span>
|
||||
<span>{{ $t('MarketingSketchUpload.maximumLength') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -61,12 +61,15 @@ import {getUploadUrl} from '@/tool/util'
|
||||
import {useStore} from 'vuex'
|
||||
import { message,Upload} from 'ant-design-vue';
|
||||
import Material from '@/component/HomePage/Material.vue'
|
||||
import { useI18n } from 'vue-i18n';
|
||||
export default defineComponent({
|
||||
components:{Material},
|
||||
setup(){
|
||||
let fileList:any = ref([])
|
||||
let {t} = useI18n()
|
||||
return {
|
||||
fileList
|
||||
fileList,
|
||||
t,
|
||||
}
|
||||
},
|
||||
data(){
|
||||
@@ -115,18 +118,18 @@ export default defineComponent({
|
||||
if(index > -1){
|
||||
this.fileList.splice(index, 1)
|
||||
}
|
||||
message.error(file.name + 'upload failed')
|
||||
message.error(file.name + this.t('MarketingSketchUpload.jsContent1'))
|
||||
}
|
||||
},
|
||||
|
||||
beforeUpload(file:any){
|
||||
const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png' || file.type === 'image/jpg' || file.type === 'image/bmp';
|
||||
if (!isJpgOrPng) {
|
||||
message.warning('You can only upload Image file!');
|
||||
message.warning(this.t('MarketingSketchUpload.jsContent2'));
|
||||
}
|
||||
const isLt2M = file.size / 1024 / 1024 < 2;
|
||||
if (!isLt2M) {
|
||||
message.warning('Image must smaller than 2MB!');
|
||||
message.warning(this.t('MarketingSketchUpload.jsContent3'));
|
||||
}
|
||||
return (isJpgOrPng && isLt2M) || Upload.LIST_IGNORE;
|
||||
},
|
||||
@@ -149,7 +152,7 @@ export default defineComponent({
|
||||
status:'done',
|
||||
}
|
||||
if(this.fileList.length == 15){
|
||||
message.warning('Maximum number of allowable file uploads has been exceeded')
|
||||
message.warning(this.t('MarketingSketchUpload.jsContent5'))
|
||||
break
|
||||
}
|
||||
this.fileList.push(data)
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<div class="my_material_header">
|
||||
<div class="my_material_header_right">
|
||||
<div class="content_search_block">
|
||||
<input class="search_input" placeholder="Please input" v-model="searchPictureName" @keydown.enter="getLibraryList()">
|
||||
<input class="search_input" :placeholder="$t('Material.inputContent1')" v-model="searchPictureName" @keydown.enter="getLibraryList()">
|
||||
<div class="search_icon_block" @click.stop="getLibraryList()"><span class="icon iconfont icon-sousuo"></span></div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -62,7 +62,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="selectCode == 'Sketchboard' || selectCode == 'Printboard'" class="pin_block">
|
||||
<a-checkbox v-model:checked="item.pin">PIN</a-checkbox>
|
||||
<a-checkbox v-model:checked="item.pin">{{ $t('Material.PIN') }}</a-checkbox>
|
||||
</div>
|
||||
</div>
|
||||
<div v-show="total > imgList.length" class="material_content_list_loding" v-observe>
|
||||
|
||||
@@ -7,21 +7,21 @@
|
||||
class="switch_type_item"
|
||||
:class="[openClick == 1 ? 'select_swtich' : '']"
|
||||
>
|
||||
<span>Upload</span>
|
||||
<span>{{ $t('MoodboardUpload.Upload') }}</span>
|
||||
</div>
|
||||
<div
|
||||
@click.stop="open(2)"
|
||||
class="switch_type_item"
|
||||
:class="[openClick == 2 ? 'select_swtich' : '']"
|
||||
>
|
||||
<span>Library</span>
|
||||
<span>{{ $t('MoodboardUpload.Library') }}</span>
|
||||
</div>
|
||||
<div
|
||||
@click.stop="open(3)"
|
||||
class="switch_type_item"
|
||||
:class="[openClick == 3 ? 'select_swtich' : '']"
|
||||
>
|
||||
<span>Generate</span>
|
||||
<span>{{ $t('MoodboardUpload.Generate') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div v-show="openClick == 1" class="moodboard_body">
|
||||
@@ -50,7 +50,7 @@
|
||||
class="delete_file_block"
|
||||
@click="deleteFile(file)"
|
||||
>
|
||||
Delete
|
||||
{{ $t('MoodboardUpload.Delete') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -106,8 +106,10 @@
|
||||
<div v-show="moodboarList.length" class="modal_right">
|
||||
<div class="modal_layout">
|
||||
<div class="modal_text">
|
||||
<div>Thumbnail preview of selected moodboard</div>
|
||||
<div class="modal_btn started_btn" @click="layout()">layout</div>
|
||||
<div>
|
||||
{{ $t('MoodboardUpload.Thumbnail') }}
|
||||
</div>
|
||||
<div class="modal_btn started_btn" @click="layout()">{{ $t('MoodboardUpload.layout') }}</div>
|
||||
</div>
|
||||
<div class="modal_img">
|
||||
<div class="modal_img_item" v-for="item,index in moodboarList" :key="item" @click="deleteFile(item)">
|
||||
@@ -155,6 +157,7 @@ import layout from "@/component/HomePage/layout.vue";
|
||||
import domTurnImg from '@/tool/domTurnImg'
|
||||
import GO from "@/tool/GO";
|
||||
import moodb from "@/tool/moodb";
|
||||
import { useI18n } from "vue-i18n";
|
||||
export default defineComponent({
|
||||
components: { Material, MoodTemplate, Generate,layout },
|
||||
setup() {
|
||||
@@ -174,6 +177,7 @@ export default defineComponent({
|
||||
return store.state.UploadFilesModule.disposeMoodboard
|
||||
})
|
||||
let uploading:any = ref([])
|
||||
let {t} = useI18n()
|
||||
return {
|
||||
fileList,
|
||||
showFileList,
|
||||
@@ -187,7 +191,8 @@ export default defineComponent({
|
||||
layoutOpen,
|
||||
loadingShow,
|
||||
modalImg,
|
||||
uploading
|
||||
uploading,
|
||||
t,
|
||||
};
|
||||
},
|
||||
data() {
|
||||
@@ -292,7 +297,7 @@ export default defineComponent({
|
||||
);
|
||||
let arr = this.store.state.UploadFilesModule.moodboard
|
||||
if(arr.length >= 8){
|
||||
message.warning('You can select up to 8 images')
|
||||
message.warning(this.t('MoodboardUpload.jsContent1'))
|
||||
}else{
|
||||
this.store.commit("setMoodboardFile", fileList);
|
||||
}
|
||||
@@ -307,7 +312,7 @@ export default defineComponent({
|
||||
if (index > -1) {
|
||||
this.fileList.splice(index, 1);
|
||||
}
|
||||
message.error(file.name + "upload failed");
|
||||
message.warning(file.name + this.t('MoodboardUpload.jsContent2'));
|
||||
}
|
||||
|
||||
},
|
||||
@@ -318,11 +323,11 @@ export default defineComponent({
|
||||
file.type === "image/jpg" ||
|
||||
file.type === "image/bmp";
|
||||
if (!isJpgOrPng) {
|
||||
message.warning("You can only upload Image file!");
|
||||
message.warning(this.t('MoodboardUpload.jsContent3'));
|
||||
}
|
||||
const isLt2M = file.size / 1024 / 1024 < 2;
|
||||
if (!isLt2M) {
|
||||
message.warning("Image must smaller than 2MB!");
|
||||
message.warning(this.t('MoodboardUpload.jsContent4'));
|
||||
}
|
||||
return (isJpgOrPng && isLt2M) || Upload.LIST_IGNORE;
|
||||
},
|
||||
@@ -390,7 +395,7 @@ export default defineComponent({
|
||||
// layout.init('moodboard')
|
||||
layout.init()
|
||||
}else{
|
||||
message.warning('Please click Layout to sort randomly')
|
||||
message.warning(this.t('MoodboardUpload.jsContent5'))
|
||||
}
|
||||
|
||||
},
|
||||
@@ -406,7 +411,15 @@ export default defineComponent({
|
||||
}else{
|
||||
this.flex_direction = false
|
||||
}
|
||||
this.moodb_className = this.moodb_[arr.length-1][random]
|
||||
if(JSON.stringify(this.moodb_className) == JSON.stringify(this.moodb_[arr.length-1][random])){
|
||||
this.layout()
|
||||
return
|
||||
}
|
||||
if(this.moodb_[arr.length-1].length == 2){
|
||||
this.moodb_className = this.moodb_[arr.length-1][0]
|
||||
}else{
|
||||
this.moodb_className = this.moodb_[arr.length-1][random]
|
||||
}
|
||||
this.layoutOpen = true
|
||||
//提交模板
|
||||
// this.loadingShow = true
|
||||
|
||||
@@ -10,21 +10,21 @@
|
||||
class="switch_type_item"
|
||||
:class="[openClick == 1 ? 'select_swtich' : '']"
|
||||
>
|
||||
<span>Upload</span>
|
||||
<span>{{ $t('PrintboardUpload.Upload') }}</span>
|
||||
</div>
|
||||
<div
|
||||
@click.stop="open(2)"
|
||||
class="switch_type_item"
|
||||
:class="[openClick == 2 ? 'select_swtich' : '']"
|
||||
>
|
||||
<span>Library</span>
|
||||
<span>{{ $t('PrintboardUpload.Library') }}</span>
|
||||
</div>
|
||||
<div
|
||||
@click.stop="open(3)"
|
||||
class="switch_type_item"
|
||||
:class="[openClick == 3 ? 'select_swtich' : '']"
|
||||
>
|
||||
<span>Generate</span>
|
||||
<span>{{ $t('PrintboardUpload.Generate') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -47,7 +47,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="pin_block" v-show="file?.status === 'done'">
|
||||
<a-checkbox v-model:checked="file.pin">PIN</a-checkbox>
|
||||
<a-checkbox v-model:checked="file.pin">{{ $t('PrintboardUpload.PIN') }}</a-checkbox>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -86,7 +86,7 @@
|
||||
<div class="modal_right">
|
||||
<div class="modal_layout">
|
||||
<div class="modal_text">
|
||||
<div>Thumbnail preview of selected moodboard</div>
|
||||
<div>{{ $t('PrintboardUpload.Thumbnail') }}</div>
|
||||
<!-- <div class="modal_btn started_btn" @click="layout()">layout</div> -->
|
||||
</div>
|
||||
<div class="modal_img">
|
||||
@@ -100,9 +100,9 @@
|
||||
</div>
|
||||
<div v-show="openClick == 3" class="modal_accomplish">
|
||||
<div class="input_box" :class="{active:inputShow}">
|
||||
<input class="search_input" @input="ifMaximumLength" :maxlength='inputShow?0:9999' :class="{forbidden:generateCheckbox}" :readonly="generateCheckbox" placeholder="Caption generation" v-model="captionGeneration">
|
||||
<div class="generage_btn started_btn" @click.stop="getgenerate">Generate</div>
|
||||
<span>The entered content exceeds the maximum length.</span>
|
||||
<input class="search_input" @input="ifMaximumLength" :maxlength='inputShow?0:9999' :class="{forbidden:generateCheckbox}" :readonly="generateCheckbox" :placeholder="$t('PrintboardUpload.inputContent1')" v-model="captionGeneration">
|
||||
<div class="generage_btn started_btn" @click.stop="getgenerate">{{ $t('PrintboardUpload.Generate') }}</div>
|
||||
<span>{{ $t('PrintboardUpload.maximumLength') }}</span>
|
||||
</div>
|
||||
<div class="modal_img">
|
||||
<div v-for="item,index in generateList" class="modal_imgItem" :class="{ active: item?.checked }" >
|
||||
@@ -114,7 +114,7 @@
|
||||
<i v-else class="fi fi-sr-heart" @click.stop="likeFile(item,'noLike')"></i>
|
||||
</div>
|
||||
<div class="pin_block">
|
||||
<a-checkbox v-model:checked="item.pin">PIN</a-checkbox>
|
||||
<a-checkbox v-model:checked="item.pin">{{ $t('PrintboardUpload.PIN') }}</a-checkbox>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -138,6 +138,7 @@ import Cropper from '@/component/HomePage/Cropper.vue'
|
||||
import Material from '@/component/HomePage/Material.vue'
|
||||
import Generate from "@/component/HomePage/Generate.vue";
|
||||
import GO from "@/tool/GO";
|
||||
import { useI18n } from 'vue-i18n';
|
||||
|
||||
export default defineComponent({
|
||||
components:{
|
||||
@@ -156,6 +157,7 @@ export default defineComponent({
|
||||
let loadingShow = ref(false)
|
||||
let inputShow = ref(false)
|
||||
let inputTime = ref()
|
||||
let {t} = useI18n()
|
||||
return {
|
||||
fileList,
|
||||
printImgList,
|
||||
@@ -166,6 +168,7 @@ export default defineComponent({
|
||||
loadingShow,
|
||||
inputShow,
|
||||
inputTime,
|
||||
t,
|
||||
}
|
||||
},
|
||||
computed:{
|
||||
@@ -256,11 +259,11 @@ export default defineComponent({
|
||||
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) {
|
||||
message.warning('You can only upload Image file!');
|
||||
message.warning(this.t('PrintboardUpload.jsContent1'));
|
||||
}
|
||||
const isLt2M = file.size / 1024 / 1024 < 2;
|
||||
if (!isLt2M) {
|
||||
message.warning('Image must smaller than 2MB!');
|
||||
message.warning(this.t('PrintboardUpload.jsContent2'));
|
||||
}
|
||||
if(isJpgOrPng && isLt2M){
|
||||
this.currentFileNum = fileList.length
|
||||
@@ -316,102 +319,6 @@ export default defineComponent({
|
||||
}
|
||||
|
||||
},
|
||||
randomRange(min:any, max:any, num:any) { // min最小值,max最大值 num排除的值
|
||||
let index = Math.floor(Math.random() * (max - min)) + min;
|
||||
while(index === num){
|
||||
index = Math.floor(Math.random() * (max - min)) + min;
|
||||
}
|
||||
return index
|
||||
|
||||
},
|
||||
|
||||
generatePrint(){
|
||||
let data:any = {}
|
||||
//随机获取图片id
|
||||
if(!this.moodBoards.length){ //mood没有图片
|
||||
let index1 = -1
|
||||
let index2 = -2
|
||||
if(!this.getPinLength){ //没pin住
|
||||
index1 = this.randomRange(0, this.fileList.length, -1)
|
||||
index2 = this.randomRange(0, this.fileList.length, index1)
|
||||
|
||||
}else if(this.getPinLength === 1){ //pin住1个
|
||||
this.fileList.forEach((element:any,index:number) => {
|
||||
if(element.pin){
|
||||
index1 = index
|
||||
}
|
||||
});
|
||||
index2 = this.randomRange(0, this.fileList.length, index1)
|
||||
}else{ //pin住多个
|
||||
let selectIndexList:any = []
|
||||
this.fileList.forEach((element:any,index:number) => {
|
||||
if(element.pin){
|
||||
selectIndexList.push(index)
|
||||
}
|
||||
});
|
||||
index1 = this.randomRange(0, selectIndexList.length, -1) //pin住的中随机选一个
|
||||
index2 = this.randomRange(0, this.fileList.length, selectIndexList[index1]) //除了选中的外再来一个
|
||||
|
||||
}
|
||||
data = {
|
||||
select1Id:this.fileList[index1].id,
|
||||
select2Id:this.fileList[index2].id
|
||||
}
|
||||
}else{
|
||||
let index1 = this.randomRange(0, this.moodBoards.length, -1)
|
||||
let index2 = -2
|
||||
if(!this.getPinLength){ //没pin住
|
||||
index2 = this.randomRange(0, this.fileList.length, -1)
|
||||
}else if(this.getPinLength === 1){ //pin住1个
|
||||
this.fileList.forEach((element:any,index:number) => {
|
||||
if(element.pin){
|
||||
index2 = index
|
||||
}
|
||||
});
|
||||
}else{ //pin住多个
|
||||
let selectIndexList:any = []
|
||||
this.fileList.forEach((element:any,index:number) => {
|
||||
if(element.pin){
|
||||
selectIndexList.push(index)
|
||||
}
|
||||
});
|
||||
index2 = this.randomRange(0, selectIndexList.length, -1) //pin住的中随机选一个
|
||||
}
|
||||
data = {
|
||||
select1Id:this.moodBoards[index1].resData.id,
|
||||
select2Id:this.fileList[index2].id
|
||||
}
|
||||
}
|
||||
data.timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone,
|
||||
this.generateloading = true
|
||||
Https.axiosPost(Https.httpUrls.elementGeneratePrint, data).then((rv) =>{
|
||||
if(rv){
|
||||
let data = {
|
||||
imgUrl:rv.url,
|
||||
resData:rv
|
||||
}
|
||||
this.printImgList.push(data)
|
||||
this.store.commit('setGeneratePrintFile',this.printImgList)
|
||||
this.generateloading = false
|
||||
}
|
||||
}).catch(res=>{
|
||||
this.generateloading = false
|
||||
})
|
||||
|
||||
},
|
||||
|
||||
savePrint(){
|
||||
let printId = this.printImgList.map((v:any) => v.resData.id)
|
||||
let data = {
|
||||
printId:printId,
|
||||
timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone,
|
||||
}
|
||||
Https.axiosPost(Https.httpUrls.elementSavePrint, data).then((rv) =>{
|
||||
if(rv){
|
||||
message.success('Save successfully')
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
customRequest(data:any){
|
||||
@@ -564,7 +471,7 @@ export default defineComponent({
|
||||
status:'done',
|
||||
}
|
||||
if(this.fileList.length == 15){
|
||||
message.warning('Maximum number of allowable file uploads has been exceeded')
|
||||
message.warning(this.t('PrintboardUpload.jsContent3'))
|
||||
break
|
||||
}
|
||||
this.fileList.push(data)
|
||||
@@ -604,7 +511,7 @@ export default defineComponent({
|
||||
|
||||
}else{
|
||||
message.warning(
|
||||
"Please select a picture"
|
||||
this.t('PrintboardUpload.jsContent4')
|
||||
);
|
||||
return
|
||||
}
|
||||
@@ -616,14 +523,14 @@ export default defineComponent({
|
||||
let arr = this.captionGeneration.split(/\s+/).length
|
||||
if(arr > 75){
|
||||
message.warning(
|
||||
"The entered content exceeds the maximum length."
|
||||
this.t('PrintboardUpload.jsContent5')
|
||||
);
|
||||
return
|
||||
|
||||
}
|
||||
}else{
|
||||
message.warning(
|
||||
"Please enter content"
|
||||
this.t('PrintboardUpload.jsContent6')
|
||||
);
|
||||
return
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
<div class="robot_bottom">
|
||||
<div class="robot_input" v-fade="robotInput,'flex'">
|
||||
<input
|
||||
placeholder="write a message~"
|
||||
:placeholder="$t('RobotAssist.inputContent1')"
|
||||
v-model="chatCentent"
|
||||
@keydown.enter="roborSend()"
|
||||
@input="robotmax"
|
||||
@@ -49,6 +49,7 @@ import { getCookie } from "@/tool/cookie";
|
||||
import axios from 'axios'
|
||||
|
||||
import { message } from "ant-design-vue";
|
||||
import { useI18n } from "vue-i18n";
|
||||
export default defineComponent({
|
||||
components: {
|
||||
DownOutlined,
|
||||
@@ -67,6 +68,7 @@ export default defineComponent({
|
||||
])
|
||||
const userInfo:any = {}
|
||||
let bloodBars:any = ref(0)
|
||||
let {t} = useI18n()
|
||||
return {
|
||||
robotTop,
|
||||
robotInput,
|
||||
@@ -78,6 +80,7 @@ export default defineComponent({
|
||||
timeInput,
|
||||
userInfo,
|
||||
bloodBars,
|
||||
t,
|
||||
};
|
||||
},
|
||||
data() {
|
||||
@@ -154,7 +157,7 @@ export default defineComponent({
|
||||
roborSend (){
|
||||
this.clearTimer()
|
||||
if(!this.chatCentent){
|
||||
message.warning("Please enter content");
|
||||
message.warning(this.t('RobotAssist.jsContent1'));
|
||||
return
|
||||
}
|
||||
this.record.push({
|
||||
|
||||
@@ -7,21 +7,21 @@
|
||||
class="switch_type_item"
|
||||
:class="[openClick == 1 ? 'select_swtich' : '']"
|
||||
>
|
||||
<span>Upload</span>
|
||||
<span>{{ $t('SketchboardUpload.Upload') }}</span>
|
||||
</div>
|
||||
<div
|
||||
@click.stop="open(2)"
|
||||
class="switch_type_item"
|
||||
:class="[openClick == 2 ? 'select_swtich' : '']"
|
||||
>
|
||||
<span>Library</span>
|
||||
<span>{{ $t('SketchboardUpload.Library') }}</span>
|
||||
</div>
|
||||
<div
|
||||
@click.stop="open(3)"
|
||||
class="switch_type_item"
|
||||
:class="[openClick == 3 ? 'select_swtich' : '']"
|
||||
>
|
||||
<span>Generate</span>
|
||||
<span>{{ $t('SketchboardUpload.Generate') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div v-show="openClick == 1" class="sketchboard_body">
|
||||
@@ -105,7 +105,7 @@
|
||||
v-show="file?.status === 'done'"
|
||||
>
|
||||
<a-checkbox v-model:checked="file.pin"
|
||||
>PIN</a-checkbox
|
||||
>{{ $t('SketchboardUpload.PIN') }}</a-checkbox
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
@@ -158,7 +158,7 @@
|
||||
<div class="modal_right">
|
||||
<div class="modal_layout">
|
||||
<div class="modal_text">
|
||||
<div>Thumbnail preview of selected moodboard</div>
|
||||
<div>{{ $t('SketchboardUpload.Thumbnail') }}</div>
|
||||
<!-- <div class="modal_btn started_btn" @click="layout()">layout</div> -->
|
||||
</div>
|
||||
<div class="modal_img">
|
||||
@@ -172,9 +172,9 @@
|
||||
</div>
|
||||
<div v-show="openClick == 3" class="modal_accomplish">
|
||||
<div class="input_box" :class="{active:inputShow}">
|
||||
<input class="search_input" @input="ifMaximumLength" :maxlength='inputShow?0:9999' :class="{forbidden:generateCheckbox}" :readonly="generateCheckbox" placeholder="Caption generation" v-model="captionGeneration">
|
||||
<input class="search_input" @input="ifMaximumLength" :maxlength='inputShow?0:9999' :class="{forbidden:generateCheckbox}" :readonly="generateCheckbox" :placeholder="$t('SketchboardUpload.inputContent1')" v-model="captionGeneration">
|
||||
<div class="generage_btn started_btn" @click.stop="getgenerate">Generate</div>
|
||||
<span>The entered content exceeds the maximum length.</span>
|
||||
<span>{{ $t('SketchboardUpload.maximumLength') }}</span>
|
||||
</div>
|
||||
<div class="modal_img">
|
||||
<div v-for="item,index in generateList" class="modal_imgItem" :class="{ active: item?.checked }">
|
||||
@@ -232,7 +232,7 @@
|
||||
<i v-else class="fi fi-sr-heart" @click.stop="likeFile(item,'noLike')"></i>
|
||||
</div>
|
||||
<div class="pin_block">
|
||||
<a-checkbox v-model:checked="item.pin">PIN</a-checkbox>
|
||||
<a-checkbox v-model:checked="item.pin">{{ $t('SketchboardUpload.PIN') }}</a-checkbox>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -257,6 +257,7 @@ import { message, Upload } from "ant-design-vue";
|
||||
import Material from "@/component/HomePage/Material.vue";
|
||||
import Generate from "@/component/HomePage/Generate.vue";
|
||||
import { Https } from "@/tool/https";
|
||||
import { useI18n } from "vue-i18n";
|
||||
export default defineComponent({
|
||||
components: { Material, Generate },
|
||||
setup() {
|
||||
@@ -273,6 +274,7 @@ export default defineComponent({
|
||||
let inputShow = ref(false)
|
||||
let inputTime = ref()
|
||||
|
||||
let {t} = useI18n()
|
||||
return {
|
||||
fileList,
|
||||
openClick,
|
||||
@@ -283,6 +285,7 @@ export default defineComponent({
|
||||
workspace,
|
||||
inputShow,
|
||||
inputTime,
|
||||
t,
|
||||
};
|
||||
},
|
||||
data() {
|
||||
@@ -399,7 +402,8 @@ export default defineComponent({
|
||||
if (index > -1) {
|
||||
this.fileList.splice(index, 1);
|
||||
}
|
||||
message.error(file.name + "upload failed");
|
||||
message.warning(file.name + this.t('SketchboardUpload.jsContent1'));
|
||||
|
||||
}
|
||||
},
|
||||
|
||||
@@ -410,11 +414,11 @@ export default defineComponent({
|
||||
file.type === "image/jpg" ||
|
||||
file.type === "image/bmp";
|
||||
if (!isJpgOrPng) {
|
||||
message.warning("You can only upload Image file!");
|
||||
message.warning(this.t('SketchboardUpload.jsContent2'));
|
||||
}
|
||||
const isLt2M = file.size / 1024 / 1024 < 2;
|
||||
if (!isLt2M) {
|
||||
message.warning("Image must smaller than 2MB!");
|
||||
message.warning(this.t('SketchboardUpload.jsContent3'));
|
||||
}
|
||||
return (isJpgOrPng && isLt2M) || Upload.LIST_IGNORE;
|
||||
},
|
||||
@@ -550,7 +554,7 @@ export default defineComponent({
|
||||
};
|
||||
if (this.fileList.length == 15) {
|
||||
message.warning(
|
||||
"Maximum number of allowable file uploads has been exceeded"
|
||||
this.t('SketchboardUpload.jsContent4')
|
||||
);
|
||||
break;
|
||||
}
|
||||
@@ -577,7 +581,7 @@ export default defineComponent({
|
||||
if(generage.collectionElementid){
|
||||
}else{
|
||||
message.warning(
|
||||
"Please select a picture"
|
||||
this.t('SketchboardUpload.jsContent5')
|
||||
);
|
||||
return
|
||||
}
|
||||
@@ -589,13 +593,14 @@ export default defineComponent({
|
||||
let arr = this.captionGeneration.split(/\s+/).length
|
||||
if(arr > 75){
|
||||
message.warning(
|
||||
"The entered content exceeds the maximum length."
|
||||
this.t('SketchboardUpload.jsContent6')
|
||||
);
|
||||
return
|
||||
}
|
||||
}else{
|
||||
message.warning(
|
||||
"Please enter content"
|
||||
this.t('SketchboardUpload.jsContent7')
|
||||
|
||||
);
|
||||
return
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
</div>
|
||||
<div class="upload_file_item_content" v-show="file?.status === 'done'">
|
||||
<img :src="file?.imgUrl" class="upload_img">
|
||||
<div class="delete_file_block" @click="deleteFile(index)">Delete</div>
|
||||
<div class="delete_file_block" @click="deleteFile(index)">{{ $t('Upload.Delete') }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="upload_file_item upload_component" v-show="fileList.length < 10">
|
||||
@@ -36,7 +36,7 @@
|
||||
</div>
|
||||
<div class="upload_max_tip">
|
||||
<span class="icon iconfont icon-zhuyi"></span>
|
||||
<span>Maximum 10 images can be uploaded, Maximum 2M per image</span>
|
||||
<span>{{ $t('Upload.Maximum2M') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
@@ -48,14 +48,17 @@ import {getUploadUrl} from '@/tool/util'
|
||||
import {getCookie} from '@/tool/cookie'
|
||||
import { message, Upload } from 'ant-design-vue';
|
||||
import {useStore} from 'vuex'
|
||||
import { useI18n } from 'vue-i18n';
|
||||
|
||||
export default defineComponent({
|
||||
props: ["msg"],
|
||||
setup(prop) {
|
||||
let fileList:any = ref([])
|
||||
|
||||
let {t} = useI18n()
|
||||
return{
|
||||
fileList
|
||||
fileList,
|
||||
t
|
||||
}
|
||||
},
|
||||
data(){
|
||||
@@ -86,11 +89,11 @@ export default defineComponent({
|
||||
beforeUpload(file:any){
|
||||
const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png' || file.type === 'image/jpg' || file.type === 'image/bmp';
|
||||
if (!isJpgOrPng) {
|
||||
message.warning('You can only upload Image file!');
|
||||
message.warning((this.t('Upload.jsContent2'));
|
||||
}
|
||||
const isLt2M = file.size / 1024 / 1024 < 2;
|
||||
if (!isLt2M) {
|
||||
message.warning('Image must smaller than 2MB!');
|
||||
message.warning(this.t('Upload.jsContent2'));
|
||||
}
|
||||
return (isJpgOrPng && isLt2M) || Upload.LIST_IGNORE;
|
||||
},
|
||||
@@ -112,7 +115,7 @@ export default defineComponent({
|
||||
if(index > -1){
|
||||
this.fileList.splice(index, 1)
|
||||
}
|
||||
message.error(file.name + 'upload failed')
|
||||
message.error(file.name + this.t('Upload.jsContent3'))
|
||||
}
|
||||
},
|
||||
deleteFile(index:any){
|
||||
|
||||
@@ -11,12 +11,12 @@
|
||||
>
|
||||
<div class="collection_title">
|
||||
<div class="collection_title_text">
|
||||
<div v-show="collectionStep === 1">Moodboard</div>
|
||||
<div v-show="collectionStep === 2">Printboard</div>
|
||||
<div v-show="collectionStep === 3">Colorboard</div>
|
||||
<div v-show="collectionStep === 4">Sketchboard</div>
|
||||
<div v-show="collectionStep === 1">{{ $t('collectionModal.Moodboard') }}</div>
|
||||
<div v-show="collectionStep === 2">{{ $t('collectionModal.Printboard') }}</div>
|
||||
<div v-show="collectionStep === 3">{{ $t('collectionModal.Colorboard') }}</div>
|
||||
<div v-show="collectionStep === 4">{{ $t('collectionModal.Sketchboard') }}</div>
|
||||
<!-- <div v-show="collectionStep === 5">Markets Sketch</div> -->
|
||||
<div class="collection_title_text_intro">select moodboard for your collection</div>
|
||||
<div class="collection_title_text_intro">{{ $t('collectionModal.collection') }}</div>
|
||||
</div>
|
||||
<div class="collection_progress">
|
||||
<a-progress :strokeWidth= 13 strokeColor="#341e57" type="circle" :percent="collectionStep*25" :format="percent => `${collectionStep}/4`" />
|
||||
@@ -63,6 +63,7 @@ import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
|
||||
import { Modal,message } from 'ant-design-vue';
|
||||
import {useStore} from 'vuex'
|
||||
import GO from "@/tool/GO";
|
||||
import { useI18n } from 'vue-i18n'
|
||||
export default defineComponent({
|
||||
components:{
|
||||
Generate,
|
||||
@@ -72,6 +73,12 @@ export default defineComponent({
|
||||
SketchboardUpload,
|
||||
MarketingSketchUpload
|
||||
},
|
||||
state(){
|
||||
let {t} = useI18n()
|
||||
return {
|
||||
t,
|
||||
}
|
||||
},
|
||||
data(){
|
||||
return{
|
||||
showCollectionModal:false,
|
||||
@@ -86,7 +93,7 @@ export default defineComponent({
|
||||
let moodboard = this.store.state.UploadFilesModule.moodboard
|
||||
if(moodboard.length > 1){
|
||||
if (!disposeMoodboard || disposeMoodboard.length == 0) {
|
||||
message.warning('You must select the image and then use the layout.')
|
||||
message.warning(this.$t('collectionModal.jsContent1'))
|
||||
return
|
||||
}
|
||||
}
|
||||
@@ -119,7 +126,7 @@ export default defineComponent({
|
||||
cancelDsign(){
|
||||
let _this = this
|
||||
Modal.confirm({
|
||||
title: 'The uploaded files will not be saved, being sure to continue? ',
|
||||
title: this.$t('collectionModal.jsContent2'),
|
||||
icon: createVNode(ExclamationCircleOutlined),
|
||||
okText: 'Yes',
|
||||
cancelText: 'No',
|
||||
@@ -139,7 +146,7 @@ export default defineComponent({
|
||||
let colorBoards = this.store.state.UploadFilesModule.colorBoards
|
||||
|
||||
if(!colorBoards || colorBoards?.length < 1){
|
||||
message.warning('You must choose one or more colors for further process.')
|
||||
message.warning(this.$t('collectionModal.jsContent3'))
|
||||
return
|
||||
}
|
||||
this.store.commit('clearAllId')
|
||||
@@ -163,6 +170,7 @@ export default defineComponent({
|
||||
font-size: 1.8rem;
|
||||
font-weight: 900;
|
||||
color: rgba(0,0,0,.65);
|
||||
z-index: 2;
|
||||
align-items: center;
|
||||
.collection_progress{
|
||||
width: 8rem;
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
<div class="layout_content">
|
||||
<div class="collection_title">
|
||||
<div class="collection_title_text">
|
||||
<div class="layout_title">MoodBoard Design</div>
|
||||
<div class="layout_title">{{ $t('layout.MoodBoardDesign') }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="collection_closeIcon" @click.stop="cancelDsign()">
|
||||
@@ -74,7 +74,7 @@
|
||||
class="button_second submit_button"
|
||||
@click="submitTemplate()"
|
||||
>
|
||||
Submit
|
||||
{{ $t('layout.Submit') }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="mark_loading" v-show="loadingShow">
|
||||
|
||||
Reference in New Issue
Block a user