Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
emport-web
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
刘泽志
emport-web
Commits
6e782b7d
Commit
6e782b7d
authored
Feb 17, 2023
by
刘泽志
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
字段元
parent
fd326b87
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
252 additions
and
97 deletions
+252
-97
DataField.js
src/api/emport/DataField.js
+66
-1
index.vue
src/views/emport/emport/index.vue
+29
-9
index.vue
src/views/emport/field/index.vue
+157
-87
No files found.
src/api/emport/DataField.js
View file @
6e782b7d
import
request
from
"@/utils/request"
;
import
request
from
'@/utils/request'
const
prefix
=
'/data/field'
const
prefix
=
'/data/field'
...
@@ -67,3 +67,68 @@ export function resetField(excelId){
...
@@ -67,3 +67,68 @@ export function resetField(excelId){
params
:{
excelId
}
params
:{
excelId
}
})
})
}
}
/**
* 元字段查询
* @param params
* @returns {*}
*/
export
function
queryMetaField
(
params
)
{
return
request
({
url
:
`
${
prefix
}
/meta`
,
method
:
'get'
,
params
})
}
/**
* 新增字段
* @param data
* @returns {*}
*/
export
function
addMetaField
(
data
)
{
return
request
({
url
:
`
${
prefix
}
/meta`
,
method
:
'post'
,
data
})
}
/**
* 修改字段
* @param data
* @returns {*}
*/
export
function
updateMetaField
(
data
)
{
return
request
({
url
:
`
${
prefix
}
/meta/update`
,
method
:
'post'
,
data
})
}
/**
* 删除字段
* @param fieldId
* @returns {*}
*/
export
function
deleteMetaField
(
fieldId
)
{
return
request
({
url
:
`
${
prefix
}
/meta/delete`
,
method
:
'get'
,
params
:{
fieldId
}
})
}
/**
* 查询元字段字典
* @returns {*}
*/
export
function
getMetaFieldDict
()
{
return
request
({
url
:
`
${
prefix
}
/meta/dict`
,
method
:
'get'
,
})
}
src/views/emport/emport/index.vue
View file @
6e782b7d
...
@@ -211,12 +211,12 @@
...
@@ -211,12 +211,12 @@
<el-input-number
v-model=
"fieldDialog.data.sort"
:min=
"0"
:precision=
"0"
/>
<el-input-number
v-model=
"fieldDialog.data.sort"
:min=
"0"
:precision=
"0"
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"数据库字段"
prop=
"field"
>
<el-form-item
label=
"数据库字段"
prop=
"field"
>
<el-select
v-
if=
"false"
v-model=
"fieldDialog.data.field"
:popper-append-to-body=
"false"
>
<el-select
v-
model=
"fieldDialog.data.field"
:popper-append-to-body=
"false"
filterable
>
<el-option
v-for=
"item in
fieldDict"
:key=
"item.id
"
:label=
"item.label"
:value=
"item.value"
<el-option
v-for=
"item in
metaFieldDict"
:key=
"item.value
"
:label=
"item.label"
:value=
"item.value"
></el-option>
></el-option>
</el-select>
</el-select>
<el-autocomplete
v-model=
"fieldDialog.data.field"
:fetch-suggestions=
"fetchSuggestions"
>
<!--
<el-autocomplete v-model="fieldDialog.data.field" :fetch-suggestions="fetchSuggestions">
</el-autocomplete>
</el-autocomplete>
-->
</el-form-item>
</el-form-item>
</el-form>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<div
slot=
"footer"
class=
"dialog-footer"
>
...
@@ -261,10 +261,11 @@
...
@@ -261,10 +261,11 @@
<el-table
v-loading=
"fieldDrawer.queryFieldLoading"
:data=
"fieldDrawer.fieldList"
<el-table
v-loading=
"fieldDrawer.queryFieldLoading"
:data=
"fieldDrawer.fieldList"
border
stripe
style=
"margin-left:6px;"
border
stripe
style=
"margin-left:6px;"
>
>
<el-table-column
align=
"center"
label=
"代码"
prop=
"code"
show-overflow-tooltip
/>
<el-table-column
align=
"center"
label=
"代码"
prop=
"code"
show-overflow-tooltip
width=
"120"
/>
<el-table-column
align=
"center"
label=
"指标名称"
prop=
"title"
show-overflow-tooltip
/>
<el-table-column
align=
"center"
label=
"指标名称"
min-width=
"200"
prop=
"title"
show-overflow-tooltip
/>
<el-table-column
align=
"center"
label=
"数据坐标"
prop=
"coordinate"
show-overflow-tooltip
/>
<el-table-column
align=
"center"
label=
"数据坐标"
prop=
"coordinate"
show-overflow-tooltip
width=
"100"
/>
<el-table-column
align=
"center"
label=
"数据库字段名"
prop=
"field"
show-overflow-tooltip
/>
<el-table-column
align=
"center"
label=
"数据库字段名"
min-width=
"150"
prop=
"fieldName"
show-overflow-tooltip
/>
<el-table-column
align=
"center"
label=
"计量单位"
prop=
"unit"
show-overflow-tooltip
width=
"90"
/>
<el-table-column
align=
"center"
label=
"操作"
width=
"150"
>
<el-table-column
align=
"center"
label=
"操作"
width=
"150"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<el-button
plain
size=
"small"
@
click
.
stop=
"openRuleBindDialog(scope.row)"
>
规则
</el-button>
<el-button
plain
size=
"small"
@
click
.
stop=
"openRuleBindDialog(scope.row)"
>
规则
</el-button>
...
@@ -497,6 +498,7 @@ export default {
...
@@ -497,6 +498,7 @@ export default {
dataSourceList
:
[],
// 数据源列表
dataSourceList
:
[],
// 数据源列表
tableList
:
[],
// 表列表
tableList
:
[],
// 表列表
fieldDict
:
[],
// 字段字典
fieldDict
:
[],
// 字段字典
metaFieldDict
:[],
// 元字段字典
yearDialog
:
{
// 年份dialog
yearDialog
:
{
// 年份dialog
title
:
''
,
title
:
''
,
show
:
false
,
show
:
false
,
...
@@ -600,6 +602,7 @@ export default {
...
@@ -600,6 +602,7 @@ export default {
})
})
this
.
initDataSource
()
this
.
initDataSource
()
this
.
initRuleDict
()
this
.
initRuleDict
()
this
.
initMetaFieldDict
()
},
},
methods
:
{
methods
:
{
// 初始化年份字典
// 初始化年份字典
...
@@ -645,6 +648,17 @@ export default {
...
@@ -645,6 +648,17 @@ export default {
})
})
})
})
},
},
// 初始化元字段字典
initMetaFieldDict
(){
DataField
.
getMetaFieldDict
().
then
(
res
=>
{
this
.
metaFieldDict
=
res
.
data
.
map
(
item
=>
{
return
{
value
:
item
.
id
,
label
:
StringUtil
.
mergeStr
(
item
.
fieldName
,
item
.
fieldComment
)
}
})
})
},
// 初始化数据表列表
// 初始化数据表列表
initTable
(
datasourceId
,
callback
)
{
initTable
(
datasourceId
,
callback
)
{
this
.
queryTableLoading
=
true
this
.
queryTableLoading
=
true
...
@@ -967,7 +981,13 @@ export default {
...
@@ -967,7 +981,13 @@ export default {
this
.
fieldDrawer
.
fieldList
=
[]
this
.
fieldDrawer
.
fieldList
=
[]
this
.
fieldDrawer
.
show
=
true
this
.
fieldDrawer
.
show
=
true
this
.
queryFieldList
()
this
.
queryFieldList
()
this
.
initFieldDict
()
//this.initFieldDict()
},
// 重置分页再查询字段列表
clearPageToSearch
()
{
this
.
fieldDrawer
.
queryForm
.
total
=
0
this
.
fieldDrawer
.
queryForm
.
pageNum
=
1
this
.
queryFieldList
()
},
},
// 查询字段列表
// 查询字段列表
queryFieldList
()
{
queryFieldList
()
{
...
...
src/views/emport/field/index.vue
View file @
6e782b7d
<
template
>
<
template
>
<div
class=
"app-container"
>
<div
class=
"container"
>
<div
class=
"header-operator"
>
<el-form
inline
label-width=
"80px"
>
<el-form
label-width=
"80px"
inline
>
<el-form-item
label=
"字段名"
>
<el-form-item
label=
"字段名"
>
<el-input
v-model=
"queryParam.fieldName"
class=
"mr input"
clearable
placeholder=
"输入名称搜索"
<el-input
v-model=
"queryParam.fieldName"
class=
"mr input"
clearable
placeholder=
"输入名称搜索"
size=
"small"
size=
"small"
/>
/>
</el-form-item>
<el-form-item
label=
"字段类型"
>
<el-input
v-model=
"queryParam.fieldType"
class=
"mr input"
clearable
placeholder=
"输入名称搜索"
size=
"small"
/>
</el-form-item>
<el-form-item
label=
"指标名称"
>
<el-input
v-model=
"queryParam.fieldComment"
class=
"mr input"
clearable
placeholder=
"输入名称搜索"
size=
"small"
/>
</el-form-item>
<el-form-item>
<el-button
:loading=
"queryLoading"
class=
"mr"
icon=
"el-icon-search"
size=
"mini"
type=
"primary"
@
click=
"clearPageToSearch"
>
查询
</el-button>
<el-button
class=
"mr"
size=
"mini"
type=
"success"
@
click=
"addMetaFieldDialog"
>
新增
</el-button>
</el-form-item>
</el-form>
<el-table
v-loading=
"queryLoading"
:data=
"metaFieldList"
border
max-height=
"500"
stripe
>
<el-table-column
:show-overflow-tooltip=
"true"
align=
"center"
label=
"字段名"
prop=
"fieldName"
/>
<el-table-column
:show-overflow-tooltip=
"true"
align=
"center"
label=
"字段类型"
prop=
"fieldType"
/>
<el-table-column
:show-overflow-tooltip=
"true"
align=
"center"
label=
"指标名称"
prop=
"fieldComment"
/>
<el-table-column
:show-overflow-tooltip=
"true"
align=
"center"
label=
"备注"
prop=
"remarks"
/>
<el-table-column
align=
"center"
label=
"操作"
show-overflow-tooltip
width=
"150"
>
<template
slot-scope=
"scope"
>
<el-button
circle
icon=
"el-icon-edit"
plain
size=
"small"
type=
"primary"
@
click
.
stop=
"editMetaFieldDialog(scope.row)"
></el-button>
<el-button
circle
icon=
"el-icon-delete"
plain
size=
"small"
type=
"danger"
@
click
.
stop=
"deleteMetaRule(scope.row)"
></el-button>
</
template
>
</el-table-column>
</el-table>
<pagination
v-show=
"queryParam.total > 0"
:limit
.
sync=
"queryParam.pageSize"
:page
.
sync=
"queryParam.pageNum"
:total=
"queryParam.total"
@
pagination=
"queryMetaFieldList"
/>
<!--字段增改-->
<el-dialog
:close-on-click-modal=
"false"
:title=
"metaFieldDialog.title"
:visible
.
sync=
"metaFieldDialog.show"
append-to-body
width=
"400px"
>
<el-form
ref=
"metaFieldForm"
:model=
"metaFieldDialog.data"
label-width=
"80px"
>
<el-form-item
label=
"字段名"
prop=
"fieldName"
required
>
<el-input
v-model=
"metaFieldDialog.data.fieldName"
size=
"small"
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"字段类型"
>
<el-form-item
label=
"字段类型"
prop=
"fieldType"
required
>
<el-
input
v-model=
"queryParam.fieldType"
class=
"mr input"
clearable
placeholder=
"输入名称搜索"
<el-
select
v-model=
"metaFieldDialog.data.fieldType"
size=
"small"
style=
"width: 160px"
>
size=
"small"
/
>
</el-select
>
</el-form-item>
</el-form-item>
<el-form-item
label=
"指标名称"
>
<el-form-item
label=
"指标名称"
prop=
"fieldComment"
required
>
<el-input
v-model=
"queryParam.fieldComment"
class=
"mr input"
clearable
placeholder=
"输入名称搜索"
<el-input
v-model=
"metaFieldDialog.data.fieldComment"
size=
"small"
/>
size=
"small"
/>
</el-form-item>
</el-form-item>
<el-form-item>
<el-form-item
label=
"备注"
prop=
"remarks"
>
<el-button
type=
"primary"
class=
"mr"
icon=
"el-icon-search"
size=
"mini"
:loading=
"queryLoading"
<el-input
v-model=
"metaFieldDialog.data.remarks"
placeholder=
"备注"
type=
"textarea"
/>
@
click=
"queryRuleList"
>
查询
</el-button>
<el-button
type=
"success"
class=
"mr"
size=
"mini"
@
click=
"openAddruleDialog"
>
新增
</el-button>
</el-form-item>
</el-form-item>
</el-form>
</el-form>
<el-table
v-loading=
"queryLoading"
:data=
"fieldList"
stripe
border
>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-table-column
:show-overflow-tooltip=
"true"
align=
"center"
label=
"字段名"
prop=
"fieldName"
/>
<el-button
type=
"primary"
@
click=
"submitMetaField"
>
确 定
</el-button>
<el-table-column
:show-overflow-tooltip=
"true"
align=
"center"
label=
"字段类型"
prop=
"fieldType"
/>
<el-button
@
click=
"metaFieldDialog.show = false"
>
取 消
</el-button>
<el-table-column
:show-overflow-tooltip=
"true"
align=
"center"
label=
"指标名称"
prop=
"fieldComment"
/>
</div>
<el-table-column
:show-overflow-tooltip=
"true"
align=
"center"
label=
"备注"
prop=
"remarks"
/>
</el-dialog>
<el-table-column
label=
"操作"
align=
"center"
width=
"150"
show-overflow-tooltip
>
<template
slot-scope=
"scope"
>
<el-button
circle
icon=
"el-icon-edit"
plain
size=
"small"
type=
"primary"
@
click
.
stop=
"editRuleDialog(scope.row)"
></el-button>
<el-button
circle
icon=
"el-icon-delete"
plain
size=
"small"
type=
"danger"
@
click
.
stop=
"deleteRule(scope.row)"
></el-button>
</
template
>
</el-table-column>
</el-table>
<pagination
v-show=
"queryParam.total > 0"
:total=
"queryParam.total"
:page
.
sync=
"queryParam.pageNum"
:limit
.
sync=
"queryParam.pageSize"
@
pagination=
"queryRuleList"
/>
<!--字段增改-->
<el-dialog
:title=
"dialogData.title"
@
open=
"openDialog"
:visible
.
sync=
"dialogData.show"
width=
"400px"
:close-on-click-modal=
"false"
append-to-body
>
<el-form
ref=
"fieldForm"
:model=
"dialogData.data"
label-width=
"80px"
>
<el-form-item
required
prop=
"name"
label=
"字段名"
>
<el-input
v-model=
"dialogData.data.name"
size=
"small"
/>
</el-form-item>
<el-form-item
required
label=
"字段类型"
prop=
"type"
>
<el-select
@
change=
"typeChange"
size=
"small"
v-model=
"dialogData.data.type"
style=
"width: 160px"
>
<el-option
v-for=
"item in typeDict"
:key=
"item"
:label=
"item"
:value=
"item"
/>
</el-select>
</el-form-item>
<el-form-item
required
label=
"指标名称"
prop=
"mode"
>
<el-select
@
change=
"modeChange"
size=
"small"
v-model=
"dialogData.data.mode"
style=
"width: 160px"
>
<el-option
v-for=
"item in modeDict"
:key=
"item"
:label=
"item"
:value=
"item"
/>
</el-select>
</el-form-item>
<el-form-item
prop=
"remarks"
label=
"备注"
>
<el-input
v-model=
"dialogData.data.remarks"
placeholder=
"备注"
type=
"textarea"
/>
</el-form-item>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"testRule(dialogData.data)"
>
规则测试
</el-button>
<el-button
type=
"primary"
@
click=
"submitRule"
>
确 定
</el-button>
<el-button
@
click=
"dialogData.show = false"
>
取 消
</el-button>
</div>
</el-dialog>
</div>
</div>
</div>
</template>
</template>
<
script
>
<
script
>
import
*
as
DataField
from
'@/api/emport/DataField'
import
*
as
DataField
from
'@/api/emport/DataField'
import
*
as
DataImport
from
'@/api/emport/DataImport'
import
*
as
DataRule
from
'@/api/emport/DataRule'
import
*
as
DataRule
from
'@/api/emport/DataRule'
import
*
as
DataTemplate
from
'@/api/emport/DataTemplate'
import
*
as
DictData
from
'@/api/emport/DictData'
import
*
as
ExcelData
from
'@/api/emport/ExcelData'
export
default
{
export
default
{
name
:
"Field"
,
name
:
'Field'
,
data
(){
data
()
{
return
{
return
{
queryParam
:{
queryParam
:
{
pageNum
:
1
,
pageNum
:
1
,
pageSize
:
20
,
pageSize
:
20
,
total
:
0
,
fieldName
:
''
,
fieldName
:
''
,
fieldType
:
''
,
fieldType
:
''
,
fieldComment
:
''
fieldComment
:
''
},
},
queryLoading
:
false
,
queryLoading
:
false
,
fieldList
:[],
metaFieldList
:
[],
metaFieldDialog
:
{
title
:
''
,
show
:
false
,
data
:
{}
}
}
},
created
()
{
this
.
queryMetaFieldList
()
},
methods
:
{
// 查询元字段信息
queryMetaFieldList
()
{
this
.
queryLoading
=
true
DataField
.
queryMetaField
({
...
this
.
queryParam
}).
then
(
res
=>
{
if
(
res
.
code
===
200
)
{
this
.
metaFieldList
=
res
.
rows
this
.
queryParam
.
total
=
res
.
total
}
}).
finally
(
_
=>
this
.
queryLoading
=
false
)
},
// 清除分页再查询
clearPageToSearch
()
{
this
.
queryParam
.
total
=
0
this
.
queryParam
.
pageNum
=
1
this
.
queryMetaFieldList
()
},
// 打开添加弹框
addMetaFieldDialog
()
{
this
.
metaFieldDialog
.
title
=
'新增字段'
this
.
metaFieldDialog
.
data
=
{}
this
.
metaFieldDialog
.
show
=
true
},
// 打开编辑弹框
editMetaFieldDialog
(
data
)
{
this
.
metaFieldDialog
.
title
=
'编辑字段'
this
.
metaFieldDialog
.
data
=
{
...
data
}
this
.
metaFieldDialog
.
show
=
true
},
// 删除字段
deleteMetaRule
(
data
)
{
this
.
$confirm
(
`是否删除字段
${
data
.
fieldName
}
?`
,
'删除'
,
{
type
:
'warning'
,
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
beforeClose
:
(
action
,
instance
,
done
)
=>
{
if
(
action
===
'confirm'
)
{
DataField
.
deleteMetaField
(
data
.
id
).
then
(
res
=>
{
done
()
this
.
queryMetaFieldList
()
})
}
else
{
done
()
}
}
}
)
},
// 提交字段信息
submitMetaField
()
{
this
.
$refs
.
metaFieldForm
.
validate
(
validate
=>
{
if
(
validate
)
{
if
(
this
.
metaFieldDialog
.
title
===
'新增字段'
)
{
DataField
.
addMetaField
(
this
.
metaFieldDialog
.
data
).
then
(
res
=>
{
this
.
metaFieldDialog
.
show
=
false
this
.
queryMetaFieldList
()
})
}
else
{
DataRule
.
updateRule
(
this
.
metaFieldDialog
.
data
).
then
(
res
=>
{
this
.
metaFieldDialog
.
show
=
false
this
.
queryMetaFieldList
()
})
}
}
})
}
}
}
}
}
}
...
@@ -112,14 +182,14 @@ export default {
...
@@ -112,14 +182,14 @@ export default {
flex-wrap
:
wrap
;
flex-wrap
:
wrap
;
align-items
:
center
;
align-items
:
center
;
.mr
{
.mr
{
margin-right
:
8px
;
margin-right
:
8px
;
margin-left
:
0
;
margin-left
:
0
;
margin-bottom
:
8px
;
margin-bottom
:
8px
;
}
}
.input
{
.input
{
width
:
250px
;
width
:
250px
;
}
}
}
}
</
style
>
</
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