load: function initPersistant()

in src/framework/Persistant.ts [20:59]


  load: function initPersistant(database:any, persistant?: PersistantConf, updateViewer?: any){
    // 填入本地缓存值
    const prefix = persistant?.localStorageKeyPrefix;
    const useConfirm = persistant?.useConfirm;
    if(prefix) {
      const successCb = () => {
        let localDb = {};
        for(let key in localStorage) {
          try {
            if(_.startsWith(key, prefix)) {
              _.set(localDb, key.substr(prefix.length), JSON.parse(localStorage[key]))
            }
          } catch(e){ // 加载值错了不能影响表单填写
            console.log(e);
          }
        }
        (persistant.override ?? _.assign)(database, localDb);
      }
      if(useConfirm && Object.keys(localStorage).find(f=> f.indexOf(prefix) === 0) && !confirming) {
        // 防止同时多次弹框
        confirming = true
        Modal.confirm({
          content: '是否恢复您上次填写过但未提交的内容?',
          okText: '恢复',
          cancelText: '取消',
          onOk: () => {
            confirming = false
            successCb()
            updateViewer()
          },
          onCancel: () => {
            confirming = false
            this.clear(persistant)
          }
        });
      } else {
        successCb()
      }
    }
  },