Explorar el Código

Merge xyh

Next xyh
XieYongHong hace 3 años
padre
commit
c04be06ab2
Se han modificado 32 ficheros con 117 adiciones y 68 borrados
  1. 4 4
      config/proxy.ts
  2. 3 3
      src/components/AMapComponent/hooks/Distance.tsx
  3. 1 1
      src/components/ProTableCard/CardItems/duerOs.tsx
  4. 1 0
      src/hooks/websocket/useSendWebsocketMessage.ts
  5. 16 8
      src/hooks/websocket/useWebSocket.ts
  6. 5 0
      src/pages/Northbound/DuerOS/types.d.ts
  7. 3 7
      src/pages/notice/Template/Detail/doc/DingTalk.tsx
  8. 1 1
      src/pages/rule-engine/DashBoard/index.tsx
  9. 2 0
      src/pages/rule-engine/Scene/Save/action/VariableItems/builtIn.tsx
  10. 2 0
      src/pages/rule-engine/Scene/Save/action/VariableItems/org.tsx
  11. 2 0
      src/pages/rule-engine/Scene/Save/action/VariableItems/tag.tsx
  12. 2 0
      src/pages/rule-engine/Scene/Save/action/VariableItems/user.tsx
  13. 2 0
      src/pages/rule-engine/Scene/Save/action/device/WriteProperty/index.tsx
  14. 2 0
      src/pages/rule-engine/Scene/Save/action/device/deviceModal.tsx
  15. 2 0
      src/pages/rule-engine/Scene/Save/action/device/readProperty.tsx
  16. 2 0
      src/pages/rule-engine/Scene/Save/action/device/relationSelect.tsx
  17. 2 0
      src/pages/rule-engine/Scene/Save/action/device/tagModal.tsx
  18. 2 0
      src/pages/rule-engine/Scene/Save/components/InputUpload/index.tsx
  19. 2 1
      src/pages/rule-engine/Scene/Save/components/TimeSelect/index.tsx
  20. 2 0
      src/pages/rule-engine/Scene/Save/components/TimingTrigger/RangePicker.tsx
  21. 2 0
      src/pages/rule-engine/Scene/Save/components/TimingTrigger/TimePicker.tsx
  22. 8 1
      src/pages/rule-engine/Scene/Save/trigger/OrgTreeSelect.tsx
  23. 2 0
      src/pages/rule-engine/Scene/Save/trigger/operation.tsx
  24. 1 1
      src/pages/system/Department/Assets/product/index.tsx
  25. 1 8
      src/pages/system/Department/Member/bind.tsx
  26. 0 3
      src/pages/system/Department/Member/index.tsx
  27. 2 3
      src/pages/system/Menu/Detail/buttons.tsx
  28. 0 1
      src/pages/system/Menu/Setting/baseMenu.ts
  29. 4 4
      src/pages/system/Menu/Setting/index.tsx
  30. 26 17
      src/pages/system/Menu/Setting/tree.tsx
  31. 8 1
      src/pages/system/Menu/index.tsx
  32. 5 4
      src/pages/user/Login/service.ts

+ 4 - 4
config/proxy.ts

