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>
  )
}