import Api from '~/service/Api';
import Utils from "~/utils"
export default {
  methods: {
    async init() {
      const res = await Api.post('/service/gitopn/init', {
        trnmodVo: {
          trn: {
            inr: this.$route.query.trn
          }
        },
        transName: this.trnName,
        userId: window.sessionStorage.userId || 'ZL',
      });
      if (!res.data) {
        return;
      }
      this.copyValueFromVoData(this.model, res.data)
      this.copyValueFromVoData(this.model.setmod.setfeg, res.data.setfeg)
      this.copyValueFromVoData(this.model.setmod.setfog, res.data.setfog)
      this.copyValueFromVoData(this.model.setmod.setglg, res.data.setglg)
    },
    // 兼容处理在前端model中定义了字段,后端返回的数据中不存在字段的问题
    copyValueFromVoData (model, data) {
      let keysList = Object.keys(model)
      keysList.map((key) => {
        if (data[key]) {
          if (Utils.typeOf(model[key]) === 'Object') {
            this.copyValueFromVoData(model[key], data[key])
          } else {
            this.$set(model, key, data[key])
          }
        }
      })
    },
    async tabClick(tab) {
      if (this.isInDisplay) {
        return;
      }
      let name = tab.name;
      switch (name) {
        case 'ccvpan':
          let ccvpanRequest = buildFn.builCcvpan(this.model, this.trnName);
          this.processLiaccv(ccvpanRequest);
          break;
        case 'engp':
          let engpRequest = buildFn.builDengp(this.model, this.trnName);
          this.processLiaall(engpRequest);
          break;
        case 'setpan':
          let setfegRequest = buildFn.buildSetfeg(this.model, this.trnName);
          // 此处利用回调是为了等setfeg的接口调用完成后才去获取setglg参数,由于setglg参数依赖于setfeg函数的返回值
          this.processSetpan(setfegRequest, () => {
            return buildFn.buildSetglg(this.model, this.trnName);
          });
          break;
        case 'docpan':
          let docpanRequest = buildFn.builDocpan(this.model, this.trnName);
          this.processTrndoc(docpanRequest);
          break;
        case 'glepan':
          let glentryRequest = buildFn.buildGlentry(this.model, this.trnName);
          this.processGlentry(glentryRequest);
          break;
        default:
          return;
      }
    },

    //处理-复核
    async handlePass(val) {
      let params = {
        transName: 'trnrel',
        userId: window.sessionStorage.userId || 'ZL',
        selirn: [this.$route.query.trn]
      }
      let rtnmsg = await Api.post('/service/trnrel/relrow', params);
      if (rtnmsg.respCode === SUCCESS) {
        let errorMsg = '';
        let fieldErrorsFlag = !rtnmsg.data.fieldErrors;
        if (!fieldErrorsFlag) {
          let errorMsgkey = '';
          let errorMsgVal = '';
          for (const key in rtnmsg.data.fieldErrors) {
            errorMsgkey = key;
            errorMsgVal = rtnmsg.data.fieldErrors[key];
          }
          errorMsg = errorMsgkey + ':' + errorMsgVal;
          this.$notify.error({
            title: '错误',
            message: '复核失败!错误信息[' + errorMsg + ']',
          });
        } else {
          this.$notify({
            title: '成功',
            message: '复核成功',
            type: 'success',
          });
          this.$store.dispatch('TagsView/delView', this.$route);
          this.$router.history.push('/taskList', () => {
            this.$store.commit('setTaskListTabVal', 'trnrel');
            // 刷新表格
            this.$store.commit('setLoadingFreshReview', true);
          });
        }
      } else {
        let errorMsg = '';
        let fieldErrorsFlag = !rtnmsg.data.fieldErrors;
        if (!fieldErrorsFlag) {
          let errorMsgkey = '';
          let errorMsgVal = '';
          for (const key in rtnmsg.data.fieldErrors) {
            errorMsgkey = key;
            errorMsgVal = rtnmsg.data.fieldErrors[key];
            errorMsg = errorMsg + errorMsgkey + ':' + errorMsgVal + ';';
          }
        } else if (rtnmsg.respMsg) {
          errorMsg = rtnmsg.respMsg;
        }
        this.$notify.error({
          title: '错误',
          message: '复核失败!错误信息[' + errorMsg + ']',
        });
      }
    },

    //处理-打回
    async handleRefuse(val) {
      let params = {
        trninr: this.$route.query.trn,
        transName: 'trnrel',
        userId: sessionStorage.getItem('userId') || 'ZL',
        pageId: this.model.pageId || '1',
        dflg: '',
        relflg: '',
        inidatfro: '',
        inidattol: '',
      };
      let rtnmsg = await Api.post('/service/trnrel/reprow', params);
      if (rtnmsg.respCode == SUCCESS) {
        let errorMsg = '';
        let fieldErrorsFlag =
          !rtnmsg.fieldErrors || JSON.stringify(rtnmsg.fieldErrors) == '{}';
        if (!fieldErrorsFlag) {
          let errorMsgkey = '';
          let errorMsgVal = '';
          for (const key in rtnmsg.fieldErrors) {
            errorMsgkey = key;
            errorMsgVal = rtnmsg.fieldErrors[key];
          }
          errorMsg = errorMsgkey + ':' + errorMsgVal;
          this.$notify.error({
            title: '错误',
            message: '退回失败!错误信息[' + errorMsg + ']',
          });
        } else {
          this.$notify({
            title: '成功',
            message: '退回成功',
            type: 'success',
          });
          this.$store.dispatch('TagsView/delView', this.$route);
          this.$router.history.push('/taskList', () => {
            this.$store.commit('setTaskListTabVal', 'trnrel');
            // 刷新表格
            this.$store.commit('setLoadingFreshReview', true);
          });
        }
      } else {
        let errorMsg = '';
        let fieldErrorsFlag =
          !rtnmsg.fieldErrors || JSON.stringify(rtnmsg.fieldErrors) == '{}';
        if (!fieldErrorsFlag) {
          let errorMsgkey = '';
          let errorMsgVal = '';
          for (const key in rtnmsg.fieldErrors) {
            errorMsgkey = key;
            errorMsgVal = rtnmsg.fieldErrors[key];
            errorMsg = errorMsg + errorMsgkey + ':' + errorMsgVal + ';';
          }
        } else if (rtnmsg.respMsg) {
          errorMsg = rtnmsg.respMsg;
        }
        this.$notify.error({
          title: '错误',
          message: '退回失败!错误信息[' + errorMsg + ']',
        });
      }
    },

    //处理-退出
    handleExit() {
      this.$store.dispatch('TagsView/delView', this.$route);
      this.$router.history.push('/taskList', () => {
        this.$store.commit('setTaskListTabVal', 'trnrel');
      });
    },
  },
};