Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
csbr-daop
/
fe-data-trusted-space
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
96af58b9
authored
2025-01-06 13:59:04 +0800
by
lihua
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
数据质量联调部分修改
1 parent
975c6e0b
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
47 additions
and
47 deletions
pnpm-lock.yaml
src/api/modules/dataQuality.ts
src/views/data_meta/changeDetection.vue
src/views/data_quality/assessDetail.vue
src/views/data_quality/ruleForm.vue
src/views/data_quality/ruleModel.vue
pnpm-lock.yaml
View file @
96af58b
This diff could not be displayed because it is too large.
src/api/modules/dataQuality.ts
View file @
96af58b
...
...
@@ -76,7 +76,7 @@ export const updateRuleBizState = (params) => request({
/** 获取数据库表列表 */
export
const
getDatabase
=
(
params
)
=>
request
({
url
:
`
${
import
.
meta
.
env
.
VITE_APP_
API_BASE
URL
}
/data-source/get-source-list`
,
url
:
`
${
import
.
meta
.
env
.
VITE_APP_
DATA_SOURCE_
URL
}
/data-source/get-source-list`
,
method
:
'post'
,
data
:
params
})
...
...
@@ -138,23 +138,20 @@ export const getRuleTypeList = () => request({
// 获取规则大类的接口
export
const
getLargeCategoryList
=
()
=>
request
({
url
:
`
${
import
.
meta
.
env
.
VITE_APP_API_BASEURL
}
/data-dict/get-data-list`
,
method
:
'post'
,
data
:
{
paramCode
:
"LARGE-CATEGORY"
}
url
:
`
${
import
.
meta
.
env
.
VITE_APP_CONFIG_URL
}
/dict/data/get-by-dictType?dictType=
${
'规则大类'
}
`
,
method
:
'get'
,
})
// 获取规则小类的接口
export
const
getSmallCategoryList
=
()
=>
request
({
url
:
`
${
import
.
meta
.
env
.
VITE_APP_API_BASEURL
}
/data-dict/get-data-list`
,
method
:
'post'
,
data
:
{
paramCode
:
"SMALL-CATEGORY"
}
url
:
`
${
import
.
meta
.
env
.
VITE_APP_CONFIG_URL
}
/dict/data/get-by-dictType?dictType=
${
'规则小类'
}
`
,
method
:
'get'
,
})
// 获取规范性检验规则。
export
const
getCheckRulesList
=
()
=>
request
({
url
:
`
${
import
.
meta
.
env
.
VITE_APP_API_BASEURL
}
/data-dict/get-data-list`
,
method
:
'post'
,
data
:
{
paramCode
:
"REGULAR_RULE"
}
url
:
`
${
import
.
meta
.
env
.
VITE_APP_CONFIG_URL
}
/dict/data/get-by-dictType?dictType=
${
'正则校验'
}
`
,
method
:
'get'
,
})
// 根据规则guid获取规则的详情信息。
...
...
src/views/data_meta/changeDetection.vue
View file @
96af58b
...
...
@@ -144,7 +144,7 @@ const getMetaChangeTableData = () => {
}
const
activeTabName
=
ref
(
'
task
'
);
const
activeTabName
=
ref
(
'
meta
'
);
watch
(()
=>
activeTabName
.
value
,
(
val
)
=>
{
if
(
val
===
"task"
){
...
...
@@ -420,9 +420,7 @@ const metaChangeTableInfo = ref({
// { label: "状态", field: "changeTime", width: 180, },
// { label: "操作时间", field: "changeTime", width: 180, },
],
data
:
[{
guid
:
1
}],
data
:
[],
page
:
{
type
:
"normal"
,
rows
:
0
,
...
...
@@ -486,6 +484,7 @@ onBeforeMount(() => {
</div>
<div
class=
"main_wrap"
>
<el-tabs
v-model=
"activeTabName"
>
<!--
<el-tab-pane
label=
"同步任务变更记录"
name=
"task"
>
<div
class=
"table_tool_wrap"
>
<TableTools
:searchItems=
"tableSearchItemList"
:init=
"false"
searchId=
"detect-table-search"
...
...
@@ -496,6 +495,7 @@ onBeforeMount(() => {
@
tablePageChange=
"taskChangeTablePageChange"
/>
</div>
</el-tab-pane>
-->
<el-tab-pane
label=
"元数据变更记录"
name=
"meta"
>
<div
class=
"table_tool_wrap"
>
<TableTools
:searchItems=
"metaTableSearchItemList"
:init=
"false"
searchId=
"meta-detect-table-search"
...
...
src/views/data_quality/assessDetail.vue
View file @
96af58b
...
...
@@ -238,12 +238,12 @@ const rulesDetailTableBtnClick = (scope, btn) => {
label
:
row
.
ruleName
}];
smallCategoryList
.
value
=
[{
paramV
alue
:
detailInfo
.
value
.
smallCategory
,
paramName
:
row
.
smallCategory
v
alue
:
detailInfo
.
value
.
smallCategory
,
label
:
row
.
smallCategory
}];
largeCategoryList
.
value
=
[{
paramV
alue
:
detailInfo
.
value
.
largeCategory
,
paramName
:
row
.
largeCategory
v
alue
:
detailInfo
.
value
.
largeCategory
,
label
:
row
.
largeCategory
}];
oneRulesDetailDialogVisible
.
value
=
true
;
}
else
{
...
...
@@ -268,12 +268,12 @@ const rulesDetailTableBtnClick = (scope, btn) => {
label
:
row
.
ruleName
}];
smallCategoryList
.
value
=
[{
paramV
alue
:
detailInfo
.
value
.
smallCategory
,
paramName
:
row
.
smallCategory
v
alue
:
detailInfo
.
value
.
smallCategory
,
label
:
row
.
smallCategory
}];
largeCategoryList
.
value
=
[{
paramV
alue
:
detailInfo
.
value
.
largeCategory
,
paramName
:
row
.
largeCategory
v
alue
:
detailInfo
.
value
.
largeCategory
,
label
:
row
.
largeCategory
}];
}
else
{
ElMessage
.
error
(
res
.
msg
);
...
...
src/views/data_quality/ruleForm.vue
View file @
96af58b
...
...
@@ -135,18 +135,18 @@ const rulesListByType: any = computed(() => {
return
{};
}
return
{
char
:
checkRulesList
.
value
.
filter
(
r
=>
r
.
paramValue
==
'length_rule'
||
r
.
paramValue
==
'ch_rule'
||
r
.
paramValue
==
'en_rule'
||
r
.
paramValue
==
'num_value_rule'
||
r
.
paramV
alue
==
'custom_regular_rule'
),
varchar
:
checkRulesList
.
value
.
filter
(
r
=>
r
.
paramValue
==
'length_rule'
||
r
.
paramValue
==
'id_card_rule'
||
r
.
paramValue
==
'phone_number_rule'
||
r
.
paramValue
==
'ch_rule'
||
r
.
paramValue
==
'en_rule'
||
r
.
paramValue
==
'num_value_rule'
||
r
.
paramV
alue
==
'custom_regular_rule'
),
int
:
checkRulesList
.
value
.
filter
(
r
=>
r
.
paramValue
==
'length_rule'
||
r
.
paramValue
==
'num_value_rule'
||
r
.
paramV
alue
==
'custom_regular_rule'
),
date
:
checkRulesList
.
value
.
filter
(
r
=>
r
.
paramValue
==
'date_format_rule'
||
r
.
paramV
alue
==
'custom_regular_rule'
),
datetime
:
checkRulesList
.
value
.
filter
(
r
=>
r
.
paramValue
==
'date_format_rule'
||
r
.
paramV
alue
==
'custom_regular_rule'
),
timestamp
:
checkRulesList
.
value
.
filter
(
r
=>
r
.
paramValue
==
'custom_regular_rule'
||
r
.
paramV
alue
==
'custom_regular_rule'
),
// text: checkRulesList.value.filter(r => r.
paramV
alue == ''),
decimal
:
checkRulesList
.
value
.
filter
(
r
=>
r
.
paramValue
==
'length_rule'
||
r
.
paramValue
==
'precision_rule'
||
r
.
paramValue
==
'num_value_rule'
||
r
.
paramV
alue
==
'custom_regular_rule'
),
// json: checkRulesList.value.filter(r => r.
paramV
alue == ''),
tinyint
:
checkRulesList
.
value
.
filter
(
r
=>
r
.
paramValue
==
'length_rule'
||
r
.
paramValue
==
'num_value_rule'
||
r
.
paramV
alue
==
'custom_regular_rule'
),
time
:
checkRulesList
.
value
.
filter
(
r
=>
r
.
paramV
alue
==
'custom_regular_rule'
),
bit
:
checkRulesList
.
value
.
filter
(
r
=>
r
.
paramValue
==
'ch_rule'
||
r
.
paramValue
==
'en_rule'
||
r
.
paramV
alue
==
'custom_regular_rule'
),
char
:
checkRulesList
.
value
.
filter
(
r
=>
r
.
value
==
'length_rule'
||
r
.
value
==
'ch_rule'
||
r
.
value
==
'en_rule'
||
r
.
value
==
'num_value_rule'
||
r
.
v
alue
==
'custom_regular_rule'
),
varchar
:
checkRulesList
.
value
.
filter
(
r
=>
r
.
value
==
'length_rule'
||
r
.
value
==
'id_card_rule'
||
r
.
value
==
'phone_number_rule'
||
r
.
value
==
'ch_rule'
||
r
.
value
==
'en_rule'
||
r
.
value
==
'num_value_rule'
||
r
.
v
alue
==
'custom_regular_rule'
),
int
:
checkRulesList
.
value
.
filter
(
r
=>
r
.
value
==
'length_rule'
||
r
.
value
==
'num_value_rule'
||
r
.
v
alue
==
'custom_regular_rule'
),
date
:
checkRulesList
.
value
.
filter
(
r
=>
r
.
value
==
'date_format_rule'
||
r
.
v
alue
==
'custom_regular_rule'
),
datetime
:
checkRulesList
.
value
.
filter
(
r
=>
r
.
value
==
'date_format_rule'
||
r
.
v
alue
==
'custom_regular_rule'
),
timestamp
:
checkRulesList
.
value
.
filter
(
r
=>
r
.
value
==
'custom_regular_rule'
||
r
.
v
alue
==
'custom_regular_rule'
),
// text: checkRulesList.value.filter(r => r.
v
alue == ''),
decimal
:
checkRulesList
.
value
.
filter
(
r
=>
r
.
value
==
'length_rule'
||
r
.
value
==
'precision_rule'
||
r
.
value
==
'num_value_rule'
||
r
.
v
alue
==
'custom_regular_rule'
),
// json: checkRulesList.value.filter(r => r.
v
alue == ''),
tinyint
:
checkRulesList
.
value
.
filter
(
r
=>
r
.
value
==
'length_rule'
||
r
.
value
==
'num_value_rule'
||
r
.
v
alue
==
'custom_regular_rule'
),
time
:
checkRulesList
.
value
.
filter
(
r
=>
r
.
v
alue
==
'custom_regular_rule'
),
bit
:
checkRulesList
.
value
.
filter
(
r
=>
r
.
value
==
'ch_rule'
||
r
.
value
==
'en_rule'
||
r
.
v
alue
==
'custom_regular_rule'
),
}
});
...
...
@@ -238,8 +238,8 @@ const panelList: any = ref([
default
:
'1'
,
options
:
props
.
largeCategoryList
,
props
:
{
label
:
'
paramName
'
,
value
:
'
paramV
alue'
label
:
'
label
'
,
value
:
'
v
alue'
},
required
:
true
,
visible
:
true
...
...
@@ -249,8 +249,8 @@ const panelList: any = ref([
placeholder
:
'请选择'
,
field
:
'smallCategory'
,
props
:
{
label
:
'
paramName
'
,
value
:
'
paramV
alue'
label
:
'
label
'
,
value
:
'
v
alue'
},
default
:
''
,
options
:
props
.
smallCategoryList
.
slice
(
6
),
...
...
@@ -1006,7 +1006,7 @@ const setPanelListValue = (item, isSelectChange = false, init = false, radioGrou
}
}
if
(
isSelectChange
)
{
val
[
'smallCategory'
]
=
panelList
.
value
[
2
].
options
[
0
]?.
paramV
alue
;
val
[
'smallCategory'
]
=
panelList
.
value
[
2
].
options
[
0
]?.
v
alue
;
}
else
if
(
!
val
[
'smallCategory'
])
{
val
[
'smallCategory'
]
=
getDefaultSmallCategory
(
formItems
.
value
[
0
].
default
);
}
else
if
(
radioGroupChange
&&
!
init
)
{
//切换规则类型。
...
...
@@ -2306,8 +2306,8 @@ defineExpose({
<
template
#
default
=
"scope"
>
<
el
-
select
v
-
if
=
"!props.readonly || (scope.row.dataType == 'text' || scope.row.dataType == 'json')"
v
-
model
=
"scope.row['checkRule']"
placeholder
=
"请选择"
filterable
clearable
>
<
el
-
option
v
-
for
=
"opt in rulesListByType[scope.row.dataType]"
:
key
=
"opt['
paramV
alue']"
:
label
=
"opt['
paramName']"
:
value
=
"opt['paramV
alue']"
/>
<
el
-
option
v
-
for
=
"opt in rulesListByType[scope.row.dataType]"
:
key
=
"opt['
v
alue']"
:
label
=
"opt['
label']"
:
value
=
"opt['v
alue']"
/>
<
/el-select
>
<
span
v
-
else
>
{{
scope
.
row
.
checkRuleName
??
'--'
}}
<
/span
>
<
/template
>
...
...
src/views/data_quality/ruleModel.vue
View file @
96af58b
...
...
@@ -16,6 +16,9 @@ import {
getSmallCategoryList
,
getLargeCategoryList
,
}
from
'@/api/modules/dataQuality'
;
import
{
getMetaTreeData
}
from
'@/api/modules/dataMetaService'
;
import
ruleForm
from
"../data_quality/ruleForm.vue"
;
import
useUserStore
from
"@/store/modules/user"
;
import
useDataQualityStore
from
"@/store/modules/dataQuality"
;
...
...
@@ -60,7 +63,7 @@ const toSubjectTables: any = ref([]);
const
getSubjectTableTreeData
=
()
=>
{
dsFromTreeDataLoading
.
value
=
true
;
get
SubjectTableTree
({}).
then
((
res
:
any
)
=>
{
get
MetaTreeData
({}).
then
((
res
:
any
)
=>
{
dsFromTreeDataLoading
.
value
=
false
;
if
(
res
.
code
==
proxy
.
$passCode
)
{
dsFromTreeData
.
value
=
res
.
data
?.
map
(
d
=>
{
...
...
@@ -428,17 +431,17 @@ const save = () => {
<div
class=
"operator_panel is-block"
>
<div
class=
"panel_title"
>
<div
class=
"title_text"
>
<span>
选择
主题
表
</span>
<span
class=
"tips_text"
>
选择需要添加质检规则的
主题表
</span>
<span>
选择表
</span>
<span
class=
"tips_text"
>
选择需要添加质检规则的
表,请确保数据库为脱产环境,避免数据质检影响您的生产环境,且允许在该脱产环境建脏数据的库,请知晓!
</span>
</div>
</div>
<TreeTransfer
mode=
"transfer"
:title=
"['
主题
表', '已选表']"
pid=
"parentGuid"
:from-tree-data-loading=
"dsFromTreeDataLoading"
:
lazy=
"true"
:
checkOnClickNode=
"true"
<TreeTransfer
mode=
"transfer"
:title=
"['
可选
表', '已选表']"
pid=
"parentGuid"
:from-tree-data-loading=
"dsFromTreeDataLoading"
:checkOnClickNode=
"true"
:from_checked_all=
"false"
:from_data=
"dsFromTreeData"
:to_data=
"dsToTreeData"
node_key=
"guid"
:transferOpenNode=
"true"
width=
"70%"
:defaultProps=
"
{
label: 'name',
value: 'guid'
}"
:lazyFn="handleSubjectTableLazyFn" @left-check-change="handleSubjectCheckedChange"
}"
height="calc(100% - 64px)">
</TreeTransfer>
</div>
...
...
Write
Preview
Styling with
Markdown
is supported
Attach a file
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 post a comment