Explorar o código

feat: 跳转计量

lanjianrong %!s(int64=3) %!d(string=hai) anos
pai
achega
f601618618

+ 70 - 46
src/components/Menu/index.tsx

@@ -1,7 +1,9 @@
 import logo from '@/assets/img/logo.png'
 import { userStore } from '@/store/mobx'
 import { iMenuItem } from '@/types/router'
-import { Button, Dropdown, Menu } from "antd"
+import { validJLProject } from '@/utils/common/api'
+import consts from '@/utils/consts'
+import { Button, Dropdown, Menu, Tooltip } from "antd"
 import { observer } from 'mobx-react'
 import React from 'react'
 import { Link } from "react-router-dom"
@@ -18,55 +20,77 @@ const NavSider: React.FC<iMenuProps> = (props) => {
   const handleLogout = () => {
     userStore.logout()
   }
-    return (
-      <div className="main-nav">
-        <div className="logo"><img src={logo} /></div>
-        <div className="nav-content">
-          <div className="nav-top">
-            {
-              MeunList?.map((item: iMenuItem, idx: number) =>
-                item.isTop && <MenuItem key={idx} item={item} />
+
+  const redirectToJL = async (e: React.MouseEvent) => {
+    e.preventDefault()  
+    const { code = -1, data = {} } = await validJLProject()
+    if (code === consts.RET_CODE.SUCCESS) {
+      const { env, token } = data
+      if (token) {
+        let redirect
+        if (env) {
+          redirect = `${consts.JL_PATH.QA}/login/management?auth=${token}`
+        } else {
+          redirect = `${consts.JL_PATH.PROD}/login/management?auth=${token}`
+        }
+        window.open(redirect)
+      }
+    }
+  }
+  return (
+    <div className="main-nav">
+      <div className="logo"><img src={logo} /></div>
+      <div className="nav-content">
+        <div className="nav-top">
+          {
+            MeunList?.map((item: iMenuItem, idx: number) =>
+              item.isTop && <MenuItem key={idx} item={item} />
+            )
+          }
+          {
+            userStore.userInfo.jlAuth ? <Tooltip placement='right' title='计量支付'>
+              <a style={{ fontSize: 27, color: '#7786ab', cursor: 'pointer' }} onClick={redirectToJL}>JL</a>
+            </Tooltip> : null
+          }
+        </div>
+        <div className="nav-footer">
+          {
+            MeunList?.map((item: iMenuItem, idx: number) => {
+              if (item.path === '/console/management') {
+                return userStore.role === 'ADMIN' ? !item.isTop && <MenuItem key={idx} item={item} /> : ''
+              } else {
+                return !item.isTop && <MenuItem key={idx} item={item} />
+              }
+            })
+          }
+          <div className="pi-text-center">
+            <Dropdown overlay={() => {
+              return (
+                <Menu>
+                  <Menu.Item key="0">
+                    <Link to="/console/account/info">账号资料</Link>
+                  </Menu.Item>
+                  <Menu.Item key="1">
+                    <Link to="/console/account/safe">账号安全</Link>
+                  </Menu.Item>
+                  <Menu.Divider />
+                  <Menu.Item key="2">
+                    <Link to="/console/account/safe">帮助中心</Link>
+                  </Menu.Item>
+                  <Menu.Item key="3">
+                    {/* <Link to="/login">退出登录</Link> */}
+                    <span onClick={() => handleLogout()}>退出登录</span>
+                  </Menu.Item>
+                </Menu>
               )
-            }
-          </div>
-          <div className="nav-footer">
-            {
-              MeunList?.map((item: iMenuItem, idx: number) => {
-                if (item.path === '/console/management') {
-                  return userStore.role === 'ADMIN' ? !item.isTop && <MenuItem key={idx} item={item} /> : ''
-                } else {
-                  return !item.isTop && <MenuItem key={idx} item={item} />
-                }
-              })
-            }
-            <div className="pi-text-center">
-              <Dropdown overlay={() => {
-                return (
-                  <Menu>
-                    <Menu.Item key="0">
-                      <Link to="/console/account/info">账号资料</Link>
-                    </Menu.Item>
-                    <Menu.Item key="1">
-                      <Link to="/console/account/safe">账号安全</Link>
-                    </Menu.Item>
-                    <Menu.Divider />
-                    <Menu.Item key="2">
-                      <Link to="/console/account/safe">帮助中心</Link>
-                    </Menu.Item>
-                    <Menu.Item key="3">
-                      {/* <Link to="/login">退出登录</Link> */}
-                      <span onClick={() => handleLogout()}>退出登录</span>
-                    </Menu.Item>
-                  </Menu>
-                )
-              }} trigger={[ 'click' ]} placement="topRight">
-                <Button size="small" className={styles.bottomBtn}>{userStore.menuBtnText?.slice(-3)}</Button>
-              </Dropdown>
-            </div>
+            }} trigger={[ 'click' ]} placement="topRight">
+              <Button size="small" className={styles.bottomBtn}>{userStore.menuBtnText?.slice(-3)}</Button>
+            </Dropdown>
           </div>
         </div>
       </div>
-    )
+    </div>
+  )
 }
 
 export default observer(NavSider)

+ 0 - 1
src/pages/Management/Setting/index.tsx

@@ -31,7 +31,6 @@ export default function Info() {
     role: '',
     telephone: ''
   }
-  const { Search } = Input
   const [ userList, setUserList ] = useState<iUserInfo[]>([])
   const initData = async () => {
     const { code = -1, data } = await apiAccountList()

+ 1 - 0
src/types/setting.d.ts

@@ -26,6 +26,7 @@ export interface iUserInfo {
   name: string;
   password: string;
   position: string;
+  jlAuth?: number
   projectId: string;
   role: string;
   telephone: string;

+ 8 - 0
src/utils/common/api.ts

@@ -109,4 +109,12 @@ export async function apiContractSection(bidsectionId: string, treeType: number)
 export async function apiExternalAuthLogin(token: string) {
   const { data } = await request.post('/api/external/jl/auth/login', { token })
   return data
+}
+
+/**
+ * 校验计量项目
+ */
+export async function validJLProject() {
+  const { data } = await request.post('/api/dashboard/project/exist')
+  return data
 }

+ 5 - 1
src/utils/consts.ts

@@ -21,6 +21,10 @@ export default {
     DOWNLOAD: 'https://measuresaas.oss-cn-shenzhen.aliyuncs.com/'
   },
   CONTRACT_TREE: { RETURN: 0, PAID: 1 }, // 合同管理-树结构, 0 - 收入, 1- 支出
-  BIDSECTION_TYPE: { CONTRACT: 0, SAFE: 1, QUALITY: 2 } // 获取标段列表的类型
+  BIDSECTION_TYPE: { CONTRACT: 0, SAFE: 1, QUALITY: 2 }, // 获取标段列表的类型
+  JL_PATH: {
+    QA: 'http://jlqa.smartcost.com.cn:7002',
+    PROD: 'https://jl.smartcost.com.cn'
+  }
 }