Преглед изворни кода

feat(merge): merge xyh

Next xyh
Lind пре 3 година
родитељ
комит
709cb07835

+ 1 - 0
src/pages/rule-engine/Scene/Save/action/VariableItems/builtIn.tsx

@@ -15,6 +15,7 @@ interface BuiltInProps {
   value?: ChangeType;
   data?: any;
   type?: string;
+  notifyType?: string;
   onChange?: (value: ChangeType) => void;
 }
 

+ 158 - 56
src/pages/rule-engine/Scene/Save/action/VariableItems/user.tsx

@@ -1,7 +1,7 @@
 // 收信人
 import { useEffect, useState } from 'react';
 import { ItemGroup } from '@/pages/rule-engine/Scene/Save/components';
-import { Select } from 'antd';
+import { Input, Select } from 'antd';
 import {
   queryDingTalkUsers,
   queryPlatformUsers,
@@ -33,7 +33,6 @@ export default (props: UserProps) => {
     setSource(props.value?.source);
     if (props.value?.source === 'relation') {
       const relation = props.value?.relation;
-      console.log(relation);
       if (relation) {
         if (relation.objectId) {
           // 平台用户
@@ -84,11 +83,13 @@ export default (props: UserProps) => {
   };
 
   useEffect(() => {
-    if (source === 'fixed') {
-      // 钉钉,微信用户
-      getRelationUsers(props.notifyType, props.configId);
-    } else {
-      getPlatformUser();
+    if (['dingTalk', 'weixin'].includes(props.notifyType)) {
+      if (source === 'fixed') {
+        // 钉钉,微信用户
+        getRelationUsers(props.notifyType, props.configId);
+      } else {
+        getPlatformUser();
+      }
     }
   }, [source, props.notifyType]);
 
@@ -97,6 +98,14 @@ export default (props: UserProps) => {
     { label: props.notifyType === 'dingTalk' ? '钉钉用户' : '微信用户', value: 'fixed' },
   ];
 
+  const otherOptions = [
+    { label: '平台用户', value: 'relation' },
+    {
+      label: props.notifyType && props.notifyType === 'email' ? '固定邮箱' : '固定号码',
+      value: 'fixed',
+    },
+  ];
+
   /**
    * 收信人-平台用户格式
    * {
@@ -168,65 +177,158 @@ export default (props: UserProps) => {
     return option.children ? option.children.toLowerCase().includes(input.toLowerCase()) : false;
   };
 
+  const userSelect =
+    source === 'relation' ? (
+      <Select
+        showSearch
+        value={value}
+        onChange={(key, node) => {
+          setValue(key);
+          onchange(source, key, node.isRelation);
+        }}
+        placeholder={'请选择收信人'}
+        listHeight={200}
+        filterOption={filterOption}
+      >
+        {userList.platform.length ? (
+          <Select.OptGroup label={'平台用户'}>
+            {userList.platform.map((item: any) => (
+              <Select.Option value={item.value} isRelation={false}>
+                {item.label}
+              </Select.Option>
+            ))}
+          </Select.OptGroup>
+        ) : null}
+        {userList.relation.length ? (
+          <Select.OptGroup label={'关系用户'}>
+            {userList.relation.map((item: any) => (
+              <Select.Option value={item.value} isRelation={true}>
+                {item.label}
+              </Select.Option>
+            ))}
+          </Select.OptGroup>
+        ) : null}
+      </Select>
+    ) : (
+      <Select
+        showSearch
+        value={value}
+        options={relationList}
+        listHeight={200}
+        onChange={(key) => {
+          setValue(key);
+          onchange(source, key);
+        }}
+        fieldNames={{ label: 'name', value: 'id' }}
+        placeholder={'请选择收信人'}
+        filterOption={(input: string, option: any) => {
+          return option.name ? option.name.toLowerCase().includes(input.toLowerCase()) : false;
+        }}
+      ></Select>
+    );
+
+  const emailSelect =
+    source === 'relation' ? (
+      <Select
+        showSearch
+        value={value}
+        onChange={(key, node) => {
+          setValue(key);
+          onchange(source, key, node.isRelation);
+        }}
+        placeholder={'请选择收信人'}
+        listHeight={200}
+        filterOption={filterOption}
+      >
+        {userList.platform.length ? (
+          <Select.OptGroup label={'平台用户'}>
+            {userList.platform.map((item: any) => (
+              <Select.Option value={item.value} isRelation={false}>
+                {item.label}
+              </Select.Option>
+            ))}
+          </Select.OptGroup>
+        ) : null}
+        {userList.relation.length ? (
+          <Select.OptGroup label={'关系用户'}>
+            {userList.relation.map((item: any) => (
+              <Select.Option value={item.value} isRelation={true}>
+                {item.label}
+              </Select.Option>
+            ))}
+          </Select.OptGroup>
+        ) : null}
+      </Select>
+    ) : (
+      <Input
+        value={value}
+        placeholder={'请输入固定邮箱'}
+        onChange={(e) => {
+          onchange(source, e.target.value);
+        }}
+      />
+    );
+
+  const voiceSelect =
+    source === 'relation' ? (
+      <Select
+        showSearch
+        value={value}
+        onChange={(key, node) => {
+          setValue(key);
+          onchange(source, key, node.isRelation);
+        }}
+        placeholder={'请选择收信人'}
+        listHeight={200}
+        filterOption={filterOption}
+      >
+        {userList.platform.length ? (
+          <Select.OptGroup label={'平台用户'}>
+            {userList.platform.map((item: any) => (
+              <Select.Option value={item.value} isRelation={false}>
+                {item.label}
+              </Select.Option>
+            ))}
+          </Select.OptGroup>
+        ) : null}
+        {userList.relation.length ? (
+          <Select.OptGroup label={'关系用户'}>
+            {userList.relation.map((item: any) => (
+              <Select.Option value={item.value} isRelation={true}>
+                {item.label}
+              </Select.Option>
+            ))}
+          </Select.OptGroup>
+        ) : null}
+      </Select>
+    ) : (
+      <Input
+        value={value}
+        placeholder={'请输入固定号码'}
+        onChange={(e) => {
+          onchange(source, e.target.value);
+        }}
+      />
+    );
+
   return (
     <ItemGroup compact>
       <Select
         value={source}
-        options={options}
+        options={
+          props.notifyType && ['dingTalk', 'weixin'].includes(props.notifyType)
+            ? options
+            : otherOptions
+        }
         style={{ width: 120 }}
         onChange={(key) => {
           setSource(key);
           onchange(key, undefined);
         }}
       />
-      {source === 'relation' ? (
-        <Select
-          showSearch
-          value={value}
-          onChange={(key, node) => {
-            setValue(key);
-            onchange(source, key, node.isRelation);
-          }}
-          placeholder={'请选择收信人'}
-          listHeight={200}
-          filterOption={filterOption}
-        >
-          {userList.platform.length ? (
-            <Select.OptGroup label={'平台用户'}>
-              {userList.platform.map((item: any) => (
-                <Select.Option value={item.value} isRelation={false}>
-                  {item.label}
-                </Select.Option>
-              ))}
-            </Select.OptGroup>
-          ) : null}
-          {userList.relation.length ? (
-            <Select.OptGroup label={'关系用户'}>
-              {userList.relation.map((item: any) => (
-                <Select.Option value={item.value} isRelation={true}>
-                  {item.label}
-                </Select.Option>
-              ))}
-            </Select.OptGroup>
-          ) : null}
-        </Select>
-      ) : (
-        <Select
-          showSearch
-          value={value}
-          options={relationList}
-          listHeight={200}
-          onChange={(key) => {
-            setValue(key);
-            onchange(source, key);
-          }}
-          fieldNames={{ label: 'name', value: 'id' }}
-          placeholder={'请选择收信人'}
-          filterOption={(input: string, option: any) => {
-            return option.name ? option.name.toLowerCase().includes(input.toLowerCase()) : false;
-          }}
-        ></Select>
-      )}
+      {props.notifyType && ['dingTalk', 'weixin'].includes(props.notifyType) ? userSelect : null}
+      {props.notifyType && ['email'].includes(props.notifyType) ? emailSelect : null}
+      {props.notifyType && ['sms', 'voice'].includes(props.notifyType) ? voiceSelect : null}
     </ItemGroup>
   );
 };

+ 1 - 0
src/pages/rule-engine/Scene/Save/action/messageContent.tsx

@@ -45,6 +45,7 @@ export default (props: MessageContentProps) => {
                 if (item.required) {
                   rules.push({
                     validator: async (_: any, value: any) => {
+                      console.log(value);
                       if (!value.value) {
                         if (['date'].includes(type)) {
                           return Promise.reject(new Error('请选择' + item.name));

+ 7 - 3
src/pages/rule-engine/Scene/Save/trigger/device.tsx

@@ -219,14 +219,18 @@ export default (props: TriggerProps) => {
               )}
               {props.value?.selector === 'org' && (
                 <TreeSelect
-                  value={props.value?.selectorValues}
+                  value={
+                    props.value?.selectorValues && props.value?.selectorValues.length
+                      ? props.value?.selectorValues[0].id
+                      : undefined
+                  }
                   treeData={orgTree}
                   fieldNames={{ label: 'name', value: 'id' }}
                   placeholder={'请选择部门'}
                   style={{ width: '100%' }}
-                  onChange={(value) => {
+                  onChange={(value, label) => {
                     const _value = { ...props.value };
-                    _value.selectorValues = value;
+                    _value.selectorValues = [{ id: value, name: label[0] }];
                     onChange(_value);
                   }}
                 />