From 920d01a97255aedc9c22509a9bc4148b9206f21b Mon Sep 17 00:00:00 2001
From: X1627315083 <1627315083@qq.com>
Date: Fri, 23 Jan 2026 21:42:43 +0800
Subject: [PATCH 01/12] =?UTF-8?q?=E8=B0=83=E6=95=B4=E7=BB=B4=E6=8A=A4?=
=?UTF-8?q?=E6=97=B6=E9=97=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/router/index.ts | 2 +-
src/views/Upgrade.vue | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/router/index.ts b/src/router/index.ts
index b264f4f2..f08f513e 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -532,7 +532,7 @@ function isTimeRangePassed(timeRange) {
router.beforeEach((to: any, from, next) => {
store.commit("set_view_loading", true);
//系统维护时间
- const time = '2026-01-23T21:00:00 - 2026-01-23T22:00:00';
+ const time = '2026-01-23T21:00:00 - 2026-01-23T23:00:00';
if (isTimeRangePassed(time) == 'in_progress') {
// 系统维护
const toName = to.name === 'upgrade';
diff --git a/src/views/Upgrade.vue b/src/views/Upgrade.vue
index 14527a10..ee1aa460 100644
--- a/src/views/Upgrade.vue
+++ b/src/views/Upgrade.vue
@@ -12,7 +12,7 @@
- Due to system server upgrades, maintenance will be carried out from 21:00 to 22:00 on January 19, 2026 (today).
+ Due to system server upgrades, maintenance will be carried out from 21:00 to 23:00 on January 19, 2026 (today).
The AiDA system will be temporarily unavailable during this period. We sincerely apologize for any inconvenience caused and thank you for your understanding.
@@ -20,7 +20,7 @@
- 由于系统服务器升级,我们将于1月23日21:00 至1月23日22:00进行升级。
+ 由于系统服务器升级,我们将于1月23日21:00 至1月23日23:00进行升级。
在此期间,AiDA系统将暂时无法访问。给您带来的不便,我们深表歉意,并感谢您的理解
From 07b7a6f1d71aecbeba363131f118b35aa54b5ad3 Mon Sep 17 00:00:00 2001
From: X1627315083 <1627315083@qq.com>
Date: Fri, 23 Jan 2026 22:31:51 +0800
Subject: [PATCH 02/12] FIX
---
src/router/index.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/router/index.ts b/src/router/index.ts
index f08f513e..b264f4f2 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -532,7 +532,7 @@ function isTimeRangePassed(timeRange) {
router.beforeEach((to: any, from, next) => {
store.commit("set_view_loading", true);
//系统维护时间
- const time = '2026-01-23T21:00:00 - 2026-01-23T23:00:00';
+ const time = '2026-01-23T21:00:00 - 2026-01-23T22:00:00';
if (isTimeRangePassed(time) == 'in_progress') {
// 系统维护
const toName = to.name === 'upgrade';
From b158341d6e787676f28c421d886b3c51678dac90 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=8E=E5=BF=97=E9=B9=8F?= <2916022834@qq.com>
Date: Mon, 26 Jan 2026 16:47:03 +0800
Subject: [PATCH 03/12] =?UTF-8?q?=E5=8D=B0=E8=8A=B1=E7=BB=84=E7=A6=81?=
=?UTF-8?q?=E6=AD=A2=E5=A4=9A=E9=80=89?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../CanvasEditor/components/LayersPanel/LayersPanel.vue | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/src/component/Canvas/CanvasEditor/components/LayersPanel/LayersPanel.vue b/src/component/Canvas/CanvasEditor/components/LayersPanel/LayersPanel.vue
index b6971bb3..1ed62871 100644
--- a/src/component/Canvas/CanvasEditor/components/LayersPanel/LayersPanel.vue
+++ b/src/component/Canvas/CanvasEditor/components/LayersPanel/LayersPanel.vue
@@ -584,15 +584,16 @@ function handleLayerClick(layer, event) {
// 如果不是多选模式,才可激活图层
// 1.如果是组,则设置组下的第一个子图层为活动图层
// 2.否则直接设置活动图层
- if (isGroupLayerType(layer) && layer.children && layer.children.length > 0) {
+ if (isGroupLayerType(layer) && layer.children && layer.children.length > 0 && !layer.isPrintTrimsGroup) {
// 如果是组图层,设置第一个子图层为活动图层
layerManager?.setAllActiveGroupLayerCanvasObject?.(layer);
setActiveLayer(layer.children[0].id, { parentId: layer.id });
} else {
+ let id = layer.isPrintTrimsGroup ? layer.children?.[0]?.id || layer.id : layer.id;
// 选中画布中的图层对象
- layerManager?.selectLayerObjects(layer.id);
+ layerManager?.selectLayerObjects(id);
// 否则直接设置当前图层为活动图层
- setActiveLayer(layer.id);
+ setActiveLayer(id);
layerManager?.updateLayersObjectsInteractivity();
}
}
From fb1d09d98efd80ee9bc54d328692d348ed487e45 Mon Sep 17 00:00:00 2001
From: X1627315083 <1627315083@qq.com>
Date: Tue, 27 Jan 2026 10:12:13 +0800
Subject: [PATCH 04/12] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=B3=A8=E5=86=8C?=
=?UTF-8?q?=E8=BE=93=E5=85=A5=E9=AA=8C=E8=AF=81=E7=A0=81=E6=9C=80=E5=B0=8F?=
=?UTF-8?q?=E9=AB=98=E5=BA=A6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/component/HomePage/bindEmail.vue | 1 +
src/component/LoginPage/login/enterprise.vue | 2 +-
src/component/LoginPage/login/personal.vue | 1 +
src/component/LoginPage/login/school.vue | 2 +-
src/component/mainPage/signUp/registerModel.vue | 2 ++
5 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/src/component/HomePage/bindEmail.vue b/src/component/HomePage/bindEmail.vue
index d4b18e4d..dfe73a96 100644
--- a/src/component/HomePage/bindEmail.vue
+++ b/src/component/HomePage/bindEmail.vue
@@ -595,6 +595,7 @@ export default defineComponent({
.login_form_content {
margin-top: 4rem;
position: relative;
+ min-height: 34rem;
&[state="2"]{
height: 30rem;
>*{
diff --git a/src/component/LoginPage/login/enterprise.vue b/src/component/LoginPage/login/enterprise.vue
index c2265558..dadf84ce 100644
--- a/src/component/LoginPage/login/enterprise.vue
+++ b/src/component/LoginPage/login/enterprise.vue
@@ -790,7 +790,7 @@ export default defineComponent({
.login_form_content {
margin-top: 4rem;
position: relative;
-
+ min-height: 34rem;
&[state="2"] {
> * {
opacity: 0;
diff --git a/src/component/LoginPage/login/personal.vue b/src/component/LoginPage/login/personal.vue
index a597ba09..2712e61d 100644
--- a/src/component/LoginPage/login/personal.vue
+++ b/src/component/LoginPage/login/personal.vue
@@ -799,6 +799,7 @@ export default defineComponent({
.login_form_content {
position: relative;
+ min-height: 34rem;
&[state="2"] {
> * {
opacity: 0;
diff --git a/src/component/LoginPage/login/school.vue b/src/component/LoginPage/login/school.vue
index 6c49f25c..93e8c38f 100644
--- a/src/component/LoginPage/login/school.vue
+++ b/src/component/LoginPage/login/school.vue
@@ -826,7 +826,7 @@ export default defineComponent({
.login_form_content {
margin-top: 4rem;
position: relative;
-
+ min-height: 34rem;
&[state="2"] {
> * {
opacity: 0;
diff --git a/src/component/mainPage/signUp/registerModel.vue b/src/component/mainPage/signUp/registerModel.vue
index 9b3d52ed..fd499749 100644
--- a/src/component/mainPage/signUp/registerModel.vue
+++ b/src/component/mainPage/signUp/registerModel.vue
@@ -916,9 +916,11 @@ export default defineComponent({
.login_form_content {
margin-top: 4rem;
position: relative;
+ min-height: 34rem;
@media (max-width: 768px) {
margin-top: 2.4rem;
height: 20rem;
+ min-height: auto;
}
&[state="2"] {
> * {
From 03a9e2f52c91f7d89112ceb240001d8326364213 Mon Sep 17 00:00:00 2001
From: X1627315083 <1627315083@qq.com>
Date: Tue, 27 Jan 2026 10:15:20 +0800
Subject: [PATCH 05/12] fix
---
src/component/mainPage/signUp/registerModel.vue | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/component/mainPage/signUp/registerModel.vue b/src/component/mainPage/signUp/registerModel.vue
index fd499749..557afb9e 100644
--- a/src/component/mainPage/signUp/registerModel.vue
+++ b/src/component/mainPage/signUp/registerModel.vue
@@ -919,8 +919,10 @@ export default defineComponent({
min-height: 34rem;
@media (max-width: 768px) {
margin-top: 2.4rem;
- height: 20rem;
min-height: auto;
+ &[state="2"] {
+ height: 20rem;
+ }
}
&[state="2"] {
> * {
From 4dfa9433fd56af9d7decbf99fbd61e6ce3e64ab5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=8E=E5=BF=97=E9=B9=8F?= <2916022834@qq.com>
Date: Tue, 27 Jan 2026 11:01:33 +0800
Subject: [PATCH 06/12] =?UTF-8?q?=E7=94=BB=E5=B8=83=20=E9=83=A8=E4=BB=B6?=
=?UTF-8?q?=E9=80=89=E5=8F=96=E3=80=81=E5=8D=B0=E8=8A=B1=E7=A6=81=E7=94=A8?=
=?UTF-8?q?=E5=A4=9A=E9=80=89?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../FillGroupLayerBackgroundCommand.js | 5 +-
.../commands/LassoCutoutCommand.js | 12 +-
.../CanvasEditor/commands/PartCommands.js | 56 ++++
.../components/PartSelectorPanel.vue | 76 +----
.../components/SelectMenuPanel/index.vue | 13 +-
src/component/Canvas/CanvasEditor/index.vue | 8 +-
.../CanvasEditor/managers/CanvasManager.js | 6 +-
.../CanvasEditor/managers/PartManager.js | 316 ++++++++++++------
.../CanvasEditor/managers/ToolManager.js | 4 +-
.../Canvas/CanvasEditor/utils/helper.js | 1 +
src/component/Canvas/canvasExample.vue | 11 +-
src/component/Canvas/test.vue | 2 +-
12 files changed, 328 insertions(+), 182 deletions(-)
create mode 100644 src/component/Canvas/CanvasEditor/commands/PartCommands.js
diff --git a/src/component/Canvas/CanvasEditor/commands/FillGroupLayerBackgroundCommand.js b/src/component/Canvas/CanvasEditor/commands/FillGroupLayerBackgroundCommand.js
index edd061ac..26f90e2c 100644
--- a/src/component/Canvas/CanvasEditor/commands/FillGroupLayerBackgroundCommand.js
+++ b/src/component/Canvas/CanvasEditor/commands/FillGroupLayerBackgroundCommand.js
@@ -106,7 +106,6 @@ export class FillGroupLayerBackgroundCommand extends Command {
});
}
}
-
// 判断fabricObjects是否是组对象
const firstObj = layer.fabricObjects?.[0] || null;
// 如果没有找到第一个对象,则直接添加到当前画布
@@ -173,8 +172,8 @@ export class FillGroupLayerBackgroundCommand extends Command {
}
const canvasObj = findObjectById(this.canvas, firstObj?.id)?.object;
if (
- (canvasObj && canvasObj.type === "group") ||
- canvasObj._objects?.length > 0
+ canvasObj && (canvasObj.type === "group" ||
+ canvasObj._objects?.length > 0)
) {
this.newFill.set({
left: 0,
diff --git a/src/component/Canvas/CanvasEditor/commands/LassoCutoutCommand.js b/src/component/Canvas/CanvasEditor/commands/LassoCutoutCommand.js
index a3ad1eaf..b69f2cdc 100644
--- a/src/component/Canvas/CanvasEditor/commands/LassoCutoutCommand.js
+++ b/src/component/Canvas/CanvasEditor/commands/LassoCutoutCommand.js
@@ -147,11 +147,11 @@ export class LassoCutoutCommand extends CompositeCommand {
}
// 确定源图层
- const sourceLayer = this.layerManager.getActiveLayer();
- if (!sourceLayer) {
- console.error("无法执行套索抠图:源图层无效");
- return false;
- }
+ // const sourceLayer = this.layerManager.getActiveLayer();
+ // if (!sourceLayer) {
+ // console.error("无法执行套索抠图:源图层无效");
+ // return false;
+ // }
// 获取源图层的所有对象(包括子图层)
// const sourceObjects = this._getLayerObjects(sourceLayer);
@@ -225,7 +225,7 @@ export class LassoCutoutCommand extends CompositeCommand {
const layers = this.layerManager.layers.value;
var topLayerIndex = 0;
- layers.forEach((layer, index) => {
+ if(this.originalLayer)layers.forEach((layer, index) => {
if (layer.id === this.originalLayer.id) {
topLayerIndex = index;
}else if (layer.children.length > 0) {
diff --git a/src/component/Canvas/CanvasEditor/commands/PartCommands.js b/src/component/Canvas/CanvasEditor/commands/PartCommands.js
new file mode 100644
index 00000000..c8e1178c
--- /dev/null
+++ b/src/component/Canvas/CanvasEditor/commands/PartCommands.js
@@ -0,0 +1,56 @@
+import { Command } from "./Command.js";
+
+/**
+ * 部件绘制命令
+ */
+export class PartDrawCommand extends Command {
+ constructor(options) {
+ super({
+ name: "部件绘制命令",
+ saveState: false,
+ });
+
+ this.canvas = options.canvas;
+ this.partManager = options.partManager;
+ this.partCanvas = options.partCanvas;
+ this.oldPartCanvas = this.partManager.partCanvas;
+ }
+ execute() {
+ this.partManager.drawPartCanvas(this.partCanvas);
+ return true;
+ }
+ undo() {
+ this.partManager.drawPartCanvas(this.oldPartCanvas);
+ return true;
+ }
+}
+/**
+ * 部件点选绘制命令
+ */
+export class PartPointDrawCommand extends Command {
+ constructor(options) {
+ super({
+ name: "部件点选绘制命令",
+ saveState: false,
+ });
+
+ this.canvas = options.canvas;
+ this.partManager = options.partManager;
+ this.partCanvas = options.partCanvas;
+ this.pointList = options.pointList;
+ this.oldPartCanvas = this.partManager.partCanvas;
+ this.oldPointList = [...this.partManager.pointList];
+ }
+ async execute() {
+ const list = [...this.pointList];
+ const canvas = this.partCanvas;
+ const res = await this.partManager.pointDrawPartCanvas(list, canvas);
+ return res;
+ }
+ async undo() {
+ const list = [...this.oldPointList];
+ const canvas = this.oldPartCanvas;
+ const res = await this.partManager.pointDrawPartCanvas(list, canvas);
+ return res;
+ }
+}
diff --git a/src/component/Canvas/CanvasEditor/components/PartSelectorPanel.vue b/src/component/Canvas/CanvasEditor/components/PartSelectorPanel.vue
index 658d647f..1bf5d790 100644
--- a/src/component/Canvas/CanvasEditor/components/PartSelectorPanel.vue
+++ b/src/component/Canvas/CanvasEditor/components/PartSelectorPanel.vue
@@ -20,13 +20,13 @@
- Left Click: Add
+ {{ t("Canvas.LeftClickAdd") }}

-
Right Click: Remove
+
{{ t("Canvas.RightClickRemove") }}
@@ -57,15 +57,15 @@
$t("Canvas.creation")
}}
-
+
- 清空当前点位
+ {{ $t("Canvas.TheClearlySelectedContent") }}
@@ -76,23 +76,9 @@