Files
t-admin/unpackage/dist/dev/mp-weixin/uni_modules/uni-cms/common/auto-save-mixin.js
T
2025-06-13 21:16:12 +08:00

101 lines
3.0 KiB
JavaScript

"use strict";
const common_vendor = require("../../../common/vendor.js");
const autoSaveMixin = {
data() {
return {
autoSaveKey: "uni-cms-auto-save-create",
// 自动保存localStorage的key
autoSave: false
// 是否自动保存
};
},
computed: {
isCreateArticle() {
return !this.formDataId;
}
},
mounted() {
if (!this.autoSave)
return;
if (this.formDataId) {
this.autoSaveKey = "uni-cms-auto-save-edit-" + this.formDataId;
}
this.initAutoSaveContent();
},
methods: {
// 初始化自动保存内容
initAutoSaveContent() {
const authSaveContent = common_vendor.index.getStorageSync(this.autoSaveKey);
if (!authSaveContent)
return;
let content;
try {
content = JSON.parse(authSaveContent);
} catch (e) {
common_vendor.index.__f__("error", "at uni_modules/uni-cms/common/auto-save-mixin.js:37", "自动保存内容解析失败", e);
}
if (!content)
return;
common_vendor.index.showModal({
title: "提示",
content: this.isCreateArticle ? "检测到您上次编辑的内容,是否恢复?" : "检测到您有未发布的内容,是否恢复?",
confirmText: "恢复",
cancelText: "丢弃",
success: (res) => {
if (res.confirm) {
if (this.editorCtx) {
this.editorCtx.setContents({
delta: content.content
});
}
this.formData.title = content.title;
this.formData.excerpt = content.excerpt;
} else {
common_vendor.index.removeStorageSync(this.autoSaveKey);
}
}
});
},
autoSaveContent() {
if (!this.autoSave)
return;
if (this.autoSaveTimer) {
clearTimeout(this.autoSaveTimer);
}
this.autoSave.status = 1;
this.autoSaveTimer = setTimeout(() => {
this.editorCtx.getContents({
success: (res) => {
const { delta } = res;
const content = JSON.stringify({
title: this.formData.title,
excerpt: this.formData.excerpt,
content: delta
});
common_vendor.index.setStorage({
key: this.autoSaveKey,
data: content,
success: () => {
this.autoSave.status = 2;
},
fail: (err) => {
common_vendor.index.__f__("log", "at uni_modules/uni-cms/common/auto-save-mixin.js:90", err);
}
});
},
fail: (e) => {
common_vendor.index.__f__("error", "at uni_modules/uni-cms/common/auto-save-mixin.js:95", e);
}
});
}, 500);
},
clearAutoSaveStorage() {
if (this.autoSave) {
common_vendor.index.removeStorageSync(this.autoSaveKey);
}
}
}
};
exports.autoSaveMixin = autoSaveMixin;
//# sourceMappingURL=../../../../.sourcemap/mp-weixin/uni_modules/uni-cms/common/auto-save-mixin.js.map