Prechádzať zdrojové kódy

feat(merge): merge xyh

Next xyh
Lind 3 rokov pred
rodič
commit
871edc6450

+ 11 - 0
src/app.tsx

@@ -13,6 +13,7 @@ import ReconnectingWebSocket from 'reconnecting-websocket';
 import SystemConst from '@/utils/const';
 import { service as MenuService } from '@/pages/system/Menu';
 import getRoutes, { getMenus, handleRoutes, saveMenusCache } from '@/utils/menu';
+import { AIcon } from '@/components';
 
 const isDev = process.env.NODE_ENV === 'development';
 const loginPath = '/user/login';
@@ -195,6 +196,16 @@ export const layout: RunTimeLayoutConfig = ({ initialState }) => {
     menuDataRender: () => {
       return getMenus(extraRoutes);
     },
+    menuItemRender: (menuItemProps) => {
+      return (
+        <Link to={menuItemProps.path}>
+          <span className={`antd-pro-menu-item`}>
+            {menuItemProps.icon && <AIcon type={menuItemProps.icon as string} />}
+            <span className={`antd-pro-menu-item-title`}>{menuItemProps.name}</span>
+          </span>
+        </Link>
+      );
+    },
     links: isDev
       ? [
           <Link key={1} to="/umi/plugin/openapi" target="_blank">

+ 3 - 3
src/components/ProTableCard/index.less

@@ -127,7 +127,7 @@
         justify-content: center;
         width: 100px;
         padding: 2px 0;
-        background-color: @info-color-deprecated-bg;
+        background-color: rgba(#5995f5, 0.15);
         transform: skewX(45deg);
 
         &.success {
@@ -135,11 +135,11 @@
         }
 
         &.warning {
-          background-color: @warning-color-deprecated-bg;
+          background-color: rgba(#ff9000, 0.1);
         }
 
         &.error {
-          background-color: @error-color-deprecated-bg;
+          background-color: rgba(#e50012, 0.1);
         }
 
         .card-state-content {

+ 11 - 5
src/pages/device/Instance/index.tsx

@@ -18,8 +18,8 @@ import {
 } from '@ant-design/icons';
 import {model} from '@formily/reactive';
 import Service from '@/pages/device/Instance/service';
-import type {MetadataItem} from '@/pages/device/Product/typings';
-import {useIntl} from '@@/plugin-locale/localeExports';
+import type { MetadataItem } from '@/pages/device/Product/typings';
+import { useIntl, useLocation } from 'umi';
 import Save from './Save';
 import Export from './Export';
 import Import from './Import';
@@ -29,7 +29,10 @@ import {ProTableCard} from '@/components';
 import SystemConst from '@/utils/const';
 import Token from '@/utils/token';
 import DeviceCard from '@/components/ProTableCard/CardItems/device';
-import {getButtonPermission, getMenuPathByParams, MENUS_CODE} from '@/utils/menu';
+
+import { getButtonPermission, getMenuPathByParams, MENUS_CODE } from '@/utils/menu';
+import { withRouter } from 'react-router-dom';
+
 
 export const statusMap = new Map();
 statusMap.set('在线', 'success');
@@ -54,7 +57,7 @@ export const InstanceModel = model<{
   params: new Set<string>(['test']),
 });
 export const service = new Service('device-instance');
-const Instance = () => {
+const Instance = (props: any) => {
   const actionRef = useRef<ActionType>();
   const [visible, setVisible] = useState<boolean>(false);
   const [exportVisible, setExportVisible] = useState<boolean>(false);
@@ -67,6 +70,9 @@ const Instance = () => {
   const [bindKeys, setBindKeys] = useState<any[]>([]);
   const history = useHistory<Record<string, string>>();
   const intl = useIntl();
+  const location = useLocation();
+
+  console.log(location, props.location.query);
 
   const tools = (record: DeviceInstance) => [
     <Button
@@ -593,4 +599,4 @@ const Instance = () => {
     </PageContainer>
   );
 };
-export default Instance;
+export default withRouter(Instance);

+ 10 - 9
src/pages/device/Product/Detail/index.tsx

@@ -1,5 +1,5 @@
 import { PageContainer } from '@ant-design/pro-layout';
-import { history, Link, useLocation, useParams } from 'umi';
+import { history, useLocation, useParams } from 'umi';
 import {
   Badge,
   Button,
@@ -203,16 +203,17 @@ const ProductDetail = observer(() => {
         <Spin spinning={loading}>
           <Descriptions size="small" column={2}>
             <Descriptions.Item label={'设备数量'}>
-              <Link
-                to={
-                  getMenuPathByCode(MENUS_CODE['device/Instance']) +
-                  '?productId=' +
-                  productModel.current?.id
-                }
+              <Button
+                type={'link'}
+                style={{ padding: 0, height: 'auto' }}
+                onClick={() => {
+                  history.push(getMenuPathByCode(MENUS_CODE['device/Instance']), {
+                    productId: productModel.current?.id,
+                  });
+                }}
               >
-                {' '}
                 {productModel.current?.count || 0}
-              </Link>
+              </Button>
             </Descriptions.Item>
           </Descriptions>
         </Spin>

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

@@ -1,14 +1,14 @@
-import {message, Modal} from 'antd';
-import {createSchemaField} from '@formily/react';
-import type {Field} from '@formily/core';
-import {createForm} from '@formily/core';
-import {Form, FormItem, Input, Select, Space} from '@formily/antd';
-import type {ISchema} from '@formily/json-schema';
+import { message, Modal } from 'antd';
+import { createSchemaField } from '@formily/react';
+import type { Field } from '@formily/core';
+import { createForm } from '@formily/core';
+import { Form, FormItem, Input, Select, Space } from '@formily/antd';
+import type { ISchema } from '@formily/json-schema';
 import FMonacoEditor from '@/components/FMonacoEditor';
 import FUpload from '@/components/Upload';
-import {service} from '@/pages/device/Product';
-import {useParams} from 'umi';
-import {Store} from 'jetlinks-store';
+import { service } from '@/pages/device/Product';
+import { useParams } from 'umi';
+import { Store } from 'jetlinks-store';
 import SystemConst from '@/utils/const';
 
 interface Props {
@@ -36,7 +36,7 @@ const Import = (props: Props) => {
   const loadData = () => async (field: Field) => {
     field.loading = true;
     const product = (await service.queryNoPagingPost({
-      terms: [{column: 'id$not', value: param.id}],
+      terms: [{ column: 'id$not', value: param.id }],
     })) as any;
     field.dataSource = product.result.map((item: any) => ({
       label: item.name,
@@ -54,8 +54,8 @@ const Import = (props: Props) => {
         'x-decorator': 'FormItem',
         'x-component': 'Select',
         enum: [
-          {label: '拷贝产品', value: 'copy'},
-          {label: '导入物模型', value: 'import'},
+          { label: '拷贝产品', value: 'copy' },
+          { label: '导入物模型', value: 'import' },
         ],
       },
       copy: {
@@ -181,14 +181,14 @@ const Import = (props: Props) => {
     if (data.metadata === 'alink') {
       service.convertMetadata('to', 'alink', data.import).subscribe({
         next: async (meta) => {
-          await service.modify(param.id, {metadata: JSON.stringify(meta)});
+          await service.modify(param.id, { metadata: JSON.stringify(meta) });
         },
         error: () => {
           message.error('发生错误!');
         },
       });
     } else {
-      await service.modify(param.id, {metadata: data[data.type]});
+      await service.modify(param.id, { metadata: data[data.type] });
     }
     Store.set(SystemConst.GET_METADATA, true);
     message.success('导入成功');
@@ -203,11 +203,11 @@ const Import = (props: Props) => {
       onCancel={() => props.close()}
       onOk={handleImport}
     >
-      <div style={{background: 'rgb(236, 237, 238)'}}>
-        <p style={{padding: 10}}>
-          <span style={{color: '#f5222d'}}>注</span>
+      <div style={{ background: 'rgb(236, 237, 238)' }}>
+        <p style={{ padding: 10 }}>
+          <span style={{ color: '#f5222d' }}>注</span>
           :导入的物模型会覆盖原来的属性、功能、事件、标签,请谨慎操作。
-          <br/>
+          <br />
           物模型格式请参考文档:
           <a
             rel="noopener noreferrer"
@@ -219,7 +219,7 @@ const Import = (props: Props) => {
         </p>
       </div>
       <Form form={form} layout="vertical">
-        <SchemaField scope={{loadData}} schema={schema}/>
+        <SchemaField scope={{ loadData }} schema={schema} />
       </Form>
     </Modal>
   );

+ 1 - 1
src/pages/media/Device/Channel/index.tsx

@@ -138,7 +138,7 @@ export default () => {
             <EditOutlined />
           </Button>
         </Tooltip>,
-        <Tooltip key={'live'} title={'播'}>
+        <Tooltip key={'live'} title={'播'}>
           <a
             onClick={() => {
               setChannelId(record.channelId);

+ 1 - 0
src/pages/media/Device/index.tsx

@@ -158,6 +158,7 @@ const Device = () => {
           text={record.state.text}
         />
       ),
+      valueType: 'select',
       valueEnum: {
         offline: {
           text: intl.formatMessage({

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

@@ -118,7 +118,7 @@ const Bind = observer((props: Props) => {
       visible={props.visible}
       onOk={handleBind}
       onCancel={props.onCancel}
-      width={990}
+      width={1300}
       title="绑定"
     >
       <PermissionModal

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

@@ -71,7 +71,7 @@ const Bind = observer((props: Props) => {
       visible={props.visible}
       onOk={handleBind}
       onCancel={props.onCancel}
-      width={990}
+      width={1300}
       title="绑定"
     >
       <PermissionModal

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

@@ -71,7 +71,7 @@ const Bind = observer((props: Props) => {
       visible={props.visible}
       onOk={handleBind}
       onCancel={props.onCancel}
-      width={990}
+      width={1300}
       title="绑定"
     >
       <PermissionModal

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

@@ -73,7 +73,7 @@ const Bind = observer((props: Props) => {
       visible={props.visible}
       onOk={handleBind}
       onCancel={props.onCancel}
-      width={990}
+      width={1300}
       title="绑定"
     >
       <SearchComponent<UserItem>