diff --git a/public/css/iconfont.css b/public/css/iconfont.css
index 2aa4e5fe6..39ebe18fe 100644
--- a/public/css/iconfont.css
+++ b/public/css/iconfont.css
@@ -1,8 +1,8 @@
@font-face {
font-family: "iconfont"; /* Project id 2340181 */
- src: url('iconfont.woff2?t=1652927945088') format('woff2'),
- url('iconfont.woff?t=1652927945088') format('woff'),
- url('iconfont.ttf?t=1652927945088') format('truetype');
+ src: url('iconfont.woff2?t=1653550272457') format('woff2'),
+ url('iconfont.woff?t=1653550272457') format('woff'),
+ url('iconfont.ttf?t=1653550272457') format('truetype');
}
.iconfont {
@@ -13,6 +13,10 @@
-moz-osx-font-smoothing: grayscale;
}
+.icon-tuichuicon:before {
+ content: "\e936";
+}
+
.icon-bangzhuzhongxinicon1:before {
content: "\e935";
}
diff --git a/public/css/iconfont.js b/public/css/iconfont.js
index 818422324..0b03f5640 100644
--- a/public/css/iconfont.js
+++ b/public/css/iconfont.js
@@ -1 +1 @@
-!function(a){var l,c,h,i,o,z='',t=(t=document.getElementsByTagName("script"))[t.length-1].getAttribute("data-injectcss"),p=function(a,l){l.parentNode.insertBefore(a,l)};if(t&&!a.__iconfont__svg__cssinject__){a.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(a){console&&console.log(a)}}function v(){o||(o=!0,h())}function m(){try{i.documentElement.doScroll("left")}catch(a){return void setTimeout(m,50)}v()}l=function(){var a,l=document.createElement("div");l.innerHTML=z,z=null,(l=l.getElementsByTagName("svg")[0])&&(l.setAttribute("aria-hidden","true"),l.style.position="absolute",l.style.width=0,l.style.height=0,l.style.overflow="hidden",l=l,(a=document.body).firstChild?p(l,a.firstChild):a.appendChild(l))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(l,0):(c=function(){document.removeEventListener("DOMContentLoaded",c,!1),l()},document.addEventListener("DOMContentLoaded",c,!1)):document.attachEvent&&(h=l,i=a.document,o=!1,m(),i.onreadystatechange=function(){"complete"==i.readyState&&(i.onreadystatechange=null,v())})}(window);
\ No newline at end of file
+!function(a){var l,c,h,i,o,z='',t=(t=document.getElementsByTagName("script"))[t.length-1].getAttribute("data-injectcss"),p=function(a,l){l.parentNode.insertBefore(a,l)};if(t&&!a.__iconfont__svg__cssinject__){a.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(a){console&&console.log(a)}}function v(){o||(o=!0,h())}function m(){try{i.documentElement.doScroll("left")}catch(a){return void setTimeout(m,50)}v()}l=function(){var a,l=document.createElement("div");l.innerHTML=z,z=null,(l=l.getElementsByTagName("svg")[0])&&(l.setAttribute("aria-hidden","true"),l.style.position="absolute",l.style.width=0,l.style.height=0,l.style.overflow="hidden",l=l,(a=document.body).firstChild?p(l,a.firstChild):a.appendChild(l))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(l,0):(c=function(){document.removeEventListener("DOMContentLoaded",c,!1),l()},document.addEventListener("DOMContentLoaded",c,!1)):document.attachEvent&&(h=l,i=a.document,o=!1,m(),i.onreadystatechange=function(){"complete"==i.readyState&&(i.onreadystatechange=null,v())})}(window);
\ No newline at end of file
diff --git a/public/css/iconfont.json b/public/css/iconfont.json
index 8292425fe..9dc3ea5e5 100644
--- a/public/css/iconfont.json
+++ b/public/css/iconfont.json
@@ -5,6 +5,13 @@
"css_prefix_text": "icon-",
"description": "",
"glyphs": [
+ {
+ "icon_id": "29934961",
+ "name": "退出icon",
+ "font_class": "tuichuicon",
+ "unicode": "e936",
+ "unicode_decimal": 59702
+ },
{
"icon_id": "29811507",
"name": "帮助中心icon",
diff --git a/public/css/iconfont.ttf b/public/css/iconfont.ttf
index aaf41b746..5ea5e9206 100644
Binary files a/public/css/iconfont.ttf and b/public/css/iconfont.ttf differ
diff --git a/public/css/iconfont.woff b/public/css/iconfont.woff
index 7ad90ffbf..6b8a4f2ee 100644
Binary files a/public/css/iconfont.woff and b/public/css/iconfont.woff differ
diff --git a/public/css/iconfont.woff2 b/public/css/iconfont.woff2
index f45e4e1d4..ce5758a2e 100644
Binary files a/public/css/iconfont.woff2 and b/public/css/iconfont.woff2 differ
diff --git a/src/forge/DevOps/Manage/Params.jsx b/src/forge/DevOps/Manage/Params.jsx
index 1c4540ccc..7116164b3 100644
--- a/src/forge/DevOps/Manage/Params.jsx
+++ b/src/forge/DevOps/Manage/Params.jsx
@@ -104,7 +104,7 @@ function Params(props){
引擎 - 参数管理
- 返回
+ 返回
diff --git a/src/forge/DevOps/Structure.jsx b/src/forge/DevOps/Structure.jsx
index 99040d386..03d646b67 100644
--- a/src/forge/DevOps/Structure.jsx
+++ b/src/forge/DevOps/Structure.jsx
@@ -290,7 +290,7 @@ function Structure(props,ref){
构建列表
- 返回
+ 返回
diff --git a/src/forge/DevOps/disposePipeline.jsx b/src/forge/DevOps/disposePipeline.jsx
index deabc1495..1b3a64361 100644
--- a/src/forge/DevOps/disposePipeline.jsx
+++ b/src/forge/DevOps/disposePipeline.jsx
@@ -275,7 +275,10 @@ function disposePipeline(props){
...params
}).then(result=>{
if(result){
- props.history.push(`/${owner}/${projectsId}/devops`);
+ props.history.push({
+ pathname:`/${owner}/${projectsId}/devops`,
+ state:{open_devops:true}
+ });
}
setLoading(false);
}).catch(error=>{
diff --git a/src/forge/Main/CoderDepot.jsx b/src/forge/Main/CoderDepot.jsx
index 52c76b482..711463631 100644
--- a/src/forge/Main/CoderDepot.jsx
+++ b/src/forge/Main/CoderDepot.jsx
@@ -522,7 +522,7 @@ function CoderDepot(props){
(dirInfo && dirInfo.length === 0) && !fileInfo ? :""
}
{/* readme文件显示(显示文件详情时不显示readme文件) */}
- { (readme && readme.content) ? :"" }
+ { (readme && readme.replace_content) ? :"" }
{
diff --git a/src/forge/Main/Detail.js b/src/forge/Main/Detail.js
index 60b2fc3b8..7838c39d0 100644
--- a/src/forge/Main/Detail.js
+++ b/src/forge/Main/Detail.js
@@ -644,7 +644,8 @@ class Detail extends Component {
open_devops={open_devops}
platform={platform}
urlFlag={urlFlag}
- isManager={isManager}
+ showNotification={this.props.showNotification}
+ current_user={current_user}
/>
}
diff --git a/src/forge/Main/sub/DetailBanner.jsx b/src/forge/Main/sub/DetailBanner.jsx
index 8a0472ce0..c344710b8 100644
--- a/src/forge/Main/sub/DetailBanner.jsx
+++ b/src/forge/Main/sub/DetailBanner.jsx
@@ -2,9 +2,12 @@ import React, { useEffect, useState } from 'react';
import { Skeleton , Tooltip} from 'antd';
import { Link } from 'react-router-dom';
import { numFormat } from 'educoder';
+import QuitBox from './quit';
+import axios from 'axios';
-function DetailBanner({ history,list , owner , projectsId , isManager , url , pathname , state , urlFlag , projectDetail , platform ,open_devops }){
+function DetailBanner({ history,list , owner , projectsId ,showNotification , url , pathname , state , urlFlag , projectDetail , platform ,open_devops ,current_user }){
const [ menuName , setMenuName ] = useState(undefined);
+ const [ visible , setVisible ] = useState(false);
useEffect(()=>{
if(list){
// 没有资源库banner但是通过连接进资源库页面时
@@ -19,8 +22,20 @@ function DetailBanner({ history,list , owner , projectsId , isManager , url , pa
setMenuName(list);
}
},[list]);
+
+ function onSuccess(){
+ const url = `/${owner}/${projectsId}/quit.json`;
+ axios.post(url).then(result=>{
+ if(result){
+ showNotification("已成功退出仓库!");
+ history.push(`/${current_user && current_user.login}`);
+ }
+ }).catch(error=>{})
+ }
+
return(
+
setVisible(false)} name={projectDetail && projectDetail.name} onSuccess={onSuccess}/>
{
menuName && projectDetail ?
@@ -135,6 +150,10 @@ function DetailBanner({ history,list , owner , projectsId , isManager , url , pa
}
+ {
+ item.menu_name === "quit" &&
+ setVisible(true)}>退出仓库
+ }
)
})
diff --git a/src/forge/Main/sub/quit.jsx b/src/forge/Main/sub/quit.jsx
new file mode 100644
index 000000000..1748b988b
--- /dev/null
+++ b/src/forge/Main/sub/quit.jsx
@@ -0,0 +1,27 @@
+import React from 'react';
+import { AlignCenter } from '../../Component/layout';
+import Modals from '../../Component/PublicModal/Index';
+import { Button } from 'antd';
+
+function QuitBox({ visible , onCancel ,onSuccess , name }) {
+ return(
+
+
+
+
+ }
+ >
+
+
+ 确定退出 {name} 仓库吗?
+
请进行确认以防数据的丢失
+
+
+ )
+}
+export default QuitBox;
\ No newline at end of file
diff --git a/src/forge/users/Avatar/Index.jsx b/src/forge/users/Avatar/Index.jsx
index aa7669a6e..0f9e51f92 100644
--- a/src/forge/users/Avatar/Index.jsx
+++ b/src/forge/users/Avatar/Index.jsx
@@ -58,7 +58,9 @@ function Index({onCancel,avatarImg,login}){
const reader = new FileReader();
reader.onload = () => {
- setAvatarPhoto(reader.result);
+ if(reader.result){
+ setAvatarPhoto(reader.result);
+ }
};
reader.readAsDataURL(files[0]);
}
diff --git a/src/glcc/index.scss b/src/glcc/index.scss
index 4bcee4139..ec6ec341b 100644
--- a/src/glcc/index.scss
+++ b/src/glcc/index.scss
@@ -21,7 +21,10 @@
.icon-bangzhuzhongxinicon, .icon-bangzhuzhongxinicon1{color:#ffffff}
}
}
-.qqChatBox .ant-popover-arrow{display: none;}
+.qqChatBox{
+ position: fixed;
+ .ant-popover-arrow{display: none;}
+}
.qqChat{
margin: -12px -16px;
background-image:linear-gradient(180deg,#f8faff 0%,#dee7ff 100%);
diff --git a/src/glcc/project/taskList/index.jsx b/src/glcc/project/taskList/index.jsx
index 13519b188..43489f184 100644
--- a/src/glcc/project/taskList/index.jsx
+++ b/src/glcc/project/taskList/index.jsx
@@ -150,7 +150,7 @@ function TaskList({applyTaskId, setStudentInfoReset, current_user, showLoginDial
{current_user && current_user.login ?
{setCurrent(1);setApply(e.target.checked)}}>已报名 :
}
-
{ setCurrent(1); setKeyword(value) }} />
+ { setCurrent(1); setKeyword(value) }} />
5、提交申请后,请耐心等待,我们会在2022年7月1日公布入围结果。如有任何问题,请添加开源夏令营QQ群进行咨询
-
学生报名
+
学生报名
申请课题
@@ -394,7 +394,7 @@ function Apply(props) {
{getFieldDecorator("location", {
rules: []
})(
-
+
)}
{helper('所在年级',
@@ -438,7 +438,7 @@ function Apply(props) {
onChange={handleChange}
>
{imageUrl ?

: userApplyInfo && userApplyInfo.proveAttachmentId ?
-
:
+
:
}
@@ -468,11 +468,18 @@ function Apply(props) {
)}
{helper('自荐书',
-
,
+
,
'memo' + i,
[{ required: true, message: "请正确输入自荐书" },
{ max: 500, message: '超出限制长度500位字符,请重新编辑' }],
-
{helper('附件',