语言适配

This commit is contained in:
X1627315083
2024-07-03 17:32:06 +08:00
parent b08a0f85ad
commit 3fd6343e53
17 changed files with 219 additions and 81 deletions

View File

@@ -59,12 +59,12 @@
<!-- 全屏 -->
<i class="fi fi-bs-expand-arrows-alt" @click="showDesignImgDetail(2)"></i>
<!-- 编辑 -->
<i v-show="!body" class="fi fi-rr-edit" @click="showDesignImgDetail(3)"></i>
<i v-show="!body && !deleteShow" class="fi fi-rr-trash" @click="deleteNav(0)"></i>
<i v-show="!body" class="fi fi-rr-edit" :title="$t('DesignDetail.editTitle')" @click="showDesignImgDetail(3)"></i>
<i v-show="!body && !deleteShow" :title="$t('DesignDetail.DetailTitle')" class="fi fi-rr-trash" @click="deleteNav(0)"></i>
<i v-show="!body && deleteShow" class="fi fi-br-check" @click="deleteNav(1)"></i>
<!-- -->
<i class="fi fi-rr-copy" @mousedown="mousedownDesignImg" @mouseup="mouseupDesignImg" @touchstart="mousedownDesignImg" @touchend="mouseupDesignImg"></i>
<i class="fi fi-rr-copy" :title="$t('DesignDetail.compareTitle')" @mousedown="mousedownDesignImg" @mouseup="mouseupDesignImg" @touchstart="mousedownDesignImg" @touchend="mouseupDesignImg"></i>
<i v-show="revocationShow>1" class="icon iconfont icon-chehui" @click="revocation"></i>
<i v-show="oppositeRevocationShow>=1" class="icon iconfont icon-fanchehui" @click="oppositeRevocation"></i>
</div>
@@ -79,7 +79,7 @@
<i class="fi fi-rs-comments"></i>
<div>{{ $t('DesignDetail.CurrentApparel') }}</div>
<i class="fi fi-rr-edit" @click.stop="openCurrent(1)"></i>
<i v-show="current?.id" class="fi fi-rs-pencil-paintbrush" @click.stop="addDetail"></i>
<i v-show="current?.id" :title="$t('DesignDetail.editSketchTitle')" class="fi fi-rs-pencil-paintbrush" @click.stop="addDetail"></i>
</div>
<div class="centent_div" v-if="current?.id" @click="openCurrent(1)">
<img :src="current?.path" alt="" class="" @click="openCurrent(1)">

View File

@@ -89,6 +89,7 @@ export default defineComponent({
let reverseCanvasState = ref([])//存放canvas操作
let normalCanvasState = ref([])//存放canvas操作
let canvasState = ref()//存放canvas操作
let keyDown = []//监听键盘的 keydown 和 keyup 事件
let init = (data,index)=>{
normalCanvasState.value = []
reverseCanvasState.value = []
@@ -103,6 +104,10 @@ export default defineComponent({
canvasBox.style.width = height+'px'
canvasWH.value = height
var canvasDom = document.createElement("canvas");
document.addEventListener("keydown", canvasKeyDown);
document.addEventListener("keyup", canvasKeyUp);
let oldCanvasDom = canvasBox.querySelector('.canvas-container')
if(oldCanvasDom)oldCanvasDom.remove()
canvasBox.appendChild(canvasDom);
@@ -128,12 +133,7 @@ export default defineComponent({
scale = img.height/canvas.height
JSchangeType(canvas,'init')
// 鼠标抬起事件
canvas.on('mouse:up', function(event) {
if(canvasBtn.canvasState != 'move'){
updateCanvasState()
}
});
fabric.Object.prototype.cornerSize = 10
fabric.Object.prototype.transparentCorners = false
exportUrl = data.path
@@ -150,11 +150,17 @@ export default defineComponent({
fabric.Object.prototype.controls.deleteControl.mouseUpHandler = deleteObj
}
updateCanvasState()
// img.selectable = false
// canvas.add(img)
},{ crossOrigin: "Anonymous" });
// 鼠标抬起事件
canvas.on('mouse:up', function(event) {
if(canvasBtn.canvasState != 'move'){
updateCanvasState('mouseUp')
}
});
//画布上移动
canvas.on("mouse:move", event =>setCanvasMove(event));
canvas.add(brushIndicator)
loadingShow.value = false
setOperation('pencil')
img.remove()
@@ -163,23 +169,58 @@ export default defineComponent({
})
}
let canvasKeyDown = (event) => {
if(keyDown.indexOf(event.key)>-1){
}else{
keyDown.push(event.code)
if(keyDown.indexOf('ControlLeft') > -1 && keyDown.indexOf('KeyZ') > -1 && keyDown.indexOf('ShiftLeft') > -1){
historyState('reverse')
}else if(keyDown.indexOf('ControlLeft') > -1 && keyDown.indexOf('KeyZ') > -1){
historyState('')
}
}
}
let canvasKeyUp = (event) =>{
keyDown = keyDown.filter(function(item) {
return event.code !== item;
})
}
let clearCanvas = ()=>{
canvasBtn.canvasState = 'move'
canvasBtn.spreadState = false
}
let rgba = 'rgba(0, 0, 0, 1)'
let brushIndicator = new fabric.Circle({
radius:(canvasBtn.canvasPencilWidth[canvasBtn.canvasState]/2),
fill: '#fff',
radius:2,
fill: 'rgba(0, 0, 0, 0)',
stroke: '#000',
strokeWidth: 1,
originX: 'center',
originY: 'center',
visible :true,
left: -100,
top: -100,
// left: -100,
// top: -100,
erasable: false,
});
let setCanvasMove = (event)=>{
var pointer = canvas.getPointer(event.e);
if(canvas.isDrawingMode){
canvas.setCursor('none');
console.log(12,canvas.contains(brushIndicator));
if(!canvas.contains(brushIndicator)){
canvas.add(brushIndicator)
brushIndicator.set({// left:0,
// top:0,
radius:(canvasBtn.canvasPencilWidth[canvasBtn.canvasState])/2
})
canvas.bringToFront(brushIndicator);//设置优先级最高
}
// brushIndicator.fill = canvasPencilColor.value
brushIndicator.set({ left: pointer.x, top: pointer.y, visible: true,radius:(canvasBtn.canvasPencilWidth[canvasBtn.canvasState])/2 });
}
canvas.requestRenderAll()
}
let setOperation = (str)=>{
canvasBtn.canvasState = str
if(str == 'move'){
@@ -237,9 +278,12 @@ export default defineComponent({
canvas.freeDrawingBrush.width = Number(canvasBtn.canvasPencilWidth[canvasBtn.canvasState])
},300)
}
let updateCanvasState = () =>{
const canvasAsJson = JSON.stringify(canvas.toJSON());
normalCanvasState.value.push(canvasAsJson);
let updateCanvasState = (str) =>{
if(str != 'mouseUp'){
canvas.remove(brushIndicator)
}
const canvasAsJson = JSON.stringify(canvas.toJSON());
normalCanvasState.value.push(canvasAsJson);
}
//撤回
let historyState = (str)=> {
@@ -295,17 +339,20 @@ export default defineComponent({
exportCanvas.add(obj)
if(allObjects.length-1 == index){
let data = exportCanvas.toDataURL('jpg')
showPayOrder.value = false;
cancelDsign()
clearCanvas()
emit('setSloganData',data)
}
})
})
}
let cancelDsign = ()=>{
canvas.dispose();
showPayOrder.value = false
document.removeEventListener('keydown',canvasKeyDown);
document.removeEventListener('keyup', canvasKeyUp);
}
return {
presentState,
showPayOrder,
@@ -317,6 +364,7 @@ export default defineComponent({
setPencilWidth,
historyState,
setSubmit,
cancelDsign,
};
},
data() {
@@ -326,10 +374,6 @@ export default defineComponent({
mounted() {},
methods: {
cancelDsign(){
this.showPayOrder = false
}
},
});
</script>

View File

@@ -461,6 +461,7 @@ export default defineComponent({
})
resolve('')
})
this.store.commit("setWorkspaceAllPosition", [...this.position[0].value,...this.position[1].value]);
// this.getworkspace()
// this.setPosition('')
},

View File

@@ -104,6 +104,7 @@
</div>
<div class="upload_file_item_scale">
<a-upload
:title="$t('ColorboardUpload.uploadTitle')"
:capture="null"
:max-count="1"
list-type="picture-card"
@@ -116,7 +117,7 @@
<i class="fi fi-br-upload"></i>
</div>
</a-upload>
<div class="upload_file_item" @click="setPrintImg()">
<div :title="$t('ColorboardUpload.selectTitle')" class="upload_file_item" @click="setPrintImg()">
<i class="fi fi-rr-picture"></i>
</div>
</div>
@@ -130,7 +131,7 @@
<img src="#" :title="pantongNameList[index]">
</div>
</div>
<div class="upload_color_btn" v-show="selectColorList.length>0">
<div class="upload_color_btn" :title="isSelectSuccessively?$t('ColorboardUpload.SelectSuccessivelyOnTitle'):$t('ColorboardUpload.SelectSuccessivelyOffTitle')" v-show="selectColorList.length>0">
<span>{{$t('ColorboardUpload.SelectSuccessively')}}</span>
<a-switch :checked="isSelectSuccessively" @click="()=>isSelectSuccessively = !isSelectSuccessively" checked-children="ON" un-checked-children="OFF"/>
</div>

View File

@@ -376,7 +376,7 @@ export default defineComponent({
likeDesignCollectionList;
allBoardData.value[productData.key] = productData.imgList;
nextTick().then(async () => {
let exportCanvasBoxCanvas = document.querySelector('.exportCanvasBox_center')
let exportCanvasBoxCanvas = document.querySelector('.Export .exportCanvasBox_center')
canvasWH.value.width = exportCanvasBoxCanvas.offsetWidth - 10
let canvasBox = document.querySelector(
@@ -647,25 +647,33 @@ export default defineComponent({
// data
let imgId = 0
let minioUrl = ''//表示收藏或者generate
if(key == 'likeDesignCollectionList'){
imgId = data.designOutfitId
minioUrl = data.url
}else if(key == 'upImgFiles'){
imgId = data
minioUrl = data.url
}else if(key == 'FinalizeImage'){
imgId = data.id
let url = data.imgUrl.split('?')[0]
var match = url.match(/:(\d+)\/(.*)/);
minioUrl = match[2]
}else if(key == 'disposeMoodboard'){
let url = data.imgUrl.split('?')[0]
var match = url.match(/:(\d+)\/(.*)/);
minioUrl = match[2]
// data.imgUrl
}else{
minioUrl = data.minIOPath?data.minIOPath:data.resData.minIOPath
// if(key == 'likeDesignCollectionList'){
// imgId = data.designOutfitId
// minioUrl = data.url
// }else if(key == 'upImgFiles'){
// imgId = data
// minioUrl = data.url
// }else if(key == 'FinalizeImage'){
// imgId = data.id
// let url = data.imgUrl.split('?')[0]
// var match = url.match(/:(\d+)\/(.*)/);
// minioUrl = match[2]
// }else if(key == 'disposeMoodboard'){
// let url = data.imgUrl.split('?')[0]
// var match = url.match(/:(\d+)\/(.*)/);
// minioUrl = match[2]
// // data.imgUrl
// }else{
// minioUrl = data.minIOPath?data.minIOPath:data.resData.minIOPath
// }
let imgUrl = data.imgUrl
if (key == "likeDesignCollectionList") {
imgUrl = data.designOutfitUrl;
}
console.log(data);
let url = imgUrl.split('?')[0]
var match = url.match(/:(\d+)\/(.*)/);
minioUrl = match[2]
// let id =
let proportion = img.height / img.width; //计算图形宽高比例
let imgWidth = setImageWidth(key)
@@ -830,6 +838,7 @@ export default defineComponent({
centered:true,
onOk() {
showUpgradePlan.value = false;
canvas.dispose();
position = {
//设置每个图形位置的初始值
x: 0,

View File

@@ -55,7 +55,7 @@
@keydown.enter="getgenerate()"
@click="inputFocus()"
/>
<i class="fi fi-br-upload" v-show="!isTextarea && upload.level1Type !== 'Moodboard' && scene?.value != 'Slogan' && scene?.value != 'Logo'">
<i class="fi fi-br-upload" :title="$t('Generate.uploadTitle')" v-show="!isTextarea && upload.level1Type !== 'Moodboard' && scene?.value != 'Slogan' && scene?.value != 'Logo'">
<a-upload
class="search_upImg"
:capture="null"
@@ -73,7 +73,7 @@
>
</a-upload>
</i>
<i v-show="scene?.value == 'Slogan'" @click.stop="setSlogan" class="fi fi-rr-poll-h"></i>
<i v-show="scene?.value == 'Slogan'" :title="$t('Generate.sloganTitle')" @click.stop="setSlogan" class="fi fi-rr-poll-h"></i>
<i v-show="!isTextarea" class="fi fi-br-expand" @click.stop="setTextareaShow"></i>
<i v-show="isTextarea" class="fi fi-bs-compress" @click.stop="setTextareaShow"></i>
</div>
@@ -171,7 +171,7 @@
<script lang="ts">
import { LoadingOutlined } from "@ant-design/icons-vue";
import { message, Upload, Modal } from "ant-design-vue";
import { defineComponent, computed, createVNode, h, ref, nextTick, inject } from "vue";
import { defineComponent, computed, createVNode, h, ref,watch, nextTick, inject } from "vue";
import { Https } from "@/tool/https";
import { useStore } from "vuex";
import GO from "@/tool/GO";
@@ -605,8 +605,10 @@ export default defineComponent({
str = ','
}
if(this.upload.level1Type == "Moodboard"){
this.styleRecommend.push(value)
this.styleRecommend = [...new Set(this.styleRecommend)]
if(this.workspace?.allKeywordsByStyle['Printboard'].indexOf(value) == -1){
this.styleRecommend.push(value)
this.styleRecommend = [...new Set(this.styleRecommend)]
}
}
this.searchPictureName += str + value
},

View File

@@ -30,7 +30,14 @@
<div v-show="openClick == 3" class="generalMenu_printModel printMenu">
<div @click.stop="openPrintModel">{{ scene.name }} <i class="icon iconfont icon-xiala" :class="{forbidden:openMenu}"></i></div>
<ul v-show="openMenu">
<li v-for="item,index in printCatecoryList" class="printModel_item" @click.stop="setSceneList(item)">{{ item.name }}</li>
<li
v-for="item,index in printCatecoryList"
class="printModel_item"
@click.stop="setSceneList(item)"
:title="item.value == 'Pattern'?$t('PrintboardUpload.PatternTitle'):
item.value == 'Logo'?$t('PrintboardUpload.LogoTitle'):
item.value == 'Slogan'?$t('PrintboardUpload.SloganTitle'):''"
>{{ item.name }}</li>
</ul>
</div>
</div>

View File

@@ -196,6 +196,9 @@ export default defineComponent({
let sketchCatecoryList:any = computed(()=>{
return store.state.Workspace.workspacePosition
})
let sketchCatecoryAllList:any = computed(()=>{
return store.state.Workspace.workspaceAllPosition
})
let workspace:any = ref({})
let sketchboardList:any = computed(()=>{
return store.state.UploadFilesModule.sketchboard
@@ -216,6 +219,7 @@ export default defineComponent({
openClick,
store,
sketchCatecoryList,
sketchCatecoryAllList,
workspace,
sketchboardList,
t,
@@ -512,7 +516,7 @@ export default defineComponent({
}
arr.forEach((v:any)=>{
v.pin = v.pin == 1?true:false
this.sketchCatecoryList.forEach((item:any) => {
this.sketchCatecoryAllList.forEach((item:any) => {
if(v.level2Type == item.value){
v.category=item.name
v.categoryValue=item.value

View File

@@ -90,11 +90,11 @@
<div v-show="modeOfPayment == 'alipay'" class="UpgradePlan_payAffirm_content_detail">
<label>
<input name="location" type="radio" value="ALIPAYHK" v-model="modeOfPaymentDetail">
<span>HK</span>
<span>Hong Kong</span>
</label>
<label>
<input name="location" type="radio" value="ALIPAYCN" v-model="modeOfPaymentDetail">
<span>大陆</span>
<span>Mainland China</span>
</label>
</div>
</label>

View File

@@ -385,6 +385,7 @@ export default defineComponent({
cancelDsign(){
canvas.dispose();
this.showPayOrder = false
}
},

View File

@@ -181,7 +181,7 @@
<div class="productImg_right_item_scale iconLeft" @click.stop="setScaleImage(likeList,index,false)">
<i class="fi fi-bs-expand-arrows-alt"></i>
</div>
<div class="productImg_right_item_menu iconLeft" @click.stop="setMenuShow(item)">
<div class="productImg_right_item_menu iconLeft" :title="$t('ProductImg.moreTitle')" @click.stop="setMenuShow(item)">
<i class="fi fi-rr-circle-ellipsis"></i>
<ul v-show="item.menuShow">
<li v-for="menuItem,index in productimgMenuList" v-show="index != 0" @click.stop="setMenu(menuItem,item)" :key="menuItem.value">{{ menuItem.label }}</li>
@@ -198,6 +198,8 @@
:productData="{
upload:upload,
similarity:similarity,
RelightDirection:RelightDirection,
RelightDirectionList:RelightDirectionList,
}"
:isProductimg="true"></scaleImage>
</a-modal>
@@ -562,7 +564,8 @@ export default defineComponent({
arr.forEach((item:any)=>{
item.imgUrl = item.url
})
scaleImage.value.isProductimg = isLike
// scaleImage.value.isProductimg = isLike
scaleImage.value.isProductimg = false
scaleImage.value.init(arr,index)
scaleImage.value.isLike = false
scaleImage.value.isComparison = true

View File

@@ -58,6 +58,20 @@
</a-slider>
<input type="number" readonly v-model="productimgSimilarity">
</div>
<div v-show="scaleImageList[scaleImageIndex]?.resultType == 'Relight'" class="productImg_content_item_title productImg_content_item_title_similarity">
<span>{{$t('ProductImg.RelightDirection')}}</span>
</div>
<div v-show="scaleImageList[scaleImageIndex]?.resultType == 'Relight'" class="productImg_content_item_Direction">
<!-- <a-slider class="system_silder"
v-model:value="similarity"
@afterChange="setSimilarity"
:tooltipVisible="false"
:step="5"
>
</a-slider> -->
<a-select style="width: 100%;" v-model:value="productimgRelightDirection" :options="productimgRelightDirectionList"></a-select>
</div>
<div class="productImg_content_item_generate_btn input_border">
<div class="input_box">
<div v-show="!productimgIsProductimg" class="generage_btn started_btn" @click.stop="getPrductimg">
@@ -140,6 +154,8 @@ export default defineComponent({
productimgIsProductimg:false,
productimgSimilarity:props.productData.similarity,
productimgUpload:props.productData.upload,
productimgRelightDirection:props.productData.RelightDirection,
productimgRelightDirectionList:props.productData.RelightDirectionList,
})
let scaleImage: any = ref(false);
let isShowMark = ref(false)