调整detail拉伸sketch但是编辑印花和画布使用的sketch不受影响
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
VITE_USER_NODE_ENV = 'production'
|
VITE_USER_NODE_ENV = 'development'
|
||||||
# VITE_APP_BASE_URL = 'https://aida.com.hk/test'
|
# VITE_APP_BASE_URL = 'https://aida.com.hk/test'
|
||||||
# VITE_APP_BASE_URL = 'http://18.167.251.121:10088'
|
# VITE_APP_BASE_URL = 'http://18.167.251.121:10088'
|
||||||
# VITE_APP_BASE_URL = 'https://api.aida.com.hk'
|
# VITE_APP_BASE_URL = 'https://api.aida.com.hk'
|
||||||
|
|||||||
9
components.d.ts
vendored
9
components.d.ts
vendored
@@ -9,11 +9,15 @@ export {}
|
|||||||
declare module 'vue' {
|
declare module 'vue' {
|
||||||
export interface GlobalComponents {
|
export interface GlobalComponents {
|
||||||
ABadge: typeof import('ant-design-vue/es')['Badge']
|
ABadge: typeof import('ant-design-vue/es')['Badge']
|
||||||
|
ABreadcrumb: typeof import('ant-design-vue/es')['Breadcrumb']
|
||||||
ACheckbox: typeof import('ant-design-vue/es')['Checkbox']
|
ACheckbox: typeof import('ant-design-vue/es')['Checkbox']
|
||||||
AConfigProvider: typeof import('ant-design-vue/es')['ConfigProvider']
|
AConfigProvider: typeof import('ant-design-vue/es')['ConfigProvider']
|
||||||
|
ADatePicker: typeof import('ant-design-vue/es')['DatePicker']
|
||||||
ADrawer: typeof import('ant-design-vue/es')['Drawer']
|
ADrawer: typeof import('ant-design-vue/es')['Drawer']
|
||||||
AImage: typeof import('ant-design-vue/es')['Image']
|
AImage: typeof import('ant-design-vue/es')['Image']
|
||||||
AInputNumber: typeof import('ant-design-vue/es')['InputNumber']
|
AInputNumber: typeof import('ant-design-vue/es')['InputNumber']
|
||||||
|
AMenu: typeof import('ant-design-vue/es')['Menu']
|
||||||
|
AMenuItem: typeof import('ant-design-vue/es')['MenuItem']
|
||||||
AModal: typeof import('ant-design-vue/es')['Modal']
|
AModal: typeof import('ant-design-vue/es')['Modal']
|
||||||
APagination: typeof import('ant-design-vue/es')['Pagination']
|
APagination: typeof import('ant-design-vue/es')['Pagination']
|
||||||
APopover: typeof import('ant-design-vue/es')['Popover']
|
APopover: typeof import('ant-design-vue/es')['Popover']
|
||||||
@@ -21,9 +25,14 @@ declare module 'vue' {
|
|||||||
ASelect: typeof import('ant-design-vue/es')['Select']
|
ASelect: typeof import('ant-design-vue/es')['Select']
|
||||||
ASelectOption: typeof import('ant-design-vue/es')['SelectOption']
|
ASelectOption: typeof import('ant-design-vue/es')['SelectOption']
|
||||||
ASlider: typeof import('ant-design-vue/es')['Slider']
|
ASlider: typeof import('ant-design-vue/es')['Slider']
|
||||||
|
ASpace: typeof import('ant-design-vue/es')['Space']
|
||||||
ASpin: typeof import('ant-design-vue/es')['Spin']
|
ASpin: typeof import('ant-design-vue/es')['Spin']
|
||||||
|
ASubMenu: typeof import('ant-design-vue/es')['SubMenu']
|
||||||
ASwitch: typeof import('ant-design-vue/es')['Switch']
|
ASwitch: typeof import('ant-design-vue/es')['Switch']
|
||||||
ATable: typeof import('ant-design-vue/es')['Table']
|
ATable: typeof import('ant-design-vue/es')['Table']
|
||||||
|
ATabPane: typeof import('ant-design-vue/es')['TabPane']
|
||||||
|
ATabs: typeof import('ant-design-vue/es')['Tabs']
|
||||||
|
ATimeRangePicker: typeof import('ant-design-vue/es')['TimeRangePicker']
|
||||||
AUpload: typeof import('ant-design-vue/es')['Upload']
|
AUpload: typeof import('ant-design-vue/es')['Upload']
|
||||||
ElCascader: typeof import('element-plus/es')['ElCascader']
|
ElCascader: typeof import('element-plus/es')['ElCascader']
|
||||||
RouterLink: typeof import('vue-router')['RouterLink']
|
RouterLink: typeof import('vue-router')['RouterLink']
|
||||||
|
|||||||
@@ -117,13 +117,12 @@ export default defineComponent({
|
|||||||
let value = {
|
let value = {
|
||||||
country:accountHomeData.Country,
|
country:accountHomeData.Country,
|
||||||
title:accountHomeData.selectSex,
|
title:accountHomeData.selectSex,
|
||||||
userName:accountHomeData.editUserName,
|
|
||||||
surname:accountHomeData.surname,
|
surname:accountHomeData.surname,
|
||||||
givenName:accountHomeData.givenName,
|
givenName:accountHomeData.givenName,
|
||||||
}
|
}
|
||||||
store.commit('upUserDetail',value)
|
store.commit('upUserDetail',value)
|
||||||
accountHomeData.loadingShow = false
|
accountHomeData.loadingShow = false
|
||||||
message.success(t('exportModel.jsContent7'))
|
message.success(t('account.jsContent13'))
|
||||||
}).catch((err:any)=>{
|
}).catch((err:any)=>{
|
||||||
accountHomeData.loadingShow = false
|
accountHomeData.loadingShow = false
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -870,7 +870,7 @@ export class ExportManager {
|
|||||||
const clipObject = this.canvas?.clipPath;
|
const clipObject = this.canvas?.clipPath;
|
||||||
if (!clipObject) {
|
if (!clipObject) {
|
||||||
console.warn("未找到可用的裁剪对象");
|
console.warn("未找到可用的裁剪对象");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 克隆对象作为裁剪路径
|
// 克隆对象作为裁剪路径
|
||||||
@@ -878,7 +878,6 @@ export class ExportManager {
|
|||||||
clipObject,
|
clipObject,
|
||||||
false,
|
false,
|
||||||
false
|
false
|
||||||
|
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!clonedClipPath) {
|
if (!clonedClipPath) {
|
||||||
|
|||||||
@@ -759,13 +759,13 @@ export class ToolManager {
|
|||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
_showRasterizeConfirmModal(isGroup, layerId) {
|
_showRasterizeConfirmModal(isGroup, layerId) {
|
||||||
const title = "栅格化图层";
|
const title = this.t("Canvas.RasterizedLayer");
|
||||||
const content = "需要先栅格化才能进行液化操作,是否立即栅格化?";
|
const content = this.t("Canvas.rasterizeImmediately");
|
||||||
|
|
||||||
Modal.confirm({
|
Modal.confirm({
|
||||||
title,
|
title,
|
||||||
content,
|
content,
|
||||||
okText: "确定栅格化",
|
okText: this.t("Canvas.ConfirmRasterization"),
|
||||||
cancelText: "取消",
|
cancelText: "取消",
|
||||||
centered: true,
|
centered: true,
|
||||||
icon: h("span", { style: "color: #faad14;" }, "⚠️"),
|
icon: h("span", { style: "color: #faad14;" }, "⚠️"),
|
||||||
@@ -800,8 +800,8 @@ export class ToolManager {
|
|||||||
if (!this.commandManager || !this.layerManager) return;
|
if (!this.commandManager || !this.layerManager) return;
|
||||||
// 显示加载Modal
|
// 显示加载Modal
|
||||||
const loadingModal = Modal.info({
|
const loadingModal = Modal.info({
|
||||||
title: "正在栅格化",
|
title: this.t('Canvas.beingRasterized'),
|
||||||
content: "正在栅格化图层,请稍候...",
|
content: this.t('Canvas.waitRasterizing'),
|
||||||
okButtonProps: { style: { display: "none" } },
|
okButtonProps: { style: { display: "none" } },
|
||||||
centered: true,
|
centered: true,
|
||||||
closable: false,
|
closable: false,
|
||||||
@@ -823,16 +823,16 @@ export class ToolManager {
|
|||||||
|
|
||||||
if (result) {
|
if (result) {
|
||||||
// 栅格化成功,启动液化
|
// 栅格化成功,启动液化
|
||||||
message.success("图层已成功栅格化,可以进行液化操作");
|
message.success(this.t('Canvas.successRasterizing'));
|
||||||
this._startLiquify(result);
|
this._startLiquify(result);
|
||||||
|
|
||||||
this.setTool(OperationType.LIQUIFY); // 切换到液化工具
|
this.setTool(OperationType.LIQUIFY); // 切换到液化工具
|
||||||
} else {
|
} else {
|
||||||
// 栅格化失败
|
// 栅格化失败
|
||||||
Modal.error({
|
Modal.error({
|
||||||
title: "栅格化失败",
|
title: this.t('Canvas.gridingFailed'),
|
||||||
content: "栅格化失败,无法进行液化操作",
|
content: this.t('Canvas.gridingFailedNoOperation'),
|
||||||
okText: "确定",
|
okText: this.t('Canvas.ok'),
|
||||||
centered: true,
|
centered: true,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -840,9 +840,9 @@ export class ToolManager {
|
|||||||
console.error("栅格化图层失败:", error);
|
console.error("栅格化图层失败:", error);
|
||||||
|
|
||||||
Modal.error({
|
Modal.error({
|
||||||
title: "栅格化错误",
|
title: this.t('Canvas.gridingError'),
|
||||||
content: `栅格化失败:${error.message}`,
|
content: `${this.t('Canvas.gridingFailed')}:${error.message}`,
|
||||||
okText: "确定",
|
okText: this.t('Canvas.ok'),
|
||||||
centered: true,
|
centered: true,
|
||||||
});
|
});
|
||||||
} finally {
|
} finally {
|
||||||
@@ -866,9 +866,9 @@ export class ToolManager {
|
|||||||
);
|
);
|
||||||
if (!layer) {
|
if (!layer) {
|
||||||
Modal.error({
|
Modal.error({
|
||||||
title: "图层错误",
|
title: this.t('Canvas.LayerError'),
|
||||||
content: "图层不存在",
|
content: this.t('Canvas.LayerDoesNotExist'),
|
||||||
okText: "确定",
|
okText: this.t('Canvas.ok'),
|
||||||
centered: true,
|
centered: true,
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
@@ -880,9 +880,9 @@ export class ToolManager {
|
|||||||
// 背景图层使用 fabricObject (单数)
|
// 背景图层使用 fabricObject (单数)
|
||||||
if (!layer.fabricObject) {
|
if (!layer.fabricObject) {
|
||||||
Modal.warning({
|
Modal.warning({
|
||||||
title: "背景图层为空",
|
title: this.t('Canvas.backgroundEmpty'),
|
||||||
content: "背景图层为空,无法进行液化操作",
|
content: this.t('Canvas.backgroundEmptyNoLiquidation'),
|
||||||
okText: "确定",
|
okText: this.t('Canvas.ok'),
|
||||||
centered: true,
|
centered: true,
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
@@ -892,9 +892,9 @@ export class ToolManager {
|
|||||||
// 普通图层使用 fabricObjects (复数)
|
// 普通图层使用 fabricObjects (复数)
|
||||||
if (!layer.fabricObjects || layer.fabricObjects.length === 0) {
|
if (!layer.fabricObjects || layer.fabricObjects.length === 0) {
|
||||||
Modal.warning({
|
Modal.warning({
|
||||||
title: "图层为空",
|
title: this.t('Canvas.layerEmpty'),
|
||||||
content: "图层为空,无法进行液化操作",
|
content: this.t('Canvas.layerEmptyNoLiquidation'),
|
||||||
okText: "确定",
|
okText: this.t('Canvas.ok'),
|
||||||
centered: true,
|
centered: true,
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
@@ -906,9 +906,9 @@ export class ToolManager {
|
|||||||
const liquifyManager = this.canvasManager?.liquifyManager;
|
const liquifyManager = this.canvasManager?.liquifyManager;
|
||||||
if (!liquifyManager) {
|
if (!liquifyManager) {
|
||||||
Modal.error({
|
Modal.error({
|
||||||
title: "液化管理器错误",
|
title: this.t('Canvas.liqueficationManagerError'),
|
||||||
content: "液化管理器未初始化",
|
content: this.t('Canvas.liqueficationManagerErrorInitialized'),
|
||||||
okText: "确定",
|
okText: this.t('Canvas.ok'),
|
||||||
centered: true,
|
centered: true,
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
@@ -917,8 +917,8 @@ export class ToolManager {
|
|||||||
try {
|
try {
|
||||||
// 显示准备中的Modal
|
// 显示准备中的Modal
|
||||||
const preparingModal = Modal.info({
|
const preparingModal = Modal.info({
|
||||||
title: "准备液化环境",
|
title: this.t('Canvas.liquefactionEnvironment'),
|
||||||
content: "正在准备液化环境,请稍候...",
|
content: this.t('Canvas.liquefactionEnvironmentLoading'),
|
||||||
okButtonProps: { style: { display: "none" } },
|
okButtonProps: { style: { display: "none" } },
|
||||||
centered: true,
|
centered: true,
|
||||||
closable: false,
|
closable: false,
|
||||||
@@ -963,9 +963,9 @@ export class ToolManager {
|
|||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("启动液化工具失败:", error);
|
console.error("启动液化工具失败:", error);
|
||||||
Modal.error({
|
Modal.error({
|
||||||
title: "液化工具启动失败",
|
title: this.t('Canvas.LiqueficationFailed'),
|
||||||
content: `启动液化工具失败:${error.message}`,
|
content: `${this.t('Canvas.LiqueficationFailed')}:${error.message}`,
|
||||||
okText: "确定",
|
okText: this.t('Canvas.ok'),
|
||||||
centered: true,
|
centered: true,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -1041,7 +1041,7 @@ export class ToolManager {
|
|||||||
_createTextDirect(x, y, options = {}) {
|
_createTextDirect(x, y, options = {}) {
|
||||||
// 默认文本属性
|
// 默认文本属性
|
||||||
const defaultOptions = {
|
const defaultOptions = {
|
||||||
text: "双击编辑文本",
|
text: this.t('Canvas.DoubleClickText'),
|
||||||
fontFamily: "Arial",
|
fontFamily: "Arial",
|
||||||
fontSize: 24,
|
fontSize: 24,
|
||||||
fontWeight: "normal",
|
fontWeight: "normal",
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
:enabledRedGreenMode="true"
|
:enabledRedGreenMode="true"
|
||||||
:clothingImageUrl="imageUrls.baseImage"
|
:clothingImageUrl="imageUrls.baseImage"
|
||||||
:redGreenImageUrl="imageUrls.maskImage"
|
:redGreenImageUrl="imageUrls.maskImage"
|
||||||
|
@trigger-red-green-mouseup="frontBackChange"
|
||||||
:clothingImageOpts="{ imageMode: 'contains' }"
|
:clothingImageOpts="{ imageMode: 'contains' }"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@@ -51,6 +52,9 @@ const loadJSON = () => {
|
|||||||
const changeFixedImage = () => {
|
const changeFixedImage = () => {
|
||||||
canvasEditor.value.changeFixedImage(changeImageUrl);
|
canvasEditor.value.changeFixedImage(changeImageUrl);
|
||||||
};
|
};
|
||||||
|
const frontBackChange = (value) =>{
|
||||||
|
console.log(value)
|
||||||
|
}
|
||||||
|
|
||||||
// 组件挂载时绑定键盘事件
|
// 组件挂载时绑定键盘事件
|
||||||
onMounted(() => {});
|
onMounted(() => {});
|
||||||
|
|||||||
@@ -213,6 +213,7 @@ export default defineComponent({
|
|||||||
setRevocation()
|
setRevocation()
|
||||||
detailData.loadingShow = false
|
detailData.loadingShow = false
|
||||||
if(rv.singleOverall == "single"){
|
if(rv.singleOverall == "single"){
|
||||||
|
console.log(rv.clothes)
|
||||||
store.commit('DesignDetail/setDesignColthes',rv.clothes[0].id)
|
store.commit('DesignDetail/setDesignColthes',rv.clothes[0].id)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -521,7 +522,7 @@ export default defineComponent({
|
|||||||
</script>
|
</script>
|
||||||
<style lang="less" scoped>
|
<style lang="less" scoped>
|
||||||
:deep(.detailText){
|
:deep(.detailText){
|
||||||
font-size: 1.8rem;
|
font-size: 1.6rem;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -566,6 +567,7 @@ export default defineComponent({
|
|||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
&.detailLeft{
|
&.detailLeft{
|
||||||
width: 34rem;
|
width: 34rem;
|
||||||
|
// width: 34rem;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -185,12 +185,55 @@ export default defineComponent({
|
|||||||
img.src = url
|
img.src = url
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const resizeImageWithNativeCanvas = async (image1Url, imageBUrl)=>{
|
||||||
|
try {
|
||||||
|
// 加载第一张图片获取尺寸
|
||||||
|
const img1 = await loadImage(image1Url);
|
||||||
|
const targetWidth = img1.naturalWidth;
|
||||||
|
const targetHeight = img1.naturalHeight;
|
||||||
|
|
||||||
|
// 加载第二张图片
|
||||||
|
const imgB = await loadImage(imageBUrl);
|
||||||
|
|
||||||
|
// 创建canvas元素
|
||||||
|
const canvas = document.createElement('canvas');
|
||||||
|
canvas.width = targetWidth;
|
||||||
|
canvas.height = targetHeight;
|
||||||
|
const ctx = canvas.getContext('2d');
|
||||||
|
|
||||||
|
// 绘制调整尺寸后的图片
|
||||||
|
ctx.drawImage(imgB, 0, 0, targetWidth, targetHeight);
|
||||||
|
|
||||||
|
// 导出base64
|
||||||
|
const base64 = canvas.toDataURL('image/png', 1);
|
||||||
|
|
||||||
|
return base64;
|
||||||
|
} catch (error) {
|
||||||
|
console.error('处理图片时出错:', error);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 图片加载辅助函数
|
||||||
|
const loadImage = (url)=>{
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
const img = new Image();
|
||||||
|
img.crossOrigin = 'anonymous';
|
||||||
|
img.onload = () => resolve(img);
|
||||||
|
img.onerror = reject;
|
||||||
|
img.src = url;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
const frontBackChange = (value:any)=>{
|
const frontBackChange = (value:any)=>{
|
||||||
let full = detailData.frontBack.front[detailData.imgDomIndex].undividedLayer || detailData.selectDetail.path
|
let full = detailData.frontBack.front[detailData.imgDomIndex].undividedLayer || detailData.selectDetail.path
|
||||||
let size = {
|
let size = {
|
||||||
...detailData.canvasConfig,
|
...detailData.canvasConfig,
|
||||||
}
|
}
|
||||||
segmentImage(value,full,size).then((rv)=>{
|
|
||||||
|
segmentImage(value,full,size).then(async (rv)=>{
|
||||||
let front = detailData.frontBack.front[detailData.imgDomIndex]
|
let front = detailData.frontBack.front[detailData.imgDomIndex]
|
||||||
let back = detailData.frontBack.back[detailData.imgDomIndex]
|
let back = detailData.frontBack.back[detailData.imgDomIndex]
|
||||||
if(!front?.oldImageUrl)front.oldImageUrl = front.imageUrl
|
if(!front?.oldImageUrl)front.oldImageUrl = front.imageUrl
|
||||||
@@ -199,7 +242,8 @@ export default defineComponent({
|
|||||||
if(!front?.oldMaskUrl)store.commit('DesignDetail/updataDetailItem',{maskUrl:front.oldMaskUrl})
|
if(!front?.oldMaskUrl)store.commit('DesignDetail/updataDetailItem',{maskUrl:front.oldMaskUrl})
|
||||||
|
|
||||||
front.imageUrl = rv.targetFrontUrl
|
front.imageUrl = rv.targetFrontUrl
|
||||||
front.maskUrl = value
|
let base64 = await resizeImageWithNativeCanvas(front.oldMaskUrl,value)
|
||||||
|
front.maskUrl = base64
|
||||||
back.imageUrl = rv.targetBackUrl
|
back.imageUrl = rv.targetBackUrl
|
||||||
store.commit('DesignDetail/updataDetailItem',{maskUrl:value})
|
store.commit('DesignDetail/updataDetailItem',{maskUrl:value})
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -143,7 +143,7 @@ export default defineComponent({
|
|||||||
sketchWH:{
|
sketchWH:{
|
||||||
width:0,
|
width:0,
|
||||||
height:0,
|
height:0,
|
||||||
scale:0,
|
scale:[1,1],
|
||||||
},
|
},
|
||||||
loadingShow:false,
|
loadingShow:false,
|
||||||
printElementList:null as any,
|
printElementList:null as any,
|
||||||
@@ -187,8 +187,8 @@ export default defineComponent({
|
|||||||
|
|
||||||
let scale = [width / editPrintElementData.sketchWH.width,height]
|
let scale = [width / editPrintElementData.sketchWH.width,height]
|
||||||
|
|
||||||
let sketchW = editPrintElementData.sketchWH.width * editPrintElementData.sketchWH.scale
|
let sketchW = editPrintElementData.sketchWH.width * editPrintElementData.sketchWH.scale[0]
|
||||||
let sketchH = editPrintElementData.sketchWH.height * editPrintElementData.sketchWH.scale
|
let sketchH = editPrintElementData.sketchWH.height * editPrintElementData.sketchWH.scale[1]
|
||||||
let x = sketchW / 2 - (sketchW * (width / editPrintElementData.sketchWH.width)/2)
|
let x = sketchW / 2 - (sketchW * (width / editPrintElementData.sketchWH.width)/2)
|
||||||
let y = sketchH / 2 -(sketchH * height/2)
|
let y = sketchH / 2 -(sketchH * height/2)
|
||||||
if(!editPrintElementData.stateOverallSingle == 'single'){
|
if(!editPrintElementData.stateOverallSingle == 'single'){
|
||||||
@@ -226,12 +226,12 @@ export default defineComponent({
|
|||||||
let style = item.pattern.style
|
let style = item.pattern.style
|
||||||
let sketchWH = editPrintElementData.sketchWH.scale
|
let sketchWH = editPrintElementData.sketchWH.scale
|
||||||
if(item.ifSingle){
|
if(item.ifSingle){
|
||||||
scale = [style.width.replace(/px/g,'')/editPrintElementData.sketchWH.width,(style.height.replace(/px/g,'')/editPrintElementData.sketchWH.height)]
|
scale = [style.width.replace(/px/g,'')/(editPrintElementData.sketchWH.width),(style.height.replace(/px/g,'')/(editPrintElementData.sketchWH.height))]
|
||||||
location = [style.left.replace(/px/g,'')*sketchWH,style.top.replace(/px/g,'')*sketchWH]
|
location = [style.left.replace(/px/g,'')*sketchWH[0],style.top.replace(/px/g,'')*sketchWH[1]]
|
||||||
}else{
|
}else{
|
||||||
let x = Number(style.left.replace(/px/g,''))
|
let x = Number(style.left.replace(/px/g,''))
|
||||||
let y = Number(style.top.replace(/px/g,''))
|
let y = Number(style.top.replace(/px/g,''))
|
||||||
location = [(x*sketchWH) ,(y*sketchWH)]
|
location = [(x*sketchWH[0]) ,(y*sketchWH[1])]
|
||||||
scale =[ editPrintElementData.systemDesignerPercentage/100, editPrintElementData.systemDesignerPercentage/100]
|
scale =[ editPrintElementData.systemDesignerPercentage/100, editPrintElementData.systemDesignerPercentage/100]
|
||||||
// scale = [item.pattern.style.width/item.pattern.style.height,item.pattern.style.height/item.pattern.style.width]
|
// scale = [item.pattern.style.width/item.pattern.style.height,item.pattern.style.height/item.pattern.style.width]
|
||||||
// location = [item.pattern.style.left,item.pattern.style.top]
|
// location = [item.pattern.style.left,item.pattern.style.top]
|
||||||
@@ -283,13 +283,13 @@ export default defineComponent({
|
|||||||
|
|
||||||
if(item.ifSingle){
|
if(item.ifSingle){
|
||||||
//single
|
//single
|
||||||
left = item.location[0] / editPrintElementData.sketchWH.scale
|
left = item.location[0] / editPrintElementData.sketchWH.scale[0]
|
||||||
top = item.location[1] / editPrintElementData.sketchWH.scale
|
top = item.location[1] / editPrintElementData.sketchWH.scale[1]
|
||||||
}else{
|
}else{
|
||||||
//overall
|
//overall
|
||||||
editPrintElementData.systemDesignerPercentage = item.scale[0]*1000
|
editPrintElementData.systemDesignerPercentage = item.scale[0]*1000
|
||||||
left = item.location[0] / editPrintElementData.sketchWH.scale
|
left = item.location[0] / editPrintElementData.sketchWH.scale[0]
|
||||||
top = item.location[1] / editPrintElementData.sketchWH.scale
|
top = item.location[1] / editPrintElementData.sketchWH.scale[1]
|
||||||
editPrintElementData.systemDesignerPercentage = item.scale?.[0]?item.scale[0]*100:30
|
editPrintElementData.systemDesignerPercentage = item.scale?.[0]?item.scale[0]*100:30
|
||||||
}
|
}
|
||||||
let pattern = {
|
let pattern = {
|
||||||
@@ -322,11 +322,15 @@ export default defineComponent({
|
|||||||
nextTick(()=>{
|
nextTick(()=>{
|
||||||
let img = new Image
|
let img = new Image
|
||||||
img.onload = ()=>{
|
img.onload = ()=>{
|
||||||
let scale = img.width / editPrintElementDom.sketchImg.offsetWidth
|
// let sketchScale = editPrintElementData.selectDetail.layersObject[0].scale
|
||||||
|
let sketchScale = [1,1]
|
||||||
|
let scaleX = img.width * sketchScale[0] / editPrintElementDom.sketchImg.offsetWidth
|
||||||
|
let scaleY = img.height * sketchScale[1] / editPrintElementDom.sketchImg.offsetHeight
|
||||||
|
|
||||||
editPrintElementData.sketchWH = {
|
editPrintElementData.sketchWH = {
|
||||||
width:editPrintElementDom.sketchImg.offsetWidth,
|
width:editPrintElementDom.sketchImg.offsetWidth,
|
||||||
height:editPrintElementDom.sketchImg.offsetHeight,
|
height:editPrintElementDom.sketchImg.offsetHeight,
|
||||||
scale,
|
scale:[scaleX,scaleY],
|
||||||
}
|
}
|
||||||
if(!editPrintElementData.selectDetail.printObject.prints)return
|
if(!editPrintElementData.selectDetail.printObject.prints)return
|
||||||
let state = true
|
let state = true
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="modelNavBox" :class="{'modelNavBox_active':designDetail.clothes.length == 5}">
|
<div class="modelNavBox" ref="modelNavBox" :class="{'modelNavBox_active':designDetail.clothes.length == 5}">
|
||||||
<div class="modelNav" ref="modelNav" :style="{height:prentHeight}">
|
<div class="modelNav" ref="modelNav" :style="{height:prentHeight}">
|
||||||
<div class="modelNav_item item"
|
<div class="modelNav_item item"
|
||||||
v-for="item,index in designDetail.clothes"
|
v-for="item,index in designDetail.clothes"
|
||||||
@@ -45,6 +45,7 @@ export default defineComponent({
|
|||||||
singleOveral:inject('singleOveral') as any,
|
singleOveral:inject('singleOveral') as any,
|
||||||
getCanvasIfEdit:inject('getCanvasIfEdit')as any,
|
getCanvasIfEdit:inject('getCanvasIfEdit')as any,
|
||||||
modelNav:null as any,
|
modelNav:null as any,
|
||||||
|
modelNavBox:null as any,
|
||||||
})
|
})
|
||||||
const collItemSize = reactive({
|
const collItemSize = reactive({
|
||||||
collValue:18,
|
collValue:18,
|
||||||
@@ -237,12 +238,18 @@ export default defineComponent({
|
|||||||
collItemSize.prentHeight = (collItemSize.padding + remValue) * elArr.length + 'px'
|
collItemSize.prentHeight = (collItemSize.padding + remValue) * elArr.length + 'px'
|
||||||
moveItem()
|
moveItem()
|
||||||
}
|
}
|
||||||
|
let observers = null as any
|
||||||
onMounted(()=>{
|
onMounted(()=>{
|
||||||
|
observers = new ResizeObserver(entries => {
|
||||||
|
for (let entry of entries) {
|
||||||
|
setItemPosition()
|
||||||
|
}
|
||||||
|
});
|
||||||
|
observers.observe(detailData.modelNavBox);
|
||||||
|
})
|
||||||
|
onBeforeUnmount(()=>{
|
||||||
|
observers.disconnect();
|
||||||
})
|
})
|
||||||
// onBeforeUnmount(()=>{
|
|
||||||
// detailData.selectIndex = -1
|
|
||||||
// })
|
|
||||||
return{
|
return{
|
||||||
...toRefs(detailData),
|
...toRefs(detailData),
|
||||||
...toRefs(collItemSize),
|
...toRefs(collItemSize),
|
||||||
|
|||||||
@@ -83,7 +83,10 @@ export default defineComponent({
|
|||||||
if(!detailData.frontBack?.body?.path || !dom)return
|
if(!detailData.frontBack?.body?.path || !dom)return
|
||||||
img.onload = () => {
|
img.onload = () => {
|
||||||
if(!detailData.selectDetail?.id){
|
if(!detailData.selectDetail?.id){
|
||||||
store.commit('DesignDetail/setDesignColthes',detailData.designDetail.clothes[0].id)
|
let item = detailData.designDetail.clothes.reduce((max, current) => {
|
||||||
|
return current.priority > max.priority ? current : max;
|
||||||
|
});
|
||||||
|
store.commit('DesignDetail/setDesignColthes',item.id)
|
||||||
}
|
}
|
||||||
// resolve(img)
|
// resolve(img)
|
||||||
sacle = dom.parentNode.offsetWidth / img.width
|
sacle = dom.parentNode.offsetWidth / img.width
|
||||||
|
|||||||
@@ -468,6 +468,7 @@ export default defineComponent({
|
|||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
display: flex;
|
display: flex;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
font-size: 1.8rem;
|
||||||
}
|
}
|
||||||
.fi::before{
|
.fi::before{
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="Container">
|
<div class="Container">
|
||||||
<!-- 谷歌登录 -->
|
<!-- 谷歌登录 -->
|
||||||
<!-- <div class="g_id_signin" id="g_id_signin">
|
<div class="g_id_signin" id="g_id_signin">
|
||||||
</div> -->
|
</div>
|
||||||
<div class="icon" @click="toGmailLogin" style="opacity: .7;">
|
<div class="icon">
|
||||||
|
<!-- <div class="icon" @click="toGmailLogin"> -->
|
||||||
<img src="@/assets/images/loginPage/gmailIcon.svg" alt="">
|
<img src="@/assets/images/loginPage/gmailIcon.svg" alt="">
|
||||||
<span>{{ $props.text }}</span>
|
<span>{{ $props.text }}</span>
|
||||||
</div>
|
</div>
|
||||||
@@ -27,6 +28,17 @@
|
|||||||
const {t} = useI18n()
|
const {t} = useI18n()
|
||||||
const handleCredentialResponse = async (response) => {
|
const handleCredentialResponse = async (response) => {
|
||||||
// 获取回调响应的凭证数据 然后拿这个凭证给后台,后台jwt进行解析获取登录信息
|
// 获取回调响应的凭证数据 然后拿这个凭证给后台,后台jwt进行解析获取登录信息
|
||||||
|
console.log("Encoded JWT ID token: " + response.credential);
|
||||||
|
const responsePayload = decodeJWT(response.credential);
|
||||||
|
console.log("Decoded JWT ID token fields:");
|
||||||
|
console.log(" Full Name: " + responsePayload.name);
|
||||||
|
console.log(" Given Name: " + responsePayload.given_name);
|
||||||
|
console.log(" Family Name: " + responsePayload.family_name);
|
||||||
|
console.log(" Unique ID: " + responsePayload.sub);
|
||||||
|
console.log(" Profile image URL: " + responsePayload.picture);
|
||||||
|
console.log(" Email: " + responsePayload.email);
|
||||||
|
|
||||||
|
|
||||||
let code = response.credential
|
let code = response.credential
|
||||||
emit('googelLogin',code)
|
emit('googelLogin',code)
|
||||||
window.isAddGmail = false
|
window.isAddGmail = false
|
||||||
@@ -36,10 +48,10 @@
|
|||||||
scriptSrc:'https://accounts.google.com/gsi/client',
|
scriptSrc:'https://accounts.google.com/gsi/client',
|
||||||
script:null
|
script:null
|
||||||
})
|
})
|
||||||
console.log()
|
console.log(import.meta.env.VITE_USER_NODE_ENV)
|
||||||
let GOOGLE_CLIENT_ID
|
let GOOGLE_CLIENT_ID
|
||||||
if(import.meta.env.VITE_USER_NODE_ENV == 'development'){
|
if(import.meta.env.VITE_USER_NODE_ENV == 'development'){
|
||||||
GOOGLE_CLIENT_ID = '29310152396-c44dcsoksjirhn7vbo29p8u8n0sg4qps.apps.googleusercontent.com'
|
GOOGLE_CLIENT_ID = '157095842121-kdd1fdf8m8nudvj9sprstb2k2prnf9e4.apps.googleusercontent.com'
|
||||||
}else{
|
}else{
|
||||||
GOOGLE_CLIENT_ID = '29310152396-nnsd3h533fld665oguu8ovrt1nukmt46.apps.googleusercontent.com'
|
GOOGLE_CLIENT_ID = '29310152396-nnsd3h533fld665oguu8ovrt1nukmt46.apps.googleusercontent.com'
|
||||||
}
|
}
|
||||||
@@ -79,7 +91,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
const toGmailLogin = ()=>{
|
const toGmailLogin = ()=>{
|
||||||
console.log(12312)
|
|
||||||
message.info(t('account.canNotUtilize'))
|
message.info(t('account.canNotUtilize'))
|
||||||
}
|
}
|
||||||
onBeforeUnmount(()=>{
|
onBeforeUnmount(()=>{
|
||||||
@@ -90,7 +101,7 @@
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
onMounted(()=>{
|
onMounted(()=>{
|
||||||
// createGmailLogin()
|
createGmailLogin()
|
||||||
})
|
})
|
||||||
return {
|
return {
|
||||||
toGmailLogin,
|
toGmailLogin,
|
||||||
@@ -135,7 +146,7 @@
|
|||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
position: relative;
|
position: relative;
|
||||||
background: transparent;
|
background: transparent;
|
||||||
// pointer-events: none;
|
pointer-events: none;
|
||||||
background-color: #f5f5f5;
|
background-color: #f5f5f5;
|
||||||
@media (max-width: 768px) {
|
@media (max-width: 768px) {
|
||||||
border-radius: 2.5rem;
|
border-radius: 2.5rem;
|
||||||
|
|||||||
@@ -368,6 +368,8 @@ export default defineComponent({
|
|||||||
email: this.forgetPasswordEmail,
|
email: this.forgetPasswordEmail,
|
||||||
operationType: "FORGET_PWD",
|
operationType: "FORGET_PWD",
|
||||||
};
|
};
|
||||||
|
this.frogetPasswordStep = 2;
|
||||||
|
(this.forgetEmailCode = ["", "", "", "", "", ""]), this.createTimer();
|
||||||
Https.axiosPost(Https.httpUrls.accountSendEmail, data).then((rv: any) => {
|
Https.axiosPost(Https.httpUrls.accountSendEmail, data).then((rv: any) => {
|
||||||
if (rv) {
|
if (rv) {
|
||||||
this.frogetPasswordStep = 2;
|
this.frogetPasswordStep = 2;
|
||||||
@@ -895,6 +897,7 @@ export default defineComponent({
|
|||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
color: #030303;
|
color: #030303;
|
||||||
margin-top: 3.5rem;
|
margin-top: 3.5rem;
|
||||||
|
text-align: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
.forget_submit_button {
|
.forget_submit_button {
|
||||||
|
|||||||
@@ -98,7 +98,11 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="login_text" v-show="emailStap !== 2">
|
||||||
|
<div class="forget_password_text" @click="changeIsLogin(2)">
|
||||||
|
Forgot your password
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="login_form_title marign_top30">
|
<div class="login_form_title marign_top30">
|
||||||
<label :class="{ active: emailStap == 2 }">
|
<label :class="{ active: emailStap == 2 }">
|
||||||
<input :state="emailStap" type="checkbox" v-model="checked" />
|
<input :state="emailStap" type="checkbox" v-model="checked" />
|
||||||
@@ -912,6 +916,7 @@ export default defineComponent({
|
|||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
color: #030303;
|
color: #030303;
|
||||||
margin-top: 3.5rem;
|
margin-top: 3.5rem;
|
||||||
|
text-align: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
.forget_submit_button {
|
.forget_submit_button {
|
||||||
|
|||||||
@@ -113,7 +113,7 @@
|
|||||||
<img v-for="item in scaleImageData?.designPythonOutfitList" v-lazy="item.designUrl">
|
<img v-for="item in scaleImageData?.designPythonOutfitList" v-lazy="item.designUrl">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="userDetail.systemList.indexOf(1) > -1 && scaleImageData.isMine != 1 && scaleImageData.selected != 1" class="started_btn" @click="setChoose" >{{$t('newScaleImage.SecondaryCreation')}}</div>
|
<div v-if="userDetail.systemList.indexOf(1) > -1 && scaleImageData.isMine != 1 && scaleImageData.selected != 1 && scaleImageData.openSource != 0" class="started_btn" @click="setChoose" >{{$t('newScaleImage.SecondaryCreation')}}</div>
|
||||||
<!-- <div v-if="systemUser.value == 1 && scaleImageData.isMine != 1 && scaleImageData.selected != 1" class="started_btn" @click="setChoose" :title="systemUser.value != 1?$t('newScaleImage.jsContent1'): scaleImageData.openSource == 0?$t('newScaleImage.jsContent2'):''" :class="{active:systemUser.value != 1?true:scaleImageData.openSource == 0}">{{$t('newScaleImage.SecondaryCreation')}}</div> -->
|
<!-- <div v-if="systemUser.value == 1 && scaleImageData.isMine != 1 && scaleImageData.selected != 1" class="started_btn" @click="setChoose" :title="systemUser.value != 1?$t('newScaleImage.jsContent1'): scaleImageData.openSource == 0?$t('newScaleImage.jsContent2'):''" :class="{active:systemUser.value != 1?true:scaleImageData.openSource == 0}">{{$t('newScaleImage.SecondaryCreation')}}</div> -->
|
||||||
</div>
|
</div>
|
||||||
<div v-else class="newScaleImage_right_content_generate">
|
<div v-else class="newScaleImage_right_content_generate">
|
||||||
@@ -279,7 +279,7 @@ import fullScreenImg from '@/component/HomePage/fullScreenImg.vue'
|
|||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
components:{fullScreenImg},
|
components:{fullScreenImg},
|
||||||
emits:['deletePorfolio'],
|
emits:['deletePorfolio','uploadLikeAndLook'],
|
||||||
setup(props:any,{emit}) {
|
setup(props:any,{emit}) {
|
||||||
let {t} = useI18n()
|
let {t} = useI18n()
|
||||||
//首先在setup中定义
|
//首先在setup中定义
|
||||||
@@ -332,6 +332,7 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
scaleImage.value = false
|
scaleImage.value = false
|
||||||
imgData.scaleImageIndex = 0
|
imgData.scaleImageIndex = 0
|
||||||
|
emit('uploadLikeAndLook',imgData.scaleImageData)
|
||||||
imgData.scaleImageData = {}
|
imgData.scaleImageData = {}
|
||||||
imgData.commentText = ''
|
imgData.commentText = ''
|
||||||
imgData.scaleImageList = []
|
imgData.scaleImageList = []
|
||||||
|
|||||||
@@ -251,7 +251,7 @@ import 'swiper/css';
|
|||||||
import { Pagination } from 'swiper/modules';
|
import { Pagination } from 'swiper/modules';
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
components:{fullScreenImg,Swiper,SwiperSlide},
|
components:{fullScreenImg,Swiper,SwiperSlide},
|
||||||
emits:['deletePorfolio','bbb'],
|
emits:['deletePorfolio','uploadLikeAndLook'],
|
||||||
setup(props:any,{emit}) {
|
setup(props:any,{emit}) {
|
||||||
let {t} = useI18n()
|
let {t} = useI18n()
|
||||||
//首先在setup中定义
|
//首先在setup中定义
|
||||||
@@ -304,6 +304,7 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
scaleImage.value = false
|
scaleImage.value = false
|
||||||
imgData.scaleImageIndex = 0
|
imgData.scaleImageIndex = 0
|
||||||
|
emit('uploadLikeAndLook',imgData.scaleImageData)
|
||||||
imgData.scaleImageData = {}
|
imgData.scaleImageData = {}
|
||||||
imgData.commentText = ''
|
imgData.commentText = ''
|
||||||
imgData.scaleImageList = []
|
imgData.scaleImageList = []
|
||||||
|
|||||||
@@ -285,6 +285,7 @@ export default defineComponent({
|
|||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
display: flex;
|
display: flex;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
font-size: 1.8rem;
|
||||||
}
|
}
|
||||||
.fi::before{
|
.fi::before{
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
|
|||||||
@@ -41,7 +41,7 @@
|
|||||||
<div class="center">{{ selectObject?.styleName?selectObject?.styleName:'All' }}</div>
|
<div class="center">{{ selectObject?.styleName?selectObject?.styleName:'All' }}</div>
|
||||||
<div class="gallery_btn" @click="setStyle">{{ $t('Habit.Select') }}</div>
|
<div class="gallery_btn" @click="setStyle">{{ $t('Habit.Select') }}</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- <div class="style brand marginBottom">
|
<div class="style brand marginBottom">
|
||||||
<div class="text">{{$t('Habit.Brand')}}:</div>
|
<div class="text">{{$t('Habit.Brand')}}:</div>
|
||||||
<div class="gallery_btn" @click="setBrandDNA">{{ $t('Habit.Select') }}</div>
|
<div class="gallery_btn" @click="setBrandDNA">{{ $t('Habit.Select') }}</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -56,7 +56,7 @@
|
|||||||
:tip-formatter="formatterBrandDNA"
|
:tip-formatter="formatterBrandDNA"
|
||||||
>
|
>
|
||||||
</a-slider>
|
</a-slider>
|
||||||
</div> -->
|
</div>
|
||||||
<div class="position marginBottom" v-show="show.position" v-if="httpWorkflowType == 'SINGLE_DESIGN'">
|
<div class="position marginBottom" v-show="show.position" v-if="httpWorkflowType == 'SINGLE_DESIGN'">
|
||||||
<div class="text">
|
<div class="text">
|
||||||
{{$t('Habit.Category')}}:
|
{{$t('Habit.Category')}}:
|
||||||
|
|||||||
@@ -408,9 +408,14 @@ export default defineComponent({
|
|||||||
if(res.errCode == 0){
|
if(res.errCode == 0){
|
||||||
file.imgUrl = res.data.url;
|
file.imgUrl = res.data.url;
|
||||||
file.id = res.data.id
|
file.id = res.data.id
|
||||||
data.fileList.forEach((listItem:any)=>listItem.isChecked = false)
|
data.fileList.forEach((listItem:any)=>{
|
||||||
|
if(listItem.id == file.id){
|
||||||
|
listItem.isChecked = true
|
||||||
|
}else{
|
||||||
|
listItem.isChecked = false
|
||||||
|
}
|
||||||
|
})
|
||||||
data.currentList.forEach((listItem:any)=>listItem.isChecked = false)
|
data.currentList.forEach((listItem:any)=>listItem.isChecked = false)
|
||||||
file.isChecked = true
|
|
||||||
file.type = 'ProductElement'
|
file.type = 'ProductElement'
|
||||||
// if(props.productimgMenu.value == 'Relight'){
|
// if(props.productimgMenu.value == 'Relight'){
|
||||||
// file.type = "ToProductImage"
|
// file.type = "ToProductImage"
|
||||||
|
|||||||
@@ -810,6 +810,7 @@ export default {
|
|||||||
jsContent10: "请输入姓",
|
jsContent10: "请输入姓",
|
||||||
jsContent11: "请输入名字",
|
jsContent11: "请输入名字",
|
||||||
jsContent12: "邮箱格式不正确",
|
jsContent12: "邮箱格式不正确",
|
||||||
|
jsContent13: "保存成功~",
|
||||||
},
|
},
|
||||||
frontPage: {
|
frontPage: {
|
||||||
BindWechat: "绑定微信",
|
BindWechat: "绑定微信",
|
||||||
@@ -1283,6 +1284,27 @@ export default {
|
|||||||
help:'帮助',
|
help:'帮助',
|
||||||
back:'返回',
|
back:'返回',
|
||||||
confirm:'确定',
|
confirm:'确定',
|
||||||
|
RasterizedLayer:'栅格化图层',
|
||||||
|
rasterizeImmediately:'需要先栅格化才能进行液化操作,是否立即栅格化?',
|
||||||
|
ConfirmRasterization:'确定栅格化',
|
||||||
|
beingRasterized:'正在栅格化',
|
||||||
|
waitRasterizing:'正在栅格化图层,请稍候...',
|
||||||
|
successRasterizing:'图层已成功栅格化,可以进行液化操作',
|
||||||
|
gridingFailed:'栅格化失败',
|
||||||
|
gridingFailedNoOperation:'栅格化失败,无法进行液化操作',
|
||||||
|
gridingError:'栅格化错误',
|
||||||
|
LayerError:'图层错误',
|
||||||
|
LayerDoesNotExist:'图层不存在',
|
||||||
|
backgroundEmpty:'背景图层为空',
|
||||||
|
backgroundEmptyNoliquidation:'背景图层为空,无法进行液化操作',
|
||||||
|
layerEmpty:'图层为空',
|
||||||
|
layerEmptyNoLiquidation:'图层为空,无法进行液化操作',
|
||||||
|
liqueficationManagerError:'液化管理器失败',
|
||||||
|
liqueficationManagerErrorInitialized:'液化初始化失败',
|
||||||
|
liquefactionEnvironment:'准备液化环境',
|
||||||
|
liquefactionEnvironmentLoading:'正在准备液化环境,请稍候...',
|
||||||
|
LiqueficationFailed:'液化工具启动失败',
|
||||||
|
DoubleClickText:'双击编辑文本',
|
||||||
},
|
},
|
||||||
speedList:{
|
speedList:{
|
||||||
High:'高级',
|
High:'高级',
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
import { en } from "element-plus/es/locales.mjs";
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
Header: {
|
Header: {
|
||||||
hello: "hello",
|
hello: "hello",
|
||||||
@@ -812,6 +810,7 @@ export default {
|
|||||||
jsContent10: "Please enter surname",
|
jsContent10: "Please enter surname",
|
||||||
jsContent11: "Please enter givenName",
|
jsContent11: "Please enter givenName",
|
||||||
jsContent12: "The email format is incorrect",
|
jsContent12: "The email format is incorrect",
|
||||||
|
jsContent13: "Save successfully~",
|
||||||
},
|
},
|
||||||
frontPage: {
|
frontPage: {
|
||||||
BindWechat: "Bind Wechat",
|
BindWechat: "Bind Wechat",
|
||||||
@@ -1285,6 +1284,27 @@ export default {
|
|||||||
help:'Help',
|
help:'Help',
|
||||||
back:'Back',
|
back:'Back',
|
||||||
confirm:'Confirm',
|
confirm:'Confirm',
|
||||||
|
RasterizedLayer:'Rasterized Layer',
|
||||||
|
rasterizeImmediately:'You need to rasterize first before performing the distortion operation. Do you want to rasterize immediately?',
|
||||||
|
ConfirmRasterization:'Confirm Rasterization',
|
||||||
|
beingRasterized:'Currently, it is being rasterized.',
|
||||||
|
waitRasterizing:'Rasterizing the layer. Please wait...',
|
||||||
|
successRasterizing:'The layer has been successfully rasterized and can now undergo the distortion operation.',
|
||||||
|
gridingFailed:'Griding Failed',
|
||||||
|
gridingFailedNoOperation:'Griding failed. Unable to perform the liquefaction operation.',
|
||||||
|
gridingError:'Griding Error',
|
||||||
|
LayerError:'Layer Error',
|
||||||
|
LayerDoesNotExist:'The layer does not exist.',
|
||||||
|
backgroundEmpty:'The background layer is empty.',
|
||||||
|
backgroundEmptyNoLiquidation:'The background layer is empty, so the liquidation operation cannot be performed.',
|
||||||
|
layerEmpty:'The layer is empty.',
|
||||||
|
layerEmptyNoLiquidation:'The layer is empty and cannot perform the liquefaction operation.',
|
||||||
|
liqueficationManagerError:'Liquefication Manager Error',
|
||||||
|
liqueficationManagerErrorInitialized:'The liquefaction manager has not been initialized.',
|
||||||
|
liquefactionEnvironment:'Prepare for the liquefaction environment',
|
||||||
|
liquefactionEnvironmentLoading:'The liquefaction environment is being prepared. Please wait a moment...',
|
||||||
|
LiqueficationFailed:'Liquefication tool failed to start.',
|
||||||
|
DoubleClickText:'Double-click to edit the text',
|
||||||
},
|
},
|
||||||
speedList:{
|
speedList:{
|
||||||
High:'High',
|
High:'High',
|
||||||
|
|||||||
@@ -340,12 +340,12 @@ const navTypeList = (t)=>{
|
|||||||
value:'Models',
|
value:'Models',
|
||||||
router:'library=Models'
|
router:'library=Models'
|
||||||
},
|
},
|
||||||
// {
|
{
|
||||||
// icon:'fi-ss-gem',
|
icon:'fi-ss-gem',
|
||||||
// label:t('LibraryPage.brandDNA'),
|
label:t('LibraryPage.brandDNA'),
|
||||||
// value:'MyBrand',
|
value:'MyBrand',
|
||||||
// router:'library=MyBrand'
|
router:'library=MyBrand'
|
||||||
// },
|
},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
// history:{
|
// history:{
|
||||||
|
|||||||
@@ -20,8 +20,8 @@
|
|||||||
<img v-show="isNoData && isNull" src="@/assets/images/homePage/null_img.png">
|
<img v-show="isNoData && isNull" src="@/assets/images/homePage/null_img.png">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<newScaleImage ref="newScaleImage" @deletePorfolio="deletePorfolio"></newScaleImage>
|
<newScaleImage ref="newScaleImage" @deletePorfolio="deletePorfolio" @uploadLikeAndLook="uploadLikeAndLook"></newScaleImage>
|
||||||
<newScaleImageMobile ref="newScaleImageMobile" @deletePorfolio="deletePorfolio"></newScaleImageMobile>
|
<newScaleImageMobile ref="newScaleImageMobile" @deletePorfolio="deletePorfolio" @uploadLikeAndLook="uploadLikeAndLook"></newScaleImageMobile>
|
||||||
<!-- <RobotAssist></RobotAssist> -->
|
<!-- <RobotAssist></RobotAssist> -->
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
@@ -286,6 +286,16 @@ export default defineComponent({
|
|||||||
// { root:worksPage }
|
// { root:worksPage }
|
||||||
).observe(imgParent);
|
).observe(imgParent);
|
||||||
}
|
}
|
||||||
|
const uploadLikeAndLook = (selectData:any)=>{
|
||||||
|
for (let i = 0; i < fall.value.list.length; i++) {
|
||||||
|
let item = fall.value.list[i]
|
||||||
|
if (item.id === selectData.id) {
|
||||||
|
item.likeNum = selectData.likeNum
|
||||||
|
item.viewNums = selectData.viewNums
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
watch(() => route.query,
|
watch(() => route.query,
|
||||||
(query, oldQuery) => {
|
(query, oldQuery) => {
|
||||||
if(oldQuery && query?.works == oldQuery?.works)return
|
if(oldQuery && query?.works == oldQuery?.works)return
|
||||||
@@ -370,6 +380,7 @@ export default defineComponent({
|
|||||||
setprintModel,
|
setprintModel,
|
||||||
setPortfolioLike,
|
setPortfolioLike,
|
||||||
deletePorfolio,
|
deletePorfolio,
|
||||||
|
uploadLikeAndLook,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async mounted(){
|
async mounted(){
|
||||||
|
|||||||
Reference in New Issue
Block a user