diff --git a/prod_build_manual.yaml b/prod_build_manual.yaml
new file mode 100644
index 00000000..dfb35102
--- /dev/null
+++ b/prod_build_manual.yaml
@@ -0,0 +1,53 @@
+name: AiDA WEB-Node.js StableVersion 分支构建部署
+on:
+ workflow_dispatch:
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+
+ strategy:
+ matrix:
+ node-version: [ 18.18.0 ]
+
+ steps:
+ - name: 1.检出代码
+ uses: actions/checkout@v4
+ with:
+ ref: StableVersion
+
+ - name: 2.打印当前分支信息
+ run: |
+ echo "Current branch being deployed is: $(git rev-parse --abbrev-ref HEAD)"
+ echo "The code is from the 'main' branch, as specified in 'actions/checkout'."
+
+ - name: 3.设置 Node.js 环境 ${{ matrix.node-version }}
+ uses: actions/setup-node@v6
+ with:
+ node-version: ${{ matrix.node-version }}
+ - run: npm install
+ - run: npm run build
+ - run: ls -l
+
+ - name: 3.5. 手动安装 AWS CLI v2 # 新增步骤:确保 aws 命令可用
+ run: |
+ echo "安装 AWS CLI V2..."
+ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
+ unzip awscliv2.zip
+ sudo ./aws/install --update
+ aws --version
+ echo "AWS CLI V2 安装完成。"
+
+ - name: 4.配置 AWS 凭证
+ uses: aws-actions/configure-aws-credentials@main
+ with:
+ aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
+ aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
+ aws-region: 'ap-east-1'
+
+ - name: 5.同步 dist 目录到 S3
+ run: |
+ aws s3 sync dist/ s3://${{ secrets.S3_BUCKET_NAME }}/ --acl public-read
+
+ - name: 6.部署完成
+ run: echo "构建和部署到 S3 任务完成。"
\ No newline at end of file
diff --git a/src/component/Canvas/CanvasEditor/index.vue b/src/component/Canvas/CanvasEditor/index.vue
index eecafc6f..df61599f 100644
--- a/src/component/Canvas/CanvasEditor/index.vue
+++ b/src/component/Canvas/CanvasEditor/index.vue
@@ -902,7 +902,7 @@ const changeCanvas = async (command) => {
...command, // 传递完整的命令数据
};
emit("changeCanvas", commandData);
- if (command.canUndo || command.canRedo) {
+ if ((command.canUndo || command.canRedo) && props.enabledRedGreenMode) {
setTimeout(async () => {
const imageData = await canvasManager.exportImage({
restoreOpacityInRedGreen: true, // 恢复红绿图模式下的透明度
diff --git a/src/component/Canvas/CanvasEditor/managers/ExportManager.js b/src/component/Canvas/CanvasEditor/managers/ExportManager.js
index 14bca2bd..6ee777fe 100644
--- a/src/component/Canvas/CanvasEditor/managers/ExportManager.js
+++ b/src/component/Canvas/CanvasEditor/managers/ExportManager.js
@@ -555,23 +555,17 @@ export class ExportManager {
);
}
- // 获取固定图层对象的边界矩形(包含位置、尺寸、缩放等信息)
- const fixedBounds = fixedLayerObject?.getBoundingRect?.();
-
// 使用固定图层的实际显示尺寸作为导出画布尺寸
- const canvasWidth = Math.round(fixedBounds.width);
- const canvasHeight = Math.round(fixedBounds.height);
+ const canvasWidth = Math.round(fixedLayerObject.width * fixedLayerObject.scaleX);
+ const canvasHeight = Math.round(fixedLayerObject.height * fixedLayerObject.scaleY);
console.log(`红绿图模式导出,画布尺寸: ${canvasWidth}x${canvasHeight}`);
- console.log("固定图层边界:", fixedBounds);
// 创建固定尺寸的临时画布
const scaleFactor = 2; // 高清导出
const tempCanvas = document.createElement("canvas");
tempCanvas.width = canvasWidth * scaleFactor;
tempCanvas.height = canvasHeight * scaleFactor;
- tempCanvas.style.width = canvasWidth + "px";
- tempCanvas.style.height = canvasHeight + "px";
const tempFabricCanvas = new fabric.StaticCanvas(tempCanvas, {
width: canvasWidth,
@@ -584,8 +578,7 @@ export class ExportManager {
try {
// 获取裁剪路径对象(如果存在)
- const clipPathObject = await this._getClipPathObject(fixedBounds);
-
+ const clipPathObject = await this._getClipPathObject(fixedLayerObject);
// 克隆并添加所有对象到临时画布,需要调整位置相对于固定图层
for (let i = 0; i < objectsToExport.length; i++) {
const obj = objectsToExport[i];
@@ -594,19 +587,20 @@ export class ExportManager {
restoreOpacityInRedGreen && true
);
if (cloned) {
- // 调整对象位置:将原画布坐标转换为以固定图层为原点的相对坐标
cloned.set({
- left: cloned.left - fixedBounds.left,
- top: cloned.top - fixedBounds.top,
+ left: 0,
+ top: 0,
+ originX: "left",
+ originY: "top",
});
// 更新对象坐标
cloned.setCoords();
// 设置裁剪路径到对象
- if (clipPathObject) {
- cloned.clipPath = clipPathObject;
- }
+ // if (clipPathObject) {
+ // cloned.clipPath = clipPathObject;
+ // }
tempFabricCanvas.add(cloned);
}
diff --git a/src/component/Detail/canvas/index.vue b/src/component/Detail/canvas/index.vue
index a44e31ad..4b14e789 100644
--- a/src/component/Detail/canvas/index.vue
+++ b/src/component/Detail/canvas/index.vue
@@ -230,7 +230,7 @@ export default defineComponent({
let size = {
...detailData.canvasConfig,
}
-
+ store.commit('DesignDetail/updataDetailItem',{maskUrl:value})
segmentImage(value,full,size).then(async (rv)=>{
let front = detailData.frontBack.front[detailData.imgDomIndex]
let back = detailData.frontBack.back[detailData.imgDomIndex]
@@ -243,7 +243,7 @@ export default defineComponent({
let base64 = await resizeImageWithNativeCanvas(front.oldMaskUrl,value)
front.maskUrl = base64
back.imageUrl = rv.targetBackUrl
- store.commit('DesignDetail/updataDetailItem',{maskUrl:value})
+ // store.commit('DesignDetail/updataDetailItem',{maskUrl:value})
})
}
diff --git a/src/component/HomePage/Cropper.vue b/src/component/HomePage/Cropper.vue
index f6d9661a..4988b3db 100644
--- a/src/component/HomePage/Cropper.vue
+++ b/src/component/HomePage/Cropper.vue
@@ -30,7 +30,7 @@
:outputSize="option.size"
:outputType="option.outputType"
:auto-crop="option.autoCrop"
- :fixedBox="isRound"
+ :fixedBox="!isRound"
:movable="true"
:fixed="isRound"
:auto-crop-width="option.autoCropWidth"
@@ -333,7 +333,6 @@ export default defineComponent({
.cut_picture_review_block{
width: 100%;
height: calc(100% - 6.8rem*1.2);
- min-height: calc(100% - 6.8rem*1.2);
margin: 0 auto;
.next_step_button{
margin-top: 2rem;
diff --git a/src/component/home/design/collection/PrintboardUpload.vue b/src/component/home/design/collection/PrintboardUpload.vue
index 636a7412..531b3782 100644
--- a/src/component/home/design/collection/PrintboardUpload.vue
+++ b/src/component/home/design/collection/PrintboardUpload.vue
@@ -145,7 +145,7 @@
-
+