Explorar o código

fix: 物模型及组织管理

hear %!s(int64=3) %!d(string=hai) anos
pai
achega
edd2f798ab

+ 3 - 2
src/components/Metadata/ArrayParam/index.tsx

@@ -50,8 +50,9 @@ const ArrayParam = (props: Props) => {
             title: '元素类型',
             'x-decorator': 'FormItem',
             'x-component': 'Select',
-            enum: DataTypeList.filter((item) =>
-              ['int', 'long', 'float', 'double', 'string', 'boolean', 'date'].includes(item.value),
+            enum: DataTypeList.filter(
+              (item) => item.value !== 'array' && item.value !== 'object',
+              // ['int', 'long', 'float', 'double', 'string', 'boolean', 'date'].includes(item.value),
             ),
             'x-validator': [
               {

+ 6 - 7
src/components/Metadata/JsonParam/index.tsx

@@ -14,7 +14,7 @@ import Editable from '../EditTable';
 // 不算是自定义组件。只是抽离了JSONSchema
 interface Props {
   keys?: string;
-  // isFunction?: boolean;
+  isFunction?: boolean;
   isFilter?: string;
 }
 
@@ -209,12 +209,11 @@ const JsonParam = observer((props: Props) => {
                       //     item.value,
                       //   ),
                       // ),
-                      enum:
-                        props.isFilter === 'yes'
-                          ? DataTypeList.filter(
-                              (item) => item.value !== 'array' && item.value !== 'object',
-                            )
-                          : DataTypeList,
+                      enum: !props.isFunction
+                        ? DataTypeList.filter(
+                            (item) => item.value !== 'array' && item.value !== 'object',
+                          )
+                        : DataTypeList,
                       // enum: DataTypeList,
                       'x-validator': [
                         {

+ 1 - 1
src/components/ProTableCard/CardItems/device.tsx

@@ -117,7 +117,7 @@ export const ExtraDeviceCard = (props: DeviceCardProps) => {
                     options={assetsOptions?.map((item) => {
                       return {
                         ...item,
-                        disabled: disabled,
+                        disabled: item.disabled !== true ? disabled : item.disabled,
                       };
                     })}
                     value={assetKeys}

+ 6 - 3
src/components/ProTableCard/CardItems/product.tsx

@@ -107,7 +107,7 @@ export const ExtraProductCard = (props: ProductCardProps) => {
   const [assetKeys, setAssetKeys] = useState<string[]>(['read']);
   const [disabled, setDisabled] = useState(true);
   const disabledRef = useRef<boolean>(true);
-  console.log(props.assetsOptions, props.permissionInfoList);
+  // console.log(props.assetsOptions, props.permissionInfoList);
   const assetsOptions =
     props.assetsOptions && props.permissionInfoList
       ? props.assetsOptions.filter((item: any) =>
@@ -121,9 +121,12 @@ export const ExtraProductCard = (props: ProductCardProps) => {
         setAssetKeys(data.assets);
         setDisabled(true);
         disabledRef.current = true;
-      } else if (!data.isAll && data.bindKeys.includes(props.id)) {
+      } else if (!data.isAll && data.bindKeys?.includes(props.id)) {
         setDisabled(false);
         disabledRef.current = false;
+      } else if (!data.isAll && data.delete && props.id === data.id) {
+        console.log(data);
+        setAssetKeys(['read']);
       } else {
         setDisabled(true);
         disabledRef.current = true;
@@ -187,7 +190,7 @@ export const ExtraProductCard = (props: ProductCardProps) => {
                     })}
                     value={assetKeys}
                     onChange={(e) => {
-                      console.log('assetKeys', disabledRef.current, assetKeys, e);
+                      console.log('assetKeys', assetKeys, e);
                       if (!disabledRef.current) {
                         setAssetKeys(e as string[]);
                         props.onAssetsChange?.(e);

+ 1 - 1
src/components/TitleComponent/index.tsx

@@ -8,7 +8,7 @@ interface TitleComponentProps {
 }
 const TitleComponent = (props: TitleComponentProps) => {
   return (
-    <div className="title" style={props.style}>
+    <div className="title" style={{ ...props.style, marginBottom: 16 }}>
       <div className={'title-content'}>
         {/*<div className={'title-before'}></div>*/}
         {/*<span></span>*/}

+ 1 - 1
src/pages/Northbound/AliCloud/Detail/index.tsx

@@ -448,7 +448,7 @@ const Detail = observer(() => {
       <Card>
         <Row gutter={24}>
           <Col span={14}>
-            <TitleComponent data={'基本信息'} />
+            <TitleComponent data={'基本信息'} style={{ marginBottom: 16 }} />
             <Form form={form} layout="vertical">
               <SchemaField
                 schema={schema}

+ 1 - 1
src/pages/Northbound/DuerOS/Detail/index.tsx

@@ -695,7 +695,7 @@ const Save = () => {
       <Card>
         <Row gutter={24}>
           <Col span={14}>
-            <TitleComponent data={'基本信息'} />
+            <TitleComponent data={'基本信息'} style={{ marginBottom: 16 }} />
             <Form layout="vertical" form={form}>
               <SchemaField
                 schema={schema}

+ 3 - 3
src/pages/device/components/Metadata/Base/Edit/index.tsx

@@ -1240,9 +1240,9 @@ const Edit = observer((props: Props) => {
         }),
         'x-decorator': 'FormItem',
         'x-component': 'JsonParam',
-        // 'x-component-props': {
-        //   isFunction: true,
-        // },
+        'x-component-props': {
+          isFunction: true,
+        },
         'x-reactions': (field) => {
           field.setComponentProps({ keys: 'inputs' });
         },

+ 1 - 1
src/pages/rule-engine/Alarm/Config/index.tsx

@@ -390,7 +390,7 @@ const Config = () => {
     <Row>
       <Col span={14}>
         <Card style={{ height: 780 }}>
-          <TitleComponent data={'告警级别配置'} />
+          <TitleComponent data={'告警级别配置'} style={{ marginBottom: 16 }} />
           <Form form={levelForm}>
             <SchemaField schema={levelSchema} />
             <PermissionButton

+ 37 - 24
src/pages/system/Department/Assets/deivce/bind.tsx

@@ -145,8 +145,8 @@ const Bind = observer((props: Props) => {
     AssetsModel.params = {};
   };
 
-  const getSelectedRowsKey = (selectedRows) => {
-    return selectedRows.map((item) => item?.id).filter((item2) => !!item2 !== false);
+  const getSelectedRowsKey = (selectedRows: any) => {
+    return selectedRows.map((item: any) => item?.id).filter((item2: any) => !!item2 !== false);
   };
 
   useEffect(() => {
@@ -221,23 +221,25 @@ const Bind = observer((props: Props) => {
           }}
         />
       </div>
-      <div>
-        <Checkbox.Group
-          options={props.assetsType}
-          value={checkAssets}
-          onChange={(e: any) => {
-            Store.set('assets-device', {
-              isAll: isAll,
-              assets: e,
-              bindKeys: Models.bindKeys,
-            });
-            bindChecks.current.forEach((_, key) => {
-              bindChecks.current.set(key, e);
-            });
-            setCheckAssets(e);
-          }}
-        />
-      </div>
+      {isAll && (
+        <div>
+          <Checkbox.Group
+            options={props.assetsType}
+            value={checkAssets}
+            onChange={(e: any) => {
+              Store.set('assets-product', {
+                isAll: isAll,
+                assets: e,
+                bindKeys: Models.bindKeys,
+              });
+              bindChecks.current.forEach((_, key) => {
+                bindChecks.current.set(key, e);
+              });
+              setCheckAssets(e);
+            }}
+          />
+        </div>
+      )}
       <SearchComponent<DeviceItem>
         field={columns}
         enableSave={false}
@@ -318,14 +320,25 @@ const Bind = observer((props: Props) => {
             // onChange: (selectedRowKeys, selectedRows) => {
             //   Models.bindKeys = selectedRows.map((item) => item.id);
             // },
-            onSelect: (record, selected, selectedRows) => {
+            onSelect: (record: any, selected, selectedRows) => {
               if (selected) {
-                Models.bindKeys = [
-                  ...new Set([...Models.bindKeys, ...getSelectedRowsKey(selectedRows)]),
-                ];
-                bindChecks.current.set(record.id, checkAssets);
+                const isShare = record.permissionInfoList.find((item: any) => item.id === 'share');
+                if (isShare && isShare.length !== 0) {
+                  Models.bindKeys = [
+                    ...new Set([...Models.bindKeys, ...getSelectedRowsKey(selectedRows)]),
+                  ];
+                  bindChecks.current.set(record.id, checkAssets);
+                } else {
+                  onlyMessage('该资产不支持共享', 'warning');
+                }
               } else {
                 Models.bindKeys = Models.bindKeys.filter((item) => item !== record.id);
+                bindChecks.current.set(record.id, ['read']);
+                Store.set('assets-product', {
+                  isAll: false,
+                  id: record.id,
+                  delete: true,
+                });
                 bindChecks.current.delete(record.id);
               }
               Store.set('assets-device', {

+ 47 - 26
src/pages/system/Department/Assets/product/bind.tsx

@@ -34,7 +34,7 @@ const Bind = observer((props: Props) => {
   const [searchParam, setSearchParam] = useState({});
   const [loading, setLoading] = useState(false);
   const [checkAssets, setCheckAssets] = useState<string[]>(['read']);
-  const [isAll, setIsAll] = useState<boolean>(false);
+  const [isAll, setIsAll] = useState<boolean>(true);
   const bindChecks = useRef(new Map());
 
   const columns: ProColumns<any>[] = [
@@ -199,7 +199,9 @@ const Bind = observer((props: Props) => {
           <Switch
             checkedChildren="开"
             unCheckedChildren="关"
+            defaultChecked={true}
             onChange={(e) => {
+              console.log(e);
               setIsAll(e);
               Store.set('assets-product', {
                 isAll: e,
@@ -209,23 +211,26 @@ const Bind = observer((props: Props) => {
             }}
           />
         </div>
-        <div>
-          <Checkbox.Group
-            options={props.assetsType}
-            value={checkAssets}
-            onChange={(e: any) => {
-              Store.set('assets-product', {
-                isAll: isAll,
-                assets: e,
-                bindKeys: Models.bindKeys,
-              });
-              bindChecks.current.forEach((_, key) => {
-                bindChecks.current.set(key, e);
-              });
-              setCheckAssets(e);
-            }}
-          />
-        </div>
+        {isAll && (
+          <div>
+            <Checkbox.Group
+              options={props.assetsType}
+              value={checkAssets}
+              onChange={(e: any) => {
+                Store.set('assets-product', {
+                  isAll: isAll,
+                  assets: e,
+                  bindKeys: Models.bindKeys,
+                });
+                bindChecks.current.forEach((_, key) => {
+                  bindChecks.current.set(key, e);
+                });
+                setCheckAssets(e);
+              }}
+            />
+          </div>
+        )}
+
         {/*<PermissionModal*/}
         {/*  type="product"*/}
         {/*  parentId={props.parentId}*/}
@@ -304,14 +309,28 @@ const Bind = observer((props: Props) => {
               //     productId: selectedRows.map((item) => item.id),
               //   };
               // },
-              onSelect: (record, selected, selectedRows) => {
+              onSelect: (record: any, selected, selectedRows) => {
                 if (selected) {
-                  Models.bindKeys = [
-                    ...new Set([...Models.bindKeys, ...getSelectedRowsKey(selectedRows)]),
-                  ];
-                  bindChecks.current.set(record.id, checkAssets);
+                  // console.log('---------',record.permissionInfoList)
+                  const isShare = record.permissionInfoList.find(
+                    (item: any) => item.id === 'share',
+                  );
+                  if (isShare && isShare.length !== 0) {
+                    Models.bindKeys = [
+                      ...new Set([...Models.bindKeys, ...getSelectedRowsKey(selectedRows)]),
+                    ];
+                    bindChecks.current.set(record.id, checkAssets);
+                  } else {
+                    onlyMessage('该资产不支持共享', 'warning');
+                  }
                 } else {
                   Models.bindKeys = Models.bindKeys.filter((item) => item !== record.id);
+                  bindChecks.current.set(record.id, ['read']);
+                  Store.set('assets-product', {
+                    isAll: false,
+                    id: record.id,
+                    delete: true,
+                  });
                   bindChecks.current.delete(record.id);
                 }
                 Store.set('assets-product', {
@@ -325,9 +344,11 @@ const Bind = observer((props: Props) => {
               },
               onSelectAll: (selected, selectedRows, changeRows) => {
                 if (selected) {
-                  Models.bindKeys = [
-                    ...new Set([...Models.bindKeys, ...getSelectedRowsKey(selectedRows)]),
-                  ];
+                  const arr = selectedRows.filter(
+                    (item: any) => !!item.permissionInfoList.find((it: any) => it.id === 'share'),
+                  );
+                  // console.log(arr)
+                  Models.bindKeys = [...new Set([...Models.bindKeys, ...getSelectedRowsKey(arr)])];
                 } else {
                   const unChangeRowsKeys = getSelectedRowsKey(changeRows);
                   Models.bindKeys = Models.bindKeys

+ 6 - 1
src/pages/system/Department/Assets/updateModal.tsx

@@ -18,6 +18,7 @@ const server = new Server();
 export default (props: UpdateModalProps) => {
   const [form] = Form.useForm();
   const [loading, setLoading] = useState(false);
+  const [options, setOptions] = useState<any>([]);
 
   const saveData = useCallback(async () => {
     const data = form.getFieldsValue();
@@ -59,6 +60,10 @@ export default (props: UpdateModalProps) => {
         permissions: props.permissions,
       });
     }
+    // console.log('1------------', props.assetsType)
+    // console.log('2------------', props.permissions)
+    const item = props.assetsType.filter((it: any) => props.permissions.indexOf(it.value) > -1);
+    setOptions(item);
   }, [props.permissions, form]);
 
   return (
@@ -72,7 +77,7 @@ export default (props: UpdateModalProps) => {
     >
       <Form form={form}>
         <Form.Item name="permissions" label="资产权限" required>
-          <Checkbox.Group options={props.assetsType} />
+          <Checkbox.Group options={options} />
         </Form.Item>
       </Form>
     </Modal>