Przeglądaj źródła

fix: 合并代码

100011797 3 lat temu
rodzic
commit
cfd3164249

+ 2 - 1
src/pages/account/NotificationRecord/detail/index.tsx

@@ -62,8 +62,9 @@ const Detail = (props: Props) => {
           {data?.description || ''}
           {data?.description || ''}
         </Descriptions.Item>
         </Descriptions.Item>
         <Descriptions.Item label="告警流水" span={2}>
         <Descriptions.Item label="告警流水" span={2}>
-          <div style={{ maxHeight: 200, overflowY: 'auto' }}>
+          <div style={{ maxHeight: 400, overflowY: 'auto' }}>
             <ReactJson
             <ReactJson
+              enableClipboard={false}
               displayObjectSize={false}
               displayObjectSize={false}
               displayDataTypes={false}
               displayDataTypes={false}
               name={false}
               name={false}

+ 6 - 2
src/pages/device/Category/Save/index.tsx

@@ -12,7 +12,7 @@ import {
   Switch,
   Switch,
   Upload,
   Upload,
 } from '@formily/antd';
 } from '@formily/antd';
-import React from 'react';
+import React, { useState } from 'react';
 import { createForm } from '@formily/core';
 import { createForm } from '@formily/core';
 import { createSchemaField } from '@formily/react';
 import { createSchemaField } from '@formily/react';
 import FUpload from '@/components/Upload';
 import FUpload from '@/components/Upload';
