隐患详情重新设计,检查计划重新设计成做题排查式
This commit is contained in:
114
unpackage/dist/dev/mp-weixin/utils/useDraftCache.js
vendored
Normal file
114
unpackage/dist/dev/mp-weixin/utils/useDraftCache.js
vendored
Normal file
@@ -0,0 +1,114 @@
|
||||
"use strict";
|
||||
const common_vendor = require("../common/vendor.js");
|
||||
const utils_draftCache = require("./draftCache.js");
|
||||
function useDraftCache(options) {
|
||||
const {
|
||||
getKey,
|
||||
getPayload,
|
||||
hasContent = utils_draftCache.defaultHasContent,
|
||||
applyPayload,
|
||||
clearForm,
|
||||
canSave = () => true,
|
||||
requireInitialized = false,
|
||||
restoreToast = "已自动恢复您上次未提交的内容",
|
||||
clearToast = "草稿已清空",
|
||||
showRestoreToast = true,
|
||||
onAfterRestore,
|
||||
getFallbackKeys
|
||||
} = options;
|
||||
const hasDraft = common_vendor.ref(false);
|
||||
const showRestoreBanner = common_vendor.ref(false);
|
||||
const isRestoring = common_vendor.ref(false);
|
||||
const isInitialized = common_vendor.ref(false);
|
||||
const finishRestoreState = (callback) => {
|
||||
common_vendor.nextTick$1(() => {
|
||||
isRestoring.value = false;
|
||||
isInitialized.value = true;
|
||||
callback == null ? void 0 : callback();
|
||||
});
|
||||
};
|
||||
const save = () => {
|
||||
if (isRestoring.value)
|
||||
return;
|
||||
if (requireInitialized && !isInitialized.value)
|
||||
return;
|
||||
if (!canSave())
|
||||
return;
|
||||
const key = getKey();
|
||||
const payload = getPayload();
|
||||
if (!hasContent(payload)) {
|
||||
utils_draftCache.removeDraft(key);
|
||||
hasDraft.value = false;
|
||||
return;
|
||||
}
|
||||
utils_draftCache.saveDraftToStorage(key, payload);
|
||||
hasDraft.value = true;
|
||||
};
|
||||
const clear = (showToast = true) => {
|
||||
utils_draftCache.removeDraft(getKey());
|
||||
hasDraft.value = false;
|
||||
showRestoreBanner.value = false;
|
||||
isRestoring.value = true;
|
||||
clearForm();
|
||||
finishRestoreState();
|
||||
if (showToast) {
|
||||
common_vendor.index.showToast({ title: clearToast, icon: "none" });
|
||||
}
|
||||
};
|
||||
const restore = () => {
|
||||
const key = getKey();
|
||||
const { data, fromFallback, fallbackKey } = utils_draftCache.loadDraftWithFallback(
|
||||
key,
|
||||
(getFallbackKeys == null ? void 0 : getFallbackKeys()) || []
|
||||
);
|
||||
if (!data || !hasContent(data)) {
|
||||
isInitialized.value = true;
|
||||
return false;
|
||||
}
|
||||
isRestoring.value = true;
|
||||
try {
|
||||
applyPayload(data);
|
||||
hasDraft.value = true;
|
||||
showRestoreBanner.value = true;
|
||||
onAfterRestore == null ? void 0 : onAfterRestore(data);
|
||||
if (fromFallback && fallbackKey) {
|
||||
utils_draftCache.saveDraftToStorage(key, data);
|
||||
utils_draftCache.removeDraft(fallbackKey);
|
||||
}
|
||||
finishRestoreState(() => {
|
||||
if (showRestoreToast) {
|
||||
common_vendor.index.showToast({
|
||||
title: restoreToast,
|
||||
icon: "none",
|
||||
duration: 2500
|
||||
});
|
||||
}
|
||||
});
|
||||
return true;
|
||||
} catch (error) {
|
||||
common_vendor.index.__f__("error", "at utils/useDraftCache.js:128", "[useDraftCache] 恢复草稿失败:", error);
|
||||
isRestoring.value = false;
|
||||
isInitialized.value = true;
|
||||
return false;
|
||||
}
|
||||
};
|
||||
const bindAutoSave = (source, watchOptions = {}) => {
|
||||
common_vendor.watch(
|
||||
source,
|
||||
() => save(),
|
||||
{ deep: true, ...watchOptions }
|
||||
);
|
||||
};
|
||||
return {
|
||||
hasDraft,
|
||||
showRestoreBanner,
|
||||
isRestoring,
|
||||
isInitialized,
|
||||
save,
|
||||
clear,
|
||||
restore,
|
||||
bindAutoSave
|
||||
};
|
||||
}
|
||||
exports.useDraftCache = useDraftCache;
|
||||
//# sourceMappingURL=../../.sourcemap/mp-weixin/utils/useDraftCache.js.map
|
||||
Reference in New Issue
Block a user