Commit e978bb7d by s_guodong

a

parents
.idea
target
logs
*.iml
\ No newline at end of file
解决: /bin/sh^M:解释器错误:没有那个文件或目录
解决: /bin/sh^M:解释器错误:没有那个文件或目录
在Linux运行.sh文件时错误,原因在于是因为该文件在windows系统上打开过,关闭后其中的空格符号和Linux的不同,导致这个报错,我们可以通过sed命令与正则的配合将文件中的空格符号替换成linux的空格。
sed -i 's/\r$//' start.sh
sed -i 's/\r$//' stop.sh
@echo off
start /d .. java -Dloader.path=lib -jar lib/swift-editor-1.0.0.jar
ping -n 5 127.0.0.1>nul
start http://localhost:8082
\ No newline at end of file
#!/bin/sh
cd $(dirname $0) && cd ..
nohup java -Dloader.path=lib -jar lib/swift-editor-1.0.0.jar >/dev/null 2>&1 &
@echo off
for /f "tokens=1 delims= " %%i in ('jps ^| find "swift-editor"') do taskkill /pid %%i
\ No newline at end of file
#!/bin/sh
jps -l | grep swift-editor | awk '{print $1}' | xargs kill >/dev/null 2>&1
\ No newline at end of file
server.port=8082
logging.config=config/log4j2.xml
rootPath=D:/swiftedit
msgPath=swift
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!-- Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,
当设置成trace时,可以看到log4j2内部各种详细输出
-->
<!-- monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数 -->
<configuration monitorInterval="5">
<!-- 日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<!-- 变量配置 -->
<Properties>
<!--
格式化输出:
%d表示日期,
%thread表示线程名,
%-5level:级别从左显示5个字符宽度
%msg:日志消息,%n是换行符
%logger{36} 表示 Logger 名字最长36个字符
-->
<property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight{%-5level}[%thread] %style{%logger{36}}{cyan} : %msg%n" />
<!-- 定义日志存储的路径,不要配置相对路径 -->
<property name="FILE_PATH" value="log" />
<property name="FILE_NAME" value="swift-editor" />
</Properties>
<appenders>
<console name="Console" target="SYSTEM_OUT">
<!--输出日志的格式-->
<PatternLayout pattern="${LOG_PATTERN}" disableAnsi="false" noConsoleNoAnsi="false"/>
<!--控制台只输出level及其以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
</console>
<!--
  这个会打印出所有的info及以下级别的信息,每次大小超过size,
  则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档
