From 8e3bd741cbbde33cd330b534b6631e93afe1906f Mon Sep 17 00:00:00 2001 From: yuzhantian <2205129388@qq.com> Date: Wed, 13 Oct 2021 16:38:43 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20pr=E8=B7=AF=E7=94=B1bugfix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/forge/Main/CoderDepot.jsx | 2 +- src/forge/Main/Detail.js | 5 +- src/forge/Main/tree/Index.jsx | 2 +- src/forge/Merge/CreateMerge.js | 35 +++++++++-- src/forge/Merge/MergeDetail.js | 2 +- src/forge/Merge/MergeItem.js | 2 +- src/forge/Merge/MergeLinkFooter.jsx | 98 +++++++++++++++++------------ src/forge/Merge/MessageCount.js | 10 ++- src/forge/Merge/NewMerge.js | 5 ++ src/forge/Merge/UpdateMerge.js | 4 +- src/forge/Merge/merge.css | 3 +- src/forge/Merge/merge.js | 2 +- src/forge/Merge/no_data.js | 2 +- src/forge/comments/comments.js | 2 + 14 files changed, 118 insertions(+), 56 deletions(-) diff --git a/src/forge/Main/CoderDepot.jsx b/src/forge/Main/CoderDepot.jsx index 8784761fd..8dd5e4681 100644 --- a/src/forge/Main/CoderDepot.jsx +++ b/src/forge/Main/CoderDepot.jsx @@ -426,7 +426,7 @@ function CoderDepot(props){
{ baseOperate && - urlLink(`/${owner}/${projectsId}/compare/${branchName || defaultBranch}`)} >+ 合并请求 + urlLink(`/${owner}/${projectsId}/compare/master...${branchName || defaultBranch}`)} >+ 合并请求 } { baseOper && diff --git a/src/forge/Main/Detail.js b/src/forge/Main/Detail.js index 70283d310..da6d93382 100644 --- a/src/forge/Main/Detail.js +++ b/src/forge/Main/Detail.js @@ -320,6 +320,9 @@ class Detail extends Component { const url = `/${owner}/${projectsId}/detail.json`; axios.get(url).then((result) => { if (result && result.data) { + if (result.data.status === 404) { + this.props.history.push('/nopage'); + } this.setState({ projectDetail: result.data, project_id: result.data.project_id, @@ -725,7 +728,7 @@ class Detail extends Component { (props) => () } > - () } diff --git a/src/forge/Main/tree/Index.jsx b/src/forge/Main/tree/Index.jsx index 00953b052..2fc574349 100644 --- a/src/forge/Main/tree/Index.jsx +++ b/src/forge/Main/tree/Index.jsx @@ -91,7 +91,7 @@ function Index(props) {
{ (isManager || isDeveloper) && (projectDetail && projectDetail.type!==2) && - + 合并请求 + + 合并请求 } 下载 diff --git a/src/forge/Merge/CreateMerge.js b/src/forge/Merge/CreateMerge.js index 2ee29c39f..0f6859071 100644 --- a/src/forge/Merge/CreateMerge.js +++ b/src/forge/Merge/CreateMerge.js @@ -121,6 +121,15 @@ class CreateMerge extends Component { .get(url) .then((result) => { if (result) { + // 如果url上的分支不存在,取默认值master + const noMergeBranch = + (result.data.branches || []).filter( + (branch) => branch.name === mergeBranch + ).length === 0; + const noPullBranch = + (result.data.branches || []).filter( + (branch) => branch.name === pullBranch + ).length === 0; this.setState({ // isFork: result.data.is_fork, projects_names: result.data.projects_names, @@ -132,11 +141,23 @@ class CreateMerge extends Component { merge: mergeBranch, pull: pullBranch, }); + + if (!noMergeBranch && !noPullBranch) { + this.compareProject(result.data.id, branchParams); + } else { + const _message = []; + noMergeBranch && _message.push('目标分支不存在'); + noPullBranch && _message.push('源分支不存在'); + this.setState({ + showMessage: true, + defaultMessage: _message.join(' , '), + isCompareSpin: false, + }); + } } if (pullOwner !== mergeOwner) { - this.getBranchList(mergeOwner, projectId); + this.getBranchList(branchParams); } - this.compareProject(result.data.id, branchParams); this.setState({ isSpin: false }); }) .catch((error) => { @@ -192,15 +213,19 @@ class CreateMerge extends Component { }; // 根据所有者、仓库名,获取分支列表,目前仅涉及目标仓库分支查询 - getBranchList = (login, projectId) => { + getBranchList = ({ mergeOwner, projectId, mergeBranch }) => { this.setState({ isSpin: true }); - const url = `/${login}/${projectId}/pulls/get_branches.json`; + const url = `/${mergeOwner}/${projectId}/pulls/get_branches.json`; axios .get(url) .then((result) => { if (result) { + const noMergeBranch = + (result.data || []).filter((branch) => branch.name === mergeBranch) + .length === 0; this.setState({ mergeBranches: result.data, + merge: noMergeBranch ? 'master' : mergeBranch, }); } this.setState({ isSpin: false }); @@ -319,7 +344,7 @@ class CreateMerge extends Component { return (
- +
diff --git a/src/forge/Merge/MergeDetail.js b/src/forge/Merge/MergeDetail.js index 76c31ba0a..11bd3858b 100644 --- a/src/forge/Merge/MergeDetail.js +++ b/src/forge/Merge/MergeDetail.js @@ -228,7 +228,7 @@ class MergeDetail extends Component {
{ data && data.issue.user_permission ? - 编辑 + 编辑 : '' }
diff --git a/src/forge/Merge/MergeItem.js b/src/forge/Merge/MergeItem.js index eaa6ba0e0..dadd6d8a5 100644 --- a/src/forge/Merge/MergeItem.js +++ b/src/forge/Merge/MergeItem.js @@ -196,7 +196,7 @@ class MergeItem extends Component { >
diff --git a/src/forge/Merge/MergeLinkFooter.jsx b/src/forge/Merge/MergeLinkFooter.jsx index 9f43086a9..2c9aa4814 100644 --- a/src/forge/Merge/MergeLinkFooter.jsx +++ b/src/forge/Merge/MergeLinkFooter.jsx @@ -16,7 +16,7 @@ class MergeFooter extends Component { constructor(props) { super(props); this.state = { - commitsData: undefined, + commitsData: [], filesData: undefined, isSpin: false, activeKey: '1', @@ -28,6 +28,8 @@ class MergeFooter extends Component { } componentDidMount() { this.Init(); + // 为父组件绑定当前,以方便调用方法 + this.props.bindFootRef && this.props.bindFootRef(this); } componentDidUpdate(prevProps) { @@ -35,11 +37,11 @@ class MergeFooter extends Component { const newPathname = this.props.location.pathname; const prevPathname = prevProps.location.pathname; if (newPathname !== prevPathname) { - this.Init(); + this.Init(true); } } - Init = () => { + Init = (isTabChange) => { const { data, location, match } = this.props; const { pathname } = location; const { projectsId, owner, mergeId } = match.params; @@ -52,6 +54,9 @@ class MergeFooter extends Component { activeKey = '3'; this.getFile(owner, projectsId, mergeId); } + if (isTabChange && activeKey === '1') { + this.refreshComment(); + } this.setState({ activeKey: activeKey, commitCount: data && data.commits_count, @@ -59,6 +64,14 @@ class MergeFooter extends Component { }); }; + bindCommentRef = (commentRef) => { + this.childComment = commentRef; + } + + refreshComment = () => { + this.childComment && this.childComment.getjournalslist(); + } + getCommit = (owner, projectsId, mergeId) => { this.setState({ isSpin: true }); const url = `/${owner}/${projectsId}/pulls/${mergeId}/commits.json`; @@ -107,7 +120,7 @@ class MergeFooter extends Component { filesCount, commitCount, filesData, - commitsData, + commitsData = [], } = this.state; // 评论数量优先取Comment组件中列表接口返回的,其次取合并请求详情接口中的,都没有取默认值0 @@ -117,7 +130,7 @@ class MergeFooter extends Component { ); return ( -
+
- - 提交 - {commitCount > 0 && ( - {commitCount} - )} - - } - key="2" - > - {commitsData && ( - 0 && ( + + 提交 + {commitCount > 0 && ( + {commitCount} + )} + + } + key="2" + > + {commitsData.length > 0 && ( + + )} + + )} + {filesCount > 0 && ( + + 文件 + {filesCount > 0 && ( + {filesCount} + )} + + } + key="3" + > + - )} - - - 文件 - {filesCount > 0 && ( - {filesCount} - )} - - } - key="3" - > - - + /> + + )}
diff --git a/src/forge/Merge/MessageCount.js b/src/forge/Merge/MessageCount.js index abdea3dd4..685f42355 100644 --- a/src/forge/Merge/MessageCount.js +++ b/src/forge/Merge/MessageCount.js @@ -58,6 +58,11 @@ class MessageCount extends Component { // this.clickBody(); }; + + bindFootRef = (footRef) => { + this.footRef = footRef; + } + clickBody=()=>{ document.body.addEventListener('click', e => { let name = e.target.className; @@ -147,6 +152,8 @@ class MessageCount extends Component { }); const { getDetail } = this.props; getDetail && getDetail(); + // 调用子组件的方法刷新评论列表 + this.footRef && this.footRef.refreshComment(); } else { this.setState({ SpinMerge: false }); } @@ -445,7 +452,7 @@ class MessageCount extends Component { type="green" ghost className="ml20" - onClick={()=>{this.props.history.push(`/${owner}/${projectsId}/pulls/${mergeId}/updatemerge`);}} + onClick={()=>{this.props.history.push(`/${owner}/${projectsId}/pulls/${mergeId}/edit`);}} > 编辑 @@ -566,6 +573,7 @@ class MessageCount extends Component { order_id={data && data.issue.id} {...this.props} {...this.state} + bindFootRef={this.bindFootRef} >
) : ( diff --git a/src/forge/Merge/NewMerge.js b/src/forge/Merge/NewMerge.js index c5c5e2df6..900dea824 100644 --- a/src/forge/Merge/NewMerge.js +++ b/src/forge/Merge/NewMerge.js @@ -6,6 +6,11 @@ import "./merge.css"; import MergeForm from "./merge_form"; import MergeFooter from "./merge_footer"; const Option = Select.Option; +/** + * 此文件已废弃,新文件为CreateMerge.js + * 2021.10.12 + */ + class NewMerge extends Component { constructor(props) { super(props); diff --git a/src/forge/Merge/UpdateMerge.js b/src/forge/Merge/UpdateMerge.js index 8ed8034af..001bedd57 100644 --- a/src/forge/Merge/UpdateMerge.js +++ b/src/forge/Merge/UpdateMerge.js @@ -69,7 +69,7 @@ class UpdateMerge extends Component { {" "} {" "} @@ -88,7 +88,7 @@ class UpdateMerge extends Component { {" "} {" "} diff --git a/src/forge/Merge/merge.css b/src/forge/Merge/merge.css index d5ce68d19..3ea2620cb 100644 --- a/src/forge/Merge/merge.css +++ b/src/forge/Merge/merge.css @@ -211,5 +211,6 @@ form .ant-cascader-picker, form .ant-select { } .mergeRequest .folders{ - width: 72rem; + /* width: 72rem; */ + width: 100%; } \ No newline at end of file diff --git a/src/forge/Merge/merge.js b/src/forge/Merge/merge.js index 2e742d720..8a0eaedea 100644 --- a/src/forge/Merge/merge.js +++ b/src/forge/Merge/merge.js @@ -213,7 +213,7 @@ class merge extends Component { checkOperation() { const { projectsId,owner } = this.props.match.params; - this.props.history.push(`/${owner}/${projectsId}/compare`); + this.props.history.push(`/${owner}/${projectsId}/compare/master...master`); } render() { const { projectsId , owner } = this.props.match.params; diff --git a/src/forge/Merge/no_data.js b/src/forge/Merge/no_data.js index f403bb4ea..d5e4ca89b 100644 --- a/src/forge/Merge/no_data.js +++ b/src/forge/Merge/no_data.js @@ -12,7 +12,7 @@ class Nodata extends Component{

欢迎使用合并请求!

- 合并请求可以帮助您与他人协作编写代码。在使用之前,请先创建一个 合并请求 + 合并请求可以帮助您与他人协作编写代码。在使用之前,请先创建一个 合并请求
diff --git a/src/forge/comments/comments.js b/src/forge/comments/comments.js index ceebb653c..dca7581f2 100644 --- a/src/forge/comments/comments.js +++ b/src/forge/comments/comments.js @@ -35,6 +35,8 @@ class comments extends Component { componentDidMount = () => { this.getjournalslist(); + // 给父组件绑定,以使父组件可以使用组件内方法,用于切换tab时重新请求评论列表、合并请求完之后重新请求评论列表 + this.props.bindCommentRef && this.props.bindCommentRef(this); }; //添加评论