소스 검색

fix: 网关设备及场景联动bug

wzyyy 2 년 전
부모
커밋
c204912c56

+ 1 - 1
src/components/ProTableCard/CardItems/edge/Resource.tsx

@@ -29,7 +29,7 @@ export default (props: ResourceCardProps) => {
         disabled: StatusColorEnum.error,
       }}
     >
-      <div className={'pro-table-card-item'}>
+      <div className={'pro-table-card-item'} onClick={props.onClick}>
         <div className={'card-item-avatar'}>
           <img width={88} height={88} src={defaultImage} alt={''} />
         </div>

+ 7 - 1
src/pages/device/Firmware/Save/index.tsx

@@ -65,13 +65,19 @@ const Save = (props: Props) => {
         }
       });
       onFieldValueChange('versionOrder', async (field, f1) => {
+        console.log(data);
         const value = (field as Field).value;
         const productId = (field.query('.productId').take() as Field).value;
         if (field.modified && productId && value) {
           const resp = await service.validateVersion(productId, value);
           if (resp.status === 200) {
             f1.setFieldState('versionOrder', (state) => {
-              state.selfErrors = resp.result ? ['版本序号已存在'] : undefined;
+              if (data?.id && data.versionOrder === value) {
+                state.selfErrors = undefined;
+              } else {
+                state.selfErrors = resp.result ? ['版本序号已存在'] : undefined;
+              }
+              // state.selfErrors = resp.result ? ['版本序号已存在'] : undefined;
             });
           }
         }

+ 6 - 4
src/pages/edge/Device/Save/index.tsx

@@ -280,13 +280,15 @@ const Save = (props: Props) => {
           setVisible(false);
         }}
         deviceType={'gateway'}
-        reload={(productId: string, name: string) => {
-          form.setFieldsValue({ productId });
+        reload={(productId: string, result: any) => {
+          console.log('------', productId, result.name);
+
           productList.push({
-            id: productId,
-            name,
+            value: productId,
+            label: result.name,
           });
           setProductList([...productList]);
+          form.setFieldsValue({ productId: productId });
         }}
       />
     </Modal>

+ 5 - 3
src/pages/edge/Device/index.tsx

@@ -3,7 +3,7 @@ import { DeviceInstance } from '@/pages/device/Instance/typings';
 import SearchComponent from '@/components/SearchComponent';
 import { ActionType, ProColumns } from '@jetlinks/pro-table';
 import moment from 'moment';
-import { Badge, Button, Tooltip } from 'antd';
+import { Badge, Tooltip } from 'antd';
 import { service as categoryService } from '@/pages/device/Category';
 import { InstanceModel, service, statusMap } from '@/pages/device/Instance';
 import { useIntl } from '@@/plugin-locale/localeExports';
@@ -36,13 +36,15 @@ export default () => {
   const history = useHistory<Record<string, string>>();
   const [importVisible, setImportVisible] = useState<boolean>(false);
   const { permission } = PermissionButton.usePermission('edge/Device');
+  const devicePermission = PermissionButton.usePermission('device/Instance').permission;
 
   const tools = (record: DeviceInstance, type: 'card' | 'list') => [
     type === 'list' && (
-      <Button
+      <PermissionButton
         type={'link'}
         style={{ padding: 0 }}
         key={'detail'}
+        isPermission={permission.view && devicePermission.view}
         onClick={() => {
           InstanceModel.current = record;
           const url = getMenuPathByParams(MENUS_CODE['device/Instance/Detail'], record.id);
@@ -57,7 +59,7 @@ export default () => {
         >
           <EyeOutlined />
         </Tooltip>
-      </Button>
+      </PermissionButton>
     ),
     <PermissionButton
       type={'link'}

+ 21 - 1
src/pages/edge/Resource/index.tsx

@@ -18,6 +18,8 @@ import Issue from './Issue';
 import Service from './service';
 import ResourceCard from '@/components/ProTableCard/CardItems/edge/Resource';
 import moment from 'moment';
+import { getMenuPathByParams, MENUS_CODE } from '@/utils/menu';
+import { useHistory } from 'umi';
 
 export const service = new Service('entity/template');
 
@@ -30,6 +32,8 @@ export default () => {
   const [issueVisible, setIssueVisible] = useState<boolean>(false);
   const { permission } = PermissionButton.usePermission('edge/Resource');
 
+  const history = useHistory<Record<string, string>>();
+
   const tools = (record: ResourceItem, type: 'card' | 'list') => [
     <PermissionButton
       type={'link'}
@@ -157,6 +161,7 @@ export default () => {
       dataIndex: 'id',
       width: 200,
       ellipsis: true,
+      hideInSearch: true,
       fixed: 'left',
     },
     {
@@ -253,7 +258,22 @@ export default () => {
         rowKey="id"
         search={false}
         pagination={{ pageSize: 10 }}
-        cardRender={(record) => <ResourceCard {...record} actions={tools(record, 'card')} />}
+        cardRender={(record) => (
+          <ResourceCard
+            {...record}
+            onClick={() => {
+              const url = getMenuPathByParams(
+                MENUS_CODE['device/Instance/Detail'],
+                record.sourceId,
+              );
+              console.log(url);
+              if (url) {
+                history.push(url);
+              }
+            }}
+            actions={tools(record, 'card')}
+          />
+        )}
       />
       {visible && (
         <Save

+ 4 - 0
src/pages/notice/Template/Debug/index.tsx

@@ -42,6 +42,7 @@ const Debug = observer(() => {
 
           onFieldReact('variableDefinitions.*.type', async (field) => {
             const value = (field as Field).value;
+            console.log('value----', value);
 
             const format = field.query('.value').take() as Field;
             const _id = field.query('.id').take() as Field;
@@ -66,6 +67,9 @@ const Debug = observer(() => {
                 case 'number':
                   format.setComponent(NumberPicker, {});
                   break;
+                case 'double':
+                  format.setComponent(NumberPicker, {});
+                  break;
                 case 'file':
                   format.setComponent(FUpload, {
                     type: 'file',

+ 7 - 1
src/pages/rule-engine/Scene/Save/components/Buttons/ParamsDropdown.tsx

@@ -232,6 +232,12 @@ export default (props: ParamsDropdownProps) => {
           });
           break;
         case 'enum':
+          props.enumList?.forEach((item) => {
+            if (item.id === v) {
+              setLabel(item.name);
+            }
+          });
+          break;
         case 'object':
           findLabel(v, props.options || []);
           break;
@@ -242,7 +248,7 @@ export default (props: ParamsDropdownProps) => {
           setLabel(v + '');
       }
     },
-    [props.options, props.BuiltInOptions],
+    [props.options, props.BuiltInOptions, props.enumList],
   );
 
   const initData = useCallback(() => {

+ 8 - 5
src/pages/rule-engine/Scene/Save/terms/paramsItem.tsx

@@ -86,10 +86,11 @@ export const handleOptionsLabel = (data: any, type?: string) => {
       };
       const _value = isObject(v) ? Object.values(v) : [v];
       const typeStr = type ? typeKey[type] : '';
-      if (DoubleFilter.includes(t) && !range) {
+      if (DoubleFilter.includes(t) && _value.length === 2) {
         const str = termsTypeKey[t].replace('_value', _value[0]).replace('_value2', _value[1]);
         return `${c} ${str} ${typeStr} `;
-      } else if (DoubleFilter.includes(t) && !!range) {
+      } else if (DoubleFilter.includes(t) && !!range && _value.length === 1) {
+        console.log(_value, range);
         const str = termsTypeKey[t].replace('_value和_value2', _value[0]);
         return `${c} ${str} ${typeStr} `;
       } else {
@@ -157,6 +158,7 @@ const ParamsItem = observer((props: ParamsItemProps) => {
             [];
           setTtOptions(_termTypeOptions);
           setValueType(labelOptions.dataType);
+          enumRef.current = labelOptions.options;
           if (labelOptions.metrics) {
             // 指标值
             const _metrics = labelOptions.metrics.map((mItem: any) => ({
@@ -183,7 +185,7 @@ const ParamsItem = observer((props: ParamsItemProps) => {
   useEffect(() => {
     setTermType(props.data.termType || '');
     setValue(props.data.value);
-    console.log('props.data-----', props.data);
+    // console.log('props.data-----', props.data);
     setColumn(props.data.column || '');
     // if(props.data.value?.source === 'metric'){
     //   setIsRange(true)
@@ -403,7 +405,7 @@ const ParamsItem = observer((props: ParamsItemProps) => {
             value={value}
             enumList={enumRef.current}
             onChange={(v, lb, item) => {
-              // console.log('-----', v, lb, item);
+              console.log('-----', v, lb, item);
               const _value = { ...v };
               if (item) {
                 _value.metric = item.id;
@@ -418,6 +420,7 @@ const ParamsItem = observer((props: ParamsItemProps) => {
               if (!!metricsOptions.length) {
                 if (DoubleFilter.includes(termType) && !isRange) {
                   labelCache.current[2] = { 0: v?.value?.[0], 1: v?.value?.[1] };
+                  labelCache.current.length = 3;
                 } else {
                   labelCache.current[2] = { 0: lb };
                   labelCache.current[4] = 'range';
@@ -426,7 +429,7 @@ const ParamsItem = observer((props: ParamsItemProps) => {
                 labelCache.current[2] = { 0: lb };
               }
               labelCache.current[3] = props.data.type;
-              console.log('labelCache------', [...labelCache.current]);
+              // console.log('labelCache------', [...labelCache.current]);
               props.onLabelChange?.([...labelCache.current]);
               valueEventChange(_value);
             }}