Forráskód Böngészése

fix: bug

Next wzy
hear 3 éve
szülő
commit
2b207ea751

+ 1 - 1
src/components/ProTableCard/CardItems/Scene/index.tsx

@@ -85,7 +85,7 @@ const deviceRender = (data: ActionsType | undefined) => {
       return `${data?.options?.type}${data?.options?.name}${data?.options?.properties}`;
     case 'tag':
       let tags: string = '';
-      data.options?.taglist.map((item: any) => {
+      data.options?.taglist?.map((item: any) => {
         tags += item.type || '' + item.name || '' + item.value || '';
       });
       return `${

+ 20 - 7
src/pages/iot-card/Recharge/index.tsx

@@ -4,7 +4,6 @@ import useDomFullHeight from '@/hooks/document/useDomFullHeight';
 import { ExclamationCircleOutlined, EyeOutlined } from '@ant-design/icons';
 import { PageContainer } from '@ant-design/pro-layout';
 import ProTable, { ActionType, ProColumns } from '@jetlinks/pro-table';
-import { Tooltip } from 'antd';
 import moment from 'moment';
 import { useRef, useState } from 'react';
 import Service from '../CardManagement/service';
@@ -81,17 +80,31 @@ const Recharge = () => {
       width: 200,
       hideInSearch: true,
       render: (_, record) => [
-        <a
-          key="editable"
+        <PermissionButton
           onClick={() => {
             setDetail(true);
             setCurrent(record);
           }}
+          isPermission={permission.view}
+          key="view"
+          type="link"
+          tooltip={{
+            title: '查看',
+          }}
         >
-          <Tooltip title="查看">
-            <EyeOutlined />
-          </Tooltip>
-        </a>,
+          <EyeOutlined />
+        </PermissionButton>,
+        // <a
+        //   key="editable"
+        //   onClick={() => {
+        //     setDetail(true);
+        //     setCurrent(record);
+        //   }}
+        // >
+        //   <Tooltip title="查看">
+        //     <EyeOutlined />
+        //   </Tooltip>
+        // </a>,
       ],
     },
   ];

+ 19 - 7
src/pages/rule-engine/Scene/Save/action/DeviceOutput/device/Tag.tsx

@@ -2,6 +2,7 @@ import { Button, Col, DatePicker, Input, InputNumber, Row, Select, Space } from
 import { useEffect, useState } from 'react';
 import moment from 'moment';
 import { DeleteOutlined, PlusOutlined } from '@ant-design/icons';
+import './index.less';
 
 interface TagModalProps {
   tagData: any[];
@@ -98,6 +99,9 @@ export default (props: TagModalProps) => {
             placeholder={'请选择' + name}
             onChange={(key) => {
               record.value = key;
+              if (key) {
+                onChange();
+              }
             }}
           />
         );
@@ -113,6 +117,9 @@ export default (props: TagModalProps) => {
             placeholder={'请选择' + name}
             onChange={(key) => {
               record.value = key;
+              if (key) {
+                onChange();
+              }
             }}
           />
         );
@@ -127,6 +134,9 @@ export default (props: TagModalProps) => {
             placeholder={'请输入' + name}
             onChange={(key) => {
               record.value = key;
+              if (key) {
+                onChange();
+              }
             }}
           />
         );
@@ -141,6 +151,9 @@ export default (props: TagModalProps) => {
                 style={{ width: '100%' }}
                 onChange={(_, date) => {
                   record.value = date;
+                  if (date) {
+                    onChange();
+                  }
                 }}
               />
             }
@@ -152,7 +165,10 @@ export default (props: TagModalProps) => {
             value={record.value}
             placeholder={'请输入标签值'}
             onChange={(e) => {
-              record.value = e.target.value;
+              if (type && e.target.value) {
+                record.value = e.target.value;
+                onChange();
+              }
             }}
           />
         );
@@ -161,16 +177,12 @@ export default (props: TagModalProps) => {
 
   return (
     <>
-      <div
-        onChange={() => {
-          onChange();
-        }}
-      >
+      <div>
         {tagList.map((tag, index) => (
           <Row gutter={12} key={tag.id || index} style={{ marginBottom: 12 }}>
             <Col span={4}>
               {index === 0 ? (
-                <span>标签选择</span>
+                <span className="tagName">标签选择</span>
               ) : (
                 <Select
                   value={tag.type}

+ 11 - 0
src/pages/rule-engine/Scene/Save/action/DeviceOutput/device/index.less

@@ -0,0 +1,11 @@
+.tagName::before {
+  position: relative;
+  left: 70px;
+  display: inline-block;
+  margin-right: 4px;
+  color: #ff4d4f;
+  font-size: 14px;
+  font-family: SimSun, sans-serif;
+  line-height: 1;
+  content: '*';
+}

+ 10 - 5
src/pages/rule-engine/Scene/Save/action/DeviceOutput/device/index.tsx

@@ -28,6 +28,7 @@ interface Props {
   thenName: number;
   branchGroup?: number;
   formProductId: any;
+  get: (ref: any) => void;
 }
 
 export default observer((props: Props) => {
@@ -404,11 +405,7 @@ export default observer((props: Props) => {
         );
       case 'tag':
         return (
-          <Form.Item
-            name="selectorValues"
-            // label='标签'
-            rules={[{ required: true, message: '请选择标签' }]}
-          >
+          <Form.Item name="selectorValues" rules={[{ required: true, message: '请选择标签' }]}>
             <Tag
               tagData={tagList}
               onChange={(value) => {
@@ -445,8 +442,12 @@ export default observer((props: Props) => {
   };
 
   useEffect(() => {
+    console.log(DeviceModel.selectorValues, '--------');
     if (form) {
       form.setFieldsValue({ selector: DeviceModel.selector });
+      if (DeviceModel.selectorValues) {
+        form.setFieldsValue({ selectorValues: DeviceModel.selectorValues });
+      }
     }
     sourceChangeEvent();
     if (DeviceModel.deviceId) {
@@ -481,6 +482,10 @@ export default observer((props: Props) => {
     DeviceModel.selector = selector;
   }, [selector]);
 
+  useEffect(() => {
+    props.get(form);
+  }, [form]);
+
   return (
     <div>
       <Form form={form} layout={'vertical'}>

+ 14 - 2
src/pages/rule-engine/Scene/Save/action/DeviceOutput/index.tsx

@@ -26,6 +26,7 @@ interface Props {
 
 export default observer((props: Props) => {
   const formRef = useRef<any>();
+  const tagFormRef = useRef<any>();
   const formProductIdRef = useRef<any>('');
 
   DeviceModel.steps = [
@@ -44,6 +45,9 @@ export default observer((props: Props) => {
           branchGroup={props.branchGroup}
           thenName={props.thenName}
           formProductId={formProductIdRef.current}
+          get={(item: any) => {
+            tagFormRef.current = item;
+          }}
         />
       ),
     },
@@ -62,12 +66,20 @@ export default observer((props: Props) => {
       ),
     },
   ];
-  const next = () => {
+  const next = async () => {
     if (
       (DeviceModel.current === 0 && DeviceModel.productId) ||
       (DeviceModel.current === 1 && (DeviceModel.deviceId || DeviceModel.selector === 'tag'))
     ) {
-      return (DeviceModel.current += 1);
+      if (DeviceModel.selector === 'tag') {
+        const value = await tagFormRef.current?.validateFields();
+        if (value) {
+          return (DeviceModel.current += 1);
+        }
+        console.log('----------', value);
+      } else {
+        return (DeviceModel.current += 1);
+      }
     } else {
       return DeviceModel.current === 0
         ? onlyMessage('请选择产品', 'error')

+ 13 - 1
src/pages/rule-engine/Scene/Save/action/notify/components/variableItem/inputFile.tsx

@@ -1,5 +1,5 @@
 import { useEffect, useState } from 'react';
-import { Button, Input, Upload } from 'antd';
+import { Button, Input, message, Upload } from 'antd';
 import { UploadChangeParam } from 'antd/lib/upload/interface';
 import SystemConst from '@/utils/const';
 import Token from '@/utils/token';
@@ -42,9 +42,21 @@ export default (props: InputUploadProps) => {
       headers={{
         'X-Access-Token': Token.get(),
       }}
+      accept={'image/jpeg,image/png'}
       showUploadList={false}
       onChange={handleChange}
       disabled={loading}
+      beforeUpload={(file) => {
+        const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png';
+        if (!isJpgOrPng) {
+          message.error('请上传正确格式图片');
+        }
+        const isSize = file.size / 1024 / 1024 < 4;
+        if (!isSize) {
+          message.error(`图片大小必须小于4M`);
+        }
+        return isJpgOrPng && isSize;
+      }}
     >
       <Button type={'link'} style={{ height: 30 }}>
         {loading ? <LoadingOutlined /> : <PlusOutlined />}

+ 7 - 7
src/pages/system/Apply/index.tsx

@@ -147,7 +147,7 @@ const Apply = () => {
         </PermissionButton>,
         isPage(record.integrationModes) ? (
           <PermissionButton
-            isPermission={permission.update}
+            isPermission={permission.update || permission.add}
             key="page"
             onClick={() => {
               setData(record);
@@ -167,7 +167,7 @@ const Apply = () => {
             key={'empowerment'}
             type={'link'}
             style={{ padding: 0 }}
-            isPermission={permission.empowerment}
+            isPermission={permission.update || permission.add}
             tooltip={{
               title: '赋权',
             }}
@@ -184,7 +184,7 @@ const Apply = () => {
             key={'api'}
             type={'link'}
             style={{ padding: 0 }}
-            isPermission={permission.api}
+            isPermission={permission.update || permission.add}
             tooltip={{
               title: '查看API',
             }}
@@ -197,7 +197,7 @@ const Apply = () => {
           </PermissionButton>
         ) : null,
         <PermissionButton
-          isPermission={permission.action}
+          isPermission={permission.update}
           key="action"
           type={'link'}
           style={{ padding: 0 }}
@@ -387,7 +387,7 @@ const Apply = () => {
                       {isPage(record.integrationModes) && (
                         <Menu.Item key="menu">
                           <PermissionButton
-                            isPermission={permission.update}
+                            isPermission={permission.update || permission.add}
                             key="edit"
                             onClick={() => {
                               setData(record);
@@ -410,7 +410,7 @@ const Apply = () => {
                             key={'empowerment'}
                             type={'link'}
                             style={{ padding: 0 }}
-                            isPermission={permission.empowerment}
+                            isPermission={permission.update || permission.add}
                             tooltip={{
                               title: '赋权',
                             }}
@@ -430,7 +430,7 @@ const Apply = () => {
                             key={'api'}
                             type={'link'}
                             style={{ padding: 0 }}
-                            isPermission={permission.api}
+                            isPermission={permission.update || permission.add}
                             tooltip={{
                               title: '查看API',
                             }}

+ 5 - 3
src/pages/system/Department/Assets/deivce/index.tsx

@@ -411,7 +411,8 @@ export default observer((props: { parentId: string }) => {
                   setPermissions(record.grantedPermissions!);
                   setUpdateVisible(true);
                 }}
-                isPermission={permission.edit}
+                // isPermission={permission.edit}
+                isPermission={permission.assert}
               >
                 <EditOutlined />
               </PermissionButton>,
@@ -433,7 +434,8 @@ export default observer((props: { parentId: string }) => {
                 onClick={(e) => {
                   e?.stopPropagation();
                 }}
-                isPermission={permission.bind}
+                // isPermission={permission.bind}
+                isPermission={permission.assert}
               >
                 <DisconnectOutlined />
               </PermissionButton>,
@@ -473,7 +475,7 @@ export default observer((props: { parentId: string }) => {
                 defaultMessage: '批量解绑',
               }),
             }}
-            isPermission={permission.bind}
+            isPermission={permission.assert}
           >
             {intl.formatMessage({
               id: 'pages.system.role.option.unBindUser',

+ 5 - 3
src/pages/system/Department/Assets/product/index.tsx

@@ -167,7 +167,8 @@ export default observer((props: { parentId: string }) => {
             setPermissions(record.grantedPermissions!);
             setUpdateVisible(true);
           }}
-          isPermission={permission.edit}
+          // isPermission={permission.edit}
+          isPermission={permission.assert}
         >
           <EditOutlined />
         </PermissionButton>,
@@ -183,7 +184,8 @@ export default observer((props: { parentId: string }) => {
               singleUnBind(record.id);
             },
           }}
-          isPermission={permission.bind}
+          // isPermission={permission.bind}
+          isPermission={permission.assert}
         >
           <DisconnectOutlined />
         </PermissionButton>,
@@ -475,7 +477,7 @@ export default observer((props: { parentId: string }) => {
                 defaultMessage: '批量解绑',
               }),
             }}
-            isPermission={permission.bind}
+            isPermission={permission.assert}
           >
             {intl.formatMessage({
               id: 'pages.system.role.option.unBindUser',

+ 89 - 50
src/pages/system/Menu/Setting/baseMenu.ts

@@ -3013,54 +3013,54 @@ export default [
               },
             ],
           },
-          {
-            id: 'edit',
-            name: '资产编辑',
-            permissions: [
-              {
-                permission: 'assets-bind',
-                actions: ['query', 'permission'],
-              },
-              {
-                permission: 'user',
-                actions: ['query'],
-              },
-              {
-                permission: 'device-product',
-                actions: ['query'],
-              },
-              {
-                permission: 'device-instance',
-                actions: ['query'],
-              },
-            ],
-          },
-          {
-            id: 'bind',
-            name: '资产解绑',
-            permissions: [
-              {
-                permission: 'assets-bind',
-                actions: ['unbind', 'query'],
-              },
-              {
-                permission: 'user',
-                actions: ['query'],
-              },
-              {
-                permission: 'device-product',
-                actions: ['query'],
-              },
-              {
-                permission: 'device-instance',
-                actions: ['query'],
-              },
-              {
-                permission: 'organization',
-                actions: ['unbind-user'],
-              },
-            ],
-          },
+          // {
+          //   id: 'edit',
+          //   name: '资产编辑',
+          //   permissions: [
+          //     {
+          //       permission: 'assets-bind',
+          //       actions: ['query', 'permission'],
+          //     },
+          //     {
+          //       permission: 'user',
+          //       actions: ['query'],
+          //     },
+          //     {
+          //       permission: 'device-product',
+          //       actions: ['query'],
+          //     },
+          //     {
+          //       permission: 'device-instance',
+          //       actions: ['query'],
+          //     },
+          //   ],
+          // },
+          // {
+          //   id: 'bind',
+          //   name: '资产解绑',
+          //   permissions: [
+          //     {
+          //       permission: 'assets-bind',
+          //       actions: ['unbind', 'query'],
+          //     },
+          //     {
+          //       permission: 'user',
+          //       actions: ['query'],
+          //     },
+          //     {
+          //       permission: 'device-product',
+          //       actions: ['query'],
+          //     },
+          //     {
+          //       permission: 'device-instance',
+          //       actions: ['query'],
+          //     },
+          //     {
+          //       permission: 'organization',
+          //       actions: ['unbind-user'],
+          //     },
+          //   ],
+          // },
           {
             id: 'bind-user',
             name: '绑定用户',
@@ -3089,7 +3089,7 @@ export default [
           },
           {
             id: 'assert',
-            name: '分配资产',
+            name: '资产分配',
             permissions: [
               {
                 permission: 'assets-bind',
@@ -3627,7 +3627,28 @@ export default [
         icon: 'icon-chakanAPI',
         showPage: ['open-api'],
         permissions: [{ permission: 'open-api', actions: ['query', 'save'] }],
-        buttons: [],
+        buttons: [
+          {
+            id: 'view',
+            name: '查看',
+            permissions: [
+              {
+                permission: 'open-api',
+                actions: ['query'],
+              },
+            ],
+          },
+          {
+            id: 'update',
+            name: '编辑',
+            permissions: [
+              {
+                permission: 'open-api',
+                actions: ['query', 'save'],
+              },
+            ],
+          },
+        ],
       },
       {
         code: 'system/Apply',
@@ -3667,6 +3688,10 @@ export default [
                 permission: 'role',
                 actions: ['query'],
               },
+              {
+                permission: 'open-api',
+                actions: ['query', 'save', 'delete'],
+              },
             ],
           },
           {
@@ -3685,6 +3710,10 @@ export default [
                 permission: 'role',
                 actions: ['query'],
               },
+              {
+                permission: 'open-api',
+                actions: ['query', 'save', 'delete'],
+              },
             ],
           },
           {
@@ -3968,6 +3997,16 @@ export default [
               },
             ],
           },
+          {
+            id: 'view',
+            name: '查看',
+            permissions: [
+              {
+                permission: 'network-card',
+                actions: ['query'],
+              },
+            ],
+          },
         ],
       },
       {

+ 14 - 2
src/pages/system/Platforms/Api/basePage.tsx

@@ -4,6 +4,7 @@ import { useLocation } from 'umi';
 import { service } from '../index';
 import { ApiModel } from '@/pages/system/Platforms/Api/base';
 import { onlyMessage } from '@/utils/util';
+import PermissionButton from '@/components/PermissionButton';
 
 interface TableProps {
   data: any;
@@ -21,6 +22,7 @@ export default (props: TableProps) => {
   const [dataSource, setDataSource] = useState<any[]>([]);
   const [loading, setLoading] = useState(false);
   const [GrantKeys, setGrantKeys] = useState<string[] | undefined>(undefined);
+  const { permission } = PermissionButton.usePermission('system/Platforms/Setting');
 
   const grantCache = useRef<string[]>([]);
 
@@ -207,9 +209,19 @@ export default (props: TableProps) => {
       />
       {props.isShowGranted !== true && (
         <div className={'platforms-api-save'}>
-          <Button type={'primary'} onClick={save} loading={loading}>
+          <PermissionButton
+            isPermission={permission.update}
+            onClick={save}
+            key={'update'}
+            type={'primary'}
+            style={{ padding: 0, width: 50 }}
+            loading={loading}
+          >
             保存
-          </Button>
+          </PermissionButton>
+          {/* <Button type={'primary'} onClick={save} >
+            保存
+          </Button> */}
         </div>
       )}
     </div>