xieyonghong 3 лет назад
Родитель
Сommit
d54032293b

+ 20 - 20
src/pages/notice/Config/Detail/index.tsx

@@ -54,7 +54,7 @@ export const docMap = {
     embedded: <Email />,
   },
   webhook: {
-    default: <div>webhook</div>,
+    http: <div>webhook</div>,
   },
 };
 
@@ -90,9 +90,9 @@ const Detail = observer(() => {
   );
 
   useEffect(() => {
-    // if (id === 'webhook') {
-    //   setProvider('default');
-    // }
+    if (id === 'webhook') {
+      setProvider('http');
+    }
     if (state.current) {
       form.setValues(state.current);
     }
@@ -158,7 +158,7 @@ const Detail = observer(() => {
         },
         required: true,
         'x-visible': typeList[id]?.length > 0,
-        'x-hidden': id === 'email',
+        'x-hidden': id === 'email' || id === 'webhook',
         'x-value': typeList[id][0]?.value,
         enum: typeList[id] || [],
       },
@@ -477,7 +477,7 @@ const Detail = observer(() => {
                 'x-component': 'ArrayTable',
                 'x-component-props': {
                   pagination: { pageSize: 9999 },
-                  scroll: { x: '100%' },
+                  // scroll: {x: '100%'},
                 },
                 items: {
                   type: 'object',
@@ -512,7 +512,7 @@ const Detail = observer(() => {
                       'x-component-props': {
                         title: '操作',
                         dataIndex: 'operations',
-                        width: 200,
+                        width: 50,
                         fixed: 'right',
                       },
                       properties: {
@@ -541,20 +541,20 @@ const Detail = observer(() => {
             },
           },
         },
-        description: {
-          title: '说明',
-          'x-decorator': 'FormItem',
-          'x-component': 'Input.TextArea',
-          'x-component-props': {
-            rows: 4,
-          },
-          'x-validator': [
-            {
-              max: 200,
-              message: '最多可输入200个字符',
-            },
-          ],
+      },
+      description: {
+        title: '说明',
+        'x-decorator': 'FormItem',
+        'x-component': 'Input.TextArea',
+        'x-component-props': {
+          rows: 4,
         },
+        'x-validator': [
+          {
+            max: 200,
+            message: '最多可输入200个字符',
+          },
+        ],
       },
     },
   };

+ 2 - 0
src/pages/notice/Template/Debug/index.tsx

@@ -102,6 +102,7 @@ const Debug = observer(() => {
     // 从后端接口来获取变量参数
     service.getVariableDefinitions(state.current?.id || '').then((resp) => {
       const _template = resp.result;
+      console.log(resp, 'userEfffect', state.current);
       if (_template?.variableDefinitions?.length > 0) {
         variableRef.current = _template?.variableDefinitions;
         form.setFieldState('variableDefinitions', (state1) => {
@@ -149,6 +150,7 @@ const Debug = observer(() => {
         title: '通知配置',
         type: 'string',
         required: true,
+        default: state?.current?.configId,
         'x-decorator': 'FormItem',
         'x-component': 'Select',
         'x-reactions': '{{useAsyncDataSource(getConfig)}}',

+ 73 - 7
src/pages/notice/Template/Detail/index.tsx

@@ -46,6 +46,7 @@ import { Store } from 'jetlinks-store';
 import FAutoComplete from '@/components/FAutoComplete';
 import { PermissionButton } from '@/components';
 import usePermissions from '@/hooks/permission';
+import FMonacoEditor from '@/components/FMonacoEditor';
 
 export const docMap = {
   weixin: {
@@ -65,6 +66,9 @@ export const docMap = {
   email: {
     embedded: <Email />,
   },
+  webhook: {
+    http: <div>webhook</div>,
+  },
 };
 
 const Detail = observer(() => {
@@ -406,6 +410,7 @@ const Detail = observer(() => {
       FormGrid,
       ArrayTable,
       FAutoComplete,
+      FMonacoEditor,
     },
   });
 
@@ -511,7 +516,7 @@ const Detail = observer(() => {
         },
         required: true,
         'x-visible': typeList[id]?.length > 0,
-        'x-hidden': id === 'email',
+        'x-hidden': id === 'email' || id === 'webhook',
         'x-value': typeList[id][0]?.value,
         enum: typeList[id] || [],
       },
@@ -1145,6 +1150,67 @@ const Detail = observer(() => {
               },
             },
           },
+          webhook: {
+            type: 'void',
+            properties: {
+              contextAsBody: {
+                title: '请求体',
+                type: 'boolean',
+                'x-component': 'Radio.Group',
+                'x-decorator': 'FormItem',
+                default: true,
+                enum: [
+                  { label: '默认', value: true },
+                  { label: '自定义', value: false },
+                ],
+              },
+              body: {
+                'x-decorator': 'FormItem',
+                'x-component': 'FMonacoEditor',
+                required: true,
+                'x-component-props': {
+                  height: 250,
+                  theme: 'vs',
+                  language: 'json',
+                  editorDidMount: (editor1: any) => {
+                    editor1.onDidScrollChange?.(() => {
+                      editor1.getAction('editor.action.formatDocument').run();
+                    });
+                  },
+                },
+                // 'x-decorator-props': {
+                //   style: {
+                //     zIndex: 9998,
+                //   },
+                // },
+                'x-reactions': {
+                  dependencies: ['.contextAsBody'],
+                  fulfill: {
+                    state: {
+                      visible: '{{$deps[0]===false}}',
+                    },
+                  },
+                },
+              },
+              defaultBody: {
+                'x-decorator': 'FormItem',
+                'x-component': 'Input.TextArea',
+                'x-component-props': {
+                  rows: 3,
+                  placeholder: '请求体中的数据来自于发送通知时指定的所有变量',
+                },
+                'x-disabled': true,
+                'x-reactions': {
+                  dependencies: ['.contextAsBody'],
+                  fulfill: {
+                    state: {
+                      visible: '{{$deps[0]===true}}',
+                    },
+                  },
+                },
+              },
+            },
+          },
         },
       },
       'template.message': {
@@ -1159,7 +1225,7 @@ const Detail = observer(() => {
           dependencies: ['provider'],
           fulfill: {
             state: {
-              hidden: '{{$deps[0]==="aliyun"}}',
+              hidden: '{{$deps[0]==="aliyun"||$deps[0]==="http"}}',
               disabled: '{{["aliyunSms","aliyun"].includes($deps[0])}}',
             },
           },
@@ -1254,11 +1320,11 @@ const Detail = observer(() => {
         'x-component-props': {
           rows: 4,
         },
-        'x-decorator-props': {
-          style: {
-            zIndex: 998,
-          },
-        },
+        // 'x-decorator-props': {
+        //   style: {
+        //     zIndex: 998,
+        //   },
+        // },
       },
     },
   };

+ 1 - 0
src/pages/notice/Template/typings.d.ts

@@ -8,6 +8,7 @@ type TemplateItem = {
   createTime: number;
   variableDefinitions: any;
   description: string;
+  configId?: string;
 };
 
 type LogItem = {

+ 1 - 1
src/pages/notice/index.tsx

@@ -64,7 +64,7 @@ export const typeList = {
   webhook: [
     {
       label: createImageLabel(webhook, 'Webhook'),
-      value: 'webhook',
+      value: 'http',
     },
   ],
 };

+ 1 - 1
src/pages/rule-engine/Scene/Save/trigger/OrgTreeSelect.tsx

@@ -1,5 +1,5 @@
-import { TreeSelect } from 'antd';
 import type { TreeSelectProps } from 'antd';
+import { TreeSelect } from 'antd';
 import React, { useEffect, useState } from 'react';
 
 interface OrgTreeSelect extends Omit<TreeSelectProps, 'onChange' | 'value'> {

+ 1 - 1
src/pages/rule-engine/Scene/TriggerTerm/index.tsx

@@ -124,7 +124,7 @@ const TriggerTerm = (props: Props, ref: any) => {
                 label: item.name,
                 value: item.id,
               }));
-              if (target?.termTypes?.length > 0) {
+              if (target?.termTypes?.length > 0 && !state.value) {
                 state.value = 'eq';
               }
             });