Commit 09108f8e by 李耀琨

拆分字段,字符串操作

parent 45efa79b
<template>
<div class="getSystemInformation">
<el-dialog
title=" 列转行"
:visible.sync="columnToRowDialog"
width="800px"
:before-close="handleCloseFun"
>
<el-form ref="form" :model="form" label-width="120px">
<el-form-item label="步骤名称:">
<el-input v-model="form.label"></el-input>
</el-form-item>
</el-form>
<el-card class="box-card">
构成分组的字段:
<br />
<el-button type="text" @click="addSheetFun(true)" style="margin: 10px"
>添加字段</el-button
>
<el-button type="text" @click="getTheFieldFun">获取字段</el-button>
<el-table :data="group" style="width: 100%">
<el-table-column type="index" width="50"> </el-table-column>
<el-table-column prop="name" label="分组字段">
</el-table-column>
<el-table-column label="操作">
<template slot-scope="scope">
<el-button
@click="addSheetFun(false, scope.row)"
type="text"
size="small"
>编辑</el-button
>
<el-button
type="text"
size="small"
@click="deleteRow(scope.$index, group)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
</el-card>
<br>
<el-card class="box-card">
目标字段
<br />
<el-button type="text" @click="addSheet(true)" style="margin: 10px"
>添加字段</el-button
>
<el-button type="text" @click="getTheField">获取字段</el-button>
<el-table :data="fields" style="width: 100%">
<el-table-column type="index" width="50"> </el-table-column>
<el-table-column prop="target_name" label="目标字段">
</el-table-column>
<el-table-column prop="field_name" label="数据字段">
</el-table-column>
<el-table-column prop="key_value" label="关键字值"> </el-table-column>
<el-table-column prop="target_type" label="类型"> </el-table-column>
<el-table-column prop="target_format" label="格式化">
</el-table-column>
<el-table-column prop="target_length" label="长度"> </el-table-column>
<el-table-column prop="target_precision" label="精度">
</el-table-column>
<el-table-column prop="target_currency_symbol" label="货币类型">
</el-table-column>
<el-table-column prop="target_decimal_symbol" label="10进制的">
</el-table-column>
<el-table-column prop="target_grouping_symbol" label="分组">
</el-table-column>
<el-table-column prop="target_null_string" label="Null if">
</el-table-column>
<el-table-column prop="target_aggregation_type" label="聚合">
<template slot-scope="scope">
{{ getTarget_aggregation_type(scope.row.target_aggregation_type)}}
</template>
</el-table-column>
<el-table-column label="操作" width="90px">
<template slot-scope="scope">
<el-button
@click="addSheet(false, scope.row)"
type="text"
size="small"
>编辑</el-button
>
<el-button
type="text"
size="small"
@click="deleteRow(scope.$index, fields)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
</el-card>
<span slot="footer" class="dialog-footer">
<el-button @click="handleCloseFun">取 消</el-button>
<el-button type="primary" @click="SystemInfoDialogFun">确 定</el-button>
</span>
</el-dialog>
<el-dialog
:title="dataStatus ? '新增' : '修改'"
:visible.sync="addField"
width="500px"
:before-close="handleClose"
:modal="false"
>
<el-form ref="form" :model="fiel" label-width="160px">
<el-form-item label="目标字段:">
<el-input v-model="fiel.target_name"></el-input>
</el-form-item>
<el-form-item label="数据字段:">
<el-input v-model="fiel.field_name"></el-input>
</el-form-item>
<el-form-item label="关键字值:">
<el-input v-model="fiel.key_value"></el-input>
</el-form-item>
<el-form-item label="类型:">
<el-select v-model="fiel.target_type" style="width: 100%" clearable>
<el-option
v-for="item in fieldType"
:key="item.id"
:label="item.name"
:value="item.name"
/>
</el-select>
</el-form-item>
<el-form-item label="格式化:">
<el-select v-model="fiel.target_format" style="width: 100%" clearable>
<el-option
v-for="item in fieldFormat"
:key="item.index"
:label="item.name"
:value="item.name"
/>
</el-select>
</el-form-item>
<el-form-item label="长度:">
<el-input v-model="fiel.target_length"></el-input>
</el-form-item>
<el-form-item label="精确:">
<el-input v-model="fiel.target_precision"></el-input>
</el-form-item>
<el-form-item label="货币类型:">
<el-input v-model="fiel.target_currency_symbol"></el-input>
</el-form-item>
<el-form-item label="10进制的:">
<el-input v-model="fiel.target_decimal_symbol"></el-input>
</el-form-item>
<el-form-item label="分组:">
<el-input v-model="fiel.target_grouping_symbol"></el-input>
</el-form-item>
<el-form-item label="Null if:">
<el-input v-model="fiel.target_null_string"></el-input>
</el-form-item>
<el-form-item label="聚合:">
<el-select
v-model="fiel.target_aggregation_type"
style="width: 100%"
clearable
>
<el-option label="Sum" value="SUM"></el-option>
<el-option label="Average" value="AVERAGE"></el-option>
<el-option label="Minimum" value="MIN"></el-option>
<el-option label="Maximum" value="MAX"></el-option>
<el-option label="Number of Values" value="COUNT_ALL"></el-option>
<el-option label="Concatenate strings separated by ," value="CONCAT_COMMA"></el-option>
</el-select>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="addField = false">取 消</el-button>
<el-button type="primary" @click="addFieldDetermine">确 定</el-button>
</span>
</el-dialog>
<el-dialog
:title="groupStatus ? '新增' : '修改'"
:visible.sync="addGroup"
width="500px"
:before-close="handleClose"
:modal="false"
>
<el-form ref="form" :model="groupFiel" label-width="160px">
<el-form-item label="名称:">
<el-input v-model="groupFiel.name"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="addGroup = false">取 消</el-button>
<el-button type="primary" @click="addGroupDetermine">确 定</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import mxgraph from "@/utils/mxgraph";
const {
mxGraph,
mxUtils,
mxEvent,
mxKeyHandler,
mxRubberband,
mxConstants,
mxStencilRegistry,
mxStencil,
mxCodec,
mxGraphModel,
mxGeometry,
} = mxgraph;
import {
systemDataTypes,
valueFormat,
valueMeta,
inputOutputFields,
} from "@/api/kettle/link";
export default {
props: ["form", "columnToRowDialog", "saveOutputDialog", "nodeData"],
data() {
return {
addField: false,
fields: [],
type: {},
dataStatus: false,
fiel: {},
fieldFormat: [],
fieldType: [],
group:[],
groupFiel:{},
groupStatus:false,
addGroup:false,
};
},
created() {
this.systemDataTypesFun();
},
methods: {
clickFun(graph, val) {
console.log(graph, "双击获取值");
this.newGraph = graph;
console.log(val, "拿到form");
this.fields = JSON.parse(val.fields);
this.group = JSON.parse(val.group);
},
getTheFieldFun(){
console.log(this.nodeData);
var enc = new mxCodec(mxUtils.createXmlDocument());
var node = enc.encode(this.newGraph.getModel());
this.graphXml = mxUtils.getPrettyXml(node);
// console.log( this.graphXml,"看着了");
let pamerFields = new FormData(); // 创建form对象
pamerFields.append(
"stepName",
this.nodeData.value.attributes.label.value
);
pamerFields.append("graphXml", this.graphXml);
pamerFields.append("before", true);
pamerFields.append("query", "");
inputOutputFields(pamerFields).then((res) => {
console.log(res, "yuiyuiyui");
this.group = res;
// this.fields.field_name = res.name
});
},
getTheField() {
console.log(this.nodeData);
var enc = new mxCodec(mxUtils.createXmlDocument());
var node = enc.encode(this.newGraph.getModel());
this.graphXml = mxUtils.getPrettyXml(node);
// console.log( this.graphXml,"看着了");
let pamerFields = new FormData(); // 创建form对象
pamerFields.append(
"stepName",
this.nodeData.value.attributes.label.value
);
pamerFields.append("graphXml", this.graphXml);
pamerFields.append("before", true);
pamerFields.append("query", "");
inputOutputFields(pamerFields).then((res) => {
console.log(res, "yuiyuiyui");
let i = 0
res.forEach(item => {
i++
this.fields.push({
target_name:'字段'+ i,
field_name:item.name,
target_type:item.type,
target_format:item.conversionMask,
target_length:item.length,
target_precision:item.precision,
target_currency_symbol:item.currencyType,
target_grouping_symbol:item.group,
target_null_string:item.nullable
})
});
// this.fields.field_name = res.name
});
},
handleCloseFun() {
this.$emit("update:columnToRowDialog", false);
},
SystemInfoDialogFun() {
this.handleCloseFun();
this.form.fields = JSON.stringify(this.fields);
this.form.group = JSON.stringify(this.group);
this.saveOutputDialog(this.form);
},
addFieldDetermine() {
this.addField = !this.addField;
if (this.dataStatus) {
this.fields.push(this.fiel);
} else {
}
},
addGroupDetermine() {
this.addGroup = !this.addGroup;
if (this.groupStatus) {
this.group.push(this.groupFiel);
} else {
}
},
// 关闭弹框
handleClose(done) {
this.$confirm("确认关闭?")
.then((_) => {
done();
})
.catch((_) => {});
},
deleteRow(index, rows) {
rows.splice(index, 1);
},
addSheet(state, val) {
this.valueFormatFun();
this.valueMetaFun();
this.addField = !this.addField;
this.dataStatus = state;
if (state) {
this.fiel = {};
} else {
this.fiel = val;
}
},
addSheetFun(state, val) {
this.addGroup = !this.addGroup;
this.groupStatus = state;
if (state) {
this.groupFiel = {};
} else {
this.groupFiel = val;
}
},
systemDataTypesFun() {
systemDataTypes().then((res) => {
this.type = res;
});
},
valueMetaFun() {
valueMeta().then((res) => {
this.fieldType = res;
});
},
valueFormatFun() {
let pamer2 = new FormData(); // 创建form对象
pamer2.append("valueType", "all");
valueFormat(pamer2).then((res) => {
this.fieldFormat = res;
});
},
// 判断伤残等级
getTarget_aggregation_type(type) {
// console.log(type, typeof type)
this.target_aggregation_type = type;
var category = "";
switch (type) {
case "SUM":
category = "Sum";
break;
case "AVERAGE":
category = "Average";
break;
case "MIN":
category = "Minimum";
break;
case "MAX":
category = "Maximum";
break;
case "COUNT_ALL":
category = "Number of Values";
break;
case "CONCAT_COMMA":
category = "Concatenate strings separated by ,";
break;
}
return category;
},
},
};
</script>
<style lang="scss" scoped>
* {
outline: none;
}
</style>
...@@ -10,38 +10,11 @@ ...@@ -10,38 +10,11 @@
<el-form-item label="步骤名称:"> <el-form-item label="步骤名称:">
<el-input v-model="form.label"></el-input> <el-input v-model="form.label"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="Key字段">
<el-input v-model="form.typefield"></el-input>
</el-form-item>
</el-form> </el-form>
<el-card class="box-card">
构成分组的字段:
<br />
<el-button type="text" @click="addSheetFun(true)" style="margin: 10px"
>添加字段</el-button
>
<el-button type="text" @click="getTheFieldFun">获取字段</el-button>
<el-table :data="group" style="width: 100%">
<el-table-column type="index" width="50"> </el-table-column>
<el-table-column prop="name" label="分组字段">
</el-table-column>
<el-table-column label="操作">
<template slot-scope="scope">
<el-button
@click="addSheetFun(false, scope.row)"
type="text"
size="small"
>编辑</el-button
>
<el-button
type="text"
size="small"
@click="deleteRow(scope.$index, group)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
</el-card>
<br> <br>
<el-card class="box-card"> <el-card class="box-card">
...@@ -53,31 +26,11 @@ ...@@ -53,31 +26,11 @@
<el-button type="text" @click="getTheField">获取字段</el-button> <el-button type="text" @click="getTheField">获取字段</el-button>
<el-table :data="fields" style="width: 100%"> <el-table :data="fields" style="width: 100%">
<el-table-column type="index" width="50"> </el-table-column> <el-table-column type="index" width="50"> </el-table-column>
<el-table-column prop="target_name" label="目标字段"> <el-table-column prop="name" label="字段名称">
</el-table-column>
<el-table-column prop="field_name" label="数据字段">
</el-table-column>
<el-table-column prop="key_value" label="关键字值"> </el-table-column>
<el-table-column prop="target_type" label="类型"> </el-table-column>
<el-table-column prop="target_format" label="格式化">
</el-table-column>
<el-table-column prop="target_length" label="长度"> </el-table-column>
<el-table-column prop="target_precision" label="精度">
</el-table-column> </el-table-column>
<el-table-column prop="target_currency_symbol" label="货币类型"> <el-table-column prop="value" label="Key值">
</el-table-column> </el-table-column>
<el-table-column prop="target_decimal_symbol" label="10进制的"> <el-table-column prop="norm" label="Value字段"> </el-table-column>
</el-table-column>
<el-table-column prop="target_grouping_symbol" label="分组">
</el-table-column>
<el-table-column prop="target_null_string" label="Null if">
</el-table-column>
<el-table-column prop="target_aggregation_type" label="聚合">
<template slot-scope="scope">
{{ getTarget_aggregation_type(scope.row.target_aggregation_type)}}
</template>
</el-table-column>
<el-table-column label="操作" width="90px"> <el-table-column label="操作" width="90px">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
...@@ -110,78 +63,18 @@ ...@@ -110,78 +63,18 @@
:modal="false" :modal="false"
> >
<el-form ref="form" :model="fiel" label-width="160px"> <el-form ref="form" :model="fiel" label-width="160px">
<el-form-item label="目标字段:"> <el-form-item label="字段名称:">
<el-input v-model="fiel.target_name"></el-input> <el-input v-model="fiel.name"></el-input>
</el-form-item>
<el-form-item label="数据字段:">
<el-input v-model="fiel.field_name"></el-input>
</el-form-item>
<el-form-item label="关键字值:">
<el-input v-model="fiel.key_value"></el-input>
</el-form-item>
<el-form-item label="类型:">
<el-select v-model="fiel.target_type" style="width: 100%" clearable>
<el-option
v-for="item in fieldType"
:key="item.id"
:label="item.name"
:value="item.name"
/>
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="格式化:"> <el-form-item label="Key值:">
<el-select v-model="fiel.target_format" style="width: 100%" clearable> <el-input v-model="fiel.value"></el-input>
<el-option
v-for="item in fieldFormat"
:key="item.index"
:label="item.name"
:value="item.name"
/>
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="长度:"> <el-form-item label="Value字段:">
<el-input v-model="fiel.target_length"></el-input> <el-input v-model="fiel.norm"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="精确:">
<el-input v-model="fiel.target_precision"></el-input>
</el-form-item>
<el-form-item label="货币类型:">
<el-input v-model="fiel.target_currency_symbol"></el-input>
</el-form-item>
<el-form-item label="10进制的:">
<el-input v-model="fiel.target_decimal_symbol"></el-input>
</el-form-item>
<el-form-item label="分组:">
<el-input v-model="fiel.target_grouping_symbol"></el-input>
</el-form-item>
<el-form-item label="Null if:">
<el-input v-model="fiel.target_null_string"></el-input>
</el-form-item>
<el-form-item label="聚合:">
<el-select
v-model="fiel.target_aggregation_type"
style="width: 100%"
clearable
>
<el-option label="Sum" value="SUM"></el-option>
<el-option label="Average" value="AVERAGE"></el-option>
<el-option label="Minimum" value="MIN"></el-option>
<el-option label="Maximum" value="MAX"></el-option>
<el-option label="Number of Values" value="COUNT_ALL"></el-option>
<el-option label="Concatenate strings separated by ," value="CONCAT_COMMA"></el-option>
</el-select>
</el-form-item>
</el-form> </el-form>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
...@@ -192,25 +85,7 @@ ...@@ -192,25 +85,7 @@
<el-dialog
:title="groupStatus ? '新增' : '修改'"
:visible.sync="addGroup"
width="500px"
:before-close="handleClose"
:modal="false"
>
<el-form ref="form" :model="groupFiel" label-width="160px">
<el-form-item label="名称:">
<el-input v-model="groupFiel.name"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="addGroup = false">取 消</el-button>
<el-button type="primary" @click="addGroupDetermine">确 定</el-button>
</span>
</el-dialog>
</div> </div>
</template> </template>
...@@ -250,7 +125,6 @@ export default { ...@@ -250,7 +125,6 @@ export default {
group:[], group:[],
groupFiel:{}, groupFiel:{},
groupStatus:false, groupStatus:false,
addGroup:false,
}; };
}, },
...@@ -264,37 +138,14 @@ export default { ...@@ -264,37 +138,14 @@ export default {
this.newGraph = graph; this.newGraph = graph;
console.log(val, "拿到form"); console.log(val, "拿到form");
this.fields = JSON.parse(val.fields); this.fields = JSON.parse(val.fields);
this.group = JSON.parse(val.group);
}, },
getTheFieldFun(){
console.log(this.nodeData);
var enc = new mxCodec(mxUtils.createXmlDocument());
var node = enc.encode(this.newGraph.getModel());
this.graphXml = mxUtils.getPrettyXml(node);
// console.log( this.graphXml,"看着了");
let pamerFields = new FormData(); // 创建form对象
pamerFields.append(
"stepName",
this.nodeData.value.attributes.label.value
);
pamerFields.append("graphXml", this.graphXml);
pamerFields.append("before", true);
pamerFields.append("query", "");
inputOutputFields(pamerFields).then((res) => {
console.log(res, "yuiyuiyui");
this.group = res;
// this.fields.field_name = res.name
});
},
getTheField() { getTheField() {
console.log(this.nodeData); console.log(this.nodeData);
var enc = new mxCodec(mxUtils.createXmlDocument()); var enc = new mxCodec(mxUtils.createXmlDocument());
var node = enc.encode(this.newGraph.getModel()); var node = enc.encode(this.newGraph.getModel());
this.graphXml = mxUtils.getPrettyXml(node); this.graphXml = mxUtils.getPrettyXml(node);
// console.log( this.graphXml,"看着了"); // console.log( this.graphXml,"看着了");
let pamerFields = new FormData(); // 创建form对象 let pamerFields = new FormData(); // 创建form对象
pamerFields.append( pamerFields.append(
"stepName", "stepName",
...@@ -305,19 +156,10 @@ export default { ...@@ -305,19 +156,10 @@ export default {
pamerFields.append("query", ""); pamerFields.append("query", "");
inputOutputFields(pamerFields).then((res) => { inputOutputFields(pamerFields).then((res) => {
console.log(res, "yuiyuiyui"); console.log(res, "yuiyuiyui");
let i = 0
res.forEach(item => { res.forEach(item => {
i++
this.fields.push({ this.fields.push({
target_name:'字段'+ i, name:item.name,
field_name:item.name, value:item.name,
target_type:item.type,
target_format:item.conversionMask,
target_length:item.length,
target_precision:item.precision,
target_currency_symbol:item.currencyType,
target_grouping_symbol:item.group,
target_null_string:item.nullable
}) })
}); });
// this.fields.field_name = res.name // this.fields.field_name = res.name
...@@ -330,7 +172,6 @@ export default { ...@@ -330,7 +172,6 @@ export default {
SystemInfoDialogFun() { SystemInfoDialogFun() {
this.handleCloseFun(); this.handleCloseFun();
this.form.fields = JSON.stringify(this.fields); this.form.fields = JSON.stringify(this.fields);
this.form.group = JSON.stringify(this.group);
this.saveOutputDialog(this.form); this.saveOutputDialog(this.form);
}, },
...@@ -343,13 +184,7 @@ export default { ...@@ -343,13 +184,7 @@ export default {
}, },
addGroupDetermine() {
this.addGroup = !this.addGroup;
if (this.groupStatus) {
this.group.push(this.groupFiel);
} else {
}
},
// 关闭弹框 // 关闭弹框
handleClose(done) { handleClose(done) {
this.$confirm("确认关闭?") this.$confirm("确认关闭?")
...@@ -375,65 +210,6 @@ export default { ...@@ -375,65 +210,6 @@ export default {
} }
}, },
addSheetFun(state, val) {
this.addGroup = !this.addGroup;
this.groupStatus = state;
if (state) {
this.groupFiel = {};
} else {
this.groupFiel = val;
}
},
systemDataTypesFun() {
systemDataTypes().then((res) => {
this.type = res;
});
},
valueMetaFun() {
valueMeta().then((res) => {
this.fieldType = res;
});
},
valueFormatFun() {
let pamer2 = new FormData(); // 创建form对象
pamer2.append("valueType", "all");
valueFormat(pamer2).then((res) => {
this.fieldFormat = res;
});
},
// 判断伤残等级
getTarget_aggregation_type(type) {
// console.log(type, typeof type)
this.target_aggregation_type = type;
var category = "";
switch (type) {
case "SUM":
category = "Sum";
break;
case "AVERAGE":
category = "Average";
break;
case "MIN":
category = "Minimum";
break;
case "MAX":
category = "Maximum";
break;
case "COUNT_ALL":
category = "Number of Values";
break;
case "CONCAT_COMMA":
category = "Concatenate strings separated by ,";
break;
}
return category;
},
}, },
......
<template>
<div class="getSystemInformation">
<el-dialog
title="拆分字段"
:visible.sync="splitFieldsDialog"
width="800px"
:before-close="handleCloseFun"
>
<el-form ref="form" :model="form" label-width="120px">
<el-form-item label="步骤名称:">
<el-input v-model="form.label"></el-input>
</el-form-item>
<el-form-item label="需要拆分的字段:">
<el-select v-model="fiel.splitfield" style="width: 100%" clearable>
<el-option
v-for="item in fieName"
:key="item.index"
:label="item.name"
:value="item.name"
/>
</el-select>
</el-form-item>
<el-form-item label="分隔符:">
<el-input v-model="form.delimiter"></el-input>
</el-form-item>
<el-form-item label="Enclosure:">
<el-input v-model="form.enclosure"></el-input>
</el-form-item>
</el-form>
<el-form ref="form" :model="form" label-width="0px">
<el-button type="text" @click="addSheet(true)" style="margin: 10px"
>添加字段</el-button
>
<el-form-item>
<el-table :data="fields" style="width: 100%">
<el-table-column prop="name" label="新的字段"> </el-table-column>
<el-table-column prop="id" label="ID"> </el-table-column>
<el-table-column prop="idrem" label="移除ID?"> </el-table-column>
<el-table-column prop="type" label="类型"> </el-table-column>
<el-table-column prop="length" label="长度"> </el-table-column>
<el-table-column prop="precision" label="精度"> </el-table-column>
<el-table-column prop="format" label="格式"> </el-table-column>
<el-table-column prop="group" label="分组符号"> </el-table-column>
<el-table-column prop="decimal" label="小数点符号">
</el-table-column>
<el-table-column prop="currency" label="货币符号">
</el-table-column>
<el-table-column prop="nullif" label="Nullif"> </el-table-column>
<el-table-column prop="ifnull" label="缺省"> </el-table-column>
<el-table-column prop="trimtype" label="去除空格类型">
<template slot-scope="scope">
{{ scope.row.trimtype == "none" ? "不去掉空格" : scope.row.trimtype == "left" ? "去掉左空格" : scope.row.trimtype == "right" ? "去掉右空格" : scope.row.trimtype == "both" ? "去掉左右两端空格" : ""}}
</template>
</el-table-column>
<el-table-column label="操作">
<template slot-scope="scope">
<el-button
@click="addSheet(false, scope.row)"
type="text"
size="small"
>编辑</el-button
>
<el-button
type="text"
size="small"
@click="deleteRow(scope.$index, fields)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="handleCloseFun">取 消</el-button>
<el-button type="primary" @click="SystemInfoDialogFun">确 定</el-button>
</span>
</el-dialog>
<el-dialog
:title="dataStatus ? '新增' : '修改'"
:visible.sync="addField"
width="500px"
:before-close="handleClose"
:modal="false"
>
<el-form ref="form" :model="fiel" label-width="160px">
<el-form-item label="新的字段:">
<el-input v-model="fiel.name"></el-input>
</el-form-item>
<el-form-item label="ID:">
<el-input v-model="fiel.id"></el-input>
</el-form-item>
<el-form-item label="移除ID?">
<el-select v-model="fiel.idrem" style="width: 100%">
<el-option label="Y" value="Y"></el-option>
<el-option label="N" value="N"></el-option>
</el-select>
</el-form-item>
<el-form-item label="类型:">
<el-select v-model="fiel.type" style="width: 100%" clearable>
<el-option
v-for="item in fieldType"
:key="item.id"
:label="item.name"
:value="item.name"
/>
</el-select>
</el-form-item>
<el-form-item label="长度:">
<el-input v-model="fiel.length"></el-input>
</el-form-item>
<el-form-item label="精确:">
<el-input v-model="fiel.precision"></el-input>
</el-form-item>
<el-form-item label="格式:">
<el-input v-model="fiel.format"></el-input>
</el-form-item>
<el-form-item label="分组符号:">
<el-input v-model="fiel.group"></el-input>
</el-form-item>
<el-form-item label="小数点符号:">
<el-input v-model="fiel.decimal"></el-input>
</el-form-item>
<el-form-item label="货币符号:">
<el-input v-model="fiel.currency"></el-input>
</el-form-item>
<el-form-item label="Nullif:">
<el-input v-model="fiel.nullif"></el-input>
</el-form-item>
<el-form-item label="缺省:">
<el-input v-model="fiel.ifnull"></el-input>
</el-form-item>
<el-form-item label="去除空格类型:">
<el-select v-model="fiel.trimtype" style="width: 100%">
<el-option label="不去掉空格" value="none"></el-option>
<el-option label="去掉左空格" value="left"></el-option>
<el-option label="去掉右空格" value="right"></el-option>
<el-option label="去掉左右两端空格" value="both"></el-option>
</el-select>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="addField = false">取 消</el-button>
<el-button type="primary" @click="addFieldDetermine">确 定</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import mxgraph from "@/utils/mxgraph";
const {
mxGraph,
mxUtils,
mxEvent,
mxKeyHandler,
mxRubberband,
mxConstants,
mxStencilRegistry,
mxStencil,
mxCodec,
mxGraphModel,
mxGeometry,
} = mxgraph;
import {
systemDataTypes,
valueFormat,
valueMeta,
inputOutputFields,
} from "@/api/kettle/link";
export default {
props: ["form", "splitFieldsDialog", "saveOutputDialog", "nodeData"],
data() {
return {
addField: false,
fields: [],
type: {},
dataStatus: false,
fiel: {},
fieldFormat: [],
fieldType: [],
fieName: [],
};
},
created() {
this.systemDataTypesFun();
},
methods: {
inputFun() {
console.log(this.nodeData);
var enc = new mxCodec(mxUtils.createXmlDocument());
var node = enc.encode(this.newGraph.getModel());
this.graphXml = mxUtils.getPrettyXml(node);
// console.log( this.graphXml,"看着了");
let pamerFields = new FormData(); // 创建form对象
pamerFields.append(
"stepName",
this.nodeData.value.attributes.label.value
);
pamerFields.append("graphXml", this.graphXml);
pamerFields.append("before", true);
pamerFields.append("query", "");
inputOutputFields(pamerFields).then((res) => {
console.log(res, "yuiyuiyui");
this.fieName = res;
});
},
clickFun(graph, val) {
console.log(graph, "双击获取值");
this.newGraph = graph;
console.log(val, "拿到form");
this.fields = JSON.parse(val.fields);
this.inputFun();
},
handleCloseFun() {
this.$emit("update:splitFieldsDialog", false);
},
SystemInfoDialogFun() {
this.handleCloseFun();
this.form.fields = JSON.stringify(this.fields);
this.saveOutputDialog(this.form);
},
addFieldDetermine() {
this.addField = !this.addField;
if (this.dataStatus) {
this.fields.push(this.fiel);
} else {
}
},
// 关闭弹框
handleClose(done) {
this.$confirm("确认关闭?")
.then((_) => {
done();
})
.catch((_) => {});
},
deleteRow(index, rows) {
rows.splice(index, 1);
},
addSheet(state, val) {
this.valueFormatFun();
this.valueMetaFun();
this.addField = !this.addField;
this.dataStatus = state;
if (state) {
this.fiel = {};
} else {
this.fiel = val;
}
},
systemDataTypesFun() {
systemDataTypes().then((res) => {
this.type = res;
});
},
valueMetaFun() {
valueMeta().then((res) => {
this.fieldType = res;
});
},
valueFormatFun() {
let pamer2 = new FormData(); // 创建form对象
pamer2.append("valueType", "all");
valueFormat(pamer2).then((res) => {
this.fieldFormat = res;
});
},
},
};
</script>
<style lang="scss" scoped>
* {
outline: none;
}
</style>
<template>
<div class="getSystemInformation">
<el-dialog
title="字符串操作"
:visible.sync="stringOperationDialog"
width="800px"
:before-close="handleCloseFun"
>
<el-form ref="form" :model="form" label-width="120px">
<el-form-item label="步骤名称:">
<el-input v-model="form.label"></el-input>
</el-form-item>
</el-form>
<br />
<el-form ref="form" :model="form" label-width="0px">
The fields to process:
<br />
<el-button type="text" @click="addSheet(true)" style="margin: 10px"
>添加字段</el-button
>
<el-button type="text" @click="getTheFieldFun">获取字段</el-button>
<el-form-item>
<el-table :data="fields" style="width: 100%">
<el-table-column
prop="in_stream_name"
label="ln stream field"
width="110"
>
</el-table-column>
<el-table-column
prop="out_stream_name"
label="Out stream field"
width="120px"
>
</el-table-column>
<el-table-column prop="trim_type" label="Trim type" width="80px">
<template slot-scope="scope">
{{ scope.row.trim_type == 0 ? "none" : scope.row.trim_type == 1 ? "left" :scope.row.trim_type == 2 ? "right" :scope.row.trim_type == 3 ? "both" : ""}}
</template>
</el-table-column>
<el-table-column
prop="lower_upper"
label="Lower/Upper"
width="100px"
>
<template slot-scope="scope">
{{ scope.row.lower_upper == 0 ? "none" : scope.row.lower_upper == 1 ? "lower" :scope.row.lower_upper == 2 ? "upper" :""}}
</template>
</el-table-column>
<el-table-column prop="padding_type" label="Padding" width="70px">
<template slot-scope="scope">
{{ scope.row.padding_type == 0 ? "none" : scope.row.padding_type == 1 ? "left" :scope.row.padding_type == 2 ? "right" :""}}
</template>
</el-table-column>
<el-table-column prop="pad_char" label="Pad char" width="80px">
</el-table-column>
<el-table-column prop="pad_len" label=" Pad Length" width="90px">
</el-table-column>
<el-table-column prop="init_cap" label="InitCap" width="80px">
<template slot-scope="scope">
{{ scope.row.init_cap == 1 ? "是" : "否" }}
</template>
</el-table-column>
<el-table-column prop="mask_xml" label="Escape">
<template slot-scope="scope">
{{ getEscape(scope.row.mask_xml)}}
</template>
</el-table-column>
<el-table-column prop="digits" label="Digits">
<template slot-scope="scope">
{{ scope.row.digits == 0 ? "none" : scope.row.digits == 1 ? "only" :scope.row.digits == 2 ? "remove" :""}}
</template>
</el-table-column>
<el-table-column
prop="remove_special_characters"
label="Remove Special character"
width="180px"
>
<template slot-scope="scope">
{{ getSpecial(scope.row.remove_special_characters)}}
</template>
</el-table-column>
<el-table-column label="操作" width="120px">
<template slot-scope="scope">
<el-button
@click="addSheet(false, scope.row)"
type="text"
size="small"
>编辑</el-button
>
<el-button
type="text"
size="small"
@click="deleteRow(scope.$index, fields)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="handleCloseFun">取 消</el-button>
<el-button type="primary" @click="SystemInfoDialogFun">确 定</el-button>
</span>
</el-dialog>
<el-dialog
:title="dataStatus ? '新增' : '修改'"
:visible.sync="addField"
width="500px"
:before-close="handleClose"
:modal="false"
>
<el-form ref="form" :model="fiel" label-width="200px">
<el-form-item label="ln stream field:">
<el-input v-model="fiel.in_stream_name"></el-input>
</el-form-item>
<el-form-item label="Out stream field:">
<el-input v-model="fiel.out_stream_name"></el-input>
</el-form-item>
<el-form-item label="Trim type:">
<el-select v-model="fiel.trim_type" style="width: 100%" clearable>
<el-option label="none" :value="0"></el-option>
<el-option label="left" :value="1"></el-option>
<el-option label="right" :value="2"></el-option>
<el-option label="both" :value="3"></el-option>
</el-select>
</el-form-item>
<el-form-item label="Lower/Upper:">
<el-select v-model="fiel.lower_upper" style="width: 100%" clearable>
<el-option label="none" :value="0"></el-option>
<el-option label="lower" :value="1"></el-option>
<el-option label="upper" :value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="Padding:">
<el-select v-model="fiel.padding_type" style="width: 100%" clearable>
<el-option label="none" :value="0"></el-option>
<el-option label="left" :value="1"></el-option>
<el-option label="right" :value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="Pad char:">
<el-input v-model="fiel.pad_char"></el-input>
</el-form-item>
<el-form-item label="Pad Length:">
<el-input v-model="fiel.pad_len"></el-input>
</el-form-item>
<el-form-item label="InitCap:">
<el-select v-model="fiel.init_cap" style="width: 100%" clearable>
<el-option label="否" :value="0"></el-option>
<el-option label="是" :value="1"></el-option>
</el-select>
</el-form-item>
<el-form-item label="Escape:">
<el-select v-model="fiel.mask_xml" style="width: 100%" clearable>
<el-option label="None" :value="0"></el-option>
<el-option label="Escape XML" :value="1"></el-option>
<el-option label="Use CDATA" :value="2"></el-option>
<el-option label="Unescape XML" :value="3"></el-option>
<el-option label="Escape SQL" :value="4"></el-option>
<el-option label="Escape HTML" :value="5"></el-option>
<el-option label="Unescape HTML" :value="6"></el-option>
</el-select>
</el-form-item>
<el-form-item label="Digits:">
<el-select v-model="fiel.digits" style="width: 100%" clearable>
<el-option label="none" :value="0"></el-option>
<el-option label="only" :value="1"></el-option>
<el-option label="remove" :value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="Remove Special character:">
<el-select
v-model="fiel.remove_special_characters"
style="width: 100%"
clearable
>
<el-option label="none" :value="0"></el-option>
<el-option label="carriage return (CR)" :value="1"></el-option>
<el-option label="line feed (LF)" :value="2"></el-option>
<el-option
label="carriage return & line feed"
:value="3"
></el-option>
<el-option label="horizontal tab" :value="4"></el-option>
<el-option label="space" :value="5"></el-option>
</el-select>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="addField = false">取 消</el-button>
<el-button type="primary" @click="addFieldDetermine">确 定</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import mxgraph from "@/utils/mxgraph";
const {
mxGraph,
mxUtils,
mxEvent,
mxKeyHandler,
mxRubberband,
mxConstants,
mxStencilRegistry,
mxStencil,
mxCodec,
mxGraphModel,
mxGeometry,
} = mxgraph;
import { inputOutputFields } from "@/api/kettle/link";
export default {
props: ["form", "stringOperationDialog", "saveOutputDialog", "nodeData"],
data() {
return {
addField: false,
fields: [],
type: {},
dataStatus: false,
fiel: {},
fieldFormat: [],
fieldType: [],
};
},
created() {
},
methods: {
clickFun(graph, val) {
console.log(graph, "双击获取值");
this.newGraph = graph;
console.log(val, "拿到form");
console.log(JSON.parse(val.fields));
this.fields = JSON.parse(val.fields);
},
getTheFieldFun(){
console.log(this.nodeData);
var enc = new mxCodec(mxUtils.createXmlDocument());
var node = enc.encode(this.newGraph.getModel());
this.graphXml = mxUtils.getPrettyXml(node);
// console.log( this.graphXml,"看着了");
let pamerFields = new FormData(); // 创建form对象
pamerFields.append(
"stepName",
this.nodeData.value.attributes.label.value
);
pamerFields.append("graphXml", this.graphXml);
pamerFields.append("before", true);
pamerFields.append("query", "");
inputOutputFields(pamerFields).then((res) => {
console.log(res, "yuiyuiyui");
this.fields = []
res.forEach(item => {
if (item.type == "String") {
this.fields.push({
in_stream_name:item.name,
trim_type:0,
lower_upper:0,
padding_type:0,
init_cap:0,
mask_xml:0,
digits:0,
remove_special_characters:0,
})
}
});
});
},
handleCloseFun() {
this.$emit("update:stringOperationDialog", false);
},
SystemInfoDialogFun() {
this.handleCloseFun();
this.form.fields = JSON.stringify(this.fields);
this.saveOutputDialog(this.form);
},
addFieldDetermine() {
this.addField = !this.addField;
if (this.dataStatus) {
this.fields.push(this.fiel);
} else {
}
},
// 关闭弹框
handleClose(done) {
this.$confirm("确认关闭?")
.then((_) => {
done();
})
.catch((_) => {});
},
deleteRow(index, rows) {
rows.splice(index, 1);
},
addSheet(state, val) {
this.addField = !this.addField;
this.dataStatus = state;
if (state) {
this.fiel = {trim_type:0,
lower_upper:0,
padding_type:0,
init_cap:0,
mask_xml:0,
digits:0,
remove_special_characters:0,};
} else {
this.fiel = val;
}
},
// 判断
getEscape(type) {
console.log(type, typeof type);
this.mask_xml = type;
var category = "";
switch (type) {
case 0:
category = "None";
break;
case 1:
category = "Escape XML";
break;
case 2:
category = "Use CDATA";
break;
case 3:
category = "Unescape XML";
break;
case 4:
category = "Escape SQL";
break;
case 5:
category = "Escape HTML";
break;
case 6:
category = "Unescape HTML";
break;
}
return category;
},
// 判断
getSpecial(type) {
console.log(type, typeof type);
this.remove_special_characters = type;
var category = "";
switch (type) {
case 0:
category = "none";
break;
case 1:
category = "carriage return (CR)";
break;
case 2:
category = "line feed (LF)";
break;
case 3:
category = "carriage return & line feed";
break;
case 4:
category = "horizontal tab";
break;
case 5:
category = "space";
break;
}
return category;
},
},
};
</script>
<style lang="scss" scoped>
* {
outline: none;
}
</style>
...@@ -314,6 +314,9 @@ ...@@ -314,6 +314,9 @@
<el-table-column prop="group" label="组"> </el-table-column> <el-table-column prop="group" label="组"> </el-table-column>
<el-table-column prop="trim_type" label="去除空格类型"> <el-table-column prop="trim_type" label="去除空格类型">
<template slot-scope="scope">
{{ scope.row.trimtype == "none" ? "不去掉空格" : scope.row.trimtype == "left" ? "去掉左空格" : scope.row.trimtype == "right" ? "去掉右空格" : scope.row.trimtype == "both" ? "去掉左右两端空格" : ""}}
</template>
</el-table-column> </el-table-column>
<el-table-column prop="repeat" label="重复"> </el-table-column> <el-table-column prop="repeat" label="重复"> </el-table-column>
......
...@@ -479,6 +479,9 @@ ...@@ -479,6 +479,9 @@
<el-table-column prop="precision" label="精度"> </el-table-column> <el-table-column prop="precision" label="精度"> </el-table-column>
<el-table-column prop="trim_type" label="去除空格类型"> <el-table-column prop="trim_type" label="去除空格类型">
<template slot-scope="scope">
{{ scope.row.trimtype == "none" ? "不去掉空格" : scope.row.trimtype == "left" ? "去掉左空格" : scope.row.trimtype == "right" ? "去掉右空格" : scope.row.trimtype == "both" ? "去掉左右两端空格" : ""}}
</template>
</el-table-column> </el-table-column>
<el-table-column prop="repeat" label="重复"> </el-table-column> <el-table-column prop="repeat" label="重复"> </el-table-column>
......
...@@ -460,6 +460,9 @@ ...@@ -460,6 +460,9 @@
<el-table-column prop="precision" label="精度"> </el-table-column> <el-table-column prop="precision" label="精度"> </el-table-column>
<el-table-column prop="trim_type" label="去除空格类型"> <el-table-column prop="trim_type" label="去除空格类型">
<template slot-scope="scope">
{{ scope.row.trimtype == "none" ? "不去掉空格" : scope.row.trimtype == "left" ? "去掉左空格" : scope.row.trimtype == "right" ? "去掉右空格" : scope.row.trimtype == "both" ? "去掉左右两端空格" : ""}}
</template>
</el-table-column> </el-table-column>
<el-table-column prop="repeat" label="重复"> </el-table-column> <el-table-column prop="repeat" label="重复"> </el-table-column>
......
...@@ -476,6 +476,9 @@ ...@@ -476,6 +476,9 @@
<el-table-column prop="precision" label="精度"> </el-table-column> <el-table-column prop="precision" label="精度"> </el-table-column>
<el-table-column prop="trim_type" label="去除空格类型"> <el-table-column prop="trim_type" label="去除空格类型">
<template slot-scope="scope">
{{ scope.row.trimtype == "none" ? "不去掉空格" : scope.row.trimtype == "left" ? "去掉左空格" : scope.row.trimtype == "right" ? "去掉右空格" : scope.row.trimtype == "both" ? "去掉左右两端空格" : ""}}
</template>
</el-table-column> </el-table-column>
<el-table-column prop="repeat" label="重复"> </el-table-column> <el-table-column prop="repeat" label="重复"> </el-table-column>
...@@ -1007,6 +1010,26 @@ ...@@ -1007,6 +1010,26 @@
:saveOutputDialog="saveOutputDialog" :saveOutputDialog="saveOutputDialog"
></addConstants> ></addConstants>
<!-- 拆分字符串 -->
<splitFields
ref="splitFields"
:form="form"
:nodeData="nodeData"
:splitFieldsDialog.sync="splitFieldsDialog"
:doubleClickCell="doubleClickCell"
:saveOutputDialog="saveOutputDialog"
></splitFields>
<!-- 字符串操作 -->
<stringOperation
ref="stringOperation"
:form="form"
:nodeData="nodeData"
:stringOperationDialog.sync="stringOperationDialog"
:doubleClickCell="doubleClickCell"
:saveOutputDialog="saveOutputDialog"
></stringOperation>
<!-- 增加序列 --> <!-- 增加序列 -->
<addSequence <addSequence
ref="addSequence" ref="addSequence"
...@@ -1040,6 +1063,17 @@ ...@@ -1040,6 +1063,17 @@
></rowToColumn> ></rowToColumn>
<!-- 行转列 -->
<columnToRow
ref="columnToRow"
:form="form"
:nodeData="nodeData"
:columnToRowDialog.sync="columnToRowDialog"
:doubleClickCell="doubleClickCell"
:saveOutputDialog="saveOutputDialog"
></columnToRow>
<!-- 替换NULL值 --> <!-- 替换NULL值 -->
<replaceNull <replaceNull
ref="replaceNull" ref="replaceNull"
...@@ -1339,8 +1373,11 @@ import addSequence from "../appBulletFrame/addSequence"; //增加序列 ...@@ -1339,8 +1373,11 @@ import addSequence from "../appBulletFrame/addSequence"; //增加序列
import importXmlFile from "../appBulletFrame/importXmlFile"; //导出资源库到XML文件 import importXmlFile from "../appBulletFrame/importXmlFile"; //导出资源库到XML文件
import grouping from "../appBulletFrame/grouping"; //分组 import grouping from "../appBulletFrame/grouping"; //分组
import addConstants from "../appBulletFrame/addConstants"; //增加常量 import addConstants from "../appBulletFrame/addConstants"; //增加常量
import splitFields from "../appBulletFrame/splitFields";//拆分字符串
import stringOperation from "../appBulletFrame/stringOperation" //字符串操作
import streamQuery from "../appBulletFrame/streamQuery"; //流查询 import streamQuery from "../appBulletFrame/streamQuery"; //流查询
import rowToColumn from "../appBulletFrame/rowToColumn";//行转列 import rowToColumn from "../appBulletFrame/rowToColumn";//行转列
import columnToRow from "../appBulletFrame/columnToRow";//列转行
import replaceNull from "../appBulletFrame/replaceNull"; //替换null值 import replaceNull from "../appBulletFrame/replaceNull"; //替换null值
import sendMail from "../appBulletFrame/sendMail"; //发送邮件 import sendMail from "../appBulletFrame/sendMail"; //发送邮件
...@@ -1478,8 +1515,11 @@ export default { ...@@ -1478,8 +1515,11 @@ export default {
groupingDialog: false, //分组 groupingDialog: false, //分组
stringSubstitutionDialog: false, //字符串替换 stringSubstitutionDialog: false, //字符串替换
addConstantsDialog: false, //增加常量 addConstantsDialog: false, //增加常量
splitFieldsDialog:false,//拆分字符串
stringOperationDialog:false,//字符串操作
addSequenceDialog: false, //增加序列 addSequenceDialog: false, //增加序列
rowToColumnDialog:false,//行转列 rowToColumnDialog:false,//行转列
columnToRowDialog:false,//列转行
streamQueryDialog: false, //流查询 streamQueryDialog: false, //流查询
replaceNullDialog: false, //替换Null值 replaceNullDialog: false, //替换Null值
sendMailDialog: false, //发送邮件 sendMailDialog: false, //发送邮件
...@@ -1597,9 +1637,12 @@ export default { ...@@ -1597,9 +1637,12 @@ export default {
importXmlFile, //导出资源库到XML文件 importXmlFile, //导出资源库到XML文件
grouping, //分组 grouping, //分组
addConstants, //增加常量 addConstants, //增加常量
splitFields,//拆分字符串
stringOperation,//字符串操作
addSequence, //增加序列 addSequence, //增加序列
streamQuery, //流查询 streamQuery, //流查询
rowToColumn,//行转列 rowToColumn,//行转列
columnToRow,//列转行
replaceNull, //替换null值 replaceNull, //替换null值
sendMail, //发送邮件 sendMail, //发送邮件
// 作业弹簧组件end---------------------- // 作业弹簧组件end----------------------
...@@ -2291,6 +2334,33 @@ export default { ...@@ -2291,6 +2334,33 @@ export default {
this.fieldFormat = res; this.fieldFormat = res;
}); });
if ( if (
(this.curFileType == "transformation" && cell.dis == "step65") ||
cell.value.attributes.ctype.value == "FieldSplitter"
) {
this.splitFieldsDialog = !this.splitFieldsDialog;
this.form = this.showDataFunc();
setTimeout(() => {
this.$refs.splitFields.clickFun(this.graph, this.form);
}, 500);
} else if (
(this.curFileType == "transformation" && cell.dis == "step62") ||
cell.value.attributes.ctype.value == "StringOperations"
) {
this.stringOperationDialog = !this.stringOperationDialog;
this.form = this.showDataFunc();
setTimeout(() => {
this.$refs.stringOperation.clickFun(this.graph, this.form);
}, 500);
} else if (
(this.curFileType == "transformation" && cell.dis == "step54") ||
cell.value.attributes.ctype.value == "Denormaliser"
) {
this.columnToRowDialog = !this.columnToRowDialog;
this.form = this.showDataFunc();
setTimeout(() => {
this.$refs.columnToRow.clickFun(this.graph, this.form);
}, 500);
} else if (
(this.curFileType == "transformation" && cell.dis == "step70") || (this.curFileType == "transformation" && cell.dis == "step70") ||
cell.value.attributes.ctype.value == "Normaliser" cell.value.attributes.ctype.value == "Normaliser"
) { ) {
......
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