@@ -33,7 +33,7 @@ interface Props {
 
 
 const Save = (props: Props) => {
 const Save = (props: Props) => {
   const intl = useIntl();
   const intl = useIntl();
-
+  const [loading, setLoading] = useState(false);
   const form = createForm({
   const form = createForm({
     validateFirst: true,
     validateFirst: true,
     initialValues: props.data,
     initialValues: props.data,
@@ -62,6 +62,7 @@ const Save = (props: Props) => {
   });
   });
 
 
   const save = async () => {
   const save = async () => {
+    setLoading(true);
     const value: CategoryItem = await form.submit();
     const value: CategoryItem = await form.submit();
     if (!!state.parentId) {
     if (!!state.parentId) {
       value.parentId = state.parentId;
       value.parentId = state.parentId;
@@ -71,11 +72,13 @@ const Save = (props: Props) => {
       : ((await service.save(value as any)) as Response<CategoryItem>);
       : ((await service.save(value as any)) as Response<CategoryItem>);
     if (resp.status === 200) {
     if (resp.status === 200) {
       onlyMessage('操作成功');
       onlyMessage('操作成功');
+      setLoading(false);
       if (props.reload) {
       if (props.reload) {
         props.reload();
         props.reload();
       }
       }
     } else {
     } else {
       onlyMessage('操作失败', 'error');
       onlyMessage('操作失败', 'error');
+      setLoading(false);
     }
     }
     props.close();
     props.close();
   };
   };
@@ -164,6 +167,7 @@ const Save = (props: Props) => {
       visible={props.visible}
       visible={props.visible}
       onCancel={() => props.close()}
       onCancel={() => props.close()}
       onOk={save}
       onOk={save}
+      confirmLoading={loading}
     >
     >
       <Form layout={'vertical'} form={form}>
       <Form layout={'vertical'} form={form}>
         <SchemaField schema={schema} />
         <SchemaField schema={schema} />

+ 20 - 13
src/pages/device/Instance/index.tsx

@@ -470,6 +470,11 @@ const Instance = () => {
     return url.toString();
     return url.toString();
   };
   };
 
 
+  const unSelect = () => {
+    setBindKeys([]);
+    InstanceModel.selectedRows.clear();
+  };
+
   const menu = (
   const menu = (
     <Menu>
     <Menu>
       <Menu.Item key="1">
       <Menu.Item key="1">
@@ -547,19 +552,20 @@ const Instance = () => {
             popConfirm={{
             popConfirm={{
               title: '已启用的设备无法删除,确认删除选中的禁用状态设备?',
               title: '已启用的设备无法删除,确认删除选中的禁用状态设备?',
               onConfirm: () => {
               onConfirm: () => {
-                const array: any = [];
-                InstanceModel.selectedRows.forEach((value, key) => {
-                  if (value !== 'notActive') {
-                    InstanceModel.selectedRows.delete(key);
-                    array.push(key);
-                  }
-                });
+                // const array: any = [];
+                // InstanceModel.selectedRows.forEach((value, key) => {
+                //   if (value !== 'notActive') {
+                //     InstanceModel.selectedRows.delete(key);
+                //     array.push(key);
+                //   }
+                // });
                 if (!InstanceModel.selectedRows.size) return;
                 if (!InstanceModel.selectedRows.size) return;
                 service.batchDeleteDevice([...InstanceModel.selectedRows.keys()]).then((resp) => {
                 service.batchDeleteDevice([...InstanceModel.selectedRows.keys()]).then((resp) => {
                   if (resp.status === 200) {
                   if (resp.status === 200) {
                     onlyMessage('操作成功');
                     onlyMessage('操作成功');
                     actionRef.current?.reset?.();
                     actionRef.current?.reset?.();
-                    setBindKeys(array);
+                    // setBindKeys(array);
+                    unSelect();
                   }
                   }
                 });
                 });
               },
               },
@@ -581,8 +587,7 @@ const Instance = () => {
                 service.batchDeployDevice(bindKeys).then((resp) => {
                 service.batchDeployDevice(bindKeys).then((resp) => {
                   if (resp.status === 200) {
                   if (resp.status === 200) {
                     onlyMessage('操作成功');
                     onlyMessage('操作成功');
-                    setBindKeys([]);
-                    InstanceModel.selectedRows.clear();
+                    unSelect();
                     actionRef.current?.reset?.();
                     actionRef.current?.reset?.();
                   }
                   }
                 });
                 });
@@ -606,8 +611,7 @@ const Instance = () => {
                 service.batchUndeployDevice(bindKeys).then((resp) => {
                 service.batchUndeployDevice(bindKeys).then((resp) => {
                   if (resp.status === 200) {
                   if (resp.status === 200) {
                     onlyMessage('操作成功');
                     onlyMessage('操作成功');
-                    setBindKeys([]);
-                    InstanceModel.selectedRows.clear();
+                    unSelect();
                     actionRef.current?.reset?.();
                     actionRef.current?.reset?.();
                   }
                   }
                 });
                 });
@@ -726,7 +730,7 @@ const Instance = () => {
           return (
           return (
             <a
             <a
               onClick={() => {
               onClick={() => {
-                setBindKeys([]);
+                unSelect();
               }}
               }}
             >
             >
               取消选择
               取消选择
@@ -781,6 +785,9 @@ const Instance = () => {
             <Button>批量操作</Button>
             <Button>批量操作</Button>
           </Dropdown>,
           </Dropdown>,
         ]}
         ]}
+        modelChange={() => {
+          unSelect();
+        }}
         cardRender={(record) => (
         cardRender={(record) => (
           <DeviceCard
           <DeviceCard
             {...record}
             {...record}

+ 2 - 2
src/pages/link/DashBoard/index.tsx

@@ -312,7 +312,7 @@ export default () => {
         left: 30,
         left: 30,
         right: 0,
         right: 0,
         top: 10,
         top: 10,
-        bottom: 10,
+        bottom: 65,
       },
       },
       dataZoom: [
       dataZoom: [
         {
         {
@@ -373,7 +373,7 @@ export default () => {
         left: 30,
         left: 30,
         right: 0,
         right: 0,
         top: 10,
         top: 10,
-        bottom: 10,
+        bottom: 65,
       },
       },
       dataZoom: [
       dataZoom: [
         {
         {

+ 1 - 1
src/pages/media/Device/Save/index.tsx

@@ -152,7 +152,7 @@ const Save = () => {
                           console.log(key);
                           console.log(key);
                           setAccessType(key);
                           setAccessType(key);
                           queryProduct(key);
                           queryProduct(key);
-                          form.resetFields(['id']);
+                          form.resetFields(['id', 'productId']);
                         }}
                         }}
                         disabled={id}
                         disabled={id}
                         options={[
                         options={[

+ 2 - 1
src/pages/rule-engine/Alarm/Log/Detail/Info.tsx

@@ -65,8 +65,9 @@ const Info = (props: Props) => {
           </Tooltip>
           </Tooltip>
         </Descriptions.Item>
         </Descriptions.Item>
         <Descriptions.Item label="告警流水" span={2}>
         <Descriptions.Item label="告警流水" span={2}>
-          <div style={{ maxHeight: 200, overflowY: 'auto' }}>
+          <div style={{ maxHeight: 500, overflowY: 'auto' }}>
             <ReactJson
             <ReactJson
+              enableClipboard={false}
               displayObjectSize={false}
               displayObjectSize={false}
               displayDataTypes={false}
               displayDataTypes={false}
               name={false}
               name={false}

+ 2 - 2
src/pages/rule-engine/Scene/Save/action/DeviceOutput/actions/TypeModel.tsx

@@ -204,10 +204,10 @@ export default observer((props: Props) => {
       case 'date':
       case 'date':
         return (
         return (
           <MTimePicker
           <MTimePicker
-            type={props.format}
+            type={props.format === 'yyyy-MM-dd' ? 'time' : 'date'}
             value={moment(
             value={moment(
               value ? value : new Date(),
               value ? value : new Date(),
-              props.format === 'HH:mm:ss' ? 'HH:mm:ss' : 'yyyy-MM-dd HH:mm:ss',
+              props.format === 'yyyy-MM-dd' ? 'HH:mm:ss' : 'yyyy-MM-dd HH:mm:ss',
             )}
             )}
             onOpen={() => {
             onOpen={() => {
               setOpen(false);
               setOpen(false);

+ 4 - 0
src/pages/rule-engine/Scene/Save/action/DeviceOutput/actions/functionCall.tsx

@@ -16,6 +16,8 @@ interface FunctionCallProps {
   value?: any;
   value?: any;
   onChange?: (data: any) => void;
   onChange?: (data: any) => void;
   name?: any;
   name?: any;
+  thenName: number;
+  branchGroup?: number;
 }
 }
 
 
 export default (props: FunctionCallProps) => {
 export default (props: FunctionCallProps) => {
@@ -60,6 +62,8 @@ export default (props: FunctionCallProps) => {
         type={type}
         type={type}
         record={record}
         record={record}
         name={props.name}
         name={props.name}
+        branchGroup={props.branchGroup}
+        thenName={props.thenName}
         format={record?.format}
         format={record?.format}
       />
       />
     );
     );

+ 6 - 1
src/pages/rule-engine/Scene/Save/action/DeviceOutput/actions/index.tsx

@@ -145,7 +145,12 @@ export default observer((props: Props) => {
                 name={['message', 'inputs']}
                 name={['message', 'inputs']}
                 rules={[{ required: true, message: '请输入功能值' }]}
                 rules={[{ required: true, message: '请输入功能值' }]}
               >
               >
-                <FunctionCall functionData={functionList} name={props.name} />
+                <FunctionCall
+                  functionData={functionList}
+                  name={props.name}
+                  branchGroup={props.branchGroup}
+                  thenName={props.thenName}
+                />
               </Form.Item>
               </Form.Item>
             )}
             )}
           </>
           </>

+ 12 - 49
src/pages/rule-engine/Scene/Save/action/DeviceOutput/device/index.tsx

@@ -8,7 +8,7 @@ import { SceneDeviceCard } from '@/components/ProTableCard/CardItems/device';
 import { isNoCommunity } from '@/utils/util';
 import { isNoCommunity } from '@/utils/util';
 import { useIntl } from 'umi';
 import { useIntl } from 'umi';
 import { service as categoryService } from '@/pages/device/Category';
 import { service as categoryService } from '@/pages/device/Category';
-import { service as deptService } from '@/pages/system/Department';
+// import { service as deptService } from '@/pages/system/Department';
 import DeviceModel from '../model';
 import DeviceModel from '../model';
 import { observer } from '@formily/reactive-react';
 import { observer } from '@formily/reactive-react';
 import { Form, TreeSelect } from 'antd';
 import { Form, TreeSelect } from 'antd';
@@ -93,6 +93,7 @@ export default observer((props: Props) => {
       dataIndex: 'productId',
       dataIndex: 'productId',
       width: 200,
       width: 200,
       ellipsis: true,
       ellipsis: true,
+      hideInSearch: true,
       valueType: 'select',
       valueType: 'select',
       request: async () => {
       request: async () => {
         const res = await service.getProductList();
         const res = await service.getProductList();
@@ -105,11 +106,10 @@ export default observer((props: Props) => {
       filterMultiple: true,
       filterMultiple: true,
     },
     },
     {
     {
-      title: intl.formatMessage({
-        id: 'pages.device.instance.registrationTime',
-        defaultMessage: '注册时间',
-      }),
-      dataIndex: 'registryTime',
+      title: '创建时间',
+      dataIndex: 'createTime',
+      width: '200px',
+      valueType: 'dateTime',
     },
     },
     {
     {
       title: intl.formatMessage({
       title: intl.formatMessage({
@@ -149,6 +149,7 @@ export default observer((props: Props) => {
       title: '产品分类',
       title: '产品分类',
       valueType: 'treeSelect',
       valueType: 'treeSelect',
       hideInTable: true,
       hideInTable: true,
+      hideInSearch: true,
       fieldProps: {
       fieldProps: {
         fieldNames: {
         fieldNames: {
           label: 'name',
           label: 'name',
@@ -165,6 +166,7 @@ export default observer((props: Props) => {
     {
     {
       title: '网关类型',
       title: '网关类型',
       dataIndex: 'accessProvider',
       dataIndex: 'accessProvider',
+      hideInSearch: true,
       width: 150,
       width: 150,
       ellipsis: true,
       ellipsis: true,
       valueType: 'select',
       valueType: 'select',
@@ -192,6 +194,7 @@ export default observer((props: Props) => {
       dataIndex: 'productId$product-info',
       dataIndex: 'productId$product-info',
       title: '接入方式',
       title: '接入方式',
       valueType: 'select',
       valueType: 'select',
+      hideInSearch: true,
       hideInTable: true,
       hideInTable: true,
       request: () =>
       request: () =>
         service.queryGatewayList().then((resp: any) =>
         service.queryGatewayList().then((resp: any) =>
@@ -206,6 +209,7 @@ export default observer((props: Props) => {
       title: '设备类型',
       title: '设备类型',
       valueType: 'select',
       valueType: 'select',
       hideInTable: true,
       hideInTable: true,
+      hideInSearch: true,
       valueEnum: {
       valueEnum: {
         device: {
         device: {
           text: '直连设备',
           text: '直连设备',
@@ -221,47 +225,6 @@ export default observer((props: Props) => {
         },
         },
       },
       },
     },
     },
-    {
-      dataIndex: 'id$dim-assets',
-      title: '所属组织',
-      valueType: 'treeSelect',
-      hideInTable: true,
-      fieldProps: {
-        fieldNames: {
-          label: 'name',
-          value: 'value',
-        },
-      },
-      request: () =>
-        deptService
-          .queryOrgThree({
-            paging: false,
-          })
-          .then((resp) => {
-            const formatValue = (lists: any[]) => {
-              const _list: any[] = [];
-              lists.forEach((item) => {
-                if (item.children) {
-                  item.children = formatValue(item.children);
-                }
-                _list.push({
-                  ...item,
-                  value: JSON.stringify({
-                    assetType: 'device',
-                    targets: [
-                      {
-                        type: 'org',
-                        id: item.id,
-                      },
-                    ],
-                  }),
-                });
-              });
-              return _list;
-            };
-            return formatValue(resp.result);
-          }),
-    },
   ];
   ];
 
 
   const filterTree = (nodes: any[]) => {
   const filterTree = (nodes: any[]) => {
@@ -389,7 +352,7 @@ export default observer((props: Props) => {
                   },
                   },
                 }}
                 }}
                 request={(params) => {
                 request={(params) => {
-                  const sorts: any = [{ name: 'createTime', order: 'desc' }];
+                  const sorts: any = [];
 
 
                   if (oldRowKey) {
                   if (oldRowKey) {
                     sorts.push({
                     sorts.push({
@@ -397,7 +360,7 @@ export default observer((props: Props) => {
                       value: oldRowKey,
                       value: oldRowKey,
                     });
                     });
                   }
                   }
-
+                  sorts.push({ name: 'createTime', order: 'desc' });
                   return service.query({
                   return service.query({
                     ...params,
                     ...params,
                     sorts: sorts,
                     sorts: sorts,

+ 3 - 3
src/pages/rule-engine/Scene/Save/action/DeviceOutput/product/index.tsx

@@ -168,7 +168,7 @@ export default observer((props: Props) => {
           .queryOrgThree({
           .queryOrgThree({
             paging: false,
             paging: false,
           })
           })
-          .then((resp) => {
+          .then((resp: any) => {
             const formatValue = (list: any[]) => {
             const formatValue = (list: any[]) => {
               const _list: any[] = [];
               const _list: any[] = [];
               list.forEach((item) => {
               list.forEach((item) => {
@@ -241,7 +241,7 @@ export default observer((props: Props) => {
             },
             },
           }}
           }}
           request={(params) => {
           request={(params) => {
-            const sorts: any = [{ name: 'createTime', order: 'desc' }];
+            const sorts: any = [];
 
 
             if (oldRowKey) {
             if (oldRowKey) {
               sorts.push({
               sorts.push({
@@ -249,7 +249,7 @@ export default observer((props: Props) => {
                 value: oldRowKey,
                 value: oldRowKey,
               });
               });
             }
             }
-
+            sorts.push({ name: 'createTime', order: 'desc' });
             return service.query({
             return service.query({
               ...params,
               ...params,
               sorts: sorts,
               sorts: sorts,

+ 2 - 2
src/pages/rule-engine/Scene/Save/action/ListItem/Item.tsx

@@ -381,7 +381,7 @@ export default (props: ItemProps) => {
           </div>
           </div>
         </Popconfirm>
         </Popconfirm>
       </div>
       </div>
-      {!props.isLast && (
+      {!props.isLast && props.type === 'serial' ? (
         <div
         <div
           className={classNames('actions-item-filter-warp', {
           className={classNames('actions-item-filter-warp', {
             'filter-border': !!thenTerms?.length,
             'filter-border': !!thenTerms?.length,
@@ -522,7 +522,7 @@ export default (props: ItemProps) => {
             )}
             )}
           </div>
           </div>
         </div>
         </div>
-      )}
+      ) : null}
       {visible && (
       {visible && (
         <Modal
         <Modal
           name={props.name}
           name={props.name}

+ 11 - 7
src/pages/rule-engine/Scene/Save/action/index.tsx

@@ -33,7 +33,10 @@ export default (props: ActionsProps) => {
     const serialArr = props.thenOptions.filter((item) => !item.parallel);
     const serialArr = props.thenOptions.filter((item) => !item.parallel);
     setParallelArray(parallelArr);
     setParallelArray(parallelArr);
     setSerialArray(serialArr);
     setSerialArray(serialArr);
-    if (!lock && parallelArr.length && !serialArr.length) {
+    const isSerialActions = serialArr.some((item) => {
+      return !!item.actions.length;
+    });
+    if (!lock && parallelArr.length && (!serialArr.length || !isSerialActions)) {
       setActiveKey(['2']);
       setActiveKey(['2']);
       setLock(true);
       setLock(true);
     }
     }
@@ -140,17 +143,18 @@ export default (props: ActionsProps) => {
                 parallel={true}
                 parallel={true}
                 actions={parallelArray.length ? parallelArray[0].actions : []}
                 actions={parallelArray.length ? parallelArray[0].actions : []}
                 onAdd={(actionItem) => {
                 onAdd={(actionItem) => {
-                  if (parallelArray.length) {
-                    const indexOf = parallelArray[0].actions?.findIndex(
+                  const newParallelArray = [...parallelArray];
+                  if (newParallelArray.length) {
+                    const indexOf = newParallelArray[0].actions?.findIndex(
                       (aItem) => aItem.key === actionItem.key,
                       (aItem) => aItem.key === actionItem.key,
                     );
                     );
                     if (indexOf !== -1) {
                     if (indexOf !== -1) {
-                      parallelArray[0].actions.splice(indexOf, 1, actionItem);
+                      newParallelArray[0].actions.splice(indexOf, 1, actionItem);
                     } else {
                     } else {
-                      parallelArray[0].actions.push(actionItem);
+                      newParallelArray[0].actions.push(actionItem);
                     }
                     }
-                    setParallelArray([...parallelArray]);
-                    props.onUpdate(parallelArray[0], true);
+                    setParallelArray([...newParallelArray]);
+                    props.onUpdate(newParallelArray[0], true);
                   } else {
                   } else {
                     actionItem.key = randomString();
                     actionItem.key = randomString();
                     props.onAdd({
                     props.onAdd({

+ 5 - 1
src/pages/rule-engine/Scene/Save/save.tsx

@@ -2,7 +2,7 @@ import { Modal } from '@/components';
 import { Form, Input } from 'antd';
 import { Form, Input } from 'antd';
 import TriggerWay from '@/pages/rule-engine/Scene/Save/components/TriggerWay';
 import TriggerWay from '@/pages/rule-engine/Scene/Save/components/TriggerWay';
 import type { SceneItem } from '@/pages/rule-engine/Scene/typings';
 import type { SceneItem } from '@/pages/rule-engine/Scene/typings';
-import { useEffect } from 'react';
+import { useEffect, useState } from 'react';
 import { getMenuPathByCode } from '@/utils/menu';
 import { getMenuPathByCode } from '@/utils/menu';
 import useHistory from '@/hooks/route/useHistory';
 import useHistory from '@/hooks/route/useHistory';
 import { service } from '../index';
 import { service } from '../index';
@@ -15,6 +15,7 @@ interface Props {
 export default (props: Props) => {
 export default (props: Props) => {
   const [form] = Form.useForm();
   const [form] = Form.useForm();
   const history = useHistory();
   const history = useHistory();
+  const [loading, setLoading] = useState(false);
 
 
   useEffect(() => {
   useEffect(() => {
     form.setFieldsValue({
     form.setFieldsValue({
@@ -31,6 +32,7 @@ export default (props: Props) => {
         props.close();
         props.close();
       }}
       }}
       width={750}
       width={750}
+      confirmLoading={loading}
       onOk={async () => {
       onOk={async () => {
         const values = await form.validateFields();
         const values = await form.validateFields();
         const obj = {
         const obj = {
@@ -41,9 +43,11 @@ export default (props: Props) => {
             ...values.trigger,
             ...values.trigger,
           },
           },
         };
         };
+        setLoading(true);
         const resp = props.data?.id
         const resp = props.data?.id
           ? await service.modify(props.data?.id, { ...obj })
           ? await service.modify(props.data?.id, { ...obj })
           : await service.save(obj);
           : await service.save(obj);
+        setLoading(false);
         if (resp.status === 200) {
         if (resp.status === 200) {
           props.close();
           props.close();
           const url = getMenuPathByCode('rule-engine/Scene/Save');
           const url = getMenuPathByCode('rule-engine/Scene/Save');