Explorar el Código

fix: merge next

wzyyy hace 3 años
padre
commit
0e8be9a368

+ 1 - 0
src/components/ProTableCard/CardItems/DataCollect/index.less

@@ -2,6 +2,7 @@
 
 
 .pro-table-card-item {
 .pro-table-card-item {
   display: flex;
   display: flex;
+  cursor: pointer;
 
 
   .card-item-avatar {
   .card-item-avatar {
     margin-right: 16px;
     margin-right: 16px;

+ 1 - 0
src/components/ProTableCard/index.less

@@ -29,6 +29,7 @@
 
 
     .pro-table-card-item {
     .pro-table-card-item {
       display: flex;
       display: flex;
+      cursor: pointer;
 
 
       .card-item-avatar {
       .card-item-avatar {
         margin-right: 16px;
         margin-right: 16px;

+ 6 - 2
src/pages/DataCollect/Channel/index.tsx

@@ -285,8 +285,12 @@ export default observer(() => {
                       </PermissionButton>,
                       </PermissionButton>,
                     ]}
                     ]}
                     onClick={() => {
                     onClick={() => {
-                      const url = getMenuPathByCode(MENUS_CODE['DataCollect/Collector']);
-                      history.push(url, { channelId: record.id });
+                      if (permission.view) {
+                        const url = getMenuPathByCode(MENUS_CODE['DataCollect/Collector']);
+                        history.push(url, { channelId: record.id });
+                      } else {
+                        onlyMessage('暂无权限,请联系管理员', 'error');
+                      }
                     }}
                     }}
                   />
                   />
                 </Col>
                 </Col>

+ 40 - 33
src/pages/DataCollect/Collector/components/Tree/index.tsx

@@ -135,18 +135,21 @@ export default observer((props: Props) => {
         />
         />
       </div>
       </div>
       <div style={{ margin: '16px 0' }}>
       <div style={{ margin: '16px 0' }}>
-        <Button
-          type="primary"
-          ghost
-          style={{ width: '100%' }}
-          icon={<PlusOutlined />}
-          onClick={() => {
-            TreeModel.visible = true;
-            TreeModel.current = {};
-          }}
-        >
-          新增采集器
-        </Button>
+        <Tooltip title={!permission.add ? '暂无权限,请联系管理员' : ''}>
+          <Button
+            type="primary"
+            ghost
+            disabled={!permission.add}
+            style={{ width: '100%' }}
+            icon={<PlusOutlined />}
+            onClick={() => {
+              TreeModel.visible = true;
+              TreeModel.current = {};
+            }}
+          >
+            新增采集器
+          </Button>
+        </Tooltip>
       </div>
       </div>
       <div>
       <div>
         {TreeModel.dataSource.length ? (
         {TreeModel.dataSource.length ? (
@@ -210,22 +213,24 @@ export default observer((props: Props) => {
                           defaultMessage: '确认禁用?',
                           defaultMessage: '确认禁用?',
                         })}
                         })}
                         onConfirm={async () => {
                         onConfirm={async () => {
-                          const resp =
-                            i?.state?.value !== 'disabled'
-                              ? await service.updateCollector(i.id, {
-                                  state: 'disabled',
-                                  runningState: 'stopped',
-                                })
-                              : await service.updateCollector(i.id, {
-                                  state: 'enabled',
-                                  runningState: 'running',
-                                });
-                          if (resp.status === 200) {
-                            TreeModel.param = { terms: [] };
-                            handleSearch(TreeModel.param);
-                            onlyMessage('操作成功');
-                          } else {
-                            onlyMessage('操作失败!', 'error');
+                          if (permission.action) {
+                            const resp =
+                              i?.state?.value !== 'disabled'
+                                ? await service.updateCollector(i.id, {
+                                    state: 'disabled',
+                                    runningState: 'stopped',
+                                  })
+                                : await service.updateCollector(i.id, {
+                                    state: 'enabled',
+                                    runningState: 'running',
+                                  });
+                            if (resp.status === 200) {
+                              TreeModel.param = { terms: [] };
+                              handleSearch(TreeModel.param);
+                              onlyMessage('操作成功');
+                            } else {
+                              onlyMessage('操作失败!', 'error');
+                            }
                           }
                           }
                         }}
                         }}
                       >
                       >
@@ -241,11 +246,13 @@ export default observer((props: Props) => {
                         title={'该操作将会删除下属点位,确定删除?'}
                         title={'该操作将会删除下属点位,确定删除?'}
                         disabled={i?.state?.value !== 'disabled'}
                         disabled={i?.state?.value !== 'disabled'}
                         onConfirm={async () => {
                         onConfirm={async () => {
-                          const resp = await service.removeCollector(i.id);
-                          if (resp.status === 200) {
-                            TreeModel.param = { terms: [] };
-                            handleSearch(TreeModel.param);
-                            onlyMessage('操作成功');
+                          if (permission.delete) {
+                            const resp = await service.removeCollector(i.id);
+                            if (resp.status === 200) {
+                              TreeModel.param = { terms: [] };
+                              handleSearch(TreeModel.param);
+                              onlyMessage('操作成功');
+                            }
                           }
                           }
                         }}
                         }}
                       >
                       >

+ 14 - 1
src/pages/device/Instance/Detail/Diagnose/Status/index.tsx

@@ -1899,6 +1899,7 @@ const Status = observer((props: Props) => {
             <Button
             <Button
               type="primary"
               type="primary"
               onClick={async () => {
               onClick={async () => {
+                let flag: boolean = true;
                 if (
                 if (
                   Object.keys(DiagnoseStatusModel.gateway).length > 0 &&
                   Object.keys(DiagnoseStatusModel.gateway).length > 0 &&
                   DiagnoseStatusModel.gateway?.state?.value !== 'enabled'
                   DiagnoseStatusModel.gateway?.state?.value !== 'enabled'
@@ -1913,6 +1914,8 @@ const Status = observer((props: Props) => {
                       text: '正常',
                       text: '正常',
                       info: null,
                       info: null,
                     });
                     });
+                  } else {
+                    flag = false;
                   }
                   }
                 }
                 }
                 if (DiagnoseStatusModel.product?.state !== 1) {
                 if (DiagnoseStatusModel.product?.state !== 1) {
@@ -1926,6 +1929,8 @@ const Status = observer((props: Props) => {
                       text: '正常',
                       text: '正常',
                       info: null,
                       info: null,
                     });
                     });
+                  } else {
+                    flag = false;
                   }
                   }
                 }
                 }
                 if (device?.state?.value === 'notActive') {
                 if (device?.state?.value === 'notActive') {
@@ -1940,6 +1945,8 @@ const Status = observer((props: Props) => {
                       text: '正常',
                       text: '正常',
                       info: null,
                       info: null,
                     });
                     });
+                  } else {
+                    flag = false;
                   }
                   }
                 }
                 }
                 if (providerType === 'network' || providerType === 'child-device') {
                 if (providerType === 'network' || providerType === 'child-device') {
@@ -1958,6 +1965,8 @@ const Status = observer((props: Props) => {
                         text: '正常',
                         text: '正常',
                         info: null,
                         info: null,
                       });
                       });
+                    } else {
+                      flag = false;
                     }
                     }
                   }
                   }
                 }
                 }
@@ -1973,10 +1982,14 @@ const Status = observer((props: Props) => {
                         text: '正常',
                         text: '正常',
                         info: null,
                         info: null,
                       });
                       });
+                    } else {
+                      flag = false;
                     }
                     }
                   }
                   }
                 }
                 }
-                onlyMessage('操作成功!');
+                if (flag) {
+                  onlyMessage('操作成功!');
+                }
               }}
               }}
             >
             >
               一键修复
               一键修复

+ 1 - 1
src/pages/edge/Resource/Issue/Result.tsx

@@ -29,7 +29,7 @@ const Publish = (props: Props) => {
         targetId: props.data.targetId,
         targetId: props.data.targetId,
         targetType: props.data.targetType,
         targetType: props.data.targetType,
         category: props.data.category,
         category: props.data.category,
-        metadata: encodeURIComponent(props.data?.metadata || ''),
+        metadata: JSON.parse(props.data?.metadata || '{}'),
       }),
       }),
     };
     };
     const url = new URLSearchParams();
     const url = new URLSearchParams();

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

@@ -201,7 +201,7 @@ const Detail = observer(() => {
           dependencies: ['type'],
           dependencies: ['type'],
           fulfill: {
           fulfill: {
             state: {
             state: {
-              visible: '{{!!$deps[0] && $deps[0] !== "email"}}',
+              hidden: '{{!(!!$deps[0] && $deps[0] !== "email")}}',
             },
             },
           },
           },
         },
         },

+ 6 - 2
src/pages/rule-engine/Scene/index.tsx

@@ -281,8 +281,12 @@ const Scene = () => {
           <SceneCard
           <SceneCard
             {...record}
             {...record}
             onClick={() => {
             onClick={() => {
-              const url = getMenuPathByCode('rule-engine/Scene/Save');
-              history.push(`${url}?triggerType=${record.trigger?.type}&id=${record?.id}`);
+              if (permission.view) {
+                const url = getMenuPathByCode('rule-engine/Scene/Save');
+                history.push(`${url}?triggerType=${record.trigger?.type}&id=${record?.id}`);
+              } else {
+                onlyMessage('暂无权限,请联系管理员', 'error');
+              }
             }}
             }}
             tools={Tools(record)}
             tools={Tools(record)}
           />
           />

+ 6 - 2
src/pages/system/DataSource/Management/EditTable.tsx

@@ -1,4 +1,4 @@
-import { randomString } from '@/utils/util';
+import { onlyMessage, randomString } from '@/utils/util';
 import { ArrayTable, Editable, Form, FormItem, Input, NumberPicker, Radio } from '@formily/antd';
 import { ArrayTable, Editable, Form, FormItem, Input, NumberPicker, Radio } from '@formily/antd';
 import { createForm } from '@formily/core';
 import { createForm } from '@formily/core';
 import { createSchemaField } from '@formily/react';
 import { createSchemaField } from '@formily/react';
@@ -267,7 +267,11 @@ const EditTable = (props: Props) => {
               const { old_id, ...extra } = i;
               const { old_id, ...extra } = i;
               return { ...extra };
               return { ...extra };
             });
             });
