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
8841058d
Commit
8841058d
authored
Aug 25, 2025
by
ningjihai
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1234
parent
5aad29d1
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
422 行增加
和
134 行删除
+422
-134
src/api/project/index.js
+39
-0
src/permission.js
+58
-49
src/views/project/Project/ProjectEditDialog.vue
+231
-68
src/views/project/Project/list.vue
+94
-17
没有找到文件。
src/api/project/index.js
View file @
8841058d
...
...
@@ -67,4 +67,43 @@ export function queryShemas(data) {
})
}
export
function
getAllDataAreaAndRule
(
data
)
{
return
request
({
url
:
'/core/tdataarea/getAllDataAreaAndRule'
,
method
:
'post'
,
data
:
data
})
}
export
function
addDataProject
(
data
)
{
return
request
({
url
:
'/core/tdataproject/addDataProject'
,
method
:
'post'
,
data
:
data
})
}
export
function
deleteDataProject
(
data
)
{
return
request
({
url
:
'/core/tdataproject/deleteDataProject'
,
method
:
'post'
,
data
:
data
})
}
export
function
getDataProjectDetail
(
data
)
{
return
request
({
url
:
'/core/tdataproject/getDataProjectDetail'
,
method
:
'post'
,
data
:
data
})
}
export
function
updateDataProject
(
data
)
{
return
request
({
url
:
'/core/tdataproject/updateDataProject'
,
method
:
'post'
,
data
:
data
})
}
src/permission.js
View file @
8841058d
import
router
from
'./router'
import
{
ElMessage
}
from
'element-plus'
import
NProgress
from
'nprogress'
import
NProgress
,
{
settings
}
from
'nprogress'
import
'nprogress/nprogress.css'
import
{
getToken
}
from
'@/utils/auth'
import
{
isHttp
,
isPathMatch
}
from
'@/utils/validate'
...
...
@@ -17,55 +17,63 @@ const isWhiteList = (path) => {
return
whiteList
.
some
(
pattern
=>
isPathMatch
(
pattern
,
path
))
}
router
.
beforeEach
((
to
,
from
,
next
)
=>
{
router
.
beforeEach
(
async
(
to
,
from
,
next
)
=>
{
NProgress
.
start
()
// if (getToken()) {
// to.meta.title && useSettingsStore().setTitle(to.meta.title)
// /* has token*/
// if (to.path === '/login') {
// next({ path: '/' })
// NProgress.done()
// } else if (isWhiteList(to.path)) {
// next()
// } else {
// if (useUserStore().roles.length === 0) {
// isRelogin.show = true
// // 判断当前用户是否已拉取完user_info信息
// useUserStore().getInfo().then(() => {
// isRelogin.show = false
// usePermissionStore().generateRoutes().then(accessRoutes => {
// // 根据roles权限生成可访问的路由表
// accessRoutes.forEach(route => {
// if (!isHttp(route.path)) {
// router.addRoute(route) // 动态添加可访问路由表
// }
// })
// next({ ...to, replace: true }) // hack方法 确保addRoutes已完成
// })
// }).catch(err => {
// useUserStore().logOut().then(() => {
// ElMessage.error(err)
// next({ path: '/' })
// })
// })
// } else {
// next()
// }
// }
// } else {
// // 没有token
// if (isWhiteList(to.path)) {
// // 在免登录白名单,直接进入
// next()
// } else {
// next(`/login?redirect=${to.fullPath}`) // 否则全部重定向到登录页
// NProgress.done()
// }
// }
// 获取permissionStore实例
const
permissionStore
=
usePermissionStore
()
if
(
sessionStorage
.
getItem
(
'__token'
)
||
isWhiteList
(
to
.
path
))
{
next
()
console
.
log
(
'next1'
)
try
{
// 检查是否已经有路由数据,避免重复设置
if
(
!
permissionStore
.
sidebarRouters
||
permissionStore
.
sidebarRouters
.
length
===
0
)
{
console
.
log
(
'next2'
)
// 从sessionStorage获取数据
const
allnavListStr
=
sessionStorage
.
getItem
(
'allnavList'
)
const
navStatusStr
=
sessionStorage
.
getItem
(
'navStatus'
)
if
(
allnavListStr
&&
navStatusStr
)
{
console
.
log
(
'next3'
)
try
{
const
allnavList
=
JSON
.
parse
(
allnavListStr
)
const
navStatus
=
JSON
.
parse
(
navStatusStr
)
console
.
log
(
'allnavList'
,
allnavList
)
console
.
log
(
'navStatus'
,
navStatus
)
// 根据navStatus.type过滤菜单
let
filterMenus
=
[]
if
(
navStatus
&&
navStatus
.
type
)
{
let
type
=
navStatus
.
type
===
'manage'
?
'1'
:
'2'
filterMenus
=
allnavList
.
filter
(
item
=>
item
.
type
===
type
)
console
.
log
(
'filterMenus'
,
filterMenus
)
}
else
{
// 默认处理,如果没有type则使用全部菜单
filterMenus
=
allnavList
}
// 存入permissionStore
if
(
filterMenus
&&
filterMenus
.
length
>
0
)
{
permissionStore
.
setSidebarRouters
(
filterMenus
)
}
}
catch
(
parseError
)
{
console
.
error
(
'解析sessionStorage数据失败:'
,
parseError
)
// 解析失败时清除无效数据
sessionStorage
.
removeItem
(
'allnavList'
)
sessionStorage
.
removeItem
(
'navStatus'
)
}
}
}
console
.
log
(
permissionStore
.
sidebarRouters
)
console
.
log
(
'next6'
,
router
.
getRoutes
())
next
()
}
catch
(
error
)
{
console
.
error
(
'路由守卫处理失败:'
,
error
)
next
()
}
}
else
{
next
(
`/login?redirect=
${
to
.
fullPath
}
`
)
NProgress
.
done
()
...
...
@@ -74,4 +82,4 @@ router.beforeEach((to, from, next) => {
router
.
afterEach
(()
=>
{
NProgress
.
done
()
})
})
\ No newline at end of file
src/views/project/Project/ProjectEditDialog.vue
View file @
8841058d
...
...
@@ -80,7 +80,7 @@
:key=
"db.id"
class=
"db-item"
>
<el-checkbox
:
label
=
"db.tid"
>
<el-checkbox
:
value
=
"db.tid"
>
{{ db.sysname }}
</el-checkbox>
</div>
...
...
@@ -120,11 +120,11 @@
<el-scrollbar
height=
"400px"
>
<div
class=
"datasource-list"
>
<div
v-for=
"
db
in selectedDbDetails"
v-for=
"
(db,dbindex)
in selectedDbDetails"
:key=
"db.tid"
class=
"datasource-item"
:class=
"{ active: selectedDataSource === db.tid }"
@
click=
"selectDataSource(db.tid)"
@
click=
"selectDataSource(db.tid
,dbindex
)"
>
{{ db.sysname }}
</div>
...
...
@@ -143,20 +143,19 @@
>
全选
</el-checkbox>
<span
class=
"schema-count"
>
{{ selectedSchemas.length }}/{{ allSchemas.length }}
</span>
<span
class=
"schema-count"
>
{{ selectedSchemas.length }}/{{ allSchemas
Compute
.length }}
</span>
</div>
</div>
<el-scrollbar
height=
"400px"
>
<el-checkbox-group
v-model=
"selectedSchemas"
>
<el-checkbox-group
v-model=
"selectedSchemas"
@
change=
"schemaChange"
>
<div
v-for=
"schema in allSchemas"
v-for=
"schema in allSchemas
Compute
"
:key=
"schema"
class=
"schema-item"
>
<el-checkbox
:label=
"schema"
>
{{ schema }}
</el-checkbox>
<el-checkbox
:value=
"schema.value"
:label=
" schema.text"
/>
</div>
</el-checkbox-group>
</el-scrollbar>
...
...
@@ -175,24 +174,24 @@
<div
class=
"section-title"
>
可选择数据域
</div>
</div>
<div
class=
"domain-group"
v-for=
"group in domainGroups"
:key=
"group.
name
"
>
<div
class=
"domain-group"
v-for=
"group in domainGroups"
:key=
"group.
id
"
>
<div
class=
"group-header"
>
<el-checkbox
v-model=
"group.selectedAll"
@
change=
"(val) => toggleGroupSelection(group, val)"
>
{{ group.
name
}}
{{ group.
dataarea
}}
</el-checkbox>
</div>
<el-scrollbar
height=
"
30
0px"
>
<el-scrollbar
height=
"
15
0px"
>
<el-checkbox-group
v-model=
"selectedDomains"
>
<div
v-for=
"domain in group.
domains
"
v-for=
"domain in group.
list
"
:key=
"domain.id"
class=
"domain-item"
>
<el-checkbox
:
label
=
"domain.id"
>
<el-checkbox
:
value
=
"domain.id"
>
<div
class=
"domain-content"
>
<div
class=
"domain-name"
>
{{ domain.name }}
</div>
<div
v-if=
"domain.desc"
class=
"domain-desc"
>
{{ domain.desc }}
</div>
...
...
@@ -202,6 +201,7 @@
</el-checkbox-group>
</el-scrollbar>
</div>
</div>
<!-- 右侧已选择数据域 -->
...
...
@@ -262,8 +262,9 @@ import {
checkDatasystem
,
queryByEditSort
,
selectProDataSource
,
queryShemas
queryShemas
,
getAllDataAreaAndRule
,
getDataProjectDetail
}
from
'@/api/project'
import
useAppStore
from
'@/store/modules/app'
...
...
@@ -353,7 +354,7 @@ const formData = ref({
projectType
:
'normal'
,
databases
:
[],
schemas
:
[],
domains
:
[]
domains
:
[]
,
})
// 步骤条相关
...
...
@@ -401,37 +402,37 @@ const selectAllSchemas = ref(false)
// 第四步:数据域选择相关
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
:
'邮政编码字段查找'
}
]
}
//
{
//
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
([
'domain2'
,
'domain3'
,
'domain4'
,
'domain6'
,
'domain7'
,
'domain9'
,
'domain10'
])
const
selectedDomains
=
ref
([])
// 计算属性
const
filteredDatabases
=
computed
(()
=>
{
...
...
@@ -447,12 +448,13 @@ const selectedDbDetails = computed(() => {
})
const
selectedDomainDetails
=
computed
(()
=>
{
const
allDomains
=
domainGroups
.
value
.
flatMap
(
group
=>
group
.
domains
)
const
allDomains
=
domainGroups
.
value
.
flatMap
(
group
=>
group
.
list
)
return
allDomains
.
filter
(
domain
=>
selectedDomains
.
value
.
includes
(
domain
.
id
))
})
// 方法
const
handleSelectAll
=
(
val
)
=>
{
console
.
log
(
'selectedDbs'
,
selectedDbs
)
if
(
val
)
{
selectedDbs
.
value
=
filteredDatabases
.
value
.
map
(
db
=>
db
.
tid
)
}
else
{
...
...
@@ -464,21 +466,69 @@ const handleClearSelected = () => {
selectedDbs
.
value
=
[]
selectAll
.
value
=
false
}
const
allSchemasCompute
=
computed
(()
=>
{
return
allSchemas
.
value
[
allSchemasIndex
.
value
]
})
const
allSchemasIndex
=
ref
(
0
)
const
selectDataSource
=
(
dbId
)
=>
{
const
selectDataSource
=
(
dbId
,
index
)
=>
{
selectedDataSource
.
value
=
dbId
allSchemasIndex
.
value
=
index
console
.
log
(
'allSchemasCompute.value'
,
allSchemasCompute
.
value
)
selectedSchemas
.
value
=
[]
console
.
log
(
'已经选择的表'
,
schemalist
.
value
)
allSchemasCompute
.
value
.
forEach
(
element
=>
{
if
(
schemalist
.
value
.
find
(
item
=>
item
.
schemaname
===
element
.
value
&&
(
item
.
osdsid
==
selectedDbDetails
.
value
[
allSchemasIndex
.
value
].
tid
))){
selectedSchemas
.
value
.
push
(
element
.
value
)
}
});
}
const
handleSelectAllSchemas
=
(
val
)
=>
{
console
.
log
(
'selectedSchemas.value'
,
selectedSchemas
.
value
)
// return
if
(
val
)
{
selectedSchemas
.
value
=
[...
allSchemas
.
value
]
let
list
=
[]
allSchemasCompute
.
value
.
forEach
(
element
=>
{
list
.
push
(
element
.
value
)
});
selectedSchemas
.
value
=
list
}
else
{
selectedSchemas
.
value
=
[]
}
}
const
schemalist
=
ref
([])
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
=>
{
console
.
log
(
'element'
,
element
)
let
data
=
{
schemaname
:
element
,
dbtype
:
selectedDbDetails
.
value
[
allSchemasIndex
.
value
].
dbtype
,
osdsid
:
selectedDbDetails
.
value
[
allSchemasIndex
.
value
].
tid
,
}
schemalist
.
value
.
push
(
data
)
});
}
const
toggleGroupSelection
=
(
group
,
selected
)
=>
{
const
groupDomainIds
=
group
.
domains
.
map
(
d
=>
d
.
id
)
const
groupDomainIds
=
group
.
list
.
map
(
d
=>
d
.
id
)
if
(
selected
)
{
const
newSelected
=
[...
new
Set
([...
selectedDomains
.
value
,
...
groupDomainIds
])]
...
...
@@ -554,14 +604,32 @@ const handleNextStep = async () => {
}
// 其他步骤直接前进
activeStep
.
value
++
getAllDataAreaAndRule
().
then
(
res
=>
{
console
.
log
(
res
)
domainGroups
.
value
=
res
.
data
})
}
else
{
console
.
log
(
'selectedDomainDetails'
,
selectedDomainDetails
.
value
)
// 最后一步提交数据
formData
.
value
.
databases
=
selectedDbDetails
.
value
formData
.
value
.
schemas
=
selectedSchemas
.
value
formData
.
value
.
domains
=
selectedDomainDetails
.
value
formData
.
value
.
schemas
=
schemalist
.
value
formData
.
value
.
domains
=
selectedDomainDetails
.
value
.
map
(
item
=>
(({
dataarea_id
:
item
.
dataarea_id
,
rule_id
:
item
.
id
})))
emit
(
'submit'
,
formData
.
value
)
dialogVisible
.
value
=
false
setTimeout
(()
=>
{
reset
()
dialogVisible
.
value
=
false
},
300
);
}
}
// 第一步验证接口函数
...
...
@@ -613,15 +681,17 @@ watch(selectedDbs, (newVal) => {
selectAll
.
value
=
newVal
.
length
>
0
&&
newVal
.
length
===
allDatabases
.
value
.
length
})
watch
(
selectedSchemas
,
(
newVal
)
=>
{
selectAllSchemas
.
value
=
newVal
.
length
===
allSchemas
.
value
.
length
},
{
deep
:
true
})
watch
(
selectedDomains
,
(
newVal
)
=>
{
domainGroups
.
value
.
forEach
(
group
=>
{
const
groupDomainIds
=
group
.
domains
.
map
(
d
=>
d
.
id
)
group
.
selectedAll
=
groupDomainIds
.
every
(
id
=>
newVal
.
includes
(
id
))
})
if
(
domainGroups
.
value
.
length
>
0
){
console
.
log
(
'domainGroups'
,
domainGroups
.
value
)
domainGroups
.
value
.
forEach
(
group
=>
{
const
groupDomainIds
=
group
.
list
.
map
(
d
=>
d
.
id
)
group
.
selectedAll
=
groupDomainIds
.
every
(
id
=>
newVal
.
includes
(
id
))
})
}
},
{
deep
:
true
})
// 初始化时自动选择第一个数据源
...
...
@@ -630,6 +700,7 @@ watch(selectedDbDetails,async (newVal,oldVal) => {
if
(
newVal
.
length
>
0
){
if
(
JSON
.
stringify
(
newVal
)
!==
JSON
.
stringify
(
oldVal
)){
await
fetchAllSchemas
(
newVal
)
}
...
...
@@ -675,7 +746,7 @@ const fetchAllSchemas = async (databases) => {
// 合并成功的数据
successResults
.
forEach
(
res
=>
{
if
(
res
.
data
&&
Array
.
isArray
(
res
.
data
))
{
allSchemas
.
value
=
[...
allSchemas
.
value
,
...
res
.
data
]
allSchemas
.
value
.
push
(
res
.
data
)
}
})
...
...
@@ -687,7 +758,7 @@ const fetchAllSchemas = async (databases) => {
if
(
errorResults
.
length
>
0
)
{
console
.
log
(
`
${
errorResults
.
length
}
个数据库的Schema获取失败`
)
}
console
.
log
(
'allSchemas'
,
allSchemas
.
value
)
}
catch
(
error
)
{
console
.
error
(
'获取Schema数据过程中出错:'
,
error
)
ElMessage
.
error
(
'获取Schema数据过程中出错'
)
...
...
@@ -697,17 +768,107 @@ const fetchAllSchemas = async (databases) => {
}
const
processAreaAndRuleList
=
(
areaAndRuleList
)
=>
{
if
(
!
areaAndRuleList
||
!
Array
.
isArray
(
areaAndRuleList
))
return
// 获取所有数据域分组信息
getAllDataAreaAndRule
().
then
(
res
=>
{
console
.
log
(
'所有数据域分组:'
,
res
.
data
)
// 处理已选择的数据域
const
selectedDomainIds
=
[]
// 将接口返回的数据映射到 domainGroups
domainGroups
.
value
=
res
.
data
.
map
(
group
=>
{
// 处理组内的每个规则
const
processedList
=
group
.
list
.
map
(
domain
=>
{
// 检查这个规则是否在已选择的列表中
const
isSelected
=
areaAndRuleList
.
some
(
item
=>
item
.
dataarea_id
===
group
.
dataarea_id
&&
item
.
rule_id
===
domain
.
id
)
if
(
isSelected
)
{
selectedDomainIds
.
push
(
domain
.
id
)
}
return
{
...
domain
,
dataarea_id
:
group
.
dataarea_id
// 添加数据域ID引用
}
})
// 检查是否全选
const
groupDomainIds
=
processedList
.
map
(
d
=>
d
.
id
)
const
selectedInGroup
=
selectedDomainIds
.
filter
(
id
=>
groupDomainIds
.
includes
(
id
))
group
.
selectedAll
=
selectedInGroup
.
length
===
groupDomainIds
.
length
&&
groupDomainIds
.
length
>
0
return
{
...
group
,
list
:
processedList
}
})
// 设置已选择的数据域
selectedDomains
.
value
=
selectedDomainIds
console
.
log
(
'已选择的数据域ID:'
,
selectedDomains
.
value
)
})
}
// 处理Schema数据
const
processSchemaList
=
(
schemaList
)
=>
{
if
(
!
schemaList
||
!
Array
.
isArray
(
schemaList
))
return
// 获取所有数据源的Schema信息
fetchAllSchemas
(
selectedDbDetails
.
value
).
then
(()
=>
{
// 设置已选择的Schema
selectedSchemas
.
value
=
schemaList
.
map
(
item
=>
item
.
schemaname
)
// 构建schemalist用于表单提交
schemalist
.
value
=
schemaList
.
map
(
item
=>
({
schemaname
:
item
.
schemaname
,
dbtype
:
item
.
dbtype
,
osdsid
:
item
.
osdsid
}))
console
.
log
(
'已选择的Schema:'
,
selectedSchemas
.
value
)
console
.
log
(
'用于提交的schemalist:'
,
schemalist
.
value
)
})
}
// 监听传入的项目数据变化
watch
(()
=>
props
.
projectData
,
(
newVal
)
=>
{
if
(
props
.
mode
===
'edit'
)
{
formData
.
value
=
{
...
newVal
}
getDataProjectDetail
({
projectId
:
newVal
.
id
}).
then
(
res
=>
{
if
(
res
.
flag
){
let
data
=
res
.
data
if
(
!
data
)
return
formData
.
value
.
name
=
data
.
project
.
project
formData
.
value
.
remark
=
data
.
project
.
note
selectedDbs
.
value
=
data
.
dataSourceIdList
.
map
(
item
=>
item
.
systemsource_id
)
// selectedSchemas.value = data.schemalist.map(item =>item.schemaname)
// selectedDomains.value = data.areaAndRuleList.map(item =>item.id)
// console.log('selectedSchemas',selectedSchemas.value)
// 处理Schema数据
processSchemaList
(
data
.
schemalist
)
// let list = data.areaAndRuleList
processAreaAndRuleList
(
data
.
areaAndRuleList
)
}
else
{
ElMessage
.
error
(
res
.
msg
)
}
}).
catch
(
err
=>
{
ElMessage
.
error
(
res
.
msg
)
})
// 初始化选中状态
selectedDbs
.
value
=
newVal
.
databases
.
map
(
db
=>
db
.
id
)
selectedSchemas
.
value
=
[...
newVal
.
schemas
]
selectedDomains
.
value
=
newVal
.
domains
.
map
(
domain
=>
domain
.
id
)
//
selectedDbs.value = newVal.databases.map(db => db.id)
//
selectedSchemas.value = [...newVal.schemas]
//
selectedDomains.value = newVal.domains.map(domain => domain.id)
}
},
{
immediate
:
true
,
deep
:
true
})
</
script
>
...
...
@@ -872,8 +1033,10 @@ watch(() => props.projectData, (newVal) => {
.available-domains
,
.selected-domains
{
flex
:
1
;
border
:
1px
solid
#ebeef5
;
border-radius
:
4px
;
border-radius
:
4px
;
background-color
:
#f8f8f8
;
height
:
500px
;
overflow-y
:
auto
;
}
.section-header
{
...
...
src/views/project/Project/list.vue
View file @
8841058d
<
script
setup
name=
"ProjectManageList"
>
import
{
getCurrentInstance
,
reactive
,
ref
,
toRefs
,
onMounted
}
from
'vue'
import
{
ElMessage
}
from
'element-plus'
import
{
ElMessage
,
ElMessageBox
}
from
'element-plus'
import
QueryForm
from
'./QueryForm.vue'
import
ProjectEditDialog
from
'./ProjectEditDialog.vue'
import
DownloadPluginDialog
from
'./DownloadPluginDialog.vue'
...
...
@@ -10,7 +10,9 @@ import {changeRoute} from '@/utils/switchRoute'
import
{
selectDataProject
,
checkProjectNum
,
getdatascopeprojectlist
addDataProject
,
deleteDataProject
,
updateDataProject
}
from
'@/api/project'
import
useAppStore
from
'@/store/modules/app'
...
...
@@ -215,8 +217,39 @@ const handleEditProject = (project) => {
// 删除项目
const
handleDeleteProject
=
(
project
)
=>
{
const
handleDeleteProject
=
(
val
)
=>
{
ElMessageBox
.
confirm
(
`确定要删除项目「
${
val
.
project
}
」吗?此操作不可恢复。`
,
'删除确认'
,
{
confirmButtonText
:
'确认删除'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
,
center
:
true
,
callback
:
(
action
)
=>
{
if
(
action
===
'confirm'
)
{
// 执行删除操作
let
parms
=
{
loginUser
:
loginUser
,
project
:
val
}
deleteDataProject
(
parms
).
then
(
res
=>
{
if
(
res
.
flag
){
ElMessage
.
success
(
`项目「
${
val
.
project
}
」已删除`
);
}
else
{
ElMessage
.
info
(
res
.
msg
);
}
}).
catch
(
err
=>
{
ElMessage
.
info
(
res
.
msg
);
})
}
else
{
ElMessage
.
info
(
'已取消删除'
);
}
}
}
);
}
// 导入项目
...
...
@@ -245,22 +278,66 @@ const handleSubmit = (formData) => {
if
(
dialogMode
.
value
===
'add'
)
{
// 模拟新增
const
newProject
=
{
id
:
tableList
.
value
.
length
+
1
,
proName
:
formData
.
proName
,
datasource
:
'待配置'
,
domain
:
'待配置'
,
findRule
:
'待配置'
loginUser
:
loginUser
,
project
:{
edition_id
:
''
,
note
:
formData
.
remark
,
project
:
formData
.
name
,
projectType
:
"normal"
,
},
schemalist
:
formData
.
schemas
,
areaAndRuleList
:
formData
.
domains
,
dataSourceIdList
:
formData
.
databases
.
map
(
item
=>
(({
id
:
item
.
tid
,
sysname
:
item
.
sysname
,
systemstyle
:
1
,
dbtype
:
item
.
dbtype
})))
}
tableList
.
value
.
push
(
newProject
)
total
.
value
++
ElMessage
.
success
(
'新增项目成功'
)
addDataProject
(
newProject
).
then
(
res
=>
{
console
.
log
(
res
)
if
(
res
.
flag
){
ElMessage
.
success
(
'新增项目成功'
)
handleQuery
()
}
})
// tableList.value.push(newProject)
// total.value++
// ElMessage.success('新增项目成功')
}
else
{
// 模拟编辑
const
index
=
tableList
.
value
.
findIndex
(
p
=>
p
.
id
===
currentProject
.
value
.
id
)
if
(
index
!==
-
1
)
{
tableList
.
value
[
index
].
proName
=
formData
.
proName
ElMessage
.
success
(
'编辑项目成功'
)
const
newProject
=
{
loginUser
:
loginUser
,
project
:{
edition_id
:
''
,
note
:
formData
.
remark
,
project
:
formData
.
name
,
id
:
formData
.
id
,
projectType
:
"normal"
,
},
schemalist
:
formData
.
schemas
,
areaAndRuleList
:
formData
.
domains
,
dataSourceIdList
:
formData
.
databases
.
map
(
item
=>
(({
id
:
item
.
tid
,
sysname
:
item
.
sysname
,
systemstyle
:
1
,
dbtype
:
item
.
dbtype
})))
}
console
.
log
(
'newProject'
,
newProject
)
updateDataProject
(
newProject
).
then
(
res
=>
{
console
.
log
(
res
)
if
(
res
.
flag
){
ElMessage
.
success
(
'新增项目成功'
)
handleQuery
()
}
})
}
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论