index.tsx 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import { Button, Modal } from 'antd';
  2. import { useMemo } from 'react';
  3. import { createForm } from '@formily/core';
  4. import { createSchemaField, observer } from '@formily/react';
  5. import { Form, FormItem, Input, Select } from '@formily/antd';
  6. import { ISchema } from '@formily/json-schema';
  7. import { service, state } from '@/pages/notice/Config';
  8. import { useLocation } from 'umi';
  9. import { useAsyncDataSource } from '@/utils/util';
  10. const Debug = observer(() => {
  11. const location = useLocation<{ id: string }>();
  12. const id = (location as any).query?.id;
  13. const form = useMemo(
  14. () =>
  15. createForm({
  16. validateFirst: true,
  17. effects() {},
  18. }),
  19. [],
  20. );
  21. const SchemaField = createSchemaField({
  22. components: {
  23. FormItem,
  24. Input,
  25. Select,
  26. },
  27. });
  28. console.log(id, 'testt');
  29. const getTemplate = () => {
  30. return service.getTemplate(id).then((resp) => {
  31. return resp.result?.map((item: any) => ({
  32. label: item.name,
  33. value: item.id,
  34. }));
  35. });
  36. };
  37. const schema: ISchema = {
  38. type: 'object',
  39. properties: {
  40. configId: {
  41. title: '通知模版',
  42. type: 'string',
  43. 'x-decorator': 'FormItem',
  44. 'x-component': 'Select',
  45. 'x-reactions': '{{useAsyncDataSource(getTemplate)}}',
  46. },
  47. bianliang: {
  48. title: '变量',
  49. type: 'string',
  50. 'x-decorator': 'FormItem',
  51. 'x-component': 'Select',
  52. },
  53. },
  54. };
  55. return (
  56. <Modal
  57. title="调试"
  58. width="40vw"
  59. visible={state.debug}
  60. onCancel={() => (state.debug = false)}
  61. footer={
  62. <Button type="primary" onClick={() => (state.debug = false)}>
  63. 关闭
  64. </Button>
  65. }
  66. >
  67. <Form form={form} layout={'vertical'}>
  68. <SchemaField schema={schema} scope={{ getTemplate, useAsyncDataSource }} />
  69. </Form>
  70. </Modal>
  71. );
  72. });
  73. export default Debug;