wzyyy 2 лет назад
Родитель
Сommit
4fb4a8bd51

+ 23 - 1
src/pages/device/Instance/Import/index.tsx

@@ -64,6 +64,10 @@ const FileFormat = (props: any) => {
 };
 
 const NormalUpload = (props: any) => {
+  // console.log(props.fileType)
+  // console.log('-----', props.fileType.fileType)
+  // const { fileType } = props?.fileType
+
   const [importLoading, setImportLoading] = useState(false);
   const [flag, setFlag] = useState<boolean>(true);
   const [count, setCount] = useState<number>(0);
@@ -108,10 +112,26 @@ const NormalUpload = (props: any) => {
       <Space>
         <Upload
           action={`/${SystemConst.API_BASE}/file/static`}
-          accept={'.xlsx, .csv'}
+          // accept={'.xlsx, .csv'}
+          accept={props?.fileType?.fileType === 'csv' ? '.csv' : '.xlsx'}
           headers={{
             'X-Access-Token': Token.get(),
           }}
+          beforeUpload={(file) => {
+            console.log('-----', file);
+            const fileType = props?.fileType?.fileType === 'csv' ? 'csv' : 'xlsx';
+
+            const isCsv = file.type === 'text/csv';
+            const isXlsx =
+              file.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
+            if (!isCsv && fileType !== 'xlsx') {
+              onlyMessage('请上传.csv格式文件', 'warning');
+            }
+            if (!isXlsx && fileType !== 'csv') {
+              onlyMessage('请上传.xlsx格式文件', 'warning');
+            }
+            return (isCsv && fileType !== 'xlsx') || (isXlsx && fileType !== 'csv');
+          }}
           onChange={async (info) => {
             if (info.file.status === 'done') {
               const resp: any = info.file.response || { result: '' };
@@ -216,6 +236,8 @@ const Import = (props: Props) => {
             product,
           };
         });
+        const value = field.value;
+        console.log('-----', value);
       });
       onFieldValueChange('upload', (field) => {
         if (!field.value) {

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

@@ -2,7 +2,7 @@ import { Col, Form, Input, Modal, Row, Select } from 'antd';
 import { service } from '@/pages/device/Instance';
 import { useEffect, useState } from 'react';
 import { useIntl } from '@@/plugin-locale/localeExports';
-import { UploadImage } from '@/components';
+import { PermissionButton, UploadImage } from '@/components';
 import { debounce } from 'lodash';
 import encodeQuery from '@/utils/encodeQuery';
 import { onlyMessage } from '@/utils/util';
@@ -25,6 +25,7 @@ const Save = (props: Props) => {
   const [loading, setLoading] = useState(false);
   const [visible, setVisible] = useState(false);
   const [form] = Form.useForm();
+  const { permission } = PermissionButton.usePermission('device/Product');
 
   useEffect(() => {
     if (data && Object.keys(data).length) {
@@ -243,14 +244,16 @@ const Save = (props: Props) => {
             </Form.Item>
           </Col>
           <Col span={2} style={{ margin: '35px 0 0 0' }}>
-            <a
-              style={{ marginLeft: 10 }}
+            <PermissionButton
+              isPermission={permission.add}
+              type="link"
+              disabled={!!data?.id}
               onClick={() => {
                 setVisible(true);
               }}
             >
               <PlusOutlined />
-            </a>
+            </PermissionButton>
           </Col>
         </Row>
         <Row>

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

@@ -49,12 +49,16 @@ export default () => {
     </PermissionButton>,
     <PermissionButton
       type={'link'}
+      disabled={record.state.value === 'disabled'}
       onClick={() => {
         setCurrent(record);
         setIssueVisible(true);
       }}
       tooltip={{
-        title: type !== 'list' ? '' : '下发',
+        title:
+          type !== 'list'
+            ? `${record.state.value === 'disabled' ? '请先启用,再下发' : undefined}`
+            : '下发',
       }}
       style={{ padding: 0 }}
       isPermission={permission.setting}

+ 18 - 17
src/pages/media/Device/Save/SaveProduct.tsx

@@ -113,23 +113,24 @@ export default (props: SaveProps) => {
         >
           <Input placeholder={'请输入产品名称'} />
         </Form.Item>
-        {extendFormItem.map((item: any) => {
-          let messageType = '请输入';
-          if (item.type === 'enum') {
-            messageType = '请选择';
-          }
-          return (
-            <Form.Item
-              name={item.name}
-              label={item.label}
-              required={item.required}
-              rules={[{ required: true, message: `${messageType}${item.label}` }]}
-              initialValue={item.value}
-            >
-              {handlerItem(item.type, item.label, item.options)}
-            </Form.Item>
-          );
-        })}
+        {props.deviceType !== 'gateway' &&
+          extendFormItem.map((item: any) => {
+            let messageType = '请输入';
+            if (item.type === 'enum') {
+              messageType = '请选择';
+            }
+            return (
+              <Form.Item
+                name={item.name}
+                label={item.label}
+                required={item.required}
+                rules={[{ required: true, message: `${messageType}${item.label}` }]}
+                initialValue={item.value}
+              >
+                {handlerItem(item.type, item.label, item.options)}
+              </Form.Item>
+            );
+          })}
         <Form.Item
           name={'accessId'}
           label={'接入网关'}

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

@@ -364,7 +364,7 @@ export default observer((props: FilterProps) => {
               setValue({
                 ...v,
               });
-
+              console.log('node.column-----', node, v);
               if (v.source === 'upper') {
                 if (!node.metadata) {
                   columnsRef.current[1] = node.column;
@@ -372,8 +372,9 @@ export default observer((props: FilterProps) => {
                   columnsRef.current.splice(1, 1);
                 }
               } else {
-                columnsRef.current.length = 1;
+                columnsRef.current = [];
               }
+
               props.onColumns(columnsRef.current);
               labelCache.current[2] = { 0: lb };
               labelCache.current[3] = props.data.type;

+ 1 - 0
src/pages/rule-engine/Scene/Save/action/ListItem/FilterGroup.tsx

@@ -175,6 +175,7 @@ export default observer((props: TermsProps) => {
                       });
                     }}
                     onColumns={(_columns) => {
+                      console.log('_columns-----', _columns);
                       set(optionsColumnsRef.current, [props.name, index], _columns);
                       props.onColumnsChange(optionsColumnsRef.current);
                     }}

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

@@ -409,6 +409,8 @@ export default (props: ItemProps) => {
                   label={props.options?.terms?.[index]}
                   actionColumns={props.options?.otherColumns}
                   onColumnsChange={(columns) => {
+                    console.log('-----', columns);
+
                     const filterColumns = new Set(flattenDeep(columns)); // 平铺去重
                     let newColumns = [...filterColumns.values()];
                     if (optionsRef.current?.otherColumns) {

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

@@ -63,6 +63,7 @@ export const handleOptionsLabel = (data: any, type?: string) => {
       const c = data[0];
       const t = data[1];
       const v = data[2];
+      const range = data[4];
       const termsTypeKey = {
         eq: '等于_value',
         neq: '不等于_value',
@@ -85,12 +86,16 @@ export const handleOptionsLabel = (data: any, type?: string) => {
       };
       const _value = isObject(v) ? Object.values(v) : [v];
       const typeStr = type ? typeKey[type] : '';
-      if (DoubleFilter.includes(t)) {
+      if (DoubleFilter.includes(t) && !range) {
         const str = termsTypeKey[t].replace('_value', _value[0]).replace('_value2', _value[1]);
         return `${c} ${str} ${typeStr} `;
+      } else if (DoubleFilter.includes(t) && !!range) {
+        const str = termsTypeKey[t].replace('_value和_value2', _value[0]);
+        return `${c} ${str} ${typeStr} `;
+      } else {
+        const str = termsTypeKey[t].replace('_value', _value[0]);
+        return `${c} ${str} ${typeStr} `;
       }
-      const str = termsTypeKey[t].replace('_value', _value[0]);
-      return `${c} ${str} ${typeStr} `;
     } catch (e) {
       return data;
     }
@@ -196,7 +201,7 @@ const ParamsItem = observer((props: ParamsItemProps) => {
   }, [props.options]);
 
   useEffect(() => {
-    labelCache.current = props.label || [undefined, undefined, {}, 'and'];
+    labelCache.current = props.label || [undefined, undefined, {}, 'and', ''];
   }, [props.label]);
 
   useEffect(() => {
@@ -392,6 +397,7 @@ const ParamsItem = observer((props: ParamsItemProps) => {
             valueType={valueType}
             value={value}
             onChange={(v, lb, item) => {
+              console.log('-----', v, lb, item);
               const _value = { ...v };
               if (item) {
                 _value.metric = item.id;
@@ -404,15 +410,17 @@ const ParamsItem = observer((props: ParamsItemProps) => {
               }
               ValueRef.current.value = v;
               if (!!metricsOptions.length) {
-                if (DoubleFilter.includes(termType)) {
+                if (DoubleFilter.includes(termType) && !isRange) {
                   labelCache.current[2] = { 0: v?.value?.[0], 1: v?.value?.[1] };
                 } else {
                   labelCache.current[2] = { 0: lb };
+                  labelCache.current[4] = 'range';
                 }
               } else {
                 labelCache.current[2] = { 0: lb };
               }
               labelCache.current[3] = props.data.type;
+              console.log('labelCache------', [...labelCache.current]);
               props.onLabelChange?.([...labelCache.current]);
               valueEventChange(_value);
             }}