添加生产导出log, 画布图层工具图层顺序问题
This commit is contained in:
@@ -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(()=>{
|
||||
// 更新缩略图
|
||||
|
||||
@@ -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})`
|
||||
);
|
||||
|
||||
@@ -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} 创建完成`);
|
||||
|
||||
@@ -409,6 +409,9 @@ export class CreateTextCommand extends Command {
|
||||
// 现在可以安全地设置为活动图层
|
||||
this.layerManager.setActiveLayer(this.layerId);
|
||||
|
||||
// 重新排序图层对象
|
||||
await this.layerManager?.layerSort?.rearrangeObjects();
|
||||
|
||||
// 更新对象交互性
|
||||
await this.layerManager?.updateLayersObjectsInteractivity?.(false);
|
||||
|
||||
|
||||
@@ -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("该图层包含子图层,删除将同时删除所有子图层");
|
||||
|
||||
@@ -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
93
src/tool/consoleExport.js
Normal 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;
|
||||
}
|
||||
Reference in New Issue
Block a user