From c75f0c4f74701911e4e00e7b3fca7a269beaedd6 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期三, 13 十一月 2024 23:03:01 +0800
Subject: [PATCH] 2024-11-13

---
 src/components/header/sysmessage/icon.jsx   |   81 +++++++++++++++++++++++++--
 src/components/header/sysmessage/index.scss |   57 +++++++++++++-----
 src/components/header/sysmessage/index.jsx  |   25 +++++++-
 3 files changed, 138 insertions(+), 25 deletions(-)

diff --git a/src/components/header/sysmessage/icon.jsx b/src/components/header/sysmessage/icon.jsx
index a60199f..71e4820 100644
--- a/src/components/header/sysmessage/icon.jsx
+++ b/src/components/header/sysmessage/icon.jsx
@@ -1,13 +1,14 @@
 import React, { Component } from 'react'
 import { notification } from 'antd'
 import { MessageFilled } from '@ant-design/icons'
+import moment from 'moment'
 
 import Api from '@/api'
 import MKEmitter from '@/utils/events.js'
 
 class SysIcon extends Component {
   state = {
-    notices: []
+    notices: null
   }
 
   componentDidMount () {
@@ -18,15 +19,60 @@
 
   getMsgList = () => {
     let param = {
-      func: 's_get_kei'
+      func: 's_get_unread_oa_mail_v1'
     }
 
-    Api.getSystemConfig(param).then(result => {
+    Api.genericInterface(param).then(result => {
       if (result.status) {
         let notices = result.data || []
+        notices.forEach(item => {
+          let time = new Date(item.submitdate).getTime()
+          let _val = item.submitdate
+          if (!isNaN(time)) {
+            time = parseInt(time / 60000)                                     // 鏃堕棿鍊�
+            let now = parseInt(new Date().getTime() / 60000)                  // 褰撳墠鏃堕棿鍊�
+            let start = new Date(new Date().toDateString()).getTime() / 60000 // 浠婂ぉ闆剁偣鏃堕棿鍊�
+            let split = now - time
+
+            if (split < 0) { // 鏃堕棿鍊煎湪褰撳墠鏃堕棿涔嬪悗
+              _val = moment(_val).format('MM鏈圖D鏃� HH:mm')
+            } else if (split < 3) {
+              _val = '鍒氬垰'
+            } else if (split < 5) {
+              _val = '3鍒嗛挓鍓�'
+            } else if (split < 10) {
+              _val = '5鍒嗛挓鍓�'
+            } else if (split < 20) {
+              _val = '10鍒嗛挓鍓�'
+            } else if (split < 30) {
+              _val = '20鍒嗛挓鍓�'
+            } else if (split < 60) {
+              _val = '30鍒嗛挓鍓�'
+            } else if (split < 420 || time > start) { // 7灏忔椂鍐呮垨鏃堕棿鍊煎湪浠婂ぉ闆剁偣鍚�
+              _val = parseInt(split / 60) + '灏忔椂鍓�'
+            } else {                                  // 鏃堕棿鍊煎湪浠婂ぉ闆剁偣涔嬪墠
+              let _day = parseInt((start - time) / (24 * 60)) + 1
+              if (_day === 1) {
+                _val = '鏄ㄥぉ'
+              } else if (_day <= 30) {
+                _val = _day + '澶╁墠'
+              } else {
+                _val = moment(_val).format('MM鏈圖D鏃� HH:mm')
+              }
+            }
+          }
+          item.time = _val
+        })
 
         this.setState({ notices })
-        MKEmitter.emit('sysMessageChange', notices)
+
+        MKEmitter.emit('sysMessageChange', notices.slice(0, 5))
+
+        if (notices.length > 0) {
+          setTimeout(() => {
+            MKEmitter.emit('sysMessageOpen')
+          }, 50)
+        }
 
         setTimeout(() => {
           this.getMsgList()
@@ -42,14 +88,37 @@
   }
 
   open = () => {
-    MKEmitter.emit('sysMessageOpen')
+    const { notices } = this.state
+
+    if (notices.length === 0) {
+      this.toMenu()
+    } else {
+      MKEmitter.emit('sysMessageOpen')
+    }
+  }
+
+  toMenu = () => {
+    let menu = {
+      MenuID: '1731250110643ivgpv9gdgiif5lggh4e',
+      MenuName: '鍐呴儴閭',
+      type: 'CustomPage',
+      param: {$BID: ''}
+    }
+
+    if (window.GLOB.mkThdMenus.has(menu.MenuID)) {
+      menu.MenuName = window.GLOB.mkThdMenus.get(menu.MenuID).MenuName
+    }
+
+    MKEmitter.emit('modifyTabs', menu)
   }
 
   render() {
     const { notices } = this.state
 
+    if (!notices) return null
+    
     return (
-      <MessageFilled className="mk-msg-icon" data-title={notices.length ? notices.length : ''} onClick={this.open} />
+      <MessageFilled className="mk-msg-icon"  data-title={notices.length ? notices.length : ''} onClick={this.open} />
     )
   }
 }
diff --git a/src/components/header/sysmessage/index.jsx b/src/components/header/sysmessage/index.jsx
index 2e444ab..f9e6965 100644
--- a/src/components/header/sysmessage/index.jsx
+++ b/src/components/header/sysmessage/index.jsx
@@ -36,20 +36,39 @@
     this.setState({ visible: false })
   }
 
+  toMenu = () => {
+    let menu = {
+      MenuID: '1731250110643ivgpv9gdgiif5lggh4e',
+      MenuName: '鍐呴儴閭',
+      type: 'CustomPage',
+      param: {$BID: ''}
+    }
+
+    if (window.GLOB.mkThdMenus.has(menu.MenuID)) {
+      menu.MenuName = window.GLOB.mkThdMenus.get(menu.MenuID).MenuName
+    }
+
+    MKEmitter.emit('modifyTabs', menu)
+
+    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}
+          return <div className="msg-item" key={index} onClick={this.toMenu}>
+            <span>{item.createstaff}</span><span className="time">{item.time}</span>
+            <span>{item.title}</span>
           </div>
         })}</div>
+        <span className="jump" onClick={this.toMenu}>璇︽儏&nbsp;&nbsp;&gt;</span>
       </div>
     )
   }
diff --git a/src/components/header/sysmessage/index.scss b/src/components/header/sysmessage/index.scss
index 997c78e..9d71cb6 100644
--- a/src/components/header/sysmessage/index.scss
+++ b/src/components/header/sysmessage/index.scss
@@ -34,15 +34,14 @@
 }
 .mk-msg-wrap {
   position: fixed;
-  width: 200px;
-  height: 400px;
-  top: 92px;
-  right: 15px;
+  width: 300px;
+  top: 50px;
+  right: 120px;
   z-index: -1;
   opacity: 0;
-  padding: 10px;
+  padding: 10px 10px 30px;
   font-size: 13px;
-  background-color: #fff;
+  background-color: #000000;
   background-clip: padding-box;
   color: rgba(0, 0, 0, 0.85);
   border: 0;
@@ -53,27 +52,53 @@
   transition: all 0.2s;
 
   .title {
-    text-align: center;
+    position: relative;
+    text-align: left;
+    font-size: 14px;
+    height: 20px;
+    color: #ffffff;
 
     .anticon-close {
       position: absolute;
-      right: 10px;
-      color: rgba(0, 0, 0, 0.45);
+      right: 5px;
+      color: #ffffff;
       cursor: pointer;
       transition: color 0.2s;
-    }
-    .anticon-close:hover {
-      color: rgba(0, 0, 0, 0.85);
     }
   }
   .msg-list {
     .msg-item {
-      height: 80px;
-      background: rgba(0, 0, 0, 0.05);
+      position: relative;
+      height: 55px;
+      background: #e8e8e8;
       margin: 10px 0px;
-      padding: 5px;
-      border-radius: 2px;
+      padding: 8px;
+      border-radius: 4px;
+      font-size: 14px;
+      cursor: pointer;
+      span {
+        display: block;
+      }
     }
+    .time {
+      position: absolute;
+      top: 5px;
+      right: 8px;
+      font-size: 13px;
+    }
+  }
+
+  .jump {
+    position: absolute;
+    right: 15px;
+    bottom: 12px;
+    font-size: 14px;
+    cursor: pointer;
+    color: var(--mk-sys-color1);
+    transition: color 0.2s;
+  }
+  .jump:hover {
+    color: #ffffff;
   }
 }
 .mk-msg-wrap.visible {

--
Gitblit v1.8.0