XieYongHong пре 3 година
родитељ
комит
62c561e4c9

+ 1 - 1
src/app.tsx

@@ -343,7 +343,7 @@ export function patchRoutes(routes: any) {
 }
 
 export function render(oldRender: any) {
-  if (history.location.pathname !== loginPath && history.location.pathname !== bindPath) {
+  if (![loginPath, bindPath].includes(history.location.pathname)) {
     // SystemConfigService.getAMapKey().then((res) => {
     //   if (res && res.status === 200 && res.result) {
     //     localStorage.setItem(SystemConst.AMAP_KEY, res.result.apiKey);

+ 45 - 5
src/pages/init-home/components/basis.tsx

@@ -1,16 +1,56 @@
 import { UploadImage } from '@/components';
 import { Col, Form, Input, Row, Select } from 'antd';
-import { useEffect } from 'react';
+import { useEffect, forwardRef, useImperativeHandle } from 'react';
+import { service } from '../index'
 
 interface Props {
-  getData: Function;
+  getData?: Function;
 }
 
-const Basis = (props: Props) => {
+const Basis = forwardRef((props: Props, ref) => {
   const [form] = Form.useForm();
 
+  const saveData = () => {
+    return new Promise(async resolve => {
+      const formData = await form.validateFields().catch(() => {
+        resolve(false)
+      })
+      if (formData) {
+        const item = [
+          {
+            scope: 'basis',
+            properties: {
+              ...formData,
+              apikey: '',
+            },
+          },
+          {
+            scope: 'api',
+            properties: {
+              api: formData.apikey,
+            },
+          },
+        ];
+        const res = await service.save(item)
+        if (res.status === 200) {
+          resolve(true)
+        } else {
+          resolve(false)
+        }
+      } else {
+        resolve(false)
+      }
+    })
+  }
+
+  useImperativeHandle(ref, () => ({
+    save: saveData
+  }))
+
   useEffect(() => {
-    props.getData(form);
+    if (props.getData) {
+      props.getData(form);
+    }
   }, []);
 
   return (
@@ -84,5 +124,5 @@ const Basis = (props: Props) => {
       </Row>
     </Form>
   );
-};
+});
 export default Basis;

Разлика између датотеке није приказан због своје велике величине
+ 1546 - 2788
src/pages/init-home/components/data/RoleData.ts


+ 65 - 69
src/pages/init-home/components/data/index.tsx

@@ -1,81 +1,77 @@
-import { useEffect, useState } from 'react';
+import {forwardRef, useImperativeHandle, useState} from 'react';
 import { service } from '../../index';
 import Save from './save';
-interface Props {
-  isTrigger: boolean;
-  onChange: (state: boolean) => void;
-}
 
-const Data = (props: Props) => {
+const Data = forwardRef((_, ref) => {
   const [flag, setFlag] = useState<boolean>(false);
   const [visible, setVisible] = useState<boolean>(false);
   const [values, setValues] = useState<any>({});
 
-  const handleChange = async () => {
-    if (Object.keys(values).length === 0) {
-      props.onChange(true);
-      return;
-    }
-    // 新增网络组件
-    const network = await service.saveNetwork({
-      type: 'MQTT_SERVER',
-      shareCluster: true,
-      name: 'MQTT网络组件',
-      configuration: {
-        host: '0.0.0.0',
-        secure: false,
-        port: values.port,
-        publicHost: values.publicHost,
-        publicPort: values.publicPort,
-      },
-    });
-    // 保存协议
-    const protocol = await service.saveProtocol();
-    let protocolItem: any = undefined;
-    if (protocol.status === 200) {
-      const proid = await service.getProtocol();
-      if (proid.status === 200) {
-        protocolItem = (proid?.result || []).find((it: any) => it.name === 'JetLinks官方协议');
+  const handleChange = () => {
+    return new Promise(async (resolve) => {
+      if (!Object.keys(values).length) {
+        return resolve(true)
       }
-    }
-    // 新增设备接入网关
-    const accessConfig = await service.saveAccessConfig({
-      name: 'MQTT类型设备接入网关',
-      provider: 'mqtt-server-gateway',
-      protocol: protocolItem?.id,
-      transport: 'MQTT',
-      channel: 'network',
-      channelId: network?.result?.id,
-    });
-    // 新增产品
-    const product = await service.saveProduct({
-      name: 'MQTT产品',
-      messageProtocol: protocolItem?.id,
-      protocolName: protocolItem?.name,
-      transportProtocol: 'MQTT',
-      deviceType: 'device',
-      accessId: accessConfig.result?.id,
-      accessName: accessConfig.result?.name,
-      accessProvider: 'mqtt-server-gateway',
-    });
-    // 新增设备
-    const device = await service.saveDevice({
-      name: 'MQTT设备',
-      productId: product?.result?.id,
-      productName: product?.result?.name,
-    });
-    if (device.status === 200) {
-      props.onChange(true);
-    } else {
-      props.onChange(false);
-    }
+      try {
+        // 新增网络组件
+        const network = await service.saveNetwork({
+          type: 'MQTT_SERVER',
+          shareCluster: true,
+          name: 'MQTT网络组件',
+          configuration: {
+            host: '0.0.0.0',
+            secure: false,
+            port: values.port,
+            publicHost: values.publicHost,
+            publicPort: values.publicPort,
+          },
+        });
+        // 保存协议
+        const protocol = await service.saveProtocol();
+        let protocolItem: any = undefined;
+        if (protocol.status === 200) {
+          const proid = await service.getProtocol();
+          if (proid.status === 200) {
+            protocolItem = (proid?.result || []).find((it: any) => it.name === 'JetLinks官方协议');
+          }
+        }
+        // 新增设备接入网关
+        const accessConfig = await service.saveAccessConfig({
+          name: 'MQTT类型设备接入网关',
+          provider: 'mqtt-server-gateway',
+          protocol: protocolItem?.id,
+          transport: 'MQTT',
+          channel: 'network',
+          channelId: network?.result?.id,
+        });
+        // 新增产品
+        const product = await service.saveProduct({
+          name: 'MQTT产品',
+          messageProtocol: protocolItem?.id,
+          protocolName: protocolItem?.name,
+          transportProtocol: 'MQTT',
+          deviceType: 'device',
+          accessId: accessConfig.result?.id,
+          accessName: accessConfig.result?.name,
+          accessProvider: 'mqtt-server-gateway',
+        });
+        // 新增设备
+        const device = await service.saveDevice({
+          name: 'MQTT设备',
+          productId: product?.result?.id,
+          productName: product?.result?.name,
+        });
+        resolve(device.status === 200)
+      } catch (e) {
+        console.log(e)
+        resolve(false)
+      }
+    })
   };
 
-  useEffect(() => {
-    if (props.isTrigger) {
-      handleChange();
-    }
-  }, [props.isTrigger]);
+  useImperativeHandle(ref, () => ({
+    save: handleChange
+  }))
 
   return (
     <div>
@@ -105,6 +101,6 @@ const Data = (props: Props) => {
       )}
     </div>
   );
-};
+});
 
 export default Data;

+ 1 - 0
src/pages/init-home/components/data/save/index.tsx

@@ -171,4 +171,5 @@ const Save = (props: Props) => {
     </Modal>
   );
 };
+
 export default Save;

+ 41 - 43
src/pages/init-home/components/menu.tsx

@@ -1,76 +1,74 @@
-import { useEffect, useRef, useState, forwardRef, useImperativeHandle } from 'react';
-import BaseMenu from '@/pages/system/Menu/Setting/baseMenu';
-import { service } from '../index';
-import { observable } from '@formily/reactive';
+import {useEffect, useRef, useState, forwardRef, useImperativeHandle} from "react";
+import BaseMenu from '@/pages/system/Menu/Setting/baseMenu'
+import {service} from '../index'
 
-export const MenuDataModel = observable<{ menuData: any[] }>({
-  menuData: [],
-});
+const Menu = forwardRef((props: { onChange?: (menu: any) => void}, ref) => {
 
-const Menu = forwardRef((_, ref) => {
-  const [count, setCount] = useState(0);
-  const menuRef = useRef<any[]>();
+  const [count, setCount] = useState(0)
+  const menuRef = useRef<any[]>()
 
   const menuCount = (menus: any[]) => {
-    return menus.reduce((pre, next) => {
-      let _count = 1;
+    return menus.reduce((pre,next) => {
+      let _count = 1
       if (next.children) {
-        _count = menuCount(next.children);
+        _count = menuCount(next.children)
       }
-      return pre + _count;
-    }, 0);
-  };
+      return pre + _count
+    }, 0)
+  }
 
   /**
    * 根据权限过滤菜单
    */
-  const filterMenu = (permissions: string[], menus: any[]) => {
-    return menus.filter((item) => {
-      let isPermissions = true;
+  const filterMenu = (permissions:  string[], menus: any[]) => {
+    return menus.filter(item => {
+      let isPermissions = true
       if (item.permissions && item.permissions.length) {
-        isPermissions = item.permissions.some((pItem: any) =>
-          permissions.includes(pItem.permission),
-        );
+        isPermissions = item.permissions.some((pItem: any) => permissions.includes(pItem.permission))
       }
 
       if (item.children) {
-        item.children = filterMenu(permissions, item.children);
+        item.children = filterMenu(permissions, item.children)
       }
 
-      return isPermissions || !!item.children?.length;
-    });
-  };
+      return isPermissions || !!item.children?.length
+    })
+  }
+
 
   /**
    * 获取当前系统所有权限
    */
   const getSystemPermissions = async () => {
-    const resp = await service.getPermissionAll();
+    const resp = await service.getPermissionAll()
     if (resp.status === 200) {
-      const newTree = filterMenu(
-        resp.result.map((item: any) => item.id),
-        BaseMenu,
-      );
-      const _count = menuCount(newTree);
-      menuRef.current = newTree;
-      MenuDataModel.menuData = newTree;
-      setCount(_count);
+      const newTree = filterMenu(resp.result.map((item: any) => item.id), BaseMenu)
+      const _count = menuCount(newTree)
+      menuRef.current = newTree
+      setCount(_count)
     }
-  };
+  }
 
   useImperativeHandle(ref, () => ({
     save: () => {
-      console.log(menuRef.current);
-    },
-  }));
+      return new Promise((resolve) => {
+        if (props.onChange) {
+          props.onChange(menuRef.current)
+        }
+        service.updateMenus(menuRef.current).then(res => {
+          resolve(res.status === 200)
+        })
+      })
+    }
+  }))
 
   useEffect(() => {
-    getSystemPermissions();
-  }, []);
+    getSystemPermissions()
+  }, [])
 
   return (
     <div style={{ display: 'flex', alignItems: 'center' }}>
-      <div style={{ marginRight: 16 }}>
+      <div style={{ marginRight: 16}}>
         <img src={require('/public/images/init-home/menu.png')} />
       </div>
       <div>
@@ -81,4 +79,4 @@ const Menu = forwardRef((_, ref) => {
   );
 });
 
