From e2fd227b24a2d188ef209dc47fabcc8390f2a94b Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期三, 06 十一月 2024 10:58:13 +0800 Subject: [PATCH] 2024-11-06 --- src/components/tabview/index.jsx | 3 src/components/breadview/index.jsx | 3 /dev/null | 67 ------------- src/components/header/sysmessage/icon.jsx | 57 +++++++++++ src/tabviews/custom/components/card/double-data-card/index.scss | 9 + src/components/header/index.jsx | 4 src/components/header/sysmessage/index.scss | 9 + src/tabviews/custom/components/card/data-card/index.scss | 9 + src/views/main/index.jsx | 22 ++- src/components/header/sysmessage/index.jsx | 58 +++++++++++ 10 files changed, 157 insertions(+), 84 deletions(-) diff --git a/src/components/breadview/index.jsx b/src/components/breadview/index.jsx index a71c288..340b188 100644 --- a/src/components/breadview/index.jsx +++ b/src/components/breadview/index.jsx @@ -17,7 +17,6 @@ const TreePage = asyncComponent(() => import('@/tabviews/treepage')) const Iframe = asyncComponent(() => import('@/tabviews/iframe')) const RoleManage = asyncComponent(() => import('@/tabviews/rolemanage')) -const SysMessage = asyncComponent(() => import('@/tabviews/sysmessage')) if (sessionStorage.getItem('lang') === 'zh-CN') { moment.locale('zh-cn') @@ -125,8 +124,6 @@ return (<Home MenuID={view.MenuID} MenuName={view.MenuName}/>) } else if (view.type === 'RolePermission') { return (<RoleManage MenuID={view.MenuID}/>) - } else if (view.type === 'SysMessage') { - return (<SysMessage />) } else if (view.type === 'CommonTable') { return (<CommonTable MenuNo={view.MenuNo} MenuID={view.MenuID} MenuName={view.MenuName} param={view.param} changeTemp={this.changeTemp}/>) } else if (view.type === 'TreePage') { diff --git a/src/components/header/index.jsx b/src/components/header/index.jsx index 7f216a9..ebe1ff8 100644 --- a/src/components/header/index.jsx +++ b/src/components/header/index.jsx @@ -18,7 +18,7 @@ const Resetpwd = asyncComponent(() => import('@/components/resetPassword')) const QrCode = asyncComponent(() => import('@/components/qrcode')) const LoginForm = asyncSpinComponent(() => import('./loginform')) -const SysMessage = asyncComponent(() => import('./sysmessage')) +const SysIcon = asyncComponent(() => import('./sysmessage/icon')) class Header extends Component { state = { @@ -788,7 +788,7 @@ <SearchOutlined className="search-menu" /> </Dropdown> : null } - {window.GLOB.SysNotice ? <SysMessage /> : null} + {window.GLOB.SysNotice ? <SysIcon /> : null} {/* 澶村儚銆佺敤鎴峰悕 */} <Dropdown className="header-setting" overlay={menu}> <div> diff --git a/src/components/header/sysmessage.jsx b/src/components/header/sysmessage.jsx deleted file mode 100644 index 3c3b82a..0000000 --- a/src/components/header/sysmessage.jsx +++ /dev/null @@ -1,67 +0,0 @@ -import React, { Component } from 'react' -import { notification } from 'antd' -import { MessageFilled, CloseOutlined } from '@ant-design/icons' - -import Api from '@/api' -// import MKEmitter from '@/utils/events.js' - -import './sysmessage.scss' - -class SysMessage extends Component { - state = { - visible: false, - notices: [] - } - - UNSAFE_componentWillMount () { - - } - - getMsgList = () => { - let param = { - func: 's_get_kei' - } - - Api.getSystemConfig(param).then(result => { - if (result.status) { - let notices = result.data - - this.setState({ notices }) - } else { - notification.warning({ - top: 92, - message: result.message, - duration: 5 - }) - } - }) - } - - open = () => { - // let menu = { - // MenuID: 'message_page_id', - // MenuName: '绯荤粺娑堟伅', - // type: 'SysMessage' - // } - - // MKEmitter.emit('modifyTabs', menu) - this.setState({ visible: true }) - } - - render() { - const { visible } = this.state - - return (<> - <MessageFilled className="mk-msg-icon" data-title="23" onClick={this.open} /> - <div className={'mk-msg-wrap' + (visible ? ' visible' : '')}> - <div className="title"> - 绯荤粺娑堟伅 - <CloseOutlined /> - </div> - <div>list</div> - </div> - </>) - } -} - -export default SysMessage \ No newline at end of file diff --git a/src/components/header/sysmessage/icon.jsx b/src/components/header/sysmessage/icon.jsx new file mode 100644 index 0000000..a60199f --- /dev/null +++ b/src/components/header/sysmessage/icon.jsx @@ -0,0 +1,57 @@ +import React, { Component } from 'react' +import { notification } from 'antd' +import { MessageFilled } from '@ant-design/icons' + +import Api from '@/api' +import MKEmitter from '@/utils/events.js' + +class SysIcon extends Component { + state = { + notices: [] + } + + componentDidMount () { + setTimeout(() => { + this.getMsgList() + }, 2000) + } + + getMsgList = () => { + let param = { + func: 's_get_kei' + } + + Api.getSystemConfig(param).then(result => { + if (result.status) { + let notices = result.data || [] + + this.setState({ notices }) + MKEmitter.emit('sysMessageChange', notices) + + setTimeout(() => { + this.getMsgList() + }, 600000) + } else { + notification.warning({ + top: 92, + message: result.message, + duration: 5 + }) + } + }) + } + + open = () => { + MKEmitter.emit('sysMessageOpen') + } + + render() { + const { notices } = this.state + + return ( + <MessageFilled className="mk-msg-icon" data-title={notices.length ? notices.length : ''} onClick={this.open} /> + ) + } +} + +export default SysIcon \ No newline at end of file diff --git a/src/components/header/sysmessage/index.jsx b/src/components/header/sysmessage/index.jsx new file mode 100644 index 0000000..2e444ab --- /dev/null +++ b/src/components/header/sysmessage/index.jsx @@ -0,0 +1,58 @@ +import React, { Component } from 'react' +import { CloseOutlined } from '@ant-design/icons' + +import MKEmitter from '@/utils/events.js' + +import './index.scss' + +class SysMessage extends Component { + state = { + visible: false, + notices: [] + } + + componentDidMount() { + MKEmitter.addListener('sysMessageChange', this.sysMessageChange) + MKEmitter.addListener('sysMessageOpen', this.sysMessageOpen) + } + + componentWillUnmount () { + this.setState = () => { + return + } + MKEmitter.removeListener('sysMessageChange', this.sysMessageChange) + MKEmitter.removeListener('sysMessageOpen', this.sysMessageOpen) + } + + sysMessageChange = (notices) => { + this.setState({ notices }) + } + + sysMessageOpen = () => { + this.setState({ visible: true }) + } + + close = () => { + this.setState({ visible: false }) + } + + render() { + const { visible, notices } = this.state + + return ( + <div className={'mk-msg-wrap' + (visible ? ' visible' : '')}> + <div className="title"> + 绯荤粺娑堟伅 + <CloseOutlined onClick={this.close}/> + </div> + <div className="msg-list">{notices.map((item, index) => { + return <div className="msg-item" key={index}> + {item.remark} + </div> + })}</div> + </div> + ) + } +} + +export default SysMessage \ No newline at end of file diff --git a/src/components/header/sysmessage.scss b/src/components/header/sysmessage/index.scss similarity index 88% rename from src/components/header/sysmessage.scss rename to src/components/header/sysmessage/index.scss index 6973c88..997c78e 100644 --- a/src/components/header/sysmessage.scss +++ b/src/components/header/sysmessage/index.scss @@ -66,6 +66,15 @@ color: rgba(0, 0, 0, 0.85); } } + .msg-list { + .msg-item { + height: 80px; + background: rgba(0, 0, 0, 0.05); + margin: 10px 0px; + padding: 5px; + border-radius: 2px; + } + } } .mk-msg-wrap.visible { z-index: 3000; diff --git a/src/components/tabview/index.jsx b/src/components/tabview/index.jsx index 6660c1f..f4a5dc0 100644 --- a/src/components/tabview/index.jsx +++ b/src/components/tabview/index.jsx @@ -18,7 +18,6 @@ const TreePage = asyncComponent(() => import('@/tabviews/treepage')) const Iframe = asyncComponent(() => import('@/tabviews/iframe')) const RoleManage = asyncComponent(() => import('@/tabviews/rolemanage')) -const SysMessage = asyncComponent(() => import('@/tabviews/sysmessage')) if (sessionStorage.getItem('lang') === 'zh-CN') { moment.locale('zh-cn') @@ -285,8 +284,6 @@ return (<Home MenuID={view.MenuID} MenuName={view.MenuName}/>) } else if (view.type === 'RolePermission') { return (<RoleManage MenuID={view.MenuID}/>) - } else if (view.type === 'SysMessage') { - return (<SysMessage />) } else if (view.type === 'CommonTable') { return (<CommonTable MenuNo={view.MenuNo} MenuID={view.MenuID} MenuName={view.MenuName} param={view.param} changeTemp={this.changeTemp}/>) } else if (view.type === 'TreePage') { diff --git a/src/tabviews/custom/components/card/data-card/index.scss b/src/tabviews/custom/components/card/data-card/index.scss index 7a3eefc..8693005 100644 --- a/src/tabviews/custom/components/card/data-card/index.scss +++ b/src/tabviews/custom/components/card/data-card/index.scss @@ -79,6 +79,15 @@ margin-bottom: 0!important; } } + .extend-card:last-child:not(:only-child) { + position: sticky; + bottom: 0; + z-index: 1; + .card-item-box { + margin-top: 0!important; + margin-bottom: 0!important; + } + } div:last-child { .card-item-box { border-bottom: none!important; diff --git a/src/tabviews/custom/components/card/double-data-card/index.scss b/src/tabviews/custom/components/card/double-data-card/index.scss index 07c69b2..82740e6 100644 --- a/src/tabviews/custom/components/card/double-data-card/index.scss +++ b/src/tabviews/custom/components/card/double-data-card/index.scss @@ -286,6 +286,15 @@ margin-bottom: 0!important; } } + .extend-card:last-child:not(:only-child) { + position: sticky; + bottom: 0; + z-index: 1; + .card-item-box { + margin-top: 0!important; + margin-bottom: 0!important; + } + } div:last-child { .sub-card-wrap { .card-item-box { diff --git a/src/views/main/index.jsx b/src/views/main/index.jsx index 8723ebc..82241b8 100644 --- a/src/views/main/index.jsx +++ b/src/views/main/index.jsx @@ -1,4 +1,4 @@ -import React, {Component} from 'react' +import React, { Component } from 'react' import asyncComponent from '@/utils/asyncComponent' import Header from '@/components/header' @@ -11,6 +11,7 @@ const Tabview = asyncComponent(() => import('@/components/tabview')) const Breadview = asyncComponent(() => import('@/components/breadview')) +const SysMessage = asyncComponent(() => import('@/components/header/sysmessage/index')) class Main extends Component { state = { @@ -72,15 +73,18 @@ if (!this.state.userId) return null return ( - <div className="mk-main-view"> - <Header key="header"/> - {navBar === 'shutter' ? <Sidemenu key="sidemenu"/> : null} - {navBar === 'shutter' || navBar === 'menu_board_navigation' ? - <Tabview key="tabview"/> : - <Breadview key="breadview"/>} + <> + <div className="mk-main-view"> + <Header key="header"/> + {navBar === 'shutter' ? <Sidemenu key="sidemenu"/> : null} + {navBar === 'shutter' || navBar === 'menu_board_navigation' ? + <Tabview key="tabview"/> : + <Breadview key="breadview"/>} + <ImgScale /> + </div> {window.GLOB.systemType === 'production' ? <QueryLog /> : null} - <ImgScale /> - </div> + {window.GLOB.SysNotice ? <SysMessage /> : null} + </> ) } } -- Gitblit v1.8.0