diff --git a/src/forge/Head/NoticeContent.jsx b/src/forge/Head/NoticeContent.jsx index 88b86051f..970b4eb37 100644 --- a/src/forge/Head/NoticeContent.jsx +++ b/src/forge/Head/NoticeContent.jsx @@ -6,62 +6,35 @@ import '../SecuritySetting/Index.scss'; import '../SecuritySetting/notice/myNotice/Index.scss' import { timeAgo } from '../../common/DateUtil'; import { Link } from 'react-router-dom'; +import Axios from 'axios'; function NoticeContent(props) { const[noticeType,setNoticeType] = useState("0"); - const[notice_unread_count,setNotice_unread_count]=useState(221);//未读系统通知数量 + const[notice_unread_count,setNotice_unread_count]=useState();//未读系统通知数量 const[letter_unread_count,setLetter_unread_count]=useState(10);//未读私信数量 - const[at_unread_count,setAt_unread_count]=useState(2);//未读@我数量 - const[notice_unread_list,setNotice_unread_list]=useState([ - { - id: 11, - type: 1, //12345,用于展示不同的图标等,对应: 平台消息推送; 异常登录提示; 被拉入或移出项目,被拉入或移出组织;我负责的ISSUE发生改变; 我管理的仓库:有新的易修,有新的合并请求,有成员变更,仓库设置被更改,有新的易修指派给我,有新的合并请求指派给我等; - read: 0, //是否已读,0未读,1已读 - url: "/jasder/courselist", //跳转路径,跳转到对应的项目/issue等;单条通知只要一个跳转路径,点击该条通知任意位置都会跳到对应issue/项目 - content: "蒋宇航在 Gitlink/Gitlink 新建易修:测试环境链接地址错误", //要加粗的内容,在两侧加标签 - create_time: "2019-03-04 18:08", //通知发送时间 - }, - { - id: 12, - type: 2, - read: 0, - url: "/jasder/courselist", - content: "你关注的仓库 王涛/协同分析 已被删除", - create_time: "2019-03-04 18:08", - }, - { - id: 12, - type: 3, - read: 0, - url: "/jasder/courselist", - content: "蔡世新建易修 【镜像项目-Github】私有项目 用户新建仓库,仓库转移到本地仓库的哈哈哈哈哈", - create_time: "2019-03-04 18:08", - }, - { - id: 12, - type: 4, - read: 0, - url: "/jasder/courselist", - content: "您的帐号 小霞子1999 于2021-08-11 10:52:29在非常用的IP地址113.218.1.188(湖南)", - create_time: "2019-03-04 18:08", - }, - { - id: 12, - type: 5, - read: 0, - url: "/jasder/courselist", - content: "蔡世新建易修 【镜像项目-Github】私有项目 用户新建仓库,仓库转移到本地仓库的哈哈哈哈哈", - create_time: "2019-03-04 18:08", - }, - { - id: 12, - type: 6, - read: 0, - url: "/jasder/courselist", - content: "蔡世新建易修 【镜像项目-Github】私有项目 用户新建仓库,仓库转移到本地仓库的哈哈哈", - create_time: "2019-03-04 18:08", + const[at_unread_count,setAt_unread_count]=useState();//未读@我数量 + const [message_list, setMessage_list] = useState([]); + + useEffect(() => { + const params = { + type:noticeType==="0"?"notification":noticeType==="2"?"atme":"", + limit: 20, + page: 0, } - ]); + getMessageList(params); + }, [noticeType]) + + function getMessageList(params) { + console.log(params); + Axios.get(`/users/yystopf/messages.json`, { + params: params, + }).then((response) => { + setNotice_unread_count(response.data.unread_notification); + setAt_unread_count(response.data.unread_atme); + setMessage_list(response.data.messages); + console.log(message_list); + }) + } const[letter_unread_list,setLetter_unread_list]=useState([ { id: 122, @@ -112,69 +85,6 @@ function NoticeContent(props) { create_time: "2019-03-04 18:08", //发送时间 } ]); - const[at_unread_list,setAt_unread_list]=useState([ - { - id: 122, - read: 0, //是否已读,0未读,1已读 - name: "蒋宇航", //@我的人 - content: "钟景霞 在易修 【UI设计】用户public key添加功能 中@我", //什么情况下@我,要加粗的内容,在两侧加标签 - create_time: "2019-03-04 18:08", //@我的时间 - url: "/jasder/courselist", //跳转路径,跳转到对应的项目/issue等,只要一个跳转路径 - }, - { - id: 122, - read: 0, //是否已读,0未读,1已读 - name: "阿吧", //@我的人 - content: "钟景霞 在易修 【UI设计】用户public key添加功能 中@我【后端】代码库没有任何文件的情况下镜像项目创建/代码库页面一直处于loading状态需优化 ", //什么情况下@我,要加粗的内容,在两侧加标签 - create_time: "2019-03-04 18:08", //@我的时间 - url: "/jasder/courselist", //跳转路径,跳转到对应的项目/issue等,只要一个跳转路径 - } - , - { - id: 122, - read: 0, //是否已读,0未读,1已读 - name: "蒋宇航", //@我的人 - content: "钟景霞 在易修 【UI设计】用s@我", //什么情况下@我,要加粗的内容,在两侧加标签 - create_time: "2019-03-04 18:08", //@我的时间 - url: "/jasder/courselist", //跳转路径,跳转到对应的项目/issue等,只要一个跳转路径 - } - , - { - id: 122, - read: 0, //是否已读,0未读,1已读 - name: "蒋宇航", //@我的人 - content: "钟景霞 key添加功能 中@我", //什么情况下@我,要加粗的内容,在两侧加标签 - create_time: "2019-03-04 18:08", //@我的时间 - url: "/jasder/courselist", //跳转路径,跳转到对应的项目/issue等,只要一个跳转路径 - } - , - { - id: 122, - read: 0, //是否已读,0未读,1已读 - name: "蒋宇航", //@我的人 - content: "钟景霞 在易修 【UI设计】用户public key添加功能 中@我axdsadasd", //什么情况下@我,要加粗的内容,在两侧加标签 - create_time: "2019-03-04 18:08", //@我的时间 - url: "/jasder/courselist", //跳转路径,跳转到对应的项目/issue等,只要一个跳转路径 - } - , - { - id: 122, - read: 0, //是否已读,0未读,1已读 - name: "蒋宇航", //@我的人 - content: "钟景霞 在易修 【UI设计】用户public key添加功sdasd能 中@我", //什么情况下@我,要加粗的内容,在两侧加标签 - create_time: "2019-03-04 18:08", //@我的时间 - url: "/jasder/courselist", //跳转路径,跳转到对应的项目/issue等,只要一个跳转路径 - } - , - { - id: 122, - read: 0, //是否已读,0未读,1已读 - name: "蒋宇航", //@我的人 - content: "钟景霞 在易修 【UI设计】用户public key添加功能 中@我", //什么情况下@我,要加粗的内容,在两侧加标签 - create_time: "2019-03-04 18:08", //@我的时间 - url: "/jasder/courselist", //跳转路径,跳转到对应的项目/issue等,只要一个跳转路径 - } - ]); return(
@@ -187,23 +97,38 @@ function NoticeContent(props) {
- {/* 系统消息 */} - {noticeType==="0"?notice_unread_list.length>0?notice_unread_list.map(item=>{ - let contentStr = item.content.endsWith("") && item.content.length>=50 && item.content.replace("","").substr(0,40)+"..."; - let iconName = item.type===1?"icon-xitongtongzhiicon":item.type===2?"icon-xiaoxi2":item.type===3?"icon-yixiuicon1":item.type===4?"icon-hebingqingqiuicon":item.type===5?"icon-lichengbeiicon":"icon-daimakuicon1"; - return( -
-
=30 && item.content.length<=34?'65px':""}}> - - -
- =48?item.content.substr(0,48)+"...":item.content}}> - {item.create_time?timeAgo(item.create_time):"刚刚"} + {message_list.map(item=>{ + // 系统消息 + if(noticeType ==="0" && item.type === "notification" && item.status===1){ + let contentStr = item.content.endsWith("") && item.content.length>=50 && item.content.replace("","").substr(0,40)+"..."; + // let iconName = item.type===1?"icon-xitongtongzhiicon":item.type===2?"icon-xiaoxi2":item.type===3?"icon-yixiuicon1":item.type===4?"icon-hebingqingqiuicon":item.type===5?"icon-lichengbeiicon":"icon-daimakuicon1"; + return( +
+
30 && item.content.length<=34?'65px':""}}> + + +
+ =48?item.content.substr(0,48)+"...":item.content}}> + {item.time_ago} +
+
-
-
- ) - }):"暂无数据":""} + ) + }else if(noticeType ==="2" && item.type === "atme" && item.status===1){ + // @我 + return( +
+
30 && item.content.length<=42?'65px':""}}> + +
+ =56?item.content.substr(0,56)+"...@我":item.content}}> + {item.time_ago} +
+
+
+ ) + } + })} {/* 私信 */} {noticeType==="1"?letter_unread_list.length>0?letter_unread_list.map(item=>{ @@ -220,59 +145,6 @@ function NoticeContent(props) {
) }):"暂无数据":""} - - {/* @我 */} - {noticeType==="2"?at_unread_list.length>0?at_unread_list.map(item=>{ - return( -
-
=30 && item.content.length<=42?'65px':""}}> - -
- {/* {item.name} */} - =56?item.content.substr(0,56)+"...@我":item.content}}> - {item.create_time?timeAgo(item.create_time):"刚刚"} -
-
-
- ) - }):"暂无数据":""} - - {/*
- - {noticeType === "0" ? : ""} -
- 蒋宇航: - 最好的OpenStack控制台,对标Open社区项目Horizon,在易... - 4分钟前 -
-
-
- - {noticeType === "0" ? : ""} -
- 蒋宇航: - 最好的OpenStack控制台,对标Open社区项目Horizon,在易... - 4分钟前 -
-
-
- - {noticeType === "0" ? : ""} -
- 蒋宇航: - 最好的OpenStack控制台,对标Open社区项目Horizon,在易... - 4分钟前 -
-
-
- - {noticeType === "0" ? : ""} -
- 蒋宇航: - 最好的OpenStack控制台,对标Open社区项目Horizon,在易... - 4分钟前 -
-
*/}
全部消息 diff --git a/src/forge/SecuritySetting/notice/myNotice/Index.jsx b/src/forge/SecuritySetting/notice/myNotice/Index.jsx index 9badf448b..a2d5631b9 100644 --- a/src/forge/SecuritySetting/notice/myNotice/Index.jsx +++ b/src/forge/SecuritySetting/notice/myNotice/Index.jsx @@ -3,23 +3,51 @@ import { Badge, Button, Checkbox, Menu } from 'antd'; import './Index.scss'; import '../manager/Index.scss' import DelModal from '../../../Wiki/components/ModalFun'; +import Axios from 'axios'; +import { Link } from 'react-router-dom'; function MyNotice(props) { - const [noticeType, setNoticeType] = useState("2"); + const [noticeType, setNoticeType] = useState("0"); const [selectedNum, setSelectedNum] = useState(0); const [isBatchDelete, setIsBatchDelete] = useState(false); + const [notice_unread_count, setNotice_unread_count] = useState();//未读系统通知数量 + const [letter_unread_count, setLetter_unread_count] = useState(0);//未读私信数量 + const [at_unread_count, setAt_unread_count] = useState();//未读@我数量 + const [message_list, setMessage_list] = useState([]); + const [onlyUnread,setOnlyUnread] = useState(); + + useEffect(() => { + const params = { + type:noticeType==="0"?"notification":noticeType==="2"?"atme":"", + status:onlyUnread?onlyUnread:"", + limit: 20, + page: 0, + } + getMessageList(params); + }, [noticeType,onlyUnread]) + + function getMessageList(params) { + Axios.get(`/users/yystopf/messages.json`, { + params: params, + }).then((response) => { + setNotice_unread_count(response.data.unread_notification); + setAt_unread_count(response.data.unread_atme); + setMessage_list(response.data.messages); + }) + } function handleClick(e) { setNoticeType(e.key); if (e.key != "2") { setIsBatchDelete(false); } + } function onChange() { var selectedNum = 0; - const checkbox = document.getElementsByClassName("checkbox"); + const checkbox = document.getElementsByClassName("atme-checkbox"); for (var i = 0; i < checkbox.length; i++) { checkbox[i].checked ? selectedNum++ : ""; } @@ -29,7 +57,7 @@ function MyNotice(props) { function onCheckAllChange(e) { - const checkbox = document.getElementsByClassName("checkbox"); + const checkbox = document.getElementsByClassName("atme-checkbox"); for (var i = 0; i < checkbox.length; i++) { checkbox[i].checked = e.target.checked; } @@ -51,16 +79,16 @@ function MyNotice(props) {
- 系统通知 - 私信 - @我 + 系统通知 + 私信 + @我 - +
- 仅看未读{noticeType === "1" ? "私信" : "消息"}(12) + e.target.checked?setOnlyUnread(1):setOnlyUnread(2)}>仅看未读{noticeType === "1" ? `私信(12)` : noticeType==="0"?`消息(${notice_unread_count})`:`消息(${at_unread_count})`}
{noticeType === "2" ? : ""}
@@ -71,99 +99,49 @@ function MyNotice(props) { 全选   已选择 {selectedNum} 项
-      - +      +
- {noticeType === "1" ? -
- -
-
- 蒋宇航 - 4分钟前 - 删除 + {message_list.map(item => { + // 系统消息 + // 消息类别 + // const iconName = item.source.startsWith("Issue")?"icon-yixiuicon1":item.source.startsWith("Project")?"icon-daimakuicon1":item.source.startsWith("Project")?"icon-daimakuicon1": + if(noticeType ==="0" && item.type === "notification"){ + return( +
+
+ {item.status === 1? :} + + window.location.href=(`${item.notification_url}`)}>{item.content} +
+
+ {item.time_ago} + 标记为已读 +
-
props.history.push('/settings/notice/privateLetter')}> - 最好的OpenStack控制台,对标OpenStack社区Horizon项目,最好的OpenStack控制台,对标OpenStack社区Horizon项目,在易用性、页面性能等方面进行深度优化,提供简单控制台。 + ) + } else if(noticeType ==="2" && item.type === "atme"){ + //@我 + return( +
+
+ + + + {item.status === 1? :} + {item.content} + +
+
+ {item.time_ago} + 标记为已读   删除 +
-
-
- :
-
- - {/* 系统通知 */} - {noticeType === "0" ? : ""} - {noticeType === "0" ? : ""} - {noticeType === "2" ? : ""} - {/* {noticeType === "2" ? : ""} */} - {noticeType === "2" ? : ""}蒋宇航在Gitlink/Gitlink新建易修:【Bug】链接地址错误 -
-
- 4分钟前 - 标记为已读   {noticeType === "0" ? "" : 删除} -
-
} - - {noticeType === "1" ? -
- -
-
- 段甲生 - 5分钟前 - 删除 -
-
- gitlink平台 react 前端代码 -
-
-
- :
-
- - {/* 系统通知 */} - {noticeType === "0" ? : ""} - {noticeType === "0" ? : ""} - {noticeType === "2" ? : ""} - {/* {noticeType === "2" ? : ""} */} - {noticeType === "2" ? : ""}蒋宇航在蒋宇航/软件工程课程协同开发案例指派给你一个合并请求:请进行合并请求test请进行合并请求test请进行合并请求test请进行合并请求test请进行合并请求test请进行合并请求test -
-
- 10分钟前 - 标记为已读   {noticeType === "0" ? "" : 删除} -
-
} - - {noticeType === "1" ? -
- -
-
- 巴拉迪维 - 7分钟前 - 删除 -
-
- 构建卷积神经网络,训练模型,预测模型效果。 -
-
-
- :
-
- - {/* 系统通知 */} - {noticeType === "0" ?     : ""} - {noticeType === "0" ? : ""} - {noticeType === "2" ? : ""} - 你关注的仓库王涛/协同案例分析已被删除 -
-
- 1小时前 - 标记为已读   {noticeType === "0" ? "" : 删除} -
-
} + ) + } + })}
) } diff --git a/src/forge/SecuritySetting/notice/myNotice/Index.scss b/src/forge/SecuritySetting/notice/myNotice/Index.scss index 69f5e1a7f..1a5ee3fb7 100644 --- a/src/forge/SecuritySetting/notice/myNotice/Index.scss +++ b/src/forge/SecuritySetting/notice/myNotice/Index.scss @@ -127,11 +127,9 @@ button:active { .mynotice-cont{ padding:0; - position: relative; - & .at-badge{ - position: absolute; - left: 50px; + & .atme-checkbox{ + margin-right: 10px; } } @@ -143,6 +141,10 @@ button:active { min-width: 8px; height: 8px; } + + & .system-notice-blank{ + margin-right: 14px; + } } .baselineDiv{ @@ -159,6 +161,7 @@ button:active { height: 30px; padding: 0 10px; color: #333333; + margin-bottom: 5px; button{ padding:0px 12px; } @@ -193,7 +196,7 @@ button:active { .at-length{ max-width: 48rem; - margin-left: 22px; + margin-left: 18px; } #numberSpan{ color: #466AFF;