From e65a432f5c9fc11d15d53ae0e16e5f4b7d62400a Mon Sep 17 00:00:00 2001
From: wsj <593216709@qq.com>
Date: Sat, 17 Oct 2026 20:53:17 +0800
Subject: [PATCH] feat: api
---
.claude/skills/new-page/templates/non-table-page/index.tsx | 63 +++++++++++++++++++++++++++++++
1 files changed, 63 insertions(+), 0 deletions(-)
diff --git a/.claude/skills/new-page/templates/non-table-page/index.tsx b/.claude/skills/new-page/templates/non-table-page/index.tsx
new file mode 100644
index 0000000..d8a991c
--- /dev/null
+++ b/.claude/skills/new-page/templates/non-table-page/index.tsx
@@ -0,0 +1,63 @@
+import { useState } from 'react';
+import { App as AntdApp, Button, Card, Form, Input, Space } from 'antd';
+import { saveXxx } from './server';
+import type { XxxFormValues } from './types';
+import './Xxx.scss';
+
+const Xxx = () => {
+ const [submitting, setSubmitting] = useState(false);
+ const [form] = Form.useForm<XxxFormValues>();
+ const { message } = AntdApp.useApp();
+
+ const handleFinish = async (values: XxxFormValues) => {
+ setSubmitting(true);
+ try {
+ await saveXxx(values);
+ message.success('保存成功');
+ form.resetFields();
+ } catch (error) {
+ message.error(error instanceof Error ? error.message : '保存失败,请稍后重试');
+ } finally {
+ setSubmitting(false);
+ }
+ };
+
+ return (
+ <div className="xxx-page">
+ <div className="page-header">
+ <div>
+ <h1 className="page-header__title">页面标题</h1>
+ <p className="page-header__desc">页面说明。</p>
+ </div>
+ </div>
+
+ <Card variant="borderless">
+ <Form<XxxFormValues>
+ form={form}
+ layout="vertical"
+ requiredMark={false}
+ onFinish={handleFinish}
+ >
+ <Form.Item
+ name="name"
+ label="名称"
+ rules={[{ required: true, message: '请输入名称' }]}
+ >
+ <Input placeholder="请输入名称" />
+ </Form.Item>
+
+ <Form.Item>
+ <Space>
+ <Button type="primary" htmlType="submit" loading={submitting}>
+ 保存
+ </Button>
+ <Button onClick={() => form.resetFields()}>重置</Button>
+ </Space>
+ </Form.Item>
+ </Form>
+ </Card>
+ </div>
+ );
+};
+
+export default Xxx;
--
Gitblit v1.9.3