feat: 数据集管理
This commit is contained in:
parent
d9cc20bdd3
commit
98681964d7
@ -14,7 +14,6 @@ import { useRoute } from 'vue-router'
|
|||||||
|
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
const cachedViews: any = ref([])
|
const cachedViews: any = ref([])
|
||||||
|
|
||||||
onBeforeUpdate(() => {
|
onBeforeUpdate(() => {
|
||||||
let isCached = route.meta?.cache
|
let isCached = route.meta?.cache
|
||||||
let name = route.name
|
let name = route.name
|
||||||
|
|||||||
@ -31,6 +31,10 @@ defineProps<{
|
|||||||
padding: 13px 12px 13px 16px !important;
|
padding: 13px 12px 13px 16px !important;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
|
&:hover {
|
||||||
|
background: none;
|
||||||
|
color: var(--el-menu-active-color);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.el-menu-item.is-active {
|
.el-menu-item.is-active {
|
||||||
|
|||||||
@ -1,12 +1,12 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="sidebar">
|
<div class="sidebar">
|
||||||
<el-scrollbar wrap-class="scrollbar-wrapper">
|
<el-scrollbar wrap-class="scrollbar-wrapper">
|
||||||
<el-menu :default-active="activeMenu">
|
<el-menu :default-active="activeMenu" router>
|
||||||
<sidebar-item
|
<sidebar-item
|
||||||
:menu="menu"
|
|
||||||
v-hasPermission="menu.meta?.permission"
|
v-hasPermission="menu.meta?.permission"
|
||||||
v-for="(menu, index) in subMenuList"
|
v-for="(menu, index) in subMenuList"
|
||||||
:key="index"
|
:key="index"
|
||||||
|
:menu="menu"
|
||||||
>
|
>
|
||||||
</sidebar-item>
|
</sidebar-item>
|
||||||
</el-menu>
|
</el-menu>
|
||||||
@ -21,16 +21,14 @@ import { getChildRouteListByPathAndName } from '@/router/index'
|
|||||||
import SidebarItem from './SidebarItem.vue'
|
import SidebarItem from './SidebarItem.vue'
|
||||||
|
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
|
|
||||||
const subMenuList = computed(() => {
|
const subMenuList = computed(() => {
|
||||||
return getChildRouteListByPathAndName(route.path, route.name)
|
return getChildRouteListByPathAndName(route.meta.parentPath, route.meta.parentName)
|
||||||
})
|
})
|
||||||
|
|
||||||
const activeMenu = computed(() => {
|
const activeMenu = computed(() => {
|
||||||
const { meta, path } = route
|
const { path, meta } = route
|
||||||
if (meta.activeMenu) {
|
return meta.active || path
|
||||||
return meta.activeMenu
|
|
||||||
}
|
|
||||||
return path
|
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@ -47,7 +47,7 @@ router.beforeEach(
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
export const getChildRouteListByPathAndName = (path: string, name?: RouteRecordName | null | undefined) => {
|
export const getChildRouteListByPathAndName = (path: any, name?: RouteRecordName | any) => {
|
||||||
return getChildRouteList(routes, path, name)
|
return getChildRouteList(routes, path, name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -18,24 +18,35 @@ const datasetRouter = {
|
|||||||
hidden: true
|
hidden: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/dataset/doc',
|
path: '/dataset/:id',
|
||||||
name: 'DatasetDoc',
|
name: 'DatasetDetail',
|
||||||
meta: { icon: 'House', title: '文档', activeMenu: '/dataset' },
|
meta: { title: '文档', activeMenu: '/dataset' },
|
||||||
component: Layout,
|
component: Layout,
|
||||||
hidden: true,
|
hidden: true,
|
||||||
redirect: '/dataset/doc',
|
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
path: '/dataset/doc',
|
path: 'doc',
|
||||||
name: 'DatasetDoc',
|
name: 'DatasetDoc',
|
||||||
meta: { icon: 'House', title: '文档' },
|
meta: {
|
||||||
|
icon: 'Document',
|
||||||
|
title: '文档',
|
||||||
|
active: 'doc',
|
||||||
|
parentPath: '/dataset/:id',
|
||||||
|
parentName: 'DatasetDetail'
|
||||||
|
},
|
||||||
component: () => import('@/views/dataset/DatasetDoc.vue')
|
component: () => import('@/views/dataset/DatasetDoc.vue')
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/dataset/doc',
|
path: 'setting',
|
||||||
name: 'DatasetDoc',
|
name: 'DatasetSetting',
|
||||||
meta: { icon: 'House', title: '设置' },
|
meta: {
|
||||||
component: () => import('@/views/dataset/DatasetDoc.vue')
|
icon: 'Setting',
|
||||||
|
title: '设置',
|
||||||
|
active: 'setting',
|
||||||
|
parentPath: '/dataset/:id',
|
||||||
|
parentName: 'DatasetDetail'
|
||||||
|
},
|
||||||
|
component: () => import('@/views/dataset/DatasetSetting.vue')
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,7 +9,12 @@ const settingRouter = {
|
|||||||
{
|
{
|
||||||
path: '/setting',
|
path: '/setting',
|
||||||
name: 'setting',
|
name: 'setting',
|
||||||
meta: { icon: 'app-team', title: '团队管理' },
|
meta: {
|
||||||
|
icon: 'app-team',
|
||||||
|
title: '团队管理',
|
||||||
|
parentPath: '/setting',
|
||||||
|
parentName: 'setting'
|
||||||
|
},
|
||||||
component: () => import('@/views/setting/index.vue')
|
component: () => import('@/views/setting/index.vue')
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@ -1,5 +1,12 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>dataset 文档</div>
|
<LayoutContainer header="文档">
|
||||||
|
<div class="main-calc-height">
|
||||||
|
<div class="p-24">
|
||||||
|
1111
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</LayoutContainer>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
|
||||||
|
|||||||
14
ui/src/views/dataset/DatasetSetting.vue
Normal file
14
ui/src/views/dataset/DatasetSetting.vue
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<template>
|
||||||
|
<LayoutContainer header="设置">
|
||||||
|
<div class="main-calc-height">
|
||||||
|
<div class="p-24">
|
||||||
|
<BaseForm />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</LayoutContainer>
|
||||||
|
</template>
|
||||||
|
<script setup lang="ts">
|
||||||
|
import BaseForm from '@/views/dataset/component/BaseForm.vue'
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped></style>
|
||||||
@ -28,7 +28,12 @@
|
|||||||
:key="index"
|
:key="index"
|
||||||
class="mt-8"
|
class="mt-8"
|
||||||
>
|
>
|
||||||
<CardBox :title="item.name" :description="item.desc" class="cursor">
|
<CardBox
|
||||||
|
:title="item.name"
|
||||||
|
:description="item.desc"
|
||||||
|
class="cursor"
|
||||||
|
@click="router.push({ path: `/dataset/${item.id}/doc` })"
|
||||||
|
>
|
||||||
<template #mouseEnter>
|
<template #mouseEnter>
|
||||||
<el-tooltip effect="dark" content="删除" placement="top">
|
<el-tooltip effect="dark" content="删除" placement="top">
|
||||||
<el-button text @click.stop="deleteDateset(item)" class="delete-button">
|
<el-button text @click.stop="deleteDateset(item)" class="delete-button">
|
||||||
@ -59,7 +64,7 @@ import datasetApi from '@/api/dataset'
|
|||||||
import type { datasetListRequest } from '@/api/type/dataset'
|
import type { datasetListRequest } from '@/api/type/dataset'
|
||||||
import { MsgSuccess, MsgConfirm } from '@/utils/message'
|
import { MsgSuccess, MsgConfirm } from '@/utils/message'
|
||||||
import { useRouter } from 'vue-router'
|
import { useRouter } from 'vue-router'
|
||||||
import { numberFormat } from '@/utils/utils';
|
import { numberFormat } from '@/utils/utils'
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
|
|
||||||
const loading = ref(false)
|
const loading = ref(false)
|
||||||
|
|||||||
@ -1,28 +1,28 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-input v-model="filterText" placeholder="搜索" prefix-icon="Search" class="mb-16" />
|
<el-input v-model="filterText" placeholder="搜索" prefix-icon="Search" class="mb-16" />
|
||||||
|
|
||||||
<el-table :data="data" :max-height="tableHeight">
|
<el-table :data="data" :max-height="tableHeight">
|
||||||
<el-table-column prop="name" label="数据集名称" />
|
<el-table-column prop="name" label="数据集名称" />
|
||||||
<el-table-column label="管理" align="center">
|
<el-table-column label="管理" align="center">
|
||||||
<template #header>
|
<!-- <template #header>
|
||||||
<el-checkbox
|
<el-checkbox
|
||||||
v-model="allChecked[MANAGE]"
|
v-model="allChecked[MANAGE]"
|
||||||
label="管理"
|
label="管理"
|
||||||
@change="handleCheckAllChange($event, MANAGE)"
|
@change="handleCheckAllChange($event, MANAGE)"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template> -->
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-checkbox v-model="row.operate[MANAGE]" @change="checkedOperateChange(MANAGE, row)" />
|
<el-checkbox v-model="row.operate[MANAGE]" @change="checkedOperateChange(MANAGE, row)" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="使用" align="center">
|
<el-table-column label="使用" align="center">
|
||||||
<template #header>
|
<!-- <template #header>
|
||||||
<el-checkbox
|
<el-checkbox
|
||||||
v-model="allChecked[USE]"
|
v-model="allChecked[USE]"
|
||||||
label="使用"
|
label="使用"
|
||||||
@change="handleCheckAllChange($event, USE)"
|
@change="handleCheckAllChange($event, USE)"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template> -->
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-checkbox v-model="row.operate[USE]" @change="checkedOperateChange(USE, row)" />
|
<el-checkbox v-model="row.operate[USE]" @change="checkedOperateChange(USE, row)" />
|
||||||
</template>
|
</template>
|
||||||
@ -78,7 +78,7 @@ function handleCheckAllChange(val: string | number | boolean, Name: string | num
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
function checkedOperateChange(Name: string | number, row: any) {
|
function checkedOperateChange(Name: string | number, row: any) {
|
||||||
if (Name === MANAGE) {
|
if (Name === MANAGE && row.operate[MANAGE]) {
|
||||||
props.data.map((item: any) => {
|
props.data.map((item: any) => {
|
||||||
if (item.id === row.id) {
|
if (item.id === row.id) {
|
||||||
item.operate[USE] = true
|
item.operate[USE] = true
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user