101 lines
3.0 KiB
JavaScript
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
|