diff --git a/package.json b/package.json
index 6b433e7..9797218 100644
--- a/package.json
+++ b/package.json
@@ -42,6 +42,7 @@
"@types/react-dom": "^19.1.1",
"@vitejs/plugin-basic-ssl": "^2.0.0",
"@vitejs/plugin-react": "^4.3.4",
+ "commander": "^13.1.0",
"tailwindcss": "^4.1.1",
"typescript": "^5.8.2",
"vite": "^6.2.4"
diff --git a/packages/.gitkeep b/packages/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
deleted file mode 100644
index 4214824..0000000
--- a/pnpm-workspace.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
-packages:
- - 'submodules/*'
- - 'packages/*'
diff --git a/script/clear.ts b/script/clear.ts
index 88faa5f..2fb36c1 100644
--- a/script/clear.ts
+++ b/script/clear.ts
@@ -1,5 +1,6 @@
import fs from 'fs';
import path from 'path';
+import { program } from 'commander';
export const root = process.cwd();
@@ -9,3 +10,11 @@ export const clearWorkspace = () => {
fs.rmSync(path.join(root, file), { recursive: true, force: true });
}
};
+
+// clearWorkspace();
+program.option('-c, --clear', 'clear workspace').action((opts) => {
+ if (opts.clear) {
+ clearWorkspace();
+ }
+});
+program.parse(process.argv);
diff --git a/src/pages/App.tsx b/src/pages/App.tsx
index 5c2b2ba..42b0d73 100644
--- a/src/pages/App.tsx
+++ b/src/pages/App.tsx
@@ -1,5 +1,87 @@
-import { basename } from '../modules/basename';
-console.log('basename', basename);
+import { useState } from 'react';
+import { Box, Button, Paper, Table, TableBody, TableCell, TableContainer, TableHead, TableRow, IconButton } from '@mui/material';
+import { Edit, Delete } from 'lucide-react';
+import { ModalForm } from './ModalForm';
+
+// 定义工单类型
+interface Ticket {
+ id: number;
+ title: string;
+ status: string;
+ priority: string;
+ createTime: string;
+}
+
export const App = () => {
- return
123
;
+ const [tickets, setTickets] = useState([]);
+ const [open, setOpen] = useState(false);
+ const [selectedTicket, setSelectedTicket] = useState(null);
+
+ const handleCreate = () => {
+ setSelectedTicket(null);
+ setOpen(true);
+ };
+
+ const handleEdit = (ticket: Ticket) => {
+ setSelectedTicket(ticket);
+ setOpen(true);
+ };
+
+ const handleDelete = (id: number) => {
+ setTickets(tickets.filter((ticket) => ticket.id !== id));
+ };
+
+ const handleSave = (data: Ticket) => {
+ if (selectedTicket) {
+ setTickets(tickets.map((t) => (t.id === selectedTicket.id ? data : t)));
+ } else {
+ setTickets([...tickets, { ...data, id: Date.now() }]);
+ }
+ setOpen(false);
+ };
+
+ return (
+
+
+ 工单管理
+
+
+
+
+
+
+
+ 标题
+ 状态
+ 优先级
+ 创建时间
+ 操作
+
+
+
+ {tickets.map((ticket) => (
+
+ {ticket.title}
+ {ticket.status}
+ {ticket.priority}
+ {ticket.createTime}
+
+ handleEdit(ticket)}>
+
+
+ handleDelete(ticket.id)}>
+
+
+
+
+ ))}
+
+
+
+
+ setOpen(false)} onSave={handleSave} ticket={selectedTicket} />
+
+ );
};
diff --git a/src/pages/ModalForm.tsx b/src/pages/ModalForm.tsx
new file mode 100644
index 0000000..8708631
--- /dev/null
+++ b/src/pages/ModalForm.tsx
@@ -0,0 +1,121 @@
+import { useEffect } from 'react';
+import { useForm, Controller } from 'react-hook-form';
+import {
+ Dialog,
+ DialogTitle,
+ DialogContent,
+ DialogActions,
+ Button,
+ TextField,
+ MenuItem,
+ Box
+} from '@mui/material';
+
+interface Ticket {
+ id: number;
+ title: string;
+ status: string;
+ priority: string;
+ createTime: string;
+}
+
+interface ModalFormProps {
+ open: boolean;
+ onClose: () => void;
+ onSave: (data: Ticket) => void;
+ ticket: Ticket | null;
+}
+
+export const ModalForm = ({ open, onClose, onSave, ticket }: ModalFormProps) => {
+ const { control, handleSubmit, reset } = useForm({
+ defaultValues: {
+ title: '',
+ status: '待处理',
+ priority: '中',
+ createTime: new Date().toLocaleString()
+ }
+ });
+
+ useEffect(() => {
+ if (ticket) {
+ reset(ticket);
+ } else {
+ reset({
+ title: '',
+ status: '待处理',
+ priority: '中',
+ createTime: new Date().toLocaleString()
+ });
+ }
+ }, [ticket, reset]);
+
+ const onSubmit = (data: Ticket) => {
+ onSave(data);
+ };
+
+ return (
+
+ );
+};
\ No newline at end of file
diff --git a/submodules/.gitkeep b/submodules/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/turbo.json b/turbo.json
deleted file mode 100644
index 2163d21..0000000
--- a/turbo.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "$schema": "https://turbo.build/schema.json",
- "tasks": {
- "build": {
- "dependsOn": [
- "^build"
- ],
- "outputs": [
- "dist/**"
- ]
- },
- "dev:lib": {
- "persistent": true,
- "cache": true
- },
- "build:lib": {
- "dependsOn": [
- "^build:lib"
- ]
- }
- }
-}
\ No newline at end of file