Commit cc88090c by wangguangchao

botcan交易代码提交

parent d12291b2
export default {
buildPtspta (ptsptaObj) {
let pts = ptsptaObj.pts;
let ptspta = {
rol: pts.rol,
name: pts.nam,
ptyinr: pts.ptyinr,
ptainr: pts.ptainr,
extkey: pts.extkey,
dftdsp: pts.dftdsp,
dftcur: pts.dftcur,
dftact: pts.dftact,
dftfeecur: pts.dftfeecur,
dftactptainr: pts.dftactptainr,
glggrpflg: pts.glggrpflg,
adrblk: pts.adrblk
};
return ptspta;
},
buildCommonData (model, trnName) {
let ptsptaList = [];
if (model.bodgrp.col.pts.extkey) {
ptsptaList.push(this.buildPtspta(model.bodgrp.col));
}
if (model.bodgrp.drr.pts.extkey) {
ptsptaList.push(this.buildPtspta(model.bodgrp.drr));
}
if (model.bodgrp.dre.pts.extkey) {
ptsptaList.push(this.buildPtspta(model.bodgrp.dre));
}
let dataObj = {
rec: {
objtyp: 'BOD',
ownref: model.bodgrp.rec.ownref,
opndat: model.bodgrp.rec.opndat,
expdat: model.bodgrp.rec.expdat,
branchInr: model.bodgrp.rec.branchInr,
hndtyp: model.bodgrp.rec.hndtyp,
gartyp: model.bodgrp.rec.gartyp,
fingua: model.bodgrp.rec.fingua,
fromflg: model.bodgrp.rec.fromflg,
othersno: model.bodgrp.rec.othersno,
sndto: model.bodgrp.rec.sndto,
giduil: model.bodgrp.rec.giduil,
purpos: model.bodgrp.rec.purpos,
revflg: model.bodgrp.rec.revflg,
cnfsta: model.bodgrp.rec.cnfsta,
},
cbsMap: {
MAX: model.bodgrp.cbs.max,
OPN1: model.bodgrp.cbs.opn1,
// MAC: model.bodgrp.cbs.mac,
// MAC2: model.bodgrp.cbs.mac2,
// OPC2: model.bodgrp.cbs.opc2,
// CNF: model.bodgrp.cbs.cnf,
},
ptsList: ptsptaList,
transName: trnName,
userId: window.sessionStorage.userId ? window.sessionStorage.userId : 'ZL'
};
return dataObj
},
buildSetfeg (model, trnName) {
let params = {
...this.buildCommonData(model, trnName),
liaall: model.liaall,
liaccv: model.liaccv,
doceot: model.trnmod.trndoc.doceot,
};
return params
},
buildSetglg (model, trnName) {
let params = {
...this.buildCommonData(model, trnName),
setfeg: model.setmod.setfeg,
liaall: model.liaall,
liaccv: model.liaccv,
};
return params
},
buildGlentry (model, trnName) {
let params = {
...this.buildCommonData(model, trnName),
liaallg: model.liaall.liaallg,
setfog: model.setmod.setfog,
setfeg: model.setmod.setfeg,
setglg: model.setmod.setglg,
};
return params
},
buildEngp (model, trnName) {
let params = {
...this.buildCommonData(model, trnName),
liaallg: model.liaall.liaallg,
};
return params
},
buildDocpan (model, trnName) {
let params = {
...this.buildCommonData(model, trnName),
};
return params
},
buildCcvpan (model, trnName) {
let params = {
...this.buildCommonData(model, trnName),
liaccvg: model.liaccv.liaccvg,
oldamt: model.liaccv.oldamt,
chgamt: model.liaccv.chgamt,
concur: model.liaccv.concur,
};
return params
},
buildLimitbody (model, trnName) {
let params = {
...this.buildCommonData(model, trnName),
rec: {
objtyp: 'BOD',
objinr: model.bodgrp.rec.inr,
ownref: model.bodgrp.rec.ownref,
},
};
return params
},
buildDoctre (model, trnName) {
let params = {
...this.buildCommonData(model, trnName),
rec: {
objtyp: 'BOD',
objinr: model.bodgrp.rec.inr,
ownref: model.bodgrp.rec.ownref,
// swiftflg: model.gitp.swiftflg,
},
};
return params
},
// 公共组件setmod中dsp字段改变,触发联动时候的入参
buildSetgllAccts (model, trnName, setglg) {
let params = {
...this.buildCommonData(model, trnName),
setglg
};
return params
}
}
\ No newline at end of file
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))
}
const res = await Api.post('/service/botcan/init', {
...params,
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.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;
}
},
// 点击获取按钮拉取当前key字段下的表单数据
queryFormData(key) {
console.log(key);
},
// 业务信息=》基本信息=》保函编号-----获取保函编号
async queryOwnref() {
let params = {
ptainr: this.model.gidgrp.apl.pts.ptainr,
businessType: 'LG',
tbl: 'LG',
};
const loading = this.loading();
let res = await Api.post('/service/gitopn/getOwnRef', params);
if (res.respCode == SUCCESS) {
loading.close();
this.model.gidgrp.rec.ownref = res.data;
}
},
// 获取gitopn弹框表格数据
async queryGridEtyPromptDialogData(type, ptytyp) {
let params = {
userId: window.sessionStorage.userId || 'ZL',
ptytyp: ptytyp,
extkey: this.model.gidgrp[type.toLowerCase()].pts.extkey,
};
let res = await Api.post('/service/ptspta/list', params);
if (res.respCode == SUCCESS) {
this.root.$refs['etyDialog'].show = true;
this.root.promptData.data = res.data.ptaInfos;
this.root.promptData.type = type;
}
},
// 选中gitopn弹框表格的行数据
async selectGridEtyPromptData(row) {
let params = {
...row,
};
let res = await Api.post('/service/ptspta/fetch', params);
if (res.respCode == SUCCESS) {
this.$set(this.model.gidgrp, row.role.toLowerCase(), res.data);
}
},
// 业务信息=》基本信息=》支出目的
purposChange(key, value) {
this.handleChangeForm(key, value);
},
// 初始化保函开立类型码表下拉列表
async queryHndtypCodeTableList(trnName) {
let params = {
gitp: {
swiftflg: this.model.gitp.swiftflg,
},
gidgrp: {
rec: {
purpos: this.model.gidgrp.rec.purpos,
},
},
transName: trnName.toUpperCase(),
};
let res = await Api.post('/service/gitopn/initHndtyp', params);
if (res.respCode == SUCCESS) {
this.$set(this.codes, 'voHndtyp', res.data);
}
},
// 是否SWIFT格式修改--联动保函开立类型
handleChangeSwiftflg() {
this.queryHndtypCodeTableList(this.root.trnName);
},
// 支出目的修改--联动保函开立类型
handleChangePurpos() {
this.queryHndtypCodeTableList(this.root.trnName);
},
buildLiaccv () {
let params = {
...buildFn.buildCommonData(this.model, this.trnName),
liaccvg: this.model.liaccv.liaccvg,
oldamt: this.model.liaccv.oldamt,
chgamt: this.model.liaccv.chgamt,
concur: this.model.liaccv.concur,
};
return params
},
// 公共组件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
}
}
},
};
import Utils from "~/utils"
/**
* Botcan Check规则
*/
let checkObj = {
"botp0.recget.sdamod.dadsnd":[
{type: "string", required: false, message: "必输项"},
{max: 16,message:"长度不能超过16"}
],
"bodgrp.rec.ownref":[
{type: "string", required: false, message: "必输项"},
{max: 16,message:"长度不能超过16"}
],
"botp0.recget.sdamod.seainf":[
{type: "string", required: false, message: "必输项"},
{max: 3,message:"长度不能超过3"}
],
"bodgrp.rec.nam":[
{type: "string", required: false, message: "必输项"},
{max: 40,message:"长度不能超过40"}
],
"bodgrp.cbs.max.amt":[
{type: "string", required: false, message: "必输项"},
{max: 18,message:"整数位不能超过14位"},
{pattern: /(^\d+$)|(^\.\d{1,3}$)|(^\d+\.\d{1,3}$)/, message: "小数位不能超过3位" }
],
"bodgrp.drr.pts.ref":[
{type: "string", required: false, message: "必输项"},
{max: 16,message:"长度不能超过16"}
],
"bodgrp.cbs.opn1.amt":[
{type: "string", required: false, message: "必输项"},
{max: 18,message:"整数位不能超过14位"},
{pattern: /(^\d+$)|(^\.\d{1,3}$)|(^\d+\.\d{1,3}$)/, message: "小数位不能超过3位" }
],
"bodgrp.drr.pts.nam":[
{type: "string", required: false, message: "必输项"},
{max: 40,message:"长度不能超过40"}
],
"bodgrp.col.pts.ref":[
{type: "string", required: false, message: "必输项"},
{max: 16,message:"长度不能超过16"}
],
"bodgrp.col.pts.nam":[
{type: "string", required: false, message: "必输项"},
{max: 40,message:"长度不能超过40"}
],
"bodgrp.rec.docsta":[
{type: "string", required: false, message: "必输项"},
{max: 40,message:"长度不能超过40"}
],
"bodgrp.rec.matdat":[
//{type: "date", required: false, message: "输入正确的日期"}
],
"bodgrp.rec.matpercnt":[
//{type: "int", required: false, message: "必输项"},
//{max: 3,message:"长度不能超过3"}
],
"bodgrp.dre.pts.ref":[
{type: "string", required: false, message: "必输项"},
{max: 16,message:"长度不能超过16"}
],
"bodgrp.dre.pts.nam":[
{type: "string", required: false, message: "必输项"},
{max: 40,message:"长度不能超过40"}
],
"bodgrp.rec.rcvdat":[
//{type: "date", required: false, message: "输入正确的日期"}
],
"bodgrp.rec.predat":[
//{type: "date", required: false, message: "输入正确的日期"}
],
"strinf":[
//{type: "string", required: true, message: "必输项"},
{max: 1750,message:"长度不能超过1750"}
],
"setmod.ref":[
{type: "string", required: false, message: "必输项"},
{max: 16,message:"长度不能超过16"}
],
"setmod.docamt":[
{type: "number", required: false, message: "必输项"},
{max: 18,message:"整数位不能超过14位"},
{pattern: /(^\d+$)|(^\.\d{1,3}$)|(^\d+\.\d{1,3}$)/, message: "小数位不能超过3位" }
],
"setmod.zmqacc":[
{type: "string", required: false, message: "必输项"},
{max: 20,message:"长度不能超过20"}
],
"mtabut.coninf.oitinf.oit.inftxt":[
//{type: "string", required: true, message: "必输项"},
//{max: 60,message:"长度不能超过60"}
],
"mtabut.coninf.oitset.oit.inftxt":[
//{type: "string", required: true, message: "必输项"},
//{max: 60,message:"长度不能超过60"}
],
"mtabut.coninf.conexedat":[
//{type: "date", required: false, message: "输入正确的日期"}
],
"mtabut.coninf.usr.extkey":[
{type: "string", required: false, message: "必输项"},
{max: 8,message:"长度不能超过8"}
],
"trnmod.trndoc.advnam":[
{type: "string", required: false, message: "必输项"},
{max: 50,message:"长度不能超过50"}
],
"trnmod.trndoc.amdapl":[
{type: "string", required: true, message: "必输项"},
{max: 50,message:"长度不能超过50"}
],
"trnmod.trndoc.advdoc":[
{type: "string", required: false, message: "必输项"},
{max: 1,message:"长度不能超过1"}
],
"trnmod.trndoc.filrecv":[
{type: "string", required: false, message: "必输项"},
{max: 16,message:"长度不能超过16"}
],
"trnmod.trndoc.doctrestm":[
{type: "string", required: false, message: "必输项"},
{max: 1,message:"长度不能超过1"}
],
"trnmod.trndoc.condocstm":[
{type: "string", required: false, message: "必输项"},
{max: 1,message:"长度不能超过1"}
],
"trnmod.trndoc.rcvatt.seainf":[
{type: "string", required: false, message: "必输项"},
{max: 3,message:"长度不能超过3"}
],
"setmod.dspflg" :null,
"botp0.recget.sdamod.dadsnd" :null,
"mtabut.coninf.conexedat" :null,
"setmod.docamt" :null,
}
for (const key in checkObj) {
if (Object.hasOwnProperty.call(checkObj, key)) {
checkObj[key] = checkObj[key] ? checkObj[key] : Utils.reflectCheck(key)
}
}
export default checkObj
export default class Botcan {
constructor() {
this.data = {
}
}
}
\ No newline at end of file
<template>
<div class="eibs-tab">
<el-collapse v-model="activeNames" @change="handleChange">
<el-collapse-item title="注销" name="canp">
<m-canp :model="model" :codes="codes" />
</el-collapse-item>
</el-collapse>
</div>
</template>
<script>
import commonProcess from "~/mixin/commonProcess";
import Event from "~/model/Getcan/Event"
import canp from "./Canp";
export default {
components: {
"m-canp": canp,
},
inject: ['root'],
props:["model","codes"],
mixins: [commonProcess],
data(){
return {
activeNames: ["canp"],
}
},
methods:{...Event},
created:function(){
}
}
</script>
<style>
</style>
\ No newline at end of file
<template>
<c-page title="出口托收闭卷">
<div class="eContainer">
<el-form
:model="model"
:rules="rules"
ref="modelForm"
label-width="120px"
label-position="left"
size="small"
:validate-on-rule-change="false"
>
<c-tabs v-model="tabVal" ref="elment" type="card" @tab-click="tabClick">
<!--业务信息 -->
<el-tab-pane label="业务信息" name="ovwp">
<c-content>
<m-ovwp :model="model" :codes="codes" />
</c-content>
</el-tab-pane>
<!-- 费用/账务 -->
<el-tab-pane label="费用/账务" name="engp,setpan,glepan">
<c-content>
<div class="eibs-tab">
<el-collapse v-model="activeNames">
<el-collapse-item title="表外记账" name="engp">
<!-- 表外记账 -->
<m-engp :model="model" :codes="codes" />
</el-collapse-item>
<el-collapse-item title="结算" name="setpan">
<!-- 结算 -->
<m-setpan :model="model" :codes="codes" />
</el-collapse-item>
<el-collapse-item title="账务" name="glepan">
<!-- 会计分录 -->
<m-glepan :model="model" :codes="codes" />
</el-collapse-item>
</el-collapse>
</div>
</c-content>
</el-tab-pane>
<!--备查/附言 -->
<el-tab-pane label="备查/附言" name="coninfp">
<c-content>
<m-coninfp :model="model" :codes="codes"/>
</c-content>
</el-tab-pane>
<!--报文和面函 -->
<el-tab-pane label="报文/面函" name="docpan">
<c-content>
<m-docpan :model="model" :codes="codes"/>
</c-content>
</el-tab-pane>
<!--附件 -->
<el-tab-pane label="附件信息" name="doctre">
<c-content>
<m-doctre :model="model" :codes="codes"/>
</c-content>
</el-tab-pane>
</c-tabs>
</el-form>
<c-grid-ety-prompt-dialog
ref="etyDialog"
:promptData="promptData"
v-on:select-ety="selectEty"
></c-grid-ety-prompt-dialog>
<c-function-btn
:handleSubmit="handleSubmit"
:handleCheck="handleCheck"
:handleStash="handleStash"
>
<!-- <el-button size="small">备忘录</el-button>
<el-button size="small">影像信息</el-button>
<el-button size="small">保存模板</el-button>
<el-button size="small">使用模板</el-button>
<el-button size="small">制裁信息</el-button>
<el-button size="small">拆分报文</el-button>
<el-button size="small">提示</el-button> -->
</c-function-btn>
</div>
</c-page>
</template>
<script>
import Api from "~/service/Api";
import Utils from "~/utils/index";
import CodeTable from "~/config/CodeTable";
import Botcan from "~/model/Botcan";
import commonProcess from "~/mixin/commonProcess";
import commonFuncs from "~/mixin/commonFuncs";
import Check from "~/model/Botcan/Check";
import Default from "~/model/Botcan/Default";
import Pattern from "~/model/Botcan/Pattern";
import Canp from "./Canp";
import Doctre from "~/views/Public/Doctre";
import Setpan from "~/components/business/setmod/views";
import Docpan from "~/views/Public/Docpan"
import Coninfp from "~/views/Public/Coninfp"
import Engp from "~/views/Public/Engp";
import Glepan from "~/views/Public/Glepan";
import Ovwp from "./Ovwp.vue";
export default {
name: "Botcan",
components: {
"m-canp": Canp,
"m-setpan": Setpan,
"m-coninfp": Coninfp,
"m-docpan": Docpan,
"m-doctre": Doctre,
"m-engp": Engp,
"m-glepan" : Glepan,
"m-ovwp" : Ovwp,
},
provide() {
return {
root: this,
};
},
mixins: [commonProcess,commonFuncs], // 里面包含了Default、Check等的公共处理
data() {
return {
tabVal: "ovwp",
trnName: "botcan",
model: new Botcan().data,
checkRules: Check,
defaultRules: Default,
pattern: Pattern,
rules: null,
codes: { ...CodeTable },
activeNames: ["engp"],
};
},
methods: {
// tabClick() {},
},
created: async function() {
console.log("进入botcan交易");
let rtnmsg = await this.init({});
if (rtnmsg.respCode == SUCCESS) {
//TODO 处理数据逻辑
//更新数据
this.updateModel(rtnmsg.data)
if (this.isInDisplay) {
this.restoreDisplay();
}
} else {
this.$notify.error({ title: "错误", message: "服务请求失败!" });
}
},
};
</script>
<style></style>
<template>
<ReviewWrapper>
<Botcan></Botcan>
</ReviewWrapper>
</template>
<script>
import Botcan from "~/business/botcan/views";
import { ReviewWrapper } from "~/components/gj-common.min.js";
export default {
name: "ReviewBotcan",
components: { ReviewWrapper, Botcan },
created() {},
mounted() {},
};
</script>
<style></style>
......@@ -71,5 +71,6 @@ const Business = [
{ path: 'botsel', component: () => import('~/business/botsel/views'), name: 'botsel', meta: { title: '出口托收入口交易BOTSEL' } },
{ path: 'botacc', component: () => import('~/business/botacc/views'), name: 'botacc', meta: { title: '出口托收承兑' } },
{ path: 'botdav', component: () => import('~/business/botdav/views'), name: 'botdav', meta: { title: '出口托收寄单' } },
{ path: 'botcan', component: () => import('~/business/botcan/views'), name: 'botcan', meta: { title: '出口托收注销' } },
]
export default Business
\ No newline at end of file
......@@ -33,6 +33,7 @@ const Business = [
{ path: 'reviewlitcan', component: () => import('~/review/ReviewLitcan.vue'), name: 'reviewlitcan', meta: { title: '复核-litcan' } },
{ path: 'reviewlitdla', component: () => import('~/review/ReviewLitdla.vue'), name: 'reviewlitdla', meta: { title: '复核-litdla' } },
{ path: 'reviewlitrog', component: () => import('~/review/ReviewLitrog.vue'), name: 'reviewlitrog', meta: { title: '复核-litrog' } },
{ path: 'reviewbotcan', component: () => import('~/review/ReviewBotcan.vue'), name: 'reviewbotcan', meta: { title: '复核-botcan' } },
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment