diff --git a/public/css/iconfont.css b/public/css/iconfont.css index 90707f1fa..5e40b0dc3 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=1639038498486') format('woff2'), - url('iconfont.woff?t=1639038498486') format('woff'), - url('iconfont.ttf?t=1639038498486') format('truetype'); + src: url('iconfont.woff2?t=1640585290619') format('woff2'), + url('iconfont.woff?t=1640585290619') format('woff'), + url('iconfont.ttf?t=1640585290619') format('truetype'); } .iconfont { @@ -13,6 +13,26 @@ -moz-osx-font-smoothing: grayscale; } +.icon-shengming:before { + content: "\e90b"; +} + +.icon-chenggong1:before { + content: "\e907"; +} + +.icon-a-bitian2x1:before { + content: "\e908"; +} + +.icon-xiala1:before { + content: "\e909"; +} + +.icon-xiala2:before { + content: "\e90a"; +} + .icon-jiantou1:before { content: "\e905"; } diff --git a/public/css/iconfont.js b/public/css/iconfont.js index d43e3c928..4a0868c43 100644 --- a/public/css/iconfont.js +++ b/public/css/iconfont.js @@ -1 +1 @@ -!function(a){var c,l,h,i,o,z='',t=(t=document.getElementsByTagName("script"))[t.length-1].getAttribute("data-injectcss"),p=function(a,c){c.parentNode.insertBefore(a,c)};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()}c=function(){var a,c;(c=document.createElement("div")).innerHTML=z,z=null,(a=c.getElementsByTagName("svg")[0])&&(a.setAttribute("aria-hidden","true"),a.style.position="absolute",a.style.width=0,a.style.height=0,a.style.overflow="hidden",c=a,(a=document.body).firstChild?p(c,a.firstChild):a.appendChild(c))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(c,0):(l=function(){document.removeEventListener("DOMContentLoaded",l,!1),c()},document.addEventListener("DOMContentLoaded",l,!1)):document.attachEvent&&(h=c,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 c,l,h,i,o,z='',t=(t=document.getElementsByTagName("script"))[t.length-1].getAttribute("data-injectcss"),p=function(a,c){c.parentNode.insertBefore(a,c)};if(t&&!a.__iconfont__svg__cssinject__){a.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(a){console&&console.log(a)}}function m(){o||(o=!0,h())}function v(){try{i.documentElement.doScroll("left")}catch(a){return void setTimeout(v,50)}m()}c=function(){var a,c;(c=document.createElement("div")).innerHTML=z,z=null,(a=c.getElementsByTagName("svg")[0])&&(a.setAttribute("aria-hidden","true"),a.style.position="absolute",a.style.width=0,a.style.height=0,a.style.overflow="hidden",c=a,(a=document.body).firstChild?p(c,a.firstChild):a.appendChild(c))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(c,0):(l=function(){document.removeEventListener("DOMContentLoaded",l,!1),c()},document.addEventListener("DOMContentLoaded",l,!1)):document.attachEvent&&(h=c,i=a.document,o=!1,v(),i.onreadystatechange=function(){"complete"==i.readyState&&(i.onreadystatechange=null,m())})}(window); \ No newline at end of file diff --git a/public/css/iconfont.json b/public/css/iconfont.json index a3b52d79f..0fb7117e4 100644 --- a/public/css/iconfont.json +++ b/public/css/iconfont.json @@ -5,6 +5,41 @@ "css_prefix_text": "icon-", "description": "", "glyphs": [ + { + "icon_id": "12505154", + "name": "声明", + "font_class": "shengming", + "unicode": "e90b", + "unicode_decimal": 59659 + }, + { + "icon_id": "26470597", + "name": "成功", + "font_class": "chenggong1", + "unicode": "e907", + "unicode_decimal": 59655 + }, + { + "icon_id": "26470599", + "name": "必填@2x", + "font_class": "a-bitian2x1", + "unicode": "e908", + "unicode_decimal": 59656 + }, + { + "icon_id": "26470600", + "name": "下拉", + "font_class": "xiala1", + "unicode": "e909", + "unicode_decimal": 59657 + }, + { + "icon_id": "26470601", + "name": "下拉2", + "font_class": "xiala2", + "unicode": "e90a", + "unicode_decimal": 59658 + }, { "icon_id": "26363219", "name": "箭头", diff --git a/public/css/iconfont.ttf b/public/css/iconfont.ttf index 4d5afdc54..e4b21c0be 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 24bbe3db4..2fb7db942 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 8c4cf0fe0..228840c62 100644 Binary files a/public/css/iconfont.woff2 and b/public/css/iconfont.woff2 differ diff --git a/src/forge/Main/CoderDepot.jsx b/src/forge/Main/CoderDepot.jsx index bb75c078b..004c46f21 100644 --- a/src/forge/Main/CoderDepot.jsx +++ b/src/forge/Main/CoderDepot.jsx @@ -435,7 +435,7 @@ function CoderDepot(props){
{ baseOperate && - urlLink(`/${owner}/${projectsId}/compare/master...${branchName || defaultBranch}`)} >+ 合并请求 + urlLink(`/${owner}/${projectsId}/compare/master...${turnbar(branchName || defaultBranch)}`)} >+ 合并请求 } + 疑修 {/* { diff --git a/src/forge/Main/CoderRootCommit.js b/src/forge/Main/CoderRootCommit.js index 99637c91e..b3beef413 100644 --- a/src/forge/Main/CoderRootCommit.js +++ b/src/forge/Main/CoderRootCommit.js @@ -1,6 +1,6 @@ import React , { Component } from 'react'; import { Spin , Pagination, Timeline } from 'antd'; -import { getImageUrl } from 'educoder'; +import { getImageUrl , returnbar } from 'educoder'; import { truncateCommitId ,timeFormat } from '../common/util'; import { AlignTop } from '../Component/layout'; import SelectBranch from '../Branch/Select'; @@ -15,12 +15,6 @@ import CopyTool from '../Component/CopyTool'; import './tree/Index.scss' -function returnbar(str){ - if(str && str.length>0 && str.indexOf("%2F")>-1){ - return str.replaceAll('%2F','/'); - } - return str; -} //代码库--提交页面 class CoderRootCommit extends Component{ @@ -79,7 +73,7 @@ class CoderRootCommit extends Component{ isSpining:true, page:realPage }) - this.getCommitList( branchName , realPage , limit ); + this.getCommitList( returnbar(branchName) , realPage , limit ); } getCommitList=(branch , page , limit)=>{ diff --git a/src/forge/Merge/CreateMerge.js b/src/forge/Merge/CreateMerge.js index 129079229..e6d0d0376 100644 --- a/src/forge/Merge/CreateMerge.js +++ b/src/forge/Merge/CreateMerge.js @@ -3,6 +3,8 @@ import { Input, Select, Spin, Alert } from 'antd'; import axios from 'axios'; import MergeForm from './merge_form'; import MergeFooter from './merge_footer'; +import { returnbar , turnbar } from 'educoder'; +import { Base64 } from 'js-base64'; import '../Order/order.css'; import './merge.css'; @@ -72,8 +74,8 @@ class CreateMerge extends Component { pullBranches: undefined, mergeBranches: undefined, mergeProjects: undefined, - merge: mergeBranch || 'master', - pull: pullBranch || 'master', + merge: returnbar(mergeBranch) || 'master', + pull: returnbar(pullBranch) || 'master', id: undefined, // isFork: false, projects_names: undefined, @@ -127,11 +129,11 @@ class CreateMerge extends Component { // 如果url上的分支不存在,取默认值master const noMergeBranch = (result.data.branches || []).filter( - (branch) => branch.name === mergeBranch + (branch) => branch.name === returnbar(mergeBranch) ).length === 0; const noPullBranch = (result.data.branches || []).filter( - (branch) => branch.name === pullBranch + (branch) => branch.name === returnbar(pullBranch) ).length === 0; this.setState({ // isFork: result.data.is_fork, @@ -141,8 +143,8 @@ class CreateMerge extends Component { mergeBranches: result.data.branches, project_id: result.data.project_id, id: result.data.id, - merge: mergeBranch, - pull: pullBranch, + merge: returnbar(mergeBranch), + pull: returnbar(pullBranch), }); //判断源分支是否存在 @@ -153,7 +155,7 @@ class CreateMerge extends Component { isCompareSpin: false, }); }else{ - if(pullOwner === mergeOwner){ + if(pullOwner === returnbar(mergeOwner)){ if (!noMergeBranch) { this.compareProject(true, branchParams); } else { @@ -179,13 +181,13 @@ class CreateMerge extends Component { // compare接口,获取分支对比信息 compareProject = (sameProject, branchParams) => { const { pullOwner, pullBranch, mergeOwner, mergeBranch, projectId } = branchParams; - let url = `/${mergeOwner}/${projectId}/compare`; if (sameProject) { - url += `/${pullBranch}...${mergeBranch}.json`; + url += `/${Base64.encode(returnbar(pullBranch))}...${Base64.encode(returnbar(mergeBranch))}.json`; } else { - url += `/${mergeBranch}...${pullOwner}/${projectId}:${pullBranch}.json`; + url += `/${Base64.encode(returnbar(mergeBranch))}...${pullOwner}/${projectId}:${Base64.encode(returnbar(pullBranch))}.json`; } + console.log(url); this.setState({ isSpin: false, isCompareSpin: true }); axios .get(url) @@ -255,10 +257,10 @@ class CreateMerge extends Component { let _mergeBranch = type === 'pull' ? mergeBranch : value; if (pullOwner === mergeOwner) { // 如果仓库相同, compare/目标分支...源分支 - _url += `${_mergeBranch}...${_pullBranch}`; + _url += `${turnbar(_mergeBranch)}...${turnbar(_pullBranch)}`; } else { // 如果仓库不同, compare/目标分支...源分支 - _url += `${_mergeBranch}...${pullOwner}:${_pullBranch}`; + _url += `${turnbar(_mergeBranch)}...${pullOwner}:${turnbar(_pullBranch)}`; } this.props.history.push(_url); }; @@ -292,11 +294,11 @@ class CreateMerge extends Component { if (login === pullOwner) { // 如果切换后, 仓库与源仓库一致了 this.props.history.push( - `/${login}/${identifier}/compare/master...${pullBranch}` + `/${login}/${identifier}/compare/master...${turnbar(pullBranch)}` ); } else { this.props.history.push( - `/${login}/${identifier}/compare/master...${pullOwner}:${pullBranch}` + `/${login}/${identifier}/compare/master...${pullOwner}:${turnbar(pullBranch)}` ); } } diff --git a/src/forge/Newfile/UserSubmitComponent.js b/src/forge/Newfile/UserSubmitComponent.js index 79b33361a..08cac8d69 100644 --- a/src/forge/Newfile/UserSubmitComponent.js +++ b/src/forge/Newfile/UserSubmitComponent.js @@ -126,6 +126,30 @@ class UserSubmitComponent extends Component { }); }; + checkBranchName=(rule, value, callback)=>{ + if(!value){ + callback(); + } + if (value) { + const str = '^*/'; + let reg = /\\/g; + if(reg.test(value)){ + callback(分支名不能包含下列任何字符:^*\/); + }else{ + for(var i=0;i -1){ + callback(分支名不能包含下列任何字符:^*\/); + return; + }else{ + continue; + } + } + } + } + callback(); + } + render() { const { submitType, filename, isSpin } = this.state; const { getFieldDecorator } = this.props.form; @@ -211,6 +235,9 @@ class UserSubmitComponent extends Component { required: true, message: "请输入分支名称", }, + { + validator:this.checkBranchName + } ], })( ; }; + + bindCommentRef = (commentRef) => { + this.childComment = commentRef; + } + + refreshFunc=()=> { + this.childComment && this.childComment.getjournalslist(); + } + render() { const { projectsId, orderId, owner } = this.props.match.params; const { data, isSpins } = this.state; @@ -292,11 +301,12 @@ class Detail extends Component { order_id={orderId} showNotification={this.props.showNotification} {...this.props} + bindCommentRef={this.bindCommentRef} />
- +
diff --git a/src/forge/Order/order.css b/src/forge/Order/order.css index 0abd116f2..60bb5d2bb 100644 --- a/src/forge/Order/order.css +++ b/src/forge/Order/order.css @@ -692,7 +692,7 @@ a.issue-type-button.active:hover { .issue-edit-form-right{margin-bottom: 0 !important;} .plr10{padding: 0 10px;} .issue-form-index .editormd-toolbar{position: absolute !important;} -.list-right-item-padding{padding: 20px 35px 10px 35px;} +.list-right-item-padding{padding: 20px 35px 10px 35px;margin-bottom: 20px;} .tagColor { display: inline-block; width: 28px; diff --git a/src/forge/claims/claim.scss b/src/forge/claims/claim.scss index 092fa19bd..a8bbac40e 100644 --- a/src/forge/claims/claim.scss +++ b/src/forge/claims/claim.scss @@ -60,13 +60,13 @@ flex-wrap: wrap; padding-bottom: 2px; a{ - margin: 0px 17px 10px 0px; + margin: 0px 10px 10px 0px; img{ border-radius: 50%; width: 40px; height: 40px; } - &:nth-child(5n){ + &:nth-child(4n){ margin-right: 0px; } } diff --git a/src/forge/claims/claims.js b/src/forge/claims/claims.js index f45115b8d..4361a10a1 100644 --- a/src/forge/claims/claims.js +++ b/src/forge/claims/claims.js @@ -53,6 +53,8 @@ class claims extends React.Component { claimNotePop:false, claimNoteBody:'', }); + const { refreshFunc } = this.props; + refreshFunc && refreshFunc(); }) .catch(error => { console.log(error); @@ -69,6 +71,7 @@ class claims extends React.Component { yesClaim = ()=>{ const {issue_id,claimNoteBody} = this.state; + const { refreshFunc } = this.props; axios.post(`/issues/${issue_id}/claims.json`, { claim_note: claimNoteBody @@ -79,6 +82,7 @@ class claims extends React.Component { currentUserClaimed: result.data.currentUserclaimed, claimNotePop:false, }); + refreshFunc && refreshFunc(); }) .catch(error => { console.log(error); @@ -99,6 +103,7 @@ class claims extends React.Component { updateClaim = (claimId,key)=>{ const {issue_id,claimNoteBody,claimNoteBodyChanged} = this.state; + const { refreshFunc } = this.props; if(claimNoteBodyChanged){ axios.put(`/issues/${issue_id}/claims.json`, { claim_note: claimNoteBody, @@ -109,6 +114,7 @@ class claims extends React.Component { claimerdata: result.data.claimers, currentUserClaimed: result.data.currentUserclaimed, }); + refreshFunc && refreshFunc(); }) .catch(error => { console.log(error); @@ -238,12 +244,12 @@ class claims extends React.Component { return (
- {currentUserClaimed==1?( -
+ {currentUserClaimed===1?( +
):( - + )} @@ -253,7 +259,10 @@ class claims extends React.Component { { claimerdata&&claimerdata.length>0?(
- 声明要关注/解决此疑修的用户{claimerdata.length} +
+ 声明要关注/解决此疑修的用户 + {claimerdata.length} +
this.setVisibleFunc(false)}> {claimerdata.map((item,key)=>{ return( @@ -266,7 +275,10 @@ class claims extends React.Component { })}
):( -
声明要关注/解决此疑修的用户 0
+
+ 声明要关注/解决此疑修的用户 + 0 +
)}
diff --git a/src/forge/users/Material/Base.jsx b/src/forge/users/Material/Base.jsx index 61a9d6f1c..c17bfbe36 100644 --- a/src/forge/users/Material/Base.jsx +++ b/src/forge/users/Material/Base.jsx @@ -76,9 +76,9 @@ export default Form.create()(
{getFieldDecorator("gender",{ - rules:[{required:true,message:"请选择性别"}] + rules:[] })( - + @@ -87,7 +87,7 @@ export default Form.create()(
{getFieldDecorator("custom_department",{ - rules:[{required:true,message:"请输入单位名称"}] + rules:[] })( )}