diff --git a/ui/autoMate/src/main/db/query.ts b/ui/autoMate/src/main/db/query.ts index 75afbfe..2f8aab8 100644 --- a/ui/autoMate/src/main/db/query.ts +++ b/ui/autoMate/src/main/db/query.ts @@ -18,6 +18,6 @@ export const update = (sql: string, params: Record) => { return db.prepare(sql).run(params).changes; } -export const del = (sql: string) => { - return db.prepare(sql).run().changes; +export const del = (sql: string, params={}) => { + return db.prepare(sql).run(params).changes; } \ No newline at end of file diff --git a/ui/autoMate/src/renderer/src/components/CategoryItem/index.tsx b/ui/autoMate/src/renderer/src/components/CategoryItem/index.tsx index 362d4fc..bcf5adb 100644 --- a/ui/autoMate/src/renderer/src/components/CategoryItem/index.tsx +++ b/ui/autoMate/src/renderer/src/components/CategoryItem/index.tsx @@ -1,11 +1,14 @@ -import { FolderClose } from "@icon-park/react" -import { NavLink } from "react-router-dom" +import { Delete, FolderClose } from "@icon-park/react" +import { NavLink, useSubmit } from "react-router-dom" import styles from "./styles.module.scss" +import { useContextMenu } from "mantine-contextmenu" interface Props { category: CategoryType } export const CategoryItem = ({category}: Props) => { + const submit = useSubmit() + const { showContextMenu } = useContextMenu() return ( { className={({isActive})=>{ return isActive ? styles.active : styles.link }} + onContextMenu={showContextMenu([ + { + key: 'remove', + icon: , + title: '删除动作', + onClick: () => { + submit({id: category.id}, {method: 'DELETE'}) + }, + } + ], + {className: 'contextMenu'})} >
diff --git a/ui/autoMate/src/renderer/src/pages/Category/CategoryAction.ts b/ui/autoMate/src/renderer/src/pages/Category/CategoryAction.ts index 55d4a05..cefc019 100644 --- a/ui/autoMate/src/renderer/src/pages/Category/CategoryAction.ts +++ b/ui/autoMate/src/renderer/src/pages/Category/CategoryAction.ts @@ -1,7 +1,21 @@ -export default async({request}) =>{ - await window.api.sql( - "insert into categories (name, created_at) values('未命名', datetime())", - "create", - ) - return {} -} +export default async ({ request }) => { + const formData = await request.formData() + const data = Object.fromEntries(formData) + switch (request.method) { + case "POST": { + return await window.api.sql( + "insert into categories (name, created_at) values('未命名', datetime())", + "create", + ) + } + case "DELETE": { + return await window.api.sql( + `delete from categories where id = @id`, + "del", + { + id: data.id + }) + } + } + return {} +} diff --git a/ui/autoMate/src/renderer/src/pages/Category/index.tsx b/ui/autoMate/src/renderer/src/pages/Category/index.tsx index 9f43b0a..ede64d6 100644 --- a/ui/autoMate/src/renderer/src/pages/Category/index.tsx +++ b/ui/autoMate/src/renderer/src/pages/Category/index.tsx @@ -11,7 +11,7 @@ export const Category = () => {
{categories.map((category) => ( - + ))}