Commit 096a98e9 by chengzhuoshen

Merge remote-tracking branch 'origin/settle-test-20230110' into settle-test-20230110

# Conflicts:
#	src/business/gitopn/event/index.js
parents 61653abf a2c7cc52
......@@ -14,6 +14,7 @@
"bignumber.js": "^9.0.1",
"cluster": "^0.7.7",
"core-js": "^3.6.4",
"docx-preview": "^0.1.15",
"echarts": "^5.2.2",
"element-ui": "^2.13.2",
"es6-promise": "^4.2.8",
......
......@@ -640,4 +640,17 @@ margin-left: 120px;
}
.el-input--prefix .el-input__inner{
padding-left: 30px;
}
/* 分页pagination样式调整 */
.el-pagination {
margin-top: 5px;
display: flex;
justify-content: flex-end;
}
.el-pagination .el-icon-arrow-right:before {
display: none;
}
.el-pagination .el-input--small .el-input__inner {
padding-left: 0;
}
\ No newline at end of file
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.gidgrp.apl.pts.extkey) {
ptsptaList.push(this.buildPtspta(model.gidgrp.apl));
}
if (model.gidgrp.adv.pts.extkey) {
ptsptaList.push(this.buildPtspta(model.gidgrp.adv));
}
if (model.gidgrp.ben.pts.extkey) {
ptsptaList.push(this.buildPtspta(model.gidgrp.ben));
}
let dataObj = {
rec: {
objtyp: 'GID',
ownref: model.gidgrp.rec.ownref,
opndat: model.gidgrp.rec.opndat,
expdat: model.gidgrp.rec.expdat,
branchInr: model.gidgrp.rec.branchInr,
hndtyp: model.gidgrp.rec.hndtyp,
gartyp: model.gidgrp.rec.gartyp,
fingua: model.gidgrp.rec.fingua,
segtyp: model.gidgrp.ghd.segtyp,
fromflg: model.gidgrp.rec.fromflg,
othersno: model.gidgrp.rec.othersno,
sndto: model.gidgrp.rec.sndto,
swiftflg: model.gitp.swiftflg,
giduil: model.gidgrp.rec.giduil,
purpos: model.gidgrp.rec.purpos,
revflg: model.gidgrp.rec.revflg,
cnfsta: model.gidgrp.rec.cnfsta,
},
cbsMap: {
MAX: model.gidgrp.cbs.max,
OPN1: model.gidgrp.cbs.opn1,
MAC: model.gidgrp.cbs.mac,
MAC2: model.gidgrp.cbs.mac2,
OPC2: model.gidgrp.cbs.opc2,
CNF: model.gidgrp.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,
};
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
},
builDocpan (model, trnName) {
let params = {
...this.buildCommonData(model, trnName),
};
return params
},
builCcvpan (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
}
}
\ 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 Api from "~/service/Api"
import GitopnRequest from "../model/GitopnRequest"
export default {
mixins: [commonFunctions],
methods: {
...setmod,
...glentry,
...engp,
...docpan,
...ccvpan,
// 提交
handleSubmit() {
console.log('提交', this.model);
},
// 检核
async handleCheck() {
const loading = this.loading('正在校验数据');
const rtnmsg = await Api.post('/service/gitopn/checkAll', {
...this.model,
transName: this.trnName,
userId: window.sessionStorage.userId || 'ZL',
});
if (rtnmsg.respCode === SUCCESS) {
let errorRules = rtnmsg.data
Object.keys(errorRules).map((ruleKey) => {
// 此处判断是为了区分,如果在前端做了校验后端也校验了就不采用自定义校验规则
if (!this.rules[ruleKey]) {
this.rules[ruleKey] = [
{
validator: (rule, value, callback) => {
callback(new Error(errorRules[ruleKey]))
},
trigger: ['change', 'blur']
}
]
}
})
console.log('rules', this.rules)
this.$refs['modelForm'].validate((valid) => {
console.log('valid', valid)
})
}
// this.$notify({
// title: '成功',
// message: '校验成功',
// type: 'success',
// });
loading.close();
},
// 暂存
async handleStash() {
const res = await Api.post('/service/gitopn/txnHold', {
...this.model,
transName: this.trnName,
userId: window.sessionStorage.userId || 'ZL',
});
console.log('暂存', res);
},
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;
}
},
// 点击获取按钮拉取当前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);
methods: {
//组GitopnRequest
buildGitopnRequest() {
......@@ -140,4 +307,5 @@ export default {
this.queryHndtypCodeTableList(this.root.trnName)
}
},
}
\ No newline at end of file
},
};
......@@ -71,7 +71,7 @@ export default {
{max: 8,message:"长度不能超过8"}
],
"gitp.indirectswiadd":[
{type: "string", required: true, message: "必输项"},
{required: true, message: "必输项"},
{max: 9750,message:"长度不能超过9750"}
],
"gidgrp.rec.orcrat":[
......@@ -203,7 +203,7 @@ export default {
{max: 65,message:"长度不能超过65"}
],
"gidgrp.blk.gtxgidtxtc":[
{type: "string", required: true, message: "必输项"},
{required: true, message: "必输项"},
{max: 32500,message:"长度不能超过32500"}
],
"gitp.recget.sdamod.dadsnd":[
......
......@@ -493,15 +493,14 @@
label="直接Swift添加"
prop="gitp.indirectswiadd"
>
<c-input-xml
<c-input-textarea
type="textarea"
:maxRows="10"
:model="model.gitp.indirectswiadd"
v-model="model.gitp.indirectswiadd"
maxlength="9750"
show-word-limit
placeholder="请输入直接Swift添加"
@change="commonExecuteRule('gitp.indirectswiadd')"
></c-input-xml>
></c-input-textarea>
</el-form-item>
</c-col>
......@@ -634,9 +633,8 @@
</template>
<script>
import event from '../event';
import InputXml from "~/components/InputXml";
export default {
components: { InputXml },
components: {},
inject: ["root"],
props: ["model", "codes"],
mixins: [event],
......
......@@ -9,21 +9,21 @@
label="保函文本可变因素"
prop="gidgrp.blk.gidtxt"
>
<c-xml-format-editor
:model="model.gidgrp.blk.gidtxt"
<c-xml-format-editor-new
v-model="model.gidgrp.blk.gidtxt"
:disabled="model.gitp.gidtxtmodflg == ''"
placeholder="请输入保函文本可变因素"
></c-xml-format-editor>
></c-xml-format-editor-new>
</el-form-item>
<el-form-item
v-if="model.gitp.gidtxtmodflg == 'X'"
label="保函文本可变因素"
prop="gidgrp.blk.gtxgidtxt"
>
<c-xml-format-editor
:model="model.gidgrp.blk.gtxgidtxt"
<c-xml-format-editor-new
v-model="model.gidgrp.blk.gtxgidtxt"
placeholder="请输入保函文本可变因素"
></c-xml-format-editor>
></c-xml-format-editor-new>
</el-form-item>
</c-col>
</c-col>
......@@ -33,6 +33,7 @@
v-model="model.gitp.gidtxtmodflg"
style="margin: 0 0 0 10px"
class="checkbox-left"
value="X"
>修改保函文本</c-checkbox
>
</c-col>
......
......@@ -9,29 +9,29 @@
label="保函文本可变因素"
prop="gidgrp.blk.gtxgidtxt"
>
<c-input-xml
:disabled="model.gitp.gidtxtmodflgc == ''"
<c-input-textarea
type="textarea"
:disabled="model.gitp.gidtxtmodflgc == ''"
:maxRows="14"
:model="model.gidgrp.blk.gtxgidtxtc"
v-model="model.gidgrp.blk.gtxgidtxtc"
maxlength="32500"
show-word-limit
placeholder="请输入保函文本可变因素"
></c-input-xml>
></c-input-textarea>
</el-form-item>
<el-form-item
v-if="model.gitp.gidtxtmodflgc == 'X'"
label="保函文本可变因素 - 抵消保函文本"
prop="gidgrp.blk.gtxgidtxtc"
>
<c-input-xml
<c-input-textarea
type="textarea"
:modle="model.gidgrp.blk.gtxgidtxtc"
v-model="model.gidgrp.blk.gtxgidtxtc"
:maxRows="16"
maxlength="32500"
show-word-limit
placeholder="请输入保函文本可变因素 - 抵消保函文本"
></c-input-xml>
></c-input-textarea>
</el-form-item>
</c-col>
</c-col>
......@@ -71,7 +71,6 @@
>允许</c-checkbox
>
</c-col>
<c-col :span="24">
<c-button
disabled
......@@ -126,10 +125,9 @@
</div>
</template>
<script>
import IStreamInput from "~/components/IStreamInput";
import event from '../event'
export default {
components: { IStreamInput },
components: { },
inject: ["root"],
props: ["model", "codes"],
mixins: [event],
......@@ -137,7 +135,7 @@ export default {
return {};
},
methods: {},
created: function () {},
created () {},
};
</script>
<style>
......
......@@ -242,7 +242,7 @@
v-model="model.gidgrp.blk.apprul"
style="width: 100%"
placeholder="请选择申请条款"
:code="getValues('gidgrp.blk.apprul','apprulc2')"
:code="codes.apprulc1"
>
</c-select>
</el-form-item>
......@@ -269,7 +269,7 @@
style="width: 100%"
placeholder="请选择保函文本语言种类"
:code="getValues('gidgrp.rec.giduil', 'uiltxt')"
:code="codes.uiltxt1"
@change="executeRule('gidgrp.rec.giduil')"
>
</c-select>
......@@ -302,7 +302,7 @@
v-model="model.gidgrp.rec.gtxinr"
style="width: 100%"
placeholder="请选择保函文本格式"
:code="getValues('gidgrp.rec.gtxinr','gtxinr')"
:code="codes.gtxinr"
>
</c-select>
</el-form-item>
......@@ -371,7 +371,7 @@
v-model="model.gidgrp.rec.atxinr"
style="width: 100%"
placeholder="请选择保函文本格式"
:code="getValues('gidgrp.rec.atxinr')"
:code="codes.gtxinr"
@change="executeNotify(null, true)"
>
</c-select>
......
......@@ -46,21 +46,13 @@
</c-col>
<c-col :span="24">
<c-col :span="12">
<el-form-item label="保函类型 " prop="gidgrp.rec.gartypc">
<el-form-item label="保函类型" prop="gidgrp.rec.gartypc">
<c-select
v-model="model.gidgrp.rec.gartypc"
style="width: 100%"
placeholder="请选择保函类型 "
:code="getValues('gidgrp.rec.gartypc','gartypc')"
:code="codes.gartypc"
>
<!-- -->
<!-- <el-option
v-for="item in codes.gartypc"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option> -->
</c-select>
</el-form-item>
</c-col>
......@@ -243,7 +235,6 @@
size="small"
type="primary"
style="margin: 5px 0 0 10px;width:100px;float:left"
@click="onGitpButdifexptxt"
>
查看系统文本
</c-button>
......@@ -252,7 +243,6 @@
size="small"
type="primary"
style="margin: 5px 0 0 10px;width:100px;float:left"
@click="onGitpButdifhisexptxt"
>
查看历史文本
</c-button>
......
......@@ -66,7 +66,7 @@
v-model="model.gidgrp.rec.delto"
style="width: 100%"
placeholder="请选择交付收款人"
:code="getValues('gidgrp.rec.delto','delto1')"
:code="getDelto"
>
</c-select>
</el-form-item>
......@@ -218,18 +218,44 @@
<script>
import _ from "lodash";
import event from '../event'
import Utils from "~/utils";
import commonProcess from "~/mixin/commonProcess"
export default {
inject: ["root"],
props: ["model", "codes"],
mixins: [commonProcess, event],
computed: {
getDelto () {
let list = [{
label: '其他',
value: 'OTHR'
}]
if (this.model.gidgrp.apl.pts.extkey) {
list.push({
label: '申请人',
value: 'APPL'
})
}
if (this.model.gidgrp.ben.pts.extkey) {
list.push({
label: '收益人',
value: 'BENE'
})
}
// if (this.model.gidgrp.ctr.pts.extkey) {
// list.push({
// label: '申请人',
// value: 'OBLI'
// })
// }
return list
}
},
data() {
return {};
},
methods: {},
created: function () {},
created () {},
};
</script>
<style scoped>
......
......@@ -105,7 +105,6 @@
</template>
<script>
import event from '../event'
import commonProcess from "~/mixin/commonProcess";
import formRules from '../model/check'
import CodeTable from "~/config/CodeTable";
import Gitopn from "../model";
......@@ -139,6 +138,7 @@ import Docpan from "~/components/business/docpan/views";
import Doctre from "~/views/Public/Doctre";
import Limitbody from "~/views/Public/Limitbody";
import moment from "moment";
import { mapState } from 'vuex';
export default {
name: "Gitopn",
......@@ -173,14 +173,18 @@ export default {
"m-limitbody": Limitbody,
"m-aacp": Aacp,
},
computed: {
...mapState({
toHandleRowData: (state) => state.toHandleRowData
})
},
provide() {
return {
root: this,
activeNames: ["ovwp"],
};
},
// 里面包含了Default、Check等的公共处理
mixins: [commonProcess, event],
mixins: [event],
data() {
return {
tabVal: "ovwp",
......@@ -254,7 +258,7 @@ export default {
this.model.cnybop.outflg = '2'
this.model.cnybop.traflg = '2'
this.model.cnybop.vouflg = '2'
this.model.gidgrp.blk.apprul = 'UCP '
this.model.gidgrp.blk.apprul = 'URDG'
this.model.gidgrp.blk.apprulc = 'NONE'
this.model.gidgrp.cbs.cnf.amt = '0.000'
this.model.gidgrp.cbs.mac2.amt = '0.000'
......@@ -281,7 +285,7 @@ export default {
this.model.gitp.labissref = 'Issuing Bank\'s Ref.'
this.model.gitp.laborcdat = 'Contract Date'
this.model.gitp.letterlabel = '面函标题'
this.model.gitp.usr.extkey = 'ZL'
this.model.gitp.usr.extkey = window.sessionStorage.userId || 'ZL'
this.model.liaall.exttotamt = '0.000'
this.model.liaall.exttotoldamt = '0.000'
this.model.liaccv.cshpct = '0.00'
......@@ -293,12 +297,23 @@ export default {
this.model.liaall.limmod.ccvamt = '0.000'
this.model.liaall.limmod.comamt = '0.000'
this.model.liaall.misamt = '0.000'
this.model.pageId = 'CtxCache-4079be82-bb5e-4ced-835e-0f20d3268ec2'
this.model.setmod.dspflg = 'CG'
},
async init () {
const params = {
...this.toHandleRowData
}
const res = await Api.post('/service/xxx/xxx', {
...params,
transName: this.trnName,
userId: window.sessionStorage.userId || 'ZL',
});
console.log(res)
}
},
created () {
this.initModelData()
// this.initModelData()
// this.init()
this.queryHndtypCodeTableList(this.trnName)
},
mounted () {},
......
import Api from "~/service/Api"
import Api from '~/service/Api';
export default {
methods: {
async handleSearch() {
let opndatfrom = this.model.infcon.opndatfrom;
if(!opndatfrom || opndatfrom == ''){
this.$notify.error({ title: '错误', message: '查询开始日期必输!' });
return;
}
let opndatto = this.model.infcon.opndatto;
if(!opndatto || opndatto == ''){
this.$notify.error({ title: '错误', message: '查询结束日期必输!' });
return;
}
let params = {
...this.model.infcon,
fenlishi: this.model.fenlishi,
seapurpos: this.model.seapurpos,
seagtyp: this.model.seagtyp,
fromflg: this.model.fromflg,
cmtflg: this.model.cmtflg,
fingua: this.model.fingua,
}
let rtnmsg = await Api.post('/service/infgid', params)
if (rtnmsg.respCode == SUCCESS) {
this.stmData.data = [];
this.stmData.data = rtnmsg.data;
}
else {
this.$notify.error({ title: '错误', message: '服务请求失败!' });
}
},
async handleReset() {
this.model.infcon.seaownref = ""
this.model.infcon.opndatfrom = new Date();
this.model.infcon.opndatto = new Date();
this.isGuarantee = "";
this.model.infcon.nam = "";
this.model.infcon.pty.extkey = "";
this.model.infcon.seapty = "";
this.model.infcon.searef = "";
this.model.infcon.pty.nam = "";
this.model.infcon.searol = "";
this.model.infcon.usr.extkey = "";
this.model.infcon.seasta = "";
this.model.infcon.seacur = "";
this.model.infcon.seaamtfr = "";
this.model.infcon.seaamtto = "";
this.model.seagtyp = "";
this.model.infcon.relflg = "";
this.model.infcon.hndtyp = "";
this.model.infcon.cxmflg = "";
this.model.seapurpos = "";
this.model.seahndtyp = "";
this.model.infcon.segtyp = "";
this.model.fromflg = "";
this.model.fenlishi = "";
this.model.cmtflg = "";
this.model.fingua = "";
},
methods: {
async handleSearch() {
let opndatfrom = this.model.infcon.opndatfrom;
if (!opndatfrom || opndatfrom == '') {
this.$notify.error({ title: '错误', message: '查询开始日期必输!' });
return;
}
let opndatto = this.model.infcon.opndatto;
if (!opndatto || opndatto == '') {
this.$notify.error({ title: '错误', message: '查询结束日期必输!' });
return;
}
let params = {
...this.model.infcon,
fenlishi: this.model.fenlishi,
seapurpos: this.model.seapurpos,
seagtyp: this.model.seagtyp,
fromflg: this.model.fromflg,
cmtflg: this.model.cmtflg,
fingua: this.model.fingua,
pageIndex: this.pagination.pageIndex,
pageSize: this.pagination.pageSize
};
let rtnmsg = await Api.post('/service/infgid/getList', params);
if (rtnmsg.respCode == SUCCESS) {
this.stmData.data = [];
this.stmData.data = rtnmsg.data.list;
this.pagination.total = rtnmsg.data.total
} else {
this.$notify.error({ title: '错误', message: '服务请求失败!' });
}
},
async handleReset() {
this.model.infcon.seaownref = '';
this.model.infcon.opndatfrom = new Date();
this.model.infcon.opndatto = new Date();
this.isGuarantee = '';
this.model.infcon.nam = '';
this.model.infcon.pty.extkey = '';
this.model.infcon.seapty = '';
this.model.infcon.searef = '';
this.model.infcon.pty.nam = '';
this.model.infcon.searol = '';
this.model.infcon.usr.extkey = '';
this.model.infcon.seasta = '';
this.model.infcon.seacur = '';
this.model.infcon.seaamtfr = '';
this.model.infcon.seaamtto = '';
this.model.seagtyp = '';
this.model.infcon.relflg = '';
this.model.infcon.hndtyp = '';
this.model.infcon.cxmflg = '';
this.model.seapurpos = '';
this.model.seahndtyp = '';
this.model.infcon.segtyp = '';
this.model.fromflg = '';
this.model.fenlishi = '';
this.model.cmtflg = '';
this.model.fingua = '';
},
// pageSize改变
handleSizeChange(val) {
console.log(`每页 ${val} 条`);
this.pagination.pageIndex = 1
this.pagination.pageSize = val
this.handleSearch()
},
// 页码改变
handleCurrentChange(val) {
console.log(`当前页: ${val}`);
this.pagination.pageIndex = val
this.handleSearch()
}
}
\ No newline at end of file
},
};
......@@ -15,7 +15,6 @@
<c-col :span="8">
<el-form-item
label="保函编号"
prop="infcon.ownref"
style="width: 100%"
>
<c-input
......@@ -29,7 +28,6 @@
<c-col :span="8">
<el-form-item
label="开立日期"
prop="infcon.opndatfrom"
style="width: 100%"
>
<c-col :span="11">
......@@ -70,7 +68,6 @@
<c-col :span="8">
<el-form-item
label="当事人编号"
prop="infcon.seapty"
style="width: 100%"
>
<c-input
......@@ -88,7 +85,6 @@
<c-col :span="8">
<el-form-item
label="当事人名称"
prop="infcon.nam"
style="width: 100%"
>
<c-input
......@@ -102,7 +98,6 @@
<c-col :span="8">
<el-form-item
label="当事人角色"
prop="infcon.searol"
style="width: 100%"
>
<c-select
......@@ -123,7 +118,6 @@
<c-col :span="8">
<el-form-item
label="当事人参考号"
prop="infcon.searef"
style="width: 100%"
>
<c-input
......@@ -133,10 +127,9 @@
></c-input>
</el-form-item>
</c-col>
<!-- <c-col :span="8">
<c-col :span="8">
<el-form-item
label="业务简略信息"
prop="infcon.nam"
style="width: 100%"
>
<c-input
......@@ -145,24 +138,22 @@
placeholder="请输入业务简略信息"
></c-input>
</el-form-item>
</c-col> -->
<!-- <c-col :span="8">
</c-col>
<c-col :span="8">
<el-form-item
label="当事人编号"
prop="infcon.etyextkey"
style="width: 100%"
>
<c-input
v-model="model.infcon.etyextkey"
v-model="model.infcon.seapty"
maxlength="16"
placeholder="请输入当事人编号"
></c-input>
</el-form-item>
</c-col> -->
</c-col>
<!-- <c-col :span="8">
<el-form-item
label="当事人BIC编码"
prop="infcon.seapty"
style="width: 100%"
>
<c-input
......@@ -176,7 +167,6 @@
<c-col :span="8">
<el-form-item
label="版本状态"
prop="infcon.relflg"
style="width: 100%"
>
<c-select
......@@ -190,7 +180,6 @@
<c-col :span="8">
<el-form-item
label="处理类型"
prop="infcon.hndtyp"
style="width: 100%"
>
<c-select
......@@ -213,7 +202,6 @@
<!-- <c-col :span="8">
<el-form-item
label="客户经理"
prop="infcon.usr.extkey"
style="width: 100%"
>
<c-input
......@@ -227,7 +215,6 @@
<c-col :span="8">
<el-form-item
label="业务状态"
prop="infcon.statsus"
style="width: 100%"
>
<c-select
......@@ -249,7 +236,6 @@
<c-col :span="8">
<el-form-item
label="币种"
prop="infcon.seacur"
style="width: 100%"
>
<c-select
......@@ -270,7 +256,6 @@
<c-col :span="8">
<el-form-item
label="是否显示查询码"
prop="infcon.cxmflg"
style="width: 100%"
>
<c-select
......@@ -291,7 +276,6 @@
<c-col :span="8">
<el-form-item
label="金额区间"
prop="infcon.seaamtfr"
style="width: 100%"
>
<c-col :span="11">
......@@ -317,7 +301,6 @@
<c-col :span="8">
<el-form-item
label="会议目的"
prop="seapurpos"
style="width: 100%"
>
<c-select
......@@ -335,14 +318,13 @@
</c-select>
</el-form-item>
</c-col>
<!-- <c-col :span="8">
<c-col :span="8">
<el-form-item
label="处理类型"
prop="seahndtyp"
style="width: 100%"
>
<c-select
v-model="model.seahndtyp"
v-model="model.hndtyp"
style="width: 100%"
placeholder="请选择处理类型"
>
......@@ -354,11 +336,10 @@
></el-option>
</c-select>
</el-form-item>
</c-col> -->
</c-col>
<c-col :span="8">
<el-form-item
label="保函文本类型"
prop="seagtyp"
style="width: 100%"
>
<c-select
......@@ -374,7 +355,6 @@
<c-col :span="8">
<el-form-item
label="特殊保函类型"
prop="infcon.segtyp"
style="width: 100%"
>
<c-select
......@@ -389,7 +369,6 @@
<c-col :span="8">
<el-form-item
label="电子渠道类型"
prop="fromflg"
style="width: 100%"
>
<c-select
......@@ -410,7 +389,6 @@
<c-col :span="8">
<el-form-item
label="分离式保函"
prop="fenlishi"
style="width: 100%"
>
<c-select
......@@ -431,7 +409,6 @@
<el-form-item
label=""
style="margin-left: 218px"
prop="model.cmtflg"
>
<c-checkbox v-model="model.cmtflg">跨境人民币保函</c-checkbox>
</el-form-item>
......@@ -441,7 +418,6 @@
<el-form-item
label=""
style="margin-left: 218px"
prop="model.fingua"
>
<c-checkbox v-model="model.fingua">融资性对外担保</c-checkbox>
</el-form-item>
......@@ -507,14 +483,7 @@
trigger="click"
:ref="'popover_' + scope.row.IDX"
>
<div
style="
text-align: right;
margin-top: -30px;
margin-right: 5px;
font-size: 16px;
"
>
<div style="text-align: right;margin-top: -30px;margin-right: 5px;font-size: 16px;">
<span
class="el-icon-close"
@click="closeTrn('popover_' + scope.row.IDX)"
......@@ -561,6 +530,18 @@
</template>
</el-table-column>
</el-table>
<div class="pagination-box">
<el-pagination
style="margin-right: 30px;"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page.sync="pagination.pageIndex"
:page-sizes="[10, 20, 50, 100, 500]"
:page-size="pagination.pageSize"
layout="sizes, prev, pager, next"
:total="pagination.total">
</el-pagination>
</div>
</c-col>
</div>
</div>
......@@ -629,6 +610,11 @@ export default {
],
data: [],
},
pagination: {
pageIndex: 1,
pageSize: 10,
total: 0
}
};
},
methods: {
......@@ -675,7 +661,7 @@ export default {
},
};
</script>
<style>
<style scoped>
.el-dialog__body {
padding: 10px 5px 50px;
}
......@@ -683,4 +669,14 @@ export default {
.m-table-search {
padding: 20px 0px 10px 0px;
}
.pagination-box {
width: 100%;
height: 30px;
display: flex;
align-items: center;
justify-content: flex-end;
padding: 0 10px;
background: #fff;
margin-top: 5px;
}
</style>
......@@ -9,9 +9,7 @@
</div>
</template>
<script>
import Api from "~/service/Api";
import CodeTable from "~/config/CodeTable";
import commonProcess from "~/mixin/commonProcess";
import Infgid from "../model";
import Infsea from "./Infsea";
......@@ -25,7 +23,6 @@ export default {
root: this,
};
},
mixins: [commonProcess], // 里面包含了Default、Check等的公共处理
data() {
return {
tabVal: "",
......@@ -35,24 +32,8 @@ export default {
codes: { ...CodeTable },
};
},
methods: {
myTabClick(tab) {
this.tabClick(tab);
/**
* do it yourself
**/
},
},
created: async function () {
console.log("进入infgid交易");
let rtnmsg = await this.init({});
if (rtnmsg.respCode == SUCCESS) {
this.updateModel(rtnmsg.data);
//TODO 处理数据逻辑
} else {
this.$notify.error({ title: "错误", message: "服务请求失败!" });
}
},
methods: {},
created () {},
};
</script>
<style>
......
import Api from '~/service/Api';
import moment from 'moment';
export default {
methods: {
async handleReset() {
this.model.chkinc = '';
this.model.chkdzt = '';
this.model.chkpen = '';
this.model.chkcor = '';
this.model.chkaut = '';
this.model.chkdel = '';
this.model.chktco = '';
this.model.chkcan = '';
this.model.selobj = '';
this.model.seltxt = '';
this.model.usfmod.flt = '';
this.model.inidatfro = '';
this.model.inidattil = '';
this.model.dflg = '1';
this.model.chkypt = '';
this.model.yptinf = '';
},
//点击查询按钮时,判断“来源”是否有数据
async handleSearch() {
console.log('this', this.sourceList);
if (!this.sourceList.length) {
this.$notify.error({ title: '错误', message: '来源不能为空!' });
return;
}
const params = {
...this.model,
sourceList: this.sourceList,
userId: window.sessionStorage.userId || 'ZL',
pageSize: this.pagination.pageSize,
pageNo: this.pagination.pageIndex,
inidatfro: moment(this.model.inidatfro).format('YYYY-MM-DD'),
inidattil: moment(this.model.inidattil).format('YYYY-MM-DD'),
};
const res = await Api.post('/service/sptsel/list', params);
if (res.respCode === SUCCESS) {
this.stmData.data = res.data.records;
this.pagination.total = res.data.total;
this.$store.commit('setTaskList', {
key: 'sptsel',
val: this.stmData.data.length,
});
}
},
async onDetails(idx, row) {
let inr = row.inr;
this.$router.push({ path: 'business-new/sptpopup', query: { inr: inr } });
},
async continueEdit(row, scope) {
this.updateToHandleRowData(row)
let trnName = row.frm.toLowerCase();
this.$router.push({
name: trnName.charAt(0).toUpperCase() + trnName.substring(1),
params: { prePageId: this.model.pageId },
});
},
// pageSize改变
handleSizeChange(val) {
console.log(`每页 ${val} 条`);
this.pagination.pageIndex = 1;
this.pagination.pageSize = val;
this.handleSearch();
},
// 页码改变
handleCurrentChange(val) {
console.log(`当前页: ${val}`);
this.pagination.pageIndex = val;
this.handleSearch();
},
},
};
export default class Sptsel {
constructor() {
this.data = {
selobj: '', // Reference .selobj
inidatfro: '', // Date of entry of Transaction .inidatfro
inidattil: new Date(), // Date of entry of Transaction until .inidattil
seltxt: '', // Selection Name .seltxt
dflg: '', // 国内国际标志 .dflg
sourceList: [],
usfmod: '',
};
}
}
export default class Sptsel {
constructor() {
this.data = {
spt: {
frm: '',
sta: '',
objnam: '',
inftxt: '',
ownusr: '',
ownusg: '',
tardattim: '',
infdsp: '',
inr: '',
txt: '',
dattim: '',
usr: '',
hldflg: '',
cretrn: '',
},
};
}
}
<template>
<div class="eContainer-search">
<el-form
:model="model"
:rules="rules"
ref="modelForm"
tokenKey="modelForm"
label-width="120px"
size="small"
:validate-on-rule-change="false"
>
<c-content>
<m-menu :model="model" :codes="codes" ref="菜单" />
</c-content>
</el-form>
</div>
</template>
<script>
import CodeTable from "~/config/CodeTable";
import event from "../event";
import Menu from "./Menu";
import Sptsel from "../model";
export default {
name: "Sptsel",
components: {
"m-menu": Menu,
},
provide() {
return {
root: this,
};
},
mixins: [event],
computed: {},
data() {
return {
tabVal: "menu",
trnName: "sptsel",
model: new Sptsel().data,
rules: null,
codes: {
flt: CodeTable.flt,
dflg: CodeTable.dflg,
sptrelstatus: CodeTable.sptrelstatus,
},
};
},
methods: {},
};
</script>
<style>
</style>
import Utils from '~/utils/index';
import Api from '~/service/Api';
export default {
methods: {
//重置
async handleReset() {
this.model.bchcon = '';
this.model.trncorco.ownref = '';
this.model.trncorco.relflg = '0';
this.model.usrcon = '';
this.model.trncorco.inidatfro = '';
this.model.trncorco.inidattil = '';
this.model.atp.cod = '';
this.model.trncorco.dflg = '1';
this.model.atptxt = '';
this.model.searchAllUsers = false;
},
// 获取transaction弹框表格数据
async queryGridDialog(cod) {
let params = {
inr: '',
oldkey: '',
dissel: '',
usrcon: '',
rouflg: '',
sepflg: '',
cod: cod,
dtaflg: '',
lnkobj: '',
pageNum: 1,
pageSize: 10,
};
const loading = this.loading();
let res = await Api.post('/service/trnrel/findAtpCod', params);
if (res.respCode == SUCCESS) {
this.$refs['gridSelectDialog'].show = true;
this.$refs['gridSelectDialog'].cod = cod;
this.$refs['gridSelectDialog'].tableData = res.data && res.data.atpList.list;
this.$refs['gridSelectDialog'].pagination.total = Number((res.data && res.data.atpList.total) || 0);
}
loading.close();
},
// 选中transaction弹框表格的行数据
async selectGridEtyPromptData(val) {
this.$emit('changeModel', val)
},
//查询列表
async handleSearch() {
let inidatfro = this.model.trncorco.inidatfro;
if (!inidatfro || inidatfro == '') {
this.$notify.error({ title: '错误', message: '查询开始日期必输!' });
return;
}
let inidattil = this.model.trncorco.inidattil;
if (!inidattil || inidattil == '') {
this.$notify.error({ title: '错误', message: '查询结束日期必输!' });
return;
}
if (this.model.trncorco.relflg == '') {
this.model.trncorco.relflg = '0';
}
let params = {
ownref: this.model.trncorco.ownref,
inidattil: this.model.trncorco.inidattil,
inidatfro: this.model.trncorco.inidatfro,
usrcon: this.model.usrcon,
relflg: this.model.trncorco.relflg,
bchcon: this.model.bchcon,
cod: this.model.atp.cod,
dflg: this.model.trncorco.dflg,
atptxt: this.model.atptxt,
bchtyp: '',
iniusr: '',
userId: 'ZL',
pageNum: this.pagination.pageIndex,
pageSize: this.pagination.pageSize
};
//查询接口
const loading = this.loading();
const res = await Api.post('/service/trnrel/getTenrelList', params);
if (res.respCode === 'AAAAAA') {
this.stmData.data = res.data.list;
this.pagination.total = Number(res.data.total);
this.$store.commit('setTaskList', {
key: 'trnrel',
val: this.stmData.data && this.stmData.data.length,
});
}
loading.close();
},
//交易代码
async onSeainf() {},
//交易详情
async onWaitDetail(idx, row) {
let viewurl = 'business/inftrnpsDetail';
let params = {
inr: row.inr,
};
const res = await Api.post('/service/trnrel/getTenrelDetailData', params);
if (res.respCode === 'AAAAAA') {
let model = res.data;
sessionStorage.setItem('InftrnpsDetail', JSON.stringify(model));
this.$router.push({ path: viewurl, query: {} });
} else {
const h = this.$createElement;
const msg = res.respMsg || '请求执行失败!';
this.$notify.error({
title: '错误',
message: h('p', { style: 'word-break:break-all;' }, msg),
});
}
},
//处理
async onHandle(idx, row) {
let trnName = row.trnName;
const operateId = await this.$store.dispatch(
'Transaction/setOperateFuns',
{
pass: this.onRelrow.bind(this, idx),
refuse: this.onReprow.bind(this, idx),
}
);
this.$router.push({
name: 'Review' + trnName.charAt(0).toUpperCase() + trnName.substring(1),
query: { trn: row['INR'], operateId: operateId },
params: { prePageId: this.model.pageId },
});
},
// pageSize改变
handleSizeChange(val) {
this.pagination.pageIndex = 1
this.pagination.pageSize = val
this.handleSearch()
},
// 页码改变
handleCurrentChange(val) {
this.pagination.pageIndex = val
this.handleSearch()
}
},
};
export default class Inftrnps {
constructor() {
this.data = {
trncorco: {
ownref: '', // Reference .trncorco.ownref
relflg: '0', // Status .trncorco.relflg
inidatfro: '', // Date of entry of Transaction .trncorco.inidatfro
inidattil: new Date(), // Date of entry of Transaction until .trncorco.inidattil
trnstm: '', // List of transaction sfor display .trncorco.trnstm
dflg: '1', // 国内证标志 .trncorco.dflg
selinr: {},
},
atp: {
cod: '', // Transaction Type .atp.cod
},
atptxt: '', // Transaction Text .atptxt
usrcon: '', // User .usrcon
bchcon: '', // Branch .bchcon
};
}
}
<template>
<el-dialog
:title="promptData.title"
:visible.sync="show"
custom-class="grid-ety"
:highlight-current-row="true"
width="60%"
:before-close="beforeClose"
>
<el-table
:data="tableData"
border
@row-dblclick="selectEty"
>
<el-table-column
v-for="(item, idx) in promptData.columns"
:key="idx"
:property="item.prop"
:label="item.label"
:width="item.width"
>
</el-table-column>
</el-table>
<el-pagination
layout="prev, pager, next, total, jumper"
:total="pagination.total"
:page-sizes="pagination.pageSizes"
:page-size="pagination.pageSize"
:current-page="pagination.currentPage"
@current-change="currentChange"
@size-change="handleSizeChange"
>
</el-pagination>
</el-dialog>
</template>
<script>
import Api from "~/service/Api";
import commonApi from '~/mixin/commonApi';
export default {
mixins: [commonApi],
data() {
return {
show: false,
cod: '',
tableData: [],
pagination: {
currentPage: 1,
pageSizes: [10, 20, 50, 100, 500],
pageSize: 10,
total: 0,
},
promptData: {
title: 'Select a Transaction',
columns: [
{
prop: 'cod',
label: 'Description'
},
{
prop: 'bus',
label: 'Bus. Sector'
},
{
prop: 'bustrnflg',
label: 'Business Trn.'
},
{
prop: 'reltyp',
label: 'Release Method'
},
{
prop: 'relamt',
label: 'Real. Amount'
},
{
prop: 'ccstyp',
label: 'Compliance Check'
},
{
prop: 'subflg',
label: 'Subcontr. -creating Trn.'
},
{
prop: 'sepflg',
label: 'Temp. Settl. allowed'
},
{
prop: 'rouflg',
label: 'Routing allowed'
},
{
prop: 'concreflg',
label: 'Allocate New Contract'
},
{
prop: 'negflg',
label: 'Need pass. Data to Exec.'
},
{
prop: 'jobflg',
label: 'Job operation allowed'
}
]
}
};
},
methods: {
async handleSearch() {
let params = {
inr: '',
oldkey: '',
dissel: '',
usrcon: '',
rouflg: '',
sepflg: '',
cod: this.cod,
dtaflg: '',
lnkobj: '',
pageNum: this.pagination.currentPage,
pageSize: this.pagination.pageSize,
};
const loading = this.loading();
let res = await Api.post('/service/trnrel/findAtpCod', params);
if (res.respCode == SUCCESS) {
this.tableData = res.data && res.data.atpList.list;
this.pagination.total = Number((res.data && res.data.atpList.total) || 0);
}
loading.close();
},
currentChange(val) {
this.pagination.currentPage = val;
this.handleSearch()
},
handleSizeChange(val) {
this.pagination.currentPage = 1;
this.pagination.pageSize = val;
this.handleSearch();
},
selectEty(row) {
this.$emit("selectEty", {
...row,
role: this.promptData.type
});
this.show = false;
this.currentPage = 1;
},
beforeClose(done) {
this.show = false;
this.currentPage = 1;
done();
},
},
};
</script>
<style>
.grid-ety .el-table .cell {
white-space: pre-wrap;
}
</style>
\ No newline at end of file
<template>
<div class="eibs-tab">
<el-form class="m-table-search-form" ref="paramsForm" label-position="right" label-width="110px"
size="small">
<el-row>
<c-col :span="24" style="">
<c-col :span="8">
<el-form-item label="业务编号" prop="trncorco.ownref" style="width: 100%">
<c-input v-model="model.trncorco.ownref" maxlength="16" placeholder="请输入业务编号"></c-input>
</el-form-item>
</c-col>
<c-col :span="8">
<el-form-item label="创建时间" style="width: 100%" prop="trncorco.inidatfro">
<c-col :span="11">
<c-date-picker type="date" v-model="model.trncorco.inidatfro" style="width: 100%" placeholder="请选择创建时间">
</c-date-picker>
</c-col>
<c-col :span="2" style="text-align: center">
<label style="display: inline-block; width: 100%">-</label>
</c-col>
<c-col :span="11">
<c-date-picker type="date" v-model="model.trncorco.inidattil" style="width: 100%" placeholder="请选择创建时间">
</c-date-picker>
</c-col>
</el-form-item>
</c-col>
<c-col :span="8">
<el-form-item label="经办柜员" prop="usrcon" style="width: 100%">
<c-select v-model="model.usrcon" style="width: 100%" placeholder="请选择经办柜员">
<el-option v-for="item in codes.usrsort" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</c-select>
</el-form-item>
</c-col>
</c-col>
</el-row>
<el-row>
<c-col :span="24" style="">
<c-col :span="8">
<el-form-item label="业务状态" prop="trncorco.relflg" style="width: 100%">
<c-select v-model="model.trncorco.relflg" style="width: 100%" placeholder="请选择业务状态">
<el-option v-for="item in relflgCodes" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</c-select>
</el-form-item>
</c-col>
<c-col :span="8">
<el-form-item label="业务机构" prop="bchcon" style="width: 100%">
<c-select v-model="model.bchcon" style="width: 100%" placeholder="请选择业务机构">
<el-option v-for="item in codes.bchtyp" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</c-select>
</el-form-item>
</c-col>
<c-col :span="8">
<el-form-item label="交易代码" prop="atp.cod" style="width: 100%">
<c-col :span="24">
<c-col :span="20">
<c-input v-model="model.atp.cod" maxlength="6" style="width: 95%" placeholder="请输入交易代码"
@keyup.enter.native="queryGridDialog(model.atp.cod)"></c-input>
</c-col>
<c-col :span="4">
<c-button size="small" style="width:100%;margin-left:0" type="primary" @click="onSeainf"
icon="el-icon-search"></c-button>
</c-col>
</c-col>
</el-form-item>
</c-col>
</c-col>
<c-col :span="24" style="">
<c-col :span="8">
<el-form-item label="业务标志" prop="trncorco.dflg" style="width: 100%">
<c-select v-model="model.trncorco.dflg" style="width: 100%" placeholder="请选择业务标志">
<el-option v-for="item in codes.dflg" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</c-select>
</el-form-item>
</c-col>
<c-col :span="8">
<el-form-item label="交易名称" prop="atptxt" style="width: 100%">
<c-input v-model="model.atptxt" maxlength="37" placeholder="请输入交易名称"></c-input>
</el-form-item>
</c-col>
<c-col :span="8" style="text-align:right">
<el-button size="small" @click="handleReset">重置</el-button>
<el-button type="primary" icon="el-icon-search" size="small" @click="handleSearch">查询</el-button>
</c-col>
</c-col>
</el-row>
</el-form>
<c-col :span="24" style="">
<div style="border-bottom: 10px solid rgb(232, 232, 232)">
</div>
</c-col>
<el-row>
<c-col :span="24" style="">
<el-table :data="stmData.data" :columns="stmData.columns" style="width:100%" :max-height="maxHeight">
<el-table-column
v-for="(item, key) in stmData.columns"
:key="key"
:label="item.label"
:prop="item.prop"
>
</el-table-column>
<el-table-column fixed="right" prop="op" label="操作" width="140px">
<template slot="header">
<c-col :span="11" style="text-align:center"><span>操作</span></c-col>
</template>
<template slot-scope="scope">
<c-button style="margin-left: 0" size="small" @click="onWaitDetail(scope.$index,scope.row)">
详情
</c-button>
<c-button style="margin-left: 5px" size="small" type="primary" @click="onHandle(scope.$index,scope.row)">
处理
</c-button>
</template>
</el-table-column>
</el-table>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page.sync="pagination.pageIndex"
:page-sizes="[10, 20, 50, 100, 500]"
:page-size="pagination.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="pagination.total">
</el-pagination>
</c-col>
</el-row>
<!-- 交易代码选择弹框 -->
<grid-select-dialog ref="gridSelectDialog" @selectEty="selectGridEtyPromptData"></grid-select-dialog>
</div>
</template>
<script>
import commonApi from "~/mixin/commonApi"
import event from "../event";
import GridSelectDialog from "./GridSelectDialog";
export default {
inject: ["root"],
props: ["codes", "model"],
mixins: [commonApi, event],
components: {
GridSelectDialog,
},
data() {
return {
initdialog: false,
transactionStatus: {
busiNo: "",
modTimes: 0,
postCount: 0,
accCount: 0,
earnCount: 0,
earnAmt: 0,
},
stmData: {
columns: [
{ label: "交易代码", prop: "inifrm" },
{ label: "业务编号", prop: "ownref" },
{ label: "摘要信息", prop: "addtxt" },
{ label: "币种", prop: "reloricur" },
{ label: "金额", prop: "reloriamt" },
{ label: "创建时间", prop: "inidattim" },
{ label: "签名要求", prop: "relreq" },
{ label: "签名状态", prop: "relres" },
{ label: "经办柜员", prop: "iniusr" },
{ label: "业务状态", prop: "relflg" },
{ label: "业务机构", prop: "bchname" },
],
data: [],
},
maxHeight: 0,
pagination: {
pageIndex: 1,
pageSize: 10,
total: 0,
},
relrowDisabled: true,
relflgCodes: [
{ label: "全部", value: "0" },
{ label: "已修改", value: "C" },
{ label: "已拾取", value: "P" },
{ label: "已拒绝", value: "N" },
{ label: "等待", value: "W" },
],
Trnp0Visible: false,
};
},
methods: {
getInidatfro(){
let datetime = new Date();
datetime = datetime.setDate(datetime.getDate() - 1);
this.model.trncorco.inidatfro = new Date(datetime);
}
},
created() {
this.getInidatfro();
},
created() {
//适配不同页面下的table高度
//其中159为form表单高度,不同页面高度不同,可以考虑获取dom高度
this.maxHeight = (document.body.clientHeight || document.documentElement.clientHeight) - 60 - 40 - 40 - 42 - 40 - 159 - 10 - 37 - 60;
}
};
</script>
<style>
</style>
\ No newline at end of file
<template>
<div class="eContainer-search">
<el-form
:model="model"
:rules="rules"
ref="modelForm"
tokenKey="modelForm"
:validate-on-rule-change="false"
label-width="120px"
size="small"
>
<c-content>
<m-inftrnps :model="model" :codes="codes" ref="inftrnps" @changeModel="changeModel" />
</c-content>
</el-form>
</div>
</template>
<script>
import commonApi from "~/mixin/commonApi";
import CodeTable from "~/config/CodeTable";
import Inftrnps from "./Inftrnps";
import Trnrel from "../model";
import event from "../event";
export default {
name: "Trnrel",
components: {
"m-inftrnps": Inftrnps
},
mixins: [commonApi, event],
provide() {
return {
root: this,
};
},
data() {
return {
trnName: "trnrel",
model: new Trnrel().data,
rules: null,
codes: {
dflg: CodeTable.dflg,
bchtyp: CodeTable.bchtyp,
usrsort: CodeTable.usrsort,
},
};
},
methods: {
// 子组件改变model字段值
changeModel(val) {
let { cod } = val;
this.$set(this.model.atp, 'cod', cod)
}
}
};
</script>
<style>
</style>
\ No newline at end of file
......@@ -6,9 +6,9 @@
<div class="m-Btn-eContainer" v-if="!buttonHide && ((!isReview && !funcBtnHide) || showSetBtn)">
<div class="m-funcBtn-eContainer" v-if="!isReview && !buttonHide && !funcBtnHide">
<!-- 确认按钮暂时隐藏 -->
<!-- <el-button type="primary" v-show="root.judgeVisiableInfo('mtabut.usrcon')" size="small" @click="confirm" :loading="$store.state.Status.loading.confirm">{{ $t('buttons.confirm') }}</el-button> -->
<el-button type="primary" v-show="root.judgeVisiableInfo('mtabut.sav')" size="small" @click="start" :loading="$store.state.Status.loading.submit">{{ $t('buttons.submit') }}</el-button>
<el-button size="small" v-show="root.judgeVisiableInfo('mtabut.chk')" @click="check" :loading="$store.state.Status.loading.check">{{ $t('buttons.check') }}</el-button>
<!-- <el-button type="primary" size="small" @click="confirm" :loading="$store.state.Status.loading.confirm">{{ $t('buttons.confirm') }}</el-button> -->
<el-button type="primary" size="small" @click="start" :loading="$store.state.Status.loading.submit">{{ $t('buttons.submit') }}</el-button>
<el-button size="small" @click="check" :loading="$store.state.Status.loading.check">{{ $t('buttons.check') }}</el-button>
<el-button size="small" @click="save" :loading="$store.state.Status.loading.stash">{{ $t('buttons.stash') }}</el-button>
<el-button size="small" @click="handleCancel">{{ $t('buttons.quit') }}</el-button>
</div>
......
......@@ -8,9 +8,7 @@
:before-close="beforeClose"
>
<el-table
:data="
tableData.slice((currentPage - 1) * pageSize, currentPage * pageSize)
"
:data="tableData"
border
@row-dblclick="selectEty"
>
......
<template>
<el-input
:id="id"
ref="form-item"
v-model="model"
type="textarea"
v-bind="$attrs"
v-on="$listeners"
v-bind:disabled="disabled"
:rows="maxRows"
resize="none"
/>
</template>
<script>
export default {
props: {
id: {
type: String,
default: undefined
},
value: {
type: [String, Number],
default: undefined
},
disabled: {
type: Boolean,
default: false
},
maxRows: {
type: Number,
default: 3
}
},
computed: {
model: {
get () {
return this.value
},
set (newVal) {
this.$emit('input', newVal)
}
}
},
methods: {}
}
</script>
......@@ -152,4 +152,7 @@ export default {
/* .el-select.highlight .el-input .el-input__inner {
border-color: red;
} */
.c-highlight-content {
overflow: hidden;
}
</style>
\ No newline at end of file
<!-- 新格式的富文本组件 -->
<template>
<c-rich-text-editor
v-model="model"
v-bind="$attrs"
@blur="blurEvent"
></c-rich-text-editor>
</template>
<script>
// 保函文本
export default {
name: "XmlFormatEditorNew",
props: {
value: {
type: String,
default: ''
}
},
computed: {
model: {
get () {
return this.value
},
set (newVal) {
this.$emit('input',newVal )
}
}
},
data() {
return {};
},
methods: {
blurEvent () {
this.$emit('blur', this.model)
}
},
};
</script>
<style>
</style>
\ No newline at end of file
import LiaccvRequest from "../model/LiaccvRequest.js";
import Api from "~/service/Api";
import Utils from "~/utils";
import Api from '~/service/Api';
import Utils from '~/utils';
export default {
buildPtspta(ptsptaObj) {
let ptspta = {};
let pts = ptsptaObj.pts;
let adr = ptsptaObj.adr;
ptspta.rol=pts.rol;
ptspta.name=pts.nam;
ptspta.ptyinr=pts.ptyinr;
ptspta.ptainr=pts.ptainr;
ptspta.extkey=pts.extkey;
ptspta.dftdsp=pts.dftdsp;
ptspta.dftcur=pts.dftcur;
ptspta.dftact=pts.dftact;
ptspta.dftfeecur=pts.dftfeecur;
ptspta.dftactptainr=pts.dftactptainr;
ptspta.glggrpflg=pts.glggrpflg;
ptspta.adrblk=pts.adrblk;
return ptspta;
},
buildLiaccvRequest() {
let liaccvRequest = new LiaccvRequest().data;
let rec = {};
let cbsMap = {};
if (this.trnName === "litopn") {
rec.objtyp = "LID";
rec.ownref = this.model.lidgrp.rec.ownref;
rec.opndat = this.model.lidgrp.rec.opndat;
rec.branchInr = this.model.lidgrp.rec.branchinr;
liaccvRequest.rec = rec;
cbsMap.NOM1 = {
"cur":this.model.lidgrp.cbs.nom1.cur,
"amt":this.model.lidgrp.cbs.nom1.amt,
};
cbsMap.OPN1 = {};
cbsMap.OPN2 = {
"cur":this.model.lidgrp.cbs.opn2.cur,
"amt":this.model.lidgrp.cbs.opn2.amt,
};
cbsMap.MAX = {
"cur":this.model.lidgrp.cbs.max.cur,
"amt":this.model.lidgrp.cbs.max.amt,
};
cbsMap.MAX2 = {
"cur":this.model.lidgrp.cbs.max2.cur,
"amt":this.model.lidgrp.cbs.max2.amt,
};
liaccvRequest.cbsMap = cbsMap;
let ptsptaList = [];
if (this.model.lidgrp.apl.pts.extkey !== "") {
ptsptaList.push(this.buildPtspta(this.model.lidgrp.apl));
}
if (this.model.lidgrp.adv.pts.extkey !== "") {
ptsptaList.push(this.buildPtspta(this.model.lidgrp.adv));
}
if (this.model.lidgrp.ben.pts.extkey !== "") {
ptsptaList.push(this.buildPtspta(this.model.lidgrp.ben));
}
liaccvRequest.ptsList = ptsptaList;
} else if (this.trnName === "gitopn") {
rec.objtyp = "GID";
rec.ownref = this.model.gidgrp.rec.ownref;
rec.opndat = this.model.gidgrp.rec.opndat;
rec.expdat = this.model.gidgrp.rec.expdat;
rec.branchInr = this.model.gidgrp.rec.branchinr;
rec.hndtyp = this.model.gidgrp.rec.hndtyp;
rec.gartyp = this.model.gidgrp.rec.gartyp;
rec.fingua = this.model.gidgrp.rec.fingua;
rec.segtyp = this.model.gidgrp.ghd.segtyp;
rec.fromflg = this.model.gidgrp.rec.fromflg;
rec.othersno= this.model.gidgrp.rec.othersno;
rec.sndto = this.model.gidgrp.rec.sndto;
rec.swiftflg = this.model.gitp.swiftflg;
rec.giduil = this.model.gidgrp.rec.giduil;
rec.purpos = this.model.gidgrp.rec.purpos;
rec.revflg = this.model.gidgrp.rec.revflg;
rec.cnfsta = this.model.gidgrp.rec.cnfsta;
liaccvRequest.rec = rec;
cbsMap.MAX = this.model.gidgrp.cbs.max;
cbsMap.OPN1 = this.model.gidgrp.cbs.opn1;
cbsMap.MAC = this.model.gidgrp.cbs.mac;
cbsMap.MAC2 = this.model.gidgrp.cbs.mac2;
cbsMap.OPC2 = this.model.gidgrp.cbs.opc2;
cbsMap.CNF = this.model.gidgrp.cbs.cnf;
liaccvRequest.cbsMap = cbsMap;
let ptsptaList = [];
if (this.model.gidgrp.apl.pts.extkey !== "") {
ptsptaList.push(this.buildPtspta(this.model.gidgrp.apl));
}
if (this.model.gidgrp.adv.pts.extkey !== "") {
ptsptaList.push(this.buildPtspta(this.model.gidgrp.adv));
}
if (this.model.gidgrp.ben.pts.extkey !== "") {
ptsptaList.push(this.buildPtspta(this.model.gidgrp.ben));
}
liaccvRequest.ptsList = ptsptaList;
}
liaccvRequest.transName = this.trnName;
if (!!window.sessionStorage.userId) {
liaccvRequest.userId = window.sessionStorage.userId;
} else {
liaccvRequest.userId = "ZL";
}
liaccvRequest.liaccvg = this.model.liaccv.liaccvg;
return liaccvRequest;
},
buildLiaccv(obj) {
let liaccvRequest = new LiaccvRequest().data;
let rec = {};
let cbsMap = {};
if (obj.trnName === "litopn") {
rec.objtyp = "LID";
rec.ownref = obj.model.lidgrp.rec.ownref;
rec.opndat = obj.model.lidgrp.rec.opndat;
rec.branchInr = obj.model.lidgrp.rec.branchinr;
liaccvRequest.rec = rec;
cbsMap.NOM1 = {
"cur":obj.model.lidgrp.cbs.nom1.cur,
"amt":obj.model.lidgrp.cbs.nom1.amt,
};
cbsMap.OPN1 = {};
cbsMap.OPN2 = {
"cur":obj.model.lidgrp.cbs.opn2.cur,
"amt":obj.model.lidgrp.cbs.opn2.amt,
};
cbsMap.MAX = {
"cur":obj.model.lidgrp.cbs.max.cur,
"amt":obj.model.lidgrp.cbs.max.amt,
};
cbsMap.MAX2 = {
"cur":obj.model.lidgrp.cbs.max2.cur,
"amt":obj.model.lidgrp.cbs.max2.amt,
};
liaccvRequest.cbsMap = cbsMap;
let ptsptaList = [];
if (obj.model.lidgrp.apl.pts.extkey !== "") {
ptsptaList.push(obj.buildPtspta(obj.model.lidgrp.apl));
}
if (obj.model.lidgrp.adv.pts.extkey !== "") {
ptsptaList.push(obj.buildPtspta(obj.model.lidgrp.adv));
}
if (obj.model.lidgrp.ben.pts.extkey !== "") {
ptsptaList.push(obj.buildPtspta(obj.model.lidgrp.ben));
}
liaccvRequest.ptsList = ptsptaList;
} else if (obj.trnName === "gitopn") {
rec.objtyp = "GID";
rec.ownref = obj.model.gidgrp.rec.ownref;
rec.opndat = obj.model.gidgrp.rec.opndat;
rec.expdat = obj.model.gidgrp.rec.expdat;
rec.branchInr = obj.model.gidgrp.rec.branchinr;
rec.hndtyp = obj.model.gidgrp.rec.hndtyp;
rec.gartyp = obj.model.gidgrp.rec.gartyp;
rec.fingua = obj.model.gidgrp.rec.fingua;
rec.segtyp = obj.model.gidgrp.ghd.segtyp;
rec.fromflg = obj.model.gidgrp.rec.fromflg;
rec.othersno= obj.model.gidgrp.rec.othersno;
rec.sndto = obj.model.gidgrp.rec.sndto;
rec.swiftflg = obj.model.gitp.swiftflg;
rec.giduil = obj.model.gidgrp.rec.giduil;
rec.purpos = obj.model.gidgrp.rec.purpos;
rec.revflg = obj.model.gidgrp.rec.revflg;
rec.cnfsta = obj.model.gidgrp.rec.cnfsta;
liaccvRequest.rec = rec;
cbsMap.MAX = obj.model.gidgrp.cbs.max;
cbsMap.OPN1 = obj.model.gidgrp.cbs.opn1;
cbsMap.MAC = obj.model.gidgrp.cbs.mac;
cbsMap.MAC2 = obj.model.gidgrp.cbs.mac2;
cbsMap.OPC2 = obj.model.gidgrp.cbs.opc2;
cbsMap.CNF = obj.model.gidgrp.cbs.cnf;
liaccvRequest.cbsMap = cbsMap;
let ptsptaList = [];
if (obj.model.gidgrp.apl.pts.extkey !== "") {
ptsptaList.push(obj.buildPtspta(obj.model.gidgrp.apl));
}
if (obj.model.gidgrp.adv.pts.extkey !== "") {
ptsptaList.push(obj.buildPtspta(obj.model.gidgrp.adv));
}
if (obj.model.gidgrp.ben.pts.extkey !== "") {
ptsptaList.push(obj.buildPtspta(obj.model.gidgrp.ben));
}
liaccvRequest.ptsList = ptsptaList;
}
liaccvRequest.transName = obj.trnName;
if (!!window.sessionStorage.userId) {
liaccvRequest.userId = window.sessionStorage.userId;
} else {
liaccvRequest.userId = "ZL";
}
liaccvRequest.liaccvg = obj.model.liaccv.liaccvg;
liaccvRequest.oldamt = obj.model.liaccv.oldamt;
liaccvRequest.chgamt = obj.model.liaccv.chgamt;
liaccvRequest.concur = obj.model.liaccv.concur;
return liaccvRequest;
},
async processLiaccv() {
//组数据,发post请求
const loading = this.loading("正在请求数据")
let rulePath = "/service/liaccv/assertLiaccv";
let liaccvRequest = this.buildLiaccvRequest();
let rtnmsg = await Api.post(rulePath, liaccvRequest);
if (rtnmsg.respCode == SUCCESS) {
Utils.copyValueFromVO(this.model.liaccv, rtnmsg.data);
}
loading.close();
async processLiaccv(liaccvRequest) {
const loading = this.loading('正在请求数据');
let objtyp = liaccvRequest.rec.objtyp;
let rtnmsg = await Api.post(`/service/${ objtyp.toLowerCase() }/liaccv/assertLiaccv`, liaccvRequest);
if (rtnmsg.respCode == SUCCESS) {
Utils.copyValueFromVO(this.model.liaccv, rtnmsg.data);
}
}
loading.close();
},
};
import TrndocRequest from '../model/TrndocRequest.js';
import Api from '~/service/Api';
import Utils from '~/utils';
export default {
buildPtspta(ptsptaObj) {
let ptspta = {};
let pts = ptsptaObj.pts;
ptspta.rol = pts.rol;
ptspta.name = pts.nam;
ptspta.ptyinr = pts.ptyinr;
ptspta.ptainr = pts.ptainr;
ptspta.extkey = pts.extkey;
ptspta.dftdsp = pts.dftdsp;
ptspta.dftcur = pts.dftcur;
ptspta.dftact = pts.dftact;
ptspta.dftfeecur = pts.dftfeecur;
ptspta.dftactptainr = pts.dftactptainr;
ptspta.glggrpflg = pts.glggrpflg;
ptspta.adrblk = pts.adrblk;
return ptspta;
},
// 处理Litopn数据
buildTrndocLitopn () {
let trndocRequest = new TrndocRequest().data;
let rec = {};
let cbsMap = {};
rec.objtyp = 'LID';
rec.ownref = this.model.lidgrp.rec.ownref;
rec.opndat = this.model.lidgrp.rec.opndat;
rec.branchInr = this.model.lidgrp.rec.branchinr;
trndocRequest.rec = rec;
cbsMap.NOM1 = {
'cur':this.model.lidgrp.cbs.nom1.cur,
'amt':this.model.lidgrp.cbs.nom1.amt,
};
let ptsptaList = [];
if (this.model.lidgrp.apl.pts.extkey !== '') {
ptsptaList.push(this.buildPtspta(this.model.lidgrp.apl));
}
if (this.model.lidgrp.adv.pts.extkey !== '') {
ptsptaList.push(this.buildPtspta(this.model.lidgrp.adv));
}
if (this.model.lidgrp.ben.pts.extkey !== '') {
ptsptaList.push(this.buildPtspta(this.model.lidgrp.ben));
}
trndocRequest.ptsList = ptsptaList;
return trndocRequest
},
// 处理Gitopn数据
buildTrndocGitopn () {
let trndocRequest = new TrndocRequest().data;
let rec = {};
rec.objtyp = 'GID';
rec.ownref = this.model.gidgrp.rec.ownref;
rec.opndat = this.model.gidgrp.rec.opndat;
rec.expdat = this.model.gidgrp.rec.expdat;
rec.branchInr = this.model.gidgrp.rec.branchinr;
rec.hndtyp = this.model.gidgrp.rec.hndtyp;
rec.gartyp = this.model.gidgrp.rec.gartyp;
rec.fingua = this.model.gidgrp.rec.fingua;
rec.segtyp = this.model.gidgrp.ghd.segtyp;
rec.fromflg = this.model.gidgrp.rec.fromflg;
rec.othersno= this.model.gidgrp.rec.othersno;
rec.sndto = this.model.gidgrp.rec.sndto;
rec.swiftflg = this.model.gitp.swiftflg;
rec.giduil = this.model.gidgrp.rec.giduil;
rec.purpos = this.model.gidgrp.rec.purpos;
rec.revflg = this.model.gidgrp.rec.revflg;
rec.cnfsta = this.model.gidgrp.rec.cnfsta;
trndocRequest.rec = rec;
let ptsptaList = [];
if (this.model.gidgrp.apl.pts.extkey !== '') {
ptsptaList.push(this.buildPtspta(this.model.gidgrp.apl));
}
if (this.model.gidgrp.adv.pts.extkey !== '') {
ptsptaList.push(this.buildPtspta(this.model.gidgrp.adv));
}
if (this.model.gidgrp.ben.pts.extkey !== '') {
ptsptaList.push(this.buildPtspta(this.model.gidgrp.ben));
}
trndocRequest.ptsList = ptsptaList;
return trndocRequest
},
// 整合各交易的数据
buildTrndocRequest() {
let trndocRequest = new TrndocRequest().data;
switch (this.trnName) {
case 'litopn':
trndocRequest = this.buildTrndocLitopn()
break
case 'gitopn':
trndocRequest = this.buildTrndocGitopn()
break
default:
return
}
trndocRequest.transName = this.trnName;
let userId = window.sessionStorage.userId
trndocRequest.userId = !!userId ? userId : 'ZL'
return trndocRequest;
},
async processTrndoc() {
//组数据,发post请求
async processTrndoc(trndocRequest) {
const loading = this.loading('正在请求数据')
let rulePath = '/service/docpan/assertTrndoc';
let trndocRequest = this.buildTrndocRequest();
let rtnmsg = await Api.post(rulePath, trndocRequest);
let objtyp = trndocRequest.rec.objtyp;
let rtnmsg = await Api.post(`/service/${ objtyp.toLowerCase() }/docpan/assertTrndoc`, trndocRequest);
if (rtnmsg.respCode == SUCCESS) {
Utils.copyValueFromVO(this.model.docpan, rtnmsg.data);
}
......
import LiaallRequest from '../model/LiaallRequest.js';
import Api from '~/service/Api';
import Utils from '~/utils';
export default {
buildPtspta(ptsptaObj) {
let ptspta = {};
let pts = ptsptaObj.pts;
ptspta.rol = pts.rol;
ptspta.name = pts.nam;
ptspta.ptyinr = pts.ptyinr;
ptspta.ptainr = pts.ptainr;
ptspta.extkey = pts.extkey;
ptspta.dftdsp = pts.dftdsp;
ptspta.dftcur = pts.dftcur;
ptspta.dftact = pts.dftact;
ptspta.dftfeecur = pts.dftfeecur;
ptspta.dftactptainr = pts.dftactptainr;
ptspta.glggrpflg = pts.glggrpflg;
ptspta.adrblk = pts.adrblk;
return ptspta;
},
// 处理Litopn数据
buildLiaccvLitopn () {
let liaallRequest = new LiaallRequest().data;
let rec = {};
let cbsMap = {};
rec.objtyp = 'LID';
rec.ownref = this.model.lidgrp.rec.ownref;
rec.opndat = this.model.lidgrp.rec.opndat;
rec.branchInr = this.model.lidgrp.rec.branchinr;
liaallRequest.rec = rec;
cbsMap.NOM1 = {
'cur':this.model.lidgrp.cbs.nom1.cur,
'amt':this.model.lidgrp.cbs.nom1.amt,
};
cbsMap.OPN1 = {};
cbsMap.OPN2 = {
'cur':this.model.lidgrp.cbs.opn2.cur,
'amt':this.model.lidgrp.cbs.opn2.amt,
};
cbsMap.MAX = {
'cur':this.model.lidgrp.cbs.max.cur,
'amt':this.model.lidgrp.cbs.max.amt,
};
cbsMap.MAX2 = {
'cur':this.model.lidgrp.cbs.max2.cur,
'amt':this.model.lidgrp.cbs.max2.amt,
};
liaallRequest.cbsMap = cbsMap;
let ptsptaList = [];
if (this.model.lidgrp.apl.pts.extkey !== '') {
ptsptaList.push(this.buildPtspta(this.model.lidgrp.apl));
}
if (this.model.lidgrp.adv.pts.extkey !== '') {
ptsptaList.push(this.buildPtspta(this.model.lidgrp.adv));
}
if (this.model.lidgrp.ben.pts.extkey !== '') {
ptsptaList.push(this.buildPtspta(this.model.lidgrp.ben));
}
liaallRequest.ptsList = ptsptaList;
return liaallRequest;
},
// 处理Gitopn数据
buildLiaccvGitopn () {
let liaallRequest = new LiaallRequest().data;
let rec = {};
let cbsMap = {};
rec.objtyp = 'GID';
rec.ownref = this.model.gidgrp.rec.ownref;
rec.opndat = this.model.gidgrp.rec.opndat;
rec.expdat = this.model.gidgrp.rec.expdat;
rec.branchInr = this.model.gidgrp.rec.branchinr;
rec.hndtyp = this.model.gidgrp.rec.hndtyp;
rec.gartyp = this.model.gidgrp.rec.gartyp;
rec.fingua = this.model.gidgrp.rec.fingua;
rec.segtyp = this.model.gidgrp.ghd.segtyp;
rec.fromflg = this.model.gidgrp.rec.fromflg;
rec.othersno= this.model.gidgrp.rec.othersno;
rec.sndto = this.model.gidgrp.rec.sndto;
rec.swiftflg = this.model.gitp.swiftflg;
rec.giduil = this.model.gidgrp.rec.giduil;
rec.purpos = this.model.gidgrp.rec.purpos;
rec.revflg = this.model.gidgrp.rec.revflg;
rec.cnfsta = this.model.gidgrp.rec.cnfsta;
liaallRequest.rec = rec;
cbsMap.MAX = this.model.gidgrp.cbs.max;
cbsMap.OPN1 = this.model.gidgrp.cbs.opn1;
cbsMap.MAC = this.model.gidgrp.cbs.mac;
cbsMap.MAC2 = this.model.gidgrp.cbs.mac2;
cbsMap.OPC2 = this.model.gidgrp.cbs.opc2;
cbsMap.CNF = this.model.gidgrp.cbs.cnf;
liaallRequest.cbsMap = cbsMap;
let ptsptaList = [];
if (this.model.gidgrp.apl.pts.extkey !== '') {
ptsptaList.push(this.buildPtspta(this.model.gidgrp.apl));
}
if (this.model.gidgrp.adv.pts.extkey !== '') {
ptsptaList.push(this.buildPtspta(this.model.gidgrp.adv));
}
if (this.model.gidgrp.ben.pts.extkey !== '') {
ptsptaList.push(this.buildPtspta(this.model.gidgrp.ben));
}
liaallRequest.ptsList = ptsptaList;
return liaallRequest
},
// 整合各交易的数据
buildLiaallRequest() {
let liaallRequest = new LiaallRequest().data;
switch (this.trnName) {
case 'litopn':
liaallRequest = this.buildLiaccvLitopn()
break
case 'gitopn':
liaallRequest = this.buildLiaccvGitopn()
break
default:
return
}
liaallRequest.liaallg = this.model.liaall.liaallg;
liaallRequest.transName = this.trnName;
let userId = window.sessionStorage.userId
liaallRequest.userId = !!userId ? userId : 'ZL'
return liaallRequest;
},
async processLiaall() {
//组数据,发post请求
async processLiaall(liaallRequest) {
const loading = this.loading('正在请求数据')
let rulePath = '/service/liaall/assertLiaall';
let liaallRequest = this.buildLiaallRequest();
let rtnmsg = await Api.post(rulePath, liaallRequest);
let objtyp = liaallRequest.rec.objtyp;
let rtnmsg = await Api.post(`/service/${ objtyp.toLowerCase() }/liaall/assertLiaall`, liaallRequest);
if (rtnmsg.respCode == SUCCESS) {
Utils.copyValueFromVO(this.model.liaall, rtnmsg.data);
}
......
import GlentryRequest from '../model/GlentryRequest.js';
import Api from '~/service/Api';
export default {
buildPtspta(ptsptaObj) {
let ptspta = {};
let pts = ptsptaObj.pts;
ptspta.rol = pts.rol;
ptspta.name = pts.nam;
ptspta.ptyinr = pts.ptyinr;
ptspta.ptainr = pts.ptainr;
ptspta.extkey = pts.extkey;
ptspta.dftdsp = pts.dftdsp;
ptspta.dftcur = pts.dftcur;
ptspta.dftact = pts.dftact;
ptspta.dftfeecur = pts.dftfeecur;
ptspta.dftactptainr = pts.dftactptainr;
ptspta.glggrpflg = pts.glggrpflg;
ptspta.adrblk = pts.adrblk;
return ptspta;
},
// 处理Litopn数据
buildGlentryLitopn () {
let glentryRequest = new GlentryRequest().data;
let rec = {};
let cbsMap = {};
rec.objtyp = 'LID';
rec.ownref = this.model.lidgrp.rec.ownref;
rec.opndat = this.model.lidgrp.rec.opndat;
rec.branchInr = this.model.lidgrp.rec.branchinr;
glentryRequest.rec = rec;
cbsMap.NOM1 = {
'cur':this.model.lidgrp.cbs.nom1.cur,
'amt':this.model.lidgrp.cbs.nom1.amt,
};
cbsMap.OPN1 = {};
cbsMap.OPN2 = {
'cur':this.model.lidgrp.cbs.opn2.cur,
'amt':this.model.lidgrp.cbs.opn2.amt,
};
cbsMap.MAX = {
'cur':this.model.lidgrp.cbs.max.cur,
'amt':this.model.lidgrp.cbs.max.amt,
};
cbsMap.MAX2 = {
'cur':this.model.lidgrp.cbs.max2.cur,
'amt':this.model.lidgrp.cbs.max2.amt,
};
glentryRequest.cbsMap = cbsMap;
let ptsptaList = [];
if (this.model.lidgrp.apl.pts.extkey !== '') {
ptsptaList.push(this.buildPtspta(this.model.lidgrp.apl));
}
if (this.model.lidgrp.adv.pts.extkey !== '') {
ptsptaList.push(this.buildPtspta(this.model.lidgrp.adv));
}
if (this.model.lidgrp.ben.pts.extkey !== '') {
ptsptaList.push(this.buildPtspta(this.model.lidgrp.ben));
}
glentryRequest.ptsList = ptsptaList;
return glentryRequest;
},
// 处理Gitopn数据
buildGlentryGitopn () {
let glentryRequest = new GlentryRequest().data;
let rec = {};
let cbsMap = {};
rec.objtyp = 'GID';
rec.ownref = this.model.gidgrp.rec.ownref;
rec.opndat = this.model.gidgrp.rec.opndat;
rec.expdat = this.model.gidgrp.rec.expdat;
rec.branchInr = this.model.gidgrp.rec.branchinr;
rec.hndtyp = this.model.gidgrp.rec.hndtyp;
rec.gartyp = this.model.gidgrp.rec.gartyp;
rec.fingua = this.model.gidgrp.rec.fingua;
rec.segtyp = this.model.gidgrp.ghd.segtyp;
rec.fromflg = this.model.gidgrp.rec.fromflg;
rec.othersno= this.model.gidgrp.rec.othersno;
rec.sndto = this.model.gidgrp.rec.sndto;
rec.swiftflg = this.model.gitp.swiftflg;
rec.giduil = this.model.gidgrp.rec.giduil;
rec.purpos = this.model.gidgrp.rec.purpos;
rec.revflg = this.model.gidgrp.rec.revflg;
rec.cnfsta = this.model.gidgrp.rec.cnfsta;
glentryRequest.rec = rec;
cbsMap.MAX = this.model.gidgrp.cbs.max;
cbsMap.OPN1 = this.model.gidgrp.cbs.opn1;
cbsMap.MAC = this.model.gidgrp.cbs.mac;
cbsMap.MAC2 = this.model.gidgrp.cbs.mac2;
cbsMap.OPC2 = this.model.gidgrp.cbs.opc2;
cbsMap.CNF = this.model.gidgrp.cbs.cnf;
glentryRequest.cbsMap = cbsMap;
let ptsptaList = [];
if (this.model.gidgrp.apl.pts.extkey !== '') {
ptsptaList.push(this.buildPtspta(this.model.gidgrp.apl));
}
if (this.model.gidgrp.adv.pts.extkey !== '') {
ptsptaList.push(this.buildPtspta(this.model.gidgrp.adv));
}
if (this.model.gidgrp.ben.pts.extkey !== '') {
ptsptaList.push(this.buildPtspta(this.model.gidgrp.ben));
}
glentryRequest.ptsList = ptsptaList;
return glentryRequest
},
// 整合各交易的数据
buildGlentryRequest() {
let glentryRequest = new GlentryRequest().data;
switch (this.trnName) {
case 'litopn':
glentryRequest = this.buildGlentryLitopn()
break
case 'gitopn':
glentryRequest = this.buildGlentryGitopn()
break
default:
return
}
glentryRequest.liaallg = this.model.liaall.liaallg;
glentryRequest.setfog = this.model.setmod.setfog;
glentryRequest.setfeg = this.model.setmod.setfeg;
glentryRequest.setglg = this.model.setmod.setglg;
glentryRequest.transName = this.trnName;
let userId = window.sessionStorage.userId
glentryRequest.userId = !!userId ? userId : 'ZL'
return glentryRequest;
},
async processGlentry() {
//组数据,发post请求
async processGlentry(glentryRequest) {
const loading = this.loading('正在请求数据')
let rulePath = '/service/gle/assertGle';
let glentryRequest = this.buildGlentryRequest();
let rtnmsg = await Api.post(rulePath, glentryRequest);
let objtyp = glentryRequest.rec.objtyp;
let rtnmsg = await Api.post(`/service/${ objtyp.toLowerCase() }/gle/assertGle`, glentryRequest);
if (rtnmsg.respCode == SUCCESS) {
this.model.setmod.glemod.gleshwstm = rtnmsg.data.gleshwstm;
}
loading.close();
}
}
}
\ No newline at end of file
<template>
<div class="eibs">
<c-col :span="24" style="">
<c-istream-table :list="data" :columns="columns"></c-istream-table>
</c-col>
<c-col :span="24" style="">
<c-istream-table :list="data" :columns="columns"></c-istream-table>
</c-col>
</div>
</template>
<script>
import Api from "~/service/Api"
import commonProcess from "~/mixin/commonProcess";
import CodeTable from "~/config/CodeTable"
import Api from '~/service/Api';
import commonProcess from '~/mixin/commonProcess';
import CodeTable from '~/config/CodeTable';
export default {
inject: ['root'],
mixins: [commonProcess],
props:["model","codes"],
data(){
return {
columns: [
"2 1 \"借/贷\" 80 1 0",
"6 2 \"账号\" 200",
"3 3 \"币种\" 70",
"4 4 \"金额\" 150 2 8:1 2 5",
"5 5 \"起息日\" 150",
"7 6 \"牌价类型\" 100",
"8 7 \"牌价\" 100 2 0 1 0",
"9 8 \"会计科目\" 100",
"0 9 \"分录序号\" 100 1 0"
],
data: [
]
inject: ['root'],
mixins: [commonProcess],
props: ['model', 'codes'],
data() {
return {
columns: [
'2 1 "借/贷" 80 1 0',
'6 2 "账号" 200',
'3 3 "币种" 70',
'4 4 "金额" 150 2 8:1 2 5',
'5 5 "起息日" 150',
'7 6 "牌价类型" 100',
'8 7 "牌价" 100 2 0 1 0',
'9 8 "会计科目" 100',
'0 9 "分录序号" 100 1 0',
],
data: [],
};
},
watch: {
//this.$refs.glepan.stmData.data = res.data.setmod_glemod_gleshwstm.rows;
'model.setmod.glemod.gleshwstm': {
handler(val, oldVal) {
if (val.rows) {
this.data = val.rows;
}
},
immediate: true,
},
watch: {
//this.$refs.glepan.stmData.data = res.data.setmod_glemod_gleshwstm.rows;
'model.setmod.glemod.gleshwstm': {
handler(val, oldVal) {
if (val.rows) {
this.data = val.rows
}
},
immediate: true
}
},
methods:{
},
created:function(){
}
}
},
methods: {},
created: function () {},
};
</script>
<style>
</style>
<style></style>
import Api from '~/service/Api';
import SetfegRequest from '../model/SetfegRequest.js';
import SetglgRequest from '../model/SetglgRequest.js';
export default {
buildPtspta (ptsptaObj) {
let ptspta = {};
let pts = ptsptaObj.pts;
ptspta.rol = pts.rol;
ptspta.name = pts.nam;
ptspta.ptyinr = pts.ptyinr;
ptspta.ptainr = pts.ptainr;
ptspta.extkey = pts.extkey;
ptspta.dftdsp = pts.dftdsp;
ptspta.dftcur = pts.dftcur;
ptspta.dftact = pts.dftact;
ptspta.dftfeecur = pts.dftfeecur;
ptspta.dftactptainr = pts.dftactptainr;
ptspta.glggrpflg = pts.glggrpflg;
ptspta.adrblk = pts.adrblk;
return ptspta;
},
// Setfeg关于Listopn的处理
buildSetfegLitopn () {
let setfegRequest = new SetfegRequest().data;
let rec = {};
let cbsMap = {};
rec.objtyp = 'LID';
rec.ownref = this.model.lidgrp.rec.ownref;
rec.opndat = this.model.lidgrp.rec.opndat;
rec.expdat = this.model.lidgrp.rec.expdat;
rec.branchInr = this.model.lidgrp.rec.branchinr;
setfegRequest.rec = rec;
cbsMap.NOM1 = {
'cur': this.model.lidgrp.cbs.nom1.cur,
'amt': this.model.lidgrp.cbs.nom1.amt,
};
cbsMap.OPN1 = {};
cbsMap.OPN2 = {
'cur': this.model.lidgrp.cbs.opn2.cur,
'amt': this.model.lidgrp.cbs.opn2.amt,
};
cbsMap.MAX = {
'cur': this.model.lidgrp.cbs.max.cur,
'amt': this.model.lidgrp.cbs.max.amt,
};
cbsMap.MAX2 = {
'cur': this.model.lidgrp.cbs.max2.cur,
'amt': this.model.lidgrp.cbs.max2.amt,
};
setfegRequest.cbsMap = cbsMap;
let ptsptaList = [];
if (this.model.lidgrp.apl.pts.extkey !== '') {
ptsptaList.push(this.buildPtspta(this.model.lidgrp.apl));
}
if (this.model.lidgrp.adv.pts.extkey !== '') {
ptsptaList.push(this.buildPtspta(this.model.lidgrp.adv));
}
if (this.model.lidgrp.ben.pts.extkey !== '') {
ptsptaList.push(this.buildPtspta(this.model.lidgrp.ben));
}
setfegRequest.ptsList = ptsptaList;
return setfegRequest
},
// Setfeg关于Gitopn的处理
buildSetfegGitopn () {
let setfegRequest = new SetfegRequest().data;
let rec = {};
let cbsMap = {};
rec.objtyp = 'GID';
rec.ownref = this.model.gidgrp.rec.ownref;
rec.opndat = this.model.gidgrp.rec.opndat;
rec.expdat = this.model.gidgrp.rec.expdat;
rec.branchInr = this.model.gidgrp.rec.branchinr;
rec.hndtyp = this.model.gidgrp.rec.hndtyp;
rec.gartyp = this.model.gidgrp.rec.gartyp;
rec.fingua = this.model.gidgrp.rec.fingua;
rec.segtyp = this.model.gidgrp.ghd.segtyp;
rec.fromflg = this.model.gidgrp.rec.fromflg;
rec.othersno= this.model.gidgrp.rec.othersno;
rec.sndto = this.model.gidgrp.rec.sndto;
rec.swiftflg = this.model.gitp.swiftflg;
rec.giduil = this.model.gidgrp.rec.giduil;
rec.purpos = this.model.gidgrp.rec.purpos;
rec.revflg = this.model.gidgrp.rec.revflg;
rec.cnfsta = this.model.gidgrp.rec.cnfsta;
setfegRequest.rec = rec;
cbsMap.MAX = this.model.gidgrp.cbs.max;
cbsMap.OPN1 = this.model.gidgrp.cbs.opn1;
cbsMap.MAC = this.model.gidgrp.cbs.mac;
cbsMap.MAC2 = this.model.gidgrp.cbs.mac2;
cbsMap.OPC2 = this.model.gidgrp.cbs.opc2;
cbsMap.CNF = this.model.gidgrp.cbs.cnf;
setfegRequest.cbsMap = cbsMap;
let ptsptaList = [];
if (this.model.gidgrp.apl.pts.extkey !== '') {
ptsptaList.push(this.buildPtspta(this.model.gidgrp.apl));
}
if (this.model.gidgrp.adv.pts.extkey !== '') {
ptsptaList.push(this.buildPtspta(this.model.gidgrp.adv));
}
if (this.model.gidgrp.ben.pts.extkey !== '') {
ptsptaList.push(this.buildPtspta(this.model.gidgrp.ben));
}
setfegRequest.ptsList = ptsptaList;
return setfegRequest
},
// 处理Setfeg数据
buildSetfegRequest() {
let setfegRequest = new SetfegRequest().data;
switch (this.trnName) {
case 'litopn':
setfegRequest = this.buildSetfegLitopn()
setfegRequest.liaall = this.model.liaall;
setfegRequest.liaccv = this.model.liaccv;
break
case 'gitopn':
setfegRequest = this.buildSetfegGitopn()
setfegRequest.liaall = this.model.liaall;
setfegRequest.liaccv = this.model.liaccv;
break
default:
return
}
setfegRequest.doceot = this.model.trnmod.trndoc.doceot;
setfegRequest.transName = this.trnName;
let userId = window.sessionStorage.userId
setfegRequest.userId = !!userId ? userId : 'ZL'
return setfegRequest;
},
// 处理setglg数据
buildSetglgRequest() {
let setglgRequest = new SetglgRequest().data;
switch (this.trnName) {
case 'litopn':
setglgRequest = this.buildSetfegLitopn()
break
case 'gitopn':
setglgRequest = this.buildSetfegGitopn()
break
default:
return
}
setglgRequest.setfeg = this.model.setmod.setfeg;
setglgRequest.transName = this.trnName;
let userId = window.sessionStorage.userId
setglgRequest.userId = !!userId ? userId : 'ZL'
return setglgRequest;
},
async processSetpan() {
//组数据,发post请求
export default {
async processSetpan(setfegRequest, fn) {
let loading = this.loading('正在请求试算费用');
let rulePath = '/service/setmod/calcSettleDetail';
let setfegRequest = this.buildSetfegRequest();
let rtnmsg = await Api.post(rulePath, setfegRequest);
if (rtnmsg.respCode == SUCCESS) {
let objtyp = setfegRequest.rec.objtyp;
let rtnmsg = await Api.post(`/service/${ objtyp.toLowerCase() }/setmod/calcSettleDetail`, setfegRequest);
if (rtnmsg.respCode === SUCCESS) {
this.model.setmod.setfeg = rtnmsg.data.setfeg;
this.model.setmod.ref = rtnmsg.data.ref;
this.model.setmod.doccur = rtnmsg.data.doccur;
this.model.setmod.docamt = rtnmsg.data.docamt;
// 试算账务
if (this.model.setmod.setfeg.setfel.length > 0) {
loading = this.loading('正在请求试算账务');
rulePath = '/service/setmod/calcPayDetail';
let setglgRequest = this.buildSetglgRequest();
rtnmsg = await Api.post(rulePath, setglgRequest);
if (rtnmsg.respCode == SUCCESS) {
this.model.setmod.setglg = rtnmsg.data.setglg;
let setglgRequestParams = fn()
let res = await Api.post(`/service/${ objtyp.toLowerCase() }/setmod/calcPayDetail`, setglgRequestParams);
if (res.respCode == SUCCESS) {
this.model.setmod.setglg = res.data.setglg;
}
}
}
......
......@@ -52,11 +52,13 @@ import Fullbox from "./Fullbox"
import CompareTable from "./CompareTable"
import InputXml from "./InputXml.vue"
import InputTextarea from "./InputTextarea.vue"
import PagingTable from "./PagingTable.vue";
import MulRowInput from "./MulRowInput.vue"
import RichTextEditor from "./RichTextEditor.vue"
import XmlFormatEditor from "./XmlFormatEditor.vue"
import XmlFormatEditorNew from "./XmlFormatEditorNew.vue"
export default {
install(Vue) {
......@@ -111,9 +113,11 @@ export default {
Vue.component("c-fullbox", Fullbox)
Vue.component("c-compare-table", CompareTable)
Vue.component("c-input-xml", InputXml)
Vue.component("c-input-textarea", InputTextarea)
Vue.component("c-paging-table", PagingTable)
Vue.component("c-mul-row-input", MulRowInput)
Vue.component("c-rich-text-editor", RichTextEditor)
Vue.component("c-xml-format-editor", XmlFormatEditor)
Vue.component("c-xml-format-editor-new", XmlFormatEditorNew)
}
}
\ No newline at end of file
......@@ -7716,6 +7716,11 @@ const CodeTable = {
{ label: "ISSU Issuance of undertaking", value: "ISSU" },
{ label: "ISCO Issuance of counter-undertaking", value: "ISCO" },
{ label: "ICCO Issuance of counter-counter-undert", value: "ICCO" },
],
sndto: [
{ label: "ISSU Issuance of undertaking", value: "ISSU" },
{ label: "ISCO Issuance of counter-undertaking", value: "ISCO" },
{ label: "ICCO Issuance of counter-counter-undert", value: "ICCO" },
]
}
export default CodeTable;
export default {
methods: {
loading(text) {
const loading = this.$loading({
lock: true,
text,
spinner: 'el-icon-loading',
background: 'rgba(200, 200, 200, 0.3)',
});
return loading;
},
},
};
......@@ -46,7 +46,7 @@ export default class Gitopn{
gitamecho:"", // GITAMECHO .addbcb.gitamecho
gitamermk:"", // GITAMERMK .addbcb.gitamermk
bgftktyp:"", // 不规范条款类型 .addbcb.bgftktyp
modtyp:"", // 修改信用证类型 .addbcb.modtyp
modtyp:"", // 修改信用证类型 .addbcb.modtyp
litameadv:"", // 特殊规定 .addbcb.litameadv
ameadvrmk:"", // 特殊规定条件 .addbcb.ameadvrmk
bccls1:"", // 效期是否敞口 .addbcb.bccls1
......
const Business = [
{ path: 'infgid', component: () => import('~/business/infgid/views'), name: 'infgid', meta: { title: '保函入口交易' } },
{ path: 'gitopn', component: () => import('~/business/gitopn/views'), name: 'gitopn', meta: { title: '进口保函开立' } },
{ path: 'sptpopup', component: () => import('~/business/sptsel/views/Sptpopup.vue'), name: 'sptsel', meta: { title: '待经办详情' } },
]
export default Business
......@@ -6,6 +6,7 @@ import TagsView from "./TagsView"
import Transaction from "./Transaction";
import Vuex from 'vuex'
import Vue from 'vue'
import gitopn from './modules/gitopn.js'
Vue.use(Vuex)
......@@ -16,7 +17,8 @@ const store = new Vuex.Store({
Status: Status,
Swift: Swift,
TagsView: TagsView,
Transaction: Transaction
Transaction: Transaction,
gitopn
}
})
......
const store = {
state: {
toHandleRowData: {},
},
mutations: {
updateToHandleRowData(state, params) {
state.toBehandleRowData = params
}
}
}
export default store
<template>
<div>
<div style="height: 800px; overflow: auto">
<embed
v-if="this.model.docXML && pdf"
:src="pdf"
type="application/pdf"
height="100%"
width="100%"
/>
<c-row v-if="!this.model.docXML">
<c-col v-for="(item, index) in model.docTXT" :key="index" >
<c-col :offset="4" :span="8">
{{ item[0] }}
</c-col>
<c-col :span="12">
{{ item[1] }}
</c-col>
</c-col>
</c-row>
</div>
</div>
<div class="width: 100%;height: 100vh;overflow: auto;" ref="file"></div>
</template>
<script>
import { getPdf } from "~/service/business/file";
import { renderAsync } from 'docx-preview';
import Api from '~/service/Api';
import commonProcess from '~/mixin/commonProcess';
export default {
data() {
return {
model: { docXML: "" },
pdf: "",
};
},
created() {
let doclang= window.sessionStorage.doclang||"";
this.model.docXML = window.sessionStorage.docXML;
this.model.docTXT = window.sessionStorage.docTXT
.split("\r\n")
.filter((item) => item)
.map((item) => {
let idx = item.indexOf(":");
return [
item.substring(0, idx).trim(),
item.substring(idx + 1).trim(),
];
});
if (this.model.docXML != "")
getPdf({ xml: this.model.docXML, doclang: window.sessionStorage.docuil }).then((res) => {
if (res.respCode == SUCCESS) {
this.pdf ="data:application/pdf;base64,"+ res.data;
}
});
},
data() {
return {
model: { docXML: '' },
pdf: '',
};
},
mixins: [commonProcess],
mounted() {
this.loadWordBlob()
},
methods: {
async loadWordBlob () {
let routeQuery = this.$route.query
const params = {
index: routeQuery.idx,
};
let res = await Api.post('/service/gitopn/executeDocpan', this.wrapper(params));
if (res.respCode == SUCCESS) {
let base64Str = res.data.executeDocpan;
let bstr = window.atob(base64Str); // 解码 base-64 编码的字符串,base-64 编码使用方法是 btoa()
let length = bstr.length;
let u8arr = new Uint8Array(length); // 创建初始化为0的,包含length个元素的无符号整型数组
while (length--) {
u8arr[length] = bstr.charCodeAt(length); // 返回在指定的位置的字符的 Unicode 编码
}
let blob = new Blob([u8arr]);
renderAsync(blob, this.$refs.file)
}
}
}
};
</script>
<style scoped>
</style>
\ No newline at end of file
::v-deep .docx-wrapper {
width: 100%;
height: 100vh;
padding: 0;
overflow: auto;
}
</style>
......@@ -84,9 +84,10 @@
</template>
<script>
import Sptsel from "~/views/Business/Sptsel";
import Sptsel from "~/business/sptsel/views";
import Sptbrk from "~/views/Business/Sptsel/Sptbrk";
import Trnrel from "~/views/Business/Trnrel";
//import Trnrel from "~/views/Business/Trnrel";
import Trnrel from "~/business/trnrel/views";
import Trnfnd from "~/views/Business/Trnrel/Trnfnd";
import Diasel from "~/views/Business/Diasel";
import Bopsel from "~/views/Business/Bopsel";
......
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