Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
ETL-admin
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
莫晓莉
ETL-admin
Commits
d5093a79
Commit
d5093a79
authored
Mar 31, 2021
by
李耀琨
Browse files
Options
Browse Files
Download
Plain Diff
解决冲突
parents
f0cb22fa
4febc18a
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
2129 additions
and
194 deletions
+2129
-194
.merge_file_a26720
+1710
-0
src/api/kettle/file.js
+11
-0
src/assets/styles/index.scss
+1
-1
src/main.js
+3
-1
src/views/dashboard-kettle/components/designer/modules/node.vue
+1
-1
src/views/dashboard-kettle/components/designer/modules/node_menu.vue
+12
-13
src/views/dashboard-kettle/components/designer/modules/node_menu2.vue
+5
-3
src/views/dashboard-kettle/components/designer/mxgraphDesigner.vue
+20
-10
src/views/dialogs-components/global/export-tree/main.vue
+8
-9
src/views/dialogs-components/global/in-repository/main.vue
+16
-17
src/views/dialogs-components/global/table-list/index.js
+3
-0
src/views/dialogs-components/global/table-list/main.vue
+115
-0
src/views/kettle/home2.vue
+106
-107
src/views/kettle/toolbar.js
+1
-1
src/views/output-dialog/table-out.vue
+117
-31
No files found.
.merge_file_a26720
0 → 100644
View file @
d5093a79
<template>
<div class="ef-flow-box" v-if="easyFlowVisible">
<div class="ef-flow-header">
<el-row>
<!--顶部工具菜单-->
<el-col :span="24">
<div class="ef-tooltar">
<el-link type="primary" :underline="false">{{
flowData.name
}}</el-link>
<el-divider direction="vertical"></el-divider>
<el-tooltip
class="item"
effect="dark"
:open-delay="300"
content="保存流程图"
placement="bottom"
>
<el-button
type="text"
icon="el-icon-receiving"
size="large"
></el-button>
</el-tooltip>
<el-divider direction="vertical"></el-divider>
<el-tooltip
class="item"
effect="dark"
:open-delay="300"
content="生产流程图片"
placement="bottom"
>
<el-button
type="text"
icon="el-icon-picture"
size="large"
></el-button>
</el-tooltip>
<el-divider direction="vertical"></el-divider>
<el-tooltip
class="item"
effect="dark"
content="重新绘制"
placement="bottom"
>
<el-button
type="text"
icon="el-icon-refresh"
size="large"
></el-button>
</el-tooltip>
<el-divider direction="vertical"></el-divider>
<el-tooltip
class="item"
effect="dark"
content="点击删除"
placement="bottom"
>
<el-button
type="text"
icon="el-icon-delete"
size="large"
@click="deleteFlow"
></el-button>
</el-tooltip>
<el-divider direction="vertical"></el-divider>
<el-tooltip
class="item"
effect="dark"
content="设置"
placement="bottom"
>
<el-button
type="text"
icon="el-icon-setting"
size="large"
></el-button>
</el-tooltip>
</div>
</el-col>
</el-row>
</div>
<div class="ef-flow-main">
<!-- 画布start -->
<div class="mxgraphClass">
<div id="mxgraph" ref="container"></div>
</div>
</div>
<!-- 输入工具弹框 -->
<el-dialog
title="Excelt输入"
:visible.sync="excelLnput"
width="800px"
:before-close="handleClose"
>
<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-item>
</el-form>
<el-tabs v-model="activeName" type="border-card" @tab-click="tapClick">
<el-tab-pane label="文件" name="file">
<el-form ref="form" :model="form" label-width="120px">
<el-form-item label="表格类(引擎):">
<el-select v-model="form.engine" style="width: 100%">
<el-option
v-for="item in engine"
:key="item.code"
:label="item.desc"
:value="item.code"
/>
</el-select>
</el-form-item>
<el-form-item label="选中的文件:">
<el-button size="small" type="primary" @click="selectFilePath(1)"
>选择文件</el-button
>
<el-card class="box-card">
<el-table :data="ileListData" style="width: 100%">
<el-table-column prop="name" label="文件/目录" width="120">
</el-table-column>
<el-table-column prop="filemask" label="通配符">
</el-table-column>
<el-table-column
prop="exclude_filemask"
label="通配符号(排除)"
width="120"
>
</el-table-column>
<el-table-column prop="file_required" label="要求">
</el-table-column>
<el-table-column prop="include_subfolders" label="包含子目录">
</el-table-column>
<el-table-column label="操作">
<template slot-scope="scope">
<el-button
@click="handleClick(scope.row)"
type="text"
size="small"
>编辑</el-button
>
<el-button
type="text"
size="small"
@click="deleteFile(scope.$index, ileListData)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
</el-card>
</el-form-item>
</el-form>
<el-card class="box-card">
<el-form ref="form" :model="form" label-width="200px">
<el-form-item label="从前面的步骤获取文件名:">
<el-checkbox
v-model="form.checked"
true-label="Y"
false-label="N"
></el-checkbox>
</el-form-item>
<el-form-item label="从哪个步骤读文件名:">
<el-select
v-model="form.wAccStep"
style="width: 100%"
:disabled="!form.checked || form.checked == 'N'"
>
<el-option
v-for="item in connectionNode"
:key="item.id"
:label="item.name"
:value="item.name"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="保存文件的字段:">
<el-select
v-model="form.wAccField"
style="width: 100%"
:disabled="!form.checked || form.checked == 'N'"
>
<el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
</el-select>
</el-form-item>
</el-form>
</el-card>
</el-tab-pane>
<el-tab-pane label="工作表" name="worksheet">
<h3>要读取的工作表列表</h3>
<el-button type="primary" @click="workClick(true)"
>添加工作表</el-button
>
<br />
<el-card class="box-card">
<el-table :data="worksheetList" style="width: 100%">
<el-table-column prop="name" label="工作表名称" width="120">
</el-table-column>
<el-table-column prop="startrow" label="起始行">
</el-table-column>
<el-table-column prop="startcol" label="起始列">
</el-table-column>
<el-table-column label="操作">
<template slot-scope="scope">
<el-button
@click="workClick(false, scope.row)"
type="text"
size="small"
>编辑</el-button
>
<el-button
type="text"
size="small"
@click="deleteRow(scope.$index, worksheetList)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
</el-card>
</el-tab-pane>
<el-tab-pane label="内容" name="content">
<el-form ref="form" :model="form" label-width="200px">
<el-form-item label="头部:">
<el-checkbox
v-model="form.header"
true-label="Y"
false-label="N"
></el-checkbox>
</el-form-item>
<el-form-item label="没有空行:">
<el-checkbox
v-model="form.noempty"
true-label="Y"
false-label="N"
></el-checkbox>
</el-form-item>
<el-form-item label="停在空白记录:">
<el-checkbox
v-model="form.stoponempty"
true-label="Y"
false-label="N"
></el-checkbox>
</el-form-item>
<el-form-item label="限制:">
<el-input v-model="form.limit"></el-input>
</el-form-item>
<el-form-item label="编码:">
<el-select v-model="form.encoding" filterable style="width: 100%">
<el-option
v-for="item in codingType"
:key="item.index"
:label="item.name"
:value="item.name"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="添加文件名">
<el-checkbox
v-model="form.add_to_result_filenames"
true-label="Y"
false-label="N"
></el-checkbox>
</el-form-item>
</el-form>
</el-tab-pane>
<el-tab-pane label="错误处理" name="handling">
<el-form ref="form" :model="form" label-width="130px">
<el-form-item label="严格类型:">
<el-checkbox
v-model="form.strict_types"
true-label="Y"
false-label="N"
></el-checkbox>
</el-form-item>
<el-form-item label="忽略错误:">
<el-checkbox
v-model="form.ignore"
true-label="Y"
false-label="N"
></el-checkbox>
</el-form-item>
<el-form-item label="跳过错误行:">
<el-checkbox
v-model="form.errorLineSkipped"
:disabled="!this.form.ignore || this.form.ignore == 'N'"
true-label="Y"
false-label="N"
></el-checkbox>
</el-form-item>
<el-form-item label="告警文件目录:">
<el-row :gutter="10">
<el-col :span="8">
<el-input
v-model="form.bad_line_files_destination_directory"
:disabled="!this.form.ignore || this.form.ignore == 'N'"
></el-input>
</el-col>
<el-col class="line" :span="2.5">扩展名</el-col>
<el-col :span="8">
<el-input
v-model="form.warningFilesExtension"
:disabled="!this.form.ignore || this.form.ignore == 'N'"
></el-input>
</el-col>
<el-col class="line" :span="2.5">
<el-button
:disabled="!this.form.ignore || this.form.ignore == 'N'"
size="mini"
>变量</el-button
></el-col
>
<el-col class="line" :span="2.5">
<el-button
:disabled="!this.form.ignore || this.form.ignore == 'N'"
size="mini"
@click="selectFilePath(2)"
>浏览</el-button
></el-col
>
</el-row>
</el-form-item>
<el-form-item label="错误件目录:">
<el-row :gutter="10">
<el-col :span="8">
<el-input
v-model="form.errorFilesDestinationDirectory"
:disabled="!this.form.ignore || this.form.ignore == 'N'"
></el-input>
</el-col>
<el-col class="line" :span="2.5">扩展名</el-col>
<el-col :span="8">
<el-input
v-model="form.errorFilesExtension"
:disabled="!this.form.ignore || this.form.ignore == 'N'"
></el-input>
</el-col>
<el-col class="line" :span="2.5">
<el-button
:disabled="!this.form.ignore || this.form.ignore == 'N'"
size="mini"
>变量</el-button
></el-col
>
<el-col class="line" :span="2.5">
<el-button
:disabled="!this.form.ignore || this.form.ignore == 'N'"
size="mini"
@click="selectFilePath(3)"
>浏览</el-button
></el-col
>
</el-row>
</el-form-item>
<el-form-item label="失败行数文件目录:">
<el-row :gutter="10">
<el-col :span="8">
<el-input
v-model="form.lineNumberFilesDestinationDirectory"
:disabled="!this.form.ignore || this.form.ignore == 'N'"
></el-input>
</el-col>
<el-col class="line" :span="2.5">扩展名</el-col>
<el-col :span="8">
<el-input
v-model="form.lineNumberFilesExtension"
:disabled="!this.form.ignore || this.form.ignore == 'N'"
></el-input>
</el-col>
<el-col class="line" :span="2.5">
<el-button
:disabled="!this.form.ignore || this.form.ignore == 'N'"
size="mini"
>变量</el-button
></el-col
>
<el-col class="line" :span="2.5">
<el-button
:disabled="!this.form.ignore || this.form.ignore == 'N'"
size="mini"
@click="selectFilePath(4)"
>浏览</el-button
></el-col
>
</el-row>
</el-form-item>
</el-form>
</el-tab-pane>
<el-tab-pane label="字段" name="field">
<el-button type="primary" @click="fieldClick(true)"
>添加字段</el-button
>
<el-table :data="tableData" style="width: 100%">
<el-table-column prop="name" label="名称"> </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="trim_type" label="去除空格类型">
</el-table-column>
<el-table-column prop="repeat" label="重复"> </el-table-column>
<el-table-column prop="format" label="格式"> </el-table-column>
<el-table-column prop="currency" label="货币"> </el-table-column>
<el-table-column prop="decimal" label="小数"> </el-table-column>
<el-table-column prop="group" label="分组"> </el-table-column>
<el-table-column label="操作" width="100px">
<template slot-scope="scope">
<el-button
@click="fieldClick(false, scope.row)"
type="text"
size="small"
>编辑</el-button
>
<el-button
type="text"
size="small"
@click="deletefield(scope.$index, tableData)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
</el-tab-pane>
<el-tab-pane label="其他输出字段" name="oher ">
<el-form ref="form" :model="form" label-width="150px">
<el-form-item label="文件名称字段:">
<el-input v-model="form.filefield"></el-input>
</el-form-item>
<el-form-item label="Sheet名称字段:">
<el-input v-model="form.sheetfield"></el-input>
</el-form-item>
<el-form-item label="Sheet的行号列:">
<el-input v-model="form.sheetrownumfield"></el-input>
</el-form-item>
<el-form-item label="行号列:">
<el-input v-model="form.rownumfield"></el-input>
</el-form-item>
<el-form-item label="文件名字段:">
<el-input v-model="form.shortFileFieldName"></el-input>
</el-form-item>
<el-form-item label="扩展名字段:">
<el-input v-model="form.extensionFieldName"></el-input>
</el-form-item>
<el-form-item label="路径字段:">
<el-input v-model="form.pathFieldName"></el-input>
</el-form-item>
<el-form-item label="文件大小字段:">
<el-input v-model="form.sizeFieldName"></el-input>
</el-form-item>
<el-form-item label="是否为隐藏文件字段:">
<el-input v-model="form.hiddenFieldName"></el-input>
</el-form-item>
<el-form-item label="最后修改时间字段:">
<el-input v-model="form.lastModificationTimeFieldName"></el-input>
</el-form-item>
<el-form-item label="Uri字段:">
<el-input v-model="form.uriNameFieldName"></el-input>
</el-form-item>
<el-form-item label="Root uri字段:">
<el-input v-model="form.rootUriNameFieldName"></el-input>
</el-form-item>
</el-form>
</el-tab-pane>
</el-tabs>
<span slot="footer" class="dialog-footer">
<el-button @click="excelLnput = false">取 消</el-button>
<el-button type="primary" @click="excelLnput = false">确 定</el-button>
</span>
</el-dialog>
<!-- 修改-->
<el-dialog
title="编辑"
:visible.sync="edit"
width="500px"
:before-close="handleClose"
>
<el-form ref="form" :model="formFile" label-width="150px">
<el-form-item label="文件/目录:">
<el-input v-model="formFile.name" :disabled="true"></el-input>
</el-form-item>
<el-form-item label="通配符:">
<el-input v-model="formFile.filemask"></el-input>
</el-form-item>
<el-form-item label="通配符号(排除):">
<el-input v-model="formFile.exclude_filemask"></el-input>
</el-form-item>
<el-form-item label="要求:">
<el-select v-model="formFile.file_required" style="width: 100%">
<el-option label="是" value="1"></el-option>
<el-option label="否" value="0"></el-option>
</el-select>
</el-form-item>
<el-form-item label="包含子目录:">
<el-select v-model="formFile.include_subfolders" style="width: 100%">
<el-option label="是" value="1"></el-option>
<el-option label="否" value="0"></el-option>
</el-select>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="edit = false">取 消</el-button>
<el-button type="primary" @click="edit = false">确 定</el-button>
</span>
</el-dialog>
<!-- 工作添加/修改-->
<el-dialog
title="编辑"
:visible.sync="work"
width="500px"
:before-close="handleClose"
>
<el-form ref="form" :model="workForm" label-width="150px">
<el-form-item label="工作表名称:">
<el-input v-model="workForm.name"></el-input>
</el-form-item>
<el-form-item label="起始行:">
<el-input v-model="workForm.startLine"></el-input>
</el-form-item>
<el-form-item label="起始列:">
<el-input v-model="workForm.startColumn"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="work = false">取 消</el-button>
<el-button type="primary" @click="addWork">确 定</el-button>
</span>
</el-dialog>
<!-- 字段添加/修改-->
<el-dialog
title="编辑"
:visible.sync="field"
width="500px"
:before-close="handleClose"
>
<el-form ref="form" :model="fieldForm" label-width="120px">
<el-form-item label="名称:">
<el-input v-model="fieldForm.name"></el-input>
</el-form-item>
<el-form-item label="类型:">
<el-select v-model="fieldForm.type" style="width: 100%">
<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="fieldForm.length"></el-input>
</el-form-item>
<el-form-item label="精度:">
<el-input v-model="fieldForm.accuracy"></el-input>
</el-form-item>
<el-form-item label="去除空格类型:">
<el-select v-model="fieldForm.space" 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-item label="重复:">
<el-input v-model="fieldForm.repeat"></el-input>
</el-form-item>
<el-form-item label="格式:">
<el-select v-model="fieldForm.format" style="width: 100%">
<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="fieldForm.currency"></el-input>
</el-form-item>
<el-form-item label="小数:">
<el-input v-model="fieldForm.decimal"></el-input>
</el-form-item>
<el-form-item label="分组:">
<el-input v-model="fieldForm.grouping"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="field = false">取 消</el-button>
<el-button type="primary" @click="addField">确 定</el-button>
</span>
</el-dialog>
<!-- 表输入-->
<el-dialog
title="表输入"
:visible.sync="TableInputDialog"
width="800px"
:before-close="handleClose"
>
<tableInput
:disabled="true"
:connectionNode="connectionNode"
:stepName="stepName"
>
</tableInput>
<span slot="footer" class="dialog-footer">
<el-button @click="TableInputDialog = false">取 消</el-button>
<el-button type="primary" @click="TableInputDialog = false"
>确 定</el-button
>
</span>
</el-dialog>
<!-- 获取系统信息-->
<el-dialog
title="获取系统信息"
:visible.sync="SystemInfoDialog"
width="800px"
:before-close="handleClose"
>
<getSystemInformation :disabled="true"> </getSystemInformation>
<span slot="footer" class="dialog-footer">
<el-button @click="SystemInfoDialog = false">取 消</el-button>
<el-button type="primary" @click="SystemInfoDialog = false"
>确 定</el-button
>
</span>
</el-dialog>
<!-- 自定义常量数据-->
<el-dialog
title="自定义常量数据"
:visible.sync="ConstantDialog"
width="800px"
:before-close="handleClose"
>
<customConstant :disabled="true"> </customConstant>
<span slot="footer" class="dialog-footer">
<el-button @click="ConstantDialog = false">取 消</el-button>
<el-button type="primary" @click="ConstantDialog = false"
>确 定</el-button
>
</span>
</el-dialog>
<!-- 生成随机数-->
<el-dialog
title="生成随机数"
:visible.sync="RandomValueDialog"
width="800px"
:before-close="handleClose"
>
<randomNumber :disabled="true"> </randomNumber>
<span slot="footer" class="dialog-footer">
<el-button @click="RandomValueDialog = false">取 消</el-button>
<el-button type="primary" @click="RandomValueDialog = false"
>确 定</el-button
>
</span>
</el-dialog>
<!-- 生成记录-->
<el-dialog
title="生成记录"
:visible.sync="RowGeneratorDialog"
width="800px"
:before-close="handleClose"
>
<generatingRecords :disabed="true"></generatingRecords>
<span slot="footer" class="dialog-footer">
<el-button @click="RowGeneratorDialog = false">取 消</el-button>
<el-button type="primary" @click="RowGeneratorDialog = false"
>确 定</el-button
>
</span>
</el-dialog>
<!-- 文本文件输入-->
<el-dialog
title="文本文件输入"
:visible.sync="TextFileInputDialog"
width="800px"
:before-close="handleClose"
>
<textFileInput
:disabed="true"
:connectionNode="connectionNode"
></textFileInput>
<span slot="footer" class="dialog-footer">
<el-button @click="TextFileInputDialog = false">取 消</el-button>
<el-button type="primary" @click="TextFileInputDialog = false"
>确 定</el-button
>
</span>
</el-dialog>
<!-- 文件浏览器-->
<el-dialog
title="文件浏览器"
:visible.sync="filePathSelection"
width="500px"
:before-close="handleClose"
>
<browseFiles :disabed="true" v-on:route="route"></browseFiles>
<span slot="footer" class="dialog-footer">
<el-button @click="filePathSelection = false">取 消</el-button>
<el-button type="primary" @click="addFilePathSelection"
>确 定</el-button
>
</span>
</el-dialog>
<!-- 输出弹窗start=============== -->
<outDialog
ref="tableOutPut"
:tableOutPutVisible.sync="tableOutPutVisible"
@fathertrans="fathertrans"
></outDialog>
<insertOrUpdate
ref="insertOrdate"
:InsertOrUpdateVisible.sync="InsertOrUpdateVisible"
></insertOrUpdate>
<excelOutPutDialog
ref="excelOut"
:excelOutPutVisible.sync="excelOutPutVisible"
></excelOutPutDialog>
<updateDialog
ref="update"
:updateVisible.sync="updateVisible"
></updateDialog>
<synDialog ref="syn" :synVisible.sync="synVisible"></synDialog>
<delDialog ref="del" :deleteVisible.sync="deleteVisible"></delDialog>
<sqlDialog ref="sql" :sqlVisible.sync="sqlVisible"></sqlDialog>
<textFileDialog
ref="textFile"
:fileVisible.sync="fileVisible"
></textFileDialog>
<microDialog ref="mic" :microVisible.sync="microVisible"></microDialog>
<!-- 输出弹窗end================== -->
</div>
</template>
<script>
import draggable from "vuedraggable";
// 使用修改后的jsplumb
import lodash from "lodash"; //JavaScript 实用工具库
import {
excelSheetType,
previousSteps,
inputOutputFields,
availableCharsets,
valueFormat,
valueMeta,
save,
newStep
} from "@/api/kettle/link";
// 输入弹窗
import tableInput from "../appBulletFrame/tableInput";
import getSystemInformation from "../appBulletFrame/getSystemInformation";
import customConstant from "../appBulletFrame/customConstant";
import randomNumber from "../appBulletFrame/randomNumber";
import generatingRecords from "../appBulletFrame/generatingRecords";
import textFileInput from "../appBulletFrame/textFileInput";
import browseFiles from "../appBulletFrame/browseFiles";
// 输出弹窗start******************************************
import outDialog from "../../../output-dialog/table-out";
import insertOrUpdate from "../../../output-dialog/insertOrUpdate";
import excelOutPutDialog from "../../../output-dialog/Excel-output";
import updateDialog from "../../../output-dialog/update";
import synDialog from "../../../output-dialog/synchronize";
import delDialog from "../../../output-dialog/delete";
import sqlDialog from "../../../output-dialog/sqlFileOutput";
import textFileDialog from "../../../output-dialog/text-file-output";
import microDialog from "../../../output-dialog/micro-excel";
// 输出弹窗end********************************************
import {
mxGraph,
mxUtils,
mxEvent,
mxCell,
mxKeyHandler,
mxRubberband,
mxConstants,
mxStencilRegistry,
mxStencil,
mxCodec,
mxGraphModel,
mxGeometry,
} from "mxgraph-js";
// XML
// import {
// mxUtils as mxUtils,
// mxGraph as mxGraph,
// mxEvent as mxEvent,
// mxKeyHandler as mxKeyHandler,
// mxRubberband as mxRubberband,
// mxConstants as mxConstants,
// mxStencilRegistry as mxStencilRegistry,
// mxStencil as mxStencil,
// mxCodec as mxCodec,
// mxGraphModel as mxGraphModel,
// mxGeometry as mxGeometry,
// } from "mxgraph/javascript/mxClient";
export default {
// props: {
// dialogVisibleFourth: {
// type: Boolean,
// default: false,
// },
// },
props: ["blankCanvas"], //从父组件传过来的值
data() {
return {
keyHandler: null,
palettes: {},
graphXml: "",
xmlDocuments:"",//获取解码的xml
// mxl=================================
InsertOrUpdateVisible: false,
tableOutPutVisible: false,
excelOutPutVisible: false,
updateVisible: false,
synVisible: false,
deleteVisible: false,
sqlVisible: false,
fileVisible: false,
microVisible: false,
// mxl=================================
// 输入模块
ileListData: [],
worksheetList: [],
publicData: [], //全部连接
connectionNode: {},
codingType: [],
routeState: 0,
filePathSelection: false,
TextFileInputDialog: false,
RowGeneratorDialog: false,
TableInputDialog: false,
SystemInfoDialog: false,
ConstantDialog: false,
RandomValueDialog: false,
excelLnput: false,
dataState: false,
edit: false,
work: false,
field: false,
form: {},
formFile: {},
activeName: "file",
fieldType: [],
fieldFormat: [],
stepName: {},
tableData: [
{
filemask: "",
name: "王小虎",
exclude_filemask: "",
file_required: "0",
include_subfolders: "1",
},
],
engine: [],
// 画布模块
isShowIcon: false,
isLeftMenu: true,
isShowR: false,
// graph 实例
graph: null,
// 控制画布销毁
easyFlowVisible: true,
// 是否加载完毕标志位
loadEasyFlowFinish: false,
// 数据
flowData: {},
// 激活的元素、可能是节点、可能是连线
activeElement: {
// 可选值 node 、line
type: undefined,
// 节点ID
nodeId: undefined,
// 连线ID
sourceId: undefined,
targetId: undefined,
},
zoom: 0.5,
workForm: {},
fieldForm: {},
};
},
// 一些基础配置移动该文件中
// mixins: [easyFlowMixin],
components: {
tableInput,
draggable,
getSystemInformation,
generatingRecords,
customConstant,
randomNumber,
textFileInput,
browseFiles,
// FlowNodeForm
// 弹窗组件start***********************
outDialog, //表输出
insertOrUpdate, //插入或更新
excelOutPutDialog,
updateDialog,
synDialog,
delDialog,
sqlDialog,
textFileDialog,
microDialog,
// 弹窗组件end***********************
},
//自定义指令 https://www.jb51.net/article/108047.htm
directives: {
flowDrag: {
// bind(el, binding, vnode, oldNode) {
// if (!binding) {
// return;
// }
// el.onmousedown = (e) => {
// if (e.button == 2) {
// // 右键不管
// return;
// }
// // 鼠标按下,计算当前原始距离可视区的高度
// let disX = e.clientX;
// let disY = e.clientY;
// el.style.cursor = "move";
// document.onmousemove = function (e) {
// // 移动时禁止默认事件
// e.preventDefault();
// const left = e.clientX - disX;
// disX = e.clientX;
// el.scrollLeft += -left;
// const top = e.clientY - disY;
// disY = e.clientY;
// el.scrollTop += -top;
// };
// document.onmouseup = function (e) {
// el.style.cursor = "auto";
// document.onmousemove = null;
// document.onmouseup = null;
// };
// };
// },
},
},
mounted() {
this.createGraph();
this.initToolbar();
this.initGraph();
this.$refs.container.style.background = 'url("./mxgraph/images/grid.gif")';
},
methods: {
// 子组件发射回来的弹窗变量变为true
fathertrans(res) {
// this.dialogVisibleFourth=res;
this.$emit("update:dialogVisibleFourth", res);
console.log("发射回父组件====");
},
fileChnageInput(e) {
console.log(e);
},
deleteRow(index, rows) {
rows.splice(index, 1);
},
deletefield(index, rows) {
rows.splice(index, 1);
},
deleteFile(index, rows) {
rows.splice(index, 1);
},
tapClick() {},
// 文件
handleClick(val) {
this.edit = !this.edit;
this.formFile = val;
},
// 字段
addField() {
this.field = !this.field;
if (this.dataState) {
this.tableData.push(this.fieldForm);
} else {
}
},
fieldClick(state, val) {
this.field = !this.field;
this.dataState = state;
if (state) {
this.fieldForm = {};
} else {
this.fieldForm = val;
}
},
// 工作表
workClick(state, val) {
this.work = !this.work;
this.dataState = state;
if (state) {
this.workForm = {};
} else {
this.workForm = val;
}
},
addWork() {
this.work = !this.work;
if (this.dataState) {
this.worksheetList.push(this.workForm);
} else {
}
},
// 关闭弹框
handleClose(done) {
this.$confirm("确认关闭?")
.then((_) => {
done();
})
.catch((_) => {});
},
addFilePathSelection() {
this.filePathSelection = !this.filePathSelection;
if (this.routeState == 1) {
this.ileListData.push(this.localPath);
} else if (this.routeState == 2) {
this.form.bad_line_files_destination_directory = this.localPath.name;
} else if (this.routeState == 3) {
this.form.errorFilesDestinationDirectory = this.localPath.name;
} else if (this.routeState == 4) {
this.form.lineNumberFilesDestinationDirectory = this.localPath.name;
}
},
route(flowData) {
this.localPath = flowData;
console.log(this.localPath);
},
selectFilePath(tsate) {
this.routeState = tsate;
this.filePathSelection = !this.filePathSelection;
},
task() {
let domArr = document.querySelectorAll('[key-id="123"]');
this.createGraph();
this.initToolbar();
},
handleNodeClick(e, node, i) {
this.$forceUpdate();
},
//生成画布
createGraph() {
this.graph = new mxGraph(this.$refs.container);
},
// 转xml
encode(graph) {
const encoder = new mxCodec();
const result = encoder.encode(graph.getModel());
return mxUtils.getPrettyXml(result);
},
decode(graphXml, graph) {
window["mxGraphModel"] = mxGraphModel;
window["mxGeometry"] = mxGeometry;
// const xmlDocument = mxUtils.parseXml(graphXml);
// const decoder = new mxCodec(xmlDocument);
// const node = xmlDocument.documentElement;
// decoder.decode(node, graph.getModel());
var enc = new mxCodec(mxUtils.createXmlDocument(graphXml));
var node = enc.encode(graph.getModel());
console.log(mxUtils.getPrettyXml(node));
return mxUtils.getPrettyXml(node);
},
//初始化画布
initGraph() {
if (this.R.isNil(this.graph)) {
return;
}
this.graph.setConnectable(true); // 允许连线
this.graph.setCellsEditable(false); // 不可修改
this.graph.setTooltips(true);
this.graph.setPanning(true);
this.graph.setDropEnabled(true);
this.graph.setAllowDanglingEdges(false);
this.graph.setDisconnectOnMove(false);
this.graph.convertValueToString = (cell) => {
// 根据cell生成显示的标签
return this.R.prop("title", cell);
};
this.graph.addListener(mxEvent.DOUBLE_CLICK, (graph, evt) => {
console.log(evt);
// this.xmlDocuments = mxUtils.parseXml(decodeURIComponent(this.blankCanvas));
this.graphXml = this.encode(this.graph);
console.log(this.graphXml,this.xmlDocuments);
// 监听双击事件
const cell = this.R.pathOr([], ["properties", "cell"], evt);
console.info(cell); // 在控制台输出双击的cell
if (cell.ids == "step1") {
this.excelLnput = !this.excelLnput;
return;
} else if (cell.ids == "step7") {
this.TableInputDialog = !this.TableInputDialog;
return;
} else if (cell.ids == "step6") {
this.SystemInfoDialog = !this.SystemInfoDialog;
return;
} else if (cell.ids == "step5") {
this.ConstantDialog = !this.ConstantDialog;
return;
} else if (cell.ids == "step4") {
this.RandomValueDialog = !this.RandomValueDialog;
return;
} else if (cell.ids == "step3") {
this.RowGeneratorDialog = !this.RowGeneratorDialog;
return;
} else if (cell.ids == "step2") {
this.TextFileInputDialog = !this.TextFileInputDialog;
return;
} else if (cell.ids == "step16") {
//表输出
this.tableOutPutVisible = !this.tableOutPutVisible;
return;
} else if (cell.ids == "step15") {
//更新
this.updateVisible = !this.updateVisible;
return;
} else if (cell.ids == "step14") {
//文本文件输出
this.fileVisible = !this.fileVisible;
return;
} else if (cell.ids == "step13") {
//数据同步
this.synVisible = !this.synVisible;
return;
} else if (cell.ids == "step12") {
//插入、更新
this.InsertOrUpdateVisible = !this.InsertOrUpdateVisible;
return;
} else if (cell.ids == "step11") {
//删除
this.deleteVisible = !this.deleteVisible;
return;
} else if (cell.ids == "step10") {
//SQL文件输出
this.sqlVisible = !this.sqlVisible;
return;
} else if (cell.ids == "step9") {
//Excel输出
this.excelOutPutVisible = !this.excelOutPutVisible;
return;
}
});
this.graph.addListener(mxEvent.CLICK, (graph, evt) => {
// console.log(evt);
// 监听单击事件
const cell = this.R.pathOr([], ["properties", "cell"], evt);
// console.info(cell); // 在控制台输出单击的cell
});
},
addCell(toolItem, x, y) {
const { width, height } = toolItem;
const parent = this.graph.getDefaultParent();
this.graph.getModel().beginUpdate();
const styleObj = {
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:toolItem['icon']
}
const style = Object.keys(styleObj).map((attr) => `${attr}=${styleObj[attr]}`).join(';')
try {
let vertex = this.graph.insertVertex(
parent,
null,
null,
x,
y,
width,
height,
style
);
vertex.title = toolItem["title"];
vertex.ids = toolItem["id"];
vertex.pluginId = toolItem["pluginId"];
this.xmlDocuments = mxUtils.parseXml(decodeURIComponent(this.blankCanvas));
console.log(this.xmlDocuments,'拖拽');
var oSerializer = new XMLSerializer();
console.log(oSerializer.serializeToString(this.xmlDocuments));
let pameStep = new FormData(); // 创建form对象
pameStep.append("graphXml", oSerializer.serializeToString(this.xmlDocuments));
pameStep.append("pluginId", vertex.pluginId);
pameStep.append("name", vertex.title);
newStep(pameStep).then(res=>{
console.log(res,4564564564566456);
// this.graph.getModel().beginUpdate();
// try
// {
// var cell = this.graph.insertVertex(this.graph.getDefaultParent(), null, res.documentElement, x, y, width, height, "icon;image=" + node.attributes.dragIcon);
// this.graph.setSelectionCells([cell]);
// } finally
// {
// this.graph.getModel().endUpdate();
// }
// this.graph.container.focus();
})
} finally {
this.graph.getModel().endUpdate();
}
},
//选择
initToolbar() {
let domArr = document.querySelectorAll('[key-id="123"]');
domArr.forEach((dom, index) => {
let toolItemObj = {
title: dom.innerText,
id: dom.id,
width: 50,
height: 50,
icon:dom.attributes["icon"].nodeValue,
// value: dom.pluginId,
pluginId:dom.getAttribute("pluginId"),
};
const { width, height } = toolItemObj;
const dropHandler = (graph, evt, cell, x, y) => {
this.addCell(toolItemObj, x, y);
};
const createDragPreview = () => {
const elt = document.createElement("div");
elt.style.border = "1px 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
);
});
},
// //设置
settingFlow() {
// console.log("按钮给我测试其他的功能--1", );
},
// // 删除激活的元素
deleteFlow() {
this.graph.removeCells(this.graph.getSelectionCells(), false); //删除选中节点
// if (this.activeElement.type === "node") {
// this.deleteNode(this.activeElement.nodeId);
// } else if (this.activeElement.type === "line") {
// this.$confirm("确定删除所点击的线吗?", "提示", {
// confirmButtonText: "确定",
// cancelButtonText: "取消",
// type: "warning",
// })
// .then(() => {
// var conn = this.graph.getConnections({
// source: this.activeElement.sourceId,
// target: this.activeElement.targetId,
// })[0];
// this.graph.deleteConnection(conn);
// })
// .catch(() => {});
// }
},
// // 删除线
// deleteLine(from, to) {
// delete this.publicData[to];
// this.flowData.lineList = this.flowData.lineList.filter(function (line) {
// if (line.from == from && line.to == to) {
// return false;
// }
// return true;
// });
// },
// // 改变连线
// changeLine(oldFrom, oldTo) {
// this.deleteLine(oldFrom, oldTo);
// },
// // 改变节点的位置
// changeNodeSite(flowData) {
// for (var i = 0; i < this.flowData.nodeList.length; i++) {
// let node = this.flowData.nodeList[i];
// if (node.id === flowData.nodeId) {
// node.left = flowData.left;
// node.top = flowData.top;
// }
// }
// },
// /**
// * 删除节点
// * @param nodeId 被删除节点的ID
// */
// deleteNode(nodeId) {
// this.$confirm("确定要删除节点" + nodeId + "?", "提示", {
// confirmButtonText: "确定",
// cancelButtonText: "取消",
// type: "warning",
// closeOnClickModal: false,
// })
// .then(() => {
// /**
// * 这里需要进行业务判断,是否可以删除
// */
// this.flowData.nodeList = this.flowData.nodeList.filter(function (
// node
// ) {
// if (node.id === nodeId) {
// // 伪删除,将节点隐藏,否则会导致位置错位
// // node.show = false
// return false;
// }
// return true;
// });
// this.$nextTick(function () {
// this.graph.removeAllEndpoints(nodeId);
// });
// })
// .catch(() => {});
// return true;
// },
// console.log("点击节点操作", node);
// // this.$emit("dialogVisibleFourth",true);
// // this.$emit('updata:dialogVisibleFourth',true); //触发showbox方法,true为向父组件传递的数据
// this.stepName = node;
// this.connectionNode = this.publicData[node.id];
// console.log(this.connectionNode);
// this.isShowR = true;
// this.activeElement.type = "node";
// this.activeElement.nodeId = node.id;
// // this.$refs.nodeForm.nodeInit(this.flowData, nodeId)
// let pamer = new FormData(); // 创建form对象
// pamer.append("query", "");
// excelSheetType(pamer).then((res) => {
// this.engine = res;
// });
// availableCharsets(pamer).then((res) => {
// this.codingType = res;
// });
// let pamer2 = new FormData(); // 创建form对象
// pamer2.append("valueType", "all");
// valueFormat(pamer2).then((res) => {
// this.fieldFormat = res;
// });
// valueMeta().then((res) => {
// this.fieldType = res;
// });
// previousSteps().then((res) => {});
// inputOutputFields().then((res) => {});
// if (node.ids == "step1") {
// this.excelLnput = !this.excelLnput;
// return;
// } else if (node.ids == "step7") {
// this.TableInputDialog = !this.TableInputDialog;
// return;
// } else if (node.ids == "step6") {
// this.SystemInfoDialog = !this.SystemInfoDialog;
// return;
// } else if (node.ids == "step5") {
// this.ConstantDialog = !this.ConstantDialog;
// return;
// } else if (node.ids == "step4") {
// this.RandomValueDialog = !this.RandomValueDialog;
// return;
// } else if (node.ids == "step3") {
// this.RowGeneratorDialog = !this.RowGeneratorDialog;
// return;
// } else if (node.ids == "step2") {
// this.TextFileInputDialog = !this.TextFileInputDialog;
// return;
// }
// if (node.ids == "step16") {
// this.tableOutPutVisible = !this.tableOutPutVisible;
// return;
// }
// // 是否具有该线
// hasLine(from, to) {
// for (var i = 0; i < this.flowData.lineList.length; i++) {
// var line = this.flowData.lineList[i];
// if (line.from === from && line.to === to) {
// return true;
// }
// }
// return false;
// },
// // 是否含有相反的线
// hashOppositeLine(from, to) {
// return this.hasLine(to, from);
// },
// nodeRightMenu(nodeId, evt) {
// console.log(88);
// this.menu.show = true;
// this.menu.curNodeId = nodeId;
// this.menu.left = evt.x + "px";
// this.menu.top = evt.y + "px";
// },
// repaintEverything() {
// this.graph.repaint();
// },
// // 加载流程图-不能删
// dataReload(flowData) {
// this.easyFlowVisible = false;
// this.flowData.nodeList = [];
// this.flowData.lineList = [];
// this.$nextTick(() => {
// flowData = lodash.cloneDeep(flowData);
// this.easyFlowVisible = true;
// this.flowData = flowData;
// // console.log(flowData, '渲染数据');
// this.$nextTick(() => {
// this.graph = graph.getInstance();
// this.$nextTick(() => {
// this.jsPlumbInit();
// });
// });
// });
// },
// // 保存流程图
saveFlow() {
// this.graphXml = this.encode(this.graph);
// console.log(this.graphXml);
// const that = this;
// let flowObj = Object.assign({}, that.flowData);
// // localStorage.setItem("data_test", JSON.stringify(flowObj))
// console.log("保存流程图", flowObj);
// // 保存
// let pamers = new FormData(); // 创建form对象
// pamers.append("graphXml", jsonxml);
// save(pamers).then((res) => {
// console.log(res);
// if (res.success) {
// that.$message.success("保存流程成功!暂时请查先看控制台。");
// } else {
// that.$message.error(res.errMsg);
// }
// });
// },
// // 转xml
// createGraph() {
// this.graph = new mxGraph(this.$refs.efContainer);
// },
// encode(graph) {
// const encoder = new mxCodec();
// const result = encoder.encode(graph.getModel());
// return mxUtils.getPrettyXml(result);
// },
// decode(graphXml, graph) {
// window["mxGraphModel"] = mxGraphModel;
// window["mxGeometry"] = mxGeometry;
// const xmlDocument = mxUtils.parseXml(graphXml);
// const decoder = new mxCodec(xmlDocument);
// const node = xmlDocument.documentElement;
// decoder.decode(node, graph.getModel());
},
// //重绘流程图
clearFlow() {
// let that = this;
// console.log("重绘流程图--1", that.flowData);
// that
// .$confirm("确定要重新绘制流程图吗?", "提示", {
// confirmButtonText: "确定",
// cancelButtonText: "取消",
// type: "warning",
// closeOnClickModal: false,
// })
// .then(() => {
// if (that.flowData.nodeList.length !== 0) {
// that.flowData.nodeList.forEach(function (node, index) {
// that.graph.remove(node.id);
// });
// that.flowData.nodeList = [];
// that.flowData.linkList = [];
// that.$message.success("设置成功");
// console.log("重绘流程图--002", that.flowData);
// }
// })
// .catch(() => {
// console.log("取消重绘流程图--1");
// that.$message.error("取消重制");
// });
// },
// //放小
// zoomSub() {
// let that = this;
// if (that.zoom <= 0) {
// return;
// }
// // setInterval(() => {
// that.zoom = that.zoom - 0.1;
// that.$refs.efContainer.style.transform = `scale(${that.zoom})`;
// that.graph.setZoom(that.zoom);
// // }, 1000)
// },
// //放大
// zoomAdd() {
// let that = this;
// if (that.zoom >= 1) {
// return;
// }
// // setInterval(() => {
// that.zoom = that.zoom + 0.1;
// // that.$refs.efContainer.style.transform = `scale(${that.zoom})`
// console.log(that.zoom);
// that.$refs.efContainer.style.transform = `scale(${that.zoom})`;
// that.graph.setZoom(that.zoom);
// // }, 1000)
},
// // 下载数据
downloadData() {
// this.$confirm("确定要下载该流程数据吗?", "提示", {
// confirmButtonText: "确定",
// cancelButtonText: "取消",
// type: "warning",
// closeOnClickModal: false,
// })
// .then(() => {
// var datastr =
// "data:text/json;charset=utf-8," +
// encodeURIComponent(JSON.stringify(this.flowData, null, "\t"));
// console.log(this.flowData);
// var downloadAnchorNode = document.createElement("a");
// downloadAnchorNode.setAttribute("href", datastr);
// downloadAnchorNode.setAttribute("download", "flowData.json");
// downloadAnchorNode.click();
// downloadAnchorNode.remove();
// this.$message.success("正在下载中,请稍后...");
// })
// .catch(() => {});
},
},
};
</script>
<style lang="scss" type="text/scss" scoped>
.mxgraphClass,
#mxgraph {
height: 100vh;
width: 100%;
}
.moveR-enter-active,
.moveR-leave-active {
transition: all 0.3s linear;
transform: translateX(0);
}
.moveR-enter,
.moveR-leave {
transform: translateX(100%);
}
.moveR-leave-to {
transform: translateX(100%);
}
.moveL-enter-active,
.moveL-leave-active {
transition: all 0.3s linear;
transform: translateX(0%);
}
.moveL-enter,
.moveL-leave {
transform: translateX(-100%);
}
.moveL-leave-to {
transform: translateX(-100%);
}
</style>
src/api/kettle/file.js
View file @
d5093a79
...
@@ -218,6 +218,17 @@ export function imp(data) {
...
@@ -218,6 +218,17 @@ export function imp(data) {
})
})
}
}
//获取表输出
export
function
inputOutputFields
(
data
)
{
return
request
({
url
:
'etlweb/trans/inputOutputFields'
,
data
,
method
:
'post'
})
}
...
...
src/assets/styles/index.scss
View file @
d5093a79
...
@@ -581,7 +581,7 @@ aside {
...
@@ -581,7 +581,7 @@ aside {
//
//
$svgUrl
:
'http://192.168.0.
2
:9888/ETLWEB-SERVER/etlweb'
;
$svgUrl
:
'http://192.168.0.
44
:9888/ETLWEB-SERVER/etlweb'
;
// $svgUrl:'http://192.168.0.44:9888/ETLWEB-SERVER/etlweb';
// $svgUrl:'http://192.168.0.44:9888/ETLWEB-SERVER/etlweb';
// $svgUrl:'http://192.168.0.44:9882/ETLWEB-SERVER/etlweb';
// $svgUrl:'http://192.168.0.44:9882/ETLWEB-SERVER/etlweb';
// .schema { background-image: url($svgUrl/ui/images/schema.svg?scale=16) !important;}
// .schema { background-image: url($svgUrl/ui/images/schema.svg?scale=16) !important;}
...
...
src/main.js
View file @
d5093a79
...
@@ -65,7 +65,7 @@ new Vue({
...
@@ -65,7 +65,7 @@ new Vue({
router
,
router
,
store
,
store
,
render
:
h
=>
h
(
App
)
render
:
h
=>
h
(
App
)
})
})
...
@@ -75,6 +75,8 @@ import * as R from 'ramda'
...
@@ -75,6 +75,8 @@ import * as R from 'ramda'
Vue
.
prototype
.
R
=
R
Vue
.
prototype
.
R
=
R
Vue
.
config
.
productionTip
=
false
Vue
.
config
.
productionTip
=
false
const
baseUrl
=
process
.
env
.
VUE_APP_BASE_API
===
'/'
?
''
:
process
.
env
.
VUE_APP_BASE_API
Vue
.
prototype
.
etlWeb
=
baseUrl
+
"ETLWEB-SERVER/etlweb/"
new
Vue
({
new
Vue
({
router
,
router
,
...
...
src/views/dashboard-kettle/components/designer/modules/node.vue
View file @
d5093a79
...
@@ -35,7 +35,7 @@
...
@@ -35,7 +35,7 @@
},
},
data
()
{
data
()
{
return
{
return
{
prefix
:
'http://192.168.0.44:9882/etlweb/'
,
prefix
:
this
.
etlWeb
,
}
}
},
},
computed
:
{
computed
:
{
...
...
src/views/dashboard-kettle/components/designer/modules/node_menu.vue
View file @
d5093a79
<
template
>
<
template
>
<div
class=
"flow-menu"
ref=
"tool"
>
<div
class=
"flow-menu"
ref=
"tool"
>
<!--
<div
v-for=
"menu in menuList"
:key=
"menu.id"
>
-->
<!--
<div
v-for=
"menu in menuList"
:key=
"menu.id"
>
-->
<!--
<span
class=
"ef-node-pmenu"
@
click=
"menu.open = !menu.open"
>
<!--
<span
class=
"ef-node-pmenu"
@
click=
"menu.open = !menu.open"
>
<i
:class=
"
{'el-icon-caret-bottom': menu.open,'el-icon-caret-right': !menu.open}">
</i>
<i
:class=
"
{'el-icon-caret-bottom': menu.open,'el-icon-caret-right': !menu.open}">
</i>
{{
menu
.
name
}}
{{
menu
.
name
}}
</span>
-->
</span>
-->
<!--
<!--
<ul
v-show=
"menu.open"
class=
"ef-node-menu-ul"
>
<ul
v-show=
"menu.open"
class=
"ef-node-menu-ul"
>
<draggable
<draggable
@
end=
"end"
@
end=
"end"
...
@@ -59,12 +59,11 @@
...
@@ -59,12 +59,11 @@
<!--
<span
class=
"custom-tree-node"
slot-scope=
"
{node,data}">
<!--
<span
class=
"custom-tree-node"
slot-scope=
"
{node,data}">
<span>
<span>
<i
:class=
"data.icon"
></i>
{{
node
.
label
}}
<i
:class=
"data.icon"
></i>
{{
node
.
label
}}
</span>
</span>
</span>
-->
</span>
-->
<span
class=
"custom-tree-node"
slot-scope=
"
{ node, data }">
<span
class=
"custom-tree-node"
slot-scope=
"
{ node, data }">
<span>
<span>
<img
:src=
"prefix+data.icon"
style=
"width:20px"
width=
""
alt=
""
>
<img
:src=
"prefix+data.icon"
style=
"width:20px"
width=
""
alt=
""
>
{{
node
.
label
}}
{{
node
.
label
}}
</span>
</span>
...
@@ -88,7 +87,7 @@ export default {
...
@@ -88,7 +87,7 @@ export default {
data
()
{
data
()
{
return
{
return
{
// prefix:'http://192.168.0.2:9700/etlweb/',
// prefix:'http://192.168.0.2:9700/etlweb/',
prefix
:
'http://192.168.0.44:9882/etlweb/'
,
prefix
:
this
.
etlWeb
,
// 测试数据开始=====
// 测试数据开始=====
jobTreeList
:
[
jobTreeList
:
[
{
{
...
@@ -172,12 +171,12 @@ export default {
...
@@ -172,12 +171,12 @@ export default {
type
:
"group"
,
type
:
"group"
,
name
:
"基础节点"
,
name
:
"基础节点"
,
ico
:
"el-icon-video-play"
,
ico
:
"el-icon-video-play"
,
open
:
true
,
open
:
true
,
children
:
[
children
:
[
{
{
id
:
"01"
,
id
:
"01"
,
type
:
"start"
,
type
:
"start"
,
name
:
"没了"
,
name
:
"没了"
,
ico
:
"el-icon-caret-right"
,
ico
:
"el-icon-caret-right"
,
// 自定义覆盖样式
// 自定义覆盖样式
style
:
{},
style
:
{},
...
@@ -301,15 +300,15 @@ export default {
...
@@ -301,15 +300,15 @@ export default {
},
},
stepsFun
()
{
stepsFun
()
{
let
pamer
=
new
FormData
();
// 创建form对象
let
pamer
=
new
FormData
();
// 创建form对象
pamer
.
append
(
"node"
,
"xnode-12"
);
pamer
.
append
(
"node"
,
"xnode-12"
);
this
.
$forceUpdate
();
this
.
$forceUpdate
();
steps
(
pamer
).
then
((
res
)
=>
{
steps
(
pamer
).
then
((
res
)
=>
{
this
.
jobTreeList
=
res
this
.
jobTreeList
=
res
console
.
log
(
this
.
menuList
,
res
[
0
]);
console
.
log
(
this
.
menuList
,
res
[
0
]);
});
});
},
},
...
@@ -400,7 +399,7 @@ export default {
...
@@ -400,7 +399,7 @@ export default {
console
.
log
(
"树形拖拽开始2:==="
,
event
);
console
.
log
(
"树形拖拽开始2:==="
,
event
);
var
type
=
Node
.
data
.
type
;
var
type
=
Node
.
data
.
type
;
this
.
nodeMenu
=
this
.
getMenuByType
(
type
);
this
.
nodeMenu
=
this
.
getMenuByType
(
type
);
},
},
handleDragend
(
draggingNode
,
endNode
,
position
,
event
)
{
handleDragend
(
draggingNode
,
endNode
,
position
,
event
)
{
...
...
src/views/dashboard-kettle/components/designer/modules/node_menu2.vue
View file @
d5093a79
...
@@ -11,10 +11,11 @@
...
@@ -11,10 +11,11 @@
class=
"custom-tree-node"
class=
"custom-tree-node"
:key-id=
"data.children ? '' : 123"
:key-id=
"data.children ? '' : 123"
:id=
"data.id"
:id=
"data.id"
:icon=
"data.icon"
:icon=
"
prefix+
data.icon"
:pluginId=
"data.pluginId"
:pluginId=
"data.pluginId"
>
>
{{
data
.
text
}}
<img
:src=
"prefix+data.icon"
style=
"width:20px"
width=
""
alt=
""
>
{{
data
.
text
}}
</div>
</div>
</div>
</div>
</el-tree>
</el-tree>
...
@@ -34,6 +35,7 @@ export default {
...
@@ -34,6 +35,7 @@ export default {
pluginId
:
"pluginId"
,
pluginId
:
"pluginId"
,
},
},
data
:
[],
data
:
[],
prefix
:
this
.
etlWeb
};
};
},
},
components
:
{},
components
:
{},
...
@@ -41,7 +43,7 @@ export default {
...
@@ -41,7 +43,7 @@ export default {
this
.
stepsFun
()
this
.
stepsFun
()
},
},
mounted
()
{
mounted
()
{
},
},
beforeUpdate
(){
beforeUpdate
(){
this
.
$emit
(
'shooStatus'
,
true
)
this
.
$emit
(
'shooStatus'
,
true
)
...
...
src/views/dashboard-kettle/components/designer/mxgraphDesigner.vue
View file @
d5093a79
...
@@ -1293,6 +1293,18 @@ export default {
...
@@ -1293,6 +1293,18 @@ export default {
const
{
width
,
height
}
=
toolItem
;
const
{
width
,
height
}
=
toolItem
;
// const parent = this.graph.getDefaultParent();
// const parent = this.graph.getDefaultParent();
this
.
graph
.
getModel
().
beginUpdate
();
this
.
graph
.
getModel
().
beginUpdate
();
const
styleObj
=
{
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
:
toolItem
[
'icon'
]
}
const
style
=
Object
.
keys
(
styleObj
).
map
((
attr
)
=>
`
${
attr
}
=
${
styleObj
[
attr
]}
`
).
join
(
';'
)
try
{
try
{
// let vertex = this.graph.insertVertex(
// let vertex = this.graph.insertVertex(
// parent,
// parent,
...
@@ -1311,10 +1323,6 @@ export default {
...
@@ -1311,10 +1323,6 @@ export default {
// this.xmlDocuments = mxUtils.parseXml(
// decodeURIComponent(this.blankCanvas)
// );
// console.log(this.xmlDocuments, "拖拽");
// var oSerializer = new XMLSerializer();
// var oSerializer = new XMLSerializer();
// console.log(oSerializer.serializeToString(this.xmlDocuments));
// console.log(oSerializer.serializeToString(this.xmlDocuments));
...
@@ -1338,7 +1346,8 @@ export default {
...
@@ -1338,7 +1346,8 @@ export default {
this
.
graph
.
getModel
().
beginUpdate
();
this
.
graph
.
getModel
().
beginUpdate
();
try
try
{
{
var
cell
=
this
.
graph
.
insertVertex
(
this
.
graph
.
getDefaultParent
(),
null
,
res
.
documentElement
,
x
,
y
,
width
,
height
,);
var
cell
=
this
.
graph
.
insertVertex
(
this
.
graph
.
getDefaultParent
(),
null
,
res
.
documentElement
,
x
,
y
,
width
,
height
,
style
);
cell
.
title
=
toolItem
[
"title"
];
cell
.
title
=
toolItem
[
"title"
];
cell
.
ids
=
toolItem
[
"id"
];
cell
.
ids
=
toolItem
[
"id"
];
cell
.
pluginId
=
toolItem
[
"pluginId"
];
cell
.
pluginId
=
toolItem
[
"pluginId"
];
...
@@ -1366,20 +1375,21 @@ this.graph.getModel().beginUpdate();
...
@@ -1366,20 +1375,21 @@ this.graph.getModel().beginUpdate();
//选择
//选择
initToolbar
()
{
initToolbar
()
{
let
domArr
=
document
.
querySelectorAll
(
'[key-id="123"]'
);
let
domArr
=
document
.
querySelectorAll
(
'[key-id="123"]'
);
console
.
log
(
domArr
);
domArr
.
forEach
((
dom
,
index
)
=>
{
domArr
.
forEach
((
dom
,
index
)
=>
{
// console.log(dom.pluginId);
// console.log(dom.pluginId);
// console.log(dom);
// console.log(dom);
let
toolItemObj
=
{
let
toolItemObj
=
{
title
:
dom
.
inner
HTML
,
title
:
dom
.
inner
Text
,
id
:
dom
.
id
,
id
:
dom
.
id
,
width
:
60
,
width
:
50
,
height
:
60
,
height
:
50
,
icon
:
dom
.
attributes
[
"icon"
].
nodeValue
,
// value: dom.pluginId,
// value: dom.pluginId,
pluginId
:
dom
.
getAttribute
(
"pluginId"
),
pluginId
:
dom
.
getAttribute
(
"pluginId"
),
icon
:
dom
.
getAttribute
(
"icon"
),
};
};
const
{
width
,
height
}
=
toolItemObj
;
const
{
width
,
height
}
=
toolItemObj
;
...
...
src/views/dialogs-components/global/export-tree/main.vue
View file @
d5093a79
...
@@ -3,7 +3,7 @@
...
@@ -3,7 +3,7 @@
<!-- 浏览 -->
<!-- 浏览 -->
<el-dialog
<el-dialog
title=
"资源库导出"
title=
"资源库导出"
:visible
.
sync=
"exportDialogVisible"
:visible
.
sync=
"exportDialogVisible"
width=
"650px"
width=
"650px"
top=
"15%"
top=
"15%"
:close-on-click-modal=
"false"
:close-on-click-modal=
"false"
...
@@ -44,7 +44,7 @@
...
@@ -44,7 +44,7 @@
<el-button
type=
"primary"
@
click=
"expRespository()"
>
确 定
</el-button>
<el-button
type=
"primary"
@
click=
"expRespository()"
>
确 定
</el-button>
</span>
</span>
</el-dialog>
</el-dialog>
</div>
</div>
</
template
>
</
template
>
...
@@ -63,7 +63,7 @@ export default {
...
@@ -63,7 +63,7 @@ export default {
},
},
checkedArr
:[]
checkedArr
:[]
}
}
},
},
props
:
{
props
:
{
exportDialogVisible
:
Boolean
,
exportDialogVisible
:
Boolean
,
...
@@ -102,7 +102,7 @@ export default {
...
@@ -102,7 +102,7 @@ export default {
});
});
this
.
checkedArr
=
checkArr
;
this
.
checkedArr
=
checkArr
;
console
.
log
(
'当前选择文件===='
,
this
.
checkedArr
);
console
.
log
(
'当前选择文件===='
,
this
.
checkedArr
);
},
},
//导出资源库
//导出资源库
expRespository
()
{
expRespository
()
{
...
@@ -110,7 +110,7 @@ export default {
...
@@ -110,7 +110,7 @@ export default {
this
.
$message
.
error
(
'请先选择要导出文件'
);
this
.
$message
.
error
(
'请先选择要导出文件'
);
}
}
let
data
=
new
FormData
();
let
data
=
new
FormData
();
data
.
append
(
"data"
,
JSON
.
stringify
(
this
.
checkedArr
)
);
data
.
append
(
"data"
,
JSON
.
stringify
(
this
.
checkedArr
)
);
expRespository
(
data
).
then
((
res
)
=>
{
expRespository
(
data
).
then
((
res
)
=>
{
if
(
res
)
{
if
(
res
)
{
...
@@ -123,7 +123,7 @@ export default {
...
@@ -123,7 +123,7 @@ export default {
// document.body.appendChild(link);
// document.body.appendChild(link);
// link.click();
// link.click();
var
url
=
`http://192.168.0.2:9888/ETLWEB-SERVER/etlweb/
attachment/download?filePath=
${
res
.
message
}
&remove=true`
var
url
=
this
.
etlWeb
+
`
attachment/download?filePath=
${
res
.
message
}
&remove=true`
window
.
open
(
url
);
window
.
open
(
url
);
}
else
{
}
else
{
...
@@ -131,7 +131,7 @@ export default {
...
@@ -131,7 +131,7 @@ export default {
}
}
});
});
},
},
handleCloseScan
()
{
handleCloseScan
()
{
this
.
$emit
(
"update:exportDialogVisible"
,
false
);
this
.
$emit
(
"update:exportDialogVisible"
,
false
);
},
},
...
@@ -143,4 +143,4 @@ export default {
...
@@ -143,4 +143,4 @@ export default {
background-color
:
#8888ff
;
background-color
:
#8888ff
;
color
:
#fff
;
color
:
#fff
;
}
}
</
style
>
</
style
>
\ No newline at end of file
src/views/dialogs-components/global/in-repository/main.vue
View file @
d5093a79
...
@@ -14,10 +14,10 @@
...
@@ -14,10 +14,10 @@
action=
"https://jsonplaceholder.typicode.com/posts/"
action=
"https://jsonplaceholder.typicode.com/posts/"
:file-list=
"fileList"
:file-list=
"fileList"
:auto-upload=
"false"
:auto-upload=
"false"
:on-change=
"handleChange"
>
:on-change=
"handleChange"
>
<el-button
size=
"small"
type=
"primary"
>
点击上传
</el-button>
<el-button
size=
"small"
type=
"primary"
>
点击上传
</el-button>
</el-upload>
</el-upload>
<!-- 文件夹存放区域start-->
<!-- 文件夹存放区域start-->
<el-tree
<el-tree
...
@@ -74,7 +74,7 @@ export default {
...
@@ -74,7 +74,7 @@ export default {
checkedArr
:[],
checkedArr
:[],
uploadPath
:
''
uploadPath
:
''
}
}
},
},
props
:
{
props
:
{
inputVisibility
:
Boolean
,
inputVisibility
:
Boolean
,
...
@@ -114,8 +114,8 @@ export default {
...
@@ -114,8 +114,8 @@ export default {
});
});
this
.
checkedArr
=
checkArr
;
this
.
checkedArr
=
checkArr
;
console
.
log
(
'当前选择文件===='
,
this
.
checkedArr
);
console
.
log
(
'当前选择文件===='
,
this
.
checkedArr
);
},
},
// 导入资源库
// 导入资源库
imp
(
data
){
imp
(
data
){
...
@@ -124,7 +124,7 @@ export default {
...
@@ -124,7 +124,7 @@ export default {
formData
.
append
(
'data'
,
JSON
.
stringify
(
data
));
formData
.
append
(
'data'
,
JSON
.
stringify
(
data
));
console
.
log
(
'参数=='
,
formData
);
console
.
log
(
'参数=='
,
formData
);
imp
(
formData
).
then
(
res
=>
{
imp
(
formData
).
then
(
res
=>
{
if
(
res
)
{
if
(
res
)
{
this
.
$message
.
success
(
'导入成功!'
);
this
.
$message
.
success
(
'导入成功!'
);
this
.
explorer
(
''
);
//刷新列表
this
.
explorer
(
''
);
//刷新列表
this
.
$emit
(
"update:inputVisibility"
,
false
);
//关闭弹窗
this
.
$emit
(
"update:inputVisibility"
,
false
);
//关闭弹窗
...
@@ -146,7 +146,7 @@ export default {
...
@@ -146,7 +146,7 @@ export default {
this
.
$message
.
error
(
'请先选择要导出文件'
);
this
.
$message
.
error
(
'请先选择要导出文件'
);
}
}
let
data
=
new
FormData
();
let
data
=
new
FormData
();
data
.
append
(
"data"
,
JSON
.
stringify
(
this
.
checkedArr
)
);
data
.
append
(
"data"
,
JSON
.
stringify
(
this
.
checkedArr
)
);
expRespository
(
data
).
then
((
res
)
=>
{
expRespository
(
data
).
then
((
res
)
=>
{
if
(
res
)
{
if
(
res
)
{
...
@@ -159,7 +159,7 @@ export default {
...
@@ -159,7 +159,7 @@ export default {
// document.body.appendChild(link);
// document.body.appendChild(link);
// link.click();
// link.click();
var
url
=
`http://192.168.0.2:9888/ETLWEB-SERVER/etlweb/
attachment/download?filePath=
${
res
.
message
}
&remove=true`
var
url
=
this
.
etlWeb
+
`
attachment/download?filePath=
${
res
.
message
}
&remove=true`
window
.
open
(
url
);
window
.
open
(
url
);
}
else
{
}
else
{
...
@@ -167,7 +167,7 @@ export default {
...
@@ -167,7 +167,7 @@ export default {
}
}
});
});
},
},
handleClose
()
{
handleClose
()
{
this
.
$emit
(
"update:inputVisibility"
,
false
);
this
.
$emit
(
"update:inputVisibility"
,
false
);
},
},
...
@@ -177,9 +177,9 @@ export default {
...
@@ -177,9 +177,9 @@ export default {
// path='H:\\小曾发来的新项目\\kettle\\kettle-webapp\\file_trans1.zip';
// path='H:\\小曾发来的新项目\\kettle\\kettle-webapp\\file_trans1.zip';
path
=
"D:
\\
file
\\
111.zip"
;
path
=
"D:
\\
file
\\
111.zip"
;
this
.
uploadPath
=
path
;
this
.
uploadPath
=
path
;
this
.
Imptree
(
path
);
this
.
Imptree
(
path
);
},
},
// 导入资源库
// 导入资源库
Imptree
(
path
){
Imptree
(
path
){
...
@@ -189,18 +189,18 @@ export default {
...
@@ -189,18 +189,18 @@ export default {
formData
.
append
(
'node'
,
'root'
);
formData
.
append
(
'node'
,
'root'
);
console
.
log
(
'参数=='
,
formData
);
console
.
log
(
'参数=='
,
formData
);
Imptree
(
formData
).
then
(
res
=>
{
Imptree
(
formData
).
then
(
res
=>
{
if
(
res
)
{
if
(
res
)
{
// this.$message.success('成功!');
// this.$message.success('成功!');
this
.
impFileList
=
res
;
this
.
impFileList
=
res
;
}
else
{
}
else
{
this
.
$message
.
error
(
res
.
errMsg
)
this
.
$message
.
error
(
res
.
errMsg
)
}
}
})
})
},
},
},
},
};
};
...
@@ -210,4 +210,4 @@ export default {
...
@@ -210,4 +210,4 @@ export default {
background-color
:
#8888ff
;
background-color
:
#8888ff
;
color
:
#fff
;
color
:
#fff
;
}
}
</
style
>
</
style
>
\ No newline at end of file
src/views/dialogs-components/global/table-list/index.js
0 → 100644
View file @
d5093a79
import
main
from
'./main.vue'
export
default
main
\ No newline at end of file
src/views/dialogs-components/global/table-list/main.vue
0 → 100644
View file @
d5093a79
<
template
>
<div>
<el-table
:data=
"tableData"
style=
"width: 100%"
>
<template
v-for=
"(item,index) in tableHead"
>
<el-table-column
:prop=
"item.column_name"
:label=
"item.column_comment"
:key=
"index"
></el-table-column>
</
template
>
<el-table-column
label=
"操作"
width=
"100px"
>
<
template
slot-scope=
"scope"
>
<el-button
@
click=
"editField(false, scope.row)"
type=
"text"
size=
"small"
>
编辑
</el-button
>
<el-button
type=
"text"
size=
"small"
@
click=
"deletefield(scope.$index, tableData)"
>
删除
</el-button
>
</
template
>
</el-table-column>
</el-table>
</div>
</template>
<
script
>
import
{
getFileexplorer
,
getFilextension
}
from
"@/api/kettle/file"
;
export
default
{
name
:
"table-list"
,
data
()
{
return
{
fieldForm
:
{},
// field: false,
dataState
:
false
,
fieldFormat
:
[],
fieldType
:
[],
// 表头数据
// tableHead2:[
// {
// column_name: "column_name",column_comment:"表字段"
// },
// {
// column_name: "column_age",column_comment:"流字段"
// },
// ],
// // 表格数据
// tableData2: [{
// column_age: '3',
// column_name: '鞠婧祎',
// },
// {
// column_age: '25',
// column_name: '魏大勋',
// },
// {
// column_age: '18',
// column_name: '关晓彤',
// }],
}
},
props
:
{
tableHead
:
Array
,
tableData
:
Array
,
field
:
Boolean
,
fieldClick
:
Function
},
created
()
{
},
methods
:
{
editField
(
state
,
val
)
{
// this.field = !this.field;
this
.
$emit
(
"update:field"
,
true
);
this
.
fieldClick
(
state
,
val
);
// this.dataState = state;
// if (state) {
// this.fieldForm = {};
// } else {
// this.fieldForm = val;
// }
},
// handleClose(){},
deletefield
(
index
,
rows
)
{
rows
.
splice
(
index
,
1
);
},
// 字段
// addField() {
// this.field = !this.field;
// if (this.dataState) {
// this.tableData.push(this.fieldForm);
// } else {
// }
// },
},
};
</
script
>
<
style
>
.type-checked
{
background-color
:
#8888ff
;
color
:
#fff
;
}
</
style
>
\ No newline at end of file
src/views/kettle/home2.vue
View file @
d5093a79
...
@@ -6,7 +6,7 @@
...
@@ -6,7 +6,7 @@
<el-tab-pane
label=
"资源库"
name=
"first"
>
<el-tab-pane
label=
"资源库"
name=
"first"
>
<div
class=
"sel-content"
>
<div
class=
"sel-content"
>
<div
class=
"sel-menu-bar"
>
<div
class=
"sel-menu-bar"
>
<el-dropdown
<el-dropdown
size=
"small"
size=
"small"
placement=
"bottom"
placement=
"bottom"
>
>
...
@@ -14,15 +14,15 @@
...
@@ -14,15 +14,15 @@
新建
新建
<i
class=
"el-icon-caret-bottom el-icon--right"
></i>
<i
class=
"el-icon-caret-bottom el-icon--right"
></i>
</span>
</span>
<el-dropdown-menu
slot=
"dropdown"
>
<el-dropdown-menu
slot=
"dropdown"
>
<el-dropdown-item
command=
"password"
@
click
.
native=
"createTrans()"
>
<el-dropdown-item
command=
"password"
@
click
.
native=
"createTrans()"
>
<template>
<template>
<i
style=
"color:red;font-weight:bold;font-size:15px;"
class=
"el-icon-refresh"
></i>
<i
style=
"color:red;font-weight:bold;font-size:15px;"
class=
"el-icon-refresh"
></i>
新建转换
新建转换
</
template
>
</
template
>
</el-dropdown-item>
</el-dropdown-item>
<el-dropdown-item
command=
"logout"
@
click
.
native=
"createJob()"
>
<el-dropdown-item
command=
"logout"
@
click
.
native=
"createJob()"
>
<
template
>
<
template
>
<i
style=
"color:#F99C1C;font-weight:bold;font-size:15px;"
class=
"el-icon-refresh-left"
></i>
<i
style=
"color:#F99C1C;font-weight:bold;font-size:15px;"
class=
"el-icon-refresh-left"
></i>
新建任务
新建任务
</
template
>
</
template
>
...
@@ -31,14 +31,14 @@
...
@@ -31,14 +31,14 @@
<el-dropdown-item
class=
"text-center"
>
打开
</el-dropdown-item>
<el-dropdown-item
class=
"text-center"
>
打开
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown-menu>
</el-dropdown>
</el-dropdown>
<el-dropdown
<el-dropdown
size=
"small"
size=
"small"
placement=
"bottom"
>
placement=
"bottom"
>
<span
class=
"sel-btn"
>
<span
class=
"sel-btn"
>
资源库管理
资源库管理
<i
class=
"el-icon-caret-bottom el-icon--right"
></i>
<i
class=
"el-icon-caret-bottom el-icon--right"
></i>
</span>
</span>
<el-dropdown-menu
slot=
"dropdown"
>
<el-dropdown-menu
slot=
"dropdown"
>
<el-dropdown-item
@
click
.
native=
"showModalOne()"
>
连接资源库
</el-dropdown-item>
<el-dropdown-item
@
click
.
native=
"showModalOne()"
>
连接资源库
</el-dropdown-item>
<el-dropdown-item
>
管理资源库
</el-dropdown-item>
<el-dropdown-item
>
管理资源库
</el-dropdown-item>
<el-dropdown-item
>
断开资源库
</el-dropdown-item>
<el-dropdown-item
>
断开资源库
</el-dropdown-item>
...
@@ -46,14 +46,14 @@
...
@@ -46,14 +46,14 @@
<el-dropdown-item>
导入资源库
</el-dropdown-item>
<el-dropdown-item>
导入资源库
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown-menu>
</el-dropdown>
</el-dropdown>
<el-dropdown
<el-dropdown
size=
"small"
size=
"small"
placement=
"bottom"
>
placement=
"bottom"
>
<span
class=
"sel-btn"
>
<span
class=
"sel-btn"
>
帮组
帮组
<i
class=
"el-icon-caret-bottom el-icon--right"
></i>
<i
class=
"el-icon-caret-bottom el-icon--right"
></i>
</span>
</span>
<el-dropdown-menu
slot=
"dropdown"
>
<el-dropdown-menu
slot=
"dropdown"
>
<el-dropdown-item>
语言切换
</el-dropdown-item>
<el-dropdown-item>
语言切换
</el-dropdown-item>
<el-dropdown-item
>
关于
</el-dropdown-item>
<el-dropdown-item
>
关于
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown-menu>
...
@@ -71,16 +71,16 @@
...
@@ -71,16 +71,16 @@
:highlight-current=
"true"
:highlight-current=
"true"
@
node-click=
"handleNodeClick"
@
node-click=
"handleNodeClick"
>
>
<span
class=
"custom-tree-node"
slot-scope=
"{ node, data }"
>
<span
class=
"custom-tree-node"
slot-scope=
"{ node, data }"
>
<span
style=
"display:flex;align:center;"
>
<span
style=
"display:flex;align:center;"
>
<div
v-if=
"data.iconCls"
:class=
"data.iconCls"
style=
"display:inline-block;width:20px;height:20px;background-repeat:no-repeat;background-position:center;"
width=
""
alt=
""
></div>
<div
v-if=
"data.iconCls"
:class=
"data.iconCls"
style=
"display:inline-block;width:20px;height:20px;background-repeat:no-repeat;background-position:center;"
width=
""
alt=
""
></div>
{{ node.label }}
{{ node.label }}
</span>
</span>
</span>
</span>
</el-tree>
</el-tree>
<!-- 文件夹存放区域end -->
<!-- 文件夹存放区域end -->
</div>
</div>
</el-tab-pane>
</el-tab-pane>
<el-tab-pane
label=
"核心对象"
name=
"second"
v-if=
"tabShowFlag"
>
<el-tab-pane
label=
"核心对象"
name=
"second"
v-if=
"tabShowFlag"
>
<div
class=
"sel-content"
>
<div
class=
"sel-content"
>
...
@@ -88,21 +88,21 @@
...
@@ -88,21 +88,21 @@
<nodeMenu2
@
shooStatus=
"shooStatus"
></nodeMenu2>
<nodeMenu2
@
shooStatus=
"shooStatus"
></nodeMenu2>
</div>
</div>
</el-tab-pane>
</el-tab-pane>
</el-tabs>
</el-tabs>
</div>
</div>
<div
class=
"resize"
title=
"收缩侧边栏"
>
...
</div>
<div
class=
"resize"
title=
"收缩侧边栏"
>
...
</div>
<div
class=
"mid"
>
<div
class=
"mid"
>
<el-tabs
v-if=
"tabShowFlag"
style=
"margin-top:-5vh;margin-bottom:0;"
v-model=
"picName"
type=
"card"
closable
@
tab-remove=
"removeTab"
>
<el-tabs
v-if=
"tabShowFlag"
style=
"margin-top:-5vh;margin-bottom:0;"
v-model=
"picName"
type=
"card"
closable
@
tab-remove=
"removeTab"
>
<el-tab-pane
label=
"数据库名称"
>
<el-tab-pane
label=
"数据库名称"
>
<mxgraph-designer
ref=
"pic"
v-if=
"mxGraphShow"
:blankCanvas=
"blankCanvas"
></mxgraph-designer>
<mxgraph-designer
ref=
"pic"
v-if=
"mxGraphShow"
:blankCanvas=
"blankCanvas"
></mxgraph-designer>
</el-tab-pane>
</el-tab-pane>
</el-tabs>
</el-tabs>
</div>
</div>
<!-- 弹窗1start -->
<!-- 弹窗1start -->
<el-dialog
<el-dialog
...
@@ -160,7 +160,7 @@
...
@@ -160,7 +160,7 @@
<li
class=
"btn"
@
mouseenter=
"typeHoverIdx = idx"
@
mouseleave=
"typeHoverIdx = -1"
@
click=
"typeCheckedIdx=idx"
:class=
"{'hover': typeHoverIdx == idx,'checked': typeCheckedIdx == idx}"
v-for=
"(item,idx) in typesList"
:key=
"idx"
>
<li
class=
"btn"
@
mouseenter=
"typeHoverIdx = idx"
@
mouseleave=
"typeHoverIdx = -1"
@
click=
"typeCheckedIdx=idx"
:class=
"{'hover': typeHoverIdx == idx,'checked': typeCheckedIdx == idx}"
v-for=
"(item,idx) in typesList"
:key=
"idx"
>
{{ item.type }}:{{ item.name }}
{{ item.type }}:{{ item.name }}
</li>
</li>
</ul>
</ul>
</div>
</div>
...
@@ -205,16 +205,16 @@
...
@@ -205,16 +205,16 @@
<el-button
type=
"primary"
@
click=
"repositoryInfoConfirm('repositoryInfoForm')"
>
确 定
</el-button>
<el-button
type=
"primary"
@
click=
"repositoryInfoConfirm('repositoryInfoForm')"
>
确 定
</el-button>
<el-button
@
click=
"createOrUpdate"
>
创建或更新
</el-button>
<el-button
@
click=
"createOrUpdate"
>
创建或更新
</el-button>
<el-button
@
click=
"dialogVisibleRemind = true"
>
删 除
</el-button>
<el-button
@
click=
"dialogVisibleRemind = true"
>
删 除
</el-button>
<el-button
@
click=
"dialogVisibleThree = false"
>
取 消
</el-button>
<el-button
@
click=
"dialogVisibleThree = false"
>
取 消
</el-button>
<!-- <el-button type="primary" @click="dialogVisibleTwo = false">确 定</el-button> -->
<!-- <el-button type="primary" @click="dialogVisibleTwo = false">确 定</el-button> -->
</span>
</span>
</el-dialog>
</el-dialog>
<!-- 弹窗3end -->
<!-- 弹窗3end -->
<!-- 弹窗4start -->
<!-- 弹窗4start -->
<estab-dialog
ref=
"establishDia"
:dialogVisibleFourth
.
sync=
'dialogVisibleFourth'
@
getSonValue=
"getSonValue"
:listNames=
"listNames"
></estab-dialog>
<estab-dialog
ref=
"establishDia"
:dialogVisibleFourth
.
sync=
'dialogVisibleFourth'
@
getSonValue=
"getSonValue"
:listNames=
"listNames"
></estab-dialog>
<!-- 弹窗5start -->
<!-- 弹窗5start -->
...
@@ -233,10 +233,10 @@
...
@@ -233,10 +233,10 @@
</span>
</span>
</div>
</div>
</el-form-item>
</el-form-item>
<el-form-item
label=
"只读资源库?:"
prop=
"checkPass"
>
<el-form-item
label=
"只读资源库?:"
prop=
"checkPass"
>
<el-checkbox
></el-checkbox>
<el-checkbox
></el-checkbox>
</el-form-item>
</el-form-item>
<el-form-item
label=
"不显示隐藏文件:"
prop=
"checkPass"
>
<el-form-item
label=
"不显示隐藏文件:"
prop=
"checkPass"
>
<el-checkbox
></el-checkbox>
<el-checkbox
></el-checkbox>
...
@@ -252,7 +252,7 @@
...
@@ -252,7 +252,7 @@
</el-form>
</el-form>
<span
slot=
"footer"
class=
"dialog-footer"
>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"closeFileModal()"
>
取 消
</el-button>
<el-button
@
click=
"closeFileModal()"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"FileModal = false"
>
确 定
</el-button>
<el-button
type=
"primary"
@
click=
"FileModal = false"
>
确 定
</el-button>
</span>
</span>
</el-dialog>
</el-dialog>
<!-- 弹窗5end -->
<!-- 弹窗5end -->
...
@@ -277,28 +277,28 @@
...
@@ -277,28 +277,28 @@
ref="tree"
ref="tree"
:props="defaultProps"
:props="defaultProps"
:highlight-current="true"> -->
:highlight-current="true"> -->
<!-- el-icon-folder -->
<!-- el-icon-folder -->
<!-- <span class="custom-tree-node" slot-scope="{node,data}">
<!-- <span class="custom-tree-node" slot-scope="{node,data}">
<span>
<span>
<i :class="data.icon"></i>{{ node.label }}
<i :class="data.icon"></i>{{ node.label }}
</span>
</span>
</span> -->
</span> -->
<!-- <span class="custom-tree-node" slot-scope="{node,data}">
<!-- <span class="custom-tree-node" slot-scope="{node,data}">
<span>
<span>
<i class="el-icon-folder"></i>{{ node.label }}
<i class="el-icon-folder"></i>{{ node.label }}
</span>
</span>
</span>
</span>
</el-tree> -->
</el-tree> -->
<!-- 文件夹存放区域end -->
<!-- 文件夹存放区域end -->
</div>
</div>
<span
slot=
"footer"
class=
"dialog-footer"
style=
"display:flex;"
>
<span
slot=
"footer"
class=
"dialog-footer"
style=
"display:flex;"
>
<el-select
style=
"flex:1;margin-right:25px;"
v-model=
"ruleForm.region"
placeholder=
"请选择选择数据库连接"
>
<el-select
style=
"flex:1;margin-right:25px;"
v-model=
"ruleForm.region"
placeholder=
"请选择选择数据库连接"
>
...
@@ -306,7 +306,7 @@
...
@@ -306,7 +306,7 @@
<el-option
label=
"区域二"
value=
"beijing"
></el-option>
<el-option
label=
"区域二"
value=
"beijing"
></el-option>
</el-select>
</el-select>
<el-button
@
click=
"FileModalScan = false"
>
取 消
</el-button>
<el-button
@
click=
"FileModalScan = false"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"FileModalScan = false"
>
确 定
</el-button>
<el-button
type=
"primary"
@
click=
"FileModalScan = false"
>
确 定
</el-button>
</span>
</span>
</el-dialog>
</el-dialog>
<!-- 弹窗6end -->
<!-- 弹窗6end -->
...
@@ -373,7 +373,7 @@ export default {
...
@@ -373,7 +373,7 @@ export default {
feature
,
//特征列表
feature
,
//特征列表
establishDialog
,
establishDialog
,
// Establish,//新建转换,新建作业,新建目录弹窗
// Establish,//新建转换,新建作业,新建目录弹窗
},
},
props
:
[
"dragItem"
],
props
:
[
"dragItem"
],
...
@@ -381,7 +381,7 @@ props: ["dragItem"],
...
@@ -381,7 +381,7 @@ props: ["dragItem"],
return
{
return
{
blankCanvas
:
""
,
//空白画布xml
blankCanvas
:
""
,
//空白画布xml
graph
:
null
,
graph
:
null
,
flowData
:[],
flowData
:[],
exportDialogVisible
:
false
,
//导出资源库弹窗
exportDialogVisible
:
false
,
//导出资源库弹窗
curDataBase
:
null
,
//当前选择的资源库
curDataBase
:
null
,
//当前选择的资源库
...
@@ -391,7 +391,7 @@ props: ["dragItem"],
...
@@ -391,7 +391,7 @@ props: ["dragItem"],
estabTitle
:
'转换'
,
//新建转换弹窗提示
estabTitle
:
'转换'
,
//新建转换弹窗提示
featureDialogVisible
:
false
,
//特征列表弹窗
featureDialogVisible
:
false
,
//特征列表弹窗
scanDialogVisible
:
false
,
//浏览弹窗
scanDialogVisible
:
false
,
//浏览弹窗
prefix
:
'http://192.168.0.2:9700/etlweb/'
,
prefix
:
this
.
etlWeb
,
inputValue
:
''
,
// 密码
inputValue
:
''
,
// 密码
// dropFunction,//删除数据库表
// dropFunction,//删除数据库表
deleteLink
,
//删除资源库模块的方法
deleteLink
,
//删除资源库模块的方法
...
@@ -473,7 +473,7 @@ props: ["dragItem"],
...
@@ -473,7 +473,7 @@ props: ["dragItem"],
// logLevel:[
// logLevel:[
// {required:true,message:'请选择日志级别',trigger:'change'}
// {required:true,message:'请选择日志级别',trigger:'change'}
// ],
// ],
},
},
checkModel
:[],
checkModel
:[],
visible
:
true
,
visible
:
true
,
...
@@ -532,7 +532,7 @@ props: ["dragItem"],
...
@@ -532,7 +532,7 @@ props: ["dragItem"],
fileTreeList
:[
fileTreeList
:[
{
iconCls
:
"imageFolder"
,
{
iconCls
:
"imageFolder"
,
path
:
"/"
,
path
:
"/"
,
childen
:[]},
childen
:[]},
// {
// {
// "id":"f1e1928d205b49a8b4ceda97d51074c1",
// "id":"f1e1928d205b49a8b4ceda97d51074c1",
// "text":"45",
// "text":"45",
...
@@ -610,7 +610,7 @@ props: ["dragItem"],
...
@@ -610,7 +610,7 @@ props: ["dragItem"],
childenTreeList
:[],
childenTreeList
:[],
// defaultProps: {
// defaultProps: {
// label: 'path',
// label: 'path',
// children: 'children',
// children: 'children',
// },
// },
defaultProps
:
{
defaultProps
:
{
label
:
"text"
,
label
:
"text"
,
...
@@ -630,8 +630,8 @@ props: ["dragItem"],
...
@@ -630,8 +630,8 @@ props: ["dragItem"],
dialogVisibleThree
:
false
,
//资源库信息弹窗
dialogVisibleThree
:
false
,
//资源库信息弹窗
dialogVisibleFourth
:
false
,
dialogVisibleFourth
:
false
,
// linkType:[
// linkType:[
// {value: 0, text: '一般'},
// {value: 0, text: '一般'},
// {value: 1, text: '高级'},
// {value: 1, text: '高级'},
// {value: 2, text: '选项'},
// {value: 2, text: '选项'},
// {value: 3, text: '连接池'},
// {value: 3, text: '连接池'},
// {value: 4, text: '集群'}
// {value: 4, text: '集群'}
...
@@ -647,30 +647,30 @@ props: ["dragItem"],
...
@@ -647,30 +647,30 @@ props: ["dragItem"],
mounted
()
{
mounted
()
{
this
.
dragControllerDiv
();
//左右窗体调整宽度
this
.
dragControllerDiv
();
//左右窗体调整宽度
// this.treeRevert(this.jobTreeList);
// this.treeRevert(this.jobTreeList);
// this.accessData();//页面一加载就获取连接类型
// this.accessData();//页面一加载就获取连接类型
this
.
explorer
(
''
);
//获取文件夹列表
this
.
explorer
(
''
);
//获取文件夹列表
// console.log(this.$refs.establishDia.linkType,'55555555555555555')
// console.log(this.$refs.establishDia.linkType,'55555555555555555')
// this.$nextTick(function () {
// this.$nextTick(function () {
// console.log(this.$refs.establishDia,'========')
// console.log(this.$refs.establishDia,'========')
// // this.$refs.establishDia.accessData();//页面一加载就获取连接类型
// // this.$refs.establishDia.accessData();//页面一加载就获取连接类型
// this.$refs.establishDia.accessData();//页面一加载就获取连接类型
// this.$refs.establishDia.accessData();//页面一加载就获取连接类型
// })
// })
// this.dialogVisibleFourth=true
// this.dialogVisibleFourth=true
// this.$refs.scanDialog.dataBaseScan(formData);
// this.$refs.scanDialog.dataBaseScan(formData);
},
},
methods
:
{
methods
:
{
...
@@ -679,15 +679,15 @@ props: ["dragItem"],
...
@@ -679,15 +679,15 @@ props: ["dragItem"],
//接收子组件显示画布
//接收子组件显示画布
shooStatus
(
e
){
shooStatus
(
e
){
console
.
log
(
e
,
'接收子组件显示画布'
)
console
.
log
(
e
,
'接收子组件显示画布'
)
this
.
$nextTick
(()
=>
{
this
.
$nextTick
(()
=>
{
this
.
mxGraphShow
=
e
this
.
mxGraphShow
=
e
})
})
},
},
...
@@ -699,11 +699,11 @@ props: ["dragItem"],
...
@@ -699,11 +699,11 @@ props: ["dragItem"],
formData
.
append
(
'path'
,
path
);
formData
.
append
(
'path'
,
path
);
formData
.
append
(
'node'
,
'xnode-14'
);
formData
.
append
(
'node'
,
'xnode-14'
);
this
.
$forceUpdate
();
this
.
$forceUpdate
();
explorer
(
formData
).
then
(
res
=>
{
explorer
(
formData
).
then
(
res
=>
{
if
(
res
)
{
if
(
res
)
{
if
(
path
==
''
){
if
(
path
==
''
){
console
.
log
(
'点击当前path=='
,
path
);
console
.
log
(
'点击当前path=='
,
path
);
this
.
fileTreeList
=
res
;
this
.
fileTreeList
=
res
;
// this.fileTreeList=JSON.stringify(this.fileTreeList);
// this.fileTreeList=JSON.stringify(this.fileTreeList);
}
else
{
}
else
{
...
@@ -711,17 +711,17 @@ props: ["dragItem"],
...
@@ -711,17 +711,17 @@ props: ["dragItem"],
this
.
childenTreeList
=
res
;
this
.
childenTreeList
=
res
;
console
.
log
(
'子节点2path=='
,
this
.
childenTreeList
);
console
.
log
(
'子节点2path=='
,
this
.
childenTreeList
);
}
}
}
else
{
}
else
{
this
.
$message
.
error
(
res
.
errMsg
)
this
.
$message
.
error
(
res
.
errMsg
)
}
}
})
})
},
},
// 左边文件夹和右边画布的宽度可以拖拽调整
// 左边文件夹和右边画布的宽度可以拖拽调整
dragControllerDiv
:
function
()
{
dragControllerDiv
:
function
()
{
var
resize
=
document
.
getElementsByClassName
(
'resize'
);
var
resize
=
document
.
getElementsByClassName
(
'resize'
);
...
@@ -772,7 +772,7 @@ props: ["dragItem"],
...
@@ -772,7 +772,7 @@ props: ["dragItem"],
return
{...
pre
,
[
cur
[
'id'
]]:
cur
}
return
{...
pre
,
[
cur
[
'id'
]]:
cur
}
},
{});
},
{});
console
.
log
(
formatObj
);
console
.
log
(
formatObj
);
let
formatArray
=
arrayList
.
reduce
((
arr
,
cur
)
=>
{
let
formatArray
=
arrayList
.
reduce
((
arr
,
cur
)
=>
{
// let pid = cur.pid ? cur.pid : 0;
// let pid = cur.pid ? cur.pid : 0;
let
pid
=
cur
.
parent
?
cur
.
parent
:
0
;
let
pid
=
cur
.
parent
?
cur
.
parent
:
0
;
...
@@ -786,11 +786,11 @@ props: ["dragItem"],
...
@@ -786,11 +786,11 @@ props: ["dragItem"],
return
arr
;
return
arr
;
},
[]);
},
[]);
console
.
log
(
'树形数据============='
,
formatArray
);
console
.
log
(
'树形数据============='
,
formatArray
);
// this.jobTreeList=formatArray;
// this.jobTreeList=formatArray;
},
},
// 打开关闭弹窗
// 打开关闭弹窗
showModalOne
(){
showModalOne
(){
console
.
log
(
'打卡资源库连接:'
);
console
.
log
(
'打卡资源库连接:'
);
...
@@ -802,7 +802,7 @@ props: ["dragItem"],
...
@@ -802,7 +802,7 @@ props: ["dragItem"],
this
.
listHoverIdx
=-
1
;
//清空当前鼠标移动到的数据
this
.
listHoverIdx
=-
1
;
//清空当前鼠标移动到的数据
this
.
listCheckedIdx
=-
2
;
//清空当前鼠标选中的数据
this
.
listCheckedIdx
=-
2
;
//清空当前鼠标选中的数据
},
},
showModalTwo
(){
showModalTwo
(){
this
.
dialogVisibleTwo
=
true
;
this
.
dialogVisibleTwo
=
true
;
this
.
types
();
this
.
types
();
...
@@ -810,7 +810,7 @@ props: ["dragItem"],
...
@@ -810,7 +810,7 @@ props: ["dragItem"],
handleCloseTwo
(){
handleCloseTwo
(){
this
.
dialogVisibleTwo
=
false
;
this
.
dialogVisibleTwo
=
false
;
},
},
showModalThree
(
typeCheckedIdx
){
showModalThree
(
typeCheckedIdx
){
console
.
log
(
'当前点击---'
,
typeCheckedIdx
);
console
.
log
(
'当前点击---'
,
typeCheckedIdx
);
if
(
typeCheckedIdx
==
0
){
if
(
typeCheckedIdx
==
0
){
...
@@ -819,7 +819,7 @@ props: ["dragItem"],
...
@@ -819,7 +819,7 @@ props: ["dragItem"],
if
(
typeCheckedIdx
==
1
){
if
(
typeCheckedIdx
==
1
){
this
.
FileModal
=
true
;
this
.
FileModal
=
true
;
}
}
},
},
handleCloseThree
(){
handleCloseThree
(){
this
.
dialogVisibleThree
=
false
;
this
.
dialogVisibleThree
=
false
;
...
@@ -829,11 +829,11 @@ props: ["dragItem"],
...
@@ -829,11 +829,11 @@ props: ["dragItem"],
this
.
dialogVisibleFourth
=
true
;
this
.
dialogVisibleFourth
=
true
;
this
.
$refs
.
establishDia
.
database
();
this
.
$refs
.
establishDia
.
database
();
// this.accessData();//获取连接类型
// this.accessData();//获取连接类型
this
.
$refs
.
establishDia
.
accessMethod
();
//获取连接方式
this
.
$refs
.
establishDia
.
accessMethod
();
//获取连接方式
// console.log('this.methodHoverIdx==',this.methodHoverIdx);
// console.log('this.methodHoverIdx==',this.methodHoverIdx);
// console.log('this.methodCheckedIdx==',this.methodCheckedIdx);
// console.log('this.methodCheckedIdx==',this.methodCheckedIdx);
},
},
//获取新建弹窗返回来的值
//获取新建弹窗返回来的值
getSonValue
(
res
){
getSonValue
(
res
){
...
@@ -852,7 +852,7 @@ props: ["dragItem"],
...
@@ -852,7 +852,7 @@ props: ["dragItem"],
// this.methodCheckedIdx=0;//关闭弹窗后初始化选择oracle数据对应第一条
// this.methodCheckedIdx=0;//关闭弹窗后初始化选择oracle数据对应第一条
// this.addFlag=true;//增减变量改为编辑变量
// this.addFlag=true;//增减变量改为编辑变量
// },
// },
closeFileModal
(){
closeFileModal
(){
this
.
FileModal
=
false
;
this
.
FileModal
=
false
;
},
},
...
@@ -868,7 +868,7 @@ props: ["dragItem"],
...
@@ -868,7 +868,7 @@ props: ["dragItem"],
// 获取资源库连接类型
// 获取资源库连接类型
types
(){
types
(){
types
().
then
(
res
=>
{
types
().
then
(
res
=>
{
if
(
res
)
{
if
(
res
)
{
console
.
log
(
'获取类型成功!'
);
console
.
log
(
'获取类型成功!'
);
this
.
typesList
=
res
;
this
.
typesList
=
res
;
}
else
{
}
else
{
...
@@ -879,7 +879,7 @@ props: ["dragItem"],
...
@@ -879,7 +879,7 @@ props: ["dragItem"],
// 获取历史建立的连接资源库列表
// 获取历史建立的连接资源库列表
getLinkList
(){
getLinkList
(){
getLinkList
().
then
(
res
=>
{
getLinkList
().
then
(
res
=>
{
if
(
res
)
{
if
(
res
)
{
console
.
log
(
'获取历史连接资源库列表:'
);
console
.
log
(
'获取历史连接资源库列表:'
);
this
.
linkList
=
res
;
this
.
linkList
=
res
;
}
else
{
}
else
{
...
@@ -892,7 +892,7 @@ props: ["dragItem"],
...
@@ -892,7 +892,7 @@ props: ["dragItem"],
comfirmCreate
(
formName
){
comfirmCreate
(
formName
){
this
.
$refs
[
formName
].
validate
((
valid
)
=>
{
this
.
$refs
[
formName
].
validate
((
valid
)
=>
{
if
(
valid
)
{
if
(
valid
)
{
// JSON对象转成formData对象
// JSON对象转成formData对象
var
params
=
this
.
createModel
;
var
params
=
this
.
createModel
;
// 由于高级选项连接池集群页面没有画完,保存默认参数
// 由于高级选项连接池集群页面没有画完,保存默认参数
...
@@ -921,24 +921,24 @@ props: ["dragItem"],
...
@@ -921,24 +921,24 @@ props: ["dragItem"],
this
.
dialogVisibleFourth
=
false
;
//关闭弹窗
this
.
dialogVisibleFourth
=
false
;
//关闭弹窗
this
.
linkCheckedIdx
=
this
.
initlinkTypeIdx
;
//关闭弹窗后初始化选择的数据
this
.
linkCheckedIdx
=
this
.
initlinkTypeIdx
;
//关闭弹窗后初始化选择的数据
this
.
listNames
();
//刷新已经创建的数据库列表
this
.
listNames
();
//刷新已经创建的数据库列表
}
else
{
}
else
{
this
.
$message
.
error
(
res
.
message
)
this
.
$message
.
error
(
res
.
message
)
}
}
})
})
}
else
{
}
else
{
this
.
$message
.
error
(
res
.
message
)
this
.
$message
.
error
(
res
.
message
)
}
}
})
})
}
}
});
});
},
},
//查询已经建立的所有数据库列表
//查询已经建立的所有数据库列表
listNames
(){
listNames
(){
listNames
().
then
(
res
=>
{
listNames
().
then
(
res
=>
{
if
(
res
)
{
if
(
res
)
{
console
.
log
(
'获取所有已经创建的数据库列表:'
,
res
);
console
.
log
(
'获取所有已经创建的数据库列表:'
,
res
);
this
.
namesList
=
res
;
this
.
namesList
=
res
;
}
else
{
}
else
{
...
@@ -947,7 +947,7 @@ props: ["dragItem"],
...
@@ -947,7 +947,7 @@ props: ["dragItem"],
})
})
},
},
//选择数据库编辑
//选择数据库编辑
selectNameFunc
(
e
){
selectNameFunc
(
e
){
console
.
log
(
'当前选中的数'
,
e
);
console
.
log
(
'当前选中的数'
,
e
);
console
.
log
(
'当前选中的数-==='
,
this
.
selectName
);
console
.
log
(
'当前选中的数-==='
,
this
.
selectName
);
},
},
...
@@ -957,30 +957,30 @@ props: ["dragItem"],
...
@@ -957,30 +957,30 @@ props: ["dragItem"],
},
},
editDataBaseModal
(){
editDataBaseModal
(){
if
(
this
.
selectName
){
if
(
this
.
selectName
){
this
.
dialogVisibleFourth
=
true
;
this
.
dialogVisibleFourth
=
true
;
// this.addFlag=false;//增减变量改为编辑变量
// this.addFlag=false;//增减变量改为编辑变量
}
}
this
.
$refs
.
establishDia
.
database
(
this
.
selectName
);
this
.
$refs
.
establishDia
.
database
(
this
.
selectName
);
this
.
$refs
.
establishDia
.
accessMethod
();
//获取连接方式
this
.
$refs
.
establishDia
.
accessMethod
();
//获取连接方式
// console.log('this.methodHoverIdx==',this.methodHoverIdx);
// console.log('this.methodHoverIdx==',this.methodHoverIdx);
// console.log('this.methodCheckedIdx==',this.methodCheckedIdx);
// console.log('this.methodCheckedIdx==',this.methodCheckedIdx);
},
},
// 资源库连接
// 资源库连接
loginRepository
(
formName
){
loginRepository
(
formName
){
console
.
log
(
'进入登录=========='
);
console
.
log
(
'进入登录=========='
);
this
.
$refs
[
formName
].
validate
((
valid
)
=>
{
this
.
$refs
[
formName
].
validate
((
valid
)
=>
{
if
(
valid
)
{
if
(
valid
)
{
// JSON对象转成formData对象
// JSON对象转成formData对象
var
params
=
this
.
loginModel
;
var
params
=
this
.
loginModel
;
params
.
atStartupShown
=
false
;
//在启动时显示此对话框默认为 false
params
.
atStartupShown
=
false
;
//在启动时显示此对话框默认为 false
console
.
log
(
'登录提交参数=='
,
params
);
console
.
log
(
'登录提交参数=='
,
params
);
var
formData
=
new
FormData
();
var
formData
=
new
FormData
();
formData
.
append
(
'loginInfo'
,
JSON
.
stringify
(
params
));
formData
.
append
(
'loginInfo'
,
JSON
.
stringify
(
params
));
console
.
log
(
'提交转换数据:'
,
formData
);
console
.
log
(
'提交转换数据:'
,
formData
);
loginRepository
(
formData
).
then
(
res
=>
{
loginRepository
(
formData
).
then
(
res
=>
{
console
.
log
(
'返回数据:'
,
res
);
console
.
log
(
'返回数据:'
,
res
);
...
@@ -988,13 +988,13 @@ props: ["dragItem"],
...
@@ -988,13 +988,13 @@ props: ["dragItem"],
this
.
$message
.
success
(
'连接成功!'
);
this
.
$message
.
success
(
'连接成功!'
);
this
.
explorer
(
''
);
this
.
explorer
(
''
);
this
.
handleCloseOne
();
//关闭弹窗
this
.
handleCloseOne
();
//关闭弹窗
// this.linkCheckedIdx=this.initlinkTypeIdx;//关闭弹窗后初始化选择的数据
// this.linkCheckedIdx=this.initlinkTypeIdx;//关闭弹窗后初始化选择的数据
}
else
{
}
else
{
this
.
$message
.
error
(
res
.
errMsg
)
this
.
$message
.
error
(
res
.
errMsg
)
}
}
})
})
}
else
{
}
else
{
console
.
log
(
'error submit!!'
);
console
.
log
(
'error submit!!'
);
return
false
;
return
false
;
...
@@ -1037,7 +1037,7 @@ props: ["dragItem"],
...
@@ -1037,7 +1037,7 @@ props: ["dragItem"],
// 资源库信息确定新建
// 资源库信息确定新建
repositoryInfoConfirm
(
formName
){
repositoryInfoConfirm
(
formName
){
this
.
$refs
[
formName
].
validate
((
valid
)
=>
{
this
.
$refs
[
formName
].
validate
((
valid
)
=>
{
if
(
valid
)
{
if
(
valid
)
{
// JSON对象转成formData对象
// JSON对象转成formData对象
var
params
=
this
.
repositoryInfoModel
;
var
params
=
this
.
repositoryInfoModel
;
params
.
type
=
'KettleDatabaseRepository'
;
//写死
params
.
type
=
'KettleDatabaseRepository'
;
//写死
...
@@ -1051,7 +1051,7 @@ props: ["dragItem"],
...
@@ -1051,7 +1051,7 @@ props: ["dragItem"],
console
.
log
(
'提交数据:'
,
res
);
console
.
log
(
'提交数据:'
,
res
);
if
(
res
.
success
)
{
if
(
res
.
success
)
{
this
.
$message
.
success
(
'成功!'
);
this
.
$message
.
success
(
'成功!'
);
this
.
handleCloseThree
();
// 关闭弹窗1
this
.
handleCloseThree
();
// 关闭弹窗1
this
.
handleCloseTwo
();
//关闭弹窗2
this
.
handleCloseTwo
();
//关闭弹窗2
this
.
getLinkList
();
//刷新列表
this
.
getLinkList
();
//刷新列表
...
@@ -1062,7 +1062,7 @@ props: ["dragItem"],
...
@@ -1062,7 +1062,7 @@ props: ["dragItem"],
this
.
$message
.
error
(
res
.
errMsg
)
this
.
$message
.
error
(
res
.
errMsg
)
}
}
})
})
}
else
{
}
else
{
console
.
log
(
'error submit!!'
);
console
.
log
(
'error submit!!'
);
return
false
;
return
false
;
...
@@ -1111,7 +1111,7 @@ props: ["dragItem"],
...
@@ -1111,7 +1111,7 @@ props: ["dragItem"],
var
formData
=
new
FormData
();
var
formData
=
new
FormData
();
formData
.
append
(
'databaseInfo'
,
JSON
.
stringify
(
params
));
formData
.
append
(
'databaseInfo'
,
JSON
.
stringify
(
params
));
console
.
log
(
'表单提交参数=='
,
params
);
console
.
log
(
'表单提交参数=='
,
params
);
this
.
$refs
.
feature
.
feature
(
formData
);
this
.
$refs
.
feature
.
feature
(
formData
);
this
.
featureDialogVisible
=
true
;
this
.
featureDialogVisible
=
true
;
},
},
...
@@ -1150,7 +1150,7 @@ props: ["dragItem"],
...
@@ -1150,7 +1150,7 @@ props: ["dragItem"],
// formData.append('nodeId', '');
// formData.append('nodeId', '');
// formData.append('text', 'root');
// formData.append('text', 'root');
// formData.append('node', 'xnode-2984');
// formData.append('node', 'xnode-2984');
this
.
$refs
.
scanDialog
.
dataBaseScan
(
formData
);
this
.
$refs
.
scanDialog
.
dataBaseScan
(
formData
);
this
.
scanDialogVisible
=
true
;
this
.
scanDialogVisible
=
true
;
},
},
...
@@ -1160,7 +1160,7 @@ props: ["dragItem"],
...
@@ -1160,7 +1160,7 @@ props: ["dragItem"],
formData
.
append
(
'repositoryName'
,
this
.
loginModel
.
reposityId
);
formData
.
append
(
'repositoryName'
,
this
.
loginModel
.
reposityId
);
console
.
log
(
'参数=='
,
formData
);
console
.
log
(
'参数=='
,
formData
);
remove
(
formData
).
then
(
res
=>
{
remove
(
formData
).
then
(
res
=>
{
if
(
res
)
{
if
(
res
)
{
this
.
$message
.
success
(
'成功!'
);
this
.
$message
.
success
(
'成功!'
);
this
.
getLinkList
();
//打开资源库连接弹窗同时获取历史连接记录
this
.
getLinkList
();
//打开资源库连接弹窗同时获取历史连接记录
...
@@ -1176,7 +1176,7 @@ props: ["dragItem"],
...
@@ -1176,7 +1176,7 @@ props: ["dragItem"],
this
.
estabTitle
=
'转换'
;
this
.
estabTitle
=
'转换'
;
}
else
{
}
else
{
this
.
$message
.
error
(
'请选择资源库中的一个目录'
);
this
.
$message
.
error
(
'请选择资源库中的一个目录'
);
}
}
},
},
// 新建任务
// 新建任务
createJob
(){
createJob
(){
...
@@ -1185,8 +1185,8 @@ props: ["dragItem"],
...
@@ -1185,8 +1185,8 @@ props: ["dragItem"],
this
.
estabTitle
=
'任务'
;
this
.
estabTitle
=
'任务'
;
}
else
{
}
else
{
this
.
$message
.
error
(
'请选择资源库中的一个目录'
);
this
.
$message
.
error
(
'请选择资源库中的一个目录'
);
}
}
},
},
// 新建目录
// 新建目录
createFile
(){
createFile
(){
...
@@ -1195,8 +1195,8 @@ props: ["dragItem"],
...
@@ -1195,8 +1195,8 @@ props: ["dragItem"],
this
.
estabTitle
=
'目录'
;
this
.
estabTitle
=
'目录'
;
}
else
{
}
else
{
this
.
$message
.
error
(
'请选择资源库中的一个目录'
);
this
.
$message
.
error
(
'请选择资源库中的一个目录'
);
}
}
},
},
handleNodeClick
(
data
,
node
){
handleNodeClick
(
data
,
node
){
console
.
log
(
'点击当前节点==='
,
node
);
console
.
log
(
'点击当前节点==='
,
node
);
...
@@ -1219,20 +1219,20 @@ props: ["dragItem"],
...
@@ -1219,20 +1219,20 @@ props: ["dragItem"],
// decoder.decode(node, graph.getModel());
// decoder.decode(node, graph.getModel());
// console.log(esponse.responseText);
// console.log(esponse.responseText);
})
})
},
},
//修改资源库
//修改资源库
editDataBase
(){
editDataBase
(){
if
(
this
.
curDataBase
){
if
(
this
.
curDataBase
){
this
.
repositoryInfoModel
.
name
=
this
.
curDataBase
.
name
;
this
.
repositoryInfoModel
.
name
=
this
.
curDataBase
.
name
;
this
.
repositoryInfoModel
.
description
=
this
.
curDataBase
.
description
;
this
.
repositoryInfoModel
.
description
=
this
.
curDataBase
.
description
;
this
.
selectName
=
this
.
curDataBase
.
extraOptions
.
database
;
this
.
selectName
=
this
.
curDataBase
.
extraOptions
.
database
;
this
.
dialogVisibleThree
=
true
;
this
.
dialogVisibleThree
=
true
;
}
else
{
}
else
{
this
.
$message
.
error
(
'请选择一个资源库'
);
this
.
$message
.
error
(
'请选择一个资源库'
);
}
}
...
@@ -1243,7 +1243,7 @@ props: ["dragItem"],
...
@@ -1243,7 +1243,7 @@ props: ["dragItem"],
formData
.
append
(
'connection'
,
this
.
selectName
);
formData
.
append
(
'connection'
,
this
.
selectName
);
console
.
log
(
'参数=='
,
formData
);
console
.
log
(
'参数=='
,
formData
);
checkInit
(
formData
).
then
(
res
=>
{
checkInit
(
formData
).
then
(
res
=>
{
if
(
res
)
{
if
(
res
)
{
this
.
$message
.
success
(
'成功!'
);
this
.
$message
.
success
(
'成功!'
);
// this.getLinkList();//打开资源库连接弹窗同时获取历史连接记录
// this.getLinkList();//打开资源库连接弹窗同时获取历史连接记录
...
@@ -1259,12 +1259,12 @@ props: ["dragItem"],
...
@@ -1259,12 +1259,12 @@ props: ["dragItem"],
}
}
}
}
};
};
</
script
>
</
script
>
...
@@ -1272,4 +1272,4 @@ props: ["dragItem"],
...
@@ -1272,4 +1272,4 @@ props: ["dragItem"],
<
style
>
<
style
>
@import
url(./kettle.css)
;
@import
url(./kettle.css)
;
</
style
>
</
style
>
\ No newline at end of file
src/views/kettle/toolbar.js
View file @
d5093a79
...
@@ -2,7 +2,7 @@ import mxgraph from './mx.js'
...
@@ -2,7 +2,7 @@ import mxgraph from './mx.js'
import
{
steps
}
from
'@/api/kettle/link'
import
{
steps
}
from
'@/api/kettle/link'
const
MxConstants
=
mxgraph
.
mxConstants
const
MxConstants
=
mxgraph
.
mxConstants
const
prefix
=
'192.168.0.2:9700/etlweb/'
const
prefix
=
this
.
etlWeb
const
bar
=
[]
const
bar
=
[]
const
pamer
=
new
FormData
()
// 创建form对象
const
pamer
=
new
FormData
()
// 创建form对象
...
...
src/views/output-dialog/table-out.vue
View file @
d5093a79
...
@@ -132,16 +132,58 @@
...
@@ -132,16 +132,58 @@
<el-tab-pane
label=
"数据库字段"
name=
"oher "
>
<el-tab-pane
label=
"数据库字段"
name=
"oher "
>
<el-card
class=
"box-card"
>
<el-card
class=
"box-card"
>
<div
slot=
"header"
class=
"clearfix"
>
<div
slot=
"header"
class=
"clearfix"
>
<el-button
style=
"padding: 3px 0"
type=
"text"
>
新增字段
</el-button>
<el-button
style=
"padding: 3px 0"
type=
"text"
@
click=
"fieldClick(true)"
>
新增字段
</el-button>
<el-button
style=
"padding: 3px 0"
type=
"text"
>
删除字段
</el-button>
<el-button
style=
"padding: 3px 0"
type=
"text"
>
删除字段
</el-button>
<el-button
style=
"padding: 3px 0"
type=
"text"
>
获取字段
</el-button>
<el-button
style=
"padding: 3px 0"
type=
"text"
>
获取字段
</el-button>
<el-button
style=
"padding: 3px 0"
type=
"text"
>
输入字段映射
</el-button>
<el-button
style=
"padding: 3px 0"
type=
"text"
>
输入字段映射
</el-button>
</div>
</div>
<el-table
style=
"width: 100%"
border
:data=
"tableData2"
>
<
!--
<
el-table
style=
"width: 100%"
border
:data=
"tableData2"
>
<template
v-for=
"(item,index) in tableHead2"
>
<template
v-for=
"(item,index) in tableHead2"
>
<el-table-column
:prop=
"item.column_name"
:label=
"item.column_comment"
:key=
"index"
v-if=
"item.column_name != 'id'"
></el-table-column>
<el-table-column
:prop=
"item.column_name"
:label=
"item.column_comment"
:key=
"index"
v-if=
"item.column_name != 'id'"
></el-table-column>
</
template
>
</
template
>
</el-table>
</el-table>
-->
<table-list
ref=
"tableDia"
:tableHead=
"tableHead"
:tableData=
"tableData"
:field
.
sync=
"editDia"
:fieldClick=
"fieldClick"
></table-list>
<!-- 编辑弹窗开始=========== -->
<el-dialog
title=
"编辑"
:visible
.
sync=
"field"
width=
"500px"
:before-close=
"handleCloseEdit"
append-to-body
>
<el-form
ref=
"form"
:model=
"fieldForm"
label-width=
"80px"
>
<!-- <el-checkbox-group v-model="checkedCities" style="width:100%;">
<el-checkbox > -->
<el-form-item
label=
"表字段:"
>
<el-select
v-model=
"fieldForm.column_name"
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-checkbox> -->
<!-- <el-checkbox > -->
<el-form-item
label=
"流字段:"
>
<el-select
v-model=
"fieldForm.stream_name"
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-checkbox>
</el-checkbox-group> -->
</el-form>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"field = false"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"addField"
>
确 定
</el-button>
</span>
</el-dialog>
<!-- 编辑弹窗结束============ -->
</el-card>
</el-card>
</el-tab-pane>
</el-tab-pane>
</el-tabs>
</el-tabs>
...
@@ -155,9 +197,18 @@
...
@@ -155,9 +197,18 @@
</template>
</template>
<
script
>
<
script
>
import
{
inputOutputFields
,
//获取表输出
}
from
"@/api/kettle/file"
;
export
default
({
export
default
({
data
(){
data
(){
return
{
return
{
field
:
false
,
//编辑弹窗
checkedCities
:
[
'上海'
,
'北京'
],
editDia
:
false
,
//编辑表字段
fieldForm
:{},
//编辑弹窗
radioTreaty
:
'0'
,
radioTreaty
:
'0'
,
tableOutForm
:{
tableOutForm
:{
commit
:
"1000"
,
commit
:
"1000"
,
...
@@ -191,6 +242,31 @@ export default ({
...
@@ -191,6 +242,31 @@ export default ({
include_subfolders
:
"1"
,
include_subfolders
:
"1"
,
},
},
],
],
// 表头数据
tableHead
:[
{
column_name
:
"column_name"
,
column_comment
:
"表字段"
},
{
column_name
:
"stream_name"
,
column_comment
:
"流字段"
},
],
// 表格数据
tableData
:
[{
stream_name
:
'3'
,
column_name
:
'鞠婧祎'
,
},
{
stream_name
:
'25'
,
column_name
:
'魏大勋'
,
},
{
stream_name
:
'18'
,
column_name
:
'关晓彤'
,
}],
// 表头数据
// 表头数据
tableHead2
:[
tableHead2
:[
{
{
...
@@ -253,38 +329,48 @@ export default ({
...
@@ -253,38 +329,48 @@ export default ({
handleClose
(){
handleClose
(){
this
.
$emit
(
"update:tableOutPutVisible"
,
false
);
this
.
$emit
(
"update:tableOutPutVisible"
,
false
);
},
},
//新建转换
//获取表输出
createTrans
(){
inputOutputFields
(){
var
formData
=
new
FormData
();
// var enc = new mxCodec(mxUtils.createXmlDocument());
var
formData
=
new
FormData
();
// var node = enc.encode(graph.getModel());
formData
.
append
(
'dir'
,
this
.
nodePath
);
// store.baseParams.stepName = encodeURIComponent(cell.getAttribute('label'));
formData
.
append
(
'transName'
,
this
.
inputValue
);
// store.baseParams.graphXml = mxUtils.getPrettyXml(node);
// console.log('新建提交参数==',params);
// store.baseParams.before = true
createTrans
(
formData
).
then
(
res
=>
{
let
pamer
=
new
FormData
();
// 创建form对象
if
(
res
)
{
pamer
.
append
(
"stepName"
,
this
.
nodePath
);
this
.
$message
.
success
(
'创建成功!'
);
pamer
.
append
(
"graphXml"
,
"transformation"
);
this
.
explorer
(
''
);
pamer
.
append
(
"before"
,
true
);
this
.
$emit
(
"update:estabDialogVisible"
,
false
);
pamer
.
append
(
"query"
,
''
);
inputOutputFields
(
pamer
).
then
(
res
=>
{
console
.
log
(
res
,
'返回空白画布xml'
);
}
else
{
this
.
blankCanvas
=
res
this
.
$message
.
error
(
res
.
errMsg
)
}
})
})
},
},
// 上传
handleChange
(
file
,
fileList
)
{
//新增或者编辑弹窗
// console.log(file);
fieldClick
(
state
,
val
)
{
this
.
fileList
=
fileList
.
slice
(
-
3
);
this
.
field
=
!
this
.
field
;
this
.
tableData
.
push
({
name
:
file
.
name
});
this
.
dataState
=
state
;
// console.log(this.tableData);
if
(
state
)
{
// this.getObjectURL(file.raw)
this
.
fieldForm
=
{};
// console.log(this.getObjectURL(file.raw));
}
else
{
this
.
fieldForm
=
val
;
}
},
//关闭编辑的弹窗
handleCloseEdit
(){
this
.
field
=
!
this
.
field
;
},
},
addSheet
(){},
// 字段
fileChnageInput
(
e
)
{
addField
()
{
console
.
log
(
e
);
this
.
field
=
!
this
.
field
;
console
.
log
(
'添加的字段==='
,
this
.
fieldForm
);
if
(
this
.
dataState
)
{
this
.
tableData
.
push
(
this
.
fieldForm
);
}
},
},
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment