react-page.tsx.mustache
1.19 KB
// 由 M8-front-schema.yaml (pageTemplate) + M1 字段类型生成的静态录入页骨架
// 渲染上下文:{ templateName, sceneId, commandApi, masterFields:[...], detailEntities:[{name, fields:[...]}] }
import { Form, Input, InputNumber, DatePicker, Select, Card, Button } from 'antd'
export default function {{pascalTemplateId}}Page() {
const [form] = Form.useForm()
const submit = async () => {
const values = await form.validateFields()
await fetch('{{commandApi}}', { method: 'POST', headers: {'Content-Type':'application/json'}, body: JSON.stringify(values) })
}
return (
<Form form={form} layout="vertical">
<Card title="主信息">
{{#masterFields}}
<Form.Item name="{{field}}" label="{{label}}"{{#required}} rules={[{ required: true }]}{{/required}}>
{{control}}
</Form.Item>
{{/masterFields}}
</Card>
{{#detailEntities}}
<Card title="{{name}}(子实体)">
{{#fields}}
<Form.Item name={['{{../name}}', '{{field}}']} label="{{label}}">{{control}}</Form.Item>
{{/fields}}
</Card>
{{/detailEntities}}
<Button type="primary" onClick={submit}>提交</Button>
</Form>
)
}