diff --git a/package.json b/package.json index c05c6c15..889a0399 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "nprogress": "0.2.0", "path-to-regexp": "2.4.0", "screenfull": "4.2.0", - "showdown": "1.9.0", + "showdown": "^1.9.1", "sortablejs": "1.8.4", "tui-editor": "1.3.3", "vue": "2.6.10", diff --git a/src/views/datax/jdbc-datasource/index.vue b/src/views/datax/jdbc-datasource/index.vue index 57d2a63b..6990d2f5 100644 --- a/src/views/datax/jdbc-datasource/index.vue +++ b/src/views/datax/jdbc-datasource/index.vue @@ -9,15 +9,23 @@ class="filter-item" @keyup.enter.native="handleFilter" /> - - 搜索 - - - 添加 - + 搜索 + 添加 + --> + --> @@ -37,8 +45,7 @@ - + + + --> --> @@ -60,12 +68,13 @@ @@ -78,7 +87,13 @@ /> - + - + @@ -95,17 +115,29 @@ - + - + - + - + @@ -117,6 +149,33 @@ style="width: 60%" /> + + + + + + + + + + + + @@ -180,7 +242,7 @@ export default { components: { Pagination }, directives: { waves }, filters: { - statusFilter(status) { + statusFilter (status) { const statusMap = { published: 'success', draft: 'gray', @@ -189,7 +251,7 @@ export default { return statusMap[status] } }, - data() { + data () { return { list: null, listLoading: true, @@ -228,7 +290,9 @@ export default { comments: '', datasource: '', zkAdress: '', - databaseName: '' + databaseName: '', + extra: '', + columnx: '' }, visible: true, dataSources: [ @@ -239,42 +303,92 @@ export default { { value: 'hive', label: 'hive' }, { value: 'hbase', label: 'hbase' }, { value: 'mongodb', label: 'mongodb' }, - { value: 'clickhouse', label: 'clickhouse' } + { value: 'clickhouse', label: 'clickhouse' }, + { value: 'parquetfile', label: 'parquetfile' }, + { value: 'rabbitmq', label: 'rabbitmq' } ], jdbc: true, hbase: false, - mongodb: false + mongodb: false, + enExtra: false, + rabbitmq: false, + parquetfile: false } }, - created() { + created () { this.fetchData() }, methods: { - selectDataSource(datasource) { + selectDataSource (datasource) { if (datasource === 'mysql') { this.temp.jdbcUrl = 'jdbc:mysql://{host}:{port}/{database}' this.temp.jdbcDriverClass = 'com.mysql.jdbc.Driver' + this.temp.extra = '' + this.temp.columnx = '' + this.enExtra = false + this.rabbitmq = false + this.parquetfile = false } else if (datasource === 'oracle') { this.temp.jdbcUrl = 'jdbc:oracle:thin:@//{host}:{port}/{database}' this.temp.jdbcDriverClass = 'oracle.jdbc.OracleDriver' + this.temp.extra = '' + this.temp.columnx = '' + this.enExtra = false + this.rabbitmq = false + this.parquetfile = false } else if (datasource === 'postgresql') { this.temp.jdbcUrl = 'jdbc:postgresql://{host}:{port}/{database}' this.temp.jdbcDriverClass = 'org.postgresql.Driver' + this.temp.extra = '' + this.temp.columnx = '' + this.enExtra = false + this.rabbitmq = false + this.parquetfile = false } else if (datasource === 'sqlserver') { this.temp.jdbcUrl = 'jdbc:sqlserver://{host}:{port};DatabaseName={database}' this.temp.jdbcDriverClass = 'com.microsoft.sqlserver.jdbc.SQLServerDriver' + this.temp.extra = '' + this.temp.columnx = '' + this.enExtra = false + this.rabbitmq = false + this.parquetfile = false } else if (datasource === 'clickhouse') { this.temp.jdbcUrl = 'jdbc:clickhouse://{host}:{port}/{database}' this.temp.jdbcDriverClass = 'ru.yandex.clickhouse.ClickHouseDriver' + this.temp.extra = '' + this.temp.columnx = '' + this.enExtra = false + this.rabbitmq = false + this.parquetfile = false } else if (datasource === 'hive') { this.temp.jdbcUrl = 'jdbc:hive2://{host}:{port}/{database}' this.temp.jdbcDriverClass = 'org.apache.hive.jdbc.HiveDriver' + this.temp.extra = '' + this.temp.columnx = '' this.hbase = this.mongodb = false this.jdbc = true + this.enExtra = true + this.rabbitmq = false + this.parquetfile = false + } else if (datasource === 'parquetfile') { + this.temp.jdbcUrl = '/{local_dir_absolute_path}/*' + this.temp.extra = '{"encoding": "UTF-8"}' + this.temp.columnx = '[{"name": "mmsi","type": "String"},{"name": "rot","type": "Integer"}]' + // this.temp.columnx = '[{"index": 0,"type": "string"},{"index": 1,"type": "integer"}]' + this.rabbitmq = false + this.parquetfile = true + } else if (datasource === 'rabbitmq') { + this.temp.jdbcUrl = '{host}' + this.temp.extra = '{"port": "5672"}' + this.temp.columnx = '[{"name": "mmsi","type": "String"},{"name": "rot","type": "Integer"}]' + this.jdbc = false + this.enExtra = true + this.rabbitmq = true + this.parquetfile = false } this.getShowStrategy(datasource) }, - fetchData() { + fetchData () { this.listLoading = true datasourceApi.list(this.listQuery).then(response => { const { records } = response @@ -284,7 +398,7 @@ export default { this.listLoading = false }) }, - resetTemp() { + resetTemp () { this.temp = { id: undefined, datasourceName: '', @@ -293,10 +407,11 @@ export default { jdbcPassword: '', jdbcUrl: '', jdbcDriverClass: '', - comments: '' + comments: '', + extra: '' } }, - handleCreate() { + handleCreate () { this.resetTemp() this.dialogStatus = 'create' this.dialogFormVisible = true @@ -304,7 +419,7 @@ export default { this.$refs['dataForm'].clearValidate() }) }, - createData() { + createData () { this.$refs['dataForm'].validate((valid) => { if (valid) { datasourceApi.created(this.temp).then(() => { @@ -320,7 +435,7 @@ export default { } }) }, - testDataSource() { + testDataSource () { this.$refs['dataForm'].validate((valid) => { if (valid) { datasourceApi.test(this.temp).then(response => { @@ -343,7 +458,7 @@ export default { } }) }, - handleUpdate(row) { + handleUpdate (row) { this.getShowStrategy(row.datasource) this.temp = Object.assign({}, row) // copy obj this.dialogStatus = 'update' @@ -352,7 +467,7 @@ export default { this.$refs['dataForm'].clearValidate() }) }, - updateData() { + updateData () { this.$refs['dataForm'].validate((valid) => { if (valid) { const tempData = Object.assign({}, this.temp) @@ -369,20 +484,40 @@ export default { } }) }, - getShowStrategy(datasource) { + getShowStrategy (datasource) { if (datasource === 'hbase') { this.jdbc = this.mongodb = false this.hbase = true + this.parquetfile = false + this.rabbitmq = false + this.enExtra = false } else if (datasource === 'mongodb') { this.jdbc = this.hbase = false this.mongodb = true + this.parquetfile = false + this.rabbitmq = false + this.enExtra = false this.temp.jdbcUrl = 'mongodb://[username:password@]host1[:port1][,...hostN[:portN]]][/[database][?options]]' + } else if (datasource === 'rabbitmq') { + this.temp.extra = '{"port": "5672"}' + this.enExtra = true + this.jdbc = false + this.rabbitmq = true + this.parquetfile = false + } else if (datasource === 'parquetfile') { + this.enExtra = true + this.jdbc = false + this.parquetfile = true + this.rabbitmq = false } else { this.hbase = this.mongodb = false this.jdbc = true + this.parquetfile = false + this.rabbitmq = false + this.enExtra = false } }, - handleDelete(row) { + handleDelete (row) { console.log('删除') const idList = [] idList.push(row.id) @@ -399,13 +534,13 @@ export default { }) // const index = this.list.indexOf(row) }, - handleFetchPv(id) { + handleFetchPv (id) { datasourceApi.fetched(id).then(response => { this.pluginData = response this.dialogPvVisible = true }) }, - formatJson(filterVal, jsonData) { + formatJson (filterVal, jsonData) { return jsonData.map(v => filterVal.map(j => { if (j === 'timestamp') { return parseTime(v[j]) @@ -414,7 +549,7 @@ export default { } })) }, - changePass(value) { + changePass (value) { this.visible = !(value === 'show') } } diff --git a/src/views/datax/json-build/index.vue b/src/views/datax/json-build/index.vue index 3488be54..77b9969f 100644 --- a/src/views/datax/json-build/index.vue +++ b/src/views/datax/json-build/index.vue @@ -8,19 +8,23 @@ 4 -
+
-
+
-
+
-
+
1.构建 - {{ jobTemplate ? jobTemplate : "2.选择模板" }} - 复制json + {{ + jobTemplate ? jobTemplate : "2.选择模板" + }} + 复制json (步骤:构建->选择模板->下一步) {{ scope.row.jobDesc }} - + - + - + - +
- +
- 上一步 - 下一步 + 上一步 + 下一步
- + diff --git a/src/views/datax/json-build/reader.vue b/src/views/datax/json-build/reader.vue index 40fc5448..d42451e2 100644 --- a/src/views/datax/json-build/reader.vue +++ b/src/views/datax/json-build/reader.vue @@ -1,41 +1,62 @@ diff --git a/src/views/datax/json-build/reader/ParquetFileReader.vue b/src/views/datax/json-build/reader/ParquetFileReader.vue new file mode 100644 index 00000000..9345bfcc --- /dev/null +++ b/src/views/datax/json-build/reader/ParquetFileReader.vue @@ -0,0 +1,216 @@ + + + diff --git a/src/views/datax/json-build/reader/RDBMSReader.vue b/src/views/datax/json-build/reader/RDBMSReader.vue index 76e7bbe5..a016fde9 100644 --- a/src/views/datax/json-build/reader/RDBMSReader.vue +++ b/src/views/datax/json-build/reader/RDBMSReader.vue @@ -1,8 +1,18 @@ diff --git a/src/views/datax/json-build/writer.vue b/src/views/datax/json-build/writer.vue index 7c3bac6d..16ba03fc 100644 --- a/src/views/datax/json-build/writer.vue +++ b/src/views/datax/json-build/writer.vue @@ -1,60 +1,97 @@ diff --git a/src/views/datax/json-build/writer/RDBMSWriter.vue b/src/views/datax/json-build/writer/RDBMSWriter.vue index 48b990f8..527f5f15 100644 --- a/src/views/datax/json-build/writer/RDBMSWriter.vue +++ b/src/views/datax/json-build/writer/RDBMSWriter.vue @@ -1,6 +1,11 @@ diff --git a/src/views/datax/json-build/writer/RabbitmqWriter.vue b/src/views/datax/json-build/writer/RabbitmqWriter.vue new file mode 100644 index 00000000..d9bf75e1 --- /dev/null +++ b/src/views/datax/json-build/writer/RabbitmqWriter.vue @@ -0,0 +1,369 @@ + + + diff --git a/vue.config.js b/vue.config.js index b991ccb7..332d1828 100644 --- a/vue.config.js +++ b/vue.config.js @@ -11,7 +11,7 @@ const name = defaultSettings.title || 'DATAX-ADMIN' // page title // use administrator privileges to execute the command line. // For example, Mac: sudo npm run const port = 8082 // dev port -const apiPort = 8080 +const apiPort = 8088 // All configuration item explanations can be find in https://cli.vuejs.org/config/ module.exports = {