消息通知
This commit is contained in:
@ -4,12 +4,14 @@ import LogoImg from '@/assets/img/logo.png';
|
||||
//导入菜单组件
|
||||
import Language from './Language';
|
||||
import User from './User';
|
||||
import MessageNotice from './MessageNotice';
|
||||
import './layout.less';
|
||||
const HeaderComponent: React.FC = () => {
|
||||
return (
|
||||
<div className="headerComponent">
|
||||
<img className="logo" src={LogoImg} alt="logo" />
|
||||
<div className="flex">
|
||||
<MessageNotice/>
|
||||
<Language />
|
||||
<User />
|
||||
</div>
|
||||
|
45
src/layouts/MessageNotice.tsx
Normal file
45
src/layouts/MessageNotice.tsx
Normal file
@ -0,0 +1,45 @@
|
||||
import React, { useEffect, useState } from 'react';
|
||||
import { Badge, Tooltip } from 'antd';
|
||||
import { BellOutlined } from '@ant-design/icons';
|
||||
import { getCountMessage } from '@/servers/api/user';
|
||||
import { history } from 'umi';
|
||||
const MessageNotice: React.FC = () => {
|
||||
const [count, setCount] = useState<number>(0);
|
||||
|
||||
useEffect(() => {
|
||||
let alive = true;
|
||||
// 拉未读数量
|
||||
(async () => {
|
||||
try {
|
||||
const res = await getCountMessage();
|
||||
// 兼容不同后端返回:res?.data 或 res?.count
|
||||
const c = res?.data ?? 0;
|
||||
if (alive) setCount(Number(c) || 0);
|
||||
} catch {
|
||||
if (alive) setCount(0);
|
||||
}
|
||||
})();
|
||||
return () => { alive = false; };
|
||||
}, []);
|
||||
|
||||
return count !== 0 ? (
|
||||
<Tooltip title="消息通知">
|
||||
<Badge count={count} overflowCount={99}>
|
||||
<BellOutlined
|
||||
style={{ fontSize: 18, cursor: 'pointer' }}
|
||||
onClick={() => {
|
||||
const activeKey = sessionStorage.getItem('activeKey') || '';
|
||||
if (activeKey === 'accountLogin') {
|
||||
history.push('/supplierMessage')
|
||||
} else {
|
||||
history.push('/backend/supplierNews')
|
||||
}
|
||||
}}
|
||||
/>
|
||||
</Badge>
|
||||
</Tooltip>
|
||||
) : null
|
||||
};
|
||||
|
||||
|
||||
export default MessageNotice;
|
@ -44,19 +44,6 @@ const LoginPage: React.FC = () => {
|
||||
|
||||
}, [activeKey]);
|
||||
|
||||
// 组件挂载时,检查是否有记住的用户名
|
||||
useEffect(() => {
|
||||
// const savedUser = localStorage.getItem('remember_user');
|
||||
// if (savedUser) {
|
||||
// const user = JSON.parse(savedUser);
|
||||
// form.setFieldsValue({
|
||||
// username: user.username,
|
||||
// password: user.password,
|
||||
// remember: true,
|
||||
// });
|
||||
// }
|
||||
}, [form]);
|
||||
|
||||
// 修改密码确认回调
|
||||
const handleChangePwd = async (values: { userId: string; newPassword: string; confirmPassword: string; }) => {
|
||||
try {
|
||||
@ -95,7 +82,7 @@ const LoginPage: React.FC = () => {
|
||||
} else {
|
||||
localStorage.removeItem('remember_user');
|
||||
}
|
||||
|
||||
sessionStorage.setItem('activeKey', activeKey)
|
||||
sessionStorage.setItem('token', loginRes.data.token);
|
||||
//存入供应商用户id
|
||||
if (activeKey === 'supplierLogin') {
|
||||
|
@ -133,6 +133,13 @@ const SupplierEntryReview: React.FC = () => {
|
||||
ellipsis: true,
|
||||
width: 120,
|
||||
},
|
||||
{
|
||||
title: '准入单位',
|
||||
dataIndex: 'orgName',
|
||||
align: 'center',
|
||||
ellipsis: true,
|
||||
width: 120,
|
||||
},
|
||||
{
|
||||
title: '准入部门',
|
||||
dataIndex: 'deptName',
|
||||
@ -223,8 +230,8 @@ const SupplierEntryReview: React.FC = () => {
|
||||
<Form.Item name="accessType" label="准入方式">
|
||||
<AdmissionTypeSelect />
|
||||
</Form.Item>
|
||||
<Form.Item name="deptId" label="准入部门">
|
||||
<AccessDepartmentSelect orgCategory='' />
|
||||
<Form.Item name="orgId" label="准入单位">
|
||||
<AccessDepartmentSelect />
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item name="approveStatus" label="审批状态">
|
||||
|
@ -11,6 +11,14 @@ export async function getUserList(params: API.UserListRequest) {
|
||||
params,
|
||||
});
|
||||
}
|
||||
/**
|
||||
* 获取用户信息
|
||||
*/
|
||||
export async function getCountMessage() {
|
||||
return request('/supplierMessage/getCountMessage', {
|
||||
method: 'GET',
|
||||
});
|
||||
}
|
||||
/**
|
||||
* 获取全国列表
|
||||
* @param params 查询参数
|
||||
|
Reference in New Issue
Block a user