Commit 8841058d by ningjihai

1234

parent 5aad29d1
...@@ -67,4 +67,43 @@ export function queryShemas(data) { ...@@ -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
})
}
import router from './router' import router from './router'
import { ElMessage } from 'element-plus' import { ElMessage } from 'element-plus'
import NProgress from 'nprogress' import NProgress, { settings } from 'nprogress'
import 'nprogress/nprogress.css' import 'nprogress/nprogress.css'
import { getToken } from '@/utils/auth' import { getToken } from '@/utils/auth'
import { isHttp, isPathMatch } from '@/utils/validate' import { isHttp, isPathMatch } from '@/utils/validate'
...@@ -17,55 +17,63 @@ const isWhiteList = (path) => { ...@@ -17,55 +17,63 @@ const isWhiteList = (path) => {
return whiteList.some(pattern => isPathMatch(pattern, path)) return whiteList.some(pattern => isPathMatch(pattern, path))
} }
router.beforeEach((to, from, next) => { router.beforeEach(async (to, from, next) => {
NProgress.start() NProgress.start()
// if (getToken()) {
// to.meta.title && useSettingsStore().setTitle(to.meta.title) // 获取permissionStore实例
// /* has token*/ const permissionStore = usePermissionStore()
// 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()
// }
// }
if (sessionStorage.getItem('__token') || isWhiteList(to.path)) { 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 { } else {
next(`/login?redirect=${to.fullPath}`) next(`/login?redirect=${to.fullPath}`)
NProgress.done() NProgress.done()
...@@ -74,4 +82,4 @@ router.beforeEach((to, from, next) => { ...@@ -74,4 +82,4 @@ router.beforeEach((to, from, next) => {
router.afterEach(() => { router.afterEach(() => {
NProgress.done() NProgress.done()
}) })
\ No newline at end of file
...@@ -80,7 +80,7 @@ ...@@ -80,7 +80,7 @@
:key="db.id" :key="db.id"
class="db-item" class="db-item"
> >
<el-checkbox :label="db.tid"> <el-checkbox :value="db.tid">
{{ db.sysname }} {{ db.sysname }}
</el-checkbox> </el-checkbox>
</div> </div>
...@@ -120,11 +120,11 @@ ...@@ -120,11 +120,11 @@
<el-scrollbar height="400px"> <el-scrollbar height="400px">
<div class="datasource-list"> <div class="datasource-list">
<div <div
v-for="db in selectedDbDetails" v-for="(db,dbindex) in selectedDbDetails"
:key="db.tid" :key="db.tid"
class="datasource-item" class="datasource-item"
:class="{ active: selectedDataSource === db.tid }" :class="{ active: selectedDataSource === db.tid }"
@click="selectDataSource(db.tid)" @click="selectDataSource(db.tid,dbindex)"
> >
{{ db.sysname }} {{ db.sysname }}
</div> </div>
...@@ -143,20 +143,19 @@ ...@@ -143,20 +143,19 @@
> >
全选 全选
</el-checkbox> </el-checkbox>
<span class="schema-count">{{ selectedSchemas.length }}/{{ allSchemas.length }}</span> <span class="schema-count">{{ selectedSchemas.length }}/{{ allSchemasCompute.length }}</span>
</div> </div>
</div> </div>
<el-scrollbar height="400px"> <el-scrollbar height="400px">
<el-checkbox-group v-model="selectedSchemas"> <el-checkbox-group v-model="selectedSchemas" @change="schemaChange">
<div <div
v-for="schema in allSchemas" v-for="schema in allSchemasCompute"
:key="schema" :key="schema"
class="schema-item" class="schema-item"
> >
<el-checkbox :label="schema"> <el-checkbox :value="schema.value" :label=" schema.text" />
{{ schema }}
</el-checkbox>
</div> </div>
</el-checkbox-group> </el-checkbox-group>
</el-scrollbar> </el-scrollbar>
...@@ -175,24 +174,24 @@ ...@@ -175,24 +174,24 @@
<div class="section-title">可选择数据域</div> <div class="section-title">可选择数据域</div>
</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"> <div class="group-header">
<el-checkbox <el-checkbox
v-model="group.selectedAll" v-model="group.selectedAll"
@change="(val) => toggleGroupSelection(group, val)" @change="(val) => toggleGroupSelection(group, val)"
> >
{{ group.name }} {{ group.dataarea }}
</el-checkbox> </el-checkbox>
</div> </div>
<el-scrollbar height="300px"> <el-scrollbar height="150px">
<el-checkbox-group v-model="selectedDomains"> <el-checkbox-group v-model="selectedDomains">
<div <div
v-for="domain in group.domains" v-for="domain in group.list"
:key="domain.id" :key="domain.id"
class="domain-item" class="domain-item"
> >
<el-checkbox :label="domain.id"> <el-checkbox :value="domain.id">
<div class="domain-content"> <div class="domain-content">
<div class="domain-name">{{ domain.name }}</div> <div class="domain-name">{{ domain.name }}</div>
<div v-if="domain.desc" class="domain-desc">{{ domain.desc }}</div> <div v-if="domain.desc" class="domain-desc">{{ domain.desc }}</div>
...@@ -202,6 +201,7 @@ ...@@ -202,6 +201,7 @@
</el-checkbox-group> </el-checkbox-group>
</el-scrollbar> </el-scrollbar>
</div> </div>
</div> </div>
<!-- 右侧已选择数据域 --> <!-- 右侧已选择数据域 -->
...@@ -262,8 +262,9 @@ import { ...@@ -262,8 +262,9 @@ import {
checkDatasystem, checkDatasystem,
queryByEditSort, queryByEditSort,
selectProDataSource, selectProDataSource,
queryShemas queryShemas,
getAllDataAreaAndRule,
getDataProjectDetail
} from '@/api/project' } from '@/api/project'
import useAppStore from '@/store/modules/app' import useAppStore from '@/store/modules/app'
...@@ -353,7 +354,7 @@ const formData = ref({ ...@@ -353,7 +354,7 @@ const formData = ref({
projectType: 'normal', projectType: 'normal',
databases: [], databases: [],
schemas: [], schemas: [],
domains: [] domains: [],
}) })
// 步骤条相关 // 步骤条相关
...@@ -401,37 +402,37 @@ const selectAllSchemas = ref(false) ...@@ -401,37 +402,37 @@ const selectAllSchemas = ref(false)
// 第四步:数据域选择相关 // 第四步:数据域选择相关
const domainGroups = ref([ const domainGroups = ref([
{ // {
name: '混合数据域', // name: '混合数据域',
selectedAll: false, // selectedAll: false,
domains: [ // domains: [
{ id: 'domain1', name: '566546', desc: '' }, // { id: 'domain1', name: '566546', desc: '' },
{ id: 'domain2', name: '通用规则', desc: '' }, // { id: 'domain2', name: '通用规则', desc: '' },
{ id: 'domain3', name: '解密数据', desc: '' }, // { id: 'domain3', name: '解密数据', desc: '' },
{ id: 'domain4', name: '混合证件号', desc: '按混合证件号字段查询' } // { id: 'domain4', name: '混合证件号', desc: '按混合证件号字段查询' }
] // ]
}, // },
{ // {
name: '智能数据域', // name: '智能数据域',
selectedAll: false, // selectedAll: false,
domains: [ // domains: [
{ id: 'domain5', name: '智能推荐', desc: '' }, // { id: 'domain5', name: '智能推荐', desc: '' },
{ id: 'domain6', name: '电子邮件', desc: '按邮箱字段查找' }, // { id: 'domain6', name: '电子邮件', desc: '按邮箱字段查找' },
{ id: 'domain7', name: '社保卡号', desc: '' } // { id: 'domain7', name: '社保卡号', desc: '' }
] // ]
}, // },
{ // {
name: '测试数据域', // name: '测试数据域',
selectedAll: false, // selectedAll: false,
domains: [ // domains: [
{ id: 'domain8', name: '发现规则1', desc: '' }, // { id: 'domain8', name: '发现规则1', desc: '' },
{ id: 'domain9', name: '营业执照', desc: '按营业执照字段查询' }, // { id: 'domain9', name: '营业执照', desc: '按营业执照字段查询' },
{ id: 'domain10', name: '邮政编码', desc: '邮政编码字段查找' } // { id: 'domain10', name: '邮政编码', desc: '邮政编码字段查找' }
] // ]
} // }
]) ])
const selectedDomains = ref(['domain2', 'domain3', 'domain4', 'domain6', 'domain7', 'domain9', 'domain10']) const selectedDomains = ref([])
// 计算属性 // 计算属性
const filteredDatabases = computed(() => { const filteredDatabases = computed(() => {
...@@ -447,12 +448,13 @@ const selectedDbDetails = computed(() => { ...@@ -447,12 +448,13 @@ const selectedDbDetails = computed(() => {
}) })
const selectedDomainDetails = 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)) return allDomains.filter(domain => selectedDomains.value.includes(domain.id))
}) })
// 方法 // 方法
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 {
...@@ -464,21 +466,69 @@ const handleClearSelected = () => { ...@@ -464,21 +466,69 @@ const handleClearSelected = () => {
selectedDbs.value = [] selectedDbs.value = []
selectAll.value = false 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 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) => { const handleSelectAllSchemas = (val) => {
console.log('selectedSchemas.value',selectedSchemas.value)
// return
if (val) { if (val) {
selectedSchemas.value = [...allSchemas.value] let list = []
allSchemasCompute.value.forEach(element => {
list.push(element.value)
});
selectedSchemas.value = list
} else { } else {
selectedSchemas.value = [] 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 toggleGroupSelection = (group, selected) => {
const groupDomainIds = group.domains.map(d => d.id) const groupDomainIds = group.list.map(d => d.id)
if (selected) { if (selected) {
const newSelected = [...new Set([...selectedDomains.value, ...groupDomainIds])] const newSelected = [...new Set([...selectedDomains.value, ...groupDomainIds])]
...@@ -554,14 +604,32 @@ const handleNextStep = async () => { ...@@ -554,14 +604,32 @@ const handleNextStep = async () => {
} }
// 其他步骤直接前进 // 其他步骤直接前进
activeStep.value++ activeStep.value++
getAllDataAreaAndRule().then(res=>{
console.log(res)
domainGroups.value = res.data
})
} else { } else {
console.log('selectedDomainDetails',selectedDomainDetails.value)
// 最后一步提交数据 // 最后一步提交数据
formData.value.databases = selectedDbDetails.value formData.value.databases = selectedDbDetails.value
formData.value.schemas = selectedSchemas.value formData.value.schemas = schemalist.value
formData.value.domains = selectedDomainDetails.value formData.value.domains = selectedDomainDetails.value.map(item=>(({
dataarea_id:item.dataarea_id,
rule_id:item.id
})))
emit('submit', formData.value) emit('submit', formData.value)
dialogVisible.value = false
setTimeout(() => {
reset()
dialogVisible.value = false
}, 300);
} }
} }
// 第一步验证接口函数 // 第一步验证接口函数
...@@ -613,15 +681,17 @@ watch(selectedDbs, (newVal) => { ...@@ -613,15 +681,17 @@ watch(selectedDbs, (newVal) => {
selectAll.value = newVal.length > 0 && newVal.length === allDatabases.value.length 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) => { watch(selectedDomains, (newVal) => {
domainGroups.value.forEach(group => { if(domainGroups.value.length>0){
const groupDomainIds = group.domains.map(d => d.id) console.log('domainGroups',domainGroups.value)
group.selectedAll = groupDomainIds.every(id => newVal.includes(id)) domainGroups.value.forEach(group => {
}) const groupDomainIds = group.list.map(d => d.id)
group.selectedAll = groupDomainIds.every(id => newVal.includes(id))
})
}
}, { deep: true }) }, { deep: true })
// 初始化时自动选择第一个数据源 // 初始化时自动选择第一个数据源
...@@ -630,6 +700,7 @@ watch(selectedDbDetails,async (newVal,oldVal) => { ...@@ -630,6 +700,7 @@ watch(selectedDbDetails,async (newVal,oldVal) => {
if(newVal.length > 0){ if(newVal.length > 0){
if(JSON.stringify(newVal) !== JSON.stringify(oldVal)){ if(JSON.stringify(newVal) !== JSON.stringify(oldVal)){
await fetchAllSchemas(newVal) await fetchAllSchemas(newVal)
} }
...@@ -675,7 +746,7 @@ const fetchAllSchemas = async (databases) => { ...@@ -675,7 +746,7 @@ const fetchAllSchemas = async (databases) => {
// 合并成功的数据 // 合并成功的数据
successResults.forEach(res => { successResults.forEach(res => {
if (res.data && Array.isArray(res.data)) { 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) => { ...@@ -687,7 +758,7 @@ const fetchAllSchemas = async (databases) => {
if (errorResults.length > 0) { if (errorResults.length > 0) {
console.log(`${errorResults.length} 个数据库的Schema获取失败`) 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数据过程中出错')
...@@ -697,17 +768,107 @@ const fetchAllSchemas = async (databases) => { ...@@ -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) => { watch(() => props.projectData, (newVal) => {
if (props.mode === 'edit') { if (props.mode === 'edit') {
formData.value = { ...newVal } 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) // selectedDbs.value = newVal.databases.map(db => db.id)
selectedSchemas.value = [...newVal.schemas] // selectedSchemas.value = [...newVal.schemas]
selectedDomains.value = newVal.domains.map(domain => domain.id) // selectedDomains.value = newVal.domains.map(domain => domain.id)
} }
}, { immediate: true, deep: true }) }, { immediate: true, deep: true })
</script> </script>
...@@ -872,8 +1033,10 @@ watch(() => props.projectData, (newVal) => { ...@@ -872,8 +1033,10 @@ watch(() => props.projectData, (newVal) => {
.available-domains, .selected-domains { .available-domains, .selected-domains {
flex: 1; flex: 1;
border: 1px solid #ebeef5; border: 1px solid #ebeef5;
border-radius: 4px; border-radius: 4px;
background-color: #f8f8f8; background-color: #f8f8f8;
height: 500px;
overflow-y: auto;
} }
.section-header { .section-header {
......
<script setup name="ProjectManageList"> <script setup name="ProjectManageList">
import { getCurrentInstance, reactive, ref, toRefs,onMounted } from 'vue' 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 QueryForm from './QueryForm.vue'
import ProjectEditDialog from './ProjectEditDialog.vue' import ProjectEditDialog from './ProjectEditDialog.vue'
import DownloadPluginDialog from './DownloadPluginDialog.vue' import DownloadPluginDialog from './DownloadPluginDialog.vue'
...@@ -10,7 +10,9 @@ import {changeRoute} from '@/utils/switchRoute' ...@@ -10,7 +10,9 @@ import {changeRoute} from '@/utils/switchRoute'
import { import {
selectDataProject, selectDataProject,
checkProjectNum, checkProjectNum,
getdatascopeprojectlist addDataProject,
deleteDataProject,
updateDataProject
} from '@/api/project' } from '@/api/project'
import useAppStore from '@/store/modules/app' import useAppStore from '@/store/modules/app'
...@@ -215,8 +217,39 @@ const handleEditProject = (project) => { ...@@ -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) => { ...@@ -245,22 +278,66 @@ const handleSubmit = (formData) => {
if (dialogMode.value === 'add') { if (dialogMode.value === 'add') {
// 模拟新增 // 模拟新增
const newProject = { const newProject = {
id: tableList.value.length + 1,
proName: formData.proName,
datasource: '待配置', loginUser:loginUser,
domain: '待配置', project:{
findRule: '待配置' 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) addDataProject(newProject).then(res=>{
total.value++ console.log(res)
ElMessage.success('新增项目成功') if(res.flag){
ElMessage.success('新增项目成功')
handleQuery()
}
})
// tableList.value.push(newProject)
// total.value++
// ElMessage.success('新增项目成功')
} else { } else {
// 模拟编辑 const newProject = {
const index = tableList.value.findIndex(p => p.id === currentProject.value.id)
if (index !== -1) {
tableList.value[index].proName = formData.proName loginUser:loginUser,
ElMessage.success('编辑项目成功') 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 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论