import type { VbenFormProps } from '#/adapter/form';

/**
 * 场景基础信息表单（仅含基础字段，机器人多选和 @ 人在弹窗中用自定义组件实现）
 */
export const modalFormProps: VbenFormProps = {
  wrapperClass: 'grid-cols-12',
  commonConfig: {
    formItemClass: 'col-span-12',
    componentProps: {
      class: 'w-full',
    },
  },
  layout: 'horizontal',
  schema: [
    {
      component: 'VbenInput',
      fieldName: 'id',
      label: 'ID',
      formItemClass: 'col-span-6',
      dependencies: {
        show: false,
        triggerFields: ['id'],
      },
    },
    {
      component: 'VbenInput',
      componentProps: {
        placeholder: '业务方代码中调用 dispatch 时传入的编码，如 order_paid',
      },
      fieldName: 'scene_code',
      label: '场景编码',
      rules: 'required',
      // 编辑场景下场景编码不可修改（前端禁用）
      dependencies: {
        triggerFields: ['id'],
        componentProps: (values) => {
          return { disabled: !!values?.id };
        },
      },
    },
    {
      component: 'VbenInput',
      componentProps: {
        placeholder: '请输入场景名称（中文，便于管理）',
      },
      fieldName: 'scene_name',
      label: '场景名称',
      rules: 'required',
    },
    // 启用平台（任务 2）：Checkbox.Group，options 由 form-page 异步注入（从后端平台列表）
    {
      component: 'CheckboxGroup',
      fieldName: 'scene_platforms',
      label: '启用平台',
      help: '本场景启用的平台（控制 Step 2 平台 Tab 展示范围）；不勾选则默认全启用',
      componentProps: {
        options: [],
      },
      formItemClass: 'col-span-12',
    },
    // 字段绑定模式（任务 2）：开启后 Step 2 每个非空 payload 字段下出现「业务字段名」输入框，
    // 业务方 dispatch 时按字段名覆盖对应 payload 路径
    {
      component: 'RadioGroup',
      fieldName: 'field_binding_mode',
      label: '字段绑定模式',
      defaultValue: 0,
      help: '0=固定内容（每次推送都一样）；1=可替换内容（业务方 dispatch 时按字段名覆盖）',
      componentProps: {
        options: [
          { label: '固定内容', value: 0 },
          { label: '可替换内容', value: 1 },
        ],
      },
      formItemClass: 'col-span-12',
    },
    // 消息类型不再放在基础表单中：每个平台支持的消息类型不同，放在弹窗下方的平台 Tab 内独立配置
    {
      component: 'RadioGroup',
      componentProps: {
        options: [
          { label: '启用', value: 1 },
          { label: '禁用', value: 0 },
        ],
      },
      defaultValue: 1,
      fieldName: 'status',
      label: '场景状态',
    },
    {
      // 注意：项目内 textarea 的 schema 组件名是 'Textarea'（antd 原生组件直接注册）
      // 不是 'VbenTextarea'（不存在的组件名，会导致字段无法渲染）
      component: 'Textarea',
      componentProps: {
        placeholder: '可选，场景说明（什么业务事件触发，包含哪些信息）',
        rows: 3,
      },
      fieldName: 'description',
      label: '场景说明',
    },
  ],
  showDefaultActions: false,
};
