Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
N
nse-ui
概览
Overview
Details
Activity
Cycle Analytics
版本库
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
问题
0
Issues
0
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
Members
Collapse sidebar
Close sidebar
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
吴超
nse-ui
Commits
2d6d34d3
Commit
2d6d34d3
authored
Aug 25, 2025
by
ningjihai
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
项目管理
parent
922f75be
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
141 行增加
和
303 行删除
+141
-303
src/views/project/Project/ProjectEditDialog.vue
+139
-301
src/views/project/Project/list.vue
+2
-2
没有找到文件。
src/views/project/Project/ProjectEditDialog.vue
View file @
2d6d34d3
...
@@ -137,12 +137,12 @@
...
@@ -137,12 +137,12 @@
<div
class=
"schema-header"
>
<div
class=
"schema-header"
>
<div
class=
"section-title"
>
SCHEMA
</div>
<div
class=
"section-title"
>
SCHEMA
</div>
<div
class=
"schema-select-all"
>
<div
class=
"schema-select-all"
>
<el-checkbox
<
!-- <
el-checkbox
v-model="selectAllSchemas"
v-model="selectAllSchemas"
@change="handleSelectAllSchemas"
@change="handleSelectAllSchemas"
>
>
全选
全选
</el-checkbox>
</el-checkbox>
-->
<span
class=
"schema-count"
>
{{ selectedSchemas.length }}/{{ allSchemasCompute.length }}
</span>
<span
class=
"schema-count"
>
{{ selectedSchemas.length }}/{{ allSchemasCompute.length }}
</span>
</div>
</div>
</div>
</div>
...
@@ -185,7 +185,7 @@
...
@@ -185,7 +185,7 @@
</div>
</div>
<el-scrollbar
height=
"150px"
>
<el-scrollbar
height=
"150px"
>
<el-checkbox-group
v-model=
"selectedDomains"
>
<el-checkbox-group
v-model=
"selectedDomains"
@
change=
"handlechangeSelectDomains"
>
<div
<div
v-for=
"domain in group.list"
v-for=
"domain in group.list"
:key=
"domain.id"
:key=
"domain.id"
...
@@ -303,37 +303,31 @@ const dialogVisible = computed({
...
@@ -303,37 +303,31 @@ const dialogVisible = computed({
// 初始化标志
// 初始化标志
const
initialized
=
ref
(
false
)
const
initialized
=
ref
(
false
)
// 监听对话框显示状态变化
// 监听对话框显示状态变化
watch
(
dialogVisible
,
(
newVal
)
=>
{
watch
(
dialogVisible
,
(
newVal
)
=>
{
if
(
newVal
&&
!
initialized
.
value
)
{
if
(
newVal
&&
!
initialized
.
value
)
{
// 对话框打开且未初始化时执行
console
.
log
(
'初始化对话框数据'
)
initDialog
()
initDialog
()
}
else
if
(
!
newVal
)
{
}
else
if
(
!
newVal
)
{
console
.
log
(
'重置对话框数据'
)
// 对话框关闭时重置初始化标志
initialized
.
value
=
false
initialized
.
value
=
false
}
}
},
{
deep
:
true
})
},
{
deep
:
true
})
// 当对话框显示时执行的函数
// 当对话框显示时执行的函数
const
initDialog
=
()
=>
{
const
initDialog
=
()
=>
{
console
.
log
(
'对话框已打开,执行初始化操作'
)
querySelectOrDic
()
querySelectOrDic
()
initialized
.
value
=
true
initialized
.
value
=
true
}
}
const
querySelectOrDic
=
()
=>
{
const
querySelectOrDic
=
()
=>
{
selectProDataSource
({
selectProDataSource
({
systemstyle
:
1
systemstyle
:
1
}).
then
(
res
=>
{
}).
then
(
res
=>
{
console
.
log
(
'selectProDataSourceRes'
,
res
)
sourceTypeList
.
value
=
res
.
data
sourceTypeList
.
value
=
res
.
data
dbFilter
.
value
.
type
=
res
.
data
.
length
>
0
?
res
.
data
[
res
.
data
.
length
-
1
].
text
:
''
dbFilter
.
value
.
type
=
res
.
data
.
length
>
0
?
res
.
data
[
res
.
data
.
length
-
1
].
text
:
''
})
})
}
}
const
reset
=
()
=>
{
const
reset
=
()
=>
{
sourceTypeList
.
value
=
[]
sourceTypeList
.
value
=
[]
formData
.
value
=
{}
formData
.
value
=
{}
...
@@ -342,7 +336,6 @@ const reset = () => {
...
@@ -342,7 +336,6 @@ const reset = () => {
dbFilter
.
value
.
keyword
=
''
dbFilter
.
value
.
keyword
=
''
allDatabases
.
value
=
[]
allDatabases
.
value
=
[]
selectedDbs
.
value
=
[]
selectedDbs
.
value
=
[]
}
}
const
sourceTypeList
=
ref
([])
const
sourceTypeList
=
ref
([])
...
@@ -377,67 +370,23 @@ const dbFilter = ref({
...
@@ -377,67 +370,23 @@ const dbFilter = ref({
keyword
:
''
keyword
:
''
})
})
const
allDatabases
=
ref
([
const
allDatabases
=
ref
([])
// { id: 1, name: '若依配测系统', ip: '172.19.1.166', username: 'root', type: 'mysql' },
// { id: 2, name: '测试数据库1', ip: '192.168.1.100', username: 'admin', type: 'mysql' },
// { id: 3, name: '生产数据库', ip: '10.0.0.1', username: 'dba', type: 'oracle' },
// { id: 4, name: '开发数据库', ip: '172.16.1.50', username: 'dev', type: 'mysql' },
// { id: 5, name: '备份数据库', ip: '172.16.1.51', username: 'backup', type: 'sqlserver' }
])
const
selectedDbs
=
ref
([])
const
selectedDbs
=
ref
([])
const
selectAll
=
ref
(
false
)
const
selectAll
=
ref
(
false
)
// 第三步:Schema选择相关
// 第三步:Schema选择相关
const
selectedDataSource
=
ref
(
null
)
const
selectedDataSource
=
ref
(
null
)
const
allSchemas
=
ref
([
const
allSchemas
=
ref
([])
// 'information_schema',
// 'mysql',
// 'performance_schema',
// 'ry',
// 'sys'
])
const
selectedSchemas
=
ref
([])
const
selectedSchemas
=
ref
([])
const
selectAllSchemas
=
ref
(
false
)
const
selectAllSchemas
=
ref
(
false
)
// 第四步:数据域选择相关
// 第四步:数据域选择相关
const
domainGroups
=
ref
([
const
domainGroups
=
ref
([])
// {
// name: '混合数据域',
// selectedAll: false,
// domains: [
// { id: 'domain1', name: '566546', desc: '' },
// { id: 'domain2', name: '通用规则', desc: '' },
// { id: 'domain3', name: '解密数据', desc: '' },
// { id: 'domain4', name: '混合证件号', desc: '按混合证件号字段查询' }
// ]
// },
// {
// name: '智能数据域',
// selectedAll: false,
// domains: [
// { id: 'domain5', name: '智能推荐', desc: '' },
// { id: 'domain6', name: '电子邮件', desc: '按邮箱字段查找' },
// { id: 'domain7', name: '社保卡号', desc: '' }
// ]
// },
// {
// name: '测试数据域',
// selectedAll: false,
// domains: [
// { id: 'domain8', name: '发现规则1', desc: '' },
// { id: 'domain9', name: '营业执照', desc: '按营业执照字段查询' },
// { id: 'domain10', name: '邮政编码', desc: '邮政编码字段查找' }
// ]
// }
])
const
selectedDomains
=
ref
([])
const
selectedDomains
=
ref
([])
// 计算属性
// 计算属性
const
filteredDatabases
=
computed
(()
=>
{
const
filteredDatabases
=
computed
(()
=>
{
return
allDatabases
.
value
.
filter
(
db
=>
{
return
allDatabases
.
value
.
filter
(
db
=>
{
// const typeMatch = db.type === dbFilter.value.type
const
keywordMatch
=
db
.
sysname
.
includes
(
dbFilter
.
value
.
keyword
)
const
keywordMatch
=
db
.
sysname
.
includes
(
dbFilter
.
value
.
keyword
)
return
keywordMatch
return
keywordMatch
})
})
...
@@ -454,7 +403,6 @@ const selectedDomainDetails = computed(() => {
...
@@ -454,7 +403,6 @@ const selectedDomainDetails = computed(() => {
// 方法
// 方法
const
handleSelectAll
=
(
val
)
=>
{
const
handleSelectAll
=
(
val
)
=>
{
console
.
log
(
'selectedDbs'
,
selectedDbs
)
if
(
val
)
{
if
(
val
)
{
selectedDbs
.
value
=
filteredDatabases
.
value
.
map
(
db
=>
db
.
tid
)
selectedDbs
.
value
=
filteredDatabases
.
value
.
map
(
db
=>
db
.
tid
)
}
else
{
}
else
{
...
@@ -466,67 +414,38 @@ const handleClearSelected = () => {
...
@@ -466,67 +414,38 @@ const handleClearSelected = () => {
selectedDbs
.
value
=
[]
selectedDbs
.
value
=
[]
selectAll
.
value
=
false
selectAll
.
value
=
false
}
}
const
allSchemasCompute
=
computed
(()
=>
{
const
allSchemasCompute
=
computed
(()
=>
{
return
allSchemas
.
value
[
allSchemasIndex
.
value
]
return
allSchemas
.
value
[
allSchemasIndex
.
value
]
})
})
const
allSchemasIndex
=
ref
(
0
)
const
allSchemasIndex
=
ref
(
0
)
const
selectDataSource
=
(
dbId
,
index
)
=>
{
const
selectDataSource
=
(
dbId
,
index
)
=>
{
selectedDataSource
.
value
=
dbId
selectedDataSource
.
value
=
dbId
allSchemasIndex
.
value
=
index
allSchemasIndex
.
value
=
index
console
.
log
(
'allSchemasCompute.value'
,
allSchemasCompute
.
value
)
selectedSchemas
.
value
=
[]
selectedSchemas
.
value
=
[]
console
.
log
(
'已经选择的表'
,
schemalist
.
value
)
allSchemasCompute
.
value
.
forEach
(
element
=>
{
allSchemasCompute
.
value
.
forEach
(
element
=>
{
if
(
schemalist
.
value
.
find
(
item
=>
item
.
schemaname
===
element
.
value
&&
(
item
.
osdsid
==
selectedDbDetails
.
value
[
allSchemasIndex
.
value
].
tid
))){
if
(
schemalist
.
value
.
find
(
item
=>
item
.
schemaname
===
element
.
value
&&
(
item
.
osdsid
==
selectedDbDetails
.
value
[
allSchemasIndex
.
value
].
tid
))){
selectedSchemas
.
value
.
push
(
element
.
value
)
selectedSchemas
.
value
.
push
(
element
.
value
)
}
}
})
});
}
const
handleSelectAllSchemas
=
(
val
)
=>
{
console
.
log
(
'selectedSchemas.value'
,
selectedSchemas
.
value
)
// return
if
(
val
)
{
let
list
=
[]
allSchemasCompute
.
value
.
forEach
(
element
=>
{
list
.
push
(
element
.
value
)
});
selectedSchemas
.
value
=
list
}
else
{
selectedSchemas
.
value
=
[]
}
}
}
const
schemalist
=
ref
([])
const
schemalist
=
ref
([])
const
schemaChange
=
()
=>
{
const
schemaChange
=
()
=>
{
console
.
log
(
'allSchemasIndex.value'
,
allSchemasIndex
.
value
)
console
.
log
(
'selectedSchemas.value '
,
selectedSchemas
.
value
)
console
.
log
(
'selectedDbDetails.value'
,
selectedDbDetails
.
value
)
// schemalist.value = []
selectedSchemas
.
value
.
forEach
(
element
=>
{
selectedSchemas
.
value
.
forEach
(
element
=>
{
console
.
log
(
'element'
,
element
)
let
data
=
{
let
data
=
{
schemaname
:
element
,
schemaname
:
element
,
dbtype
:
selectedDbDetails
.
value
[
allSchemasIndex
.
value
].
dbtype
,
dbtype
:
selectedDbDetails
.
value
[
allSchemasIndex
.
value
].
dbtype
,
osdsid
:
selectedDbDetails
.
value
[
allSchemasIndex
.
value
].
tid
,
osdsid
:
selectedDbDetails
.
value
[
allSchemasIndex
.
value
].
tid
,
}
}
schemalist
.
value
.
push
(
data
)
schemalist
.
value
.
push
(
data
)
});
})
}
}
const
toggleGroupSelection
=
(
group
,
selected
)
=>
{
const
toggleGroupSelection
=
(
group
,
selected
)
=>
{
const
groupDomainIds
=
group
.
list
.
map
(
d
=>
d
.
id
)
const
groupDomainIds
=
group
.
list
.
map
(
d
=>
d
.
id
)
...
@@ -561,37 +480,31 @@ const loginUser = {
...
@@ -561,37 +480,31 @@ const loginUser = {
const
handleNextStep
=
async
()
=>
{
const
handleNextStep
=
async
()
=>
{
if
(
activeStep
.
value
===
1
)
{
if
(
activeStep
.
value
===
1
)
{
try
{
try
{
// 调用第一步的验证接口
const
response
=
await
validateStep1
()
const
response
=
await
validateStep1
()
if
(
response
.
flag
===
true
)
{
if
(
response
.
flag
===
true
)
{
checkDatasystem
().
then
(
res
=>
{
checkDatasystem
().
then
(
res
=>
{
if
(
res
.
flag
===
true
){
if
(
res
.
flag
===
true
)
{
activeStep
.
value
++
activeStep
.
value
++
if
(
activeStep
.
value
===
2
)
{
if
(
activeStep
.
value
===
2
){
queryByEditSort
({
queryByEditSort
({
projectId
:
formData
.
value
.
id
||
''
,
projectId
:
formData
.
value
.
id
||
''
,
dbtype
:
dbFilter
.
value
.
type
,
dbtype
:
dbFilter
.
value
.
type
,
loginUser
:
loginUser
,
loginUser
:
loginUser
,
flag
:
1
flag
:
1
}).
then
(
res
=>
{
}).
then
(
res
=>
{
allDatabases
.
value
=
res
.
data
allDatabases
.
value
=
res
.
data
})
})
}
}
}
else
{
}
else
{
ElMessage
.
error
(
res
.
msg
)
ElMessage
.
error
(
res
.
msg
)
}
}
}).
catch
(
err
=>
{
}).
catch
(
err
=>
{
ElMessage
.
error
(
err
.
msg
)
ElMessage
.
error
(
err
.
msg
)
})
})
}
else
{
}
else
{
// 验证失败,显示错误信息
ElMessage
.
error
(
response
.
msg
||
'第一步验证失败'
)
ElMessage
.
error
(
response
.
msg
||
'第一步验证失败'
)
return
// 停止继续执行
return
}
}
}
catch
(
error
)
{
}
catch
(
error
)
{
console
.
error
(
'第一步验证接口调用失败:'
,
error
)
console
.
error
(
'第一步验证接口调用失败:'
,
error
)
...
@@ -599,68 +512,41 @@ const handleNextStep = async () => {
...
@@ -599,68 +512,41 @@ const handleNextStep = async () => {
return
return
}
}
}
else
if
(
activeStep
.
value
<
4
)
{
}
else
if
(
activeStep
.
value
<
4
)
{
if
(
activeStep
.
value
===
3
)
{
// selectedDbDetails
}
// 其他步骤直接前进
activeStep
.
value
++
activeStep
.
value
++
if
(
activeStep
.
value
===
4
)
{
// 在第四步加载数据域和规则
getAllDataAreaAndRule
().
then
(
res
=>
{
getAllDataAreaAndRule
().
then
(
res
=>
{
console
.
log
(
res
)
domainGroups
.
value
=
res
.
data
domainGroups
.
value
=
res
.
data
// 如果是编辑模式,需要处理已选择的规则
})
if
(
props
.
mode
===
'edit'
&&
formData
.
value
.
id
)
{
processAreaAndRuleListForEdit
()
}
})
}
}
else
{
}
else
{
console
.
log
(
'selectedDomainDetails'
,
selectedDomainDetails
.
value
)
// 最后一步提交数据
// 最后一步提交数据
formData
.
value
.
databases
=
selectedDbDetails
.
value
formData
.
value
.
databases
=
selectedDbDetails
.
value
formData
.
value
.
schemas
=
schemalist
.
value
formData
.
value
.
schemas
=
schemalist
.
value
formData
.
value
.
domains
=
selectedDomainDetails
.
value
.
map
(
item
=>
(
({
formData
.
value
.
domains
=
selectedDomainDetails
.
value
.
map
(
item
=>
({
dataarea_id
:
item
.
dataarea_id
,
dataarea_id
:
item
.
dataarea_id
,
rule_id
:
item
.
id
rule_id
:
item
.
id
}))
)
}))
emit
(
'submit'
,
formData
.
value
)
emit
(
'submit'
,
formData
.
value
)
setTimeout
(()
=>
{
setTimeout
(()
=>
{
reset
()
reset
()
dialogVisible
.
value
=
false
dialogVisible
.
value
=
false
},
300
);
},
300
)
}
}
}
}
// 第一步验证接口函数
// 第一步验证接口函数
const
validateStep1
=
async
()
=>
{
const
validateStep1
=
async
()
=>
{
// 这里调用实际的API接口
// 示例:return await api.validateStep1(formData)
return
await
checkDatasystemName
({
return
await
checkDatasystemName
({
name
:
formData
.
value
.
name
,
name
:
formData
.
value
.
name
,
id
:
formData
.
value
.
id
id
:
formData
.
value
.
id
})
})
// 模拟API调用
// return new Promise((resolve) => {
// setTimeout(() => {
// // 模拟成功响应
// resolve({
// flag: true,
// msg: '验证成功'
// })
// // 模拟失败响应
// // resolve({
// // flag: false,
// // msg: '数据库连接失败,请检查连接信息'
// // })
// }, 1000)
// })
}
// 取消
const
handleCancel
=
()
=>
{
dialogVisible
.
value
=
false
}
}
// 关闭前处理
// 关闭前处理
...
@@ -681,48 +567,32 @@ watch(selectedDbs, (newVal) => {
...
@@ -681,48 +567,32 @@ watch(selectedDbs, (newVal) => {
selectAll
.
value
=
newVal
.
length
>
0
&&
newVal
.
length
===
allDatabases
.
value
.
length
selectAll
.
value
=
newVal
.
length
>
0
&&
newVal
.
length
===
allDatabases
.
value
.
length
})
})
watch
(
selectedDomains
,
(
newVal
)
=>
{
watch
(
selectedDomains
,
(
newVal
)
=>
{
if
(
domainGroups
.
value
.
length
>
0
){
if
(
domainGroups
.
value
.
length
>
0
)
{
console
.
log
(
'domainGroups'
,
domainGroups
.
value
)
domainGroups
.
value
.
forEach
(
group
=>
{
domainGroups
.
value
.
forEach
(
group
=>
{
const
groupDomainIds
=
group
.
list
.
map
(
d
=>
d
.
id
)
const
groupDomainIds
=
group
.
list
.
map
(
d
=>
d
.
id
)
group
.
selectedAll
=
groupDomainIds
.
every
(
id
=>
newVal
.
includes
(
id
))
group
.
selectedAll
=
groupDomainIds
.
every
(
id
=>
newVal
.
includes
(
id
))
})
})
}
}
},
{
deep
:
true
})
},
{
deep
:
true
})
// 初始化时自动选择第一个数据源
// 初始化时自动选择第一个数据源
watch
(
selectedDbDetails
,
async
(
newVal
,
oldVal
)
=>
{
watch
(
selectedDbDetails
,
async
(
newVal
,
oldVal
)
=>
{
if
(
newVal
.
length
>
0
)
{
if
(
newVal
.
length
>
0
){
if
(
JSON
.
stringify
(
newVal
)
!==
JSON
.
stringify
(
oldVal
))
{
await
fetchAllSchemas
(
newVal
)
if
(
JSON
.
stringify
(
newVal
)
!==
JSON
.
stringify
(
oldVal
)){
await
fetchAllSchemas
(
newVal
)
}
}
if
(
!
selectedDataSource
.
value
)
{
if
(
!
selectedDataSource
.
value
){
selectedDataSource
.
value
=
newVal
[
0
].
tid
selectedDataSource
.
value
=
newVal
[
0
].
tid
}
}
}
}
},
{
immediate
:
true
})
},
{
immediate
:
true
})
const
fetchAllSchemas
=
async
(
databases
)
=>
{
const
fetchAllSchemas
=
async
(
databases
)
=>
{
try
{
try
{
// 清空之前的数据
allSchemas
.
value
=
[]
allSchemas
.
value
=
[]
// 使用Promise.all保证顺序但并行请求(如需严格顺序请使用for循环)
const
results
=
await
Promise
.
all
(
const
results
=
await
Promise
.
all
(
databases
.
map
(
db
=>
databases
.
map
(
db
=>
queryShemas
({
queryShemas
({
...
@@ -739,159 +609,127 @@ const fetchAllSchemas = async (databases) => {
...
@@ -739,159 +609,127 @@ const fetchAllSchemas = async (databases) => {
)
)
)
)
// 处理结果
const
successResults
=
results
.
filter
(
r
=>
!
r
.
error
)
const
successResults
=
results
.
filter
(
r
=>
!
r
.
error
)
const
errorResults
=
results
.
filter
(
r
=>
r
.
error
)
// 合并成功的数据
successResults
.
forEach
(
res
=>
{
successResults
.
forEach
(
res
=>
{
if
(
res
.
data
&&
Array
.
isArray
(
res
.
data
))
{
if
(
res
.
data
&&
Array
.
isArray
(
res
.
data
))
{
allSchemas
.
value
.
push
(
res
.
data
)
allSchemas
.
value
.
push
(
res
.
data
)
}
}
})
})
// 显示结果信息
console
.
log
(
'allSchemas'
,
allSchemas
.
value
)
if
(
successResults
.
length
>
0
)
{
console
.
log
(
`成功获取
${
successResults
.
length
}
个数据库的Schema数据`
)
}
if
(
errorResults
.
length
>
0
)
{
console
.
log
(
`
${
errorResults
.
length
}
个数据库的Schema获取失败`
)
}
console
.
log
(
'allSchemas'
,
allSchemas
.
value
)
}
catch
(
error
)
{
}
catch
(
error
)
{
console
.
error
(
'获取Schema数据过程中出错:'
,
error
)
console
.
error
(
'获取Schema数据过程中出错:'
,
error
)
ElMessage
.
error
(
'获取Schema数据过程中出错'
)
ElMessage
.
error
(
'获取Schema数据过程中出错'
)
}
finally
{
// isLoading.value = false
}
}
}
}
// 处理数据域和规则数据(编辑模式专用)
// 处理数据域和规则数据
const
processAreaAndRuleListForEdit
=
()
=>
{
const
processAreaAndRuleList
=
(
areaAndRuleList
)
=>
{
// 这里需要根据实际情况获取项目详情中的 areaAndRuleList
// 假设我们已经有了 areaAndRuleList 数据
const
areaAndRuleList
=
[
{
"id"
:
"2c9381a198cab6e40198e05cba5803bc"
,
"dataarea_id"
:
"40287481777f245501777f27e6fe0000"
,
"rule_id"
:
"402874817780b607017780b823be0004"
}
]
if
(
!
areaAndRuleList
||
!
Array
.
isArray
(
areaAndRuleList
))
{
if
(
!
areaAndRuleList
||
!
Array
.
isArray
(
areaAndRuleList
))
{
console
.
warn
(
'areaAndRuleList为空或不是数组'
,
areaAndRuleList
)
console
.
warn
(
'areaAndRuleList为空或不是数组'
)
selectedDomains
.
value
=
[]
// 确保设置为空数组而不是null或undefined
selectedDomains
.
value
=
[]
return
return
}
}
// 获取所有数据域分组信息
console
.
log
(
'接口返回的areaAndRuleList:'
,
areaAndRuleList
)
getAllDataAreaAndRule
().
then
(
res
=>
{
if
(
!
res
.
data
||
!
Array
.
isArray
(
res
.
data
))
{
// 处理已选择的规则
console
.
error
(
'获取的数据域分组无效'
,
res
.
data
)
const
selectedRuleIds
=
[]
return
}
// 遍历所有数据域分组和规则,找到匹配的规则
domainGroups
.
value
.
forEach
(
group
=>
{
console
.
log
(
'所有数据域分组:'
,
res
.
data
)
group
.
list
.
forEach
(
rule
=>
{
console
.
log
(
'接口返回的areaAndRuleList:'
,
areaAndRuleList
)
// 检查这个规则是否在已选择的列表中
const
isSelected
=
areaAndRuleList
.
some
(
item
=>
// 处理已选择的数据域
item
&&
item
.
dataarea_id
===
group
.
dataarea_id
&&
item
.
rule_id
===
rule
.
id
const
selectedDomainIds
=
[]
)
// 将接口返回的数据映射到 domainGroups
domainGroups
.
value
=
res
.
data
.
map
(
group
=>
{
// 处理组内的每个规则
const
processedList
=
(
group
.
list
||
[]).
map
(
domain
=>
{
// 检查这个规则是否在已选择的列表中
const
isSelected
=
areaAndRuleList
.
some
(
item
=>
item
&&
item
.
dataarea_id
===
group
.
dataarea_id
&&
item
.
rule_id
===
domain
.
id
)
if
(
isSelected
&&
domain
.
id
)
{
selectedDomainIds
.
push
(
domain
.
id
)
}
return
{
...
domain
,
dataarea_id
:
group
.
dataarea_id
// 添加数据域ID引用
}
})
// 检查是否全选
const
groupDomainIds
=
processedList
.
map
(
d
=>
d
.
id
).
filter
(
Boolean
)
const
selectedInGroup
=
selectedDomainIds
.
filter
(
id
=>
groupDomainIds
.
includes
(
id
))
group
.
selectedAll
=
selectedInGroup
.
length
===
groupDomainIds
.
length
&&
groupDomainIds
.
length
>
0
return
{
if
(
isSelected
&&
rule
.
id
)
{
...
group
,
selectedRuleIds
.
push
(
rule
.
id
)
list
:
processedList
}
}
})
})
// 设置已选择的数据域
// 检查是否全选
selectedDomains
.
value
=
selectedDomainIds
.
filter
(
Boolean
)
// 过滤掉可能的空值
const
groupRuleIds
=
group
.
list
.
map
(
rule
=>
rule
.
id
).
filter
(
Boolean
)
console
.
log
(
'已选择的数据域ID:'
,
selectedDomains
.
value
)
const
selectedInGroup
=
selectedRuleIds
.
filter
(
id
=>
groupRuleIds
.
includes
(
id
))
group
.
selectedAll
=
selectedInGroup
.
length
===
groupRuleIds
.
length
&&
groupRuleIds
.
length
>
0
// 如果没有选择任何数据域,显示警告
if
(
selectedDomains
.
value
.
length
===
0
)
{
console
.
warn
(
'没有找到任何已选择的数据域,请检查数据映射逻辑'
)
}
}).
catch
(
error
=>
{
console
.
error
(
'获取数据域分组失败:'
,
error
)
ElMessage
.
error
(
'获取数据域分组失败'
)
})
})
// 设置已选择的规则
selectedDomains
.
value
=
selectedRuleIds
.
filter
(
Boolean
)
console
.
log
(
'已选择的规则ID:'
,
selectedDomains
.
value
)
if
(
selectedDomains
.
value
.
length
===
0
)
{
console
.
warn
(
'没有找到任何已选择的规则'
)
}
}
}
// 处理Schema数据
// 处理Schema数据
const
processSchemaList
=
(
schemaList
)
=>
{
const
processSchemaList
=
(
schemaList
)
=>
{
if
(
!
schemaList
||
!
Array
.
isArray
(
schemaList
))
return
if
(
!
schemaList
||
!
Array
.
isArray
(
schemaList
))
return
// 获取所有数据源的Schema信息
fetchAllSchemas
(
selectedDbDetails
.
value
).
then
(()
=>
{
fetchAllSchemas
(
selectedDbDetails
.
value
).
then
(()
=>
{
// 设置已选择的Schema
selectedSchemas
.
value
=
schemaList
.
map
(
item
=>
item
.
schemaname
)
selectedSchemas
.
value
=
schemaList
.
map
(
item
=>
item
.
schemaname
)
// 构建schemalist用于表单提交
schemalist
.
value
=
schemaList
.
map
(
item
=>
({
schemalist
.
value
=
schemaList
.
map
(
item
=>
({
schemaname
:
item
.
schemaname
,
schemaname
:
item
.
schemaname
,
dbtype
:
item
.
dbtype
,
dbtype
:
item
.
dbtype
,
osdsid
:
item
.
osdsid
osdsid
:
item
.
osdsid
}))
}))
console
.
log
(
'已选择的Schema:'
,
selectedSchemas
.
value
)
console
.
log
(
'用于提交的schemalist:'
,
schemalist
.
value
)
})
})
}
}
const
handlechangeSelectDomains
=
(
val
)
=>
{
console
.
log
(
'selectedDomains.value'
,
selectedDomains
.
value
)
}
// 监听传入的项目数据变化
// 监听传入的项目数据变化
watch
(()
=>
props
.
projectData
,
(
newVal
)
=>
{
watch
(()
=>
props
.
projectData
,
(
newVal
)
=>
{
if
(
props
.
mode
===
'edit'
)
{
if
(
props
.
mode
===
'edit'
)
{
formData
.
value
=
{
...
newVal
}
formData
.
value
=
{
...
newVal
}
getDataProjectDetail
({
projectId
:
newVal
.
id
}).
then
(
res
=>
{
getDataProjectDetail
({
projectId
:
newVal
.
id
}).
then
(
res
=>
{
if
(
res
.
flag
)
{
if
(
res
.
flag
){
let
data
=
res
.
data
let
data
=
res
.
data
if
(
!
data
)
return
if
(
!
data
)
return
formData
.
value
.
name
=
data
.
project
.
project
formData
.
value
.
name
=
data
.
project
.
project
formData
.
value
.
remark
=
data
.
project
.
note
formData
.
value
.
remark
=
data
.
project
.
note
selectedDbs
.
value
=
data
.
dataSourceIdList
.
map
(
item
=>
item
.
systemsource_id
)
selectedDbs
.
value
=
data
.
dataSourceIdList
.
map
(
item
=>
item
.
systemsource_id
)
selectedDomains
.
value
=
data
.
areaAndRuleList
.
map
(
item
=>
item
.
rule_id
)
// selectedSchemas.value = data.schemalist.map(item =>item.schemaname)
console
.
log
(
'selectedDomains.value'
,
selectedDomains
.
value
)
// selectedDomains.value = data.areaAndRuleList.map(item =>item.id)
// 处理Schema数据
// console.log('selectedSchemas',selectedSchemas.value)
// processSchemaList(data.schemalist)
// 处理Schema数据
processSchemaList
(
data
.
schemalist
)
// 处理数据域和规则数据 - 关键修复
// let list = data.areaAndRuleList
if
(
data
.
areaAndRuleList
&&
data
.
areaAndRuleList
.
length
>
0
)
{
processAreaAndRuleList
(
data
.
areaAndRuleList
)
// 保存areaAndRuleList供后续使用
}
else
{
ElMessage
.
error
(
res
.
msg
)
}
// 在第四步加载时处理规则选择
if
(
activeStep
.
value
===
4
)
{
}).
catch
(
err
=>
{
// processAreaAndRuleListForEdit()
ElMessage
.
error
(
res
.
msg
)
formData
.
value
.
areaAndRuleList
=
data
.
areaAndRuleList
})
}
}
// 初始化选中状态
}
else
{
// selectedDbs.value = newVal.databases.map(db => db.id)
ElMessage
.
error
(
res
.
msg
)
// selectedSchemas.value = [...newVal.schemas]
}
// selectedDomains.value = newVal.domains.map(domain => domain.id)
}).
catch
(
err
=>
{
ElMessage
.
error
(
err
.
msg
)
})
}
}
},
{
immediate
:
true
,
deep
:
true
})
},
{
immediate
:
true
,
deep
:
true
})
</
script
>
</
script
>
<
style
scoped
>
<
style
scoped
>
.dialog-content
{
.dialog-content
{
display
:
flex
;
display
:
flex
;
...
...
src/views/project/Project/list.vue
View file @
2d6d34d3
...
@@ -344,7 +344,7 @@ const handleSubmit = (formData) => {
...
@@ -344,7 +344,7 @@ const handleSubmit = (formData) => {
loginUser
:
loginUser
,
loginUser
:
loginUser
,
project
:{
project
:{
createtime
:
currentProject
.
value
.
create
t
ime
,
createtime
:
currentProject
.
value
.
create
T
ime
,
createuser
:
currentProject
.
value
.
createuser
,
createuser
:
currentProject
.
value
.
createuser
,
edition_id
:
''
,
edition_id
:
''
,
note
:
formData
.
remark
,
note
:
formData
.
remark
,
...
@@ -368,7 +368,7 @@ const handleSubmit = (formData) => {
...
@@ -368,7 +368,7 @@ const handleSubmit = (formData) => {
updateDataProject
(
newProject
).
then
(
res
=>
{
updateDataProject
(
newProject
).
then
(
res
=>
{
console
.
log
(
res
)
console
.
log
(
res
)
if
(
res
.
flag
){
if
(
res
.
flag
){
ElMessage
.
success
(
'
新增
项目成功'
)
ElMessage
.
success
(
'
编辑
项目成功'
)
handleQuery
()
handleQuery
()
}
}
})
})
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论