246 lines
5.4 KiB
TypeScript
246 lines
5.4 KiB
TypeScript
import type { TableData } from 'lib/type/TableData'
|
||
import "./index.less"
|
||
const data: TableData = {
|
||
rowKey: "id",
|
||
defaultExpandAll: true,
|
||
async fetchFun(self, data) {
|
||
const res = await self.api?.getDataList(data)
|
||
if (self.bean) {
|
||
const items = res.data.items || []
|
||
const data = items.map((item: any) => {
|
||
return {
|
||
name: item.name,
|
||
key: String(item.id),
|
||
id: item.id,
|
||
pid: String(item.pid),
|
||
color: 'category',
|
||
create_time: item.create_time,
|
||
method: item.method,
|
||
type: item.type,
|
||
path: item.path,
|
||
}
|
||
})
|
||
self.bean.categoryList = self.methods?.getTree(data)
|
||
res.data.items = self.bean.categoryList
|
||
self.bean.allList = data
|
||
}
|
||
return res
|
||
},
|
||
addNods: [
|
||
|
||
],
|
||
launchTask: [
|
||
],
|
||
methods: {
|
||
getTree(arr: any) {
|
||
// 构建一个map来存储所有节点
|
||
const map: any = {}
|
||
const roots: any[] = []
|
||
|
||
// 先创建所有节点的映射
|
||
arr.forEach((item: any) => {
|
||
map[item.key] = { ...item, children: [] }
|
||
})
|
||
|
||
// 构建树结构
|
||
arr.forEach((item: any) => {
|
||
const node = map[item.key]
|
||
if (item.pid === 0 || item.pid === '0') {
|
||
// 如果是根节点,添加到roots数组
|
||
roots.push(node)
|
||
} else {
|
||
// 如果有父节点,添加到父节点的children中
|
||
if (map[item.pid]) {
|
||
map[item.pid].children.push(node)
|
||
} else {
|
||
// 如果找不到父节点,也作为根节点处理
|
||
roots.push(node)
|
||
}
|
||
}
|
||
})
|
||
return roots
|
||
},
|
||
},
|
||
fliter: [
|
||
{
|
||
key: 'id',
|
||
name: 'ID',
|
||
type: 'input'
|
||
},
|
||
{
|
||
key: 'name',
|
||
name: '名称',
|
||
type: 'input'
|
||
},
|
||
{
|
||
key: 'type',
|
||
name: '类型',
|
||
type: 'select',
|
||
items: [
|
||
{ key: 'page', name: '页面' },
|
||
{ key: 'api', name: 'API' },
|
||
],
|
||
value: 'page'
|
||
},
|
||
{
|
||
key: 'path',
|
||
name: '路径',
|
||
type: 'input',
|
||
},
|
||
{
|
||
type: 'dialogForm',
|
||
key: 'create',
|
||
form: {
|
||
title: '新建',
|
||
data: [
|
||
{
|
||
key: 'pid',
|
||
name: '父级',
|
||
type: 'cascader',
|
||
must: false,
|
||
getItems(self: TableData) {
|
||
return self.bean ? self.bean.categoryList : []
|
||
}
|
||
},
|
||
{
|
||
key: 'name',
|
||
name: '名称',
|
||
type: 'input',
|
||
must: true
|
||
},
|
||
{
|
||
key: 'type',
|
||
name: '类型',
|
||
type: 'select',
|
||
items: [
|
||
{ key: 'page', name: '页面' },
|
||
{ key: 'api', name: 'API' },
|
||
],
|
||
must: true,
|
||
value: 'page'
|
||
},
|
||
{
|
||
key: 'path',
|
||
name: '路径',
|
||
type: 'input',
|
||
must: false
|
||
},
|
||
{
|
||
key: 'method',
|
||
name: '方法',
|
||
type: 'input',
|
||
},
|
||
],
|
||
subFun(self, data) {
|
||
return self.api?.addData(data)
|
||
}
|
||
}
|
||
}
|
||
],
|
||
tableColumns: [
|
||
{
|
||
key: 'id',
|
||
name: 'ID',
|
||
width: '80px',
|
||
showJson: '*'
|
||
},
|
||
{
|
||
key: 'pid',
|
||
name: 'PID',
|
||
width: '80px',
|
||
showJson: '*'
|
||
},
|
||
{
|
||
key: 'name',
|
||
name: '名称',
|
||
width: '200px'
|
||
},
|
||
{
|
||
key: 'type',
|
||
name: '类型',
|
||
},
|
||
{
|
||
key: 'path',
|
||
name: '路径',
|
||
},
|
||
{
|
||
key: 'method',
|
||
name: '方法',
|
||
},
|
||
{
|
||
key: 'create_time',
|
||
name: '创建时间',
|
||
},
|
||
{
|
||
key: 'table_tools',
|
||
name: '操作',
|
||
buttons: [
|
||
{
|
||
type: 'dialogForm',
|
||
key: 'update',
|
||
form: {
|
||
title: '编辑',
|
||
type: 'warning',
|
||
primary: 'id',
|
||
data: [
|
||
{
|
||
key: 'pid',
|
||
name: '父级',
|
||
type: 'cascader',
|
||
must: false,
|
||
getItems(self: TableData) {
|
||
return self.bean ? self.bean.categoryList : []
|
||
}
|
||
},
|
||
{
|
||
key: 'name',
|
||
name: '名称',
|
||
type: 'input',
|
||
must: true
|
||
},
|
||
{
|
||
key: 'type',
|
||
name: '类型',
|
||
type: 'select',
|
||
must: true,
|
||
items: [
|
||
{ key: 'page', name: '页面' },
|
||
{ key: 'api', name: 'API' },
|
||
],
|
||
value: 'page'
|
||
},
|
||
{
|
||
key: 'path',
|
||
name: '路径',
|
||
type: 'input',
|
||
must: false
|
||
},
|
||
{
|
||
key: 'method',
|
||
name: '方法',
|
||
type: 'input',
|
||
},
|
||
],
|
||
subFun(self, data) {
|
||
return self.api?.updateData({ ...data, id: String(data.id) })
|
||
}
|
||
}
|
||
},
|
||
{
|
||
type: 'popoverConfirm',
|
||
key: 'delete',
|
||
confirm: {
|
||
title: '删除',
|
||
primary: 'id',
|
||
subFun(self, data) {
|
||
return self.api?.deleteData(data)
|
||
}
|
||
}
|
||
}
|
||
]
|
||
}
|
||
]
|
||
}
|
||
|
||
export default data
|