@@ -12,11 +12,11 @@ export default {
       // target: 'http://192.168.32.28:8844/',
       // ws: 'ws://192.168.32.28:8844/',
       // 开发环境
-      target: 'http://120.79.18.123:8844/',
-      ws: 'ws://120.79.18.123:8844/',
+      // target: 'http://120.79.18.123:8844/',
+      // ws: 'ws://120.79.18.123:8844/',
       // 测试环境
-      // target: 'http://120.77.179.54:8844/',
-      // ws: 'ws://120.77.179.54:8844/',
+      target: 'http://120.77.179.54:8844/',
+      ws: 'ws://120.77.179.54:8844/',
       // target: 'http://192.168.66.5:8844/',
       // ws: 'ws://192.168.66.5:8844/',
       // ws: 'ws://demo.jetlinks.cn/jetlinks',

+ 3 - 3
src/components/AMapComponent/hooks/Distance.tsx

@@ -4,9 +4,9 @@ const useDistance = () => {
   const [distance, setDistance] = useState(0);
 
   const onDistance = (data: number[][]) => {
-    if (window.AMap && data && data.length >= 2) {
-      const pointArr = data.map((point) => new window.AMap.LngLat(point[0], point[1]));
-      const distanceOfLine = AMap.GeometryUtil.distanceOfLine(pointArr);
+    if ((window as any).AMap && data && data.length >= 2) {
+      const pointArr = data.map((point) => new (window as any).AMap.LngLat(point[0], point[1]));
+      const distanceOfLine = (window as any).AMap.GeometryUtil.distanceOfLine(pointArr);
       setDistance(Math.round(distanceOfLine));
     }
   };

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

@@ -2,7 +2,7 @@ import React from 'react';
 import { Ellipsis, TableCard } from '@/components';
 import '@/style/common.less';
 import '../index.less';
-import { DuerOSItem } from '@/pages/cloud/DuerOS/typings';
+import { DuerOSItem } from '@/pages/Northbound/DuerOS/types';
 import { StatusColorEnum } from '@/components/BadgeStatus';
 
 export interface DuerOSProps extends DuerOSItem {

+ 1 - 0
src/hooks/websocket/useSendWebsocketMessage.ts

@@ -30,6 +30,7 @@ export const useSendWebsocketMessage = () => {
     if (data.type === 'error') {
       notification.error({ key: 'websocket-error', message: data.message });
     }
+
     if (subscribeList[data.requestId]) {
       if (data.type === 'complete') {
         subscribeList[data.requestId].forEach((element: any) => {

+ 16 - 8
src/hooks/websocket/useWebSocket.ts

@@ -46,7 +46,8 @@ export default function useWebSocket(socketUrl: string, options: Options = {}):
   const reconnectTimerRef = useRef<NodeJS.Timeout>(); // 计时器
   const websocketRef = useRef<WebSocket>();
   const lockReconnect = useRef(false); // 避免重复连接
-  const isReconnect = useRef(false);
+  const isReconnect = useRef(false); //
+  const readyStateRef = useRef<number>(ReadyState.Closed);
 
   const [latestMessage, setLatestMessage] = useState<WebSocketEventMap['message']>();
   const [readyState, setReadyState] = useState<ReadyState>(ReadyState.Closed);
@@ -55,6 +56,7 @@ export default function useWebSocket(socketUrl: string, options: Options = {}):
     const ws = Store.get(SystemConst.GLOBAL_WEBSOCKET) as WebSocket;
     if (ws) {
       setReadyState(ws?.readyState);
+      readyStateRef.current = ws?.readyState;
     } else {
       // if (reconnectTimerRef.current) clearTimeout(reconnectTimerRef.current);
 
@@ -73,16 +75,18 @@ export default function useWebSocket(socketUrl: string, options: Options = {}):
           reconnect();
           onError?.(event);
           setReadyState(websocketRef.current?.readyState || ReadyState.Closed);
+          readyStateRef.current = websocketRef.current?.readyState || ReadyState.Closed;
         };
         websocketRef.current.onopen = (event) => {
           if (isReconnect.current && onReconnect) {
             // 是否为重连
             onReconnect();
-            return
+            return;
           }
           onOpen?.(event);
           reconnectTimesRef.current = 0;
           setReadyState(websocketRef.current?.readyState || ReadyState.Closed);
+          readyStateRef.current = websocketRef.current?.readyState || ReadyState.Closed;
         };
         websocketRef.current.onmessage = (message: WebSocketEventMap['message']) => {
           onMessage?.(message);
@@ -94,6 +98,7 @@ export default function useWebSocket(socketUrl: string, options: Options = {}):
           reconnect();
           onClose?.(event);
           setReadyState(websocketRef.current?.readyState || ReadyState.Closed);
+          readyStateRef.current = websocketRef.current?.readyState || ReadyState.Closed;
           Store.set(SystemConst.GLOBAL_WEBSOCKET, null);
         };
         Store.set(SystemConst.GLOBAL_WEBSOCKET, websocketRef.current);
@@ -143,16 +148,19 @@ export default function useWebSocket(socketUrl: string, options: Options = {}):
   const sendMessage: WebSocket['send'] = usePersistFn((message) => {
     const ws = Store.get(SystemConst.GLOBAL_WEBSOCKET) as WebSocket;
     setReadyState(ws?.readyState);
-    if (readyState === ReadyState.Open) {
+    readyStateRef.current = ws?.readyState;
+
+    if (readyStateRef.current === ReadyState.Open) {
       ws.send(message);
     } else if (ws) {
+      isReconnect.current = true;
       connectWs();
       // todo 考虑重写
-      setTimeout(() => {
-        if (readyState === ReadyState.Open) {
-          ws.send(message);
-        }
-      }, 3000);
+      // setTimeout(() => {
+      //   if (readyStateRef.current === ReadyState.Open) {
+      //     ws.send(message);
+      //   }
+      // }, 3000);
       // throw new Error('WebSocket disconnected');
     }
   });

+ 5 - 0
src/pages/Northbound/DuerOS/types.d.ts

@@ -17,6 +17,11 @@ type DuerOSItem = {
   version: number;
   manufacturerName: string;
   autoReportProperty: boolean;
+  state?: {
+    text: string;
+    value: string | number;
+  };
+  productName?: string;
   applianceType: {
     text: string;
     value: string;

+ 3 - 7
src/pages/notice/Template/Detail/doc/DingTalk.tsx

@@ -22,9 +22,7 @@ const DingTalk = () => {
       <h1>1. 概述</h1>
       <div>
         通知模板结合通知配置为告警消息通知提供支撑。通知模板只能调用同一类型的通知配置服务。
-        <div>
-          使用钉钉消息通知时需在钉钉开放平台中创建好对应的应用
-        </div>
+        <div>使用钉钉消息通知时需在钉钉开放平台中创建好对应的应用</div>
       </div>
       <h1> 2.模板配置说明</h1>
       <h2> 1、绑定配置</h2>
@@ -35,10 +33,8 @@ const DingTalk = () => {
       <div className="image">
         <Image width="100%" src={agentId} />
       </div>
-      <h2> 3、收信人ID、收信部门ID</h2>
-      <div>
-        若不填写收信人,则在模板调试和配置告警通知时手动填写。
-      </div>
+      <h2> 3、收信人、收信部门</h2>
+      <div>若不填写收信人,则在模板调试和配置告警通知时手动填写。</div>
       {/*<div> 收信人ID获取路径:“钉钉管理后台”--“通讯录”--“查看用户”</div>*/}
       {/*<div> 收信部门ID获取路径:“钉钉管理后台”--“通讯录”--“编辑部门”</div>*/}
       {/*<div className="image">*/}

+ 1 - 1
src/pages/rule-engine/DashBoard/index.tsx

@@ -126,7 +126,7 @@ const Dashboard = observer(() => {
         series: [
           {
             name: '告警数',
-            data: fifteenData.sort((a,b) => b.timestamp - a.timestamp).map((item) => item.value),
+            data: fifteenData.sort((a, b) => b.timestamp - a.timestamp).map((item) => item.value),
             type: 'bar',
             itemStyle: {
               color: '#2F54EB',

+ 2 - 0
src/pages/rule-engine/Scene/Save/action/VariableItems/builtIn.tsx

@@ -24,6 +24,7 @@ interface BuiltInProps {
   form: FormInstance;
   name: number;
   isEdit?: boolean;
+  id?: string;
 }
 
 export default (props: BuiltInProps) => {
@@ -110,6 +111,7 @@ export default (props: BuiltInProps) => {
     <ItemGroup compact>
       <Select
         value={source}
+        id={props.id}
         options={[
           { label: '手动输入', value: 'fixed' },
           { label: '内置参数', value: 'upper' },

+ 2 - 0
src/pages/rule-engine/Scene/Save/action/VariableItems/org.tsx

@@ -16,6 +16,7 @@ interface OrgProps {
   notifyType: string;
   configId: string;
   onChange?: (value: ChangeType) => void;
+  id?: string;
 }
 
 export default (props: OrgProps) => {
@@ -47,6 +48,7 @@ export default (props: OrgProps) => {
   return (
     <TreeSelect
       value={keys}
+      id={props.id}
       listHeight={200}
       treeData={departmentTree}
       fieldNames={{

+ 2 - 0
src/pages/rule-engine/Scene/Save/action/VariableItems/tag.tsx

@@ -6,6 +6,7 @@ interface TagSelectProps {
   configId?: string;
   value?: string;
   onChange?: (value: string) => void;
+  id?: string;
 }
 
 export default (props: TagSelectProps) => {
@@ -32,6 +33,7 @@ export default (props: TagSelectProps) => {
 
   return (
     <Select
+      id={props.id}
       value={value}
       placeholder={'请选择标签'}
       options={options}

+ 2 - 0
src/pages/rule-engine/Scene/Save/action/VariableItems/user.tsx

@@ -21,6 +21,7 @@ interface UserProps {
   value?: ChangeType;
   type?: string;
   onChange?: (value: ChangeType) => void;
+  id?: string;
 }
 
 export default (props: UserProps) => {
@@ -308,6 +309,7 @@ export default (props: UserProps) => {
   return (
     <ItemGroup compact>
       <Select
+        id={props.id}
         value={source}
         options={
           props.notifyType && ['dingTalk', 'weixin'].includes(props.notifyType)

+ 2 - 0
src/pages/rule-engine/Scene/Save/action/device/WriteProperty/index.tsx

@@ -18,6 +18,7 @@ interface WritePropertyProps {
   trigger?: any;
   productId: string;
   isEdit?: boolean;
+  id?: string;
 }
 
 export default (props: WritePropertyProps) => {
@@ -249,6 +250,7 @@ export default (props: WritePropertyProps) => {
       <Col span={6}>
         <Select
           value={propertiesKey}
+          id={props.id}
           options={props.properties.filter((item) => {
             if (item.expands && item.expands.type) {
               return item.expands.type.includes('write');

+ 2 - 0
src/pages/rule-engine/Scene/Save/action/device/deviceModal.tsx

@@ -11,6 +11,7 @@ interface DeviceModelProps {
   value?: ChangeValueType[];
   onChange?: (value: ChangeValueType[]) => void;
   productId?: string;
+  id?: string;
 }
 
 type DeviceBadgeProps = {
@@ -200,6 +201,7 @@ export default (props: DeviceModelProps) => {
         </Modal>
       )}
       <Input
+        id={props.id}
         placeholder={'请选择设备'}
         onClick={onClick}
         addonAfter={<AIcon type={'icon-shebei'} onClick={onClick} />}

+ 2 - 0
src/pages/rule-engine/Scene/Save/action/device/readProperty.tsx

@@ -4,11 +4,13 @@ interface ReadPropertyProps {
   properties: any[];
   value?: any;
   onChange?: (value?: any) => void;
+  id?: string;
 }
 
 export default (props: ReadPropertyProps) => {
   return (
     <Select
+      id={props.id}
       value={props.value ? props.value[0] : undefined}
       options={props.properties.filter((item) => {
         if (item.expands && item.expands.type) {

+ 2 - 0
src/pages/rule-engine/Scene/Save/action/device/relationSelect.tsx

@@ -5,6 +5,7 @@ import { getRelations } from '@/pages/rule-engine/Scene/Save/action/service';
 interface RelationProps {
   value?: any;
   onChange?: (value?: any) => void;
+  id?: string;
 }
 
 export default (props: RelationProps) => {
@@ -28,6 +29,7 @@ export default (props: RelationProps) => {
 
   return (
     <Select
+      id={props.id}
       options={options}
       style={{ width: '100%' }}
       value={props.value ? props.value[0]?.value?.relation : undefined}

+ 2 - 0
src/pages/rule-engine/Scene/Save/action/device/tagModal.tsx

@@ -7,6 +7,7 @@ interface TagModalProps {
   tagData: any[];
   value?: any[];
   onChange?: (value: any[]) => void;
+  id?: string;
 }
 
 /**
@@ -251,6 +252,7 @@ export default (props: TagModalProps) => {
         </div>
       </Modal>
       <Input
+        id={props.id}
         value={nameList.length ? nameList.toString() : undefined}
         readOnly
         style={{ width: 300 }}

+ 2 - 0
src/pages/rule-engine/Scene/Save/components/InputUpload/index.tsx

@@ -8,6 +8,7 @@ import { LoadingOutlined, PlusOutlined } from '@ant-design/icons';
 interface InputUploadProps {
   value?: string;
   onChange?: (value?: string) => void;
+  id?: string;
 }
 
 export default (props: InputUploadProps) => {
@@ -68,6 +69,7 @@ export default (props: InputUploadProps) => {
   return (
     <Input
       value={url}
+      id={props.id}
       onChange={(e) => {
         if (onChange) {
           onChange(e.target.value);

+ 2 - 1
src/pages/rule-engine/Scene/Save/components/TimeSelect/index.tsx

@@ -15,6 +15,7 @@ interface TimeSelect {
   options?: OptionItemType[];
   className?: string;
   style?: React.CSSProperties;
+  id?: string;
 }
 
 export default (props: TimeSelect) => {
@@ -104,7 +105,7 @@ export default (props: TimeSelect) => {
         }}
         id={'timeSelect'}
       >
-        <div className={'time-select-content ellipsis'}>
+        <div className={'time-select-content ellipsis'} id={props.id}>
           {checkedNames.length ? (
             checkedKeys.includes('null') ? (
               '每天'

+ 2 - 0
src/pages/rule-engine/Scene/Save/components/TimingTrigger/RangePicker.tsx

@@ -9,10 +9,12 @@ type RangePickerValue = {
 interface RangePickerProps {
   value?: RangePickerValue;
   onChange?: (value: RangePickerValue) => void;
+  id?: string;
 }
 export default (props: RangePickerProps) => {
   return (
     <TimePicker.RangePicker
+      id={props.id}
       style={{ width: '100%' }}
       format={'HH:mm:ss'}
       value={[

+ 2 - 0
src/pages/rule-engine/Scene/Save/components/TimingTrigger/TimePicker.tsx

@@ -8,10 +8,12 @@ type TimePickerValue = {
 interface TimePickerProps {
   value?: TimePickerValue;
   onChange?: (value: TimePickerValue) => void;
+  id?: string;
 }
 export default (props: TimePickerProps) => {
   return (
     <TimePicker
+      id={props.id}
       style={{ width: '100%' }}
       format={'HH:mm:ss'}
       value={moment(props.value?.time || new Date(), 'HH:mm:ss')}

+ 8 - 1
src/pages/rule-engine/Scene/Save/trigger/OrgTreeSelect.tsx

@@ -7,6 +7,7 @@ interface OrgTreeSelect extends Omit<TreeSelectProps, 'onChange' | 'value'> {
   onChange?: (value: any[]) => void;
   value?: any;
   productId?: string;
+  id?: string;
 }
 
 export default (props: OrgTreeSelect) => {
@@ -43,6 +44,12 @@ export default (props: OrgTreeSelect) => {
   }, [props.value]);
 
   return (
-    <TreeSelect<string> value={myValue} treeData={orgTree} onChange={onchange} {...extraProps} />
+    <TreeSelect<string>
+      id={props.id}
+      value={myValue}
+      treeData={orgTree}
+      onChange={onchange}
+      {...extraProps}
+    />
   );
 };

+ 2 - 0
src/pages/rule-engine/Scene/Save/trigger/operation.tsx

@@ -7,6 +7,7 @@ interface OperatorProps {
   propertiesList?: any[];
   value?: any;
   onChange?: (value: any) => void;
+  id?: string;
 }
 
 export default (props: OperatorProps) => {
@@ -81,6 +82,7 @@ export default (props: OperatorProps) => {
       <Col span={6}>
         <Select
           mode="multiple"
+          id={props.id}
           options={props.propertiesList || []}
           value={key}
           fieldNames={{

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

@@ -149,7 +149,7 @@ export default observer((props: { parentId: string }) => {
             <Tooltip
               title={intl.formatMessage({
                 id: 'pages.system.role.option.unBindUser',
-                defaultMessage: '删除',
+                defaultMessage: '解绑',
               })}
             >
               <DisconnectOutlined />

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

@@ -35,9 +35,6 @@ const Bind = observer((props: Props) => {
         id: 'pages.system.name',
         defaultMessage: '姓名',
       }),
-      search: {
-        transform: (value) => ({ name$LIKE: value }),
-      },
     },
     {
       dataIndex: 'username',
@@ -73,11 +70,7 @@ const Bind = observer((props: Props) => {
       visible={props.visible}
       onOk={handleBind}
       onCancel={props.onCancel}
-      width={'800'}
-      bodyStyle={{
-        height: 'calc(100vh - 240px);',
-        overflowY: 'auto',
-      }}
+      width={'75vw'}
       title="绑定"
     >
       <SearchComponent<UserItem>

+ 0 - 3
src/pages/system/Department/Member/index.tsx

@@ -49,9 +49,6 @@ const Member = observer((props: { parentId: string }) => {
         id: 'pages.system.name',
         defaultMessage: '姓名',
       }),
-      search: {
-        transform: (value) => ({ name$LIKE: value }),
-      },
       width: 120,
       fixed: 'left',
     },

+ 2 - 3
src/pages/system/Menu/Detail/buttons.tsx

@@ -272,8 +272,7 @@ export default (props: ButtonsProps) => {
           </PermissionButton>,
         ]}
       />
-      {
-        visible &&
+      {visible && (
         <Modal
           maskClosable={false}
           width={660}
@@ -370,7 +369,7 @@ export default (props: ButtonsProps) => {
             </Form.Item>
           </Form>
         </Modal>
-      }
+      )}
     </>
   );
 };

+ 0 - 1
src/pages/system/Menu/Setting/baseMenu.ts

@@ -1267,7 +1267,6 @@ export default [
         url: '/system/Department',
         icon: 'icon-bumenguanli',
         permissions: [
-
           { permission: 'assets-bind', actions: ['bind', 'unbind', 'query', 'permission'] },
           { permission: 'role', actions: ['query', 'save', 'delete'] },
           { permission: 'device-category', actions: ['query', 'save', 'delete'] },

+ 4 - 4
src/pages/system/Menu/Setting/index.tsx

@@ -7,7 +7,7 @@ import {
 } from '@ant-design/icons';
 import Tree from './tree';
 import './index.less';
-import {Button, message, Modal, Tooltip} from 'antd';
+import { Button, message, Modal, Tooltip } from 'antd';
 import BaseTreeData from './baseMenu';
 import { useEffect, useState } from 'react';
 import { HTML5Backend } from 'react-dnd-html5-backend';
@@ -186,10 +186,10 @@ export default observer(() => {
         visible={visible}
         onOk={() => {
           MenuSettingModel.menuData = cloneDeep(baseMenu);
-          setVisible(false)
+          setVisible(false);
         }}
         onCancel={() => {
-          setVisible(false)
+          setVisible(false);
         }}
       >
         源数据将会覆盖当前的系统菜单数据,确定要一键拷贝吗?
@@ -213,7 +213,7 @@ export default observer(() => {
                   type={'primary'}
                   ghost
                   onClick={() => {
-                    setVisible(true)
+                    setVisible(true);
                   }}
                 >
                   一键拷贝

+ 26 - 17
src/pages/system/Menu/Setting/tree.tsx

@@ -2,7 +2,7 @@ import { Input, Tree } from 'antd';
 import { SearchOutlined } from '@ant-design/icons';
 import DragItem from '@/pages/system/Menu/Setting/dragItem';
 import { useDrop } from 'react-dnd';
-import {useEffect, useState} from 'react';
+import { useEffect, useState } from 'react';
 import type { TreeProps } from 'antd';
 import { cloneDeep, debounce } from 'lodash';
 import './DragItem.less';
@@ -21,7 +21,17 @@ export const DragType = 'DragBox';
 
 const { TreeNode } = Tree;
 
-const defaultExpandedKeys = ['iot', 'media', 'system', 'device', 'link', 'link/Channel', 'rule-engine/Alarm', 'Northbound', 'rule-engine']
+const defaultExpandedKeys = [
+  'iot',
+  'media',
+  'system',
+  'device',
+  'link',
+  'link/Channel',
+  'rule-engine/Alarm',
+  'Northbound',
+  'rule-engine',
+];
 
 export default (props: TreeBodyProps) => {
   const [newData, setNewData] = useState(props.treeData);
@@ -35,9 +45,9 @@ export default (props: TreeBodyProps) => {
 
   useEffect(() => {
     setTimeout(() => {
-      setExpandedKeys(defaultExpandedKeys)
-    }, 300)
-  }, [])
+      setExpandedKeys(defaultExpandedKeys);
+    }, 300);
+  }, []);
 
   const [, drop] = useDrop(() => ({
     accept: DragType,
@@ -105,15 +115,15 @@ export default (props: TreeBodyProps) => {
     data.forEach((item: any) => {
       if (item.children) {
         if (item.children.some((cItem: any) => cItem.code === key)) {
-          parentKey = item.code
+          parentKey = item.code;
         } else if (!!getParentKey(key, item.children)) {
-          parentKey = getParentKey(key, item.children)
+          parentKey = getParentKey(key, item.children);
         }
       }
-    })
+    });
     // @ts-ignore
-    return parentKey
-  }
+    return parentKey;
+  };
 
   const findAllItem = (data: any[], value: string): string[] => {
     return data.reduce((pre, next) => {
@@ -128,17 +138,16 @@ export default (props: TreeBodyProps) => {
     const value = e.target.value;
 
     if (value) {
-
       const newKeys = findAllItem(props.treeData, value);
-      const newExpandedKeys = newKeys.map(key => {
-        return getParentKey(key, props.treeData)
-      })
+      const newExpandedKeys = newKeys.map((key) => {
+        return getParentKey(key, props.treeData);
+      });
       setSearchKeys(newKeys);
       setExpandedKeys(newExpandedKeys);
     } else {
       setSearchKeys([]);
     }
-    setAutoExpandParent(true)
+    setAutoExpandParent(true);
   };
 
   return (
@@ -157,7 +166,7 @@ export default (props: TreeBodyProps) => {
             expandedKeys={expandedKeys}
             onExpand={(_expandedKeys) => {
               setExpandedKeys(_expandedKeys);
-              setAutoExpandParent(false)
+              setAutoExpandParent(false);
             }}
             autoExpandParent={autoExpandParent}
           >
@@ -170,7 +179,7 @@ export default (props: TreeBodyProps) => {
             expandedKeys={expandedKeys}
             onExpand={(_expandedKeys) => {
               setExpandedKeys(_expandedKeys);
-              setAutoExpandParent(false)
+              setAutoExpandParent(false);
             }}
             autoExpandParent={autoExpandParent}
             draggable={{

+ 8 - 1
src/pages/system/Menu/index.tsx

@@ -108,6 +108,9 @@ export default observer(() => {
       width: 80,
       dataIndex: 'sortIndex',
       valueType: 'digit',
+      render: (_, record) => {
+        return record.sortIndex;
+      },
     },
     {
       title: intl.formatMessage({
@@ -261,7 +264,11 @@ export default observer(() => {
         search={false}
         params={param}
         request={async (params) => {
-          const response = await service.queryMenuThree({ ...params, sorts: [{ name: 'sortIndex', order: 'asc'}], paging: false });
+          const response = await service.queryMenuThree({
+            ...params,
+            sorts: [{ name: 'sortIndex', order: 'asc' }],
+            paging: false,
+          });
           return {
             code: response.message,
             result: {

+ 5 - 4
src/pages/user/Login/service.ts

@@ -37,10 +37,11 @@ const Service = {
         map((resp) => resp.result),
       ),
     ),
-  login2: (data: LoginParam) => request(`/${SystemConst.API_BASE}/authorize/login`, {
-    method: 'POST',
-    data,
-  }),
+  login2: (data: LoginParam) =>
+    request(`/${SystemConst.API_BASE}/authorize/login`, {
+      method: 'POST',
+      data,
+    }),
 
   queryCurrent: () =>
     request(`/${SystemConst.API_BASE}/authorize/me`, {