feat: 数据集管理

This commit is contained in:
wangdan-fit2cloud 2023-11-07 15:30:15 +08:00
parent d9cc20bdd3
commit 98681964d7
10 changed files with 73 additions and 30 deletions

View File

@ -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

View File

@ -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 {

View File

@ -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>

View File

@ -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)
} }

View File

@ -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')
} }
] ]
} }

View File

@ -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')
} }
] ]

View File

@ -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">

View 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>

View File

@ -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)

View File

@ -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