diff --git a/src/forge/Information/Component/publicBanner.jsx b/src/forge/Information/Component/publicBanner.jsx index 9bd3e1c35..9d9cd9f9e 100644 --- a/src/forge/Information/Component/publicBanner.jsx +++ b/src/forge/Information/Component/publicBanner.jsx @@ -1,9 +1,12 @@ import React , { useState , useEffect, Fragment } from 'react'; -import { Menu } from 'antd'; +import { Menu, message } from 'antd'; import { Link } from 'react-router-dom'; import { tempConfig } from '../tempInfo'; import TopEdition from './TopEdition' import leftImg from '../img/left.png'; +import MemberApply from './memberApply'; +import { memberStatusEnum } from '../Pages/zoneVIP'; +import { applyJoin, getAuditStatus } from '../api'; @@ -11,8 +14,10 @@ function PublicBanner(props){ const [ key , setKey ] = useState("1"); const { deptId } = props.match.params; const { pathname } = props.history.location; - const { data:{sectionHomepageShow, sectionHomepageTitle, sectionProjectShow,sectionDataSetShow,sectionDataSetTitle, sectionProjectTitle, sectionResourceShow, sectionResourceTitle, sectionCmsShow, sectionCmsTitle, sectionMemberShow, sectionMemberTitle, sectionHelperShow, sectionHelperTitle}, data , adminUrl, temp } = props; + const { data:{sectionHomepageShow, sectionHomepageTitle, sectionProjectShow,sectionDataSetShow,sectionDataSetTitle, sectionProjectTitle, sectionResourceShow, sectionResourceTitle, sectionCmsShow, sectionCmsTitle, sectionMemberShow, sectionMemberTitle, sectionHelperShow, sectionHelperTitle}, data , adminUrl, temp, showLoginDialog, showNotification, checkIfLogin, id } = props; const isNSCC = deptId === "NSCC"; + const [ memberStatus , setMemberStatus] = useState(memberStatusEnum.notMember); + const [ applyVisible , setApplyVisible ] = useState(false); useEffect(()=>{ if(pathname){ @@ -47,6 +52,49 @@ function PublicBanner(props){ } },[pathname]) + useEffect(()=>{ + if(id && deptId && deptId === "NSCC"){ + getMemberStatus() + } + },[id, deptId]) + + function getMemberStatus() { + getAuditStatus(id).then(res => { + if (res && res.data && res.data.code === 200) { + setMemberStatus(res.data.data) + } else { + setMemberStatus(memberStatusEnum.notMember) + } + }).catch(() => { setMemberStatus(memberStatusEnum.notMember) }) + } + + function onOk(e) { + applyJoin(id, e).then(res => { + if (res && res.data) { + showNotification(res.data.msg) + setApplyVisible(!applyVisible) + if (res.data.code === 200) { + setMemberStatus(memberStatusEnum.applying) + } + } + }) + } + + function apply() { + if(checkIfLogin()===false){ + showLoginDialog() + return false; + }else if(memberStatus === memberStatusEnum.applying){ + message.info("您已提交申请,请耐心等待管理员审核!") + return; + }else if(memberStatus === memberStatusEnum.isMember){ + message.info("您已加入会员!") + return; + }else{ + setApplyVisible(!applyVisible) + } + } + return(
@@ -56,11 +104,15 @@ function PublicBanner(props){ {!isNSCC &&

{data.mainTitle}

} {isNSCC && -

- {data.mainTitle} -

+

+ {data.mainTitle} +

+
}

+ {isNSCC &&
+ 加入社区 +
}
} { @@ -100,6 +152,7 @@ function PublicBanner(props){ { adminUrl && {window.location.href=adminUrl}}>后台管理 } + setApplyVisible(!applyVisible)} current_user={props.current_user}/> ) } diff --git a/src/forge/Information/Pages/homepage/component/specialProjectsByNSCC.jsx b/src/forge/Information/Pages/homepage/component/specialProjectsByNSCC.jsx index 70ee3f500..d54f07171 100644 --- a/src/forge/Information/Pages/homepage/component/specialProjectsByNSCC.jsx +++ b/src/forge/Information/Pages/homepage/component/specialProjectsByNSCC.jsx @@ -1,11 +1,13 @@ -import React, { useEffect, useState } from 'react'; -import { getSpecialProjectDetail, getSpecialProjectList, getSpecialProjectTypeList, getImage, getSpecialReportList } from '../../../api'; -import { Col, Divider, Icon, Row, Tag } from 'antd'; +import React, { Fragment, useEffect, useState } from 'react'; +import { getSpecialProjectDetail, getSpecialProjectList, getSpecialProjectTypeList, getImage, getSpecialReportList, checkOpenedEnterprise } from '../../../api'; +import { Col, Divider, Icon, message } from 'antd'; import Nodata from '../../../../Nodata'; import '../index.scss'; import ProjectVerticalSlider from './projectVerticalSlider'; import { Link } from 'react-router-dom'; -function SpecialProjects({ data }) { +import axios from 'axios'; + +function SpecialProjects({ data, showLoginDialog, checkIfLogin }) { const { key, homepageSpecialProjectTitle, id } = data || {}; const [typeList, setTypeList] = useState([]); const [typeId, setTypeId] = useState(undefined); @@ -78,13 +80,45 @@ function SpecialProjects({ data }) { const docId = { 6: 1048 } + const orgId = { + 6: "Supercomputing", + } return

{ setTypeId(item.id) }}> {docId[item.id] ? {item.name} : item.name} {typeId !== item.id && }

- {typeId === item.id && item.introduction &&
-
} + {typeId === item.id && + {item.introduction &&
} + {!!orgId[item.id] && { + if(checkIfLogin()===false){ + showLoginDialog(); + return; + } + // 查询是否是组织成员 + axios.get(`/organizations/${orgId[item.id]}.json`).then(result=>{ + if(result && result.data){ + if(result.data.is_member){ + checkOpenedEnterprise(result.data.id).then(res=>{ + if(res && res.data.code === 200){ + const {isOpen, url} = res.data.data + if(isOpen){ + window.open(url) + }else if(result.data.is_admin){ + message.error(组织未开通工作台,是否前往开通工作台) + }else{ + message.error("组织未开通工作台") + } + } + }) + }else{ + message.error("您不是组织成员,请先联系项目负责人加入组织") + } + } + }).catch(error=>{}) + }}>前往工作台} + +
}
})} diff --git a/src/forge/Information/Pages/homepage/index.scss b/src/forge/Information/Pages/homepage/index.scss index dc6fdef0a..fd9d70647 100644 --- a/src/forge/Information/Pages/homepage/index.scss +++ b/src/forge/Information/Pages/homepage/index.scss @@ -663,8 +663,6 @@ transition: height .5s; .desc_spt{ padding-right: 30px; - padding-bottom: 30px; - border-bottom: 1px dashed #C7CADA; transition: height .3s ease-out; opacity: 1; animation: animation1 .3s ease-in-out .3s backwards; @@ -672,6 +670,24 @@ .proTypeBox_NSCC:hover .icon-shouqi{ color: #131415; } + .gotoPM{ + background-image:linear-gradient(95.71deg,#694dff 0%,#1d5bff 100%); + border-radius:6px; + transition: all 0.3s; + padding: 12px 13px; + letter-spacing: 1px; + &:hover{ + background-image:linear-gradient(273.05deg,#694dff 0%,#1d5bff 100%); + .icon-jiantou3{ + left: 5px; + } + } + .icon-jiantou3{ + position: relative; + left: 0px; + transition: left .85s ease; + } + } } .carousel-row { align-items: center; @@ -768,6 +784,7 @@ overflow: hidden; border-radius:15px; z-index: 2; + min-height: 150px; &:hover .firstDoc_Img{ transform: scale(1.05); } diff --git a/src/forge/Information/Pages/homepage/nscc.jsx b/src/forge/Information/Pages/homepage/nscc.jsx index 00a145fd3..8b4a6ddec 100644 --- a/src/forge/Information/Pages/homepage/nscc.jsx +++ b/src/forge/Information/Pages/homepage/nscc.jsx @@ -131,7 +131,7 @@ function HeaderPageUos(props) { } - + diff --git a/src/forge/Information/Pages/zoneVIP.jsx b/src/forge/Information/Pages/zoneVIP.jsx index ea6c6c4e6..bb20c6cc8 100644 --- a/src/forge/Information/Pages/zoneVIP.jsx +++ b/src/forge/Information/Pages/zoneVIP.jsx @@ -13,7 +13,7 @@ import {setZoneVisits} from '../api' import '../indexZone1.scss'; -const memberStatusEnum = { +export const memberStatusEnum = { applying: '0', isMember: '1', notMember: '2' diff --git a/src/forge/Information/img/button.png b/src/forge/Information/img/button.png new file mode 100644 index 000000000..804a25fb2 Binary files /dev/null and b/src/forge/Information/img/button.png differ diff --git a/src/forge/Information/img/button1.png b/src/forge/Information/img/button1.png new file mode 100644 index 000000000..5e9671783 Binary files /dev/null and b/src/forge/Information/img/button1.png differ diff --git a/src/forge/Information/index.jsx b/src/forge/Information/index.jsx index a08a0b3e3..8e1a30594 100644 --- a/src/forge/Information/index.jsx +++ b/src/forge/Information/index.jsx @@ -192,7 +192,7 @@ function Index(props){ return(
- { (!sourcedetail && deptId!=="apply") && (id ? :
)} + { (!sourcedetail && deptId!=="apply") && (id ? :
)}