Web 端数据交互与 design2 布局修复

统一门户 JSON 契约:新增 GET /templates/{id},模板/云文件/保存/打开走虚拟 key;
layer 保存弹层替代 prompt,本地 .soon 已登录后台 POST 登记;修复保存静默失败与 design2 全宽布局。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
24kycj
2026-06-09 01:20:34 +08:00
parent ebe191b06d
commit 877fd278c2
27 changed files with 1232 additions and 326 deletions
+33 -8
View File
@@ -401,6 +401,7 @@ window.display_func = function display_func(img1, img2, img3) {
layer.open({
type: 1,
skin: 'soon-layer',
area: [w, h],
title: language_str("display"), //不显示标题栏"预览"
shadeClose: true, //点击遮罩关闭
@@ -1097,8 +1098,14 @@ window.openFile = function open(file, jAlready) {
if (!file) return;
if (typeof window.soonBindFileMeta === 'function') window.soonBindFileMeta(file);
function doOpenWithJson(j) {
if (!j || !background_image) return;
if (!j.f || !j.f.objects || !Array.isArray(j.f.objects) || j.f.objects.length === 0) return;
if (!j || !background_image) {
if (typeof window.soonReportOpenLoadError === 'function') window.soonReportOpenLoadError('模板/文件加载失败');
return;
}
if (!j.f || !j.f.objects || !Array.isArray(j.f.objects) || j.f.objects.length === 0) {
if (typeof window.soonReportOpenLoadError === 'function') window.soonReportOpenLoadError('模板/文件加载失败');
return;
}
if (!j.b || !j.b.objects || !Array.isArray(j.b.objects) || j.b.objects.length === 0) {
j.b = { version: '4.6.0', objects: [], hoverCursor: 'move' };
}
@@ -1173,12 +1180,14 @@ window.openFile = function open(file, jAlready) {
var j2 = canvas2.toJSON(props);
recordJson2.push(j2);
}, 0);
if (typeof window.soonTryConsumeCloudImport === 'function') window.soonTryConsumeCloudImport(file);
}
});
}
if (arguments.length >= 2 && jAlready) {
doOpenWithJson(jAlready);
openAs.name = file;
if (typeof window.soonTryConsumeCloudImport === 'function') window.soonTryConsumeCloudImport(file);
return;
}
if (window.platformBridge && window.platformBridge.readJsonFile) {
@@ -1186,8 +1195,12 @@ window.openFile = function open(file, jAlready) {
if (j) {
doOpenWithJson(j);
openAs.name = file;
} else if (typeof window.soonReportOpenLoadError === 'function') {
window.soonReportOpenLoadError('模板/文件加载失败');
}
}).catch(function() {});
}).catch(function () {
if (typeof window.soonReportOpenLoadError === 'function') window.soonReportOpenLoadError('模板/文件加载失败');
});
}
try {
var fs = typeof require !== 'undefined' ? require('fs') : null;
@@ -1252,6 +1265,9 @@ function cloudSaveSuccessLabel(res, fallback) {
function onCloudWriteDone(res, fallback, callback) {
applyCloudWriteResult(res, fallback);
if (res && res.fileKey && typeof window.soonClearPendingImport === 'function') {
window.soonClearPendingImport();
}
layer.msg(language_str("saveSucc") + cloudSaveSuccessLabel(res, fallback));
if (callback && typeof callback === 'function') callback();
}
@@ -1260,6 +1276,15 @@ function guardWebSave() {
return typeof window.soonGuardCloudSave === 'function' ? window.soonGuardCloudSave() : true;
}
function reportSaveError(err) {
if (err && err.status) return;
if (typeof window.soonShowApiError === 'function') {
window.soonShowApiError({ status: err && err.status, message: (err && err.message) || '保存失败' });
} else if (typeof window.soonToast === 'function') {
window.soonToast('保存失败', 'error');
}
}
function saveAs(op1, callback) {
// 临时移除辅助线,保存后再恢复
let guideLines1 = [];
@@ -1311,7 +1336,7 @@ function saveAs(op1, callback) {
if (window.platformBridge && window.platformBridge.writeFile) {
window.platformBridge.writeFile(fp, content).then(function (res) {
onCloudWriteDone(res, fp, callback);
}).catch(function () {});
}).catch(reportSaveError);
return;
}
var fs = typeof require !== 'undefined' ? require('fs') : null;
@@ -1322,7 +1347,7 @@ function saveAs(op1, callback) {
saveHistory();
if (callback && typeof callback === 'function') callback();
}
}).catch(function(err) {});
}).catch(reportSaveError);
}
function save(op1, callback) {
@@ -1365,7 +1390,7 @@ function save(op1, callback) {
if (window.platformBridge && window.platformBridge.writeFile) {
window.platformBridge.writeFile(openAs.name, content).then(function (res) {
onCloudWriteDone(res, openAs.name, callback);
}).catch(function () {});
}).catch(reportSaveError);
return;
}
var fs = typeof require !== 'undefined' ? require('fs') : null;
@@ -1394,7 +1419,7 @@ function save(op1, callback) {
if (window.platformBridge && window.platformBridge.writeFile) {
window.platformBridge.writeFile(fp, content).then(function (res) {
onCloudWriteDone(res, fp, callback);
}).catch(function () {});
}).catch(reportSaveError);
return;
}
var fs = typeof require !== 'undefined' ? require('fs') : null;
@@ -1405,7 +1430,7 @@ function save(op1, callback) {
saveHistory();
if (callback && typeof callback === 'function') callback();
}
}).catch(function(err) {});
}).catch(reportSaveError);
}
window.saveHistory = function saveHistory() {