Commit f288a090 by 李耀琨

解决冲突

parents 30755b06 3f38ba0b
......@@ -102,6 +102,133 @@ export function expRespository(data) {
// })
// }
// 时间日期格式
export function formatFunc(data) {
return request({
url: 'etlweb/system/datetimeformat',
data,
method: 'post'
})
}
// 获取编码列表
export function getCodeList(data) {
return request({
url: 'etlweb/system/availableCharsets',
data,
method: 'post'
})
}
//表头字体
export function getFontname(data) {
return request({
url: 'etlweb/system/fontname',
data,
method: 'post'
})
}
//表头字体下划线
export function getFontunderline(data) {
return request({
url: 'etlweb/system/fontunderline',
data,
method: 'post'
})
}
//表头字体方向
export function getFontoriention(data) {
return request({
url: 'etlweb/system/fontoriention',
data,
method: 'post'
})
}
//表头字体颜色
export function getFontcolor(data) {
return request({
url: 'etlweb/system/fontcolor',
data,
method: 'post'
})
}
//表头对齐方式
export function getFontalignment(data) {
return request({
url: 'etlweb/system/fontalignment',
data,
method: 'post'
})
}
//数据字体
export function getFileexplorer(data) {
return request({
url: 'etlweb/system/fileexplorer',
data,
method: 'post'
})
}
//获取格式
export function getFormatMapperLineTerminator(data) {
return request({
url: 'etlweb/system/formatMapperLineTerminator',
data,
method: 'post'
})
}
// 获取压缩
export function getCompressionProviderNames(data) {
return request({
url: 'etlweb/system/compressionProviderNames',
data,
method: 'post'
})
}
// 获取编码
export function getAvailableCharsets(data) {
return request({
url: 'etlweb/system/availableCharsets',
data,
method: 'post'
})
}
// 获取所有文件
export function getFilextension(data) {
return request({
url: 'etlweb/system/filextension',
data,
method: 'post'
})
}
//资源库导入文件
export function Imptree(data) {
return request({
url: 'etlweb/repository/imptree',
data,
method: 'post'
})
}
//导入成功
export function imp(data) {
return request({
url: 'etlweb/repository/imp',
data,
method: 'post'
})
}
......@@ -1713,10 +1713,38 @@ export default {
} else if (node.ids == "step2") {
this.TextFileInputDialog = !this.TextFileInputDialog;
return;
}
if (node.ids == "step16") {
}else if (node.ids == "step16") {
//表输出
this.tableOutPutVisible = !this.tableOutPutVisible;
return;
}else if(node.ids == "step15") {
//更新
this.updateVisible = !this.updateVisible;
return;
}else if(node.ids == "step14") {
//文本文件输出
this.fileVisible = !this.fileVisible;
return;
}else if(node.ids == "step13") {
//数据同步
this.synVisible = !this.synVisible;
return;
}else if(node.ids == "step12") {
//插入、更新
this.InsertOrUpdateVisible = !this.InsertOrUpdateVisible;
return;
}else if(node.ids == "step11") {
//删除
this.deleteVisible = !this.deleteVisible;
return;
}else if(node.ids == "step10") {
//SQL文件输出
this.sqlVisible = !this.sqlVisible;
return;
}else if(node.ids == "step9") {
//Excel输出
this.excelOutPutVisible = !this.excelOutPutVisible;
return;
}
},
// 是否具有该线
......
......@@ -22,7 +22,7 @@
<el-form-item label="目的模式:" >
<el-row :gutter="10">
<el-col :span="20">
<el-input v-model="form.name"></el-input>
<el-input v-model="newForm.schema"></el-input>
</el-col>
<el-col class="line" :span="3">
......@@ -33,7 +33,7 @@
<el-form-item label="目标表:" prop="text">
<el-row :gutter="10">
<el-col :span="20">
<el-input ref="goal" v-model="newForm.text"></el-input>
<el-input ref="goal" v-model="newForm.table"></el-input>
</el-col>
<el-col class="line" :span="3">
......@@ -86,16 +86,24 @@ export default {
}else if(typeof(res)=='object'){
console.log('接收子组件的值55555----',res);
this.curNode=res;
// DOM 更新后
// this.$nextTick(() => {
// this.form.text=this.curNode.data.text;
// // this.$refs.goal.values=this.curNode.data.text;
// // this.$refs.goal.refreshData(this.from)
// })
this.$set(this.newForm,'text',this.curNode.data.text)
// this.$refs.goal.refreshData(this.from)
if(this.chooseType=='表'){
console.log('进入表----',res);
this.$set(this.newForm,'table',this.curNode.data.text);
this.$forceUpdate()
// this.form.text=this.curNode.data.text;
}
console.log('this.curNode.data.leaf=====:',this.curNode.data.leaf);
if(this.chooseType=='模式'&& this.curNode.data.leaf && this.curNode.parent.data.text ==this.chooseType){
console.log('进入模式----',res);
this.$set(this.newForm,'schema',this.curNode.data.text);
this.$forceUpdate()
}
// this.$forceUpdate()
console.log('chuanhuo=====', this.newForm);
// 发射回父组件
this.$emit("update:form", this.newForm);
}else if(typeof(res)=='boolean'){
this.dialogVisibleFourth=res;
console.log('接收子组件的值2222222----',this.dialogVisibleFourth);
......@@ -123,6 +131,7 @@ export default {
selectNameFunc(e){
console.log('当前选中的数',e);
console.log('当前选中的数-===',this.selectName);
this.newForm.connection=this.selectName;
},
//点击选择获取已经创建的数据库列表
clickFunc(){
......@@ -165,9 +174,7 @@ export default {
},
deep: true
},
// form(newValue, oldValue){
// this.form=newValue;
// }
},
......
......@@ -11,7 +11,7 @@
<div class="left-container mybox">
<ul class="infinite-list">
<li
@click="chooseType(index)"
@click="chooseBaseType(index)"
:class="[index == nowTypeIndex ? 'type-checked' : '']"
v-for="(item, index) in linkType"
:key="index"
......@@ -474,7 +474,7 @@ export default {
handleCloseFourth() {
this.$emit("getSonValue", false); //组件要传回父组件的值,关闭弹窗
},
chooseType(index) {
chooseBaseType(index) {
this.nowTypeIndex = index;
},
......@@ -832,7 +832,7 @@ export default {
console.log('点击当前节点data===',data);
// var arr=[{node:node}]
this.curChooseNode=node;
// this.$emit("getSonValue", this.curChooseNode); //组件要传回父组件的值,关闭弹窗
this.$emit("getSonValue", this.curChooseNode); //组件要传回父组件的值,关闭弹窗
// this.nodePath=data.path;//当前选择数
// this.curNodeIconCls=data.iconCls;//当前选中节点
// console.log('当前节点的文件夹路径:',this.nodePath);
......
import main from './main.vue'
export default main
\ No newline at end of file
<template>
<div>
<!-- 浏览 -->
<el-dialog
title="文件夹浏览器"
:visible.sync="fileDialogVisible"
width="650px"
top="15%"
:close-on-click-modal="false"
:before-close="handleClose"
v-if="fileDialogVisible">
<!-- 文件夹区域start-->
<el-tree
:data="fileTreeList"
lazy
:load="loadDataTree"
:auto-expand-parent="true"
:default-expand-all="false"
node-key="id"
ref="tree"
:props="defaultProps"
:highlight-current="true"
@node-click="handleNodeClick">
<span class="custom-tree-node" slot-scope="{ node, data }">
<span style="display: flex; align: center">
<div
:class="data.iconCls"
style="
display: inline-block;
width: 20px;
height: 20px;
background-repeat: no-repeat;
background-position: center;
"
width=""
alt=""
></div>
{{ node.label }}
</span>
</span>
</el-tree>
<!-- 文件夹区域end -->
<!-- <el-select v-model="allValue" style="width: 100%">
<el-option v-for="(item,index) in allTreeList" :key="index" :label="item.desc" :value="item.type"></el-option>
</el-select> -->
<span slot="footer" class="dialog-footer" style="display:flex;">
<el-select v-model="allValue" style="width: 100%;margin-right:15px;">
<el-option v-for="(item,index) in allTreeList" :key="index" :label="item.desc" :value="item.type"></el-option>
</el-select>
<el-button @click="handleClose">取 消</el-button>
<el-button type="primary" @click="confirmChoose()">确 定</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import { getFileexplorer,getFilextension } from "@/api/kettle/file";
export default {
name: "file-tree",
data() {
return {
allValue:'',
allTreeList:[],//所有文件
defaultProps: {
label: "text",
children: "children",
},
checkedArr:[],
fileTreeList:[],//文件树列表
fileTreeListResolve:[],//
curChooseNode:null,//当前选择的节点
}
},
props: {
fileDialogVisible: Boolean,
excelForm:Object,
formName:String,
// listNames: Function, //父传过来的方法
},
created() {
this.getFilextension();//获取所有文件
},
methods: {
// 获取文件树
getFileTreeList(path,node){
var formData = new FormData();
formData.append("path",path);
formData.append("extension", 0);
formData.append("node", node);
getFileexplorer(formData).then((res) => {
if (res) {
if(path==''){
console.log('1111111111111111');
this.fileTreeList = res;
}else{
console.log('222222222222');
this.fileTreeListResolve=res
}
} else {
this.$message.error(res.errMsg);
}
});
},
loadDataTree(node, resolve) {
console.log("node====", node, "resolve-----------", resolve);
if (node.level === 0) {
var par='';
this.getFileTreeList(par,'xnode-5140');
return resolve(this.fileTreeList);
} else {
var path = node.data.id;
var node= node.data.id;;
this.getFileTreeList(path,node);
resolve(this.fileTreeListResolve);
}
},
// 获取所有文件
getFilextension(){
var formData = new FormData();
formData.append("query",'');
formData.append("extension", 0);
getFilextension(formData).then((res) => {
if (res) {
this.allTreeList = res;
} else {
this.$message.error(res.errMsg);
}
});
},
// 点击选择当前节点
handleNodeClick(data,node){
console.log('点击当前节点node===',node);
console.log('点击当前节点data===',data);
// var arr=[{node:node}]
this.curChooseNode=node;
// this.$emit("getSonValue", this.curChooseNode); //组件要传回父组件的值,关闭弹窗
},
confirmChoose() {
var curName=this.formName;
this.excelForm[curName]=this.curChooseNode.data.id;
this.$emit("excelForm",this.excelForm);
this.$emit("update:fileDialogVisible", false);
},
handleClose() {
this.$emit("update:fileDialogVisible", false);
},
},
};
</script>
<style>
.type-checked {
background-color: #8888ff;
color: #fff;
}
</style>
\ No newline at end of file
import main from './main.vue'
export default main
\ No newline at end of file
<template>
<div>
<el-dialog
title="请选择导出文件"
:visible.sync="inputVisibility"
width="650px"
:before-close="handleClose">
<!-- <span>请输入{{title}}名称:</span> -->
<!-- <el-input style="margin-top:15px;" v-model="inputValue" :placeholder="'请输入'+title+'名称'"></el-input> -->
<el-upload
ref="upload"
:limit="1"
class="input-length"
action="https://jsonplaceholder.typicode.com/posts/"
:file-list="fileList"
:auto-upload="false"
:on-change="handleChange">
<el-button size="small" type="primary">点击上传</el-button>
</el-upload>
<!-- 文件夹存放区域start-->
<el-tree
:data="impFileList"
:auto-expand-parent="true"
:default-expand-all="false"
node-key="id"
ref="tree"
:props="defaultProps"
:highlight-current="true"
show-checkbox
v-if="impFileList.length>0" @check-change="getCheckedNodes">
<span class="custom-tree-node" slot-scope="{ node, data }">
<span style="display: flex; align: center">
<div
:class="data.iconCls"
style="
display: inline-block;
width: 20px;
height: 20px;
background-repeat: no-repeat;
background-position: center;
"
width=""
alt=""
></div>
{{ node.label }}
</span>
</span>
</el-tree>
<!-- 文件夹存放区域end -->
<span slot="footer" class="dialog-footer">
<el-button @click="estabDialogVisible = false">取 消</el-button>
<el-button type="primary" @click="confirm()">确 定</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import {Imptree,imp } from "@/api/kettle/file";
export default {
name: "in-repository",
data() {
return {
impFileList:[],//导入的文件列表
fileList:[],
defaultProps: {
label: "text",
children: "children",
},
checkedArr:[],
uploadPath:''
}
},
props: {
inputVisibility: Boolean,
explorer:Function,
// listNames: Function, //父传过来的方法
},
created() {
// this.exptree();
},
methods: {
//获取导出资源库树
exptree() {
let data = new FormData();
data.append("loadElement", 3);
data.append("node", "root");
exptree(data).then((res) => {
if (res) {
console.log("导出资源库树列表:", res);
this.exTreeList = res;
} else {
this.$message.error(res.errMsg);
}
});
},
getCheckedNodes() {
console.log('当前勾选的所有数据',this.$refs.tree.getCheckedNodes());
var allCheckedsNodes=this.$refs.tree.getCheckedNodes();
var checkedNodes=allCheckedsNodes.filter((item)=>{
return item.children==null
});
var checkArr=[];
checkedNodes.forEach(element => {
var myObj={};
myObj.path=element.path;
myObj.type=element.type;
checkArr.push(myObj);
});
this.checkedArr=checkArr;
console.log('当前选择文件====',this.checkedArr);
},
// 导入资源库
imp(data){
var formData = new FormData();
formData.append('filePath',this.uploadPath);
formData.append('data', JSON.stringify(data));
console.log('参数==',formData);
imp(formData).then(res=>{
if (res) {
this.$message.success('导入成功!');
this.explorer('');//刷新列表
this.$emit("update:inputVisibility", false);//关闭弹窗
}else {
this.$message.error(res.errMsg)
}
})
},
confirm(){
console.log('当前选择文件====',this.checkedArr);
this.imp(this.checkedArr);
},
//导出资源库
expRespository() {
if(this.checkedArr.length==0){
this.$message.error('请先选择要导出文件');
}
let data = new FormData();
data.append("data",JSON.stringify(this.checkedArr) );
expRespository(data).then((res) => {
if (res) {
console.log("导出资源库:", res);
// var link = document.createElement("a");
// link.style.display = "none";
// link.href = url;
// link.setAttribute("download", "下载名称");
// document.body.appendChild(link);
// link.click();
var url=`http://192.168.0.2:9888/ETLWEB-SERVER/etlweb/attachment/download?filePath=${res.message}&remove=true`
window.open(url);
} else {
this.$message.error(res.errMsg);
}
});
},
handleClose() {
this.$emit("update:inputVisibility", false);
},
handleChange(file, fileList) {
console.log('已经上传的文件==',file);
var path=file.name;
// path='H:\\小曾发来的新项目\\kettle\\kettle-webapp\\file_trans1.zip';
path="D:\\file\\111.zip";
this.uploadPath=path;
this.Imptree(path);
},
// 导入资源库
Imptree(path){
var formData = new FormData();
formData.append('loadElement',3);
formData.append('filePath', path);
formData.append('node', 'root');
console.log('参数==',formData);
Imptree(formData).then(res=>{
if (res) {
// this.$message.success('成功!');
this.impFileList=res;
}else {
this.$message.error(res.errMsg)
}
})
},
},
};
</script>
<style>
.type-checked {
background-color: #8888ff;
color: #fff;
}
</style>
\ No newline at end of file
......@@ -43,7 +43,7 @@
<el-dropdown-item >管理资源库</el-dropdown-item>
<el-dropdown-item >断开资源库</el-dropdown-item>
<el-dropdown-item @click.native="exportTreeDialog()">导出资源库</el-dropdown-item>
<el-dropdown-item>导入资源库</el-dropdown-item>
<el-dropdown-item @click.native="inputResDialog()">导入资源库</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<el-dropdown
......@@ -315,9 +315,12 @@
<dialogRemind ref="testDialogueRemind" @getValue="getValueFromChild" :dialogVisibleOne.sync='dialogVisibleRemind' :repositoryInfoModel="repositoryInfoModel" :selectName='selectName'></dialogRemind>
<scanDialog ref="scanDialog" :scanDialogVisible.sync="scanDialogVisible" :createModel="createModel"></scanDialog>
<feature ref="feature" :featureDialogVisible.sync="featureDialogVisible"></feature>
<establishDialog ref="establishDialog" :estabDialogVisible.sync="estabDialogVisible" :title="estabTitle" :nodePath="nodePath" :explorer="explorer"></establishDialog>
<createDialog ref="establishDialog" :estabDialogVisible.sync="estabDialogVisible" :title="estabTitle" :nodePath="nodePath" :explorer="explorer"></createDialog>
<export-tree ref="exDialog" :exportDialogVisible.sync="exportDialogVisible"></export-tree>
<!-- 导出资源库 -->
<in-repository :inputVisibility.sync="inputVisibility" :explorer="explorer"></in-repository>
</div>
</template>
......@@ -332,7 +335,7 @@ import nodeMenu from '../dashboard-kettle/components/designer/modules/node_menu'
import testDialogue from '../dialogs-components/test'
import scanDialog from '../dialogs-components/scan'
import feature from '../dialogs-components/feature'
import establishDialog from '../dialogs-components/establish'
import createDialog from '../dialogs-components/establish'
// 弹窗组件end====================
......@@ -369,7 +372,7 @@ export default {
dialogRemind,////删除提示弹窗
scanDialog,
feature,//特征列表
establishDialog,
createDialog,
// Establish,//新建转换,新建作业,新建目录弹窗
},
......@@ -377,9 +380,8 @@ export default {
data() {
return {
inputVisibility:false,//导入资源库弹窗
flowData:{},
exportDialogVisible:false,//导出资源库弹窗
curDataBase:null,//当前选择的资源库
nodePath:'',//当前选中文件夹
......@@ -1283,6 +1285,11 @@ export default {
exportTreeDialog(){
console.log('导出资源库====');
this.exportDialogVisible=true;
},
//导入资源库
inputResDialog(){
console.log('导入资源库====');
this.inputVisibility=true;
}
......
import mx from 'mxgraph';
const mxgraph = mx({
mximagebasepath: './src/images',
mxbasepath: './src'
});
// decode bug https://github.com/jgraph/mxgraph/issues/49
/*window.mxGraph = mxgraph.mxgraph;
window.mxUtils = mxgraph.mxUtils;
window.mxCodec = mxgraph.mxCodec;
window.mxKeyHandler = mxgraph.mxKeyHandler;
window.mxConstants = mxgraph.mxConstants;
window.mxGraphModel = mxgraph.mxgraphmodel;
window.mxEditor = mxgraph.mxeditor;
window.mxGeometry = mxgraph.mxgeometry;
window.mxDefaultkeyhandler = mxgraph.mxDefaultKeyHandler;
window.mxDefaultpopupmenu = mxgraph.mxDefaultPopupMenu;;
window.mxStylesheet = mxgraph.mxstylesheet;
window.mxDefaulttoolbar = mxgraph.mxDefaultToolbar;
window.mxEvent = mxgraph.mxEvent;
window.mxStencilRegistry = mxgraph.mxStencilRegistry;
window.mxStencil=mxgraph.mxStencil;
window.mxGeometry=mxgraph.mxGeometry;
window.mxRubberBand = mxgraph.mxRubberband;*/
export default mxgraph;
<template>
<div class="customToolbarContainer">
<div class="toolbarContainer">
<ul>
<li v-for="item in toolbarItems" :key="item['text']" ref="toolItem">
<img :src="item['icon']" :alt="item['text']">
<span>{{item['text']}}</span>
</li>
</ul>
</div>
<div class="graphContainer" ref="container"></div>
</div>
</template>
<script>
import {toolbarItems} from './toolbar'
import mxgraph from './mx.js'
const MxEvent=mxgraph.mxEvent;
const MxGraph=mxgraph.mxGraph;;
const MxUtils=mxgraph.mxUtils;;
const mxCodec=mxgraph.mxCodec;
export default {
name: 'index2',
computed: {
toolbarItems: () => toolbarItems
},
data() {
return {
data() {
return {
graph: null,
defaultProps: {
label: "text",
children: "children",
},
}
}
}
},
methods: {
createGraph() {
this.graph = new MxGraph(this.$refs.container)
},
initGraph() {
if (this.R.isNil(this.graph)) {
return
}
this.graph.setConnectable(true) // 允许连线
this.graph.setCellsEditable(false) // 不可修改
this.graph.convertValueToString = (cell) => { // 从value中获取显示的内容
return this.R.prop('title', cell)
}
this.graph.addListener(MxEvent.DOUBLE_CLICK, (graph, evt) => { // 监听双击事件
const cell = this.R.pathOr([], ['properties', 'cell'], evt)
console.info(cell) // 在控制台输出双击的cell
var s = encodeURIComponent(this.toXml())
console.log("s=this.toXml()=====")
console.log(this.toXml())
console.log("编码xml--------")
console.log(s)
})
},
toXml() {
var enc = new mxCodec(MxUtils.createXmlDocument());
var node = enc.encode(this.graph.getModel());
return MxUtils.getPrettyXml(node);
},
addCell(toolItem, x, y) {
console.log("toolItem")
console.log(toolItem)
const {width, height} = toolItem
const styleObj = toolItem['style']
const style = Object.keys(styleObj).map((attr) => `${attr}=${styleObj[attr]}`).join(';')
const parent = this.graph.getDefaultParent()
this.graph.getModel().beginUpdate()
try {
let vertex = this.graph.insertVertex(parent, null, null, x, y, width, height, style)
vertex.title = toolItem['title']
} finally {
this.graph.getModel().endUpdate()
}
},
initToolbar() {
const domArray = this.$refs.toolItem
console.log("domArray==")
console.log(domArray)
if (!(domArray instanceof Array) || domArray.length <= 0) {
return
}
domArray.forEach((dom, domIndex) => {
const toolItem = this.toolbarItems[domIndex]
const {width, height} = toolItem
const dropHandler = (graph, evt, cell, x, y) => {
this.addCell(toolItem, x, y)
}
const createDragPreview = () => {
const elt = document.createElement('div')
elt.style.border = '2px dotted black'
elt.style.width = `${width}px`
elt.style.height = `${height}px`
return elt
}
MxUtils.makeDraggable(dom, this.graph, dropHandler, createDragPreview(), 0, 0, false, true)
})
}
},
mounted() {
this.createGraph()
this.initGraph()
this.initToolbar()
this.$refs.container.style.background = 'url("./grid.gif")'
}
}
</script>
<style lang="scss">
.customToolbarContainer {
width: 100%;
height: 100%;
display: flex;
position: relative;
.toolbarContainer {
flex: 1;
font-size: 20px;
background: #efefef;
text-align: center;
padding-top: 20px;
ul {
padding: 0;
margin: 0;
li {
list-style: none;
margin-bottom: 10px;
cursor: pointer;
img {
width: 15px;
height: 15px;
}
span {
margin-left: 15px;
}
}
}
}
.graphContainer {
position: relative;
flex: 7;
}
}
</style>
import mxgraph from './mx.js'
import { steps } from '@/api/kettle/link'
const MxConstants = mxgraph.mxConstants
const prefix = '192.168.0.2:9700/etlweb/'
const bar = []
const pamer = new FormData() // 创建form对象
pamer.append('node', 'xnode-12')
steps(pamer).then((res) => {
var data = res[0].children
for (let i = 0; i < data.length; i++) {
var icon = data[i].icon
data[i].icon = prefix + icon
data[i].height = 50
data[i].width = 50
data[i].style = {
fillColor: 'transparent',
strokeColor: '#000000',
strokeWidth: '1',
shape: MxConstants.SHAPE_LABEL,
align: MxConstants.ALIGN_CENTER,
verticalAlign: MxConstants.ALIGN_BOTTOM,
imageAlign: MxConstants.ALIGN_CENTER,
imageVerticalAlign: MxConstants.ALIGN_TOP,
image: prefix + icon
}
bar.push(data[i])
}
})
export const toolbarItems = bar
......@@ -9,61 +9,20 @@
>
<!-- <div id="ExcelInputDialog"></div> -->
<el-form ref="stepName" :model="stepName" label-width="120px">
<el-form ref="stepName" :model="deleteForm" label-width="120px">
<el-form-item label="步骤名称:">
<el-input v-model="stepName.name"></el-input>
<el-input v-model="deleteForm.name"></el-input>
</el-form-item>
</el-form>
<div style="border:1px solid #99BBE8;padding:15px 15px;margin-bottom:15px;">
<el-form ref="form" :model="form" label-width="200px">
<el-form-item label="数据库连接:">
<el-row :gutter="10">
<el-col :span="14">
<el-select v-model="form.region" style="width: 100%">
<el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
</el-select>
</el-col>
<el-col class="line" :span="3">
<el-button size="mini">编辑</el-button></el-col>
<el-col class="line" :span="3">
<el-button size="mini">新建</el-button></el-col>
<el-col class="line" :span="3">
<el-button size="mini">向导</el-button></el-col>
</el-row>
</el-form-item>
<el-form-item label="目的模式:">
<el-row :gutter="10">
<el-col :span="20">
<el-input v-model="form.name"></el-input>
</el-col>
<el-col class="line" :span="3">
<el-button size="mini">浏览</el-button></el-col>
</el-row>
</el-form-item>
<el-form-item label="目标表:">
<el-row :gutter="10">
<el-col :span="20">
<el-input v-model="form.name"></el-input>
</el-col>
<el-col class="line" :span="3">
<el-button size="mini">浏览</el-button></el-col
>
</el-row>
</el-form-item>
<database-choose ref="databaseChoose" :form="deleteForm"></database-choose>
<el-form-item label="提交记录数量:">
<el-row :gutter="10">
<el-col :span="23">
<el-input v-model="form.name"></el-input>
<el-input v-model="deleteForm.commit"></el-input>
</el-col>
</el-row>
</el-form-item>
</el-form>
</div>
<el-card class="box-card">
......@@ -76,12 +35,12 @@
</template>
</el-table>
</el-card>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="deleteVisible = false">取 消</el-button>
<el-button type="primary" @click="deleteVisible = false">确 定</el-button>
<el-button type="primary" @click="confirm">确 定</el-button>
</span>
</el-dialog>
</div>
......@@ -91,10 +50,16 @@
export default ({
data(){
return{
form:{},
stepName:{},
activeName:'content',
engine:[],
deleteForm:{
commit: "100",
connection: "",
schema: "test",
table: "",
searchFields: "[]",
updateFields: "[]",
// update_bypassed: "N"
},
// 表头数据
tableHead:[
{
......@@ -147,7 +112,7 @@ export default ({
type: Boolean,
default:false
},
explorer:Function
// explorer:Function
},
mounted(){
......@@ -155,46 +120,12 @@ export default ({
},
methods:{
handleClose(){
this.$emit("update:updateVisible", false);
this.$emit("update:deleteVisible", false);
},
confirm(){
},
//新建转换
createTrans(){
var formData = new FormData();
var formData = new FormData();
formData.append('dir', this.nodePath);
formData.append('transName', this.inputValue);
// console.log('新建提交参数==',params);
createTrans(formData).then(res=>{
if (res) {
this.$message.success('创建成功!');
this.explorer('');
this.$emit("update:estabDialogVisible", false);
}else {
this.$message.error(res.errMsg)
}
})
console.log('弹窗数据:===',this.deleteForm);
},
// 上传
handleChange(file, fileList) {
// console.log(file);
this.fileList = fileList.slice(-3);
this.tableData.push({ name: file.name });
// console.log(this.tableData);
// this.getObjectURL(file.raw)
// console.log(this.getObjectURL(file.raw));
},
addSheet(){},
fileChnageInput(e) {
console.log(e);
},
}
......
......@@ -8,65 +8,17 @@
top="10%"
>
<div id="ExcelInputDialog"></div>
<el-form ref="stepName" :model="stepName" label-width="120px">
<el-form ref="stepName" :model="insertOrUdateForm" label-width="120px">
<el-form-item label="步骤名称:">
<el-input v-model="stepName.name"></el-input>
<el-input v-model="insertOrUdateForm.name"></el-input>
</el-form-item>
</el-form>
<el-tabs v-model="activeName" type="border-card">
<el-tab-pane label="基本配置" name="content">
<el-form ref="form" :model="form" label-width="200px">
<el-form-item label="数据库连接:">
<el-row :gutter="10">
<el-col :span="14">
<el-select v-model="form.region" style="width: 100%">
<el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
</el-select>
</el-col>
<el-col class="line" :span="3">
<el-button size="mini">编辑</el-button></el-col
>
<el-col class="line" :span="3">
<el-button size="mini">新建</el-button></el-col
>
<el-col class="line" :span="3">
<el-button size="mini">向导</el-button></el-col
>
</el-row>
</el-form-item>
<el-form-item label="目的模式:">
<el-row :gutter="10">
<el-col :span="20">
<el-input v-model="form.name"></el-input>
</el-col>
<el-col class="line" :span="3">
<el-button size="mini">浏览</el-button></el-col
>
</el-row>
</el-form-item>
<el-form-item label="目标表:">
<el-row :gutter="10">
<el-col :span="20">
<el-input v-model="form.name"></el-input>
</el-col>
<el-col class="line" :span="3">
<el-button size="mini">浏览</el-button></el-col
>
</el-row>
</el-form-item>
<database-choose ref="databaseChoose" :form="insertOrUdateForm"></database-choose>
<el-form-item label="提交记录数量:">
<el-row :gutter="10">
<el-col :span="23">
<el-input v-model="form.name"></el-input>
<el-input v-model="insertOrUdateForm.commit"></el-input>
</el-col>
</el-row>
</el-form-item>
......@@ -75,25 +27,10 @@
<el-form-item label="不执行任何更新:">
<el-row :gutter="10">
<el-col :span="23">
<el-checkbox v-model="form.checked"></el-checkbox>
</el-col>
</el-row>
</el-form-item>
<!-- <el-form-item label="忽略插入错误:">
<el-row :gutter="10">
<el-col :span="23">
<el-checkbox v-model="form.checked"></el-checkbox>
<el-checkbox v-model="insertOrUdateForm.update_bypassed" true-label='Y' false-label="N"></el-checkbox>
</el-col>
</el-row>
</el-form-item>
<el-form-item label="指定数据库字段:">
<el-row :gutter="10">
<el-col :span="23">
<el-checkbox v-model="form.checked"></el-checkbox>
</el-col>
</el-row>
</el-form-item> -->
</el-form>
</el-tab-pane>
<el-tab-pane label="查询字段" name="handling">
......@@ -120,21 +57,12 @@
<el-button style="padding: 3px 0" type="text">获取和更新字段</el-button>
<el-button style="padding: 3px 0" type="text">编辑映射</el-button>
</div>
<el-table style="width: 100%" border >
<!-- <template v-for="(item,index) in updateTableHead">
<el-table-column :prop="item.column_name" :label="item.column_comment" :key="index" v-if="item.column_name != 'id'">
<template slot-scope="scope">
<el-input v-model="scope.row[scope.column.property]" ></el-input>
</template>
</el-table-column>
</template> -->
<!-- <el-table style="width: 100%" border >
<template v-for="(item,index) in updateTableHead">
<el-table-column :prop="item.column_name" :label="item.column_comment" :key="index" v-if="item.column_name != 'id'">
<el-table-column :prop="item.column_name" :label="item.column_comment" :key="index" >
</el-table-column>
</template>
<el-table-column
v-for="(item, key) in updateTableData"
:key="key"
......@@ -153,14 +81,14 @@
</el-table-column>
</el-table>
</el-table> -->
</el-card>
</el-tab-pane>
</el-tabs>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="InsertOrUpdateVisible = false">取 消</el-button>
<el-button type="primary" @click="InsertOrUpdateVisible = false">确 定</el-button>
<el-button type="primary" @click="confirm">确 定</el-button>
</span>
</el-dialog>
</div>
......@@ -170,11 +98,16 @@
export default ({
data(){
return{
// inputValue:'',
form:{},
stepName:{},
insertOrUdateForm:{
commit: "100",
connection: "",
schema: "test",
table: "",
searchFields: "[]",
updateFields: "[]",
update_bypassed: "N"
},
activeName:'content',
engine:[],
// 表头数据
tableHead:[
{
......@@ -261,19 +194,19 @@ export default ({
},
props:{
title:{
type:String,
default:''
},
nodePath:{
type:String,
default:''
},
// title:{
// type:String,
// default:''
// },
// nodePath:{
// type:String,
// default:''
// },
InsertOrUpdateVisible:{
type: Boolean,
default:false
},
explorer:Function
// explorer:Function
},
mounted(){
......@@ -281,46 +214,14 @@ export default ({
},
methods:{
handleClose(){
this.$emit("update:tableOutPutVisible", false);
this.$emit("update:InsertOrUpdateVisible", false);
},
confirm(){
console.log('弹窗数据:===',this.insertOrUdateForm);
},
//新建转换
createTrans(){
var formData = new FormData();
var formData = new FormData();
formData.append('dir', this.nodePath);
formData.append('transName', this.inputValue);
// console.log('新建提交参数==',params);
createTrans(formData).then(res=>{
if (res) {
this.$message.success('创建成功!');
this.explorer('');
this.$emit("update:estabDialogVisible", false);
}else {
this.$message.error(res.errMsg)
}
})
},
// 上传
handleChange(file, fileList) {
// console.log(file);
this.fileList = fileList.slice(-3);
this.tableData.push({ name: file.name });
// console.log(this.tableData);
// this.getObjectURL(file.raw)
// console.log(this.getObjectURL(file.raw));
},
addSheet(){},
fileChnageInput(e) {
console.log(e);
},
}
......
......@@ -7,73 +7,24 @@
:before-close="handleClose"
top="10%"
>
<div id="ExcelInputDialog"></div>
<el-form ref="stepName" :model="stepName" label-width="120px">
<el-form-item label="步骤名称:">
<el-input v-model="stepName.name" placeholder="数据同步"></el-input>
<el-form ref="synForm" :model="synForm" label-width="200px">
<el-form-item label="步骤名称:" label-width="120px">
<el-input v-model="synForm.name" placeholder="数据同步"></el-input>
</el-form-item>
</el-form>
<el-tabs v-model="activeName" type="border-card">
<el-tab-pane label="一般" name="content">
<el-form ref="form" :model="form" label-width="200px">
<el-form-item label="数据库连接:">
<el-row :gutter="10">
<el-col :span="14">
<el-select v-model="form.region" style="width: 100%">
<el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
</el-select>
</el-col>
<el-col class="line" :span="3">
<el-button size="mini">编辑</el-button></el-col
>
<el-col class="line" :span="3">
<el-button size="mini">新建</el-button></el-col
>
<el-col class="line" :span="3">
<el-button size="mini">向导</el-button></el-col
>
</el-row>
</el-form-item>
<el-form-item label="目的模式:">
<el-row :gutter="10">
<el-col :span="20">
<el-input v-model="form.name"></el-input>
</el-col>
<el-col class="line" :span="3">
<el-button size="mini">浏览</el-button></el-col
>
</el-row>
</el-form-item>
<el-form-item label="目标表:">
<el-row :gutter="10">
<el-col :span="20">
<el-input v-model="form.name"></el-input>
</el-col>
<el-col class="line" :span="3">
<el-button size="mini">浏览</el-button></el-col
>
</el-row>
</el-form-item>
<database-choose ref="databaseChoose" :form="synForm"></database-choose>
<el-form-item label="提交的记录数量:">
<el-row :gutter="10">
<el-col :span="23">
<el-input v-model="form.name"></el-input>
<el-input v-model="synForm.commit"></el-input>
</el-col>
</el-row>
</el-form-item>
<el-form-item label="批量更新:">
<el-row :gutter="10">
<el-col :span="23">
<el-checkbox v-model="form.checked"></el-checkbox>
<el-checkbox v-model="synForm.use_batch" true-label='Y' false-label="N"></el-checkbox>
</el-col>
</el-row>
</el-form-item>
......@@ -81,7 +32,7 @@
<el-form-item label="表名在字段里定义:">
<el-row :gutter="10">
<el-col :span="23">
<el-checkbox v-model="form.checked"></el-checkbox>
<el-checkbox v-model="synForm.tablename_in_field" true-label='Y' false-label="N"></el-checkbox>
</el-col>
</el-row>
</el-form-item>
......@@ -89,7 +40,7 @@
<el-form-item label="表名字段:">
<el-row :gutter="10">
<el-col :span="23">
<el-input v-model="form.name"></el-input>
<el-input v-model="synForm.tablename_field"></el-input>
</el-col>
</el-row>
</el-form-item>
......@@ -115,17 +66,14 @@
</template>
</el-table>
</el-card>
</el-form>
</el-tab-pane>
<el-tab-pane label="高级" name="oher ">
<el-form ref="form" :model="form" label-width="150px">
<div style="position:relative;border:1px solid #b5b8c8;padding:15px 0;">
<div style="position:absolute;top:-15px;left:20px;color:#15428b;background-color:#fff;padding:5px 10px;">操作</div>
<el-form-item label="操作字段名:">
<el-row :gutter="10">
<el-col :span="23">
<el-select v-model="form.region" style="width: 100%">
<el-select v-model="synForm.operation_order_field" style="width: 100%">
<el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
</el-select>
......@@ -135,41 +83,39 @@
<el-form-item label="当值相等时插入:">
<el-row :gutter="10">
<el-col :span="23">
<el-input v-model="form.name"></el-input>
<el-input v-model="synForm.order_insert"></el-input>
</el-col>
</el-row>
</el-form-item>
<el-form-item label="当值相等时更新:">
<el-row :gutter="10">
<el-col :span="23">
<el-input v-model="form.name"></el-input>
<el-input v-model="synForm.order_update"></el-input>
</el-col>
</el-row>
</el-form-item>
<el-form-item label="当值相等时删除:">
<el-row :gutter="10">
<el-col :span="23">
<el-input v-model="form.name"></el-input>
<el-input v-model="synForm.order_delete"></el-input>
</el-col>
</el-row>
</el-form-item>
<el-form-item label="执行查询:">
<el-row :gutter="10">
<el-col :span="23">
<el-checkbox v-model="form.checked"></el-checkbox>
<el-checkbox v-model="synForm.perform_lookup" true-label='Y' false-label="N"></el-checkbox>
</el-col>
</el-row>
</el-form-item>
</div>
</el-form>
</el-tab-pane>
</el-tabs>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="synVisible = false">取 消</el-button>
<el-button type="primary" @click="synVisible = false">确 定</el-button>
<el-button type="primary" @click="confirm">确 定</el-button>
</span>
</el-dialog>
</div>
......@@ -179,11 +125,26 @@
export default ({
data(){
return{
// inputValue:'',
form:{},
stepName:{},
synForm:{
connection: "",
schema: "",
table: "lookup table",
commit: "100",
use_batch: "N",//批量更新
tablename_in_field: "N",//表名在字段里定义
tablename_field: "",//表名字段
operation_order_field: "",//操作字段名
order_insert: "",//当值相等时插入
order_delete: "",//当值相等时删除
order_update: "",//当值相等时更新
perform_lookup: "N",//执行查询
searchFields: "[]",
updateFields: "[]",
},
activeName:'content',
engine:[],
// 表头数据
tableHead:[
{
......@@ -276,41 +237,8 @@ export default ({
},
confirm(){
console.log('弹窗数据:===',this.synForm);
},
//新建转换
createTrans(){
var formData = new FormData();
var formData = new FormData();
formData.append('dir', this.nodePath);
formData.append('transName', this.inputValue);
// console.log('新建提交参数==',params);
createTrans(formData).then(res=>{
if (res) {
this.$message.success('创建成功!');
this.explorer('');
this.$emit("update:estabDialogVisible", false);
}else {
this.$message.error(res.errMsg)
}
})
},
// 上传
handleChange(file, fileList) {
// console.log(file);
this.fileList = fileList.slice(-3);
this.tableData.push({ name: file.name });
// console.log(this.tableData);
// this.getObjectURL(file.raw)
// console.log(this.getObjectURL(file.raw));
},
addSheet(){},
fileChnageInput(e) {
console.log(e);
},
......
......@@ -7,61 +7,20 @@
:before-close="handleClose"
top="10%"
>
<div id="ExcelInputDialog"></div>
<el-form ref="stepName" :model="stepName" label-width="120px">
<el-form-item label="步骤名称:">
<el-input v-model="stepName.name"></el-input>
<el-form ref="updateForm" :model="updateForm" label-width="200px">
<el-form-item label="步骤名称:" label-width="120px">
<el-input v-model="updateForm.name"></el-input>
</el-form-item>
</el-form>
<el-tabs v-model="activeName" type="border-card">
<el-tab-pane label="基本配置" name="content">
<el-form ref="form" :model="form" label-width="200px">
<el-form-item label="数据库连接:">
<el-row :gutter="10">
<el-col :span="14">
<el-select v-model="form.region" style="width: 100%">
<el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
</el-select>
</el-col>
<el-col class="line" :span="3">
<el-button size="mini">编辑</el-button></el-col>
<el-col class="line" :span="3">
<el-button size="mini">新建</el-button></el-col>
<el-col class="line" :span="3">
<el-button size="mini">向导</el-button></el-col>
</el-row>
</el-form-item>
<el-form-item label="目的模式:">
<el-row :gutter="10">
<el-col :span="20">
<el-input v-model="form.name"></el-input>
</el-col>
<el-col class="line" :span="3">
<el-button size="mini">浏览</el-button></el-col>
</el-row>
</el-form-item>
<el-form-item label="目标表:">
<el-row :gutter="10">
<el-col :span="20">
<el-input v-model="form.name"></el-input>
</el-col>
<el-col class="line" :span="3">
<el-button size="mini">浏览</el-button></el-col
>
</el-row>
</el-form-item>
<database-choose ref="databaseChoose" :form="updateForm"></database-choose>
<el-form-item label="提交记录数量:">
<el-row :gutter="10">
<el-col :span="23">
<el-input v-model="form.name"></el-input>
<el-input v-model="updateForm.commit"></el-input>
</el-col>
</el-row>
</el-form-item>
......@@ -70,32 +29,31 @@
<el-form-item label="批量更新:">
<el-row :gutter="10">
<el-col :span="23">
<el-checkbox v-model="form.checked"></el-checkbox>
<el-checkbox v-model="updateForm.use_batch" true-label='Y' false-label="N"></el-checkbox>
</el-col>
</el-row>
</el-form-item>
<el-form-item label="跳过查询:">
<el-row :gutter="10">
<el-col :span="23">
<el-checkbox v-model="form.checked"></el-checkbox>
<el-checkbox v-model="updateForm.skip_lookup" true-label='Y' false-label="N"></el-checkbox>
</el-col>
</el-row>
</el-form-item>
<el-form-item label="忽略查询失败:">
<el-row :gutter="10">
<el-col :span="23">
<el-checkbox v-model="form.checked"></el-checkbox>
<el-checkbox v-model="updateForm.error_ignored" true-label='Y' false-label="N"></el-checkbox>
</el-col>
</el-row>
</el-form-item>
<el-form-item label="标志字段(key found):">
<el-row :gutter="10">
<el-col :span="23">
<el-checkbox v-model="form.checked"></el-checkbox>
<el-input v-model="updateForm.ignore_flag_field"></el-input>
</el-col>
</el-row>
</el-form-item>
</el-form>
</el-tab-pane>
<el-tab-pane label="查询字段" name="handling">
......@@ -115,10 +73,11 @@
</el-table>
</el-tab-pane>
</el-tabs>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="tableOutPutVisible = false">取 消</el-button>
<el-button type="primary" @click="tableOutPutVisible = false">确 定</el-button>
<el-button type="primary" @click="confirm">确 定</el-button>
</span>
</el-dialog>
</div>
......@@ -128,10 +87,21 @@
export default ({
data(){
return{
form:{},
stepName:{},
updateForm:{
connection: "",
schema: "test",
table: "",
commit: "100",
use_batch:'Y',// 批量更新
skip_lookup:'Y',//跳过查询
error_ignored:'Y',//忽略查询错误
searchFields: "[]", //查询字段
updateFields: "[]",//更新字段
ignore_flag_field:"[]",//标志字段
},
activeName:'content',
engine:[],
// 表头数据
tableHead:[
{
......@@ -218,42 +188,9 @@ export default ({
},
confirm(){
},
//新建转换
createTrans(){
var formData = new FormData();
var formData = new FormData();
formData.append('dir', this.nodePath);
formData.append('transName', this.inputValue);
// console.log('新建提交参数==',params);
createTrans(formData).then(res=>{
if (res) {
this.$message.success('创建成功!');
this.explorer('');
this.$emit("update:estabDialogVisible", false);
}else {
this.$message.error(res.errMsg)
}
})
console.log('弹窗数据===',this.updateForm);
},
// 上传
handleChange(file, fileList) {
// console.log(file);
this.fileList = fileList.slice(-3);
this.tableData.push({ name: file.name });
// console.log(this.tableData);
// this.getObjectURL(file.raw)
// console.log(this.getObjectURL(file.raw));
},
addSheet(){},
fileChnageInput(e) {
console.log(e);
},
}
......
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