You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
192 lines
4.9 KiB
192 lines
4.9 KiB
2 months ago
|
<template>
|
||
|
<PageWrapper dense>
|
||
|
<a-row>
|
||
|
<a-col :span="8" style="margin-top: 1%">
|
||
|
<div>
|
||
|
<a-button type="primary" @click="handleAdd" size="small" class="treeButton"
|
||
|
>新增目录</a-button
|
||
|
>
|
||
|
<a-button type="primary" @click="handleAdd" size="small" class="treeButton"
|
||
|
>编辑目录</a-button
|
||
|
>
|
||
|
<a-button type="primary" @click="handleAdd" size="small" class="treeButton"
|
||
|
>删除目录</a-button
|
||
|
>
|
||
|
<a-button type="primary" @click="handleAdd" size="small" class="treeButton"
|
||
|
>导入</a-button
|
||
|
>
|
||
|
</div>
|
||
|
<a-tree
|
||
|
:show-line="true"
|
||
|
:show-icon="true"
|
||
|
:depoint-expanded-keys="['0-0-0']"
|
||
|
:tree-data="treeData"
|
||
|
@select="onSelect"
|
||
|
>
|
||
|
<template #title="{ dataRef }">
|
||
|
<template v-if="dataRef.key === '0-0-0-1'">
|
||
|
<div>multiple line title</div>
|
||
|
<div>multiple line title</div>
|
||
|
</template>
|
||
|
<template v-else>{{ dataRef.title }}</template>
|
||
|
</template>
|
||
|
</a-tree>
|
||
|
</a-col>
|
||
|
<a-col :span="16">
|
||
|
<BasicTable @register="registerTable">
|
||
|
<template #toolbar>
|
||
|
<a-button type="primary" @click="handleAdd">新增协议</a-button>
|
||
|
<a-button type="primary" @click="handleTypeAdd">新增类型</a-button>
|
||
|
<a-button type="primary" @click="handleAdd">导入</a-button>
|
||
|
<a-button type="primary" @click="handleAdd">导出</a-button>
|
||
|
</template>
|
||
|
<template #bodyCell="{ column, record }">
|
||
|
<template v-if="column && record && column.key === 'action'">
|
||
|
<a-button type="link" @click="handleEdit(record.id)">编辑</a-button>
|
||
|
<a-button type="link" @click="handleDelete(record.id)">删除</a-button>
|
||
|
</template>
|
||
|
</template>
|
||
|
</BasicTable>
|
||
|
<addModal ref="addModalRef" />
|
||
|
<AddTypeModal ref="addTypeModalRef" />
|
||
|
</a-col>
|
||
|
</a-row>
|
||
|
</PageWrapper>
|
||
|
</template>
|
||
|
|
||
|
<script setup lang="ts">
|
||
|
import { PageWrapper } from '@/components/Page';
|
||
|
import { BasicTable, useTable } from '@/components/Table';
|
||
|
import { list } from './api';
|
||
|
import { formSchemas, columns } from './data';
|
||
|
import addModal from './addModal.vue';
|
||
|
import { ref } from 'vue';
|
||
|
import AddTypeModal from './addTypeModal.vue';
|
||
|
|
||
|
defineOptions({ name: 'ServiceManage' });
|
||
|
|
||
|
const [registerTable, { reload }] = useTable({
|
||
|
rowSelection: {
|
||
|
type: 'checkbox',
|
||
|
},
|
||
|
title: '服务管理',
|
||
|
api: list,
|
||
|
showIndexColumn: true,
|
||
|
rowKey: 'id',
|
||
|
useSearchForm: true,
|
||
|
formConfig: {
|
||
|
schemas: formSchemas,
|
||
|
name: 'serviceManage',
|
||
|
baseColProps: {
|
||
|
xs: 24,
|
||
|
sm: 24,
|
||
|
md: 24,
|
||
|
lg: 6,
|
||
|
},
|
||
|
},
|
||
|
columns: columns,
|
||
|
actionColumn: {
|
||
|
width: 200,
|
||
|
title: '操作',
|
||
|
key: 'action',
|
||
|
fixed: 'right',
|
||
|
},
|
||
|
});
|
||
|
//新增编辑弹窗
|
||
|
const addModalRef = ref();
|
||
|
const handleAdd = () => {
|
||
|
addModalRef.value.showModal(1);
|
||
|
};
|
||
|
const handleEdit = (id: any) => {
|
||
|
addModalRef.value.showModal(2, id);
|
||
|
};
|
||
|
const handleDelete = (id: any) => {
|
||
|
addModalRef.value.showModal(2, id);
|
||
|
};
|
||
|
//新增类型弹窗
|
||
|
const addTypeModalRef = ref();
|
||
|
const handleTypeAdd = () => {
|
||
|
addTypeModalRef.value.showModal(1);
|
||
|
};
|
||
|
//tree
|
||
|
const treeData = ref([
|
||
|
{
|
||
|
title: 'parent 1',
|
||
|
key: '0-0',
|
||
|
children: [
|
||
|
{
|
||
|
title: 'parent 1-0',
|
||
|
key: '0-0-0',
|
||
|
children: [
|
||
|
{
|
||
|
title: 'leaf',
|
||
|
key: '0-0-0-0',
|
||
|
},
|
||
|
{
|
||
|
key: '0-0-0-1',
|
||
|
},
|
||
|
{
|
||
|
title: 'leaf',
|
||
|
key: '0-0-0-2',
|
||
|
},
|
||
|
],
|
||
|
},
|
||
|
{
|
||
|
title: 'parent 1-1',
|
||
|
key: '0-0-1',
|
||
|
children: [
|
||
|
{
|
||
|
title: 'leaf',
|
||
|
key: '0-0-1-0',
|
||
|
},
|
||
|
],
|
||
|
},
|
||
|
{
|
||
|
title: 'parent 1-2',
|
||
|
key: '0-0-2',
|
||
|
children: [
|
||
|
{
|
||
|
title: 'leaf 1',
|
||
|
key: '0-0-2-0',
|
||
|
},
|
||
|
{
|
||
|
title: 'leaf 2',
|
||
|
key: '0-0-2-1',
|
||
|
},
|
||
|
],
|
||
|
},
|
||
|
],
|
||
|
},
|
||
|
{
|
||
|
title: 'parent 2',
|
||
|
key: '0-1',
|
||
|
children: [
|
||
|
{
|
||
|
title: 'parent 2-0',
|
||
|
key: '0-1-0',
|
||
|
children: [
|
||
|
{
|
||
|
title: 'leaf',
|
||
|
key: '0-1-0-0',
|
||
|
},
|
||
|
{
|
||
|
title: 'leaf',
|
||
|
key: '0-1-0-1',
|
||
|
},
|
||
|
],
|
||
|
},
|
||
|
],
|
||
|
},
|
||
|
]);
|
||
|
const onSelect = (selectedKeys: any, info: any) => {
|
||
|
console.log('selected', selectedKeys, info);
|
||
|
reload();
|
||
|
};
|
||
|
</script>
|
||
|
|
||
|
<style scoped>
|
||
|
.treeButton {
|
||
|
margin: 0 1% 1%;
|
||
|
}
|
||
|
</style>
|