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
0c3ee41a
Commit
0c3ee41a
authored
Aug 29, 2025
by
ningjihai
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'projectAddEdit_njh'
parents
90531cb0
1922f70e
显示空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
116 行增加
和
50 行删除
+116
-50
src/views/project/Project/ProjectEditDialog.vue
+116
-50
没有找到文件。
src/views/project/Project/ProjectEditDialog.vue
View file @
0c3ee41a
...
...
@@ -52,7 +52,6 @@
<div
class=
"filter-container"
>
<el-select
v-model=
"dbFilter.type"
placeholder=
"请选择"
class=
"filter-select"
@
change=
"selectChangeSql"
>
<el-option
v-for=
"(item,index) in sourceTypeList"
:key=
"index"
:label=
"item.text"
:value=
"item.text"
/>
</el-select>
<el-input
...
...
@@ -71,20 +70,23 @@
<!-- 左侧可选数据库 -->
<div
class=
"db-list"
>
<div
class=
"db-list-header"
>
<
el-checkbox
v-model=
"selectAll"
@
change=
"handleSelectAll"
>
全选
</el-checkbox
>
<
span>
可选择数据源(数据库)
</span
>
</div>
<el-scrollbar
height=
"300px"
>
<el-checkbox-group
v-model=
"selectedDbs"
>
<div
v-for=
"db in filtered
Databases"
:key=
"db.
id"
v-for=
"db in available
Databases"
:key=
"db.t
id"
class=
"db-item"
@
click=
"selectDatabase(db)"
>
<el-checkbox
:value=
"db.tid"
>
{{ db.sysname }}
</el-checkbox>
<!-- <div class="db-checkbox">
<el-checkbox :model-value="isDatabaseSelected(db.tid)" @click.stop />
</div> -->
<div
class=
"db-info"
>
<div
class=
"db-name"
>
{{ db.sysname }}
</div>
<div
class=
"db-type"
>
{{ db.dbtype }}
</div>
</div>
</div>
</el-checkbox-group>
</el-scrollbar>
</div>
...
...
@@ -92,17 +94,19 @@
<div
class=
"db-list selected"
>
<div
class=
"db-list-header"
>
<span>
已选择数据源(数据库)
</span>
<el-button
type=
"text"
@
click=
"handleClearSelected"
>
清空
</el-button>
<span
style=
"color: #2d8cf0;"
@
click=
"handleClearSelected"
>
清空
</span>
</div>
<el-scrollbar
height=
"300px"
>
<div
v-for=
"db in selectedDbDetails"
:key=
"db.tid"
class=
"selected-db-item"
@
click=
"deselectDatabase(db)"
>
<div
class=
"db-name"
>
{{ db.sysname }}
</div>
<
div
class=
"db-ip"
>
{{ db.dbip }}
</div
>
<div
class=
"db-
username"
>
{{ db.usernam
e }}
</div>
<
!-- <div class="db-ip">{{ db.dbip }}</div> --
>
<div
class=
"db-
type"
>
{{ db.dbtyp
e }}
</div>
</div>
</el-scrollbar>
</div>
...
...
@@ -257,8 +261,7 @@
<
script
setup
>
import
{
ref
,
computed
,
watch
}
from
'vue'
import
{
ElMessageBox
}
from
'element-plus'
import
{
ElMessage
}
from
'element-plus'
import
{
ElMessageBox
,
ElMessage
}
from
'element-plus'
import
{
Search
}
from
'@element-plus/icons-vue'
import
{
getdatascopeprojectlist
,
...
...
@@ -342,7 +345,7 @@ const reset = () => {
activeStep
.
value
=
1
dbFilter
.
value
.
type
=
''
dbFilter
.
value
.
keyword
=
''
allDatabases
.
value
=
[]
//
allDatabases.value = []
selectedDbs
.
value
=
[]
allSchemasIndex
.
value
=
0
}
...
...
@@ -378,11 +381,62 @@ const dbFilter = ref({
type
:
''
,
keyword
:
''
})
const
allDatabases
=
ref
([])
const
selectedDbs
=
ref
([])
const
selectedDbDetails
=
ref
([])
// 定义数据源相关变量
const
availableDatabases
=
ref
([])
// queryByEditSort返回的未选择数据源
const
selectedDbs
=
ref
([])
// 当前选择的数据库ID列表
const
selectAll
=
ref
(
false
)
// 计算属性:过滤后的可选数据库(排除已选择的)
const
filteredAvailableDatabases
=
computed
(()
=>
{
return
availableDatabases
.
value
.
filter
(
db
=>
!
selectedDbs
.
value
.
includes
(
db
.
tid
)
)
})
// 计算属性:已选择的数据源详情
// const selectedDbDetails = computed(() => {
// // 从所有数据源中找出已选择的
// return availableDatabases.value.filter(db =>
// selectedDbs.value.includes(db.tid)
// )
// })
// 检查数据库是否已选择
const
isDatabaseSelected
=
(
dbId
)
=>
{
return
selectedDbs
.
value
.
includes
(
dbId
)
}
// 选择数据库(点击左侧)
const
selectDatabase
=
(
item
)
=>
{
if
(
!
selectedDbs
.
value
.
includes
(
item
.
tid
))
{
let
index
=
availableDatabases
.
value
.
findIndex
(
x
=>
x
.
tid
===
item
.
tid
)
availableDatabases
.
value
.
splice
(
index
,
1
)
selectedDbs
.
value
.
push
(
item
.
tid
)
selectedDbDetails
.
value
.
push
(
item
)
}
}
// 取消选择数据库(点击右侧)
const
deselectDatabase
=
(
db
)
=>
{
const
index
=
selectedDbs
.
value
.
indexOf
(
db
.
tid
)
if
(
index
>
-
1
)
{
selectedDbs
.
value
.
splice
(
index
,
1
)
selectedDbDetails
.
value
.
splice
(
index
,
1
)
availableDatabases
.
value
.
push
(
db
)
}
}
// 清空选择
const
handleClearSelected
=
()
=>
{
availableDatabases
.
value
=
selectedDbDetails
.
value
selectedDbs
.
value
=
[]
selectAll
.
value
=
false
}
// 第三步:Schema选择相关
const
selectedDataSource
=
ref
(
null
)
const
allSchemas
=
ref
([])
...
...
@@ -394,36 +448,26 @@ const domainGroups = ref([])
const
selectedDomains
=
ref
([])
// 计算属性
const
filteredDatabases
=
computed
(()
=>
{
return
allDatabases
.
value
.
filter
(
db
=>
{
const
keywordMatch
=
db
.
sysname
.
includes
(
dbFilter
.
value
.
keyword
)
return
keywordMatch
})
})
// const filteredDatabases = computed(() => {
// return allDatabases.value.filter(db => {
// const keywordMatch = db.sysname.includes(dbFilter.value.keyword)
// return keywordMatch
// })
// })
const
selectedDbDetails
=
computed
(()
=>
{
return
allDatabases
.
value
.
filter
(
db
=>
selectedDbs
.
value
.
includes
(
db
.
tid
))
})
const
selectedDomainDetails
=
computed
(()
=>
{
const
allDomains
=
domainGroups
.
value
.
flatMap
(
group
=>
group
.
list
)
return
allDomains
.
filter
(
domain
=>
selectedDomains
.
value
.
includes
(
domain
.
id
))
})
// 方法
const
handleSelectAll
=
(
val
)
=>
{
if
(
val
)
{
selectedDbs
.
value
=
filteredDatabases
.
value
.
map
(
db
=>
db
.
tid
)
}
else
{
selectedDbs
.
value
=
[]
}
}
const
handleClearSelected
=
()
=>
{
selectedDbs
.
value
=
[]
selectAll
.
value
=
false
}
//
const handleClearSelected = () => {
//
selectedDbs.value = []
//
selectAll.value = false
//
}
const
allSchemasCompute
=
computed
(()
=>
{
return
allSchemas
.
value
[
allSchemasIndex
.
value
]
...
...
@@ -495,6 +539,7 @@ const loginUser = {
username
:
appStore
.
userInfo
.
user
.
username
}
}
// 修改数据库类型变化时的处理
const
selectChangeSql
=
()
=>
{
queryByEditSort
({
projectId
:
formData
.
value
.
id
||
''
,
...
...
@@ -502,9 +547,10 @@ const selectChangeSql = () => {
loginUser
:
loginUser
,
flag
:
1
}).
then
(
res
=>
{
a
ll
Databases
.
value
=
res
.
data
a
vailable
Databases
.
value
=
res
.
data
})
}
const
basicInfoFormRef
=
ref
(
null
)
const
handleNextStep
=
async
()
=>
{
if
(
activeStep
.
value
===
1
)
{
...
...
@@ -529,7 +575,7 @@ const handleNextStep = async () => {
loginUser
:
loginUser
,
flag
:
1
}).
then
(
res
=>
{
a
ll
Databases
.
value
=
res
.
data
a
vailable
Databases
.
value
=
res
.
data
})
}
}
else
{
...
...
@@ -632,10 +678,10 @@ const handleClose = (done) => {
})
}
// 监听数据变化
watch
(
selectedDbs
,
(
newVal
)
=>
{
selectAll
.
value
=
newVal
.
length
>
0
&&
newVal
.
length
===
allDatabases
.
value
.
length
})
//
//
监听数据变化
//
watch(selectedDbs, (newVal) => {
//
selectAll.value = newVal.length > 0 && newVal.length === allDatabases.value.length
//
})
watch
(
selectedDomains
,
(
newVal
)
=>
{
if
(
domainGroups
.
value
.
length
>
0
)
{
...
...
@@ -807,25 +853,45 @@ watch(() => props.projectData, (newVal) => {
formData
.
value
.
name
=
data
.
project
.
project
formData
.
value
.
remark
=
data
.
project
.
note
// 设置数据源
selectedDbs
.
value
=
data
.
dataSourceIdList
.
map
(
item
=>
item
.
systemsource_id
)
// 设置已选择的数据源详情
// 设置当前选择的数据库ID
selectedDbs
.
value
=
data
.
dataSourceIdList
.
map
(
item
=>
item
.
systemsource_id
)
// 保存原始schemalist数据
originalSchemalist
.
value
=
data
.
schemalist
||
[]
areaAndRuleListRead
.
value
=
data
.
areaAndRuleList
||
[]
if
(
data
.
dataSourceIdList
&&
data
.
dataSourceIdList
.
length
>
0
){
selectedDbDetails
.
value
=
data
.
dataSourceIdList
.
map
(
item
=>
(({
...
item
,
tid
:
item
.
systemsource_id
,
dbtype
:
item
.
dbtype
,
sysname
:
item
.
sysname
})))
}
/// 加载可选数据源
queryByEditSort
({
projectId
:
formData
.
value
.
id
||
''
,
dbtype
:
dbFilter
.
value
.
type
,
loginUser
:
loginUser
,
flag
:
1
}).
then
(
res
=>
{
availableDatabases
.
value
=
res
.
data
})
// 处理数据域和规则数据
if
(
data
.
areaAndRuleList
&&
data
.
areaAndRuleList
.
length
>
0
)
{
formData
.
value
.
areaAndRuleList
=
data
.
areaAndRuleList
// 先获取所有数据域和规则
getAllDataAreaAndRule
().
then
(
domainRes
=>
{
domainGroups
.
value
=
domainRes
.
data
// 处理已选择的规则
processAreaAndRuleListForEdit
(
data
.
areaAndRuleList
)
})
}
//
如果是编辑模式,需要
处理已选择的schema
// 处理已选择的schema
if
(
props
.
mode
===
'edit'
&&
originalSchemalist
.
value
.
length
>
0
)
{
processSchemalistForEdit
(
originalSchemalist
.
value
)
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论