import Api from '~/service/Api'; import commonFunctions from '~/mixin/commonFunctions.js'; import buildFn from './buildCommons.js'; import setmod from '~/components/business/setmod/event'; import glentry from '~/components/business/glentry/event'; import engp from '~/components/business/engp/event'; import docpan from '~/components/business/docpan/event'; import ccvpan from '~/components/business/ccvpan/event'; import limitbody from '~/components/business/limitbody/event'; import doctre from '~/components/business/doctre/event'; import Utils from "~/utils" export default { mixins: [commonFunctions], methods: { ...setmod, ...glentry, ...engp, ...docpan, ...ccvpan, ...limitbody, ...doctre, async init () { const params = { spt: JSON.parse(localStorage.getItem('row_' + this.trnName)), trninr: this.$route.query.trninr, } if ( typeof(this.$route.query.inr) == 'string' ){ params.spt = null } const res = await Api.post('/service/brtcan/init', { ...params, transName: this.trnName, userId: window.sessionStorage.userId || 'ZL', brdgrp:{ rec:{ inr:this.$route.query.inr } }, }); 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) { model.modifySet = [] 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.buildCcvpan(this.model, this.trnName); this.processLiaccv(ccvpanRequest); break; case 'engp': let engpRequest = buildFn.buildEngp(this.model, this.trnName); this.processLiaall(engpRequest); break; case 'setmod': 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.buildDocpan(this.model, this.trnName); this.processTrndoc(docpanRequest); break; case 'glepan': let glentryRequest = buildFn.buildGlentry(this.model, this.trnName); this.processGlentry(glentryRequest); break; case 'limitbody': let limitbodyRequest = buildFn.buildLimitbody(this.model, this.trnName); this.processLimitbody(limitbodyRequest); break; case 'doctre': let doctreRequest = buildFn.buildDoctre(this.model, this.trnName); this.processDoctre(doctreRequest); break; default: return; } }, // 公共组件setmod处理方式改变触发联动 changeSetmodModel (emitParams) { let reqParams = {} switch (emitParams.code) { case 'processMethods': reqParams = buildFn.buildSetglg(this.model, this.trnName); this.calcPayDetail(reqParams) break case 'changeDsp': let index = emitParams.index; let setglgRequest = buildFn.buildSetglg(this.model, this.trnName); setglgRequest.setglg = {setgll: emitParams.list}; this.setgllAccts(setglgRequest, index); break default: return } }, async handleSave() { let result = await this.save(); if (result.respCode == SUCCESS && Object.keys(result.fieldErrors).length == 0) { this.$notify({ title: "成功", message: "保存成功", type: "success", }); this.$store.dispatch("TagsView/delView", this.$route) this.$router.go(-1) } else if (result.fieldErrors && Object.keys(result.fieldErrors).length > 0) { const tab = this.showBackendErrors(result.fieldErrors) if (tab) { // tab切换之后,需出发tab-click的事件 this.tabClick(tab); } this.$notify({ title: "错误", message: "检核失败!", type: "error", }); } else { this.$notify({ title: "失败", message: "保存失败", type: "error", }); } } }, };