소스 검색

feat(merge): merge

xieyonghong 4 년 전
부모
커밋
6c20eb2f7a

+ 9 - 10
src/pages/device/Instance/Export/index.tsx

@@ -1,7 +1,7 @@
-import { FormItem, Select, FormLayout } from '@formily/antd';
+import { FormItem, FormLayout, Select, Radio } from '@formily/antd';
 import { createForm } from '@formily/core';
 import { createSchemaField, FormProvider } from '@formily/react';
-import { Alert, Modal, Radio } from 'antd';
+import { Alert, Modal } from 'antd';
 import 'antd/lib/tree-select/style/index.less';
 import { useEffect, useState } from 'react';
 import { service } from '@/pages/device/Instance';
@@ -35,13 +35,13 @@ const Export = (props: Props) => {
           label: item.name,
           value: item.id,
         }));
-        console.log(list);
         setProductList(list);
       }
     });
   }, []);
 
   const form = createForm();
+
   const schema = {
     type: 'object',
     properties: {
@@ -62,9 +62,14 @@ const Export = (props: Props) => {
             enum: [...productList],
           },
           fileType: {
-            type: 'number',
             title: '文件格式',
             default: 'xlsx',
+            'x-decorator': 'FormItem',
+            'x-component': 'Radio.Group',
+            'x-component-props': {
+              optionType: 'button',
+              buttonStyle: 'solid',
+            },
             enum: [
               {
                 label: 'xlsx',
@@ -75,12 +80,6 @@ const Export = (props: Props) => {
                 value: 'csv',
               },
             ],
-            'x-decorator': 'FormItem',
-            'x-component': 'Radio.Group',
-            'x-component-props': {
-              optionType: 'button',
-              buttonStyle: 'solid',
-            },
           },
         },
       },

+ 68 - 55
src/pages/device/Instance/Import/index.tsx

@@ -1,7 +1,7 @@
-import { FormItem, Select, FormLayout } from '@formily/antd';
+import { FormItem, FormLayout, Select } from '@formily/antd';
 import { createForm, onFieldValueChange } from '@formily/core';
 import { createSchemaField, FormProvider } from '@formily/react';
-import { Modal, Radio, Checkbox, Space, Upload, Button, Badge, message } from 'antd';
+import { Badge, Button, Checkbox, message, Modal, Radio, Space, Upload } from 'antd';
 import 'antd/lib/tree-select/style/index.less';
 import { useEffect, useState } from 'react';
 import { service } from '@/pages/device/Instance';
@@ -76,11 +76,50 @@ const downloadTemplate = (type: string, product: string) => {
 };
 
 const NormalUpload = (props: any) => {
+  const [importLoading, setImportLoading] = useState(false);
+  const [flag, setFlag] = useState<boolean>(true);
+  const [count, setCount] = useState<number>(0);
+  const [errMessage, setErrMessage] = useState<string>('');
+
+  const submitData = (fileUrl: string) => {
+    if (!!fileUrl) {
+      setCount(0);
+      setErrMessage('');
+      setFlag(true);
+      const autoDeploy = !!props?.fileType?.autoDeploy || false;
+      setImportLoading(true);
+      let dt = 0;
+      const source = new EventSourcePolyfill(
+        `/${SystemConst.API_BASE}/device/instance/${
+          props.product
+        }/import?fileUrl=${fileUrl}&autoDeploy=${autoDeploy}&:X_Access_Token=${Token.get()}`,
+      );
+      source.onmessage = (e: any) => {
+        const res = JSON.parse(e.data);
+        if (res.success) {
+          props.onChange(false);
+          const temp = res.result.total;
+          dt += temp;
+          setCount(dt);
+        } else {
+          setErrMessage(res.message);
+        }
+      };
+      source.onerror = () => {
+        setFlag(false);
+        source.close();
+      };
+      source.onopen = () => {};
+    } else {
+      message.error('请先上传文件');
+    }
+  };
   return (
     <div>
       <Space>
         <Upload
           action={`/${SystemConst.API_BASE}/file/static`}
+          accept={`.${props?.fileType?.fileType || 'xlsx'}`}
           headers={{
             'X-Access-Token': Token.get(),
           }}
@@ -88,7 +127,7 @@ const NormalUpload = (props: any) => {
             if (info.file.status === 'done') {
               message.success('上传成功');
               const resp: any = info.file.response || { result: '' };
-              props.onChange(resp?.result || '');
+              submitData(resp?.result || '');
             }
           }}
           showUploadList={false}
@@ -115,6 +154,17 @@ const NormalUpload = (props: any) => {
           </a>
         </div>
       </Space>
+      {importLoading && (
+        <div style={{ marginLeft: 20 }}>
+          {flag ? (
+            <Badge status="processing" text="进行中" />
+          ) : (
+            <Badge status="success" text="已完成" />
+          )}
+          <span style={{ marginLeft: 15 }}>总数量:{count}</span>
+          <p style={{ color: 'red' }}>{errMessage}</p>
+        </div>
+      )}
     </div>
   );
 };
@@ -122,10 +172,6 @@ const NormalUpload = (props: any) => {
 const Import = (props: Props) => {
   const { visible, close } = props;
   const [productList, setProductList] = useState<any[]>([]);
-  const [importLoading, setImportLoading] = useState(false);
-  const [flag, setFlag] = useState<boolean>(true);
-  const [count, setCount] = useState<number>(0);
-  const [errMessage, setErrMessage] = useState<string>('');
 
   const SchemaField = createSchemaField({
     components: {
@@ -157,12 +203,24 @@ const Import = (props: Props) => {
         form.setFieldState('*(fileType, upload)', (state) => {
           state.visible = !!field.value;
         });
-        form.setFieldState('*(fileType)', (state) => {
+        form.setFieldState('*(upload)', (state) => {
           state.componentProps = {
             product: field.value,
           };
         });
       });
+      onFieldValueChange('fileType', (field) => {
+        form.setFieldState('*(upload)', (state) => {
+          state.componentProps = {
+            fileType: field.value,
+          };
+        });
+      });
+      onFieldValueChange('upload', (field) => {
+        if (!field.value) {
+          close();
+        }
+      });
     },
   });
 
@@ -204,52 +262,18 @@ const Import = (props: Props) => {
     },
   };
 
-  const submitData = () => {
-    const values = form.getFormState().values;
-    if (!!values?.upload) {
-      setCount(0);
-      setErrMessage('');
-      setFlag(true);
-      const autoDeploy = !!values?.fileType?.autoDeploy || false;
-      setImportLoading(true);
-      let dt = 0;
-      const source = new EventSourcePolyfill(
-        `/${SystemConst.API_BASE}/device/instance/${values.product}/import?fileUrl=${
-          values?.upload
-        }&autoDeploy=${autoDeploy}&:X_Access_Token=${Token.get()}`,
-      );
-      source.onmessage = (e: any) => {
-        const res = JSON.parse(e.data);
-        if (res.success) {
-          close();
-          const temp = res.result.total;
-          dt += temp;
-          setCount(dt);
-        } else {
-          setErrMessage(res.message);
-        }
-      };
-      source.onerror = () => {
-        setFlag(false);
-        source.close();
-      };
-      source.onopen = () => {};
-    } else {
-      message.error('请先上传文件');
-    }
-  };
   return (
     <Modal
       visible={visible}
       onCancel={() => close()}
       width="35vw"
       title="导出"
-      onOk={() => submitData()}
+      onOk={() => close()}
       footer={[
         <Button key="cancel" onClick={() => close()}>
           取消
         </Button>,
-        <Button key="ok" type="primary" onClick={() => submitData()}>
+        <Button key="ok" type="primary" onClick={() => close()}>
           确认
         </Button>,
       ]}
@@ -259,17 +283,6 @@ const Import = (props: Props) => {
           <SchemaField schema={schema} />
         </FormProvider>
       </div>
-      {importLoading && (
-        <div style={{ marginLeft: 20 }}>
-          {flag ? (
-            <Badge status="processing" text="进行中" />
-          ) : (
-            <Badge status="success" text="已完成" />
-          )}
-          <span style={{ marginLeft: 15 }}>总数量:{count}</span>
-          <p style={{ color: 'red' }}>{errMessage}</p>
-        </div>
-      )}
     </Modal>
   );
 };

+ 4 - 2
src/pages/device/Instance/Process/index.tsx

@@ -1,5 +1,5 @@
-import { Modal, Badge } from 'antd';
-import { useState, useEffect } from 'react';
+import { Badge, Modal } from 'antd';
+import { useEffect, useState } from 'react';
 import { EventSourcePolyfill } from 'event-source-polyfill';
 
 interface Props {
@@ -7,9 +7,11 @@ interface Props {
   closeVisible: () => void;
   action: string;
 }
+
 interface State {
   source: any;
 }
+
 const Process = (props: Props) => {
   const initState: State = {
     source: {},

+ 2 - 2
src/pages/device/Instance/index.tsx

@@ -1,5 +1,6 @@
 import { PageContainer } from '@ant-design/pro-layout';
-import type { ProColumns, ActionType } from '@jetlinks/pro-table';
+import type { ActionType, ProColumns } from '@jetlinks/pro-table';
+import ProTable from '@jetlinks/pro-table';
 import type { DeviceInstance } from '@/pages/device/Instance/typings';
 import moment from 'moment';
 import { Badge, Button, Dropdown, Menu, message, Popconfirm, Tooltip } from 'antd';
@@ -23,7 +24,6 @@ import Save from './Save';
 import Export from './Export';
 import Import from './Import';
 import Process from './Process';
-import ProTable from '@jetlinks/pro-table';
 import encodeQuery from '@/utils/encodeQuery';
 import SearchComponent from '@/components/SearchComponent';
 import SystemConst from '@/utils/const';

+ 1 - 1
src/pages/device/Product/Detail/BaseInfo/index.tsx

@@ -1,5 +1,5 @@
 import { productModel, service } from '@/pages/device/Product';
-import { Descriptions, Button } from 'antd';
+import { Button, Descriptions } from 'antd';
 import { useState } from 'react';
 import { useParams } from 'umi';
 import { useIntl } from '@@/plugin-locale/localeExports';

+ 181 - 0
src/pages/device/Product/Detail/PropertyImport/index.tsx

@@ -0,0 +1,181 @@
+import { Modal } from 'antd';
+import MetadataModel from '@/pages/device/components/Metadata/Base/model';
+import { FormItem, FormLayout, Radio } from '@formily/antd';
+import { createForm, onFieldValueChange } from '@formily/core';
+import { createSchemaField, FormProvider } from '@formily/react';
+import { Button, message, Space, Upload } from 'antd';
+import 'antd/lib/tree-select/style/index.less';
+import { UploadOutlined } from '@ant-design/icons';
+import SystemConst from '@/utils/const';
+import Token from '@/utils/token';
+import { useParams } from 'umi';
+import { service } from '../..';
+
+const downloadTemplate = (type: string, productId: string) => {
+  const formElement = document.createElement('form');
+  formElement.style.display = 'display:none;';
+  formElement.method = 'GET';
+  formElement.action = `/${SystemConst.API_BASE}/device/product/${productId}/property-metadata/template.${type}`;
+  const inputElement = document.createElement('input');
+  inputElement.type = 'hidden';
+  inputElement.name = ':X_Access_Token';
+  inputElement.value = Token.get();
+  formElement.appendChild(inputElement);
+  document.body.appendChild(formElement);
+  formElement.submit();
+  document.body.removeChild(formElement);
+};
+
+const NormalUpload = (props: any) => {
+  const param = useParams<{ id: string }>();
+  console.log(props?.fileType);
+
+  return (
+    <div>
+      <Space>
+        <Upload
+          accept={`.${props?.fileType || 'xlsx'}`}
+          action={`/${SystemConst.API_BASE}/file/static`}
+          headers={{
+            'X-Access-Token': Token.get(),
+          }}
+          onChange={(info) => {
+            if (info.file.status === 'done') {
+              message.success('上传成功');
+              const resp: any = info.file.response || { result: '' };
+              service.importProductProperty(param.id, resp?.result).then(() => {
+                // 更新产品物模型属性信息
+              });
+            }
+          }}
+          showUploadList={false}
+        >
+          <Button icon={<UploadOutlined />}>上传文件</Button>
+        </Upload>
+        <div style={{ marginLeft: 20 }}>
+          下载模板
+          <a
+            style={{ marginLeft: 10 }}
+            onClick={() => {
+              downloadTemplate('xlsx', param?.id);
+            }}
+          >
+            .xlsx
+          </a>
+          <a
+            style={{ marginLeft: 10 }}
+            onClick={() => {
+              downloadTemplate('csv', param?.id);
+            }}
+          >
+            .csv
+          </a>
+        </div>
+      </Space>
+    </div>
+  );
+};
+
+const PropertyImport = () => {
+  const SchemaField = createSchemaField({
+    components: {
+      Radio,
+      FormItem,
+      FormLayout,
+      NormalUpload,
+    },
+  });
+
+  const form = createForm({
+    effects() {
+      onFieldValueChange('fileType', (field) => {
+        form.setFieldState('*(upload)', (state) => {
+          state.componentProps = {
+            fileType: field.value,
+          };
+        });
+      });
+    },
+  });
+
+  const schema = {
+    type: 'object',
+    properties: {
+      layout: {
+        type: 'void',
+        'x-component': 'FormLayout',
+        'x-component-props': {
+          labelCol: 4,
+          wrapperCol: 18,
+          labelAlign: 'right',
+        },
+        properties: {
+          fileType: {
+            title: '文件格式',
+            'x-decorator': 'FormItem',
+            'x-component': 'Radio.Group',
+            default: 'xlsx',
+            'x-component-props': {
+              buttonStyle: 'solid',
+              optionType: 'button',
+            },
+            enum: [
+              {
+                label: 'xlsx',
+                value: 'xlsx',
+              },
+              {
+                label: 'csv',
+                value: 'csv',
+              },
+            ],
+          },
+          upload: {
+            type: 'string',
+            title: '文件上传',
+            'x-decorator': 'FormItem',
+            'x-component': 'NormalUpload',
+          },
+        },
+      },
+    },
+  };
+
+  return (
+    <Modal
+      visible
+      onCancel={() => close()}
+      width="35vw"
+      title="导入属性"
+      onOk={() => {
+        MetadataModel.importMetadata = false;
+      }}
+      footer={[
+        <Button
+          key="cancel"
+          onClick={() => {
+            MetadataModel.importMetadata = false;
+          }}
+        >
+          取消
+        </Button>,
+        <Button
+          key="ok"
+          type="primary"
+          onClick={() => {
+            MetadataModel.importMetadata = false;
+          }}
+        >
+          确认
+        </Button>,
+      ]}
+    >
+      <div style={{ marginTop: '20px' }}>
+        <FormProvider form={form}>
+          <SchemaField schema={schema} />
+        </FormProvider>
+      </div>
+    </Modal>
+  );
+};
+export default PropertyImport;

+ 5 - 5
src/pages/device/Product/Detail/index.tsx

@@ -1,16 +1,16 @@
 import { PageContainer } from '@ant-design/pro-layout';
-import { history, useParams, Link } from 'umi';
+import { history, Link, useParams } from 'umi';
 import {
+  Badge,
   Button,
   Card,
   Descriptions,
-  Space,
-  Tabs,
-  Badge,
   message,
+  Space,
   Spin,
-  Tooltip,
   Switch,
+  Tabs,
+  Tooltip,
 } from 'antd';
 import BaseInfo from '@/pages/device/Product/Detail/BaseInfo';
 import { observer } from '@formily/react';

+ 1 - 1
src/pages/device/Product/Save/index.tsx

@@ -1,7 +1,7 @@
 import { message, Modal } from 'antd';
 import type { Field } from '@formily/core';
 import { createForm, onFieldValueChange } from '@formily/core';
-import { TreeSelect, Form, FormItem, FormLayout, Input, Radio, Select } from '@formily/antd';
+import { Form, FormItem, FormLayout, Input, Radio, Select, TreeSelect } from '@formily/antd';
 import { createSchemaField } from '@formily/react';
 import type { ISchema } from '@formily/json-schema';
 import FUpload from '@/components/Upload';

+ 9 - 0
src/pages/device/Product/service.ts

@@ -133,6 +133,15 @@ class Service extends BaseService<ProductItem> {
     request(`/${SystemConst.API_BASE}/protocol/${protocol}/transports`, {
       method: 'GET',
     });
+
+  //上传物模型属性
+  public importProductProperty = (productId: string, fileUrl: string) =>
+    request(
+      `/${SystemConst.API_BASE}/device/product/${productId}/property-metadata/import?fileUrl=${fileUrl}`,
+      {
+        method: 'POST',
+      },
+    );
 }
 
 export default Service;

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

@@ -67,13 +67,13 @@ const Edit = observer((props: Props) => {
     },
     events: {
       title: intl.formatMessage({
-        id: 'pages.device.productDetail.metadata.inputParameter',
+        id: 'pages.device.productDetail.metadata.outputParameters',
         defaultMessage: '输出参数',
       }),
     },
     functions: {
       title: intl.formatMessage({
-        id: 'pages.device.productDetail.metadata.inputParameter',
+        id: 'pages.device.productDetail.metadata.outputParameters',
         defaultMessage: '输出参数',
       }),
     },
@@ -613,7 +613,8 @@ const Edit = observer((props: Props) => {
   };
   const createTagSchema = () => {
     const temp = _.cloneDeep(propertySchema) as any;
-    delete temp.properties?.expands.properties.readOnly;
+    delete temp.properties?.expands.properties.configConfig;
+    delete temp.properties?.expands.properties.source;
     return temp;
   };
   const metadataTypeMapping: Record<string, { name: string; schema: ISchema }> = {
@@ -636,12 +637,15 @@ const Edit = observer((props: Props) => {
   };
 
   const getUnit = () =>
-    service.getUnit().then((resp) =>
-      resp.result.map((item: any) => ({
+    service.getUnit().then((resp) => {
+      const _data = resp.result.map((item: any) => ({
         label: item.description,
         value: item.id,
-      })),
-    );
+      }));
+      // 缓存单位数据
+      Store.set('units', _data);
+      return _data;
+    });
 
   const getStreamingAggType = () =>
     service.getStreamingAggType().then((resp) =>

+ 29 - 7
src/pages/device/components/Metadata/Base/index.tsx

@@ -5,14 +5,15 @@ import { useParams } from 'umi';
 import DB from '@/db';
 import type { MetadataItem, MetadataType } from '@/pages/device/Product/typings';
 import MetadataMapping from './columns';
-import { Button, message, Popconfirm, Tooltip } from 'antd';
-import { EditOutlined, MinusOutlined, PlusOutlined } from '@ant-design/icons';
+import { Button, Popconfirm, Tooltip } from 'antd';
+import { DeleteOutlined, EditOutlined, ImportOutlined, PlusOutlined } from '@ant-design/icons';
 import Edit from './Edit';
 import { observer } from '@formily/react';
 import MetadataModel from './model';
 import { Store } from 'jetlinks-store';
 import SystemConst from '@/utils/const';
 import { useIntl } from '@@/plugin-locale/localeExports';
+import PropertyImport from '@/pages/device/Product/Detail/PropertyImport';
 
 interface Props {
   type: MetadataType;
@@ -50,7 +51,7 @@ const BaseMetadata = observer((props: Props) => {
         <a key="delete">
           <Popconfirm title="确认删除?" onConfirm={async () => {}}>
             <Tooltip title="删除">
-              <MinusOutlined />
+              <DeleteOutlined />
             </Tooltip>
           </Popconfirm>
         </a>,
@@ -75,6 +76,19 @@ const BaseMetadata = observer((props: Props) => {
     });
     return () => subscription.unsubscribe();
   }, []);
+
+  const handleSearch = async (name: string) => {
+    if (name) {
+      const result = await DB.getDB()
+        .table(`${type}`)
+        .where('id')
+        .startsWithAnyOfIgnoreCase(name)
+        .toArray();
+      setData(result);
+    } else {
+      await initData();
+    }
+  };
   return (
     <>
       <ProTable
@@ -96,15 +110,22 @@ const BaseMetadata = observer((props: Props) => {
         }}
         toolbar={{
           search: {
-            onSearch: async (value) => {
-              // Todo 物模型属性搜索
-              message.success(value);
-            },
+            onSearch: handleSearch,
           },
         }}
         toolBarRender={() => [
           <Button
             onClick={() => {
+              MetadataModel.importMetadata = true;
+            }}
+            key="button"
+            icon={<ImportOutlined />}
+            type="ghost"
+          >
+            导入属性
+          </Button>,
+          <Button
+            onClick={() => {
               MetadataModel.edit = true;
               MetadataModel.item = undefined;
               MetadataModel.type = type;
@@ -121,6 +142,7 @@ const BaseMetadata = observer((props: Props) => {
           </Button>,
         ]}
       />
+      {MetadataModel.importMetadata && <PropertyImport />}
       {MetadataModel.edit && <Edit type={target} />}
     </>
   );

+ 2 - 0
src/pages/device/components/Metadata/Base/model.ts

@@ -7,6 +7,7 @@ type MetadataModelType = {
   type: MetadataType;
   action: 'edit' | 'add';
   import: boolean;
+  importMetadata: boolean;
 };
 const MetadataModel = model<MetadataModelType>({
   item: undefined,
@@ -14,5 +15,6 @@ const MetadataModel = model<MetadataModelType>({
   type: 'events',
   action: 'add',
   import: false,
+  importMetadata: false,
 });
 export default MetadataModel;

+ 6 - 11
src/pages/device/components/Metadata/Import/index.tsx

@@ -1,4 +1,4 @@
-import { Button, Drawer, message } from 'antd';
+import { message, Modal } from 'antd';
 import { createSchemaField } from '@formily/react';
 import type { Field } from '@formily/core';
 import { createForm } from '@formily/core';
@@ -124,6 +124,7 @@ const Import = (props: Props) => {
               accept: '.json',
               formatOnType: true,
               formatOnPaste: true,
+              type: 'file',
               beforeUpload: (file: any) => {
                 const reader = new FileReader();
                 reader.readAsText(file);
@@ -182,18 +183,12 @@ const Import = (props: Props) => {
     message.success('导入成功');
   };
   return (
-    <Drawer
+    <Modal
       title="导入物模型"
       destroyOnClose
       visible={props.visible}
-      onClose={() => props.close()}
-      extra={
-        <Space>
-          <Button type="primary" onClick={handleImport}>
-            确定
-          </Button>
-        </Space>
-      }
+      onCancel={() => props.close()}
+      onOk={handleImport}
     >
       <div style={{ background: 'rgb(236, 237, 238)' }}>
         <p style={{ padding: 10 }}>
@@ -213,7 +208,7 @@ const Import = (props: Props) => {
       <Form form={form} layout="vertical">
         <SchemaField scope={{ loadData }} schema={schema} />
       </Form>
-    </Drawer>
+    </Modal>
   );
 };
 

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

@@ -1,5 +1,5 @@
 // 资产-产品分类-绑定
-import type { ProColumns, ActionType } from '@jetlinks/pro-table';
+import type { ActionType, ProColumns } from '@jetlinks/pro-table';
 import ProTable from '@jetlinks/pro-table';
 import { DeviceBadge, service } from './index';
 import { message, Modal } from 'antd';

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

@@ -1,8 +1,8 @@
 // 资产分配-产品分类
-import ProTable from '@jetlinks/pro-table';
 import type { ActionType, ProColumns } from '@jetlinks/pro-table';
+import ProTable from '@jetlinks/pro-table';
 import { useIntl } from '@@/plugin-locale/localeExports';
-import { Button, message, Popconfirm, Tooltip, Badge } from 'antd';
+import { Badge, Button, message, Popconfirm, Tooltip } from 'antd';
 import { useRef, useState } from 'react';
 import { useParams } from 'umi';
 import { observer } from '@formily/react';

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

@@ -1,5 +1,5 @@
 // 资产-产品分类-绑定
-import type { ProColumns, ActionType } from '@jetlinks/pro-table';
+import type { ActionType, ProColumns } from '@jetlinks/pro-table';
 import ProTable from '@jetlinks/pro-table';
 import { service } from './index';
 import { message, Modal } from 'antd';

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

@@ -1,6 +1,6 @@
 // 资产分配-产品分类
-import ProTable from '@jetlinks/pro-table';
 import type { ActionType, ProColumns } from '@jetlinks/pro-table';
+import ProTable from '@jetlinks/pro-table';
 import { useIntl } from '@@/plugin-locale/localeExports';
 import { Button, message, Popconfirm, Tooltip } from 'antd';
 import { useRef, useState } from 'react';

+ 4 - 4
src/pages/system/Department/Assets/productCategory/bind.tsx

@@ -1,11 +1,11 @@
 // 资产-产品分类-绑定
-import type { ProColumns, ActionType } from '@jetlinks/pro-table';
+import type { ActionType, ProColumns } from '@jetlinks/pro-table';
 import ProTable from '@jetlinks/pro-table';
-import { service, getTableKeys } from './index';
-import { Modal, message } from 'antd';
+import { getTableKeys, service } from './index';
+import { message, Modal } from 'antd';
 import { useParams } from 'umi';
 import Models from './model';
-import { useRef, useState, useEffect } from 'react';
+import { useEffect, useRef, useState } from 'react';
 import { observer } from '@formily/react';
 import { useIntl } from '@@/plugin-locale/localeExports';
 import type { ProductCategoryItem } from '@/pages/system/Department/typings';

+ 2 - 2
src/pages/system/Department/Assets/productCategory/index.tsx

@@ -1,8 +1,8 @@
 // 资产分配-产品分类
-import ProTable from '@jetlinks/pro-table';
 import type { ActionType, ProColumns } from '@jetlinks/pro-table';
+import ProTable from '@jetlinks/pro-table';
 import { useIntl } from '@@/plugin-locale/localeExports';
-import { Button, Popconfirm, Tooltip, message } from 'antd';
+import { Button, message, Popconfirm, Tooltip } from 'antd';
 import { useRef, useState } from 'react';
 import { useParams } from 'umi';
 import { observer } from '@formily/react';

+ 1 - 1
src/pages/system/Department/Member/bind.tsx

@@ -1,5 +1,5 @@
 // 部门-用户绑定
-import type { ProColumns, ActionType } from '@jetlinks/pro-table';
+import type { ActionType, ProColumns } from '@jetlinks/pro-table';
 import ProTable from '@jetlinks/pro-table';
 import { service } from '@/pages/system/Department/Member';
 import { message, Modal } from 'antd';

+ 2 - 2
src/pages/system/Department/Member/index.tsx

@@ -1,7 +1,7 @@
 // 部门-用户管理
 import { PageContainer } from '@ant-design/pro-layout';
-import ProTable from '@jetlinks/pro-table';
 import type { ActionType, ProColumns } from '@jetlinks/pro-table';
+import ProTable from '@jetlinks/pro-table';
 import { useIntl } from '@@/plugin-locale/localeExports';
 import { Badge, Button, message, Popconfirm, Tooltip } from 'antd';
 import { useRef, useState } from 'react';
@@ -10,7 +10,7 @@ import { observer } from '@formily/react';
 import MemberModel from '@/pages/system/Department/Member/model';
 import type { MemberItem } from '@/pages/system/Department/typings';
 import Service from '@/pages/system/Department/Member/service';
-import { PlusOutlined, DisconnectOutlined } from '@ant-design/icons';
+import { DisconnectOutlined, PlusOutlined } from '@ant-design/icons';
 import Bind from './bind';
 import SearchComponent from '@/components/SearchComponent';
 

+ 1 - 1
src/pages/system/Role/Edit/Permission/DataPermission.tsx

@@ -28,7 +28,7 @@ const DataPermission = (props: Props) => {
   useEffect(() => {
     if (typeList.length > 0) {
       typeList.map((item) => {
-        service.queryDimensionsList(item.id).subscribe((resp) => {
+        service.queryAssetsList(item.id).subscribe((resp) => {
           if (resp.status === 200) {
             dimensionsList[item.id] = resp.result;
             setDimensionsList({ ...dimensionsList });

+ 2 - 2
src/pages/system/Role/service.ts

@@ -41,10 +41,10 @@ class Service extends BaseService<RoleItem> {
         }),
       ),
     ).pipe(map((item) => item));
-  queryDimensionsList = (type: string) =>
+  queryAssetsList = (type: string) =>
     defer(() =>
       from(
-        request(`/${SystemConst.API_BASE}/asset/${type}/dimensions`, {
+        request(`/${SystemConst.API_BASE}/assets/access-support/${type}`, {
           method: 'GET',
         }),
       ),

+ 24 - 0
yarn.lock

@@ -383,6 +383,20 @@
     react-sortable-hoc "^2.0.0"
     swr "^1.2.0"
 
+"@ant-design/pro-utils@1.35.2":
+  version "1.35.2"
+  resolved "https://registry.npmmirror.com/@ant-design/pro-utils/-/pro-utils-1.35.2.tgz#789b4c5d4d63085e02ab24c2ae68c6084bc9a8f1"
+  integrity sha512-LZfMr821QHD54A9PyRKRl2Xy4FYxJ9gIXMrq4kqTJMBeZr9W7xkx2ZjoeFJqFKnrY3xAf1GzRgz1dMO+VIbc3g==
+  dependencies:
+    "@ant-design/icons" "^4.3.0"
+    "@ant-design/pro-provider" "1.6.0"
+    "@babel/runtime" "^7.16.3"
+    classnames "^2.2.6"
+    moment "^2.27.0"
+    rc-util "^5.0.6"
+    react-sortable-hoc "^2.0.0"
+    swr "^1.2.0"
+
 "@ant-design/react-slick@~0.28.1":
   version "0.28.4"
   resolved "https://registry.npmjs.org/@ant-design/react-slick/-/react-slick-0.28.4.tgz#8b296b87ad7c7ae877f2a527b81b7eebd9dd29a9"
@@ -3332,6 +3346,11 @@
   resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.41.tgz#fd90754150b57432b72bf560530500597ff04421"
   integrity sha512-rIAmXyJlqw4KEBO7+u9gxZZSQHaCNnIzYrnNmYVpgfJhxTqO0brCX0SYpqUTkVI5mwwUwzmtspLBGBKroMeynA==
 
+"@types/event-source-polyfill@^1.0.0":
+  version "1.0.0"
+  resolved "https://registry.npmmirror.com/@types/event-source-polyfill/-/event-source-polyfill-1.0.0.tgz#f93f13433f750c8ea0e3cfa69c72e3c7393e0585"
+  integrity sha512-b8O8/rg7NIW0iJ8i9MNDBZqPljHA+b7AjC3QFqH3dSyW6vgrl3oBgyIv5dw2fibh5enHHDkkPZG5PHza7U4NRw==
+
 "@types/express-serve-static-core@^4.17.18":
   version "4.17.28"
   resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz#c47def9f34ec81dc6328d0b1b5303d1ec98d86b8"
@@ -7885,6 +7904,11 @@ event-emitter@^0.3.5:
     d "1"
     es5-ext "~0.10.14"
 
+event-source-polyfill@^1.0.25:
+  version "1.0.25"
+  resolved "https://registry.npmmirror.com/event-source-polyfill/-/event-source-polyfill-1.0.25.tgz#d8bb7f99cb6f8119c2baf086d9f6ee0514b6d9c8"
+  integrity sha512-hQxu6sN1Eq4JjoI7ITdQeGGUN193A2ra83qC0Ltm9I2UJVAten3OFVN6k5RX4YWeCS0BoC8xg/5czOCIHVosQg==
+
 eventemitter3@^4.0.0, eventemitter3@^4.0.4:
   version "4.0.7"
   resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f"