From 2998f413a5e196e99df887787aa4b250cd9f3b78 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期二, 24 十二月 2024 14:56:23 +0800
Subject: [PATCH] Merge branch 'positec' into dms

---
 src/components/header/sysmessage/icon.jsx |   86 +++++++++++++++++++++++++++++++++++++++---
 1 files changed, 79 insertions(+), 7 deletions(-)

diff --git a/src/components/header/sysmessage/icon.jsx b/src/components/header/sysmessage/icon.jsx
index a60199f..fd813a8 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'
+import url from './msg.png'
 
 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,40 @@
   }
 
   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} />
+      <span className="mk-msg-icon" onClick={this.open}>
+        <img src={url} alt=""/>
+        <span>{notices.length ? notices.length : ''}</span>
+      </span>
     )
   }
 }

--
Gitblit v1.8.0