-export default Menu;
+export default Menu ;

+ 84 - 34
src/pages/init-home/components/role.tsx

@@ -1,54 +1,104 @@
-import { Checkbox } from 'antd';
-import { useState, forwardRef, useImperativeHandle } from 'react';
-import classNames from 'classnames';
-
+import {Checkbox} from 'antd'
+import { useState, forwardRef, useImperativeHandle} from "react";
+import classNames from "classnames";
+import RoleMenuData, {roleKeysType, ROLEKEYS, RoleData } from "./data/RoleData"
+import {service} from "@/pages/init-home";
 import '../index.less';
 
 const Role = forwardRef((_, ref) => {
-  const [keys, setKeys] = useState<string[]>([]);
-
-  useImperativeHandle(
-    ref,
-    () => ({
-      save: () => {
-        console.log(keys);
-        // 获取当前选中的角色
-      },
-    }),
-    [keys],
-  );
+
+  const [ keys, setKeys ] = useState<roleKeysType[]>([])
+
+  const findMenuByRole = (menu: any[], code: string): any => {
+    let _item = null
+    menu.some(item => {
+      if (item.code === code) {
+        _item = item
+        return true
+      }
+
+      if (item.children) {
+        const childrenItem = findMenuByRole(item.children, code)
+        if (childrenItem) {
+          _item = childrenItem
+          return true
+        }
+        return false
+      }
+
+      return null
+    })
+    return _item
+  }
+
+  useImperativeHandle(ref, () => ({
+    save: async () => {
+      return new Promise((resolve) => {
+        if (!keys.length) {
+          return resolve(true)
+        }
+        let Count = 0
+        keys.forEach(async (item, index) => {
+          const _itemData = RoleData[item]
+          // 添加该角色
+          const res = await service.addRole(_itemData)
+          if (res.status === 200) {
+            const menuTree = await service.getRoleMenu(res.result.id)
+            if (menuTree.status === 200) {
+              const _roleData = (RoleMenuData[item] as []).filter((roleItem: any) => {
+                const _menu = findMenuByRole(menuTree.result, roleItem.code)
+                if (_menu) {
+                  roleItem.id = _menu.id
+                  roleItem.parentId = _menu.parentId
+                  roleItem.createTime = _menu.createTime
+                  return true
+                }
+                return false
+              })
+              //更新权限
+              const roleRes = await service.updateRoleMenu(res.result.id, {menus: _roleData})
+              if (roleRes.status === 200) {
+                Count += 1
+              }
+              if (index === keys.length - 1) {
+                resolve(Count === keys.length)
+              }
+            } else if (index === keys.length - 1){
+              resolve(Count === keys.length)
+            }
+          } else if (index === keys.length - 1){
+            resolve(Count === keys.length)
+          }
+        })
+      })
+    }
+  }), [keys])
 
   return (
     <div className={'init-home-role'}>
-      <Checkbox.Group
-        onChange={(e) => {
-          setKeys(e as string[]);
-        }}
-      >
+      <Checkbox.Group onChange={(e) => {
+        setKeys(e as roleKeysType[])
+      }}>
         <div className={'init-home-role-content'}>
-          <div
-            className={classNames('role-item role-image-1', { active: keys.includes('device') })}
-          >
-            <div className={'role-item-title'}>
-              <Checkbox value={'device'}></Checkbox>
+          <div className={classNames('role-item role-image-1', {active: keys.includes('device')})}>
+            <div className={'role-item-title'} >
+              <Checkbox value={ROLEKEYS.device}></Checkbox>
               <div>设备接入岗</div>
             </div>
             <div className={'role-item-content'}></div>
             <div className={'role-item-footer'}>该角色负责设备接入模块的维护管理</div>
           </div>
-          <div className={classNames('role-item role-image-2', { active: keys.includes('link') })}>
-            <div className={'role-item-title'}>
-              <Checkbox value={'link'}></Checkbox>
+          <div className={classNames('role-item role-image-2', {active: keys.includes('link')})}>
+            <div className={'role-item-title'} >
+              <Checkbox value={ROLEKEYS.link}></Checkbox>
               <div>运维管理岗</div>
             </div>
             <div className={'role-item-content'}></div>
             <div className={'role-item-footer'}>该角色负责系统运维模块的维护管理</div>
           </div>
-          <div
-            className={classNames('role-item role-image-3', { active: keys.includes('complex') })}
-          >
-            <div className={'role-item-title'}>
-              <Checkbox value={'complex'}></Checkbox>
+          <div className={classNames('role-item role-image-3', {active: keys.includes('complex')})}>
+            <div className={'role-item-title'} >
+              <Checkbox value={ROLEKEYS.complex}></Checkbox>
               <div>综合管理岗</div>
             </div>
             <div className={'role-item-content'}></div>

+ 67 - 16
src/pages/init-home/index.tsx

@@ -1,32 +1,54 @@
 import { TitleComponent } from '@/components';
-import { Button, Collapse, Spin, Steps } from 'antd';
+import {Button, Collapse, Spin} from 'antd';
 import styles from './index.less';
 import Basis from './components/basis';
 import Menu from './components/menu';
 import Role from './components/role';
 import Data from './components/data';
 import Service from './service';
-import { useState } from 'react';
+import { useHistory } from 'umi'
+import {useState, useRef, useEffect} from 'react';
+import BaseMenu from '@/pages/system/Menu/Setting/baseMenu'
 
 export const service = new Service();
 
 const InitHome = () => {
   const [loadings, setLoadings] = useState<boolean>(false);
-  const [current, setCurrent] = useState<number>(0);
+  const [, setCurrent] = useState<number>(0);
+  const history = useHistory()
+
+  const cacheRef = useRef<Set<string>>()
+
+  const baseRef = useRef<{ save: any }>()
+  const menuRef = useRef<{ save: any }>()
+  const roleRef = useRef<{ save: any }>()
+  const dataRef = useRef<{ save: any }>()
+
+  const jump = () => {
+    history.push(BaseMenu[0].url)
+  }
+
+  useEffect(() => {
+    service.getInit().then(res => {
+      if (res.status === 200 && res.result.length) {
+        jump()
+      }
+    })
+  }, [])
 
   return (
     <div className={styles.init}>
       <TitleComponent data={'系统初始化'} />
       <div className={styles.box}>
         <div className={styles.container}>
-          <div className={styles.left}>
-            <Steps direction="vertical" current={current} percent={60} style={{ height: '100%' }}>
-              <Steps.Step />
-              <Steps.Step />
-              <Steps.Step />
-              <Steps.Step />
-            </Steps>
-          </div>
+          {/*<div className={styles.left}>*/}
+          {/*  <Steps direction="vertical" current={current} percent={60} style={{ height: '100%' }}>*/}
+          {/*    <Steps.Step />*/}
+          {/*    <Steps.Step />*/}
+          {/*    <Steps.Step />*/}
+          {/*    <Steps.Step />*/}
+          {/*  </Steps>*/}
+          {/*</div>*/}
           <div className={styles.right}>
             <Spin spinning={loadings}>
               <Collapse defaultActiveKey={['1', '2', '3', '4']}>
@@ -41,7 +63,7 @@ const InitHome = () => {
                   }
                   key="1"
                 >
-                  <Basis getData={() => {}} />
+                  <Basis ref={baseRef} />
                 </Collapse.Panel>
                 <Collapse.Panel
                   header={
@@ -51,7 +73,7 @@ const InitHome = () => {
                   }
                   key="2"
                 >
-                  <Menu />
+                  <Menu ref={menuRef} />
                 </Collapse.Panel>
                 <Collapse.Panel
                   header={
@@ -61,7 +83,7 @@ const InitHome = () => {
                   }
                   key="3"
                 >
-                  <Role />
+                  <Role ref={roleRef} />
                 </Collapse.Panel>
                 <Collapse.Panel
                   header={
@@ -71,7 +93,7 @@ const InitHome = () => {
                   }
                   key="4"
                 >
-                  <Data isTrigger={false} onChange={() => {}} />
+                  <Data ref={dataRef} />
                 </Collapse.Panel>
               </Collapse>
             </Spin>
@@ -79,9 +101,38 @@ const InitHome = () => {
               type="primary"
               style={{ marginTop: 20 }}
               loading={loadings}
-              onClick={() => {
+              onClick={async () => {
                 setLoadings(true);
                 setCurrent(0);
+                if (!cacheRef.current?.has('base')) {
+                  const baseRes = await baseRef.current?.save()
+                  if (!baseRes) { return  setLoadings(false) }
+                  cacheRef.current?.add('base')
+                }
+
+                if (!cacheRef.current?.has('menu')) {
+                  const menuRes = await menuRef.current?.save()
+                  if (!menuRes) { return  setLoadings(false) }
+                  cacheRef.current?.add('menu')
+                }
+
+                if (!cacheRef.current?.has('role')) {
+                  const roleRes = await roleRef.current?.save()
+                  if (!roleRes) { return  setLoadings(false) }
+                  cacheRef.current?.add('role')
+                }
+
+                if (!cacheRef.current?.has('data')) {
+                  const dataRes = await dataRef.current?.save()
+                  if (!dataRes) { return  setLoadings(false) }
+                  cacheRef.current?.add('data')
+                }
+                //  记录当前
+                service.saveInit().then(res => {
+                  if (res.status === 200) {
+                    jump()
+                  }
+                })
               }}
             >
               确认

+ 20 - 0
src/pages/init-home/service.ts

@@ -47,6 +47,26 @@ class Service extends BaseService<any> {
     });
   getPermissionAll = () =>
     request(`${SystemConst.API_BASE}/permission/_query/no-paging?paging=false`);
+
+  // 更新全部菜单
+  updateMenus = (data: any) => request(`${SystemConst.API_BASE}/menu/_all`, { method: 'PATCH', data });
+
+  // 添加角色
+  addRole = (data: any) =>
+    request(`/${SystemConst.API_BASE}/role`, { method: 'POST', data })
+
+  // 更新权限菜单
+  getRoleMenu = (id: string) =>
+    request(`/${SystemConst.API_BASE}/menu/role/${id}/_grant/tree`, { method: 'GET' })
+
+  // 更新权限菜单
+  updateRoleMenu = (id: string, data: any) =>
+    request(`/${SystemConst.API_BASE}/menu/role/${id}/_grant`, { method: 'PUT', data })
+
+//  记录初始化
+  saveInit = () => request(`/${SystemConst.API_BASE}/user/settings/init`, { method: 'POST', data: { init: true} })
+//  获取初始化
+  getInit = () => request(`/${SystemConst.API_BASE}/user/settings/init`, { method: 'GET' })
 }
 
 export default Service;

+ 37 - 27
src/pages/system/Menu/Setting/baseMenu.ts

@@ -588,36 +588,46 @@ export default [
                 url: '/iot/link/Channel/Modbus',
                 icon: 'icon-changjingliandong',
                 permissions: [],
-                buttons: [
-                  {
-                    id: 'update',
-                    name: '编辑',
-                    permissions: [{ permission: 'modbus-master', actions: ['query', 'save'] }],
-                  },
-                  {
-                    id: 'action',
-                    name: '启/禁用',
-                    permissions: [{ permission: 'modbus-master', actions: ['query', 'save'] }],
-                  },
-                  {
-                    id: 'view',
-                    name: '设备接入',
-                    permissions: [{ permission: 'modbus-master', actions: ['query', 'save'] }],
-                  },
-                  {
-                    id: 'delete',
-                    name: '删除',
-                    permissions: [{ permission: 'modbus-master', actions: ['query', 'delete'] }],
-                  },
-                  {
-                    id: 'add',
-                    name: '新增',
-                    permissions: [{ permission: 'modbus-master', actions: ['query', 'save'] }],
-                  },
-                ],
               },
             ],
           },
+          {
+            code: 'device/Firmware',
+            name: '远程升级',
+            parentId: '1-4',
+            id: '1-4-9',
+            url: '/iot/link/firmware',
+            icon: 'icon-wangluozujian',
+            permissions: [
+              {permission: "firmware-manager", actions: ["query", "save", "delete"]},
+              {permission: "firmware-upgrade-task-manager", actions: ["query", "save", "delete", "deploy"]},
+              {permission: "device-product", actions: ["query"]},
+              {permission: "device-api", actions: ["query"]},
+            ],
+            buttons: [
+              {
+                id: 'update',
+                name: '编辑',
+                permissions: [{ permission: 'firmware-upgrade-task-manager', actions: ['save'] }],
+              },
+              {
+                id: 'action',
+                name: '启/禁用',
+                permissions: [{ permission: 'firmware-upgrade-task-manager', actions: ['deploy'] }],
+              },
+              {
+                id: 'delete',
+                name: '删除',
+                permissions: [{ permission: 'firmware-upgrade-task-manager', actions: ['delete'] }],
+              },
+              {
+                id: 'add',
+                name: '新增',
+                permissions: [{ permission: 'firmware-upgrade-task-manager', actions: ['save'] }],
+              },
+            ],
+          },
+
         ],
       },
 

+ 15 - 5
src/pages/user/Login/index.tsx

@@ -1,5 +1,5 @@
 import { Button, Checkbox, Divider, message, Spin } from 'antd';
-import React, { useEffect, useRef, useState } from 'react';
+import React, { useEffect, useRef, useState, useMemo } from 'react';
 import { Link } from 'umi';
 import styles from './index.less';
 import Token from '@/utils/token';
@@ -33,14 +33,16 @@ const Login: React.FC = () => {
         ...initialState,
         currentUser: userInfo,
       });
+      return userInfo
     }
+    return null
   };
 
   const loginRef = useRef<Partial<LoginParam>>({});
-  const loginForm = createForm({
+  const loginForm = useMemo(() => createForm({
     validateFirst: true,
     initialValues: loginRef.current,
-  });
+  }), [captcha]);
 
   const [loading, setLoading] = useState<boolean>(false);
 
@@ -158,7 +160,15 @@ const Login: React.FC = () => {
       {
         next: async (userInfo) => {
           Token.set(userInfo.token);
-          await fetchUserInfo();
+          const userRef: any = await fetchUserInfo();
+          if (userRef?.user?.username === 'admin') {
+            const initRef = await Service.initPage()
+            if (initRef.status === 200 && !initRef.result.length) {
+              window.location.href = '/#/init-home';
+              setLoading(false);
+              return
+            }
+          }
           // goto();
           window.location.href = '/';
           setLoading(false);
@@ -174,7 +184,7 @@ const Login: React.FC = () => {
           // setLoading(false);
         },
         complete: () => {
-          getCode();
+          // getCode();
           // setLoading(false);
         },
       },

+ 1 - 0
src/pages/user/Login/service.ts

@@ -60,6 +60,7 @@ const Service = {
     request(`/${SystemConst.API_BASE}/user/detail`, {
       method: 'GET',
     }),
+  initPage: () => request(`/${SystemConst.API_BASE}/user/settings/init`, { method: 'GET' })
 };
 
 export default Service;