-->
<RollingFile name="RollingFileInfo" fileName="${FILE_PATH}/info.log" filePattern="${FILE_PATH}/${FILE_NAME}-INFO-%d{yyyy-MM-dd}_%i.log.gz">
<!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="${LOG_PATTERN}"/>
<Policies>
<!--interval属性用来指定多久滚动一次,默认是1 hour-->
<TimeBasedTriggeringPolicy interval="1"/>
<SizeBasedTriggeringPolicy size="20MB"/>
</Policies>
<!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件开始覆盖 -->
<DefaultRolloverStrategy max="15"/>
</RollingFile>
<!-- 这个会打印出所有的warn及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
<RollingFile name="RollingFileWarn" fileName="${FILE_PATH}/warn.log" filePattern="${FILE_PATH}/${FILE_NAME}-WARN-%d{yyyy-MM-dd}_%i.log.gz">
<!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
<ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="${LOG_PATTERN}"/>
<Policies>
<!--interval属性用来指定多久滚动一次,默认是1 hour-->
<TimeBasedTriggeringPolicy interval="1"/>
<SizeBasedTriggeringPolicy size="20MB"/>
</Policies>
<!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件开始覆盖-->
<DefaultRolloverStrategy max="15"/>
</RollingFile>
<!-- 这个会打印出所有的error及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
<RollingFile name="RollingFileError" fileName="${FILE_PATH}/error.log" filePattern="${FILE_PATH}/${FILE_NAME}-ERROR-%d{yyyy-MM-dd}_%i.log.gz">
<!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
<ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="${LOG_PATTERN}"/>
<Policies>
<!--interval属性用来指定多久滚动一次,默认是1 hour-->
<TimeBasedTriggeringPolicy interval="1"/>
<SizeBasedTriggeringPolicy size="20MB"/>
</Policies>
<!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件开始覆盖-->
<DefaultRolloverStrategy max="15"/>
</RollingFile>
</appenders>
<!--Logger节点用来单独指定日志的形式,比如要为指定包下的class指定不同的日志级别等。-->
<!--然后定义loggers,只有定义了logger并引入的appender,appender才会生效-->
<loggers>
<!--过滤掉spring和mybatis的一些无用的DEBUG信息-->
<logger name="org.mybatis" level="info" additivity="false">
<AppenderRef ref="Console"/>
</logger>
<!--监控系统信息-->
<!--若是additivity设为false,则 子Logger 只会在自己的appender里输出,而不会在 父Logger 的appender里输出。-->
<Logger name="org.springframework" level="info" additivity="false">
<AppenderRef ref="Console"/>
</Logger>
<root level="info">
<appender-ref ref="Console"/>
<appender-ref ref="RollingFileInfo"/>
<appender-ref ref="RollingFileWarn"/>
<appender-ref ref="RollingFileError"/>
</root>
</loggers>
</configuration>
\ No newline at end of file
2023-04-18 13:42:18.740 INFO [main] com.brilliance.mxeditor.Application : Starting Application v1.0.0 using Java 1.8.0_152 on ZhangHou with PID 14144 (D:\xinchen\手工拟报(swift editor交接)\SwiftISOEditor\SwiftISOEditor\lib\swift-editor-1.0.0.jar started by 12092 in D:\xinchen\手工拟报(swift editor交接)\SwiftISOEditor\SwiftISOEditor)
2023-04-18 13:42:18.772 INFO [main] com.brilliance.mxeditor.Application : No active profile set, falling back to default profiles: default
2023-04-18 13:42:19.586 INFO [main] org.apache.coyote.http11.Http11NioProtocol : Initializing ProtocolHandler ["http-nio-8082"]
2023-04-18 13:42:19.586 INFO [main] org.apache.catalina.core.StandardService : Starting service [Tomcat]
2023-04-18 13:42:19.587 INFO [main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.48]
2023-04-18 13:42:19.637 INFO [main] org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2023-04-18 13:42:19.956 INFO [main] org.apache.coyote.http11.Http11NioProtocol : Starting ProtocolHandler ["http-nio-8082"]
2023-04-18 13:42:19.991 INFO [main] com.brilliance.mxeditor.Application : Started Application in 1.564 seconds (JVM running for 2.224)
2023-04-18 13:42:22.034 INFO [http-nio-8082-exec-1] org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
.inputDeep[data-v-0826e2f4] .el-input__inner{background-color:#fff}.el_table[data-v-151331da]{border:1px solid #ebebeb}.tipCls[data-v-151331da]{color:#f56c6c;font-size:12px;margin-left:5px;float:left}[data-v-151331da] .isError .el-input__inner{border-color:#f56c6c}.tip[data-v-81e69ab8]{color:red}.page_title[data-v-126fffb6]{text-align:center}.node_nonleaf[data-v-126fffb6]{color:#169bff;border-bottom:1px dotted #169bff}.msg_title input[data-v-126fffb6]{vertical-align:top;margin-right:0}.el-form-item[data-v-126fffb6]{margin-bottom:0}[data-v-126fffb6] .el-form-item__content{padding-left:23px}[data-v-126fffb6] .el-tree-node__content{height:auto}.el-button+.el-button[data-v-126fffb6]{margin-left:0}.el-button--mini.is-circle[data-v-126fffb6]{padding:1px}.tree_node[data-v-126fffb6]{flex:1;display:flex;align-items:center;font-size:14px}.iso_tools[data-v-126fffb6]{position:fixed;top:150px;right:10px;z-index:9}.left[data-v-126fffb6],.right[data-v-126fffb6]{width:50%;height:100%;background:#fff;float:left}.title1[data-v-126fffb6]{background:red;text-align:center}.title2[data-v-126fffb6]{background:green;text-align:center}.textleft[data-v-126fffb6],.textright[data-v-126fffb6]{width:100%;height:600px}a[data-v-8aebcede]{text-decoration:none}.box[data-v-91a4afba]{width:100%;height:100%;margin:1% 0;overflow:hidden;box-shadow:-1px 9px 10px 3px rgba(0,0,0,.11)}.left[data-v-91a4afba],.mid[data-v-91a4afba]{width:50%;height:100%;background:#fff;float:left}.title1[data-v-91a4afba]{background:red;text-align:center}.title2[data-v-91a4afba]{background:green;text-align:center}.textleft[data-v-91a4afba],.textright[data-v-91a4afba]{width:100%;height:600px}.box[data-v-6b5c7b01]{width:100%;height:100%;margin:1% 0;overflow:hidden;box-shadow:-1px 9px 10px 3px rgba(0,0,0,.11)}.left[data-v-6b5c7b01],.mid[data-v-6b5c7b01]{width:50%;height:100%;background:#fff;float:left}.title1[data-v-6b5c7b01]{background:red;text-align:center}.title2[data-v-6b5c7b01]{background:green;text-align:center}.textleft[data-v-6b5c7b01],.textright[data-v-6b5c7b01]{width:100%;height:600px}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
<!doctype html><html lang=""><head><meta charset="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta name="viewport" content="width=device-width,initial-scale=1"/><link rel="icon" href="/favicon.ico"/><title>ISO手工拟报</title><script defer="defer" src="/js/chunk-vendors.fc4c27d7.js"></script><script defer="defer" src="/js/app.2003477a.js"></script><link href="/css/chunk-vendors.0b0c58b7.css" rel="stylesheet"><link href="/css/app.abbc3a25.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but swiftiso-editor doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
.DS_Store
node_modules
/dist
# local env files
.env.local
.env.*.local
# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
# editor_vue
## Project setup
```
npm install
```
### Compiles and hot-reloads for development
```
npm run serve
```
### Compiles and minifies for production
```
npm run build
```
### Lints and fixes files
```
npm run lint
```
### Customize configuration
See [Configuration Reference](https://cli.vuejs.org/config/).
module.exports = {
presets: [
"@vue/cli-plugin-babel/preset",
["@babel/preset-env", { modules: false }],
],
plugins: [
[
"component",
{
libraryName: "element-ui",
styleLibraryName: "theme-chalk",
},
],
],
};
{
"compilerOptions": {
"target": "es5",
"module": "esnext",
"baseUrl": "./",
"moduleResolution": "node",
"paths": {
"@/*": [
"src/*"
]
},
"lib": [
"esnext",
"dom",
"dom.iterable",
"scripthost"
]
}
}
This source diff could not be displayed because it is too large. You can view the blob instead.
{
"name": "swiftiso-editor",
"version": "0.1.0",
"private": true,
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint"
},
"dependencies": {
"axios": "^0.27.2",
"core-js": "^3.8.3",
"decimal.js": "^10.4.0",
"element-ui": "^2.15.8",
"save": "^2.5.0",
"vue": "^2.6.14",
"vue-router": "^3.5.4",
"vuex": "^3.6.2"
},
"devDependencies": {
"@babel/core": "^7.12.16",
"@babel/eslint-parser": "^7.12.16",
"@vue/cli-plugin-babel": "~5.0.0",
"@vue/cli-plugin-eslint": "~5.0.0",
"@vue/cli-service": "~5.0.0",
"babel-plugin-component": "^1.1.1",
"eslint": "^7.32.0",
"eslint-plugin-vue": "^8.0.3",
"less": "^4.1.3",
"less-loader": "^11.0.0",
"vue-template-compiler": "^2.6.14"
},
"eslintConfig": {
"root": true,
"env": {
"node": true
},
"extends": [
"plugin:vue/essential",
"eslint:recommended"
],
"parserOptions": {
"parser": "@babel/eslint-parser"
},
"rules": {}
},
"browserslist": [
"> 1%",
"last 2 versions",
"not dead"
]
}
<!DOCTYPE html>
<html lang="">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
<link rel="icon" href="<%= BASE_URL %>favicon.ico" />
<title>ISO手工拟报</title>
</head>
<body>
<noscript>
<strong
>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work
properly without JavaScript enabled. Please enable it to
continue.</strong
>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>
<template>
<div id="app">
<router-view></router-view>
</div>
</template>
<script>
export default {
}
</script>
<style>
</style>
import link from "./service"
export default{
sendSWiftMes(data){
return new link({
url:`/msgsend`,
method:"post",
data:data
})
},
saveSWiftMes(data){
return new link({
url:`/msgsave`,
method:"post",
data:data
})
},
validateSWiftMes(data){
return new link({
url:`/msgvalidate`,
method:"post",
data:data
})
},
mx2mt(data){
return new link({
url:`/mx2mt`,
method:"post",
data:data
})
},
mxType(data){
return new link({
url:`/mxType`,
method:"post",
data:data
})
},
mt2mx(data){
return new link({
url:`/mt2mx`,
method:"post",
data:data
})
},
}
import axios from 'axios'
const service = axios.create({
baseURL: 'swift-editor/swift', //代理
timeout: 50000 // request timeout
})
export default service
\ No newline at end of file
<template>
<span>
<el-select v-model="orgData.ccy" :disabled="dataModel.disabled" filterable placeholder="选择币种" clearable
size="small" @change="changeOption">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
<el-input :disabled="dataModel.disabled" v-model="orgData.value" type="number" :show-word-limit="true"
style="width:60%;" @blur="amountHandle" @input="checkData" :placeholder="`请输入${dataModel.label}`">
</el-input>
</span>
</template>
<script>
import MsgCodes from '../script/MsgCode';
import MsgJsonMap from '../script/MsgJson';
import Decimal from 'decimal.js';
export default {
props: ['dataModel', 'sca'],
data() {
return {
scale: 2,
orgData: {},
options: [],
scaleMap: {}
}
},
mounted() {
this.orgData = this.dataModel.value ? this.dataModel.value : MsgJsonMap('Amount');
this.dataModel.value = this.orgData;
this.options = MsgCodes['ccy'];
for (let opt of this.options) {
this.scaleMap[opt.value] = opt.scale;
}
},
methods: {
changeOption(value) {
if (value === '') {
this.orgData.value = undefined;
} else {
this.scale = this.scaleMap[value];
this.amountHandle();
}
},
checkData() {
if (this.orgData.ccy === undefined || this.orgData.ccy === null || this.orgData.ccy.trim() === '') {
this.orgData.ccy = this.options[0].value;
this.scale = this.options[0].scale;
}
},
amountHandle() {
this.$root.$children[0].$children[0].$refs.form.validateField(this.$parent._props.prop, errMsg => {
if (errMsg === '') {
const inputValue = Decimal(this.orgData.value)
this.orgData.value = inputValue.toFixed(this.scale, Decimal.ROUND_HALF_UP);
}
});
}
}
}
</script>
\ No newline at end of file
<template>
<el-cascader v-model="selectedValues" :options="options" @change="onChange" size="small" clearable filterable>
</el-cascader>
</template>
<script>
import MsgCodes from '../script/MsgCode';
import MsgJsonMap from '../script/MsgJson';
export default {
props: ['dataModel'],
data() {
return {
options: MsgCodes['BTCCombinations'],
selectedValues: this.initValues()
}
},
methods: {
initValues() {
const arry = [];
const tmpData = this.dataModel.value ? this.dataModel.value : this.dataModel.value = MsgJsonMap('BTCDomain');
arry.push(tmpData.cd);
arry.push(tmpData.fmly.cd);
arry.push(tmpData.fmly.subFmlyCd);
return arry;
},
onChange() {
this.dataModel.value.cd = this.selectedValues[0];
this.dataModel.value.fmly.cd = this.selectedValues[1];
this.dataModel.value.fmly.subFmlyCd = this.selectedValues[2];
}
},
}
</script>
\ No newline at end of file
<template>
<div>
<el-button type="text" @click="dialogFormVisible = true">请选择余额信息</el-button>
<el-dialog title="余额信息" :visible.sync="dialogFormVisible">
<el-form :model="form">
<el-form-item label="余额类型" :label-width="formLabelWidth">
<el-select v-model="form.cdOrPrtry" placeholder="请选择余额类型">
<el-option label="起始余额" value="OPBD"></el-option>
<el-option label="结束余额" value="CLBD"></el-option>
<el-option label="有效余额" value="CLAV"></el-option>
</el-select>
</el-form-item>
<el-form-item label="余额子类型" :label-width="formLabelWidth">
<el-radio-group v-model="form.subTp" @change="changeHandler">
<el-radio v-model="radio" label="1">余额子类型代码</el-radio>
<el-radio v-model="radio" label="2">专有信息</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="余额子类型代码" :label-width="formLabelWidth">
<el-input :disabled="disabled1" autocomplete="off" v-model="form.subTpCd" maxlength="4" auto-complete="off" show-word-limit v-bind="{placeholder:`请输入余额子类型代码`}"></el-input>
</el-form-item>
<el-form-item label="专有信息" :label-width="formLabelWidth">
<el-input :disabled="disabled2" autocomplete="off" v-model="form.subTpPrtry" maxlength="35" auto-complete="off" show-word-limit v-bind="{placeholder:`请输入专有信息`}"></el-input>
</el-form-item>
<el-form-item label="金额" :label-width="formLabelWidth">
<el-input v-model="form.amt" autocomplete="off" oninput="value=value.replace(/[^0-9.]/g,'')" maxlength="18" show-word-limit v-bind="{placeholder:`请输入金额`}"></el-input>
</el-form-item>
<el-form-item label="币种" :label-width="formLabelWidth">
<el-select v-model="form.ccy" placeholder="请选择货币类型">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> </el-option>
</el-select>
</el-form-item>
<el-form-item label="日期" :label-width="formLabelWidth">
<el-date-picker v-model="form.dt" type="date" placeholder="请选择日期" value-format="yyyy-MM-dd"> </el-date-picker>
</el-form-item>
<el-form-item label="借贷标识" :label-width="formLabelWidth">
<el-select v-model="form.cdtDbtInd" placeholder="请选择借贷标识">
<el-option label="借记" value="DBIT"></el-option>
<el-option label="信贷" value="CRDT"></el-option>
</el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible = false">取 消</el-button>
<el-button type="primary" @click="submit">确 定</el-button>
</div>
</el-dialog>
<el-table v-if="node.value.length"
:data="node.value"
stripe
style="width: 90%">
<el-table-column
prop="cdOrPrtry"
label="余额类型"
width="180"
:formatter="stateFormat">
</el-table-column>
<el-table-column
prop="subTpCd"
label="余额子类型代码"
width="180">
</el-table-column>
<el-table-column
prop="subTpPrtry"
label="专有信息"
width="180">
</el-table-column>
<el-table-column
prop="amt"
label="金额"
width="180">
</el-table-column>
<el-table-column
prop="ccy"
label="币种"
width="180">
</el-table-column>
<el-table-column
prop="dt"
label="日期"
width="180">
</el-table-column>
<el-table-column
prop="cdtDbtInd"
label="借贷标识"
width="180">
</el-table-column>
<el-table-column label="操作">
<template slot-scope="scope">
<el-button
size="mini"
type="danger"
@click="handleDelete(scope.$index, scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
</div>
</template>
<script>
import Balance from "../script/MsgJson/Balance"
export default {
props:['dataModel','options'],
data(){
return {
form: {
cdOrPrtry:"",
subTpCd:"",
subTpPrtry:"",
subTp:"",
amt:"",
ccy:"",
dt:"",
cdtDbtInd:""
},
node:{
value:[]
},
result:[],
dialogFormVisible: false,
formLabelWidth: '120px',
disabled1:true,
disabled2:true,
radio: '1'
}
},
methods: {
handleDelete(index, row) {
this.$delete(this.node.value,index)
this.$delete(this.result,index)
},
changeHandler(){
if("1" === this.form.subTp){
this.form.subTpPrtry = ""
this.disabled1 = false
this.disabled2 = true
}
if("2" === this.form.subTp){
this.form.subTpCd = ""
this.disabled1 = true
this.disabled2 = false
}
},
submit(){
var b = JSON.parse(JSON.stringify(this.form));
var c = JSON.parse(JSON.stringify(Balance));
c.tp.cdOrPrtry.cd = b.cdOrPrtry
c.tp.subTp.cd = b.subTpCd
c.tp.subTp.prtry = b.subTpPrtry
c.amt.value = b.amt
c.amt.ccy = b.ccy
c.dt.dt = b.dt
c.cdtDbtInd = b.cdtDbtInd
this.node.value.push(b)
this.result.push(c)
for(var i = 0, len = this.node.value.length; i < len; i++) {
var cdOrPrtry = this.node.value[i].cdOrPrtry
for(var j = i+1, len = this.node.value.length; j < len; j++) {
if(cdOrPrtry === this.node.value[j].cdOrPrtry){
this.node.value.pop()
this.result.pop()
this.$message({
message: '余额类型不能重复',
type: 'warning'
});
}
}
}
// this.dataModel.value = this.node.value
this.dataModel.value = this.result
this.disabled1 = true
this.disabled2 = true
this.form.cdOrPrtry = ""
this.form.subTp = ""
this.form.subTpCd = ""
this.form.subTpPrtry = ""
this.form.amt = ""
this.form.ccy = ""
this.form.dt = ""
this.form.cdtDbtInd = ""
this.dialogFormVisible = false
},
stateFormat(row, column) {
if (row.cdOrPrtry === "OPBD") {
return '起始余额'
} else if(row.cdOrPrtry === "CLBD"){
return '结束余额'
} else if(row.cdOrPrtry === "CLAV"){
return '有效余额'
}
},
},
mounted(){
}
}
</script>
<style scoped>
.el-radio{
display: block;
line-height: 23px;
white-space: normal;
margin-right: 0;
}
</style>
\ No newline at end of file
<template>
<div style="height: 32.89px; width: 70%;"></div>
</template>
<script>
export default {
}
</script>
\ No newline at end of file
<template>
<el-date-picker v-model="dataModel.value" :disabled="dataModel.disabled" :type="dateType" :format="viewFormat"
:value-format="valueFormat" :placeholder="`选择日期${'datetime' === dateType ? '和时间' : ''}`">
</el-date-picker>
</template>
<script>
export default {
props: ['dataModel', 'dateType'],
data() {
return {
viewFormat: this.dateType === 'datetime' ? 'yyyy-MM-dd hh:mm:ss' : 'yyyy-MM-dd',
valueFormat: this.dateType === 'datetime' ? 'yyyy-MM-ddThh:mm:ss.SSS+08:00' : 'yyyy-MM-dd',
}
}
}
</script>
\ No newline at end of file
<template>
<input type="hidden" v-model="dataModel.value"/>
</template>
<script>
export default {
props: ['dataModel'],
mounted(){
this.dataModel.value = this.dataModel.defaultValue
}
}
</script>
\ No newline at end of file
<template>
<div>
<el-button v-if="!(tableData.length>=maxSize)" type="text" @click="dialogVisible = true">新增{{ dataModel.label }}
</el-button>
<el-dialog :title="`新增${dataModel.label}`" :visible.sync="dialogVisible">
<el-input v-model="inputData" :maxlength="maxLength" :show-word-limit="true" @input="tipShow = false"
@blur="validate" :class="{isError:tipShow}" clearable>
</el-input>
<div class="tipCls" v-if=" tipShow">不符合{{pattern}}</div>
<div slot="footer">
<el-button @mousedown.native="tipShow = false;dialogVisible = false; inputData = ''">取 消</el-button>
<el-button type="primary" @click="addData" :disabled="tipShow">确 定</el-button>
</div>
</el-dialog>
<el-table class="el_table" :data="tableData" size="mini" max-height="200px">
<el-table-column label="序号" fixed width="100">
<template slot-scope="scope">
<span>{{ scope.$index + 1 }}</span>
</template>
</el-table-column>
<el-table-column :label="dataModel.label" fixed width="450">
<template slot-scope="scope">
<span>{{ scope.row.name }}</span>
</template>
</el-table-column>
<el-table-column label="操作" fixed="right">
<template slot-scope="scope">
<el-button size="mini" type="danger" @click="tableData.splice(scope.$index, 1)">删除</el-button>
</template>
</el-table-column>
</el-table>
</div>
</template>
<script>
export default {
props: ['dataModel', 'pattern'],
data() {
return {
dialogVisible: false,
inputData: '',
tableData: [],
tipShow: false,
maxLength: undefined,
maxSize: undefined,
}
},
methods: {
addData() {
const data = this.inputData.trim();
if (data !== '' && !this.tipShow) {
this.tableData.push({ name: data });
}
this.tipShow = false;
this.dialogVisible = false;
this.inputData = '';
},
validate() {
this.tipShow = this.inputData.trim() !== '' && this.pattern && !new RegExp("^" + this.pattern + "$").test(this.inputData);
}
},
mounted() {
this.dataModel.value = this.tableData;
this.limit = [];
if (this.dataModel.maxLength) {
const split = this.dataModel.maxLength.split(',');
this.maxLength = split[0];
this.maxSize = split[1];
}
}
}
</script>
<style scoped>
.el_table {
border: 1px solid #ebebeb;
}
.tipCls {
color: #F56C6C;
font-size: 12px;
margin-left: 5px;
float: left;
}
:deep(.isError .el-input__inner) {
border-color: #F56C6C;
}
</style>
\ No newline at end of file
<template>
<div style="height: 32.89px; width: 15px; float: left;" class="tip">[*]</div>
</template>
<script>
export default {
props: ['dataModel'],
}
</script>
<style scoped>
.tip {
color: red;
}
</style>
\ No newline at end of file
<template>
<div style="height: 32.89px; width: 70%;">
<el-button icon="el-icon-view" type="text" @click.stop="switchChange">{{ node.isLeaf ? '显示' : '隐藏' }}子节点
</el-button>
</div>
</template>
<script>
export default {
props: ['dataModel', 'node'],
methods: {
exchangeChildren() {
const tmp = this.dataModel.children;
this.dataModel.children = this.dataModel._children;
this.dataModel._children = tmp;
},
switchChange() {
this.exchangeChildren();
this.node.expanded = this.node.isLeaf;
}
}
}
</script>
\ No newline at end of file
<template>
<el-select v-model="dataModel.value" filterable placeholder="选择列表" clearable size="small"
:disabled="dataModel.disabled">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> </el-option>
</el-select>
</template>
<script>
export default {
props: ['options', 'dataModel'],
}
</script>
\ No newline at end of file
<template>
<el-input :disabled="disabled" v-model="dataModel.value" :maxlength="max" :type="dataType"
:placeholder="vpcPlaceholder" :show-word-limit="true" style="width: 70%;" :class="{'inputDeep':active}">
</el-input>
</template>
<script>
export default {
props: ['dataModel', 'dataType', 'max'],
data() {
return {
text: "",
disabled: false,
active:false,
}
},
mounted() {
if ("bizMsgIdr" === this.dataModel.tag) {
this.active = true
// console.log(this.active)
// this.dataModel.value = "Swift" + Number(Date.now())
// this.text = "业务编号已自动生成"
this.dataModel.value = "系统自动生成"
} else if (this.dataModel.defaultValue !== undefined) {
this.$set(this.dataModel, 'value', this.dataModel.defaultValue);
}
this.disabled = this.dataModel.unable || this.dataModel.disabled;
},
computed: {
vpcPlaceholder() {
this.text = "请输入" + this.dataModel.label
return this.text
},
},
watch: {
'dataModel.disabled': {
handler(n, o) {
this.disabled = this.dataModel.unable || n;
}
}
}
}
</script>
<style scoped>
.inputDeep>>>.el-input__inner {
background-color: white
}
</style>
\ No newline at end of file
<template>
<el-time-picker v-model="dataModel.value" :disabled="dataModel.disabled" format="HH:mm" value-format="HH:mm"
size="small" :picker-options="{
selectableRange: '00:00:00 - 13:59:00', format: 'HH:mm'
}" placeholder="选择时间">
</el-time-picker>
</template>
<script>
export default {
props: ['dataModel'],
}
</script>
\ No newline at end of file
import BlankSpace from "./BlankSpace.vue";
import TextInput from "./TextInput.vue";
import Select from "./Select.vue";
import Time from "./Time.vue";
import Date from "./Date.vue";
import List from "./List.vue";
import Amount from "./Amount.vue";
import HiddenInput from "./HiddenInput.vue";
import MandatoryNode from "./MandatoryNode.vue";
import OptionalNode from "./OptionalNode.vue";
import BTCDomain from "./BTCDomain.vue";
export default {
"iso-text-input": TextInput,
"blank-space": BlankSpace,
"iso-select": Select,
"iso-time": Time,
"iso-date": Date,
"iso-list": List,
"iso-amount": Amount,
"iso-hidden-input": HiddenInput,
"node-mandatory": MandatoryNode,
"node-optional": OptionalNode,
"iso-btc-domain": BTCDomain,
};
<template>
<el-menu class="el-menu-demo" mode="horizontal">
<el-submenu index="1">
<template slot="title">ISO手工拟报报文</template>
<div v-for="(item, i) in messageTypeCodes">
<el-menu-item><router-link :to="'/iso/'+item.value">{{item.label}}</router-link></el-menu-item>
</div>
</el-submenu>
<el-submenu index="2">
<template slot="title">SWIFT报文中央格转器</template>
<el-menu-item index="2-1"><router-link to="/mx2mt">MX转MT</router-link></el-menu-item>
<el-menu-item index="2-2"><router-link to="/mt2mx">MT转MX</router-link></el-menu-item>
</el-submenu>
</el-menu>
</template>
<script>
import MsgCodes from './script/MsgCode';
export default {
data() {
return {
messageTypeCodes : MsgCodes['messageTypeCode']
}
}
}
</script>
<style scoped>
a{text-decoration: none}
</style>
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
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