Merge branch 'dev_vite' of ssh://18.167.251.121:10002/aidlab/aida_front into dev_vite
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -207,7 +207,8 @@ export class BackgroundSizeCommand extends Command {
|
||||
this.bgLayer = this.layers.value.find((layer) => layer.isBackground);
|
||||
|
||||
// 记录原尺寸
|
||||
this.backgroundObject = findObjectById(this.canvas, this.bgLayer.fabricObject.id).object;
|
||||
this.bgId = this.bgLayer.fabricObject?.id || this.bgLayer.fabricObjects?.[0]?.id;
|
||||
this.backgroundObject = findObjectById(this.canvas, this.bgId).object;
|
||||
|
||||
this.oldWidth = this.backgroundObject.width;
|
||||
this.oldHeight = this.backgroundObject.height;
|
||||
|
||||
@@ -11,6 +11,7 @@ const layerManager = inject("layerManager");
|
||||
const isShowLayerPanel = inject("isShowLayerPanel", ref(false));
|
||||
|
||||
const props = defineProps({
|
||||
title: String,
|
||||
activeTool: String,
|
||||
canvasWidth: Number,
|
||||
canvasHeight: Number,
|
||||
@@ -274,7 +275,7 @@ onMounted(() => {
|
||||
<template>
|
||||
<div class="canvas-header">
|
||||
<div class="canvas-header-wrapper">
|
||||
<span class="canvas-title">{{ $t('Canvas.Canvas') }}</span>
|
||||
<span class="canvas-title">{{ props.title || $t("Canvas.Canvas") }}</span>
|
||||
<!-- 默认设置 -->
|
||||
<!-- v-if="
|
||||
!activeTool ||
|
||||
|
||||
@@ -242,7 +242,7 @@ const canDeleteComputed = computed(() => {
|
||||
return parentLayer?.children?.length > 1;
|
||||
}
|
||||
// 否则直接返回根图层的可删除状态
|
||||
return props.layers.length > 3;
|
||||
return true;
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
@@ -414,14 +414,14 @@ function deleteSelectedLayers() {
|
||||
}
|
||||
|
||||
// 检查删除后是否还有足够的普通图层
|
||||
const remainingNormalLayers = layers.value.filter(
|
||||
(layer) => !layer.isBackground && !layer.isFixed && !selectedLayerIds.value.includes(layer.id)
|
||||
).length;
|
||||
// const remainingNormalLayers = layers.value.filter(
|
||||
// (layer) => !layer.isBackground && !layer.isFixed && !selectedLayerIds.value.includes(layer.id)
|
||||
// ).length;
|
||||
|
||||
if (remainingNormalLayers < 1) {
|
||||
console.warn("不能删除所有普通图层");
|
||||
return;
|
||||
}
|
||||
// if (remainingNormalLayers < 1) {
|
||||
// console.warn("不能删除所有普通图层");
|
||||
// return;
|
||||
// }
|
||||
|
||||
// 确认删除
|
||||
if (selectedLayers.length > 1) {
|
||||
@@ -876,13 +876,15 @@ function toggleSelectedLayersVisibility() {
|
||||
|
||||
function canDeleteLayers() {
|
||||
const selectedLayers = getSelectedLayers();
|
||||
console.log(selectedLayers);
|
||||
if (selectedLayers.length === 0) return false;
|
||||
|
||||
// 检查是否包含不能删除的图层
|
||||
const undeletableLayers = selectedLayers.filter((layer) => layer.isBackground || layer.isFixed);
|
||||
|
||||
if (undeletableLayers.length > 0) return false;
|
||||
|
||||
return true
|
||||
|
||||
// 检查删除后是否还有足够的普通图层
|
||||
const remainingNormalLayers = layers.value.filter(
|
||||
(layer) => !layer.isBackground && !layer.isFixed && !selectedLayerIds.value.includes(layer.id)
|
||||
|
||||
@@ -67,6 +67,10 @@ const emit = defineEmits([
|
||||
]);
|
||||
|
||||
const props = defineProps({
|
||||
title: {
|
||||
type: String,
|
||||
default: "", // 默认空
|
||||
},
|
||||
canvasJSON: {
|
||||
type: [Object, String],
|
||||
default: "", // 默认空
|
||||
@@ -1192,6 +1196,7 @@ isContainNormalLayer})
|
||||
<!-- 头部菜单组件 -->
|
||||
<div class="header-menu">
|
||||
<HeaderMenu
|
||||
:title="props.title"
|
||||
v-if="canvasManagerLoaded"
|
||||
:activeTool="activeTool"
|
||||
:canvasWidth="canvasWidth"
|
||||
|
||||
@@ -1330,7 +1330,7 @@ backgroundObject.scaleY,'CanvasManager resetCanvasSizeByFixedLayer')
|
||||
}
|
||||
// 解析JSON字符串
|
||||
try {
|
||||
const parsedJson = JSON.parse(json);
|
||||
const parsedJson = window.testCanvasJson || JSON.parse(json);
|
||||
console.log("加载画布JSON数据:", parsedJson);
|
||||
this.FixJsonIdLoss(parsedJson);
|
||||
this.canvasWidth.value = parsedJson.canvasWidth || this.width;
|
||||
@@ -1411,7 +1411,7 @@ backgroundObject.scaleY,'CanvasManager resetCanvasSizeByFixedLayer')
|
||||
// console.log("图层关联验证结果:", isValidate);
|
||||
// 排序
|
||||
// 使用LayerSort工具重新排列画布对象(如果可用)
|
||||
await this?.layerManager?.layerSort?.rearrangeObjects();
|
||||
await this?.layerManager?.layerSort?.rearrangeObjectsAsync();
|
||||
|
||||
this.layerManager.activeLayerId.value = this.layers.value[0]
|
||||
.children?.length
|
||||
@@ -1455,15 +1455,21 @@ backgroundObject.scaleY,'CanvasManager resetCanvasSizeByFixedLayer')
|
||||
const layers = json?.layers || [];
|
||||
const objects = json?.canvas?.objects || [];
|
||||
layers.forEach((layer) => {
|
||||
if(!layer.fabricObjects?.length && !layer.fabricObject){
|
||||
if(!layer.fabricObjects?.[0]?.id && !layer.fabricObject?.id){
|
||||
const obj = objects?.find((o) => o.layerId === layer.id);
|
||||
if(!obj) return;
|
||||
layer.fabricObjects = [{
|
||||
id: obj.id,
|
||||
type: obj.type,
|
||||
}]
|
||||
if(obj) {
|
||||
layer.fabricObjects = [{
|
||||
id: obj.id,
|
||||
type: obj.type,
|
||||
}]
|
||||
}
|
||||
}
|
||||
})
|
||||
// 排序
|
||||
objects.sort((a, b) => {
|
||||
if (a.isBackground) return -1;
|
||||
if (b.isBackground) return 1;
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -71,17 +71,17 @@ export class LayerSort {
|
||||
// if (!layer.visible) {
|
||||
// continue;
|
||||
// }
|
||||
|
||||
let id = layer.fabricObject?.id || layer.fabricObjects?.[0]?.id || null;
|
||||
// 处理不同类型的图层
|
||||
if (layer.isBackground && layer.fabricObject) {
|
||||
if (layer.isBackground && id) {
|
||||
// 背景图层对象放在最底层
|
||||
zIndexMap.set(layer.fabricObject.id, currentZIndex++);
|
||||
} else if (layer.isFixed && layer.fabricObject) {
|
||||
zIndexMap.set(id, currentZIndex++);
|
||||
} else if (layer.isFixed && id) {
|
||||
// 固定图层对象
|
||||
zIndexMap.set(layer.fabricObject.id, currentZIndex++);
|
||||
} else if (layer.isFixedOther && layer.fabricObject) {
|
||||
zIndexMap.set(id, currentZIndex++);
|
||||
} else if (layer.isFixedOther && id) {
|
||||
// 其他固定图层对象
|
||||
zIndexMap.set(layer.fabricObject.id, currentZIndex++);
|
||||
zIndexMap.set(id, currentZIndex++);
|
||||
} else if (!layer.isBackground && !layer.isFixed) {
|
||||
// 普通图层
|
||||
currentZIndex = this.processLayerObjects(
|
||||
@@ -91,7 +91,6 @@ export class LayerSort {
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
return zIndexMap;
|
||||
}
|
||||
|
||||
|
||||
@@ -545,6 +545,7 @@ export default defineComponent({
|
||||
await detailDom.canvasBox.privewDetail()
|
||||
await upDateFrontBackSketch()
|
||||
saveCanvasJSONToSession()
|
||||
await uploadSelectDetail()
|
||||
detailData.loadingShow = false
|
||||
}
|
||||
}
|
||||
@@ -672,22 +673,16 @@ export default defineComponent({
|
||||
if(detailData.isEditPattern.value == 'canvasEditor'){
|
||||
// await detailDom.canvasBox.saveCanvas()
|
||||
const allInfo = await (detailDom.canvasBox as any).getCanvasElement()
|
||||
if(allInfo.trims?.length > 0){
|
||||
// detailData.selectDetail.trims.prints = allInfo.trims
|
||||
let value = {
|
||||
data:allInfo.trims,
|
||||
str:'element'
|
||||
}
|
||||
store.commit('DesignDetail/setNewDetail',value)
|
||||
let trimsValue = {
|
||||
data:allInfo.trims || [],
|
||||
str:'element'
|
||||
}
|
||||
if(allInfo.prints?.length > 0){
|
||||
// detailData.selectDetail.printObject.prints = allInfo.prints
|
||||
let value = {
|
||||
data:allInfo.prints,
|
||||
str:'print'
|
||||
}
|
||||
store.commit('DesignDetail/setNewDetail',value)
|
||||
store.commit('DesignDetail/setNewDetail',trimsValue)
|
||||
let printValue = {
|
||||
data:allInfo.prints || [],
|
||||
str:'print'
|
||||
}
|
||||
store.commit('DesignDetail/setNewDetail',printValue)
|
||||
if(allInfo.color?.color?.rgba){
|
||||
let canvasColor = allInfo.color.color;
|
||||
let colorData:any = await getColorName(allInfo.color.color?.rgba)
|
||||
@@ -713,8 +708,61 @@ export default defineComponent({
|
||||
if(detailData.currentDetailType == 'color'){
|
||||
detailData.detailLeftColorKey++
|
||||
}
|
||||
}else{
|
||||
let value = {
|
||||
data:{},
|
||||
str:'color'
|
||||
}
|
||||
store.commit('DesignDetail/setNewDetail',value)
|
||||
}
|
||||
}
|
||||
}
|
||||
const uploadSelectDetail = async ()=>{//更新选中的detail
|
||||
// await detailDom.canvasBox.saveCanvas()
|
||||
const allInfo = await (detailDom.canvasBox as any).getCanvasElement()
|
||||
let color:any = {}
|
||||
if(allInfo.color?.color?.rgba){
|
||||
let canvasColor = allInfo.color.color;
|
||||
let colorData:any = await getColorName(allInfo.color.color?.rgba)
|
||||
color = {
|
||||
hsv:{
|
||||
h:colorData.h,
|
||||
s:colorData.s,
|
||||
v:colorData.v,
|
||||
},
|
||||
name:colorData.name,
|
||||
tcx:colorData.tcx,
|
||||
rgba:canvasColor.rgba,
|
||||
hex:rgbaToHex([canvasColor.rgba.r,canvasColor.rgba.g,canvasColor.rgba.b]),
|
||||
}
|
||||
if(canvasColor.gradient){
|
||||
color.gradient = canvasColor.gradient
|
||||
}
|
||||
if(detailData.currentDetailType == 'color'){
|
||||
detailData.detailLeftColorKey++
|
||||
}
|
||||
}
|
||||
if(detailData.isEditPattern.value !== 'canvasEditor'){
|
||||
delete detailData.selectDetail.newDetail
|
||||
detailData.selectDetail.trims.prints = allInfo.trims || []
|
||||
detailData.selectDetail.printObject.prints = allInfo.prints || []
|
||||
detailData.selectDetail.color = color
|
||||
}else{
|
||||
if(detailData.currentDetailType == 'color'){
|
||||
delete detailData.selectDetail.newDetail.color
|
||||
detailData.selectDetail.color = color
|
||||
}
|
||||
if(detailData.currentDetailType == 'print'){
|
||||
delete detailData.selectDetail.newDetail.print
|
||||
detailData.selectDetail.printObject.prints = allInfo.prints || []
|
||||
}
|
||||
if(detailData.currentDetailType == 'element'){
|
||||
delete detailData.selectDetail.newDetail.element
|
||||
detailData.selectDetail.trims.prints = allInfo.trims || []
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
const canvasReload = async ()=>{
|
||||
if(detailData.isEditPattern.value){
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
<div class="canvas" :class="{'active': currentView === 'canvasEditor'}"@click.stop>
|
||||
<!-- :clothingMinIOPath="selectDetail.minIOPath" 部件选取 -->
|
||||
<editCanvas v-if="canvasLoad" :config="canvasConfig"
|
||||
:title="t('CanvasTitle.ModifyItem')"
|
||||
@canvasInit="editSketchCanvasInit"
|
||||
is-edit
|
||||
:clothingImageUrl="selectDetail.path"
|
||||
@@ -26,6 +27,7 @@
|
||||
</div>
|
||||
<div class="editFrontBack" v-if="currentView === 'redGreenExample'" @click.stop>
|
||||
<editCanvas v-if="canvasLoad" :config="canvasConfig"
|
||||
:title="t('CanvasTitle.RedGreen')"
|
||||
@canvasInit="editFrontBackCanvasInit"
|
||||
:enabledRedGreenMode="true"
|
||||
:clothingImageUrl="selectDetail.path"
|
||||
@@ -40,7 +42,7 @@
|
||||
</editCanvas>
|
||||
</div>
|
||||
<div class="editSketch" v-if="currentView === 'editSketch'" @click.stop>
|
||||
<generalMiniCanvas ref="generalMiniCanvas" :btnShow="false" :imgUrl="selectDetail.sketchString || selectDetail.path"></generalMiniCanvas>
|
||||
<generalMiniCanvas ref="generalMiniCanvas" :isChangeCanvasSize="false" :canvasTitle="t('CanvasTitle.ModifySketch')" :btnShow="false" :imgUrl="selectDetail.sketchString || selectDetail.path"></generalMiniCanvas>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -287,12 +289,27 @@ export default defineComponent({
|
||||
const saveCanvas = async (canvasData:any)=>{
|
||||
const index = detailData.designDetail.clothes.findIndex(item => item.id === canvasData.id);
|
||||
await new Promise<void>((resolve, reject) => {
|
||||
let canvasJSON = JSON.parse(canvasData.canvasJSON)
|
||||
if(!canvasJSON)return resolve()
|
||||
// canvasData.canvas.objects.forEach((objectsItem:any) => {
|
||||
// if(objectsItem.type == 'image')objectsItem.minioUrl = getMinioUrl(objectsItem.src)
|
||||
// });
|
||||
let blob = new Blob([JSON.stringify(canvasJSON)], { type: "application/json" });
|
||||
if(!detailDom?.editCanvas)return resolve()
|
||||
let canvasJSON = detailDom?.editCanvas?.getJSON()
|
||||
let canvasData = JSON.parse(canvasJSON)
|
||||
if(!canvasData)return resolve()
|
||||
function deepProcessObjects(data:any, callback:any) {
|
||||
if (!Array.isArray(data)) return data;
|
||||
return data.map(item => {
|
||||
callback(item)
|
||||
const processedItem = {...item};
|
||||
if (processedItem.objects &&
|
||||
Array.isArray(processedItem.objects) &&
|
||||
processedItem.objects.length > 0) {
|
||||
processedItem.objects = deepProcessObjects(processedItem.objects, callback);
|
||||
}
|
||||
return processedItem;
|
||||
});
|
||||
}
|
||||
canvasData.canvas.objects = deepProcessObjects(canvasData.canvas.objects,(item:any)=>{
|
||||
if(item.type == 'image')item.minioUrl = getMinioUrl(item.src)
|
||||
})
|
||||
let blob = new Blob([JSON.stringify(canvasData)], { type: "application/json" });
|
||||
let formData = new FormData();
|
||||
formData.append("file", blob, "data.json");
|
||||
formData.append("designItemDetailId", detailData.selectDetail.id);
|
||||
@@ -410,6 +427,7 @@ export default defineComponent({
|
||||
return{
|
||||
...toRefs(detailDom),
|
||||
...toRefs(detailData),
|
||||
t,
|
||||
editFront,
|
||||
privewDetail,
|
||||
setFrontBackColor,
|
||||
|
||||
@@ -14,7 +14,12 @@
|
||||
<div ref="moveableContainer" class="moveableContainer"></div>
|
||||
</div>
|
||||
<div class="designOpenrtion_imgMask" v-if="!frontBack?.body?.path">
|
||||
<img :src="selectDetail?.undividedLayerWithSinglePrint || selectDetail?.undividedLayer || selectDetail?.path" style="object-fit: cover;" alt="">
|
||||
<div class="designOpenrtion_print">
|
||||
<img v-if="frontBack.back?.[0].imageUrl" :src="frontBack.back?.[0].imageUrl" style="object-fit: cover;" alt="">
|
||||
</div>
|
||||
<div class="detail_modal_item_front" style="position: relative;">
|
||||
<img :src="frontBack.front?.[0].imageUrl || selectDetail?.path" style="object-fit: cover;" alt="">
|
||||
</div>
|
||||
<!-- <img @load="setSelectSketch()" :src="designDetail?.currentFullBodyView || selectDetail?.undividedLayer" style="object-fit: cover;" alt=""> -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -925,7 +925,9 @@ export default defineComponent({
|
||||
},
|
||||
onCancel() {}
|
||||
})
|
||||
}
|
||||
}else{
|
||||
this.fileList = this.fileList.filter((item: any) => item.imgUrl)
|
||||
}
|
||||
})
|
||||
},
|
||||
setGenerate(dataList: any) {
|
||||
|
||||
@@ -854,6 +854,10 @@ export default defineComponent({
|
||||
font-size: 2.2rem;
|
||||
font-weight: bold;
|
||||
color: #030303;
|
||||
@media (max-width: 767px) {
|
||||
font-size: 1.2rem;
|
||||
margin-left: .5rem;
|
||||
}
|
||||
}
|
||||
.email_last_step_block_icon {
|
||||
cursor: pointer;
|
||||
|
||||
@@ -161,6 +161,13 @@
|
||||
font-size: 2.4rem;
|
||||
line-height: 8.7rem;
|
||||
outline: none;
|
||||
@media (max-width: 767px) {
|
||||
border-radius: .7rem;
|
||||
width: 3.5rem;
|
||||
height: 3.5rem;
|
||||
font-size: 1.8rem;
|
||||
line-height: 3.5rem;
|
||||
}
|
||||
}
|
||||
input:last-of-type {
|
||||
margin-right: 0;
|
||||
|
||||
@@ -335,9 +335,22 @@ export default defineComponent({
|
||||
let canvasData = JSON.parse(canvasJSON)
|
||||
|
||||
if(!canvasData)return
|
||||
canvasData.canvas.objects.forEach((objectsItem:any) => {
|
||||
if(objectsItem.type == 'image')objectsItem.minioUrl = getMinioUrl(objectsItem.src)
|
||||
});
|
||||
function deepProcessObjects(data:any, callback:any) {
|
||||
if (!Array.isArray(data)) return data;
|
||||
return data.map(item => {
|
||||
callback(item)
|
||||
const processedItem = {...item};
|
||||
if (processedItem.objects &&
|
||||
Array.isArray(processedItem.objects) &&
|
||||
processedItem.objects.length > 0) {
|
||||
processedItem.objects = deepProcessObjects(processedItem.objects, callback);
|
||||
}
|
||||
return processedItem;
|
||||
});
|
||||
}
|
||||
canvasData.canvas.objects = deepProcessObjects(canvasData.canvas.objects,(item:any)=>{
|
||||
if(item.type == 'image')item.minioUrl = getMinioUrl(item.src)
|
||||
})
|
||||
let blob = new Blob([JSON.stringify(canvasData)], { type: "application/json" });
|
||||
let formData = new FormData();
|
||||
formData.append("file", blob, "data.json");
|
||||
|
||||
@@ -206,11 +206,22 @@ export default defineComponent({
|
||||
if(!canvasJSON)return
|
||||
if(!store.state.Workspace.probjects?.id)return
|
||||
let canvasData = JSON.parse(canvasJSON)
|
||||
console.log(canvasData)
|
||||
canvasData.canvas.objects.forEach((objectsItem:any) => {
|
||||
if(objectsItem.type == 'image')objectsItem.minioUrl = getMinioUrl(objectsItem.src)
|
||||
|
||||
});
|
||||
function deepProcessObjects(data:any, callback:any) {
|
||||
if (!Array.isArray(data)) return data;
|
||||
return data.map(item => {
|
||||
callback(item)
|
||||
const processedItem = {...item};
|
||||
if (processedItem.objects &&
|
||||
Array.isArray(processedItem.objects) &&
|
||||
processedItem.objects.length > 0) {
|
||||
processedItem.objects = deepProcessObjects(processedItem.objects, callback);
|
||||
}
|
||||
return processedItem;
|
||||
});
|
||||
}
|
||||
canvasData.canvas.objects = deepProcessObjects(canvasData.canvas.objects,(item:any)=>{
|
||||
if(item.type == 'image')item.minioUrl = getMinioUrl(item.src)
|
||||
})
|
||||
let blob = new Blob([JSON.stringify(canvasData)], { type: "application/json" });
|
||||
let formData = new FormData();
|
||||
formData.append("file", blob, "data.json");
|
||||
|
||||
@@ -79,7 +79,7 @@
|
||||
Forgot password?
|
||||
</div> -->
|
||||
</div>
|
||||
<div class="password_input_block">
|
||||
<div class="password_input_block" v-show="emailStap !== 2">
|
||||
<div v-show="passwordConditionShow" class="conditionShow">
|
||||
<div class="item">
|
||||
<div class="icon">
|
||||
@@ -144,12 +144,13 @@
|
||||
@click="changePasswordType()"
|
||||
></div>
|
||||
</div>
|
||||
<span style="font-weight: 400; opacity: 0.7"
|
||||
<span style="font-weight: 400; opacity: 0.7" v-show="emailStap !== 2"
|
||||
>{{ userI18n[selectUserI18n].inputPasswordTip }}</span
|
||||
>
|
||||
<div class="login_form_title marign_top30">{{ userI18n[selectUserI18n].Email }}</div>
|
||||
<div class="login_form_title marign_top30" v-show="emailStap !== 2">{{ userI18n[selectUserI18n].Email }}</div>
|
||||
<input
|
||||
class="login_form_input"
|
||||
v-show="emailStap !== 2"
|
||||
:placeholder="userI18n[selectUserI18n].inputEmail"
|
||||
v-model="email"
|
||||
@keydown.enter="submitPerLogin()"
|
||||
@@ -917,6 +918,7 @@ export default defineComponent({
|
||||
position: relative;
|
||||
@media (max-width: 768px) {
|
||||
margin-top: 2.4rem;
|
||||
height: 20rem;
|
||||
}
|
||||
&[state="2"] {
|
||||
> * {
|
||||
@@ -1015,6 +1017,9 @@ export default defineComponent({
|
||||
// margin-top: 4rem;
|
||||
.email_last_step_bottom {
|
||||
padding: 0 40px;
|
||||
@media (max-width: 767px) {
|
||||
padding: 0 2rem;
|
||||
}
|
||||
}
|
||||
.email_last_step_block {
|
||||
padding: 10px;
|
||||
@@ -1028,6 +1033,10 @@ export default defineComponent({
|
||||
font-size: 2.2rem;
|
||||
font-weight: bold;
|
||||
color: #030303;
|
||||
@media (max-width: 767px) {
|
||||
font-size: 1.2rem;
|
||||
margin-left: .5rem;
|
||||
}
|
||||
}
|
||||
.email_last_step_block_icon {
|
||||
cursor: pointer;
|
||||
@@ -1229,6 +1238,9 @@ export default defineComponent({
|
||||
font-weight: bold;
|
||||
color: #000;
|
||||
cursor: pointer;
|
||||
@media (max-width: 767px) {
|
||||
font-size: 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
.email_last_step_des {
|
||||
@@ -1237,16 +1249,25 @@ export default defineComponent({
|
||||
justify-content: space-between;
|
||||
margin-top: 4rem;
|
||||
margin-bottom: 2rem;
|
||||
|
||||
@media (max-width: 767px) {
|
||||
margin-top: 2rem;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
.sent_email_content {
|
||||
font-size: 1.8rem;
|
||||
font-weight: bold;
|
||||
color: #a5b0c2;
|
||||
@media (max-width: 767px) {
|
||||
font-size: 1.2rem;
|
||||
}
|
||||
}
|
||||
|
||||
.email_tip_content {
|
||||
font-size: 1.4rem;
|
||||
color: #030303;
|
||||
@media (max-width: 767px) {
|
||||
font-size: 1.2rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,11 +2,13 @@
|
||||
<div class="generalCanvas">
|
||||
<div class="canvasBox" ref="canvasBox">
|
||||
<editCanvas v-if="canvasLoad" :config="canvasConfig"
|
||||
:title="canvasTitle"
|
||||
@canvasInit="canvasInit"
|
||||
@changeCanvas="changeCanvas"
|
||||
is-general
|
||||
:hideCanvas="hideCanvas"
|
||||
:isBackgroundChangeable="false"
|
||||
:isChangeCanvasSize="isChangeCanvasSize"
|
||||
ref="editCanvas"></editCanvas>
|
||||
</div>
|
||||
<div class="btn" v-if="btnShow">
|
||||
@@ -35,6 +37,14 @@ export default defineComponent({
|
||||
editCanvas,
|
||||
},
|
||||
props:{
|
||||
canvasTitle:{
|
||||
type:String,
|
||||
default:''
|
||||
},
|
||||
isChangeCanvasSize:{
|
||||
type:Boolean,
|
||||
default:true
|
||||
},
|
||||
imgUrl:{
|
||||
type:String,
|
||||
default:''
|
||||
@@ -174,6 +184,7 @@ export default defineComponent({
|
||||
return {
|
||||
...toRefs(data),
|
||||
...toRefs(dataDom),
|
||||
...toRefs(props),
|
||||
isShowMark,
|
||||
canvasLoadAddImg,
|
||||
getCanvasData,
|
||||
|
||||
@@ -165,9 +165,22 @@ export default defineComponent({
|
||||
time = setTimeout(()=>{
|
||||
let canvasData = JSON.parse(canvasJSON)
|
||||
if(!canvasData)return
|
||||
canvasData.canvas.objects.forEach((objectsItem:any) => {
|
||||
if(objectsItem.type == 'image')objectsItem.minioUrl = getMinioUrl(objectsItem.src)
|
||||
});
|
||||
function deepProcessObjects(data:any, callback:any) {
|
||||
if (!Array.isArray(data)) return data;
|
||||
return data.map(item => {
|
||||
callback(item)
|
||||
const processedItem = {...item};
|
||||
if (processedItem.objects &&
|
||||
Array.isArray(processedItem.objects) &&
|
||||
processedItem.objects.length > 0) {
|
||||
processedItem.objects = deepProcessObjects(processedItem.objects, callback);
|
||||
}
|
||||
return processedItem;
|
||||
});
|
||||
}
|
||||
canvasData.canvas.objects = deepProcessObjects(canvasData.canvas.objects,(item:any)=>{
|
||||
if(item.type == 'image')item.minioUrl = getMinioUrl(item.src)
|
||||
})
|
||||
let blob = new Blob([JSON.stringify(canvasData)], { type: "application/json" });
|
||||
let formData = new FormData();
|
||||
formData.append("file", blob, "data.json");
|
||||
|
||||
@@ -1147,6 +1147,11 @@ export default {
|
||||
System: '系统',
|
||||
Library: '库'
|
||||
},
|
||||
CanvasTitle: {
|
||||
ModifySketch: '修改草图',
|
||||
ModifyItem: '修改单品',
|
||||
RedGreen: '编辑前片后片',
|
||||
},
|
||||
Canvas: {
|
||||
Canvas: '画布',
|
||||
layer: '图层',
|
||||
|
||||
@@ -1181,6 +1181,11 @@ export default {
|
||||
System: 'System',
|
||||
Library: 'Library'
|
||||
},
|
||||
CanvasTitle: {
|
||||
ModifySketch: 'Modify Sketch',
|
||||
ModifyItem: 'Modify Item',
|
||||
RedGreen: 'Front and back section',
|
||||
},
|
||||
Canvas: {
|
||||
Canvas: 'Canvas',
|
||||
layer: 'Layer',
|
||||
|
||||
@@ -1814,6 +1814,8 @@ export default defineComponent({
|
||||
|
||||
}
|
||||
});
|
||||
}else{
|
||||
this.generateList[selectCodeStr] = this.generateList[selectCodeStr].filter((item: any) => item.imgUrl)
|
||||
}
|
||||
});
|
||||
},
|
||||
@@ -2420,6 +2422,7 @@ export default defineComponent({
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
position: absolute;
|
||||
}
|
||||
&:hover .img_item_hover{
|
||||
// display: block;
|
||||
|
||||
@@ -8,15 +8,15 @@
|
||||
<!-- <div class="upgrade-content-text">System upgrading</div> -->
|
||||
<div class="upgrade-content-text">System maintenance</div>
|
||||
<!-- 没有截至时间 -->
|
||||
<div class="upgrade-content-textab">The AiDA system cannot be accessed temporarily due to system server maintenance. We apologize for any inconvenience this may cause and thank you for your understanding.</div>
|
||||
<!-- <div class="upgrade-content-textab">The AiDA system cannot be accessed temporarily due to system server maintenance. We apologize for any inconvenience this may cause and thank you for your understanding.</div> -->
|
||||
<!-- <div class="upgrade-content-textab">Due to the system server upgrade, we will start the upgrade from 9:30 am Hong Kong time on the weekend of October 20th until October 21st. During this time,<br> the AiDA system will be temporarily inaccessible. We apologize for any inconvenience this may cause and thank you for your understanding.</div> -->
|
||||
<!-- 有截至时间 -->
|
||||
<!-- <div class="upgrade-content-textab">Due to system server upgrades, we will be upgrading from Tuesday, September 2 at 00:00 (HKT) to Wednesday, September 3 at 00:00. During this period, the AiDA system will be temporarily inaccessible. <br>We sincerely apologize for the inconvenience caused and thank you for your understanding</div> -->
|
||||
<div class="upgrade-content-textab">Due to system server upgrades, maintenance will be carried out from 21:00 to 22:00 on December 19.<br>The AiDA system will be temporarily unavailable during this period. We sincerely apologize for any inconvenience caused and thank you for your understanding.</div>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<div class="upgrade-content-textab">由于系统服务器维护,AiDA系统暂时无法访问。对于由此造成的任何不便,我们深表歉意,并感谢您的理解</div>
|
||||
<!-- <div class="upgrade-content-textab">由于系统服务器升级,我们将于9月2日(星期二)凌晨00:00(香港时间)至9月3日(星期三)凌晨00:00进行升级。<br>在此期间,AiDA系统将暂时无法访问。给您带来的不便,我们深表歉意,并感谢您的理解</div> -->
|
||||
<!-- <div class="upgrade-content-textab">由于系统服务器维护,AiDA系统暂时无法访问。对于由此造成的任何不便,我们深表歉意,并感谢您的理解</div> -->
|
||||
<div class="upgrade-content-textab">由于系统服务器升级,我们将于12月19日21:00 至12月19日22:00进行升级。<br>在此期间,AiDA系统将暂时无法访问。给您带来的不便,我们深表歉意,并感谢您的理解</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
Reference in New Issue
Block a user