diff --git a/src/index.less b/src/index.less index 9550adf..3fb5ac4 100644 --- a/src/index.less +++ b/src/index.less @@ -16,6 +16,30 @@ code { monospace; } +.w-250px { + width: 250px; +} + +.w-300px { + width: 300px; +} + +.w-350px { + width: 350px; +} + +.w-400px { + width: 200px; +} + +.w-450px { + width: 200px; +} + +.w-500px { + width: 200px; +} + .ml-8 { margin-left: 8px; } diff --git a/src/pages/resource/resource-category/index.module.less b/src/pages/resource/resource-category/index.module.less index e69de29..8b13789 100644 --- a/src/pages/resource/resource-category/index.module.less +++ b/src/pages/resource/resource-category/index.module.less @@ -0,0 +1 @@ + diff --git a/src/pages/resource/resource-category/index.tsx b/src/pages/resource/resource-category/index.tsx index f6d739e..6b96e9f 100644 --- a/src/pages/resource/resource-category/index.tsx +++ b/src/pages/resource/resource-category/index.tsx @@ -1,19 +1,20 @@ import React, { useState, useEffect } from "react"; -import { Button, Space, Table, Popconfirm, message } from "antd"; +import { Button, Space, Tree, Modal, message } from "antd"; import type { ColumnsType } from "antd/es/table"; import styles from "./index.module.less"; -import { PlusOutlined, ReloadOutlined } from "@ant-design/icons"; +import { PlusOutlined, ExclamationCircleFilled } from "@ant-design/icons"; import { resourceCategory } from "../../../api/index"; import { dateFormat } from "../../../utils/index"; import { Link, useNavigate } from "react-router-dom"; import { PerButton } from "../../../compenents"; +import type { DataNode, TreeProps } from "antd/es/tree"; + +const { confirm } = Modal; interface Option { - id: string | number; - name: string; - created_at: string; + key: string | number; + title: any; children?: Option[]; - sort: number; } interface DataType { @@ -26,71 +27,28 @@ interface DataType { export const ResourceCategoryPage: React.FC = () => { const navigate = useNavigate(); const [loading, setLoading] = useState(true); - const [list, setList] = useState([]); const [refresh, setRefresh] = useState(false); - const [tableKey, setTableKey] = useState(0); - - const columns: ColumnsType = [ - { - title: "分类名", - dataIndex: "name", - render: (text: string) => {text}, - }, - - { - title: "操作", - key: "action", - fixed: "right", - width: 160, - render: (_, record) => ( - - navigate(`/resource-category/update/${record.id}`)} - disabled={null} - /> - delUser(record.id)} - okText="确定" - cancelText="取消" - > - null} - disabled={null} - /> - - - ), - }, - ]; + const [treeData, setTreeData] = useState([]); + const [selectKey, setSelectKey] = useState([]); useEffect(() => { getData(); }, [refresh]); + const onSelect = (selectedKeys: any, info: any) => { + setSelectKey(selectedKeys); + console.log(selectedKeys); + }; + const getData = () => { setLoading(true); resourceCategory.resourceCategoryList().then((res: any) => { const categories = res.data.categories; - let num = tableKey; if (JSON.stringify(categories) !== "{}") { const new_arr: Option[] = checkArr(categories, 0); - setList(new_arr); + setTreeData(new_arr); } - setLoading(false); - setTableKey(num + 1); }); }; @@ -99,18 +57,72 @@ export const ResourceCategoryPage: React.FC = () => { for (let i = 0; i < categories[id].length; i++) { if (!categories[categories[id][i].id]) { arr.push({ - name: categories[id][i].name, - id: categories[id][i].id, - sort: categories[id][i].sort, - created_at: categories[id][i].created_at, + title: ( +
+
{categories[id][i].name}
+ + + navigate( + `/resource-category/update/${categories[id][i].id}` + ) + } + disabled={null} + /> + + delUser(categories[id][i].id)} + disabled={null} + /> + +
+ ), + key: categories[id][i].id, }); } else { const new_arr: Option[] = checkArr(categories, categories[id][i].id); arr.push({ - name: categories[id][i].name, - id: categories[id][i].id, - created_at: categories[id][i].created_at, - sort: categories[id][i].sort, + title: ( +
+
{categories[id][i].name}
+ + + navigate( + `/resource-category/update/${categories[id][i].id}` + ) + } + disabled={null} + /> + + delUser(categories[id][i].id)} + disabled={null} + /> + +
+ ), + key: categories[id][i].id, children: new_arr, }); } @@ -119,59 +131,75 @@ export const ResourceCategoryPage: React.FC = () => { }; const resetData = () => { - setList([]); + setTreeData([]); setRefresh(!refresh); }; const delUser = (id: any) => { - resourceCategory.destroyResourceCategory(id).then((res: any) => { - message.success("操作成功"); - resetData(); + if (id === 0) { + return; + } + + confirm({ + title: "操作确认", + icon: , + content: "确认删除选中图片?", + okText: "确认", + okType: "danger", + cancelText: "取消", + onOk() { + resourceCategory.destroyResourceCategory(id).then((res: any) => { + message.success("操作成功"); + resetData(); + }); + }, + onCancel() { + console.log("Cancel"); + }, }); }; + const onDragEnter: TreeProps["onDragEnter"] = (info) => { + console.log(info); + // expandedKeys 需要受控时设置 + // setExpandedKeys(info.expandedKeys) + }; + + const onDrop: TreeProps["onDrop"] = (info) => { + console.log(info); + // expandedKeys 需要受控时设置 + // setExpandedKeys(info.expandedKeys) + }; + return ( <> +
+
+ + } + p="resource-category" + onClick={() => null} + disabled={null} + /> + +
+
-
-
- - } - p="resource-category" - onClick={() => null} - disabled={null} - /> - -
-
- -
-
-
- record.id} - defaultExpandAllRows={true} - /> - + );