Explorar el Código

fix: 修复场景联动-消息通知-内置参数无效问题

* fix: bug#10264、10420、10476、10913

* fix: 修复场景联动-消息通知-内置参数无效问题

* fix: bug#9892
XieYongHong hace 2 años
padre
commit
90ee84cd2e

+ 4 - 2
src/components/FMonacoEditor/index.tsx

@@ -3,7 +3,9 @@ import { connect, mapProps } from '@formily/react';
 import { useCallback, useEffect, useRef, useState } from 'react';
 import type { MonacoEditorProps } from 'react-monaco-editor/lib/types';
 
-interface Props extends MonacoEditorProps {}
+interface Props extends MonacoEditorProps {
+  warpStyle?: any
+}
 
 export const JMonacoEditor = (props: Props) => {
   const [loading, setLoading] = useState(false);
@@ -36,7 +38,7 @@ export const JMonacoEditor = (props: Props) => {
           setLoading(true);
         }, 100);
       }}
-      style={{ height: '100%', width: '100%' }}
+      style={{ height: '100%', width: '100%', ...(props.warpStyle || {}) }}
     >
       {loading && (
         <MonacoEditor

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

@@ -805,8 +805,8 @@ const Detail = observer(() => {
   return (
     <PageContainer>
       <Card>
-        <Row>
-          <Col span={10}>
+        <Row gutter={24}>
+          <Col span={12}>
             <Form className={styles.form} form={form} layout={'vertical'}>
               <SchemaField scope={{ useAsyncDataSource, getTypes }} schema={schema} />
               <FormButtonGroup.Sticky>
@@ -823,7 +823,7 @@ const Detail = observer(() => {
               </FormButtonGroup.Sticky>
             </Form>
           </Col>
-          <Col span={12} push={2}>
+          <Col span={12}>
             {docMap?.[typeItem]?.[providerItem]}
           </Col>
         </Row>

+ 6 - 3
src/pages/notice/Template/Detail/index.tsx

@@ -1529,6 +1529,9 @@ const Detail = observer(() => {
                   height: 250,
                   theme: 'vs',
                   language: 'json',
+                  warpStyle: {
+                    border: "1px solid #d9d9d9"
+                  },
                   editorDidMount: (editor1: any) => {
                     editor1.onDidScrollChange?.(() => {
                       editor1.getAction('editor.action.formatDocument').run();
@@ -1755,8 +1758,8 @@ const Detail = observer(() => {
   return (
     <PageContainer>
       <Card>
-        <Row>
-          <Col span={10}>
+        <Row gutter={24}>
+          <Col span={12}>
             <Form className={styles.form} form={form} layout={'vertical'}>
               <SchemaField
                 schema={schema}
@@ -1789,7 +1792,7 @@ const Detail = observer(() => {
               </FormButtonGroup.Sticky>
             </Form>
           </Col>
-          <Col span={12} push={2}>
+          <Col span={12}>
             {docMap?.[typeItem]?.[providerItem]}
           </Col>
         </Row>

+ 19 - 6
src/pages/rule-engine/Scene/Save/action/notify/VariableDefinitions.tsx

@@ -6,17 +6,28 @@ import Org from './components/variableItem/org';
 import Tag from './components/variableItem/tag';
 import BuildIn from './components/variableItem/buildIn';
 import InputFile from './components/variableItem/inputFile';
-import { forwardRef, useCallback, useImperativeHandle } from 'react';
+import { forwardRef, useCallback, useImperativeHandle, useRef } from 'react';
+import {cloneDeep} from "lodash";
 
 interface Props {
   name: number;
   value?: any;
+  options?: Record<string, any>
+  optionsChange?: (v: Array<string | undefined>) => void
 }
 
 export default forwardRef((props: Props, ref) => {
   const [form] = Form.useForm();
-  const typeComponents = (item: any) => {
+  const options = useRef<Array<string | undefined>>(props.options?.otherColumns || [])
+
+  const optionsChange = (v: string | undefined, index: number) => {
+    options.current[index] = v
+    props.optionsChange?.([...options.current])
+  }
+
+  const typeComponents = (item: any, index: number) => {
     const type = item.expands?.businessType || item.type;
+    options.current[index] = undefined
     switch (type) {
       case 'user':
         return <User />;
@@ -29,7 +40,9 @@ export default forwardRef((props: Props, ref) => {
       case 'link':
         return <Input placeholder={'请输入' + item.name} />;
       default:
-        return <BuildIn data={item} name={props.name} />;
+        return <BuildIn data={item} name={props.name} optionsChange={(v) => {
+          optionsChange(v, index)
+        }} />;
     }
   };
 
@@ -141,13 +154,13 @@ export default forwardRef((props: Props, ref) => {
   };
 
   useImperativeHandle(ref, () => ({
-    save: saveBtn,
+    save: saveBtn
   }));
 
   return NotifyModel.variable.length ? (
     <div>
       <Form form={form} layout={'vertical'}>
-        {(NotifyModel?.variable || []).map((item) => {
+        {(NotifyModel?.variable || []).map((item, index) => {
           const type = item.expands?.businessType || item?.type;
           let initialValue = undefined;
           const rules = getRules(item, type);
@@ -188,7 +201,7 @@ export default forwardRef((props: Props, ref) => {
               required={type !== 'file' ? true : false}
               rules={rules}
             >
-              {typeComponents(item)}
+              {typeComponents(item, index)}
             </Form.Item>
           );
         })}

+ 8 - 3
src/pages/rule-engine/Scene/Save/action/notify/components/variableItem/buildIn.tsx

@@ -16,6 +16,7 @@ interface BuiltInProps {
   value?: ChangeType;
   data?: any;
   onChange?: (value: ChangeType) => void;
+  optionsChange?: (value?: string) => void
   name: number;
 }
 
@@ -26,7 +27,7 @@ export default (props: BuiltInProps) => {
 
   const [builtInList, setBuiltInList] = useState<any[]>([]);
 
-  const onChange = (_source: string = 'fixed', _value?: any, _upperKey?: string) => {
+  const onChange = (_source: string = 'fixed', _value?: any, _upperKey?: string, options?: string) => {
     const obj: ChangeType = {
       source: _source,
     };
@@ -39,6 +40,8 @@ export default (props: BuiltInProps) => {
     if (props.onChange) {
       props.onChange(obj);
     }
+    props.optionsChange?.(options)
+
   };
 
   // const treeDataChildrenFilter: any = (arr: any[], type: string) => {
@@ -121,8 +124,10 @@ export default (props: BuiltInProps) => {
         <TreeSelect
           value={upperKey}
           treeData={builtInList}
-          onChange={(key) => {
-            onChange(source, undefined, key);
+          onChange={(key, extra) => {
+            const item = extra?.[0]?.props
+            let option = item?.metadata ? item.column : undefined
+            onChange(source, undefined, key, option);
           }}
           fieldNames={{ label: 'name', value: 'id' }}
           placeholder={'请选择参数'}

+ 8 - 1
src/pages/rule-engine/Scene/Save/action/notify/index.tsx

@@ -57,6 +57,7 @@ export const NotifyModel = model<{
 export default observer((props: Props) => {
   const WayRef = useRef<{ save: any }>();
   const VariableRef = useRef<{ save: any }>();
+  const otherColumns = useRef<Array<string | undefined>>([])
 
   useEffect(() => {
     NotifyModel.notify = {
@@ -82,7 +83,11 @@ export default observer((props: Props) => {
           <VariableDefinitions
             value={NotifyModel.notify.variables}
             name={props.name}
+            options={props.options}
             ref={VariableRef}
+            optionsChange={(v) => {
+              otherColumns.current = v
+            }}
           />
         );
       default:
@@ -134,7 +139,9 @@ export default observer((props: Props) => {
       const resp = await VariableRef.current?.save();
       if (resp) {
         NotifyModel.notify.variables = resp;
-        const { options, ...extra } = NotifyModel.notify;
+        let { options, ...extra } = NotifyModel.notify;
+        const columns = new Set([...(options?.columns || []), ...otherColumns.current.filter(item => item)])
+        Object.assign(options, {columns: [...columns.values()], otherColumns: otherColumns.current})
         props.save(
           {
             notify: { ...extra },

+ 1 - 1
yarn.lock

@@ -16591,7 +16591,7 @@ reserved-words@^0.1.2:
 
 resize-observer-polyfill@^1.5.0:
   version "1.5.1"
-  resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464"
+  resolved "https://registry.npmmirror.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464"
   integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==
 
 resize-observer-polyfill@^1.5.1: