添加生产导出log, 画布图层工具图层顺序问题

This commit is contained in:
李志鹏
2025-11-06 11:27:12 +08:00
parent ccedd00ea7
commit 21bfe5ef8f
7 changed files with 111 additions and 3 deletions

View File

@@ -2059,7 +2059,7 @@ export class LayerObjectsToGroupCommand extends Command {
}
try {
await optimizeCanvasRendering(this.canvas, () => {
await optimizeCanvasRendering(this.canvas, async () => {
if (existingGroup) {
// 向现有组添加对象
this._addObjectsToExistingGroup(existingGroup, newObjectsToAdd);
@@ -2070,8 +2070,8 @@ export class LayerObjectsToGroupCommand extends Command {
this._createNewGroupWithAllObjects(newObjectsToAdd);
this.groupObjectId = this.newGroupId;
this.wasGroupCreated = true;
await this.layerManager?.layerSort?.rearrangeObjects();
}
// 更新交互性
this.layerManager?.updateLayersObjectsInteractivity?.(false).then(()=>{
// 更新缩略图

View File

@@ -255,6 +255,8 @@ export class AddObjectToLayerCommand extends Command {
);
// 标记为非首次执行
this.isFirstExecution = false;
// 重新排序图层对象
await this.layerManager?.layerSort?.rearrangeObjects();
console.log(
`✅ 对象已添加到图层 "${layer.name}",位置: (${this.fabricObject.left}, ${this.fabricObject.top})`
);

View File

@@ -359,7 +359,8 @@ export class RasterizeLayerCommand extends Command {
// 设置为活动图层
this.activeLayerId.value = this.rasterizedLayerId;
// 重新排序图层对象
await this.layerManager?.layerSort?.rearrangeObjects();
await this.layerManager?.updateLayersObjectsInteractivity(false);
console.log(`🎨 组合图层 ${this.rasterizedLayer.name} 创建完成`);

View File

@@ -409,6 +409,9 @@ export class CreateTextCommand extends Command {
// 现在可以安全地设置为活动图层
this.layerManager.setActiveLayer(this.layerId);
// 重新排序图层对象
await this.layerManager?.layerSort?.rearrangeObjects();
// 更新对象交互性
await this.layerManager?.updateLayersObjectsInteractivity?.(false);

View File

@@ -946,6 +946,14 @@ export class LayerManager {
return false;
}
// 检查是否是唯一的普通图层
const normalLayers = this.layers.value.filter((l) => !l.isBackground && !l.isFixed);
console.log("普通图层:", normalLayers)
if (normalLayers.length === 1) {
console.warn("不能删除唯一的普通图层");
message.warning("不能删除唯一的普通图层");
return false;
}
// // 如果图层有子图层,提示确认
// if (layer && layer.children && layer.children.length > 0) {
// console.warn("该图层包含子图层,删除将同时删除所有子图层");

View File

@@ -1,4 +1,5 @@
import { createApp, defineComponent, h } from "vue";
import "./tool/consoleExport.js";
import App from "./App.vue";
import router from "./router";
import store from "./store";

93
src/tool/consoleExport.js Normal file
View File

@@ -0,0 +1,93 @@
if (import.meta.env.VITE_USER_NODE_ENVh === "production") {
const log = console.log;
const error = console.error;
const warn = console.warn;
const info = console.info;
const list = [];
class Item {
constructor(type, arrs) {
this.type = type
this.time = FormatDate()
this.content = arrs
}
}
console.log = function () {
log(...arguments)
list.push(new Item('log', [...arguments]))
}
console.error = function () {
error(...arguments)
list.push(new Item('error', [...arguments]))
}
console.warn = function () {
warn(...arguments)
list.push(new Item('warn', [...arguments]))
}
console.info = function () {
info(...arguments)
list.push(new Item('info', [...arguments]))
}
// 导出列表-json
const exportListJson = function () {
const json = JSON.stringify(list, null, 2)
const blob = new Blob([json], { type: 'application/json' })
const url = URL.createObjectURL(blob)
const a = document.createElement('a')
a.href = url
a.download = `console_${FormatDate("yyyyMMddHHmmss")}.json`
a.click()
URL.revokeObjectURL(url)
}
const keys = [];
document.addEventListener("keydown", (e) => {
if (e.key === "Control") return;
if (e.ctrlKey) {
keys.push(e.key)
const str = keys.join('');
if (/m{5}/i.test(str)) {
exportListJson()
keys.splice(0, keys.length)
}
} else {
keys.splice(0, keys.length)
}
})
}
/** 时间格式化-自定义格式
* @param format 格式化字符串,默认值为 'yyyy-MM-dd HH:mm:ss'
* @returns 格式化后的时间字符串
*/
function FormatDate(format = 'yyyy-MM-dd HH:mm:ss') {
const date = new Date();
const yyyy = String(date.getFullYear());
const yy = String(date.getFullYear()).slice(-2);
const MM = String(date.getMonth() + 1).padStart(2, '0');
const M = String(date.getMonth() + 1);
const dd = String(date.getDate()).padStart(2, '0');
const d = String(date.getDate());
const HH = String(date.getHours()).padStart(2, '0');
const H = String(date.getHours());
const mm = String(date.getMinutes()).padStart(2, '0');
const m = String(date.getMinutes());
const ss = String(date.getSeconds()).padStart(2, '0');
const s = String(date.getSeconds());
const str = format.replaceAll('yyyy', yyyy)
.replaceAll('yy', yy)
.replaceAll('MM', MM)
.replaceAll('M', M)
.replaceAll('dd', dd)
.replaceAll('d', d)
.replaceAll('HH', HH)
.replaceAll('H', H)
.replaceAll('mm', mm)
.replaceAll('m', m)
.replaceAll('ss', ss)
.replaceAll('s', s);
return str;
}