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
68d3dae1
authored
2026-05-21 09:19:14 +0800
by
lihua
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
匿名化评测对象存储支持选择索引数据源,表和字段
1 parent
fad9b555
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
202 additions
and
5 deletions
src/views/data_anonymization/anonTaskCreate.vue
src/views/data_anonymization/anonTaskCreate.vue
View file @
68d3dae
...
...
@@ -562,7 +562,55 @@ const dataSelectInfoItems = ref([{
col
:
'wid60'
,
visible
:
false
,
field
:
'file'
,
},]);
},
{
label
:
'索引数据源'
,
tip
:
''
,
type
:
'select'
,
required
:
false
,
default
:
''
,
block
:
false
,
visible
:
false
,
filterable
:
true
,
props
:
{
label
:
'databaseNameZh'
,
value
:
'guid'
},
clearable
:
true
,
field
:
'indexDataSourceGuid'
,
options
:
[],
},
{
label
:
'索引数据表'
,
tip
:
''
,
type
:
'select'
,
required
:
false
,
default
:
''
,
block
:
false
,
visible
:
false
,
filterable
:
true
,
field
:
'indexTableName'
,
props
:
{
label
:
'tableComment'
,
value
:
'tableName'
},
clearable
:
true
,
options
:
[],
},
{
label
:
'索引字段'
,
tip
:
''
,
type
:
'select'
,
required
:
false
,
default
:
''
,
block
:
false
,
visible
:
false
,
field
:
'indexFieldName'
,
options
:
[],
filterable
:
true
,
clearable
:
true
,
props
:
{
label
:
'chName'
,
value
:
'enName'
},
}]);
const
dataSelectInfoFormRules
=
ref
({
taskName
:
[
required
(
'请输入数据集名称'
)],
...
...
@@ -571,6 +619,8 @@ const dataSelectInfoFormRules = ref({
dataSourceGuid
:
[
required
(
'请选择数据源'
)],
handleType
:
[
required
(
'请选择处理类型'
)],
tableName
:
[
required
(
'请选择数据表'
)],
// indexTableName: [required('请选择索引数据表')],
// indexFieldName: [required('请选择索引字段')],
qualifiedIdentifier
:
[{
type
:
'array'
,
required
:
true
,
trigger
:
'change'
,
message
:
"请选择准标识符"
}],
file
:
[{
validator
:
(
rule
:
any
,
value
:
any
,
callback
:
any
)
=>
{
...
...
@@ -612,6 +662,8 @@ const handleDataSelectFormSelectChange = async (val, row, formInfo) => {
parseFileDataSum
.
value
=
[];
sampleTableData
.
value
=
[];
setDataSelectFormItems
(
Object
.
assign
({},
formInfo
,
{
file
:
!
formInfo
[
'file'
]
?
[]
:
formInfo
[
'file'
],
tableName
:
''
,
qualifiedIdentifier
:
[]
}))
let
item
=
dataSelectInfoItems
.
value
.
find
(
d
=>
d
.
field
==
'tableName'
);
item
&&
(
item
.
options
=
[]);
return
;
}
//清除数据表得值,重新获取下拉列表
...
...
@@ -625,7 +677,10 @@ const handleDataSelectFormSelectChange = async (val, row, formInfo) => {
hadFlag
:
false
});
if
(
res
.
code
==
proxy
.
$passCode
)
{
dsTableList
.
value
=
res
.
data
?.
records
||
[];
dsTableList
.
value
=
res
.
data
?.
records
?.
map
(
d
=>
{
d
.
tableComment
=
d
.
tableComment
||
d
.
tableName
;
return
d
;
})
||
[];
setDataSelectFormItems
(
Object
.
assign
({},
formInfo
,
{
file
:
!
formInfo
[
'file'
]
?
[]
:
formInfo
[
'file'
],
tableName
:
''
,
qualifiedIdentifier
:
[]
}))
let
item
=
dataSelectInfoItems
.
value
.
find
(
d
=>
d
.
field
==
'tableName'
);
item
&&
(
item
.
options
=
dsTableList
.
value
);
...
...
@@ -663,15 +718,101 @@ const handleDataSelectFormSelectChange = async (val, row, formInfo) => {
}
});
}
else
if
(
row
.
field
==
'handleType'
)
{
// 第一种匿名处理类型是不可以选择obs类型的。
// 第一种匿名处理类型是不可以选择obs类型的。
if
(
val
==
'01'
&&
formInfo
.
dataSourceGuid
&&
objectTypesList
.
value
.
includes
(
currDatasourceSelect
.
value
?.
databaseType
))
{
formInfo
.
dataSourceGuid
=
''
;
formInfo
.
tableName
=
''
;
formInfo
.
indexDataSourceGuid
=
''
;
formInfo
.
indexTableName
=
''
;
formInfo
.
indexFieldName
=
''
;
currDatasourceSelect
.
value
=
{};
let
item
=
dataSelectInfoItems
.
value
.
find
(
d
=>
d
.
field
==
'tableName'
);
item
&&
(
item
.
options
=
[]);
}
setDataSelectFormItems
(
formInfo
);
}
else
if
(
row
.
field
==
'indexDataSourceGuid'
)
{
// 清空索引数据表和索引字段
setDataSelectFormItems
(
Object
.
assign
({},
formInfo
,
{
indexTableName
:
''
,
indexFieldName
:
''
}));
let
indexTableItem
=
dataSelectInfoItems
.
value
.
find
(
d
=>
d
.
field
==
'indexTableName'
);
let
indexFieldItem
=
dataSelectInfoItems
.
value
.
find
(
d
=>
d
.
field
==
'indexFieldName'
);
if
(
indexTableItem
)
{
indexTableItem
.
options
=
[];
}
if
(
indexFieldItem
)
{
indexFieldItem
.
options
=
[];
}
if
(
!
val
)
{
// 未选择索引数据源,三个字段都不必填
indexTableItem
&&
(
indexTableItem
.
required
=
false
);
indexFieldItem
&&
(
indexFieldItem
.
required
=
false
);
return
;
}
// 选择了索引数据源,索引数据表和索引字段必填
if
(
indexTableItem
)
{
indexTableItem
.
required
=
true
;
}
if
(
indexFieldItem
)
{
indexFieldItem
.
required
=
true
;
}
// 获取索引数据源的表列表
let
dsInfo
=
dataSourceList
.
value
.
find
(
d
=>
d
.
guid
==
val
);
if
(
!
dsInfo
)
return
;
const
res
:
any
=
await
getDsTableByDs
({
pageSize
:
-
1
,
pageIndex
:
1
,
dataSourceGuid
:
val
,
database
:
dsInfo
.
databaseNameEn
,
databaseType
:
dsInfo
.
databaseType
,
tableName
:
''
,
hadFlag
:
false
});
if
(
res
.
code
==
proxy
.
$passCode
)
{
if
(
indexTableItem
)
{
indexTableItem
.
options
=
res
.
data
?.
records
?.
map
(
d
=>
{
d
.
tableComment
=
d
.
tableComment
||
d
.
tableName
;
return
d
;
})
||
[];
}
}
else
{
proxy
.
$ElMessage
.
error
(
res
.
msg
);
}
}
else
if
(
row
.
field
==
'indexTableName'
)
{
// 清空索引字段
setDataSelectFormItems
(
Object
.
assign
({},
formInfo
,
{
indexFieldName
:
''
}));
let
indexFieldItem
=
dataSelectInfoItems
.
value
.
find
(
d
=>
d
.
field
==
'indexFieldName'
);
if
(
indexFieldItem
)
{
indexFieldItem
.
options
=
[];
}
if
(
!
val
)
return
;
// 获取索引数据表的字段列表
let
indexDsGuid
=
formInfo
.
indexDataSourceGuid
;
let
dsInfo
=
dataSourceList
.
value
.
find
(
d
=>
d
.
guid
==
indexDsGuid
);
if
(
!
dsInfo
)
return
;
const
res
:
any
=
await
getDsTableFieldColumn
({
pageSize
:
50
,
pageIndex
:
1
,
dataSourceGuid
:
indexDsGuid
,
database
:
dsInfo
.
databaseNameEn
,
databaseType
:
dsInfo
.
databaseType
,
tableName
:
val
,
});
if
(
res
?.
code
==
proxy
.
$passCode
)
{
if
(
indexFieldItem
)
{
// 使用与qualifiedIdentifier相同的格式:enName和chName
indexFieldItem
.
options
=
res
.
data
?.
map
(
d
=>
({
enName
:
d
.
columnName
,
chName
:
d
.
columnZhName
||
d
.
columnName
}))
||
[];
}
}
else
{
res
?.
msg
&&
proxy
.
$ElMessage
.
error
(
res
.
msg
);
}
}
}
const
setDataSelectFormItems
=
(
info
,
isDetail
=
false
)
=>
{
// 获取不包含对象存储的数据源列表
let
dsExcludeObs
=
dataSourceList
.
value
.
filter
(
d
=>
!
d
.
storageType
||
d
.
storageType
==
'1'
);
dataSelectInfoItems
.
value
.
forEach
(
item
=>
{
item
.
default
=
info
[
item
.
field
];
if
(
item
.
field
==
'coverageArea'
)
{
...
...
@@ -708,7 +849,19 @@ const setDataSelectFormItems = (info, isDetail = false) => {
}
else
if
(
item
.
field
==
'tableName'
)
{
item
.
visible
=
info
[
'dataSource'
]
==
1
&&
!
(
info
[
'dataSourceGuid'
]
&&
objectTypesList
.
value
.
includes
(
currDatasourceSelect
.
value
?.
databaseType
));
//数据源类型为obs的没有数据表选择
}
else
if
(
item
.
field
==
'dataSourceGuid'
)
{
item
.
options
=
info
.
handleType
==
'02'
?
dataSourceList
.
value
:
dataSourceList
.
value
.
filter
(
d
=>
!
objectTypesList
.
value
.
includes
(
d
.
databaseType
))
item
.
options
=
info
.
handleType
==
'02'
?
dataSourceList
.
value
:
dsExcludeObs
;
}
else
if
(
item
.
field
==
'indexDataSourceGuid'
)
{
item
.
options
=
dsExcludeObs
;
item
.
visible
=
currDatasourceSelect
.
value
?.
storageType
==
'2'
;
}
else
if
([
'indexTableName'
,
'indexFieldName'
].
includes
(
item
.
field
))
{
item
.
visible
=
currDatasourceSelect
.
value
?.
storageType
==
'2'
;
item
.
required
=
!!
info
.
indexDataSourceGuid
;
if
(
item
.
required
)
{
dataSelectInfoFormRules
.
value
[
item
.
field
]
=
[
required
(
`请选择
${
item
.
label
}
`
)];
}
else
{
dataSelectInfoFormRules
.
value
[
item
.
field
]
=
[];
}
item
.
options
=
info
.
indexDataSourceGuid
?
item
.
options
:
[];
}
});
stepsInfo
.
value
=
info
.
handleType
==
'02'
?
reportStepsInfo
.
value
:
originStepsInfo
.
value
;
...
...
@@ -1681,7 +1834,10 @@ onBeforeMount(() => {
hadFlag
:
false
});
if
(
tableRes
?.
code
==
proxy
.
$passCode
)
{
dsTableList
.
value
=
tableRes
.
data
?.
records
||
[];
dsTableList
.
value
=
tableRes
.
data
?.
records
?.
map
(
d
=>
{
d
.
tableComment
=
d
.
tableComment
||
d
.
tableName
;
return
d
;
})
||
[];
let
item
=
dataSelectInfoItems
.
value
.
find
(
item
=>
item
.
field
==
'tableName'
);
item
&&
(
item
.
options
=
dsTableList
.
value
);
}
else
{
...
...
@@ -1709,6 +1865,47 @@ onBeforeMount(() => {
}
});
}
else
{
let
currIndexDatasourceSelect
=
detailInfo
.
value
.
indexDataSourceGuid
&&
dataSourceList
.
value
.
find
(
d
=>
d
.
guid
==
detailInfo
.
value
.
indexDataSourceGuid
);
if
(
currIndexDatasourceSelect
)
{
const
tableRes
:
any
=
await
getDsTableByDs
({
pageSize
:
-
1
,
pageIndex
:
1
,
dataSourceGuid
:
detailInfo
.
value
.
indexDataSourceGuid
,
database
:
currIndexDatasourceSelect
.
databaseNameEn
,
databaseType
:
currIndexDatasourceSelect
.
databaseType
,
tableName
:
''
,
hadFlag
:
false
});
if
(
tableRes
?.
code
==
proxy
.
$passCode
)
{
let
item
=
dataSelectInfoItems
.
value
.
find
(
item
=>
item
.
field
==
'indexTableName'
);
item
&&
(
item
.
options
=
tableRes
.
data
?.
records
?.
map
(
d
=>
{
d
.
tableComment
=
d
.
tableComment
||
d
.
tableName
;
return
d
;
})
||
[]);
}
else
{
proxy
.
$ElMessage
.
error
(
tableRes
.
msg
);
}
getDsTableFieldColumn
({
pageSize
:
50
,
pageIndex
:
1
,
dataSourceGuid
:
currIndexDatasourceSelect
.
guid
,
database
:
currIndexDatasourceSelect
.
databaseNameEn
,
databaseType
:
currIndexDatasourceSelect
.
databaseType
,
tableName
:
detailInfo
.
value
.
indexTableName
,
}).
then
((
res
:
any
)
=>
{
if
(
res
?.
code
==
proxy
.
$passCode
)
{
let
indexFieldsList
=
res
.
data
?.
map
(
d
=>
{
d
.
enName
=
d
.
columnName
;
d
.
chName
=
d
.
columnZhName
;
return
d
;
})
||
[];
let
item
=
dataSelectInfoItems
.
value
.
find
(
item
=>
item
.
field
==
'indexFieldName'
);
item
&&
(
item
.
options
=
indexFieldsList
);
}
else
{
ElMessage
.
error
(
res
.
msg
);
}
});
}
setDataSelectFormItems
(
Object
.
assign
(
detailInfo
.
value
,
{
file
:
detailInfo
.
value
.
filePath
?
[
detailInfo
.
value
.
filePath
]
:
[]
}),
true
);
}
}
else
if
(
dataSource
==
3
)
{
...
...
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