Commit 04b695ca by liaoxing

Merge branch 'development-202206' of http://114.115.138.98:8900/fukai/vue-gjjs…

Merge branch 'development-202206' of http://114.115.138.98:8900/fukai/vue-gjjs into development-202206
parents 0e7839d3 e4da5547
......@@ -4,9 +4,9 @@
"author": "psbc",
"private": true,
"scripts": {
"start": "node --max_old_space_size=4096 node_modules/@vue/cli-service/bin/vue-cli-service.js serve",
"start": "node --max_old_space_size=4096 node_modules/@vue/cli-service/bin/vue-cli-service.js serve --set NODE_ENV=development",
"start_new": "set NODE_OPTIONS=--openssl-legacy-provider && node --max_old_space_size=4096 node_modules/@vue/cli-service/bin/vue-cli-service.js serve",
"build": "node --max_old_space_size=4096 node_modules/@vue/cli-service/bin/vue-cli-service.js build"
"build": "node --max_old_space_size=4096 node_modules/@vue/cli-service/bin/vue-cli-service.js build --set NODE_ENV=production"
},
"dependencies": {
"async-validator": "^3.5.2",
......
......@@ -5,7 +5,6 @@ import Pub from "../Public" //引入公共面板
export default class Brteus{
constructor () {
this.data = {
liaall: new Pub().data.Liaall,
setmod: new Pub().data.Setmod, //加入公共面板账务字段
mtabut: new Pub().data.Mtabut,
trnmod: new Pub().data.Trnmod, //加入公共面板面函的字段
......
......@@ -76,10 +76,9 @@ export default {
},
async handleReset(formName) {
this.$refs[formName].resetFields();
this.model.infcon.seaamtfr = "";
this.model.infcon.seaamtto = "";
this.model.infcon.seaamtfr = '0.00';
this.model.infcon.seaamtto = '0.00';
},
async handleSearch() {
this.stmData.data = [];
let opndatfrom = this.model.infcon.opndatfrom;
......
......@@ -101,10 +101,10 @@ export default {
{max: 16,message:"长度不能超过16"}
],
"ledgrp.rec.opndat":[
{type: "date", required: false, message: "输入正确的日期"}
{ required: false, message: "输入正确的日期"}
],
"ledgrp.rec.preadvdt":[
{type: "date", required: false, message: "输入正确的日期"}
{ required: false, message: "输入正确的日期"}
],
"ledgrp.iss.pts.extkey":[
{type: "string", required: false, message: "必输项"},
......@@ -120,10 +120,10 @@ export default {
{max: 140,message:"长度不能超过140"}
],
"ledgrp.rec.shpdat":[
{type: "date", required: false, message: "输入正确的日期"}
{ required: false, message: "输入正确的日期"}
],
"ledgrp.rec.advdat":[
{type: "date", required: false, message: "输入正确的日期"}
{ required: false, message: "输入正确的日期"}
],
"ledgrp.iss.pts.adrblk":[
{type: "string", required: true, message: "必输项"},
......@@ -134,7 +134,7 @@ export default {
{max: 140,message:"长度不能超过140"}
],
"ledgrp.rec.expdat":[
{type: "date", required: false, message: "输入正确的日期"}
{ required: false, message: "输入正确的日期"}
],
"ledgrp.iss.adrelc":[
{type: "string", required: true, message: "必输项"},
......@@ -532,7 +532,7 @@ export default {
],
"mtabut.coninf.conexedat":[
{type: "date", required: false, message: "输入正确的日期"}
{ required: false, message: "输入正确的日期"}
],
"mtabut.coninf.usr.extkey":[
{type: "string", required: false, message: "必输项"},
......@@ -618,7 +618,7 @@ export default {
{type: "number",max: 99,message:"长度不能超过2"}
],
"ledgrp.rec.revdat":[
{type: "date", required: false, message: "输入正确的日期"}
{ required: false, message: "输入正确的日期"}
],
"ledgrp.blk.revcls":[
{type: "string", required: true, message: "必输项"},
......
......@@ -39,6 +39,52 @@ export default class Lttame {
},
avbnam: "", // Available with .ledgrp.avbnam
},
rmbclm: {
rmbrmb: {
pts: new Pts().data,
namelc: "", // 名称 .rmbclm.rmbrmb.namelc
adrelc: "", // 地址 .rmbclm.rmbrmb.adrelc
dbfadrblkcn: "", // Chinese address .rmbclm.rmbrmb.dbfadrblkcn
},
rmbp: {
ptsget: {
sdamod: {
seainf: "", // .rmbclm.rmbp.ptsget.sdamod.seainf
dadsnd: "", // Drag Drop Sender .rmbclm.rmbp.ptsget.sdamod.dadsnd
},
},
},
acwacw: {
pts: new Pts().data,
namelc: "", // 名称 .rmbclm.acwacw.namelc
adrelc: "", // 地址 .rmbclm.acwacw.adrelc
dbfadrblkcn: "", // Chinese address .rmbclm.acwacw.dbfadrblkcn
},
acwp: {
ptsget: {
sdamod: {
seainf: "", // .rmbclm.acwp.ptsget.sdamod.seainf
dadsnd: "", // Drag Drop Sender .rmbclm.acwp.ptsget.sdamod.dadsnd
},
},
},
bebbeb: {
pts: new Pts().data,
namelc: "", // 名称 .rmbclm.bebbeb.namelc
adrelc: "", // 地址 .rmbclm.bebbeb.adrelc
dbfadrblkcn: "", // Chinese address .rmbclm.bebbeb.dbfadrblkcn
},
bebp: {
ptsget: {
sdamod: {
seainf: "", // .rmbclm.bebp.ptsget.sdamod.seainf
dadsnd: "", // Drag Drop Sender .rmbclm.bebp.ptsget.sdamod.dadsnd
},
},
},
rmbrol: "", // 偿付行 .rmbclm.rmbrol
valdat: "", // value date .rmbclm.valdat
},
lttp: {
ledget: {
sdamod: {
......@@ -213,6 +259,7 @@ export default class Lttame {
amt: "", // This L/C .ltdgrp.cbs.opn1.amt
},
},
be1: {
pts: new Pts().data,
},
......
......@@ -114,17 +114,17 @@ export default {
{max: 35,message:"长度不能超过35"}
],
"ltdgrp.rec.opndat":[
{type: "date", required: false, message: "输入正确的日期"}
{ required: false, message: "输入正确的日期"}
],
"ltdgrp.adt.adrelc":[
{type: "string", required: true, message: "必输项"},
{max: 35,message:"长度不能超过35"}
],
"ltdgrp.rec.shpdat":[
{type: "date", required: false, message: "输入正确的日期"}
{ required: false, message: "输入正确的日期"}
],
"ltdgrp.rec.expdat":[
{type: "date", required: false, message: "输入正确的日期"}
{required: false, message: "输入正确的日期"}
],
"ltdgrp.be2.pts.ref":[
{type: "string", required: false, message: "必输项"},
......@@ -226,17 +226,17 @@ export default {
{max: 40,message:"长度不能超过40"}
],
"ledgrp.rec.opndat":[
{type: "date", required: false, message: "输入正确的日期"}
{ required: false, message: "输入正确的日期"}
],
"ledgrp.rec.shpdat":[
{type: "date", required: false, message: "输入正确的日期"}
{ required: false, message: "输入正确的日期"}
],
"ledgrp.ben.pts.ref":[
{type: "string", required: false, message: "必输项"},
{max: 16,message:"长度不能超过16"}
],
"ledgrp.rec.expdat":[
{type: "date", required: false, message: "输入正确的日期"}
{required: false, message: "输入正确的日期"}
],
"ledgrp.rec.expplc":[
{type: "string", required: false, message: "必输项"},
......@@ -446,7 +446,7 @@ export default {
],
"mtabut.coninf.conexedat":[
{type: "date", required: false, message: "输入正确的日期"}
{ required: false, message: "输入正确的日期"}
],
"mtabut.coninf.usr.extkey":[
{type: "string", required: false, message: "必输项"},
......@@ -697,13 +697,13 @@ export default {
],
"cnybop.cnylib.doccurdate":[
{type: "date", required: false, message: "输入正确的日期"}
{ required: false, message: "输入正确的日期"}
],
"cnybop.cnylib.denddate":[
{type: "date", required: false, message: "输入正确的日期"}
{ required: false, message: "输入正确的日期"}
],
"cnybop.cnylib.dcreditenddate":[
{type: "date", required: false, message: "输入正确的日期"}
{ required: false, message: "输入正确的日期"}
],
"cnybop.cnylib.famt":[
......@@ -713,14 +713,14 @@ export default {
],
"cnybop.cnylib.dexchangedate":[
{type: "date", required: false, message: "输入正确的日期"}
{ required: false, message: "输入正确的日期"}
],
"cnybop.fexchangeamt":[
{type: "string", required: false, message: "必输项"},
{max: 20,message:"长度不能超过20"}
],
"cnybop.cnylib.dexchangeenddate":[
{type: "date", required: false, message: "输入正确的日期"}
{ required: false, message: "输入正确的日期"}
],
"cnybop.saddwordlib":[
{type: "string", required: false, message: "必输项"},
......
......@@ -421,6 +421,8 @@ import DbiBtb from "~/views/Statics/Dbibtb";
import Infbnk from "~/views/Statics/Infbnk";
import Dbibnk from "~/views/Statics/Dbibnk";
import HistoryRecord from "~/views/HistoryRecord/index";
import FileReview from "~/views/FileReview/index";
/**
* 带有name的才会被添加进顶部的标签页里
......@@ -858,5 +860,9 @@ const BusRouter = [
{ path: 'infbnk', component: Infbnk, name: 'StaticsInfbnk', meta: { title: '银行行号信息查询' } },
{ path: 'dbibnk/:inr', component: Dbibnk, name: 'StaticsDbibnk', meta: { title: (tag) => { return '银行行号信息详情: ' + tag.params.inr } } },
// 快照
{ path: 'historyRecord', component: HistoryRecord, name: 'HistoryRecord', meta: { title: '交易快照' } },
// 文件预览
{ path: 'fileReview', component: FileReview, name: 'FileReview', meta: { title: '文件预览' } },
]
export default BusRouter
\ No newline at end of file
......@@ -56,6 +56,7 @@ export default {
},
created:async function(){
console.log("进入Infbtd交易");
console.log(this.model)
let rtnmsg = await this.init({})
if(rtnmsg.respCode == SUCCESS)
{
......
......@@ -238,12 +238,12 @@
</el-form>
</template>
</c-list-search>
<c-col :span="24" style="margin-top: 10px">
<!-- <c-col :span="24" style="margin-top: 10px">
<c-button class="medium_bcs" size="medium" type="primary" style="margin-left: 0px" title="LTTOPN"
@click="toLttopn">
转让信用证开立
</c-button>
</c-col>
</c-col> -->
<c-col :span="24">
<c-istream-table
......
......@@ -451,10 +451,10 @@ export default {
immediate: true,
},
"model.ledgrp.rec.tenmaxday":function(val){
this.model.ledgrp.rec.tenmaxday = val.replace(/\D/g, '');
this.model.ledgrp.rec.tenmaxday = (val.toString()).replace(/\D/g, '');
},
"model.ledgrp.rec.prepers18":function(val){
this.model.ledgrp.rec.prepers18 = val.replace(/\D/g, '');
this.model.ledgrp.rec.prepers18 = (val.toString()).replace(/\D/g, '');
}
},
}
......
......@@ -76,6 +76,7 @@ export default {
},
methods: {
...Event,
handleChange(){}
},
created: function () {},
computed: {
......
......@@ -451,10 +451,10 @@ export default {
},
watch:{
"model.ledgrp.rec.nomtop":function(val){
this.model.ledgrp.rec.nomtop = val.replace(/\D/g, '');
this.model.ledgrp.rec.nomtop = (val.toString()).replace(/\D/g, '')
},
"model.ledgrp.rec.nomton":function(val){
this.model.ledgrp.rec.nomton = val.replace(/\D/g, '');
this.model.ledgrp.rec.nomton = (val.toString()).replace(/\D/g, '')
}
},
methods: {
......
......@@ -22,6 +22,9 @@
<el-collapse-item title="货物描述" name="dogpame">
<m-dogpame :model="model" :codes="codes" />
</el-collapse-item>
<el-collapse-item title="MT 742报销申请" name="rcldetp">
<m-rcldetp :model="model" :codes="codes" />
</el-collapse-item>
<el-collapse-item title="单据要求" name="dorpame">
<m-dorpame :model="model" :codes="codes" />
</el-collapse-item>
......@@ -72,6 +75,7 @@ import Lttinf from "./Lttinf";
import Spbpame from "./Spbpame";
import Sprpame from "./Sprpame";
import Inspame from "./Inspame";
import Rcldetp from "./Rcldetp";
export default {
components: {
......@@ -88,6 +92,7 @@ export default {
"m-spbpame": Spbpame,
"m-sprpame": Sprpame,
"m-inspame": Inspame,
"m-rcldetp":Rcldetp
},
inject: ["root"],
props: ["model", "codes"],
......
<template>
<div class="eibs">
<c-col :span="12">
<c-col :span="24">
<el-form-item label="偿付行" prop="rmbclm.rmbrol">
<c-select
v-model="model.rmbclm.rmbrol"
style="width: 100%"
placeholder="请选择偿付行"
@change="eventFunction('rmbclm.rmbrol')"
:code="codes.rolall"
>
</c-select>
</el-form-item>
</c-col>
<c-col :span="24">
<c-ptap
:model="model"
:argadr="{
title: '',
grp: 'rmbclm',
rol: 'rmbrmb',
}"
@onSeainf="onSeainf"
@onAplpDet="onAvbpDet"
:disabled="
!( model.rmbclm.rmbrol == 'OTH')
"
:disabledExtkey="!(model.rmbclm.rmbrol == 'RMB'||model.rmbclm.rmbrol == 'OTH')"
:disabledRef="!(model.rmbclm.rmbrol == 'RMB'||model.rmbclm.rmbrol == 'OTH')"
>
</c-ptap>
</c-col>
<c-col :span="24">
<c-ptap
:model="model"
:argadr="{
title: '',
grp: 'rmbclm',
rol: 'acwacw',
}"
@onSeainf="onSeainf"
@onAplpDet="onAvbpDet"
>
</c-ptap>
</c-col>
<c-col :span="24">
<c-ptap
:model="model"
:argadr="{
title: '',
grp: 'rmbclm',
rol: 'bebbeb',
}"
@onSeainf="onSeainf"
@onAplpDet="onAvbpDet"
>
</c-ptap>
</c-col>
<c-col :span="24">
<el-form-item label="起息日" prop="rmbclm.valdat">
<c-date-picker
type="date"
v-model="model.rmbclm.valdat"
style="width: 100%"
placeholder="请选择起息日"
></c-date-picker>
</el-form-item>
</c-col>
</c-col>
</div>
</template>
<script>
import Api from "~/service/Api";
import commonProcess from "~/mixin/commonProcess";
import CodeTable from "~/config/CodeTable";
import Event from "~/model/Lttcan/Event";
import Ptap from "~/views/Public/Ptap";
export default {
components: { "c-ptap": Ptap },
inject: ["root"],
props: ["model", "codes"],
mixins: [commonProcess],
data() {
return {};
},
methods: { ...Event },
created: function () {},
};
</script>
<style>
</style>
......@@ -25,6 +25,10 @@
<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" />
......@@ -210,6 +214,7 @@ import Docpan from "~/views/Public/Docpan";
import Doctre from "~/views/Public/Doctre";
import Glepan from "~/views/Public/Glepan";
import Addbcb from "./Addbcb";
import Engp from "~/views/Public/Engp"
export default {
name: "Lttame",
......@@ -233,6 +238,7 @@ export default {
"m-doctre": Doctre,
"m-inspame": Inspame,
"m-addbcb": Addbcb,
"m-engp":Engp,
},
provide() {
return {
......
......@@ -32,6 +32,7 @@ export default {
},
methods: {
...Event,
handleChange(){}
},
created: function () {},
};
......
......@@ -31,7 +31,10 @@ export default {
activeNames: ["cnyp1"],
};
},
methods: { ...Event },
methods: { ...Event ,
handleChange(){}
},
created: function () {},
};
</script>
......
......@@ -92,6 +92,7 @@ export default {
},
methods: {
...Event,
handleChange(){}
},
created: function () {},
};
......
......@@ -267,6 +267,7 @@ export default {
},
created: async function () {
console.log("进入lttopn交易");
console.log(this.model)
let rtnmsg = await this.init({});
if (rtnmsg.respCode == SUCCESS) {
this.updateModel(rtnmsg.data);
......
......@@ -109,6 +109,7 @@ export default {
#business_container {
flex: 1;
box-shadow: 0 1px 15px 0 rgb(0 0 0 / 12%), 0 0 3px 0 rgb(0 0 0 / 4%);
position: relative;
}
#business_container .eContainer, #business_container .eContainer-search{
box-sizing: border-box;
......
<template>
<div class="page-wrap">
<iframe :src="fileUrl" frameborder="0" width="100%" height="100%"></iframe>
</div>
</template>
<script>
import Api from "~/service/Api"
export default {
name: 'FileReview',
data () {
return {
fileUrl: ''
}
},
mounted () {
this.getFileTemplateUrl()
},
methods: {
async getFileTemplateUrl () {
let res = await Api.post('/file/api/templateWord', {
fileName: '222.docx',
templateName: '222.docx',
templateData: {
title: '1111',
date: '2222',
brNo: '3333',
amount: '4444',
no: '4444',
bankName: 'BankName'
},
text: 'text111',
year: '2023',
month: '02',
day: '27',
num1: 'num111',
num2: 'num222',
lines: 'Java平台由Java虚拟机(Java Virtual Machine)和Java 应用编程接口(Application Programming Interface、简称API)构成。Java 应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。在硬件或操作系统平台上安装一个Java平台之后,Java应用程序就可运行。Java平台已经嵌入了几乎所有的操作系统。这样Java程序可以只编译一次,就可以在各种系统中运行。Java应用编程接口已经从1.1x版发展到1.2版。常用的Java平台基于Java1.8,最近版本为Java19。'
})
console.log('res===', res)
this.viewPdf(res)
// this.fileUrl = 'data:image/png;base64,' + res
// console.log('this.fileUrl', this.fileUrl)
},
viewPdf (content) {
if (!content) {
console.log(content)
this.$message.error('暂无意见')
return
}
const blob = this.base64ToBlob(content)
if (window.navigator && window.navigator.msSaveOrOpenBlob) {
window.navigator.msSaveOrOpenBlob(blob)
} else {
const fileURL = URL.createObjectURL(blob)
this.fileUrl = fileURL
// window.open(fileURL)
}
},
base64ToBlob (code) {
code = code.replace(/[\n\r]/g, '')
const raw = window.atob(code)
const rawLength = raw.length
const uInt8Array = new Uint8Array(rawLength)
for (let i = 0; i < rawLength; ++i) {
uInt8Array[i] = raw.charCodeAt(i)
}
return new Blob([uInt8Array], { type: 'application/pdf' })
}
}
}
</script>
<style lang="scss" scoped>
.page-wrap {
width: 100%;
height: 100%;
position: absolute;
left: 0;
top: 0;
padding: 16px;
box-sizing: border-box;
}
</style>
<template>
<div>
<el-table
:data="tableData"
border
style="width: 100%;max-width: 700px;border: 1px solid #6C6C6C;"
:cell-style="{borderColor: '#c4c4c4'}"
:header-cell-style="{borderColor: '#6C6C6C'}"
>
<el-table-column
v-for="(item, index) in tableColums"
:key="index"
:prop="item.prop"
:label="item.label"
:width="item.width"
>
<template slot-scope="scope">
<button
v-if="scope.row[item.prop].isButton === 'Y'"
disabled
class="cus-btn"
>
{{ scope.row[item.prop].value }}
</button>
<div
v-else
style="width: 100%;padding: 3px 0;"
:style="{
borderBottom: scope.row[item.prop].isRedLine === 'Y' ? '2px solid red' : ''
}"
>{{ scope.row[item.prop].value || '&nbsp;' }}</div>
</template>
</el-table-column>
</el-table>
</div>
</template>
<script>
import { cloneDeep } from 'lodash'
export default {
name: 'Table',
props: {
gridValues: {
type: Array,
default: () => []
}
},
computed: {
tableColums () {
console.log('this.gridValues', this.gridValues)
let list = this.gridValues.filter((item) => {
return item.row === '0'
})
let tableColums = []
list.map((item, index) => {
tableColums.push({
prop: 'prop' + index,
label: item.value,
width: Number(item.width) < 50 ? 50 : Number(item.width)
})
})
console.log('tableColums', tableColums)
return tableColums
},
tableData () {
let list = this.gridValues.filter((item) => {
return item.row !== '0'
})
let tableData = []
let obj = {}
this.tableColums.map((item) => {
obj[item.prop] = ''
})
let rowNumber = Number(list[list.length - 1].row)
for (let i = 0; i < rowNumber; i++) {
tableData.push(cloneDeep(obj))
list.map((item) => {
if ((i + 1) === Number(item.row)) {
tableData[i]['prop' + item.column] = {
value: item.value,
isRedLine: item.isRedLine,
isButton: item.isButton
}
}
})
}
return tableData
}
},
data () {
return {
}
},
methods: {}
}
</script>
<style lang="scss" scoped>
::v-deep .el-table th .cell {
padding: 0!important;
overflow: hidden;
white-space: nowrap;
font-size: 10px;
color: black;
}
::v-deep .el-table th {
background-color: #F0F0F0;
}
::v-deep .el-table td {
padding: 0!important;
}
::v-deep .el-table td .cell {
padding: 0!important;
overflow: hidden;
white-space: nowrap;
font-size: 10px;
color: black;
}
.cus-btn {
background-color: #fff!important;
color: black!important;
font-size: 10px;
padding: 0;overflow: hidden;white-space: nowrap;
font-weight: bold;
}
</style>
<template>
<div class="page-wrap">
<div style="width: 100%;padding: 10px;background-color: #fff;border-bottom: 1px solid #666666;box-sizing: border-box;">
<el-select v-model="selectFileNale" placeholder="请选择" @change="handleChangeFile">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</div>
<div class="form-content">
<div
class="field-item"
v-for="(fieldItem, fieldIndex) in frameFieldList"
:key="fieldIndex"
>
<div
v-if="fieldItem.viewType === 'Table' && fieldItem.gridValues.length"
style="position: absolute;"
:style="{
left: fieldItem.left + 'px',
top: fieldItem.top + 'px'
}"
>
<MTable :gridValues="fieldItem.gridValues"></MTable>
</div>
<div
v-if="['Label'].includes(fieldItem.viewType)"
style="position: absolute;font-size: 10px;overflow: hidden;font-weight: bold;"
:style="{
left: fieldItem.left + 'px',
top: fieldItem.top + 'px',
width: (Number(fieldItem.width) + 50) + 'px',
height: fieldItem.height + 'px',
lineHeight: fieldItem.height + 'px',
borderBottom: fieldItem.checkvalue === 1 ? '2px solid red' : ''
}"
>{{ fieldItem.value }}</div>
<button
v-if="fieldItem.viewType === 'Button' && fieldItem.value.indexOf('用户确认') === -1"
disabled
class="cus-btn"
:style="{
left: fieldItem.left + 'px',
top: fieldItem.top + 'px',
width: fieldItem.width + 'px',
height: fieldItem.height + 'px'
}"
>{{ replaceCode(fieldItem.value) }}</button>
<el-input
v-if="['Amount', 'Date', 'Input'].includes(fieldItem.viewType)"
size="mini"
disabled
placeholder=" "
v-model.trim="fieldItem.value"
style="position: absolute;font-size: 10px;"
:style="{
left: fieldItem.left + 'px',
top: fieldItem.top + 'px',
width: (Number(fieldItem.width) < 70 ? (Number(fieldItem.width) + 10) : Number(fieldItem.width)) + 'px',
height: fieldItem.height + 'px',
borderBottom: fieldItem.checkvalue === '1' ? '2px solid red' : ''
}"
></el-input>
<el-input
v-if="['Combobox'].includes(fieldItem.viewType)"
size="mini"
disabled
placeholder=" "
suffix-icon="el-icon-arrow-down"
v-model.trim="fieldItem.value"
style="position: absolute;font-size: 10px;"
:style="{
left: fieldItem.left + 'px',
top: fieldItem.top + 'px',
width: fieldItem.width + 'px',
height: fieldItem.height + 'px',
borderBottom: fieldItem.checkvalue === '1' ? '2px solid red' : ''
}"
>
</el-input>
<div
v-if="['Block'].includes(fieldItem.viewType)"
class="type-block"
:style="{
left: fieldItem.left + 'px',
top: fieldItem.top + 'px',
width: fieldItem.width + 'px',
height: fieldItem.height + 'px',
borderBottom: fieldItem.checkvalue === '1' ? '2px solid red' : ''
}"
>{{ fieldItem.value }}</div>
</div>
</div>
<div class="form-tab" v-if="panelList && panelList.length">
<div
class="tab-item"
v-for="(item, index) in panelList"
:key="index"
@click="handleChangeTab(item.name)"
>
<el-tag
size="small"
:type="activePanel === item.name ? '' : 'info'"
effect="plain"
>{{ replaceCode(item.name) }}</el-tag>
</div>
</div>
</div>
</template>
<script>
import Api from "~/service/Api"
import MTable from './components/Table'
export default {
name: 'HistoryRecord',
components: {
MTable
},
data () {
return {
options: [
{
value: 'test.DSP',
label: 'test.DSP'
},
{
value: '10000059.DSP',
label: '10000059.DSP'
}, {
value: '10000302.DSP',
label: '10000302.DSP'
}, {
value: '10000400.DSP',
label: '10000400.DSP'
}, {
value: '10000401.DSP',
label: '10000401.DSP'
},
{
value: '10000402.DSP',
label: '10000402.DSP'
},
{
value: '10000403.DSP',
label: '10000403.DSP'
},
{
value: '10000404.DSP',
label: '10000404.DSP'
},
{
value: '10000557.DSP',
label: '10000557.DSP'
},
{
value: '10000594.DSP',
label: '10000594.DSP'
},
{
value: '10000595.DSP',
label: '10000595.DSP'
},
{
value: '10004105.DSP',
label: '10004105.DSP'
},
{
value: '10004145.DSP',
label: '10004145.DSP'
},
{
value: '10004200.DSP',
label: '10004200.DSP'
},
{
value: '10004205.DSP',
label: '10004205.DSP'
},
{
value: '10004208.DSP',
label: '10004208.DSP'
},
{
value: '10004218.DSP',
label: '10004218.DSP'
},
{
value: '10004221.DSP',
label: '10004221.DSP'
},
{
value: '10004230.DSP',
label: '10004230.DSP'
},
{
value: '10004244.DSP',
label: '10004244.DSP'
},
{
value: '10004248.DSP',
label: '10004248.DSP'
},
{
value: '10004256.DSP',
label: '10004256.DSP'
},
{
value: '10004259.DSP',
label: '10004259.DSP'
},
{
value: '10004260.DSP',
label: '10004260.DSP'
},
{
value: '10004279.DSP',
label: '10004279.DSP'
}
],
selectFileNale: 'test.DSP',
panelList: [],
activePanel: '',
frameFieldList: []
}
},
mounted () {
this.getConfigData()
console.log('$attrs', this.$attrs)
},
methods: {
handleChangeFile () {
this.getConfigData()
},
async getConfigData () {
let res = await Api.post('/api/dspfile?file=' + this.selectFileNale)
console.log('res===', res)
if (res.success) {
this.panelList = res.data?.panelLists
this.activePanel = this.panelList[0].name
this.frameFieldList = this.panelList[0].list
}
},
handleChangeTab (name) {
this.activePanel = name
this.frameFieldList = this.panelList.filter((item) => {
return item.name === name
})[0].list
},
replaceCode (str) {
return str.replace(/\u001f|&/g, '')
},
replaceSpecialCode (str) {
return str.replace(/&/g, '')
}
}
}
</script>
<style lang="scss" scoped>
.page-wrap {
width: 100%;
height: 100%;
position: absolute;
left: 0;
top: 0;
padding: 2px;
box-sizing: border-box;
display: flex;
align-items: flex-start;
justify-content: flex-start;
flex-direction: column;
border: 1px solid #707070;
.form-content {
width: 100%;
flex: 1;
position: relative;
border: 1px solid #B1B1B1;
overflow-y: auto;
background-color: #F0F0F0;
padding: 5px 0;
.field-item {
.cus-btn {
background-color: #fff!important;
color: black!important;
position: absolute;font-size: 10px;
padding: 0;overflow: hidden;white-space: nowrap;
z-index: 1;
font-weight: bold;
}
.type-block {
position: absolute;font-size: 10px;
border: 1px solid #E4E7ED;
background-color: #fff;overflow: auto;
}
}
}
.form-tab {
padding: 5px 0;
display: flex;
align-items: flex-start;
justify-content: flex-start;
flex-wrap: wrap;
border-top: 1px solid #B1B1B1;
background-color: #F7F7F7;
max-height: 152px;
overflow-y: auto;
.tab-item {
color: black;
text-align: center;
border-radius: 2px;
cursor: pointer;
margin-right: 16px;
margin-bottom: 4px;
}
.tab-item-active {
color: #409eff;
border: 1px solid #409eff;
}
}
::v-deep .el-input__inner {
padding: 0;
height: 22px;
line-height: 22px;
background-color: #fff;
color: black;
}
::v-deep .el-input__suffix {
right: 2px!important;
display: flex;
align-items: center;
}
::v-deep .el-textarea.is-disabled .el-textarea__inner {
background-color: #fff!important;
color: black!important;
padding: 0!important;
}
::v-deep .el-tag--plain.el-tag--info {
color: black!important;
}
}
</style>
......@@ -240,6 +240,9 @@ export default {
{ inifrm: "eafinf", ininam: "查 -- 外债远期信用证(含即期单证相符)", pntmiu: "28" },
{ inifrm: "eafame", ininam: "改 -- 外债远期信用证(含即期单证相符)", pntmiu: "28" },
{ inifrm: "eafdel", ininam: "删 -- 外债远期信用证(含即期单证相符)", pntmiu: "28" },
{ inifrm: "29", ininam: "快照", pntmiu: "" },
{ inifrm: "historyRecord", ininam: "交易快照", pntmiu: "29" },
{ inifrm: "fileReview", ininam: "文件预览", pntmiu: "29" },
// { inifrm: "3", ininam: "出口信用证", pntmiu: "" },
// { inifrm: "infled", ininam: "出口信用证交易查询", pntmiu: "3" },
......
......@@ -91,13 +91,28 @@ module.exports = {
pathRewrite: {
'^/esfeserver': '/esfeserver'
}
},
// 快照
'/gjjs/api/': {
target: 'http://192.168.0.85:8082',
changeOrigin: true,
pathRewrite: {
'^/gjjs': ''
}
},
// 文件预览
'/gjjs/file/': {
target: 'http://192.168.0.85:8081',
changeOrigin: true,
pathRewrite: {
'^/gjjs/file': ''
}
}
}
},
configureWebpack: {
// provide the app's title in webpack's name field, so that
// it can be accessed in index.html to inject the correct title.
devtool: 'source-map',
resolve: {
alias: {
'~': resolve('src')
......@@ -129,44 +144,43 @@ module.exports = {
// when there are many pages, it will cause too many meaningless requests
config.plugins.delete('prefetch')
config
.when(process.env.NODE_ENV !== 'development',
config => {
config
.plugin('ScriptExtHtmlWebpackPlugin')
.after('html')
.use('script-ext-html-webpack-plugin', [{
// `runtime` must same as runtimeChunk name. default is `runtime`
inline: /runtime\..*\.js$/
}])
.end()
config
.optimization.splitChunks({
chunks: 'all',
cacheGroups: {
libs: {
name: 'chunk-libs',
test: /[\\/]node_modules[\\/]/,
priority: 10,
chunks: 'initial' // only package third parties that are initially dependent
},
elementUI: {
name: 'chunk-elementUI', // split elementUI into a single package
priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app
test: /[\\/]node_modules[\\/]_?element-ui(.*)/ // in order to adapt to cnpm
},
commons: {
name: 'chunk-commons',
test: resolve('src/components'), // can customize your rules
minChunks: 3, // minimum common number
priority: 5,
reuseExistingChunk: true
}
config.when(process.env.NODE_ENV !== 'development',
config => {
config
.plugin('ScriptExtHtmlWebpackPlugin')
.after('html')
.use('script-ext-html-webpack-plugin', [{
// `runtime` must same as runtimeChunk name. default is `runtime`
inline: /runtime\..*\.js$/
}])
.end()
config
.optimization.splitChunks({
chunks: 'all',
cacheGroups: {
libs: {
name: 'chunk-libs',
test: /[\\/]node_modules[\\/]/,
priority: 10,
chunks: 'initial' // only package third parties that are initially dependent
},
elementUI: {
name: 'chunk-elementUI', // split elementUI into a single package
priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app
test: /[\\/]node_modules[\\/]_?element-ui(.*)/ // in order to adapt to cnpm
},
commons: {
name: 'chunk-commons',
test: resolve('src/components'), // can customize your rules
minChunks: 3, // minimum common number
priority: 5,
reuseExistingChunk: true
}
})
// https:// webpack.js.org/configuration/optimization/#optimizationruntimechunk
config.optimization.runtimeChunk('single')
}
)
}
})
// https:// webpack.js.org/configuration/optimization/#optimizationruntimechunk
config.optimization.runtimeChunk('single')
}
)
}
}
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