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
ec4dd780
Commit
ec4dd780
authored
Aug 31, 2020
by
yuwei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
项目初始化
parent
eebc6381
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
1368 additions
and
28 deletions
+1368
-28
ModelColumnDto.java
...datax/service/data/masterdata/api/dto/ModelColumnDto.java
+4
-11
ModelDto.java
...va/cn/datax/service/data/masterdata/api/dto/ModelDto.java
+3
-3
ModelEntity.java
...datax/service/data/masterdata/api/entity/ModelEntity.java
+4
-4
ModelVo.java
...java/cn/datax/service/data/masterdata/api/vo/ModelVo.java
+2
-2
ModelServiceImpl.java
...ervice/data/masterdata/service/impl/ModelServiceImpl.java
+4
-0
ModelMapper.xml
...terdata-service/src/main/resources/mapper/ModelMapper.xml
+6
-4
MetadataColumnServiceImpl.java
...data/metadata/service/impl/MetadataColumnServiceImpl.java
+2
-2
datamodel.js
datax-ui/src/api/masterdata/datamodel.js
+46
-0
DataModelAdd.vue
datax-ui/src/views/masterdata/datamodel/DataModelAdd.vue
+321
-0
DataModelDetail.vue
datax-ui/src/views/masterdata/datamodel/DataModelDetail.vue
+225
-0
DataModelEdit.vue
datax-ui/src/views/masterdata/datamodel/DataModelEdit.vue
+328
-0
DataModelList.vue
datax-ui/src/views/masterdata/datamodel/DataModelList.vue
+358
-0
index.vue
datax-ui/src/views/masterdata/datamodel/index.vue
+48
-0
index.vue
datax-ui/src/views/masterdata/index.vue
+15
-0
index.vue
datax-ui/src/views/metadata/sqlconsole/index.vue
+1
-1
index.vue
datax-ui/src/views/standard/datadict/index.vue
+1
-1
No files found.
datax-modules/data-masterdata-service-parent/data-masterdata-service-api/src/main/java/cn/datax/service/data/masterdata/api/dto/ModelColumnDto.java
View file @
ec4dd780
...
...
@@ -26,8 +26,6 @@ public class ModelColumnDto implements Serializable {
@ApiModelProperty
(
value
=
"主键ID"
)
@NotBlank
(
message
=
"主键ID不能为空"
,
groups
=
{
ValidationGroups
.
Update
.
class
})
private
String
id
;
@ApiModelProperty
(
value
=
"模型表主键"
)
private
String
modelId
;
@ApiModelProperty
(
value
=
"列名称"
)
@NotBlank
(
message
=
"列名称不能为空"
,
groups
=
{
ValidationGroups
.
Insert
.
class
,
ValidationGroups
.
Update
.
class
})
private
String
columnName
;
...
...
@@ -55,19 +53,14 @@ public class ModelColumnDto implements Serializable {
private
String
isQuery
;
@ApiModelProperty
(
value
=
"查询方式(EQ等于、NE不等于、GT大于、GE大于等于、LT小于、LE小于等于、LIKE模糊、BETWEEN范围)"
)
private
String
queryType
;
@ApiModelProperty
(
value
=
"显示类型(input文本框、textarea文本域、select下拉框、checkbox复选框、radio单选框、datetime日期控件)"
)
private
String
htmlType
;
@ApiModelProperty
(
value
=
"排序"
)
private
Integer
sort
;
@ApiModelProperty
(
value
=
"是否绑定数据标准(0否,1是)"
)
private
String
isBindDict
;
@ApiModelProperty
(
value
=
"绑定数据标准类别"
)
private
String
bindDictTypeId
;
@ApiModelProperty
(
value
=
"绑定数据标准字典字段(GB_CODE,GB_NAME)"
)
private
String
bindDictColumn
;
@ApiModelProperty
(
value
=
"显示类型(input文本框、textarea文本域、select下拉框、checkbox复选框、radio单选框、datetime日期控件)"
)
private
String
htmlType
;
@ApiModelProperty
(
value
=
"排序"
)
private
Integer
sort
;
@ApiModelProperty
(
value
=
"状态"
)
@NotNull
(
message
=
"状态不能为空"
,
groups
=
{
ValidationGroups
.
Insert
.
class
,
ValidationGroups
.
Update
.
class
})
private
String
status
;
@ApiModelProperty
(
value
=
"备注"
)
private
String
remark
;
}
datax-modules/data-masterdata-service-parent/data-masterdata-service-api/src/main/java/cn/datax/service/data/masterdata/api/dto/ModelDto.java
View file @
ec4dd780
...
...
@@ -33,9 +33,9 @@ public class ModelDto implements Serializable {
@ApiModelProperty
(
value
=
"模型名称"
)
@NotBlank
(
message
=
"模型名称不能为空"
,
groups
=
{
ValidationGroups
.
Insert
.
class
,
ValidationGroups
.
Update
.
class
})
private
String
modelName
;
@ApiModelProperty
(
value
=
"
模型编码
"
)
@NotBlank
(
message
=
"
模型编码
不能为空"
,
groups
=
{
ValidationGroups
.
Insert
.
class
,
ValidationGroups
.
Update
.
class
})
private
String
model
Cod
e
;
@ApiModelProperty
(
value
=
"
逻辑表
"
)
@NotBlank
(
message
=
"
逻辑表
不能为空"
,
groups
=
{
ValidationGroups
.
Insert
.
class
,
ValidationGroups
.
Update
.
class
})
private
String
model
LogicTabl
e
;
@ApiModelProperty
(
value
=
"模型列信息"
)
@Valid
@NotEmpty
(
message
=
"模型列信息不能为空"
,
groups
=
{
ValidationGroups
.
Insert
.
class
,
ValidationGroups
.
Update
.
class
})
...
...
datax-modules/data-masterdata-service-parent/data-masterdata-service-api/src/main/java/cn/datax/service/data/masterdata/api/entity/ModelEntity.java
View file @
ec4dd780
...
...
@@ -31,14 +31,14 @@ public class ModelEntity extends DataScopeBaseEntity {
private
String
modelName
;
/**
*
模型编码
*
逻辑表
*/
private
String
model
Cod
e
;
private
String
model
LogicTabl
e
;
/**
*
模型数据库
表
*
物理
表
*/
private
String
modelTable
;
private
String
model
Physical
Table
;
@TableField
(
exist
=
false
)
private
List
<
ModelColumnEntity
>
modelColumns
;
...
...
datax-modules/data-masterdata-service-parent/data-masterdata-service-api/src/main/java/cn/datax/service/data/masterdata/api/vo/ModelVo.java
View file @
ec4dd780
...
...
@@ -25,7 +25,7 @@ public class ModelVo implements Serializable {
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
,
timezone
=
"GMT+8"
)
private
LocalDateTime
createTime
;
private
String
modelName
;
private
String
model
Cod
e
;
private
String
modelTable
;
private
String
model
LogicTabl
e
;
private
String
model
Physical
Table
;
private
List
<
ModelColumnVo
>
modelColumns
;
}
datax-modules/data-masterdata-service-parent/data-masterdata-service/src/main/java/cn/datax/service/data/masterdata/service/impl/ModelServiceImpl.java
View file @
ec4dd780
...
...
@@ -9,12 +9,15 @@ import cn.datax.service.data.masterdata.mapstruct.ModelMapper;
import
cn.datax.service.data.masterdata.dao.ModelDao
;
import
cn.datax.common.base.BaseServiceImpl
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.date.DatePattern
;
import
cn.hutool.core.date.DateUtil
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
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.Date
;
import
java.util.List
;
/**
...
...
@@ -42,6 +45,7 @@ public class ModelServiceImpl extends BaseServiceImpl<ModelDao, ModelEntity> imp
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
ModelEntity
saveModel
(
ModelDto
modelDto
)
{
ModelEntity
model
=
modelMapper
.
toEntity
(
modelDto
);
model
.
setModelPhysicalTable
(
"dynamic_"
+
DateUtil
.
format
(
new
Date
(),
DatePattern
.
PURE_DATETIME_PATTERN
));
modelDao
.
insert
(
model
);
String
modelId
=
model
.
getId
();
List
<
ModelColumnEntity
>
modelColumns
=
model
.
getModelColumns
();
...
...
datax-modules/data-masterdata-service-parent/data-masterdata-service/src/main/resources/mapper/ModelMapper.xml
View file @
ec4dd780
...
...
@@ -13,9 +13,11 @@
<result
column=
"update_time"
property=
"updateTime"
/>
<result
column=
"remark"
property=
"remark"
/>
<result
column=
"model_name"
property=
"modelName"
/>
<result
column=
"model_code"
property=
"modelCode"
/>
<result
column=
"model_table"
property=
"modelTable"
/>
<result
column=
"model_logic_table"
property=
"modelLogicTable"
/>
<result
column=
"model_physical_table"
property=
"modelPhysicalTable"
/>
</resultMap>
<resultMap
id=
"ExtendResultMap"
type=
"cn.datax.service.data.masterdata.api.entity.ModelEntity"
extends=
"BaseResultMap"
>
<collection
property=
"modelColumns"
column=
"{modelId=id}"
select=
"getModelColumnList"
></collection>
</resultMap>
...
...
@@ -29,7 +31,7 @@
update_by,
update_time,
remark,
model_name, model_
code, mode
l_table
model_name, model_
logic_table, model_physica
l_table
</sql>
<select
id=
"getModelColumnList"
resultType=
"cn.datax.service.data.masterdata.api.entity.ModelColumnEntity"
>
...
...
@@ -42,7 +44,7 @@
</if>
</select>
<select
id=
"selectById"
resultMap=
"
Base
ResultMap"
>
<select
id=
"selectById"
resultMap=
"
Extend
ResultMap"
>
SELECT
<include
refid=
"Base_Column_List"
></include>
FROM masterdata_model
...
...
datax-modules/data-metadata-service-parent/data-metadata-service/src/main/java/cn/datax/service/data/metadata/service/impl/MetadataColumnServiceImpl.java
View file @
ec4dd780
...
...
@@ -86,7 +86,7 @@ public class MetadataColumnServiceImpl extends BaseServiceImpl<MetadataColumnDao
List
<
MetadataSourceEntity
>
sourceList
=
(
List
<
MetadataSourceEntity
>)
redisService
.
get
(
RedisConstant
.
METADATA_SOURCE_KEY
);
Stream
<
MetadataSourceEntity
>
stream
=
Optional
.
ofNullable
(
sourceList
).
orElseGet
(
ArrayList:
:
new
).
stream
().
filter
(
s
->
DataConstant
.
EnableState
.
ENABLE
.
getKey
().
equals
(
s
.
getStatus
()));
if
(
StrUtil
.
isNotBlank
(
metadataColumnQuery
.
getSourceId
()))
{
stream
.
filter
(
s
->
metadataColumnQuery
.
getSourceId
().
equals
(
s
.
getId
()));
stream
=
stream
.
filter
(
s
->
metadataColumnQuery
.
getSourceId
().
equals
(
s
.
getId
()));
}
List
<
MetadataTreeVo
>
list
=
stream
.
map
(
m
->
{
MetadataTreeVo
tree
=
new
MetadataTreeVo
();
...
...
@@ -105,7 +105,7 @@ public class MetadataColumnServiceImpl extends BaseServiceImpl<MetadataColumnDao
List
<
MetadataTableEntity
>
tableList
=
(
List
<
MetadataTableEntity
>)
redisService
.
hget
(
RedisConstant
.
METADATA_TABLE_KEY
,
id
);
Stream
<
MetadataTableEntity
>
stream
=
Optional
.
ofNullable
(
tableList
).
orElseGet
(
ArrayList:
:
new
).
stream
();
if
(
StrUtil
.
isNotBlank
(
tableId
))
{
stream
.
filter
(
s
->
tableId
.
equals
(
s
.
getId
()));
stream
=
stream
.
filter
(
s
->
tableId
.
equals
(
s
.
getId
()));
}
List
<
MetadataTreeVo
>
children
=
stream
.
map
(
m
->
{
MetadataTreeVo
tree
=
new
MetadataTreeVo
();
...
...
datax-ui/src/api/masterdata/datamodel.js
0 → 100644
View file @
ec4dd780
import
request
from
'@/utils/request'
export
function
pageDataModel
(
data
)
{
return
request
({
url
:
'/data/masterdata/models/page'
,
method
:
'get'
,
params
:
data
})
}
export
function
getDataModel
(
id
)
{
return
request
({
url
:
'/data/masterdata/models/'
+
id
,
method
:
'get'
})
}
export
function
delDataModel
(
id
)
{
return
request
({
url
:
'/data/masterdata/models/'
+
id
,
method
:
'delete'
})
}
export
function
delDataModels
(
ids
)
{
return
request
({
url
:
'/data/masterdata/models/batch/'
+
ids
,
method
:
'delete'
})
}
export
function
addDataModel
(
data
)
{
return
request
({
url
:
'/data/masterdata/models'
,
method
:
'post'
,
data
:
data
})
}
export
function
updateDataModel
(
data
)
{
return
request
({
url
:
'/data/masterdata/models/'
+
data
.
id
,
method
:
'put'
,
data
:
data
})
}
datax-ui/src/views/masterdata/datamodel/DataModelAdd.vue
0 → 100644
View file @
ec4dd780
<
template
>
<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
:loading=
"loadingOptions.loading"
:disabled=
"loadingOptions.isDisabled"
@
click=
"submitForm"
>
{{
loadingOptions
.
loadingText
}}
</el-button>
<el-button
size=
"mini"
icon=
"el-icon-back"
round
@
click=
"showCard"
>
返回
</el-button>
</el-button-group>
</div>
<div
class=
"body-wrapper"
>
<el-tabs
v-model=
"activeName"
>
<el-tab-pane
label=
"基本信息"
name=
"first"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"80px"
>
<el-form-item
label=
"模型名称"
prop=
"modelName"
>
<el-input
v-model=
"form.modelName"
placeholder=
"请输入模型名称"
/>
</el-form-item>
<el-form-item
label=
"逻辑表"
prop=
"modelLogicTable"
>
<el-input
v-model=
"form.modelLogicTable"
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>
</el-tab-pane>
<el-tab-pane
label=
"字段信息"
name=
"second"
>
<el-button
@
click=
"addRow"
>
添加
</el-button>
<el-form
ref=
"table"
:model=
"form"
:rules=
"rules"
size=
"mini"
>
<el-table
:data=
"form.modelColumns"
border
style=
"width: 100%; margin: 15px 0;"
>
<el-table-column
label=
"序号"
type=
"index"
align=
"center"
width=
"55"
/>
<el-table-column
label=
"列名称"
>
<template
slot-scope=
"scope"
>
<el-form-item
:prop=
"'modelColumns.' + scope.$index + '.columnName'"
:rules=
"rules.columnName"
>
<el-input
v-model=
"scope.row.columnName"
clearable
placeholder=
"请输入列名称"
/>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"列描述"
>
<
template
slot-scope=
"scope"
>
<el-form-item
:prop=
"'modelColumns.' + scope.$index + '.columnComment'"
:rules=
"rules.columnComment"
>
<el-input
v-model=
"scope.row.columnComment"
clearable
placeholder=
"请输入列描述"
/>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"列类型"
>
<
template
slot-scope=
"scope"
>
<el-form-item
:prop=
"'modelColumns.' + scope.$index + '.columnType'"
:rules=
"rules.columnType"
>
<el-input
v-model=
"scope.row.columnType"
clearable
placeholder=
"请输入列类型"
/>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"长度"
width=
"70"
>
<
template
slot-scope=
"scope"
>
<el-form-item
:prop=
"'modelColumns.' + scope.$index + '.columnLength'"
>
<el-input-number
v-model=
"scope.row.columnLength"
style=
"width: 50px;"
:controls=
"false"
/>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"小数位"
width=
"70"
>
<
template
slot-scope=
"scope"
>
<el-form-item
:prop=
"'modelColumns.' + scope.$index + '.columnScale'"
>
<el-input-number
v-model=
"scope.row.columnScale"
style=
"width: 50px;"
:controls=
"false"
/>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"主键"
align=
"center"
width=
"55"
>
<
template
slot-scope=
"scope"
>
<el-form-item
:prop=
"'modelColumns.' + scope.$index + '.isPk'"
>
<el-checkbox
v-model=
"scope.row.isPk"
true-label=
"1"
false-label=
"0"
/>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"必填"
align=
"center"
width=
"55"
>
<
template
slot-scope=
"scope"
>
<el-form-item
:prop=
"'modelColumns.' + scope.$index + '.isRequired'"
>
<el-checkbox
v-model=
"scope.row.isRequired"
true-label=
"1"
false-label=
"0"
/>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"插入"
align=
"center"
width=
"55"
>
<
template
slot-scope=
"scope"
>
<el-form-item
:prop=
"'modelColumns.' + scope.$index + '.isInsert'"
>
<el-checkbox
v-model=
"scope.row.isInsert"
true-label=
"1"
false-label=
"0"
/>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"编辑"
align=
"center"
width=
"55"
>
<
template
slot-scope=
"scope"
>
<el-form-item
:prop=
"'modelColumns.' + scope.$index + '.isEdit'"
>
<el-checkbox
v-model=
"scope.row.isEdit"
true-label=
"1"
false-label=
"0"
/>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"列表"
align=
"center"
width=
"55"
>
<
template
slot-scope=
"scope"
>
<el-form-item
:prop=
"'modelColumns.' + scope.$index + '.isList'"
>
<el-checkbox
v-model=
"scope.row.isList"
true-label=
"1"
false-label=
"0"
/>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"查询"
align=
"center"
width=
"55"
>
<
template
slot-scope=
"scope"
>
<el-form-item
:prop=
"'modelColumns.' + scope.$index + '.isQuery'"
>
<el-checkbox
v-model=
"scope.row.isQuery"
true-label=
"1"
false-label=
"0"
/>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"查询方式"
width=
"120"
>
<
template
slot-scope=
"scope"
>
<el-form-item
:prop=
"'modelColumns.' + scope.$index + '.queryType'"
>
<el-select
v-model=
"scope.row.queryType"
clearable
placeholder=
"请选择"
>
<el-option
v-for=
"item in queryTypeOptions"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
/>
</el-select>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"显示类型"
width=
"120"
>
<
template
slot-scope=
"scope"
>
<el-form-item
:prop=
"'modelColumns.' + scope.$index + '.htmlType'"
:rules=
"rules.htmlType"
>
<el-select
v-model=
"scope.row.htmlType"
clearable
placeholder=
"请选择"
>
<el-option
v-for=
"item in htmlTypeOptions"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
/>
</el-select>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"操作"
align=
"center"
>
<
template
slot-scope=
"scope"
>
<el-form-item>
<el-button
:disabled=
"scope.$index === 0"
@
click=
"upRow(scope.$index)"
icon=
"el-icon-arrow-up"
circle
></el-button>
<el-button
:disabled=
"scope.$index === (form.modelColumns.length - 1)"
@
click=
"downRow(scope.$index)"
icon=
"el-icon-arrow-down"
circle
></el-button>
<el-button
@
click=
"delRow(scope.$index)"
icon=
"el-icon-delete"
circle
></el-button>
</el-form-item>
</
template
>
</el-table-column>
</el-table>
</el-form>
</el-tab-pane>
</el-tabs>
</div>
</el-card>
</template>
<
script
>
import
{
addDataModel
}
from
'@/api/masterdata/datamodel'
export
default
{
name
:
'DataModelAdd'
,
props
:
{
data
:
{
type
:
Object
,
default
:
function
()
{
return
{}
}
}
},
data
()
{
return
{
title
:
'数据模型新增'
,
// 展示切换
showOptions
:
{
data
:
{},
showList
:
true
,
showAdd
:
false
,
showEdit
:
false
,
showDetail
:
false
},
// 保存按钮
loadingOptions
:
{
loading
:
false
,
loadingText
:
'保存'
,
isDisabled
:
false
},
// 表单参数
form
:
{
status
:
'1'
,
modelColumns
:
[]
},
// 表单校验
rules
:
{
modelName
:
[
{
required
:
true
,
message
:
'模型名称不能为空'
,
trigger
:
'blur'
}
],
modelLogicTable
:
[
{
required
:
true
,
message
:
'逻辑表不能为空'
,
trigger
:
'blur'
}
],
columnName
:
[
{
required
:
true
,
message
:
'列名称不能为空'
,
trigger
:
'blur'
}
],
columnComment
:
[
{
required
:
true
,
message
:
'列描述不能为空'
,
trigger
:
'blur'
}
],
columnType
:
[
{
required
:
true
,
message
:
'列类型不能为空'
,
trigger
:
'blur'
}
],
htmlType
:
[
{
required
:
true
,
message
:
'显示类型不能为空'
,
trigger
:
'change'
}
]
},
// 状态数据字典
statusOptions
:
[],
activeName
:
'first'
,
// 查询方式数据字典
queryTypeOptions
:
[],
// 显示类型数据字典
htmlTypeOptions
:
[]
}
},
created
()
{
this
.
getDicts
(
'sys_common_status'
).
then
(
response
=>
{
if
(
response
.
success
)
{
this
.
statusOptions
=
response
.
data
}
})
this
.
getDicts
(
'data_query_type'
).
then
(
response
=>
{
if
(
response
.
success
)
{
this
.
queryTypeOptions
=
response
.
data
}
})
this
.
getDicts
(
'data_html_type'
).
then
(
response
=>
{
if
(
response
.
success
)
{
this
.
htmlTypeOptions
=
response
.
data
}
})
},
methods
:
{
showCard
()
{
this
.
$emit
(
'showCard'
,
this
.
showOptions
)
},
addRow
()
{
const
item
=
{
columnName
:
''
,
columnComment
:
''
,
columnType
:
''
,
columnLength
:
'255'
,
columnScale
:
'0'
,
isPk
:
'0'
,
isRequired
:
'0'
,
isInsert
:
'0'
,
isEdit
:
'0'
,
isList
:
'0'
,
isQuery
:
'0'
,
queryType
:
''
,
htmlType
:
'input'
}
this
.
form
.
modelColumns
.
push
(
item
)
},
upRow
(
index
)
{
if
(
index
>
0
)
{
const
data
=
this
.
form
.
modelColumns
[
index
-
1
]
this
.
form
.
modelColumns
.
splice
(
index
-
1
,
1
)
this
.
form
.
modelColumns
.
splice
(
index
,
0
,
data
)
}
else
{
this
.
$message
.
warning
(
'已经是第一条,不可上移'
)
return
false
}
},
downRow
(
index
)
{
if
((
index
+
1
)
===
this
.
form
.
modelColumns
.
length
)
{
this
.
$message
.
warning
(
'已经是最后一条,不可下移'
)
return
false
}
else
{
const
data
=
this
.
form
.
modelColumns
[
index
+
1
]
this
.
form
.
modelColumns
.
splice
(
index
+
1
,
1
)
this
.
form
.
modelColumns
.
splice
(
index
,
0
,
data
)
}
},
delRow
(
index
)
{
this
.
form
.
modelColumns
.
splice
(
index
,
1
)
},
/** 提交按钮 */
submitForm
:
function
()
{
this
.
$refs
[
'form'
].
validate
(
valid
=>
{
if
(
valid
)
{
this
.
loadingOptions
.
loading
=
true
this
.
loadingOptions
.
loadingText
=
'保存中...'
this
.
loadingOptions
.
isDisabled
=
true
addDataModel
(
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
>
.el-card
::v-deep
.el-card__body
{
height
:
calc
(
100vh
-
230px
);
overflow-y
:
auto
;
}
</
style
>
datax-ui/src/views/masterdata/datamodel/DataModelDetail.vue
0 → 100644
View file @
ec4dd780
<
template
>
<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
class=
"body-wrapper"
>
<el-tabs
v-model=
"activeName"
>
<el-tab-pane
label=
"基本信息"
name=
"first"
>
<el-form
ref=
"form"
:model=
"form"
label-width=
"80px"
disabled
>
<el-form-item
label=
"模型名称"
>
<el-input
v-model=
"form.modelName"
placeholder=
"请输入模型名称"
/>
</el-form-item>
<el-form-item
label=
"逻辑表"
>
<el-input
v-model=
"form.modelLogicTable"
placeholder=
"请输入逻辑表"
/>
</el-form-item>
<el-form-item
label=
"状态"
>
<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=
"备注"
>
<el-input
v-model=
"form.remark"
type=
"textarea"
placeholder=
"请输入内容"
/>
</el-form-item>
</el-form>
</el-tab-pane>
<el-tab-pane
label=
"字段信息"
name=
"second"
>
<el-form
ref=
"table"
:model=
"form"
size=
"mini"
disabled
>
<el-table
:data=
"form.modelColumns"
border
style=
"width: 100%; margin: 15px 0;"
>
<el-table-column
label=
"序号"
type=
"index"
align=
"center"
width=
"55"
/>
<el-table-column
label=
"列名称"
>
<template
slot-scope=
"scope"
>
<el-form-item>
<el-input
v-model=
"scope.row.columnName"
clearable
placeholder=
"请输入列名称"
/>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"列描述"
>
<
template
slot-scope=
"scope"
>
<el-form-item>
<el-input
v-model=
"scope.row.columnComment"
clearable
placeholder=
"请输入列描述"
/>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"列类型"
>
<
template
slot-scope=
"scope"
>
<el-form-item>
<el-input
v-model=
"scope.row.columnType"
clearable
placeholder=
"请输入列类型"
/>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"长度"
width=
"70"
>
<
template
slot-scope=
"scope"
>
<el-form-item>
<el-input-number
v-model=
"scope.row.columnLength"
style=
"width: 50px;"
:controls=
"false"
/>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"小数位"
width=
"70"
>
<
template
slot-scope=
"scope"
>
<el-form-item>
<el-input-number
v-model=
"scope.row.columnScale"
style=
"width: 50px;"
:controls=
"false"
/>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"主键"
align=
"center"
width=
"55"
>
<
template
slot-scope=
"scope"
>
<el-form-item>
<el-checkbox
v-model=
"scope.row.isPk"
true-label=
"1"
false-label=
"0"
/>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"必填"
align=
"center"
width=
"55"
>
<
template
slot-scope=
"scope"
>
<el-form-item>
<el-checkbox
v-model=
"scope.row.isRequired"
true-label=
"1"
false-label=
"0"
/>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"插入"
align=
"center"
width=
"55"
>
<
template
slot-scope=
"scope"
>
<el-form-item>
<el-checkbox
v-model=
"scope.row.isInsert"
true-label=
"1"
false-label=
"0"
/>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"编辑"
align=
"center"
width=
"55"
>
<
template
slot-scope=
"scope"
>
<el-form-item>
<el-checkbox
v-model=
"scope.row.isEdit"
true-label=
"1"
false-label=
"0"
/>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"列表"
align=
"center"
width=
"55"
>
<
template
slot-scope=
"scope"
>
<el-form-item>
<el-checkbox
v-model=
"scope.row.isList"
true-label=
"1"
false-label=
"0"
/>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"查询"
align=
"center"
width=
"55"
>
<
template
slot-scope=
"scope"
>
<el-form-item>
<el-checkbox
v-model=
"scope.row.isQuery"
true-label=
"1"
false-label=
"0"
/>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"查询方式"
width=
"120"
>
<
template
slot-scope=
"scope"
>
<el-form-item>
<el-select
v-model=
"scope.row.queryType"
clearable
placeholder=
"请选择"
>
<el-option
v-for=
"item in queryTypeOptions"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
/>
</el-select>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"显示类型"
width=
"120"
>
<
template
slot-scope=
"scope"
>
<el-form-item>
<el-select
v-model=
"scope.row.htmlType"
clearable
placeholder=
"请选择"
>
<el-option
v-for=
"item in htmlTypeOptions"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
/>
</el-select>
</el-form-item>
</
template
>
</el-table-column>
</el-table>
</el-form>
</el-tab-pane>
</el-tabs>
</div>
</el-card>
</template>
<
script
>
import
{
getDataModel
}
from
'@/api/masterdata/datamodel'
export
default
{
name
:
'DataModelDetail'
,
props
:
{
data
:
{
type
:
Object
,
default
:
function
()
{
return
{}
}
}
},
data
()
{
return
{
title
:
'数据模型详情'
,
// 展示切换
showOptions
:
{
data
:
{},
showList
:
true
,
showAdd
:
false
,
showEdit
:
false
,
showDetail
:
false
},
// 表单参数
form
:
{},
// 状态数据字典
statusOptions
:
[],
activeName
:
'first'
,
queryTypeOptions
:
[],
htmlTypeOptions
:
[]
}
},
created
()
{
console
.
log
(
'id:'
+
this
.
data
.
id
)
this
.
getDicts
(
'sys_common_status'
).
then
(
response
=>
{
if
(
response
.
success
)
{
this
.
statusOptions
=
response
.
data
}
})
this
.
getDicts
(
'data_query_type'
).
then
(
response
=>
{
if
(
response
.
success
)
{
this
.
queryTypeOptions
=
response
.
data
}
})
this
.
getDicts
(
'data_html_type'
).
then
(
response
=>
{
if
(
response
.
success
)
{
this
.
htmlTypeOptions
=
response
.
data
}
})
},
mounted
()
{
this
.
getDataModel
(
this
.
data
.
id
)
},
methods
:
{
showCard
()
{
this
.
$emit
(
'showCard'
,
this
.
showOptions
)
},
/** 获取详情 */
getDataModel
:
function
(
id
)
{
getDataModel
(
id
).
then
(
response
=>
{
if
(
response
.
success
)
{
this
.
form
=
response
.
data
}
})
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.el-card
::v-deep
.el-card__body
{
height
:
calc
(
100vh
-
230px
);
overflow-y
:
auto
;
}
</
style
>
datax-ui/src/views/masterdata/datamodel/DataModelEdit.vue
0 → 100644
View file @
ec4dd780
<
template
>
<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
:loading=
"loadingOptions.loading"
:disabled=
"loadingOptions.isDisabled"
@
click=
"submitForm"
>
{{
loadingOptions
.
loadingText
}}
</el-button>
<el-button
size=
"mini"
icon=
"el-icon-back"
round
@
click=
"showCard"
>
返回
</el-button>
</el-button-group>
</div>
<div
class=
"body-wrapper"
>
<el-tabs
v-model=
"activeName"
>
<el-tab-pane
label=
"基本信息"
name=
"first"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"80px"
>
<el-form-item
label=
"模型名称"
prop=
"modelName"
>
<el-input
v-model=
"form.modelName"
placeholder=
"请输入模型名称"
/>
</el-form-item>
<el-form-item
label=
"逻辑表"
prop=
"modelLogicTable"
>
<el-input
v-model=
"form.modelLogicTable"
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>
</el-tab-pane>
<el-tab-pane
label=
"字段信息"
name=
"second"
>
<el-button
@
click=
"addRow"
>
添加
</el-button>
<el-form
ref=
"table"
:model=
"form"
:rules=
"rules"
size=
"mini"
>
<el-table
:data=
"form.modelColumns"
border
style=
"width: 100%; margin: 15px 0;"
>
<el-table-column
label=
"序号"
type=
"index"
align=
"center"
width=
"55"
/>
<el-table-column
label=
"列名称"
>
<template
slot-scope=
"scope"
>
<el-form-item
:prop=
"'modelColumns.' + scope.$index + '.columnName'"
:rules=
"rules.columnName"
>
<el-input
v-model=
"scope.row.columnName"
clearable
placeholder=
"请输入列名称"
/>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"列描述"
>
<
template
slot-scope=
"scope"
>
<el-form-item
:prop=
"'modelColumns.' + scope.$index + '.columnComment'"
:rules=
"rules.columnComment"
>
<el-input
v-model=
"scope.row.columnComment"
clearable
placeholder=
"请输入列描述"
/>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"列类型"
>
<
template
slot-scope=
"scope"
>
<el-form-item
:prop=
"'modelColumns.' + scope.$index + '.columnType'"
:rules=
"rules.columnType"
>
<el-input
v-model=
"scope.row.columnType"
clearable
placeholder=
"请输入列类型"
/>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"长度"
width=
"90"
>
<
template
slot-scope=
"scope"
>
<el-form-item
:prop=
"'modelColumns.' + scope.$index + '.columnLength'"
>
<el-input-number
v-model=
"scope.row.columnLength"
style=
"width: 70px;"
:controls=
"false"
/>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"小数位"
width=
"70"
>
<
template
slot-scope=
"scope"
>
<el-form-item
:prop=
"'modelColumns.' + scope.$index + '.columnScale'"
>
<el-input-number
v-model=
"scope.row.columnScale"
style=
"width: 50px;"
:controls=
"false"
/>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"主键"
align=
"center"
width=
"55"
>
<
template
slot-scope=
"scope"
>
<el-form-item
:prop=
"'modelColumns.' + scope.$index + '.isPk'"
>
<el-checkbox
v-model=
"scope.row.isPk"
true-label=
"1"
false-label=
"0"
/>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"必填"
align=
"center"
width=
"55"
>
<
template
slot-scope=
"scope"
>
<el-form-item
:prop=
"'modelColumns.' + scope.$index + '.isRequired'"
>
<el-checkbox
v-model=
"scope.row.isRequired"
true-label=
"1"
false-label=
"0"
/>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"插入"
align=
"center"
width=
"55"
>
<
template
slot-scope=
"scope"
>
<el-form-item
:prop=
"'modelColumns.' + scope.$index + '.isInsert'"
>
<el-checkbox
v-model=
"scope.row.isInsert"
true-label=
"1"
false-label=
"0"
/>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"编辑"
align=
"center"
width=
"55"
>
<
template
slot-scope=
"scope"
>
<el-form-item
:prop=
"'modelColumns.' + scope.$index + '.isEdit'"
>
<el-checkbox
v-model=
"scope.row.isEdit"
true-label=
"1"
false-label=
"0"
/>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"列表"
align=
"center"
width=
"55"
>
<
template
slot-scope=
"scope"
>
<el-form-item
:prop=
"'modelColumns.' + scope.$index + '.isList'"
>
<el-checkbox
v-model=
"scope.row.isList"
true-label=
"1"
false-label=
"0"
/>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"查询"
align=
"center"
width=
"55"
>
<
template
slot-scope=
"scope"
>
<el-form-item
:prop=
"'modelColumns.' + scope.$index + '.isQuery'"
>
<el-checkbox
v-model=
"scope.row.isQuery"
true-label=
"1"
false-label=
"0"
/>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"查询方式"
width=
"120"
>
<
template
slot-scope=
"scope"
>
<el-form-item
:prop=
"'modelColumns.' + scope.$index + '.queryType'"
>
<el-select
v-model=
"scope.row.queryType"
clearable
placeholder=
"请选择"
>
<el-option
v-for=
"item in queryTypeOptions"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
/>
</el-select>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"显示类型"
width=
"120"
>
<
template
slot-scope=
"scope"
>
<el-form-item
:prop=
"'modelColumns.' + scope.$index + '.htmlType'"
:rules=
"rules.htmlType"
>
<el-select
v-model=
"scope.row.htmlType"
clearable
placeholder=
"请选择"
>
<el-option
v-for=
"item in htmlTypeOptions"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
/>
</el-select>
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
label=
"操作"
align=
"center"
>
<
template
slot-scope=
"scope"
>
<el-form-item>
<el-button
:disabled=
"scope.$index === 0"
@
click=
"upRow(scope.$index)"
icon=
"el-icon-arrow-up"
circle
></el-button>
<el-button
:disabled=
"scope.$index === (form.modelColumns.length - 1)"
@
click=
"downRow(scope.$index)"
icon=
"el-icon-arrow-down"
circle
></el-button>
<el-button
@
click=
"delRow(scope.$index)"
icon=
"el-icon-delete"
circle
></el-button>
</el-form-item>
</
template
>
</el-table-column>
</el-table>
</el-form>
</el-tab-pane>
</el-tabs>
</div>
</el-card>
</template>
<
script
>
import
{
getDataModel
,
updateDataModel
}
from
'@/api/masterdata/datamodel'
export
default
{
name
:
'DataModelEdit'
,
props
:
{
data
:
{
type
:
Object
,
default
:
function
()
{
return
{}
}
}
},
data
()
{
return
{
title
:
'数据模型编辑'
,
// 展示切换
showOptions
:
{
data
:
{},
showList
:
true
,
showAdd
:
false
,
showEdit
:
false
,
showDetail
:
false
},
// 保存按钮
loadingOptions
:
{
loading
:
false
,
loadingText
:
'保存'
,
isDisabled
:
false
},
// 表单参数
form
:
{},
// 表单校验
rules
:
{
modelName
:
[
{
required
:
true
,
message
:
'模型名称不能为空'
,
trigger
:
'blur'
}
],
modelLogicTable
:
[
{
required
:
true
,
message
:
'逻辑表不能为空'
,
trigger
:
'blur'
}
],
columnName
:
[
{
required
:
true
,
message
:
'列名称不能为空'
,
trigger
:
'blur'
}
],
columnComment
:
[
{
required
:
true
,
message
:
'列描述不能为空'
,
trigger
:
'blur'
}
],
columnType
:
[
{
required
:
true
,
message
:
'列类型不能为空'
,
trigger
:
'blur'
}
],
htmlType
:
[
{
required
:
true
,
message
:
'显示类型不能为空'
,
trigger
:
'change'
}
]
},
// 状态数据字典
statusOptions
:
[],
activeName
:
'first'
,
queryTypeOptions
:
[],
htmlTypeOptions
:
[]
}
},
created
()
{
console
.
log
(
'id:'
+
this
.
data
.
id
)
this
.
getDicts
(
'sys_common_status'
).
then
(
response
=>
{
if
(
response
.
success
)
{
this
.
statusOptions
=
response
.
data
}
})
this
.
getDicts
(
'data_query_type'
).
then
(
response
=>
{
if
(
response
.
success
)
{
this
.
queryTypeOptions
=
response
.
data
}
})
this
.
getDicts
(
'data_html_type'
).
then
(
response
=>
{
if
(
response
.
success
)
{
this
.
htmlTypeOptions
=
response
.
data
}
})
},
mounted
()
{
this
.
getDataModel
(
this
.
data
.
id
)
},
methods
:
{
showCard
()
{
this
.
$emit
(
'showCard'
,
this
.
showOptions
)
},
/** 获取详情 */
getDataModel
:
function
(
id
)
{
getDataModel
(
id
).
then
(
response
=>
{
if
(
response
.
success
)
{
this
.
form
=
response
.
data
}
})
},
addRow
()
{
const
item
=
{
columnName
:
''
,
columnComment
:
''
,
columnType
:
''
,
columnLength
:
'255'
,
columnScale
:
'0'
,
isPk
:
'0'
,
isRequired
:
'0'
,
isInsert
:
'0'
,
isEdit
:
'0'
,
isList
:
'0'
,
isQuery
:
'0'
,
queryType
:
''
,
htmlType
:
'input'
}
this
.
form
.
modelColumns
.
push
(
item
)
},
upRow
(
index
)
{
if
(
index
>
0
)
{
const
data
=
this
.
form
.
modelColumns
[
index
-
1
]
this
.
form
.
modelColumns
.
splice
(
index
-
1
,
1
)
this
.
form
.
modelColumns
.
splice
(
index
,
0
,
data
)
}
else
{
this
.
$message
.
warning
(
'已经是第一条,不可上移'
)
return
false
}
},
downRow
(
index
)
{
if
((
index
+
1
)
===
this
.
form
.
modelColumns
.
length
)
{
this
.
$message
.
warning
(
'已经是最后一条,不可下移'
)
return
false
}
else
{
const
data
=
this
.
form
.
modelColumns
[
index
+
1
]
this
.
form
.
modelColumns
.
splice
(
index
+
1
,
1
)
this
.
form
.
modelColumns
.
splice
(
index
,
0
,
data
)
}
},
delRow
(
index
)
{
this
.
form
.
modelColumns
.
splice
(
index
,
1
)
},
/** 提交按钮 */
submitForm
:
function
()
{
this
.
$refs
[
'form'
].
validate
(
valid
=>
{
if
(
valid
)
{
this
.
loadingOptions
.
loading
=
true
this
.
loadingOptions
.
loadingText
=
'保存中...'
this
.
loadingOptions
.
isDisabled
=
true
updateDataModel
(
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
>
.el-card
::v-deep
.el-card__body
{
height
:
calc
(
100vh
-
230px
);
overflow-y
:
auto
;
}
</
style
>
datax-ui/src/views/masterdata/datamodel/DataModelList.vue
0 → 100644
View file @
ec4dd780
<
template
>
<el-card
class=
"box-card"
shadow=
"always"
>
<el-form
ref=
"queryForm"
:model=
"queryParams"
:inline=
"true"
>
<el-form-item
label=
"模型名称"
prop=
"modelName"
>
<el-input
v-model=
"queryParams.modelName"
placeholder=
"请输入模型名称"
clearable
size=
"small"
@
keyup
.
enter
.
native=
"handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
icon=
"el-icon-search"
size=
"mini"
@
click=
"handleQuery"
>
搜索
</el-button>
<el-button
icon=
"el-icon-refresh"
size=
"mini"
@
click=
"resetQuery"
>
重置
</el-button>
</el-form-item>
</el-form>
<el-row
type=
"flex"
justify=
"space-between"
>
<el-col
:span=
"12"
>
<el-button-group>
<el-button
type=
"primary"
icon=
"el-icon-plus"
size=
"mini"
@
click=
"handleAdd"
>
新增
</el-button>
<el-button
type=
"success"
icon=
"el-icon-edit-outline"
size=
"mini"
:disabled=
"single"
@
click=
"handleEdit"
>
修改
</el-button>
<el-button
type=
"info"
icon=
"el-icon-view"
size=
"mini"
:disabled=
"single"
@
click=
"handleDetail"
>
详情
</el-button>
<el-button
type=
"danger"
icon=
"el-icon-delete"
size=
"mini"
:disabled=
"multiple"
@
click=
"handleBatchDelete"
>
删除
</el-button>
</el-button-group>
</el-col>
<el-col
:span=
"12"
>
<div
class=
"right-toolbar"
>
<el-tooltip
content=
"密度"
effect=
"dark"
placement=
"top"
>
<el-dropdown
trigger=
"click"
@
command=
"handleCommand"
>
<el-button
circle
size=
"mini"
>
<svg-icon
class-name=
"size-icon"
icon-class=
"colum-height"
/>
</el-button>
<el-dropdown-menu
slot=
"dropdown"
>
<el-dropdown-item
command=
"medium"
>
正常
</el-dropdown-item>
<el-dropdown-item
command=
"small"
>
中等
</el-dropdown-item>
<el-dropdown-item
command=
"mini"
>
紧凑
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</el-tooltip>
<el-tooltip
content=
"刷新"
effect=
"dark"
placement=
"top"
>
<el-button
circle
size=
"mini"
@
click=
"handleRefresh"
>
<svg-icon
class-name=
"size-icon"
icon-class=
"shuaxin"
/>
</el-button>
</el-tooltip>
<el-tooltip
content=
"列设置"
effect=
"dark"
placement=
"top"
>
<el-popover
placement=
"bottom"
width=
"100"
trigger=
"click"
>
<el-checkbox-group
v-model=
"checkedTableColumns"
@
change=
"handleCheckedColsChange"
>
<el-checkbox
v-for=
"(item, index) in tableColumns"
:key=
"index"
:label=
"item.prop"
>
{{
item
.
label
}}
</el-checkbox>
</el-checkbox-group>
<span
slot=
"reference"
>
<el-button
circle
size=
"mini"
>
<svg-icon
class-name=
"size-icon"
icon-class=
"shezhi"
/>
</el-button>
</span>
</el-popover>
</el-tooltip>
</div>
</el-col>
</el-row>
<el-table
v-loading=
"loading"
:data=
"tableDataList"
border
tooltip-effect=
"dark"
:size=
"tableSize"
:height=
"tableHeight"
style=
"width: 100%;margin: 15px 0;"
@
selection-change=
"handleSelectionChange"
>
<el-table-column
type=
"selection"
width=
"55"
align=
"center"
/>
<el-table-column
label=
"序号"
width=
"55"
align=
"center"
>
<template
slot-scope=
"scope"
>
<span>
{{
scope
.
$index
+
1
}}
</span>
</
template
>
</el-table-column>
<
template
v-for=
"(item, index) in tableColumns"
>
<el-table-column
v-if=
"item.show"
:key=
"index"
:prop=
"item.prop"
:label=
"item.label"
:formatter=
"item.formatter"
align=
"center"
show-overflow-tooltip
/>
</
template
>
<el-table-column
label=
"操作"
align=
"center"
class-name=
"small-padding fixed-width"
>
<
template
slot-scope=
"scope"
>
<el-popover
placement=
"left"
trigger=
"click"
>
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-edit-outline"
@
click=
"handleEdit(scope.row)"
>
修改
</el-button>
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-view"
@
click=
"handleDetail(scope.row)"
>
详情
</el-button>
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-delete"
@
click=
"handleDelete(scope.row)"
>
删除
</el-button>
<el-button
slot=
"reference"
>
操作
</el-button>
</el-popover>
</
template
>
</el-table-column>
</el-table>
<el-pagination
:page-sizes=
"[10, 20, 50, 100]"
layout=
"total, sizes, prev, pager, next, jumper"
:current-page
.
sync=
"queryParams.pageNum"
:page-size
.
sync=
"queryParams.pageSize"
:total=
"total"
@
size-change=
"handleSizeChange"
@
current-change=
"handleCurrentChange"
/>
</el-card>
</template>
<
script
>
import
{
pageDataModel
,
delDataModel
,
delDataModels
}
from
'@/api/masterdata/datamodel'
export
default
{
name
:
'DataModelList'
,
data
()
{
return
{
tableHeight
:
document
.
body
.
offsetHeight
-
310
+
'px'
,
// 展示切换
showOptions
:
{
data
:
{},
showList
:
true
,
showAdd
:
false
,
showEdit
:
false
,
showDetail
:
false
},
// 遮罩层
loading
:
true
,
// 选中数组
ids
:
[],
// 非单个禁用
single
:
true
,
// 非多个禁用
multiple
:
true
,
// 表格头
tableColumns
:
[
{
prop
:
'modelName'
,
label
:
'模型名称'
,
show
:
true
},
{
prop
:
'modelLogicTable'
,
label
:
'模型逻辑表'
,
show
:
true
},
{
prop
:
'status'
,
label
:
'状态'
,
show
:
true
,
formatter
:
this
.
statusFormatter
},
{
prop
:
'createTime'
,
label
:
'创建时间'
,
show
:
true
}
],
// 默认选择中表格头
checkedTableColumns
:
[],
tableSize
:
'medium'
,
// 状态数据字典
statusOptions
:
[],
// 表格数据
tableDataList
:
[],
// 总数据条数
total
:
0
,
// 查询参数
queryParams
:
{
pageNum
:
1
,
pageSize
:
20
,
modelName
:
''
}
}
},
created
()
{
this
.
getDicts
(
'sys_common_status'
).
then
(
response
=>
{
if
(
response
.
success
)
{
this
.
statusOptions
=
response
.
data
}
})
this
.
getList
()
},
mounted
()
{
this
.
initCols
()
},
methods
:
{
/** 查询数据源列表 */
getList
()
{
this
.
loading
=
true
pageDataModel
(
this
.
queryParams
).
then
(
response
=>
{
this
.
loading
=
false
if
(
response
.
success
)
{
const
{
data
}
=
response
this
.
tableDataList
=
data
.
data
this
.
total
=
data
.
total
}
})
},
initCols
()
{
this
.
checkedTableColumns
=
this
.
tableColumns
.
map
(
col
=>
col
.
prop
)
},
handleCheckedColsChange
(
val
)
{
this
.
tableColumns
.
forEach
(
col
=>
{
if
(
!
this
.
checkedTableColumns
.
includes
(
col
.
prop
))
{
col
.
show
=
false
}
else
{
col
.
show
=
true
}
})
},
handleCommand
(
command
)
{
this
.
tableSize
=
command
},
/** 搜索按钮操作 */
handleQuery
()
{
this
.
queryParams
.
pageNum
=
1
this
.
getList
()
},
/** 重置按钮操作 */
resetQuery
()
{
this
.
queryParams
=
{
pageNum
:
1
,
pageSize
:
20
,
modelName
:
''
}
this
.
handleQuery
()
},
/** 刷新列表 */
handleRefresh
()
{
this
.
getList
()
},
/** 多选框选中数据 */
handleSelectionChange
(
selection
)
{
this
.
ids
=
selection
.
map
(
item
=>
item
.
id
)
this
.
single
=
selection
.
length
!==
1
this
.
multiple
=
!
selection
.
length
},
/** 新增按钮操作 */
handleAdd
()
{
this
.
showOptions
.
data
=
{}
this
.
showOptions
.
showList
=
false
this
.
showOptions
.
showAdd
=
true
this
.
showOptions
.
showEdit
=
false
this
.
showOptions
.
showDetail
=
false
this
.
$emit
(
'showCard'
,
this
.
showOptions
)
},
/** 修改按钮操作 */
handleEdit
(
row
)
{
this
.
showOptions
.
data
.
id
=
row
.
id
||
this
.
ids
[
0
]
this
.
showOptions
.
showList
=
false
this
.
showOptions
.
showAdd
=
false
this
.
showOptions
.
showEdit
=
true
this
.
showOptions
.
showDetail
=
false
this
.
$emit
(
'showCard'
,
this
.
showOptions
)
},
/** 详情按钮操作 */
handleDetail
(
row
)
{
this
.
showOptions
.
data
.
id
=
row
.
id
||
this
.
ids
[
0
]
this
.
showOptions
.
showList
=
false
this
.
showOptions
.
showAdd
=
false
this
.
showOptions
.
showEdit
=
false
this
.
showOptions
.
showDetail
=
true
this
.
$emit
(
'showCard'
,
this
.
showOptions
)
},
/** 删除按钮操作 */
handleDelete
(
row
)
{
this
.
$confirm
(
'选中数据将被永久删除, 是否继续?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(()
=>
{
delDataModel
(
row
.
id
).
then
(
response
=>
{
if
(
response
.
success
)
{
this
.
$message
.
success
(
'删除成功'
)
this
.
getList
()
}
})
}).
catch
(()
=>
{
})
},
/** 批量删除按钮操作 */
handleBatchDelete
()
{
if
(
!
this
.
ids
.
length
)
{
this
.
$message
({
message
:
'请先选择需要操作的数据'
,
type
:
'warning'
})
}
this
.
$message
.
warning
(
'不支持批量删除'
)
},
handleSizeChange
(
val
)
{
console
.
log
(
`每页
${
val
}
条`
)
this
.
queryParams
.
pageNum
=
1
this
.
queryParams
.
pageSize
=
val
this
.
getList
()
},
handleCurrentChange
(
val
)
{
console
.
log
(
`当前页:
${
val
}
`
)
this
.
queryParams
.
pageNum
=
val
this
.
getList
()
},
statusFormatter
(
row
,
column
,
cellValue
,
index
)
{
const
dictLabel
=
this
.
selectDictLabel
(
this
.
statusOptions
,
cellValue
)
if
(
cellValue
===
'1'
)
{
return
<
el
-
tag
type
=
'success'
>
{
dictLabel
}
<
/el-tag
>
}
else
{
return
<
el
-
tag
type
=
'warning'
>
{
dictLabel
}
<
/el-tag
>
}
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.right-toolbar
{
float
:
right
;
}
.el-card
::v-deep
.el-card__body
{
height
:
calc
(
100vh
-
170px
);
}
</
style
>
datax-ui/src/views/masterdata/datamodel/index.vue
0 → 100644
View file @
ec4dd780
<
template
>
<div
class=
"app-container"
>
<transition
name=
"el-zoom-in-center"
>
<data-model-list
v-if=
"options.showList"
@
showCard=
"showCard"
/>
</transition>
<transition
name=
"el-zoom-in-top"
>
<data-model-add
v-if=
"options.showAdd"
:data=
"options.data"
@
showCard=
"showCard"
/>
</transition>
<transition
name=
"el-zoom-in-top"
>
<data-model-edit
v-if=
"options.showEdit"
:data=
"options.data"
@
showCard=
"showCard"
/>
</transition>
<transition
name=
"el-zoom-in-bottom"
>
<data-model-detail
v-if=
"options.showDetail"
:data=
"options.data"
@
showCard=
"showCard"
/>
</transition>
</div>
</
template
>
<
script
>
import
DataModelList
from
'./DataModelList'
import
DataModelAdd
from
'./DataModelAdd'
import
DataModelEdit
from
'./DataModelEdit'
import
DataModelDetail
from
'./DataModelDetail'
export
default
{
name
:
'DataModel'
,
components
:
{
DataModelList
,
DataModelAdd
,
DataModelEdit
,
DataModelDetail
},
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
>
datax-ui/src/views/masterdata/index.vue
0 → 100644
View file @
ec4dd780
<
template
>
<div
class=
"app-container"
>
Masterdata
</div>
</
template
>
<
script
>
export
default
{
name
:
'Masterdata'
}
</
script
>
<
style
lang=
"scss"
scoped
>
</
style
>
datax-ui/src/views/metadata/sqlconsole/index.vue
View file @
ec4dd780
...
...
@@ -29,7 +29,7 @@
<sql-editor
ref=
"sqleditor"
:value=
"sqlText"
style=
"height: 300px;margin: 20px 0;"
style=
"height: 300px;
margin: 20px 0;"
@
changeTextarea=
"changeTextarea($event)"
/>
</el-col>
...
...
datax-ui/src/views/standard/datadict/index.vue
View file @
ec4dd780
...
...
@@ -22,7 +22,7 @@ import DataDictEdit from './DataDictEdit'
import
DataDictDetail
from
'./DataDictDetail'
export
default
{
name
:
'
ChangeRecord
'
,
name
:
'
DataDict
'
,
components
:
{
DataDictList
,
DataDictAdd
,
DataDictEdit
,
DataDictDetail
},
data
()
{
return
{
...
...
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