-            props.onChange({ array: list });
+            if (list.length) {
+              props.onChange({ array: list });
+            } else {
+              onlyMessage('请配置数据源字段', 'error');
+            }
           }}
           }}
         >
         >
           保存
           保存

+ 21 - 3
src/pages/system/Menu/Setting/baseMenu.ts

@@ -2533,7 +2533,7 @@ export default [
                 name: '编辑',
                 name: '编辑',
                 permissions: [
                 permissions: [
                   {
                   {
-                    permission: 'rule-instance',
+                    permission: 'device-instance',
                     actions: ['query', 'save'],
                     actions: ['query', 'save'],
                   },
                   },
                 ],
                 ],
@@ -2543,8 +2543,26 @@ export default [
                 name: '下发',
                 name: '下发',
                 permissions: [
                 permissions: [
                   {
                   {
-                    permission: 'rule-instance',
-                    actions: ['query', 'save'],
+                    permission: 'edge-operations',
+                    actions: ['invoke'],
+                  },
+                  {
+                    permission: 'device-instance',
+                    actions: ['query'],
+                  },
+                ],
+              },
+              {
+                id: 'view',
+                name: '查看',
+                permissions: [
+                  {
+                    permission: 'edge-operations',
+                    actions: ['invoke'],
+                  },
+                  {
+                    permission: 'device-instance',
+                    actions: ['query'],
                   },
                   },
                 ],
                 ],
               },
               },

+ 6 - 5
src/pages/system/Role/Detail/Permission/Allocate/index.tsx

@@ -37,7 +37,6 @@ const Allocate = (props: Props) => {
         } else {
         } else {
           check = 2;
           check = 2;
         }
         }
-
         return {
         return {
           ...item,
           ...item,
           check,
           check,
@@ -80,14 +79,16 @@ const Allocate = (props: Props) => {
         } else {
         } else {
           check = 2;
           check = 2;
         }
         }
-        setDataSource({
+        const dt = {
           // 重新初始化
           // 重新初始化
           id: 'menu-permission',
           id: 'menu-permission',
           buttons: [],
           buttons: [],
           check,
           check,
           name: '菜单权限',
           name: '菜单权限',
           children,
           children,
-        });
+        };
+        setDataSource(dt);
+        setDataOldSource(dt);
       } else {
       } else {
         setDataSource(props.value);
         setDataSource(props.value);
       }
       }
@@ -98,7 +99,7 @@ const Allocate = (props: Props) => {
     if (Array.isArray(arr) && arr.length > 0) {
     if (Array.isArray(arr) && arr.length > 0) {
       return arr.map((item) => {
       return arr.map((item) => {
         let li: any[] = [];
         let li: any[] = [];
-        if (item?.assetAccesses.length > 0) {
+        if (item?.assetAccesses.length) {
           if (_.map(item.assetAccesses, 'supportId').includes(str)) {
           if (_.map(item.assetAccesses, 'supportId').includes(str)) {
             li = item.assetAccesses.map((i: any) => {
             li = item.assetAccesses.map((i: any) => {
               return {
               return {
@@ -148,8 +149,8 @@ const Allocate = (props: Props) => {
           change={(data: any) => {
           change={(data: any) => {
             setDataSource(data);
             setDataSource(data);
             if (props.onChange) {
             if (props.onChange) {
-              setDataOldSource(data);
               props.onChange(data);
               props.onChange(data);
+              setDataOldSource(data);
             }
             }
           }}
           }}
         />
         />

+ 1 - 1
src/utils/util.ts

@@ -89,7 +89,7 @@ export const getDateFormat = (
  * 扁平化树数组
  * 扁平化树数组
  */
  */
 export const flattenArray: any = (arr: any[]) => {
 export const flattenArray: any = (arr: any[]) => {
-  return arr.reduce((result, item) => {
+  return (arr || []).reduce((result, item) => {
     return result.concat(item, Array.isArray(item.children) ? flattenArray(item.children) : []);
     return result.concat(item, Array.isArray(item.children) ? flattenArray(item.children) : []);
   }, []);
   }, []);
 };
 };