Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
D
datax-cloud
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
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
黄营
datax-cloud
Commits
99cb89cd
Commit
99cb89cd
authored
Jul 26, 2020
by
yuwei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
项目初始化
parent
2022dbb0
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
30 changed files
with
1121 additions
and
10 deletions
+1121
-10
pom.xml
datax-common/datax-common-redis/pom.xml
+6
-0
RedisCacheAop.java
.../java/cn/datax/common/redis/annotation/RedisCacheAop.java
+18
-0
RedisCacheAspect.java
.../java/cn/datax/common/redis/aspectj/RedisCacheAspect.java
+122
-0
spring.factories
...common-redis/src/main/resources/META-INF/spring.factories
+2
-1
DataSourceDto.java
.../cn/datax/service/data/factory/api/dto/DataSourceDto.java
+3
-0
DataThemeDto.java
...a/cn/datax/service/data/factory/api/dto/DataThemeDto.java
+30
-0
DataSourceEntity.java
...tax/service/data/factory/api/entity/DataSourceEntity.java
+5
-0
DataThemeEntity.java
...atax/service/data/factory/api/entity/DataThemeEntity.java
+29
-0
DataSourceQuery.java
...datax/service/data/factory/api/query/DataSourceQuery.java
+2
-0
DataThemeQuery.java
.../datax/service/data/factory/api/query/DataThemeQuery.java
+22
-0
DataSourceVo.java
...va/cn/datax/service/data/factory/api/vo/DataSourceVo.java
+1
-0
DataThemeVo.java
...ava/cn/datax/service/data/factory/api/vo/DataThemeVo.java
+28
-0
DataSourceController.java
...service/data/factory/controller/DataSourceController.java
+1
-0
DataThemeController.java
.../service/data/factory/controller/DataThemeController.java
+149
-0
DataThemeDao.java
.../java/cn/datax/service/data/factory/dao/DataThemeDao.java
+18
-0
DataThemeMapper.java
...datax/service/data/factory/mapstruct/DataThemeMapper.java
+20
-0
DataThemeService.java
.../datax/service/data/factory/service/DataThemeService.java
+28
-0
DataThemeServiceImpl.java
...rvice/data/factory/service/impl/DataThemeServiceImpl.java
+67
-0
DataSetMapper.xml
...ctory-service/src/main/resources/mapper/DataSetMapper.xml
+3
-2
DataSourceMapper.xml
...ry-service/src/main/resources/mapper/DataSourceMapper.xml
+4
-2
DataThemeMapper.xml
...ory-service/src/main/resources/mapper/DataThemeMapper.xml
+31
-0
datatheme.js
datax-ui/src/api/factory/datatheme.js
+54
-0
DataSourceAdd.vue
datax-ui/src/views/factory/datasource/DataSourceAdd.vue
+28
-2
DataSourceDetail.vue
datax-ui/src/views/factory/datasource/DataSourceDetail.vue
+23
-1
DataSourceEdit.vue
datax-ui/src/views/factory/datasource/DataSourceEdit.vue
+27
-2
DataThemeAdd.vue
datax-ui/src/views/factory/datatheme/DataThemeAdd.vue
+123
-0
DataThemeDetail.vue
datax-ui/src/views/factory/datatheme/DataThemeDetail.vue
+96
-0
DataThemeEdit.vue
datax-ui/src/views/factory/datatheme/DataThemeEdit.vue
+133
-0
DataThemeList.vue
datax-ui/src/views/factory/datatheme/DataThemeList.vue
+0
-0
index.vue
datax-ui/src/views/factory/datatheme/index.vue
+48
-0
No files found.
datax-common/datax-common-redis/pom.xml
View file @
99cb89cd
...
@@ -29,5 +29,10 @@
...
@@ -29,5 +29,10 @@
<artifactId>
redisson
</artifactId>
<artifactId>
redisson
</artifactId>
<version>
${redisson.version}
</version>
<version>
${redisson.version}
</version>
</dependency>
</dependency>
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
fastjson
</artifactId>
<version>
${fastjson.version}
</version>
</dependency>
</dependencies>
</dependencies>
</project>
</project>
\ No newline at end of file
datax-common/datax-common-redis/src/main/java/cn/datax/common/redis/annotation/RedisCacheAop.java
0 → 100644
View file @
99cb89cd
package
cn
.
datax
.
common
.
redis
.
annotation
;
import
java.lang.annotation.*
;
@Target
(
ElementType
.
METHOD
)
@Retention
(
RetentionPolicy
.
RUNTIME
)
@Documented
public
@interface
RedisCacheAop
{
// 缓存名
String
cacheName
()
default
""
;
// 过期时间(秒) time要大于0 如果time小于等于0 将设置无限期
long
expire
()
default
-
1
;
// 缓存反序列化获取的对象
Class
clazz
()
default
Object
.
class
;
// 序列化后的对象是否是数组 比如 List<Object>
boolean
isArray
()
default
false
;
}
datax-common/datax-common-redis/src/main/java/cn/datax/common/redis/aspectj/RedisCacheAspect.java
0 → 100644
View file @
99cb89cd
package
cn
.
datax
.
common
.
redis
.
aspectj
;
import
cn.datax.common.redis.annotation.RedisCacheAop
;
import
com.alibaba.fastjson.JSON
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
lombok.extern.slf4j.Slf4j
;
import
org.aspectj.lang.ProceedingJoinPoint
;
import
org.aspectj.lang.annotation.Around
;
import
org.aspectj.lang.annotation.Aspect
;
import
org.aspectj.lang.annotation.Pointcut
;
import
org.aspectj.lang.reflect.MethodSignature
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
java.lang.reflect.Method
;
import
java.util.Arrays
;
import
java.util.concurrent.TimeUnit
;
import
java.util.stream.Collectors
;
@Aspect
@Slf4j
public
class
RedisCacheAspect
{
@Autowired
private
RedisTemplate
redisTemplate
;
@Autowired
private
ObjectMapper
objectMapper
;
/**
* 分隔符 生成key 格式为 类全类名|方法名|参数所属类全类名
**/
private
static
final
String
DELIMITER
=
":"
;
/**
* Service层切点 使用到了我们定义的 RedisCacheAspect 作为切点表达式。
* 而且我们可以看出此表达式基于 annotation。
* 并且用于内建属性为查询的方法之上
*/
@Pointcut
(
"@annotation(cn.datax.common.redis.annotation.RedisCacheAop)"
)
public
void
redisCacheAspect
()
{
}
/**
* Around 手动控制调用核心业务逻辑,以及调用前和调用后的处理,
* <p>
* 注意:当核心业务抛异常后,立即退出,转向AfterAdvice 执行完AfterAdvice,再转到ThrowingAdvice
*/
@Around
(
value
=
"redisCacheAspect()"
)
public
Object
aroundAdvice
(
ProceedingJoinPoint
joinPoint
)
throws
Throwable
{
// 得到类名、方法名和参数
String
clazzName
=
joinPoint
.
getTarget
().
getClass
().
getName
();
String
methodName
=
joinPoint
.
getSignature
().
getName
();
Object
[]
args
=
joinPoint
.
getArgs
();
// 根据类名、方法名和参数生成Key
log
.
info
(
"key参数: "
+
clazzName
+
"."
+
methodName
);
String
key
=
getKey
(
clazzName
,
methodName
,
args
);
if
(
log
.
isInfoEnabled
())
{
log
.
info
(
"生成key: "
+
key
);
}
// 得到被代理的方法
Method
method
=
((
MethodSignature
)
joinPoint
.
getSignature
()).
getMethod
();
String
cacheName
=
method
.
getAnnotation
(
RedisCacheAop
.
class
).
cacheName
();
long
expire
=
method
.
getAnnotation
(
RedisCacheAop
.
class
).
expire
();
Class
objectType
=
method
.
getAnnotation
(
RedisCacheAop
.
class
).
clazz
();
boolean
isArray
=
method
.
getAnnotation
(
RedisCacheAop
.
class
).
isArray
();
// 检查Redis中是否有缓存
String
value
=
(
String
)
redisTemplate
.
opsForValue
().
get
(
key
+
DELIMITER
+
cacheName
);
// result是方法的最终返回结果
Object
result
=
null
;
try
{
if
(
null
==
value
)
{
log
.
info
(
"缓存未命中"
);
// 调用数据库查询方法
result
=
joinPoint
.
proceed
(
args
);
// 结果放入缓存
if
(
expire
>
0
)
{
redisTemplate
.
opsForValue
().
set
(
key
+
DELIMITER
+
cacheName
,
objectMapper
.
writeValueAsString
(
result
),
expire
,
TimeUnit
.
SECONDS
);
}
else
{
redisTemplate
.
opsForValue
().
set
(
key
+
DELIMITER
+
cacheName
,
objectMapper
.
writeValueAsString
(
result
));
}
}
else
{
/**
* 可以直接针对mapper进行缓存,如果mapper查询返回的List<Objec> 需要isArray 为true 否则转换异常
*/
if
(
isArray
){
return
JSON
.
parseArray
(
value
,
objectType
);
}
else
{
return
JSON
.
parseObject
(
value
,
objectType
);
}
}
}
catch
(
Throwable
e
)
{
log
.
error
(
"程序异常"
,
e
.
getMessage
());
throw
e
;
}
return
result
;
}
/**
* 根据类名、方法名和参数生成Key
* @param clazzName
* @param methodName
* @param args
* @return key格式:全类名:方法名:参数类型
*/
private
String
getKey
(
String
clazzName
,
String
methodName
,
Object
[]
args
)
{
StringBuilder
key
=
new
StringBuilder
(
clazzName
);
key
.
append
(
DELIMITER
);
key
.
append
(
methodName
);
key
.
append
(
DELIMITER
);
key
.
append
(
Arrays
.
stream
(
args
).
map
(
x
->
x
.
toString
()).
collect
(
Collectors
.
joining
(
DELIMITER
)));
return
key
.
toString
();
}
}
datax-common/datax-common-redis/src/main/resources/META-INF/spring.factories
View file @
99cb89cd
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
cn.datax.common.redis.config.RedisConfig,\
cn.datax.common.redis.config.RedisConfig,\
cn.datax.common.redis.config.RedissonConfig
cn.datax.common.redis.config.RedissonConfig,\
cn.datax.common.redis.aspectj.RedisCacheAspect
datax-modules/data-factory-service-parent/data-factory-service-api/src/main/java/cn/datax/service/data/factory/api/dto/DataSourceDto.java
View file @
99cb89cd
...
@@ -32,6 +32,9 @@ public class DataSourceDto implements Serializable {
...
@@ -32,6 +32,9 @@ public class DataSourceDto implements Serializable {
@ApiModelProperty
(
value
=
"数据源名称"
)
@ApiModelProperty
(
value
=
"数据源名称"
)
@NotBlank
(
message
=
"数据源名称不能为空"
,
groups
=
{
ValidationGroups
.
Insert
.
class
,
ValidationGroups
.
Update
.
class
})
@NotBlank
(
message
=
"数据源名称不能为空"
,
groups
=
{
ValidationGroups
.
Insert
.
class
,
ValidationGroups
.
Update
.
class
})
private
String
sourceName
;
private
String
sourceName
;
@ApiModelProperty
(
value
=
"数据主题"
)
@NotBlank
(
message
=
"数据主题不能为空"
,
groups
=
{
ValidationGroups
.
Insert
.
class
,
ValidationGroups
.
Update
.
class
})
private
String
themeId
;
@ApiModelProperty
(
value
=
"数据源连接信息"
)
@ApiModelProperty
(
value
=
"数据源连接信息"
)
@Valid
@Valid
private
DbSchema
dbSchema
;
private
DbSchema
dbSchema
;
...
...
datax-modules/data-factory-service-parent/data-factory-service-api/src/main/java/cn/datax/service/data/factory/api/dto/DataThemeDto.java
0 → 100644
View file @
99cb89cd
package
cn
.
datax
.
service
.
data
.
factory
.
api
.
dto
;
import
cn.datax.common.validate.ValidationGroups
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.validation.constraints.NotBlank
;
import
java.io.Serializable
;
/**
* <p>
* 数据主题信息表 实体DTO
* </p>
*
* @author yuwei
* @since 2020-07-26
*/
@ApiModel
(
value
=
"数据主题信息表Model"
)
@Data
public
class
DataThemeDto
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
value
=
"主键ID"
)
@NotBlank
(
message
=
"主键ID不能为空"
,
groups
=
{
ValidationGroups
.
Update
.
class
})
private
String
id
;
@ApiModelProperty
(
value
=
"主题名称"
)
@NotBlank
(
message
=
"主题名称不能为空"
,
groups
=
{
ValidationGroups
.
Insert
.
class
,
ValidationGroups
.
Update
.
class
})
private
String
themeName
;
}
datax-modules/data-factory-service-parent/data-factory-service-api/src/main/java/cn/datax/service/data/factory/api/entity/DataSourceEntity.java
View file @
99cb89cd
...
@@ -36,6 +36,11 @@ public class DataSourceEntity extends DataScopeBaseEntity {
...
@@ -36,6 +36,11 @@ public class DataSourceEntity extends DataScopeBaseEntity {
private
String
sourceName
;
private
String
sourceName
;
/**
/**
* 数据主题
*/
private
String
themeId
;
/**
* 数据源连接信息
* 数据源连接信息
*/
*/
@TableField
(
typeHandler
=
JacksonTypeHandler
.
class
)
@TableField
(
typeHandler
=
JacksonTypeHandler
.
class
)
...
...
datax-modules/data-factory-service-parent/data-factory-service-api/src/main/java/cn/datax/service/data/factory/api/entity/DataThemeEntity.java
0 → 100644
View file @
99cb89cd
package
cn
.
datax
.
service
.
data
.
factory
.
api
.
entity
;
import
cn.datax.common.base.DataScopeBaseEntity
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
/**
* <p>
* 数据主题信息表
* </p>
*
* @author yuwei
* @since 2020-07-26
*/
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@Accessors
(
chain
=
true
)
@TableName
(
"data_theme"
)
public
class
DataThemeEntity
extends
DataScopeBaseEntity
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 数据主题
*/
private
String
themeName
;
}
datax-modules/data-factory-service-parent/data-factory-service-api/src/main/java/cn/datax/service/data/factory/api/query/DataSourceQuery.java
View file @
99cb89cd
...
@@ -19,4 +19,6 @@ public class DataSourceQuery extends BaseQueryParams {
...
@@ -19,4 +19,6 @@ public class DataSourceQuery extends BaseQueryParams {
private
static
final
long
serialVersionUID
=
1L
;
private
static
final
long
serialVersionUID
=
1L
;
private
String
sourceName
;
private
String
sourceName
;
private
String
themeId
;
}
}
datax-modules/data-factory-service-parent/data-factory-service-api/src/main/java/cn/datax/service/data/factory/api/query/DataThemeQuery.java
0 → 100644
View file @
99cb89cd
package
cn
.
datax
.
service
.
data
.
factory
.
api
.
query
;
import
cn.datax.common.base.BaseQueryParams
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
/**
* <p>
* 数据主题信息表 查询实体
* </p>
*
* @author yuwei
* @since 2020-07-26
*/
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
public
class
DataThemeQuery
extends
BaseQueryParams
{
private
static
final
long
serialVersionUID
=
1L
;
private
String
themeName
;
}
datax-modules/data-factory-service-parent/data-factory-service-api/src/main/java/cn/datax/service/data/factory/api/vo/DataSourceVo.java
View file @
99cb89cd
...
@@ -27,5 +27,6 @@ public class DataSourceVo implements Serializable {
...
@@ -27,5 +27,6 @@ public class DataSourceVo implements Serializable {
private
String
remark
;
private
String
remark
;
private
String
dbType
;
private
String
dbType
;
private
String
sourceName
;
private
String
sourceName
;
private
String
themeId
;
private
DbSchema
dbSchema
;
private
DbSchema
dbSchema
;
}
}
datax-modules/data-factory-service-parent/data-factory-service-api/src/main/java/cn/datax/service/data/factory/api/vo/DataThemeVo.java
0 → 100644
View file @
99cb89cd
package
cn
.
datax
.
service
.
data
.
factory
.
api
.
vo
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
/**
* <p>
* 数据主题信息表 实体VO
* </p>
*
* @author yuwei
* @since 2020-07-26
*/
@Data
public
class
DataThemeVo
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
private
String
id
;
private
String
status
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
LocalDateTime
createTime
;
private
String
remark
;
private
String
themeName
;
}
datax-modules/data-factory-service-parent/data-factory-service/src/main/java/cn/datax/service/data/factory/controller/DataSourceController.java
View file @
99cb89cd
...
@@ -90,6 +90,7 @@ public class DataSourceController extends BaseController {
...
@@ -90,6 +90,7 @@ public class DataSourceController extends BaseController {
public
R
getDataSourcePage
(
DataSourceQuery
dataSourceQuery
)
{
public
R
getDataSourcePage
(
DataSourceQuery
dataSourceQuery
)
{
QueryWrapper
<
DataSourceEntity
>
queryWrapper
=
new
QueryWrapper
<>();
QueryWrapper
<
DataSourceEntity
>
queryWrapper
=
new
QueryWrapper
<>();
queryWrapper
.
like
(
StrUtil
.
isNotBlank
(
dataSourceQuery
.
getSourceName
()),
"source_name"
,
dataSourceQuery
.
getSourceName
());
queryWrapper
.
like
(
StrUtil
.
isNotBlank
(
dataSourceQuery
.
getSourceName
()),
"source_name"
,
dataSourceQuery
.
getSourceName
());
queryWrapper
.
eq
(
StrUtil
.
isNotBlank
(
dataSourceQuery
.
getThemeId
()),
"theme_id"
,
dataSourceQuery
.
getThemeId
());
IPage
<
DataSourceEntity
>
page
=
dataSourceService
.
page
(
new
Page
<>(
dataSourceQuery
.
getPageNum
(),
dataSourceQuery
.
getPageSize
()),
queryWrapper
);
IPage
<
DataSourceEntity
>
page
=
dataSourceService
.
page
(
new
Page
<>(
dataSourceQuery
.
getPageNum
(),
dataSourceQuery
.
getPageSize
()),
queryWrapper
);
List
<
DataSourceVo
>
collect
=
page
.
getRecords
().
stream
().
map
(
dataSourceMapper:
:
toVO
).
collect
(
Collectors
.
toList
());
List
<
DataSourceVo
>
collect
=
page
.
getRecords
().
stream
().
map
(
dataSourceMapper:
:
toVO
).
collect
(
Collectors
.
toList
());
JsonPage
<
DataSourceVo
>
jsonPage
=
new
JsonPage
<>(
page
.
getCurrent
(),
page
.
getSize
(),
page
.
getTotal
(),
collect
);
JsonPage
<
DataSourceVo
>
jsonPage
=
new
JsonPage
<>(
page
.
getCurrent
(),
page
.
getSize
(),
page
.
getTotal
(),
collect
);
...
...
datax-modules/data-factory-service-parent/data-factory-service/src/main/java/cn/datax/service/data/factory/controller/DataThemeController.java
0 → 100644
View file @
99cb89cd
package
cn
.
datax
.
service
.
data
.
factory
.
controller
;
import
cn.datax.common.core.DataConstant
;
import
cn.datax.common.core.JsonPage
;
import
cn.datax.common.core.R
;
import
cn.datax.common.validate.ValidationGroups
;
import
cn.datax.service.data.factory.api.dto.DataThemeDto
;
import
cn.datax.service.data.factory.api.entity.DataSourceEntity
;
import
cn.datax.service.data.factory.api.entity.DataThemeEntity
;
import
cn.datax.service.data.factory.api.vo.DataSourceVo
;
import
cn.datax.service.data.factory.api.vo.DataThemeVo
;
import
cn.datax.service.data.factory.api.query.DataThemeQuery
;
import
cn.datax.service.data.factory.mapstruct.DataThemeMapper
;
import
cn.datax.service.data.factory.service.DataThemeService
;
import
cn.hutool.core.util.StrUtil
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiImplicitParams
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
cn.datax.common.base.BaseController
;
import
java.util.List
;
import
java.util.stream.Collectors
;
/**
* <p>
* 数据主题信息表 前端控制器
* </p>
*
* @author yuwei
* @since 2020-07-26
*/
@Api
(
tags
=
{
"数据主题信息表"
})
@RestController
@RequestMapping
(
"/dataThemes"
)
public
class
DataThemeController
extends
BaseController
{
@Autowired
private
DataThemeService
dataThemeService
;
@Autowired
private
DataThemeMapper
dataThemeMapper
;
/**
* 通过ID查询信息
*
* @param id
* @return
*/
@ApiOperation
(
value
=
"获取详细信息"
,
notes
=
"根据url的id来获取详细信息"
)
@ApiImplicitParam
(
name
=
"id"
,
value
=
"ID"
,
required
=
true
,
dataType
=
"String"
,
paramType
=
"path"
)
@GetMapping
(
"/{id}"
)
public
R
getDataThemeById
(
@PathVariable
String
id
)
{
DataThemeEntity
dataThemeEntity
=
dataThemeService
.
getDataThemeById
(
id
);
return
R
.
ok
().
setData
(
dataThemeMapper
.
toVO
(
dataThemeEntity
));
}
@ApiOperation
(
value
=
"获取列表"
,
notes
=
""
)
@GetMapping
(
"/list"
)
public
R
getDataThemeList
()
{
QueryWrapper
<
DataThemeEntity
>
queryWrapper
=
new
QueryWrapper
<>();
queryWrapper
.
eq
(
"status"
,
DataConstant
.
EnableState
.
ENABLE
.
getKey
());
List
<
DataThemeEntity
>
list
=
dataThemeService
.
list
(
queryWrapper
);
List
<
DataThemeVo
>
collect
=
list
.
stream
().
map
(
dataThemeMapper:
:
toVO
).
collect
(
Collectors
.
toList
());
return
R
.
ok
().
setData
(
collect
);
}
/**
* 分页查询信息
*
* @param dataThemeQuery
* @return
*/
@ApiOperation
(
value
=
"分页查询"
,
notes
=
""
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"dataThemeQuery"
,
value
=
"查询实体dataThemeQuery"
,
required
=
true
,
dataTypeClass
=
DataThemeQuery
.
class
)
})
@GetMapping
(
"/page"
)
public
R
getDataThemePage
(
DataThemeQuery
dataThemeQuery
)
{
QueryWrapper
<
DataThemeEntity
>
queryWrapper
=
new
QueryWrapper
<>();
queryWrapper
.
like
(
StrUtil
.
isNotBlank
(
dataThemeQuery
.
getThemeName
()),
"theme_name"
,
dataThemeQuery
.
getThemeName
());
IPage
<
DataThemeEntity
>
page
=
dataThemeService
.
page
(
new
Page
<>(
dataThemeQuery
.
getPageNum
(),
dataThemeQuery
.
getPageSize
()),
queryWrapper
);
List
<
DataThemeVo
>
collect
=
page
.
getRecords
().
stream
().
map
(
dataThemeMapper:
:
toVO
).
collect
(
Collectors
.
toList
());
JsonPage
<
DataThemeVo
>
jsonPage
=
new
JsonPage
<>(
page
.
getCurrent
(),
page
.
getSize
(),
page
.
getTotal
(),
collect
);
return
R
.
ok
().
setData
(
jsonPage
);
}
/**
* 添加
* @param dataTheme
* @return
*/
@ApiOperation
(
value
=
"添加信息"
,
notes
=
"根据dataTheme对象添加信息"
)
@ApiImplicitParam
(
name
=
"dataTheme"
,
value
=
"详细实体dataTheme"
,
required
=
true
,
dataType
=
"DataThemeDto"
)
@PostMapping
()
public
R
saveDataTheme
(
@RequestBody
@Validated
({
ValidationGroups
.
Insert
.
class
})
DataThemeDto
dataTheme
)
{
DataThemeEntity
dataThemeEntity
=
dataThemeService
.
saveDataTheme
(
dataTheme
);
return
R
.
ok
().
setData
(
dataThemeMapper
.
toVO
(
dataThemeEntity
));
}
/**
* 修改
* @param dataTheme
* @return
*/
@ApiOperation
(
value
=
"修改信息"
,
notes
=
"根据url的id来指定修改对象,并根据传过来的信息来修改详细信息"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"id"
,
value
=
"ID"
,
required
=
true
,
dataType
=
"String"
,
paramType
=
"path"
),
@ApiImplicitParam
(
name
=
"dataTheme"
,
value
=
"详细实体dataTheme"
,
required
=
true
,
dataType
=
"DataThemeDto"
)
})
@PutMapping
(
"/{id}"
)
public
R
updateDataTheme
(
@PathVariable
String
id
,
@RequestBody
@Validated
({
ValidationGroups
.
Update
.
class
})
DataThemeDto
dataTheme
)
{
DataThemeEntity
dataThemeEntity
=
dataThemeService
.
updateDataTheme
(
dataTheme
);
return
R
.
ok
().
setData
(
dataThemeMapper
.
toVO
(
dataThemeEntity
));
}
/**
* 删除
* @param id
* @return
*/
@ApiOperation
(
value
=
"删除"
,
notes
=
"根据url的id来指定删除对象"
)
@ApiImplicitParam
(
name
=
"id"
,
value
=
"ID"
,
required
=
true
,
dataType
=
"String"
,
paramType
=
"path"
)
@DeleteMapping
(
"/{id}"
)
public
R
deleteDataThemeById
(
@PathVariable
String
id
)
{
dataThemeService
.
deleteDataThemeById
(
id
);
return
R
.
ok
();
}
/**
* 批量删除
* @param ids
* @return
*/
@ApiOperation
(
value
=
"批量删除角色"
,
notes
=
"根据url的ids来批量删除对象"
)
@ApiImplicitParam
(
name
=
"ids"
,
value
=
"ID集合"
,
required
=
true
,
dataType
=
"List"
,
paramType
=
"path"
)
@DeleteMapping
(
"/batch/{ids}"
)
public
R
deleteDataThemeBatch
(
@PathVariable
List
<
String
>
ids
)
{
dataThemeService
.
deleteDataThemeBatch
(
ids
);
return
R
.
ok
();
}
}
datax-modules/data-factory-service-parent/data-factory-service/src/main/java/cn/datax/service/data/factory/dao/DataThemeDao.java
0 → 100644
View file @
99cb89cd
package
cn
.
datax
.
service
.
data
.
factory
.
dao
;
import
cn.datax.common.base.BaseDao
;
import
cn.datax.service.data.factory.api.entity.DataThemeEntity
;
import
org.apache.ibatis.annotations.Mapper
;
/**
* <p>
* 数据主题信息表 Mapper 接口
* </p>
*
* @author yuwei
* @since 2020-07-26
*/
@Mapper
public
interface
DataThemeDao
extends
BaseDao
<
DataThemeEntity
>
{
}
datax-modules/data-factory-service-parent/data-factory-service/src/main/java/cn/datax/service/data/factory/mapstruct/DataThemeMapper.java
0 → 100644
View file @
99cb89cd
package
cn
.
datax
.
service
.
data
.
factory
.
mapstruct
;
import
cn.datax.common.mapstruct.EntityMapper
;
import
cn.datax.service.data.factory.api.dto.DataThemeDto
;
import
cn.datax.service.data.factory.api.entity.DataThemeEntity
;
import
cn.datax.service.data.factory.api.vo.DataThemeVo
;
import
org.mapstruct.Mapper
;
/**
* <p>
* 数据主题信息表 Mapper 实体映射
* </p>
*
* @author yuwei
* @since 2020-07-26
*/
@Mapper
(
componentModel
=
"spring"
)
public
interface
DataThemeMapper
extends
EntityMapper
<
DataThemeDto
,
DataThemeEntity
,
DataThemeVo
>
{
}
datax-modules/data-factory-service-parent/data-factory-service/src/main/java/cn/datax/service/data/factory/service/DataThemeService.java
0 → 100644
View file @
99cb89cd
package
cn
.
datax
.
service
.
data
.
factory
.
service
;
import
cn.datax.service.data.factory.api.entity.DataThemeEntity
;
import
cn.datax.service.data.factory.api.dto.DataThemeDto
;
import
cn.datax.common.base.BaseService
;
import
java.util.List
;
/**
* <p>
* 数据主题信息表 服务类
* </p>
*
* @author yuwei
* @since 2020-07-26
*/
public
interface
DataThemeService
extends
BaseService
<
DataThemeEntity
>
{
DataThemeEntity
saveDataTheme
(
DataThemeDto
dataTheme
);
DataThemeEntity
updateDataTheme
(
DataThemeDto
dataTheme
);
DataThemeEntity
getDataThemeById
(
String
id
);
void
deleteDataThemeById
(
String
id
);
void
deleteDataThemeBatch
(
List
<
String
>
ids
);
}
datax-modules/data-factory-service-parent/data-factory-service/src/main/java/cn/datax/service/data/factory/service/impl/DataThemeServiceImpl.java
0 → 100644
View file @
99cb89cd
package
cn
.
datax
.
service
.
data
.
factory
.
service
.
impl
;
import
cn.datax.service.data.factory.api.entity.DataThemeEntity
;
import
cn.datax.service.data.factory.api.dto.DataThemeDto
;
import
cn.datax.service.data.factory.service.DataThemeService
;
import
cn.datax.service.data.factory.mapstruct.DataThemeMapper
;
import
cn.datax.service.data.factory.dao.DataThemeDao
;
import
cn.datax.common.base.BaseServiceImpl
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Propagation
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.List
;
/**
* <p>
* 数据主题信息表 服务实现类
* </p>
*
* @author yuwei
* @since 2020-07-26
*/
@Service
@Transactional
(
propagation
=
Propagation
.
SUPPORTS
,
readOnly
=
true
,
rollbackFor
=
Exception
.
class
)
public
class
DataThemeServiceImpl
extends
BaseServiceImpl
<
DataThemeDao
,
DataThemeEntity
>
implements
DataThemeService
{
@Autowired
private
DataThemeDao
dataThemeDao
;
@Autowired
private
DataThemeMapper
dataThemeMapper
;
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
DataThemeEntity
saveDataTheme
(
DataThemeDto
dataThemeDto
)
{
DataThemeEntity
dataTheme
=
dataThemeMapper
.
toEntity
(
dataThemeDto
);
dataThemeDao
.
insert
(
dataTheme
);
return
dataTheme
;
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
DataThemeEntity
updateDataTheme
(
DataThemeDto
dataThemeDto
)
{
DataThemeEntity
dataTheme
=
dataThemeMapper
.
toEntity
(
dataThemeDto
);
dataThemeDao
.
updateById
(
dataTheme
);
return
dataTheme
;
}
@Override
public
DataThemeEntity
getDataThemeById
(
String
id
)
{
DataThemeEntity
dataThemeEntity
=
super
.
getById
(
id
);
return
dataThemeEntity
;
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
deleteDataThemeById
(
String
id
)
{
dataThemeDao
.
deleteById
(
id
);
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
deleteDataThemeBatch
(
List
<
String
>
ids
)
{
dataThemeDao
.
deleteBatchIds
(
ids
);
}
}
datax-modules/data-factory-service-parent/data-factory-service/src/main/resources/mapper/DataSetMapper.xml
View file @
99cb89cd
...
@@ -11,9 +11,9 @@
...
@@ -11,9 +11,9 @@
<result
column=
"create_dept"
property=
"createDept"
/>
<result
column=
"create_dept"
property=
"createDept"
/>
<result
column=
"update_by"
property=
"updateBy"
/>
<result
column=
"update_by"
property=
"updateBy"
/>
<result
column=
"update_time"
property=
"updateTime"
/>
<result
column=
"update_time"
property=
"updateTime"
/>
<result
column=
"remark"
property=
"remark"
/>
<result
column=
"source_id"
property=
"sourceId"
/>
<result
column=
"source_id"
property=
"sourceId"
/>
<result
column=
"set_name"
property=
"setName"
/>
<result
column=
"set_name"
property=
"setName"
/>
<result
column=
"remark"
property=
"remark"
/>
<result
column=
"set_sql"
property=
"setSql"
/>
<result
column=
"set_sql"
property=
"setSql"
/>
<result
column=
"schema_json"
property=
"schemaConfig"
typeHandler=
"com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"
/>
<result
column=
"schema_json"
property=
"schemaConfig"
typeHandler=
"com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"
/>
...
@@ -28,7 +28,8 @@
...
@@ -28,7 +28,8 @@
create_dept,
create_dept,
update_by,
update_by,
update_time,
update_time,
source_id, set_name, remark, set_sql, schema_json
remark,
source_id, set_name, set_sql, schema_json
</sql>
</sql>
</mapper>
</mapper>
datax-modules/data-factory-service-parent/data-factory-service/src/main/resources/mapper/DataSourceMapper.xml
View file @
99cb89cd
...
@@ -11,9 +11,10 @@
...
@@ -11,9 +11,10 @@
<result
column=
"create_dept"
property=
"createDept"
/>
<result
column=
"create_dept"
property=
"createDept"
/>
<result
column=
"update_by"
property=
"updateBy"
/>
<result
column=
"update_by"
property=
"updateBy"
/>
<result
column=
"update_time"
property=
"updateTime"
/>
<result
column=
"update_time"
property=
"updateTime"
/>
<result
column=
"remark"
property=
"remark"
/>
<result
column=
"db_type"
property=
"dbType"
/>
<result
column=
"db_type"
property=
"dbType"
/>
<result
column=
"source_name"
property=
"sourceName"
/>
<result
column=
"source_name"
property=
"sourceName"
/>
<result
column=
"
remark"
property=
"remark
"
/>
<result
column=
"
theme_id"
property=
"themeId
"
/>
<result
column=
"db_schema"
property=
"dbSchema"
typeHandler=
"com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"
/>
<result
column=
"db_schema"
property=
"dbSchema"
typeHandler=
"com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"
/>
</resultMap>
</resultMap>
...
@@ -26,7 +27,8 @@
...
@@ -26,7 +27,8 @@
create_dept,
create_dept,
update_by,
update_by,
update_time,
update_time,
db_type, source_name, source_desc, remark, db_schema
remark,
db_type, source_name, theme_id, db_schema
</sql>
</sql>
</mapper>
</mapper>
datax-modules/data-factory-service-parent/data-factory-service/src/main/resources/mapper/DataThemeMapper.xml
0 → 100644
View file @
99cb89cd
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"cn.datax.service.data.factory.dao.DataThemeDao"
>
<!-- 通用查询映射结果 -->
<resultMap
id=
"BaseResultMap"
type=
"cn.datax.service.data.factory.api.entity.DataThemeEntity"
>
<result
column=
"id"
property=
"id"
/>
<result
column=
"status"
property=
"status"
/>
<result
column=
"create_by"
property=
"createBy"
/>
<result
column=
"create_time"
property=
"createTime"
/>
<result
column=
"create_dept"
property=
"createDept"
/>
<result
column=
"update_by"
property=
"updateBy"
/>
<result
column=
"update_time"
property=
"updateTime"
/>
<result
column=
"remark"
property=
"remark"
/>
<result
column=
"theme_name"
property=
"themeName"
/>
</resultMap>
<!-- 通用查询结果列 -->
<sql
id=
"Base_Column_List"
>
id,
status,
create_by,
create_time,
create_dept,
update_by,
update_time,
remark,
theme_name
</sql>
</mapper>
datax-ui/src/api/factory/datatheme.js
0 → 100644
View file @
99cb89cd
import
request
from
'@/utils/request'
export
function
listDataTheme
(
data
)
{
return
request
({
url
:
'/data/factory/dataThemes/list'
,
method
:
'get'
,
params
:
data
})
}
export
function
pageDataTheme
(
data
)
{
return
request
({
url
:
'/data/factory/dataThemes/page'
,
method
:
'get'
,
params
:
data
})
}
export
function
getDataTheme
(
id
)
{
return
request
({
url
:
'/data/factory/dataThemes/'
+
id
,
method
:
'get'
})
}
export
function
delDataTheme
(
id
)
{
return
request
({
url
:
'/data/factory/dataThemes/'
+
id
,
method
:
'delete'
})
}
export
function
delDataThemes
(
ids
)
{
return
request
({
url
:
'/data/factory/dataThemes/batch/'
+
ids
,
method
:
'delete'
})
}
export
function
addDataTheme
(
data
)
{
return
request
({
url
:
'/data/factory/dataThemes'
,
method
:
'post'
,
data
:
data
})
}
export
function
updateDataTheme
(
data
)
{
return
request
({
url
:
'/data/factory/dataThemes/'
+
data
.
id
,
method
:
'put'
,
data
:
data
})
}
datax-ui/src/views/factory/datasource/DataSourceAdd.vue
View file @
99cb89cd
...
@@ -24,6 +24,17 @@
...
@@ -24,6 +24,17 @@
></el-option>
></el-option>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
<el-form-item
label=
"数据主题"
prop=
"themeId"
>
<el-select
v-model=
"form.themeId"
placeholder=
"请选择数据主题"
>
<el-option
v-for=
"item in themeOptions"
:key=
"item.id"
:label=
"item.themeName"
:value=
"item.id"
:disabled=
"item.status === '0'"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"数据源名称"
prop=
"sourceName"
>
<el-form-item
label=
"数据源名称"
prop=
"sourceName"
>
<el-input
v-model=
"form.sourceName"
placeholder=
"请输入数据源名称"
/>
<el-input
v-model=
"form.sourceName"
placeholder=
"请输入数据源名称"
/>
</el-form-item>
</el-form-item>
...
@@ -72,6 +83,7 @@
...
@@ -72,6 +83,7 @@
<
script
>
<
script
>
import
{
addDataSource
,
checkConnection
}
from
'@/api/factory/datasource'
import
{
addDataSource
,
checkConnection
}
from
'@/api/factory/datasource'
import
{
listDataTheme
}
from
'@/api/factory/datatheme'
export
default
{
export
default
{
name
:
'DataSourceAdd'
,
name
:
'DataSourceAdd'
,
...
@@ -109,6 +121,7 @@ export default {
...
@@ -109,6 +121,7 @@ export default {
form
:
{
form
:
{
id
:
undefined
,
id
:
undefined
,
dbType
:
undefined
,
dbType
:
undefined
,
themeId
:
undefined
,
sourceName
:
undefined
,
sourceName
:
undefined
,
dbSchema
:
{},
dbSchema
:
{},
status
:
'1'
,
status
:
'1'
,
...
@@ -117,7 +130,10 @@ export default {
...
@@ -117,7 +130,10 @@ export default {
// 表单校验
// 表单校验
rules
:
{
rules
:
{
dbType
:
[
dbType
:
[
{
required
:
true
,
message
:
'数据源类型不能为空'
,
trigger
:
'blur'
}
{
required
:
true
,
message
:
'数据源类型不能为空'
,
trigger
:
'change'
}
],
themeId
:
[
{
required
:
true
,
message
:
'数据主题不能为空'
,
trigger
:
'change'
}
],
],
sourceName
:
[
sourceName
:
[
{
required
:
true
,
message
:
'数据源名称不能为空'
,
trigger
:
'blur'
}
{
required
:
true
,
message
:
'数据源名称不能为空'
,
trigger
:
'blur'
}
...
@@ -154,7 +170,9 @@ export default {
...
@@ -154,7 +170,9 @@ export default {
// 状态数据字典
// 状态数据字典
statusOptions
:
[],
statusOptions
:
[],
// 数据源类型数据字典
// 数据源类型数据字典
dbTypeOptions
:
[]
dbTypeOptions
:
[],
// 数据主题数据字典
themeOptions
:
[]
}
}
},
},
created
()
{
created
()
{
...
@@ -168,11 +186,19 @@ export default {
...
@@ -168,11 +186,19 @@ export default {
this
.
dbTypeOptions
=
response
.
data
this
.
dbTypeOptions
=
response
.
data
}
}
})
})
this
.
getDataThemeList
()
},
},
methods
:
{
methods
:
{
showCard
()
{
showCard
()
{
this
.
$emit
(
'showCard'
,
this
.
showOptions
)
this
.
$emit
(
'showCard'
,
this
.
showOptions
)
},
},
getDataThemeList
()
{
listDataTheme
().
then
(
response
=>
{
if
(
response
.
success
)
{
this
.
themeOptions
=
response
.
data
}
})
},
/** 步骤条下一步 */
/** 步骤条下一步 */
handleNextStep
()
{
handleNextStep
()
{
this
.
$refs
[
'form'
].
validate
(
valid
=>
{
this
.
$refs
[
'form'
].
validate
(
valid
=>
{
...
...
datax-ui/src/views/factory/datasource/DataSourceDetail.vue
View file @
99cb89cd
...
@@ -24,6 +24,17 @@
...
@@ -24,6 +24,17 @@
></el-option>
></el-option>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
<el-form-item
label=
"数据主题"
prop=
"themeId"
>
<el-select
v-model=
"form.themeId"
>
<el-option
v-for=
"item in themeOptions"
:key=
"item.id"
:label=
"item.themeName"
:value=
"item.id"
:disabled=
"item.status === '0'"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"数据源名称"
prop=
"sourceName"
>
<el-form-item
label=
"数据源名称"
prop=
"sourceName"
>
<el-input
v-model=
"form.sourceName"
placeholder=
"请输入数据源名称"
/>
<el-input
v-model=
"form.sourceName"
placeholder=
"请输入数据源名称"
/>
</el-form-item>
</el-form-item>
...
@@ -69,6 +80,7 @@
...
@@ -69,6 +80,7 @@
<
script
>
<
script
>
import
{
getDataSource
,
checkConnection
}
from
'@/api/factory/datasource'
import
{
getDataSource
,
checkConnection
}
from
'@/api/factory/datasource'
import
{
listDataTheme
}
from
'@/api/factory/datatheme'
export
default
{
export
default
{
name
:
'DataSourceDetail'
,
name
:
'DataSourceDetail'
,
...
@@ -102,7 +114,9 @@ export default {
...
@@ -102,7 +114,9 @@ export default {
// 状态数据字典
// 状态数据字典
statusOptions
:
[],
statusOptions
:
[],
// 数据源类型数据字典
// 数据源类型数据字典
dbTypeOptions
:
[]
dbTypeOptions
:
[],
// 数据主题数据字典
themeOptions
:
[]
}
}
},
},
created
()
{
created
()
{
...
@@ -117,6 +131,7 @@ export default {
...
@@ -117,6 +131,7 @@ export default {
this
.
dbTypeOptions
=
response
.
data
this
.
dbTypeOptions
=
response
.
data
}
}
})
})
this
.
getDataThemeList
()
},
},
mounted
()
{
mounted
()
{
this
.
getDataSource
(
this
.
data
.
id
)
this
.
getDataSource
(
this
.
data
.
id
)
...
@@ -125,6 +140,13 @@ export default {
...
@@ -125,6 +140,13 @@ export default {
showCard
()
{
showCard
()
{
this
.
$emit
(
'showCard'
,
this
.
showOptions
)
this
.
$emit
(
'showCard'
,
this
.
showOptions
)
},
},
getDataThemeList
()
{
listDataTheme
().
then
(
response
=>
{
if
(
response
.
success
)
{
this
.
themeOptions
=
response
.
data
}
})
},
/** 获取详情 */
/** 获取详情 */
getDataSource
:
function
(
id
)
{
getDataSource
:
function
(
id
)
{
getDataSource
(
id
).
then
(
response
=>
{
getDataSource
(
id
).
then
(
response
=>
{
...
...
datax-ui/src/views/factory/datasource/DataSourceEdit.vue
View file @
99cb89cd
...
@@ -24,6 +24,17 @@
...
@@ -24,6 +24,17 @@
></el-option>
></el-option>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
<el-form-item
label=
"数据主题"
prop=
"themeId"
>
<el-select
v-model=
"form.themeId"
placeholder=
"请选择数据主题"
>
<el-option
v-for=
"item in themeOptions"
:key=
"item.id"
:label=
"item.themeName"
:value=
"item.id"
:disabled=
"item.status === '0'"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"数据源名称"
prop=
"sourceName"
>
<el-form-item
label=
"数据源名称"
prop=
"sourceName"
>
<el-input
v-model=
"form.sourceName"
placeholder=
"请输入数据源名称"
/>
<el-input
v-model=
"form.sourceName"
placeholder=
"请输入数据源名称"
/>
</el-form-item>
</el-form-item>
...
@@ -72,6 +83,7 @@
...
@@ -72,6 +83,7 @@
<
script
>
<
script
>
import
{
getDataSource
,
updateDataSource
,
checkConnection
}
from
'@/api/factory/datasource'
import
{
getDataSource
,
updateDataSource
,
checkConnection
}
from
'@/api/factory/datasource'
import
{
listDataTheme
}
from
'@/api/factory/datatheme'
export
default
{
export
default
{
name
:
'DataSourceEdit'
,
name
:
'DataSourceEdit'
,
...
@@ -110,7 +122,10 @@ export default {
...
@@ -110,7 +122,10 @@ export default {
// 表单校验
// 表单校验
rules
:
{
rules
:
{
dbType
:
[
dbType
:
[
{
required
:
true
,
message
:
'数据源类型不能为空'
,
trigger
:
'blur'
}
{
required
:
true
,
message
:
'数据源类型不能为空'
,
trigger
:
'change'
}
],
themeId
:
[
{
required
:
true
,
message
:
'数据主题不能为空'
,
trigger
:
'change'
}
],
],
sourceName
:
[
sourceName
:
[
{
required
:
true
,
message
:
'数据源名称不能为空'
,
trigger
:
'blur'
}
{
required
:
true
,
message
:
'数据源名称不能为空'
,
trigger
:
'blur'
}
...
@@ -140,7 +155,9 @@ export default {
...
@@ -140,7 +155,9 @@ export default {
// 状态数据字典
// 状态数据字典
statusOptions
:
[],
statusOptions
:
[],
// 数据源类型数据字典
// 数据源类型数据字典
dbTypeOptions
:
[]
dbTypeOptions
:
[],
// 数据主题数据字典
themeOptions
:
[]
}
}
},
},
created
()
{
created
()
{
...
@@ -155,6 +172,7 @@ export default {
...
@@ -155,6 +172,7 @@ export default {
this
.
dbTypeOptions
=
response
.
data
this
.
dbTypeOptions
=
response
.
data
}
}
})
})
this
.
getDataThemeList
()
},
},
mounted
()
{
mounted
()
{
this
.
getDataSource
(
this
.
data
.
id
)
this
.
getDataSource
(
this
.
data
.
id
)
...
@@ -163,6 +181,13 @@ export default {
...
@@ -163,6 +181,13 @@ export default {
showCard
()
{
showCard
()
{
this
.
$emit
(
'showCard'
,
this
.
showOptions
)
this
.
$emit
(
'showCard'
,
this
.
showOptions
)
},
},
getDataThemeList
()
{
listDataTheme
().
then
(
response
=>
{
if
(
response
.
success
)
{
this
.
themeOptions
=
response
.
data
}
})
},
/** 获取详情 */
/** 获取详情 */
getDataSource
:
function
(
id
)
{
getDataSource
:
function
(
id
)
{
getDataSource
(
id
).
then
(
response
=>
{
getDataSource
(
id
).
then
(
response
=>
{
...
...
datax-ui/src/views/factory/datatheme/DataThemeAdd.vue
0 → 100644
View file @
99cb89cd
<
template
>
<div>
<el-card
class=
"box-card"
shadow=
"always"
>
<div
slot=
"header"
class=
"clearfix"
>
<span>
{{
title
}}
</span>
<el-button-group
style=
"float: right;"
>
<el-button
size=
"mini"
icon=
"el-icon-plus"
round
@
click=
"submitForm"
:loading=
"loadingOptions.loading"
:disabled=
"loadingOptions.isDisabled"
>
{{
loadingOptions
.
loadingText
}}
</el-button>
<el-button
size=
"mini"
icon=
"el-icon-back"
round
@
click=
"showCard"
>
返回
</el-button>
</el-button-group>
</div>
<div
:style=
"classCardbody"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"80px"
>
<el-form-item
label=
"主题名称"
prop=
"themeName"
>
<el-input
v-model=
"form.themeName"
placeholder=
"请输入主题名称"
/>
</el-form-item>
<el-form-item
label=
"状态"
prop=
"status"
>
<el-radio-group
v-model=
"form.status"
>
<el-radio
v-for=
"dict in statusOptions"
:key=
"dict.id"
:label=
"dict.itemText"
>
{{
dict
.
itemValue
}}
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item
label=
"备注"
prop=
"remark"
>
<el-input
v-model=
"form.remark"
type=
"textarea"
placeholder=
"请输入内容"
/>
</el-form-item>
</el-form>
</div>
</el-card>
</div>
</
template
>
<
script
>
import
{
addDataTheme
}
from
'@/api/factory/datatheme'
export
default
{
name
:
'DataThemeAdd'
,
props
:
{
data
:
{
type
:
Object
,
default
:
function
()
{
return
{}
}
}
},
data
()
{
return
{
classCardbody
:
{
overflow
:
'auto'
,
height
:
document
.
body
.
offsetHeight
-
240
+
'px'
},
title
:
'数据主题新增'
,
// 展示切换
showOptions
:
{
data
:
{},
showList
:
true
,
showAdd
:
false
,
showEdit
:
false
,
showDetail
:
false
},
// 保存按钮
loadingOptions
:
{
loading
:
false
,
loadingText
:
'保存'
,
isDisabled
:
false
},
// 表单参数
form
:
{
status
:
'1'
},
// 表单校验
rules
:
{
themeName
:
[
{
required
:
true
,
message
:
'主题名称不能为空'
,
trigger
:
'blur'
}
]
},
// 状态数据字典
statusOptions
:
[]
}
},
created
()
{
this
.
getDicts
(
'sys_common_status'
).
then
(
response
=>
{
if
(
response
.
success
)
{
this
.
statusOptions
=
response
.
data
}
})
},
methods
:
{
showCard
()
{
this
.
$emit
(
'showCard'
,
this
.
showOptions
)
},
/** 提交按钮 */
submitForm
:
function
()
{
this
.
$refs
[
'form'
].
validate
(
valid
=>
{
if
(
valid
)
{
this
.
loadingOptions
.
loading
=
true
this
.
loadingOptions
.
loadingText
=
'保存中...'
this
.
loadingOptions
.
isDisabled
=
true
addDataTheme
(
this
.
form
).
then
(
response
=>
{
if
(
response
.
success
)
{
this
.
$message
.
success
(
'保存成功'
)
setTimeout
(()
=>
{
// 2秒后跳转列表页
this
.
$emit
(
'showCard'
,
this
.
showOptions
)
},
2000
)
}
else
{
this
.
$message
.
error
(
'保存失败'
)
this
.
loadingOptions
.
loading
=
false
this
.
loadingOptions
.
loadingText
=
'保存'
this
.
loadingOptions
.
isDisabled
=
false
}
})
}
})
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
</
style
>
datax-ui/src/views/factory/datatheme/DataThemeDetail.vue
0 → 100644
View file @
99cb89cd
<
template
>
<div>
<el-card
class=
"box-card"
shadow=
"always"
>
<div
slot=
"header"
class=
"clearfix"
>
<span>
{{
title
}}
</span>
<el-button-group
style=
"float: right;"
>
<el-button
size=
"mini"
icon=
"el-icon-back"
round
@
click=
"showCard"
>
返回
</el-button>
</el-button-group>
</div>
<div
:style=
"classCardbody"
>
<el-form
ref=
"form"
:model=
"form"
label-width=
"80px"
disabled
>
<el-form-item
label=
"主题名称"
prop=
"themeName"
>
<el-input
v-model=
"form.themeName"
/>
</el-form-item>
<el-form-item
label=
"状态"
prop=
"status"
>
<el-radio-group
v-model=
"form.status"
>
<el-radio
v-for=
"dict in statusOptions"
:key=
"dict.id"
:label=
"dict.itemText"
>
{{
dict
.
itemValue
}}
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item
label=
"备注"
prop=
"remark"
>
<el-input
v-model=
"form.remark"
type=
"textarea"
/>
</el-form-item>
</el-form>
</div>
</el-card>
</div>
</
template
>
<
script
>
import
{
getDataTheme
}
from
'@/api/factory/datatheme'
export
default
{
name
:
'DataThemeDetail'
,
props
:
{
data
:
{
type
:
Object
,
default
:
function
()
{
return
{}
}
}
},
data
()
{
return
{
classCardbody
:
{
overflow
:
'auto'
,
height
:
document
.
body
.
offsetHeight
-
240
+
'px'
},
title
:
'数据主题详情'
,
// 展示切换
showOptions
:
{
data
:
{},
showList
:
true
,
showAdd
:
false
,
showEdit
:
false
,
showDetail
:
false
},
// 表单参数
form
:
{},
// 状态数据字典
statusOptions
:
[]
}
},
created
()
{
console
.
log
(
'id:'
+
this
.
data
.
id
)
this
.
getDicts
(
'sys_common_status'
).
then
(
response
=>
{
if
(
response
.
success
)
{
this
.
statusOptions
=
response
.
data
}
})
},
mounted
()
{
this
.
getDataTheme
(
this
.
data
.
id
)
},
methods
:
{
showCard
()
{
this
.
$emit
(
'showCard'
,
this
.
showOptions
)
},
/** 获取详情 */
getDataTheme
:
function
(
id
)
{
getDataTheme
(
id
).
then
(
response
=>
{
if
(
response
.
success
)
{
this
.
form
=
response
.
data
}
})
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
</
style
>
datax-ui/src/views/factory/datatheme/DataThemeEdit.vue
0 → 100644
View file @
99cb89cd
<
template
>
<div>
<el-card
class=
"box-card"
shadow=
"always"
>
<div
slot=
"header"
class=
"clearfix"
>
<span>
{{
title
}}
</span>
<el-button-group
style=
"float: right;"
>
<el-button
size=
"mini"
icon=
"el-icon-plus"
round
@
click=
"submitForm"
:loading=
"loadingOptions.loading"
:disabled=
"loadingOptions.isDisabled"
>
{{
loadingOptions
.
loadingText
}}
</el-button>
<el-button
size=
"mini"
icon=
"el-icon-back"
round
@
click=
"showCard"
>
返回
</el-button>
</el-button-group>
</div>
<div
:style=
"classCardbody"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"80px"
>
<el-form-item
label=
"主题名称"
prop=
"themeName"
>
<el-input
v-model=
"form.themeName"
placeholder=
"请输入主题名称"
/>
</el-form-item>
<el-form-item
label=
"状态"
prop=
"status"
>
<el-radio-group
v-model=
"form.status"
>
<el-radio
v-for=
"dict in statusOptions"
:key=
"dict.id"
:label=
"dict.itemText"
>
{{
dict
.
itemValue
}}
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item
label=
"备注"
prop=
"remark"
>
<el-input
v-model=
"form.remark"
type=
"textarea"
placeholder=
"请输入内容"
/>
</el-form-item>
</el-form>
</div>
</el-card>
</div>
</
template
>
<
script
>
import
{
getDataTheme
,
updateDataTheme
}
from
'@/api/factory/datatheme'
export
default
{
name
:
'DataThemeEdit'
,
props
:
{
data
:
{
type
:
Object
,
default
:
function
()
{
return
{}
}
}
},
data
()
{
return
{
classCardbody
:
{
overflow
:
'auto'
,
height
:
document
.
body
.
offsetHeight
-
240
+
'px'
},
title
:
'数据主题编辑'
,
// 展示切换
showOptions
:
{
data
:
{},
showList
:
true
,
showAdd
:
false
,
showEdit
:
false
,
showDetail
:
false
},
// 保存按钮
loadingOptions
:
{
loading
:
false
,
loadingText
:
'保存'
,
isDisabled
:
false
},
// 表单参数
form
:
{},
// 表单校验
rules
:
{
themeName
:
[
{
required
:
true
,
message
:
'主题名称不能为空'
,
trigger
:
'blur'
}
]
},
// 状态数据字典
statusOptions
:
[]
}
},
created
()
{
console
.
log
(
'id:'
+
this
.
data
.
id
)
this
.
getDicts
(
'sys_common_status'
).
then
(
response
=>
{
if
(
response
.
success
)
{
this
.
statusOptions
=
response
.
data
}
})
},
mounted
()
{
this
.
getDataTheme
(
this
.
data
.
id
)
},
methods
:
{
showCard
()
{
this
.
$emit
(
'showCard'
,
this
.
showOptions
)
},
/** 获取详情 */
getDataTheme
:
function
(
id
)
{
getDataTheme
(
id
).
then
(
response
=>
{
if
(
response
.
success
)
{
this
.
form
=
response
.
data
}
})
},
/** 提交按钮 */
submitForm
:
function
()
{
this
.
$refs
[
'form'
].
validate
(
valid
=>
{
if
(
valid
)
{
this
.
loadingOptions
.
loading
=
true
this
.
loadingOptions
.
loadingText
=
'保存中...'
this
.
loadingOptions
.
isDisabled
=
true
updateDataTheme
(
this
.
form
).
then
(
response
=>
{
if
(
response
.
success
)
{
this
.
$message
.
success
(
'保存成功'
)
setTimeout
(()
=>
{
// 2秒后跳转列表页
this
.
$emit
(
'showCard'
,
this
.
showOptions
)
},
2000
)
}
else
{
this
.
$message
.
error
(
'保存失败'
)
this
.
loadingOptions
.
loading
=
false
this
.
loadingOptions
.
loadingText
=
'保存'
this
.
loadingOptions
.
isDisabled
=
false
}
})
}
})
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
</
style
>
datax-ui/src/views/factory/datatheme/DataThemeList.vue
0 → 100644
View file @
99cb89cd
This diff is collapsed.
Click to expand it.
datax-ui/src/views/factory/datatheme/index.vue
0 → 100644
View file @
99cb89cd
<
template
>
<div
class=
"app-container"
>
<transition
name=
"el-zoom-in-center"
>
<data-theme-list
v-if=
"options.showList"
@
showCard=
"showCard"
></data-theme-list>
</transition>
<transition
name=
"el-zoom-in-top"
>
<data-theme-add
v-if=
"options.showAdd"
:data=
"options.data"
@
showCard=
"showCard"
></data-theme-add>
</transition>
<transition
name=
"el-zoom-in-top"
>
<data-theme-edit
v-if=
"options.showEdit"
:data=
"options.data"
@
showCard=
"showCard"
></data-theme-edit>
</transition>
<transition
name=
"el-zoom-in-bottom"
>
<data-theme-detail
v-if=
"options.showDetail"
:data=
"options.data"
@
showCard=
"showCard"
></data-theme-detail>
</transition>
</div>
</
template
>
<
script
>
import
DataThemeList
from
'./DataThemeList'
import
DataThemeAdd
from
'./DataThemeAdd'
import
DataThemeEdit
from
'./DataThemeEdit'
import
DataThemeDetail
from
'./DataThemeDetail'
export
default
{
name
:
'DataTheme'
,
components
:
{
DataThemeList
,
DataThemeAdd
,
DataThemeEdit
,
DataThemeDetail
},
data
()
{
return
{
options
:
{
data
:
{},
showList
:
true
,
showAdd
:
false
,
showEdit
:
false
,
showDetail
:
false
}
}
},
methods
:
{
showCard
(
data
)
{
Object
.
assign
(
this
.
options
,
data
)
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
</
style
>
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