2020-05-22 17:00:18 +08:00
|
|
|
|
import React, { Component } from "react";
|
2021-03-04 15:08:58 +08:00
|
|
|
|
import { Form, Input, Checkbox, Select , Spin } from "antd";
|
2020-06-17 09:43:08 +08:00
|
|
|
|
import Title from '../Component/Title';
|
|
|
|
|
|
import {WhiteBack} from '../Component/layout';
|
2021-04-25 17:38:47 +08:00
|
|
|
|
import DivertModal from '../Divert/DivertModal';
|
2021-04-27 17:12:00 +08:00
|
|
|
|
import { Link } from 'react-router-dom';
|
2020-05-22 17:00:18 +08:00
|
|
|
|
import axios from "axios";
|
2020-06-17 09:43:08 +08:00
|
|
|
|
import "./setting.scss";
|
2020-03-16 14:12:11 +08:00
|
|
|
|
const { TextArea } = Input;
|
|
|
|
|
|
const { Option } = Select;
|
2021-03-19 15:46:37 +08:00
|
|
|
|
|
|
|
|
|
|
const menu = [
|
|
|
|
|
|
{name:"主页",index:"home"},
|
|
|
|
|
|
{name:"代码库",index:"code"},
|
|
|
|
|
|
{name:"易修 (Issue)",index:"issues"},
|
|
|
|
|
|
{name:"合并请求",index:"pulls"},
|
2021-08-04 11:18:21 +08:00
|
|
|
|
{name:"Wiki",index:"wiki"},
|
2021-03-19 15:46:37 +08:00
|
|
|
|
{name:"工作流(beta版)",index:"devops"},
|
2021-08-27 16:07:21 +08:00
|
|
|
|
// {name:"资源库",index:"resources"},
|
2021-03-19 15:46:37 +08:00
|
|
|
|
{name:"里程碑",index:"versions"},
|
|
|
|
|
|
{name:"动态",index:"activity"},
|
|
|
|
|
|
]
|
2020-05-22 17:00:18 +08:00
|
|
|
|
class Setting extends Component {
|
|
|
|
|
|
constructor(props) {
|
2020-03-16 14:12:11 +08:00
|
|
|
|
super(props);
|
2020-05-22 17:00:18 +08:00
|
|
|
|
this.state = {
|
|
|
|
|
|
CategoryList: undefined,
|
|
|
|
|
|
LanguageList: undefined,
|
|
|
|
|
|
private_check: undefined,
|
2021-03-19 15:46:37 +08:00
|
|
|
|
loading:true,
|
2021-04-25 17:38:47 +08:00
|
|
|
|
project_units:['home',"activity","code"],
|
2021-04-26 14:59:19 +08:00
|
|
|
|
divertVisible:false,
|
2021-06-30 10:43:22 +08:00
|
|
|
|
is_transfering:undefined,
|
|
|
|
|
|
projectName:undefined
|
2020-05-22 17:00:18 +08:00
|
|
|
|
};
|
2020-03-16 14:12:11 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2020-07-06 16:26:18 +08:00
|
|
|
|
componentDidUpdate=(prevPros)=>{
|
2021-06-29 17:29:35 +08:00
|
|
|
|
|
2020-07-06 16:26:18 +08:00
|
|
|
|
if(prevPros && this.props && !this.props.checkIfLogin()){
|
|
|
|
|
|
this.props.history.push("/403")
|
2021-06-29 17:29:35 +08:00
|
|
|
|
return;
|
2020-07-06 16:26:18 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2020-05-22 17:00:18 +08:00
|
|
|
|
componentDidMount = () => {
|
2020-03-16 14:12:11 +08:00
|
|
|
|
this.getCategory();
|
|
|
|
|
|
this.getLanguage();
|
|
|
|
|
|
this.getInfo();
|
2020-05-22 17:00:18 +08:00
|
|
|
|
};
|
|
|
|
|
|
getLanguage = () => {
|
|
|
|
|
|
const url = `/project_languages.json`;
|
|
|
|
|
|
axios
|
|
|
|
|
|
.get(url)
|
|
|
|
|
|
.then((result) => {
|
|
|
|
|
|
if (result) {
|
|
|
|
|
|
let LanguageList = this.setOptionsList(result.data.project_languages);
|
|
|
|
|
|
this.setState({
|
|
|
|
|
|
LanguageList,
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
.catch((error) => {});
|
|
|
|
|
|
};
|
2020-03-16 14:12:11 +08:00
|
|
|
|
|
2020-05-22 17:00:18 +08:00
|
|
|
|
getInfo = () => {
|
2020-08-12 18:13:18 +08:00
|
|
|
|
const { projectsId , owner } = this.props.match.params;
|
|
|
|
|
|
const url = `/${owner}/${projectsId}/edit.json`;
|
2020-05-22 17:00:18 +08:00
|
|
|
|
axios
|
|
|
|
|
|
.get(url)
|
|
|
|
|
|
.then((result) => {
|
|
|
|
|
|
if (result) {
|
2021-03-19 15:46:37 +08:00
|
|
|
|
const { project_units } = this.state;
|
|
|
|
|
|
let units = result.data.project_units;
|
|
|
|
|
|
units.push(...project_units);
|
|
|
|
|
|
|
2020-05-22 17:00:18 +08:00
|
|
|
|
this.props.form.setFieldsValue({
|
|
|
|
|
|
...result.data,
|
2021-03-19 15:46:37 +08:00
|
|
|
|
project_units:units
|
2020-05-22 17:00:18 +08:00
|
|
|
|
});
|
|
|
|
|
|
this.setState({
|
2021-06-30 10:43:22 +08:00
|
|
|
|
projectName:result.data.project_name,
|
2020-05-22 17:00:18 +08:00
|
|
|
|
private_check: result.data.private,
|
2021-03-19 15:46:37 +08:00
|
|
|
|
loading:false,
|
2021-04-26 14:59:19 +08:00
|
|
|
|
project_units:units,
|
2021-04-27 17:12:00 +08:00
|
|
|
|
transfer:result.data.transfer,
|
2021-04-26 14:59:19 +08:00
|
|
|
|
is_transfering:result.data.is_transfering,
|
2020-05-22 17:00:18 +08:00
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
.catch((error) => {
|
|
|
|
|
|
console.log(error);
|
|
|
|
|
|
});
|
|
|
|
|
|
};
|
2020-03-16 14:12:11 +08:00
|
|
|
|
|
2020-05-22 17:00:18 +08:00
|
|
|
|
getCategory = () => {
|
|
|
|
|
|
const url = `/project_categories.json`;
|
|
|
|
|
|
axios
|
|
|
|
|
|
.get(url)
|
|
|
|
|
|
.then((result) => {
|
|
|
|
|
|
if (result) {
|
|
|
|
|
|
let CategoryList = this.setOptionsList(
|
|
|
|
|
|
result.data.project_categories
|
|
|
|
|
|
);
|
|
|
|
|
|
this.setState({
|
|
|
|
|
|
CategoryList,
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
.catch((error) => {});
|
|
|
|
|
|
};
|
2020-03-16 14:12:11 +08:00
|
|
|
|
|
2020-05-22 17:00:18 +08:00
|
|
|
|
setOptionsList = (data) => {
|
2020-03-16 14:12:11 +08:00
|
|
|
|
let list = undefined;
|
2020-05-22 17:00:18 +08:00
|
|
|
|
if (data && data.length > 0) {
|
|
|
|
|
|
list = data.map((item, key) => {
|
|
|
|
|
|
return (
|
|
|
|
|
|
<Option key={item.id} value={item.id}>
|
|
|
|
|
|
{item.name}
|
|
|
|
|
|
</Option>
|
|
|
|
|
|
);
|
|
|
|
|
|
});
|
2020-03-16 14:12:11 +08:00
|
|
|
|
}
|
|
|
|
|
|
return list;
|
2020-05-22 17:00:18 +08:00
|
|
|
|
};
|
2020-03-16 14:12:11 +08:00
|
|
|
|
|
|
|
|
|
|
// 更新仓库设置
|
2020-05-22 17:00:18 +08:00
|
|
|
|
resetSetting = () => {
|
|
|
|
|
|
this.props.form.validateFields((err, values) => {
|
|
|
|
|
|
if (!err) {
|
2021-03-04 15:08:58 +08:00
|
|
|
|
this.setState({
|
|
|
|
|
|
loading:true
|
|
|
|
|
|
})
|
2020-08-12 18:13:18 +08:00
|
|
|
|
const { projectsId , owner } = this.props.match.params;
|
2021-03-19 15:46:37 +08:00
|
|
|
|
const navUrl = `/${owner}/${projectsId}/project_units.json`;
|
2020-08-12 18:13:18 +08:00
|
|
|
|
|
2021-03-22 11:24:07 +08:00
|
|
|
|
let unit = values.project_units.filter(item => (item !== "home" && item!== "activity" && item!== "code"));
|
2021-03-19 15:46:37 +08:00
|
|
|
|
axios.post(navUrl, {
|
|
|
|
|
|
unit_types:unit
|
|
|
|
|
|
}).then((result) => {
|
|
|
|
|
|
if (result) {
|
|
|
|
|
|
this.update(values);
|
|
|
|
|
|
}
|
|
|
|
|
|
}).catch(error=>{})
|
2020-03-16 14:12:11 +08:00
|
|
|
|
}
|
2020-05-22 17:00:18 +08:00
|
|
|
|
});
|
|
|
|
|
|
};
|
2020-03-16 14:12:11 +08:00
|
|
|
|
|
2021-03-19 15:46:37 +08:00
|
|
|
|
update=(values)=>{
|
|
|
|
|
|
const { projectsId , owner } = this.props.match.params;
|
|
|
|
|
|
const { private_check } = this.state;
|
|
|
|
|
|
const url = `/${owner}/${projectsId}.json`;
|
|
|
|
|
|
axios.put(url, {
|
|
|
|
|
|
name: values.project_name,
|
|
|
|
|
|
description: values.project_description,
|
|
|
|
|
|
private: private_check,
|
|
|
|
|
|
...values,
|
|
|
|
|
|
}).then((result) => {
|
|
|
|
|
|
if (result) {
|
|
|
|
|
|
this.props.showNotification(`仓库信息修改成功!`);
|
|
|
|
|
|
const { getDetail } = this.props;
|
|
|
|
|
|
getDetail && getDetail();
|
|
|
|
|
|
this.setState({
|
|
|
|
|
|
loading:false
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
}).catch((error) => {
|
|
|
|
|
|
console.log(error);
|
|
|
|
|
|
this.setState({
|
|
|
|
|
|
loading:false
|
|
|
|
|
|
})
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2020-03-16 14:12:11 +08:00
|
|
|
|
// 删除本仓库
|
2020-05-22 17:00:18 +08:00
|
|
|
|
deleteProject = () => {
|
2021-06-30 10:43:22 +08:00
|
|
|
|
const { projectsId , owner } = this.props.match.params;
|
|
|
|
|
|
const { projectName } = this.state;
|
2020-03-16 14:12:11 +08:00
|
|
|
|
this.props.confirm({
|
2021-07-01 15:48:04 +08:00
|
|
|
|
content: <span style={{display:"block",textAlign:"left"}}>该操作无法撤销!且将会一并删除相关的易修、合并请求、工作流、里程碑、动态等数据。<br/>是否确认删除 <span style={{fontWeight:"bold"}}>{owner}/{projectName}({projectsId})</span>?</span>,
|
2020-05-22 17:00:18 +08:00
|
|
|
|
onOk: () => {
|
2020-08-12 18:13:18 +08:00
|
|
|
|
const url = `/${owner}/${projectsId}.json`;
|
2021-09-02 13:37:24 +08:00
|
|
|
|
axios.delete(url).then((result) => {
|
2020-05-22 17:00:18 +08:00
|
|
|
|
this.props.showNotification("仓库删除成功!");
|
2021-09-02 13:37:24 +08:00
|
|
|
|
this.props.history.push(`/${owner}`);
|
2020-05-22 17:00:18 +08:00
|
|
|
|
})
|
|
|
|
|
|
.catch((error) => {
|
|
|
|
|
|
console.log(error);
|
|
|
|
|
|
});
|
|
|
|
|
|
},
|
|
|
|
|
|
});
|
|
|
|
|
|
};
|
|
|
|
|
|
changePrivate = (e) => {
|
2020-03-16 14:12:11 +08:00
|
|
|
|
this.setState({
|
2020-05-22 17:00:18 +08:00
|
|
|
|
private_check: e.target.checked,
|
|
|
|
|
|
});
|
|
|
|
|
|
};
|
2020-03-16 14:12:11 +08:00
|
|
|
|
|
2021-04-25 17:38:47 +08:00
|
|
|
|
// 转移仓库
|
|
|
|
|
|
DivertProject=()=>{
|
|
|
|
|
|
this.setState({
|
|
|
|
|
|
divertVisible:true
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
// 取消仓库转移
|
|
|
|
|
|
CancelDivertProject=()=>{
|
2021-04-26 14:59:19 +08:00
|
|
|
|
this.props.confirm({
|
|
|
|
|
|
content: "是否确认取消将此项目转移给他人?",
|
|
|
|
|
|
onOk: () => {
|
|
|
|
|
|
const { projectsId , owner } = this.props.match.params;
|
|
|
|
|
|
const url = `/${owner}/${projectsId}/applied_transfer_projects/cancel.json`;
|
|
|
|
|
|
axios.post(url).then(result=>{
|
|
|
|
|
|
if(result && result.data){
|
|
|
|
|
|
this.setState({
|
|
|
|
|
|
is_transfering:false
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
}).catch(error=>{})
|
|
|
|
|
|
},
|
|
|
|
|
|
});
|
2021-04-25 17:38:47 +08:00
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
// 确定转移仓库
|
2021-04-27 17:12:00 +08:00
|
|
|
|
onSuccess=(owner)=>{
|
2021-09-02 14:13:16 +08:00
|
|
|
|
if(owner){
|
|
|
|
|
|
this.setState({
|
|
|
|
|
|
is_transfering:true,
|
|
|
|
|
|
transfer:owner
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
2021-04-26 14:59:19 +08:00
|
|
|
|
this.setState({
|
2021-09-02 14:13:16 +08:00
|
|
|
|
divertVisible:false
|
2021-04-26 14:59:19 +08:00
|
|
|
|
})
|
2021-04-25 17:38:47 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2020-05-22 17:00:18 +08:00
|
|
|
|
render() {
|
2020-03-16 14:12:11 +08:00
|
|
|
|
const { getFieldDecorator } = this.props.form;
|
2021-04-26 14:59:19 +08:00
|
|
|
|
const { projectsId , owner } = this.props.match.params;
|
2021-04-27 13:50:05 +08:00
|
|
|
|
const { projectDetail } = this.props;
|
2020-03-16 14:12:11 +08:00
|
|
|
|
|
2021-04-27 17:12:00 +08:00
|
|
|
|
const { CategoryList, LanguageList, private_check ,loading , divertVisible , is_transfering, transfer } = this.state;
|
2021-05-07 16:00:57 +08:00
|
|
|
|
let mirror = projectDetail && projectDetail.mirror;
|
2021-05-07 17:33:41 +08:00
|
|
|
|
let type = projectDetail && projectDetail.type;
|
2021-06-29 17:29:35 +08:00
|
|
|
|
const forked_from_project_id = this.props && this.props.projectDetail && this.props.projectDetail.forked_from_project_id;
|
2020-05-22 17:00:18 +08:00
|
|
|
|
return (
|
2020-03-16 14:12:11 +08:00
|
|
|
|
<div>
|
2021-04-26 14:59:19 +08:00
|
|
|
|
<DivertModal
|
|
|
|
|
|
owner={owner}
|
|
|
|
|
|
repo={projectsId}
|
|
|
|
|
|
visible={divertVisible}
|
|
|
|
|
|
onSuccess={this.onSuccess}
|
|
|
|
|
|
onCancel={()=>{this.setState({divertVisible:false})}}
|
|
|
|
|
|
/>
|
2021-03-04 15:08:58 +08:00
|
|
|
|
<Spin spinning={loading}>
|
2021-03-19 11:35:03 +08:00
|
|
|
|
<WhiteBack>
|
2021-03-04 15:08:58 +08:00
|
|
|
|
<Title>基本设置</Title>
|
|
|
|
|
|
<Form className="baseForm">
|
|
|
|
|
|
<Form.Item label="项目名称">
|
|
|
|
|
|
{getFieldDecorator("project_name", {
|
|
|
|
|
|
rules: [
|
|
|
|
|
|
{
|
|
|
|
|
|
required: true,
|
|
|
|
|
|
message: "请输入项目名称",
|
|
|
|
|
|
},
|
|
|
|
|
|
],
|
|
|
|
|
|
})(<Input placeholder="请输入项目名称" />)}
|
|
|
|
|
|
</Form.Item>
|
|
|
|
|
|
<div className="df" style={{ alignItems: "center" }}>
|
|
|
|
|
|
<span className="mr20 mb15 font-16">可见性</span>
|
|
|
|
|
|
<Form.Item label="">
|
|
|
|
|
|
{getFieldDecorator("private", {
|
|
|
|
|
|
rules: [],
|
|
|
|
|
|
})(
|
|
|
|
|
|
<Checkbox
|
|
|
|
|
|
checked={private_check}
|
|
|
|
|
|
onChange={this.changePrivate}
|
2021-06-29 17:29:35 +08:00
|
|
|
|
disabled={forked_from_project_id}
|
2021-03-04 15:08:58 +08:00
|
|
|
|
>
|
2021-06-29 17:29:35 +08:00
|
|
|
|
<span className="color-grey-9">将仓库设为私有</span>
|
2021-06-30 10:43:22 +08:00
|
|
|
|
<span className="color-grey-6">
|
2021-07-01 13:56:09 +08:00
|
|
|
|
{ forked_from_project_id ?`(Fork仓库的可见性实时同步自源仓库,不支持直接修改)`:`(修改仓库的可见性,将会影响到该仓库下所有Fork仓库的可见性)`}
|
2021-06-30 10:43:22 +08:00
|
|
|
|
</span>
|
2021-03-04 15:08:58 +08:00
|
|
|
|
</Checkbox>
|
|
|
|
|
|
)}
|
|
|
|
|
|
</Form.Item>
|
|
|
|
|
|
</div>
|
2021-05-07 16:26:50 +08:00
|
|
|
|
<Form.Item label="项目简介">
|
2021-03-04 15:08:58 +08:00
|
|
|
|
{getFieldDecorator("project_description", {
|
2020-03-16 14:12:11 +08:00
|
|
|
|
rules: [],
|
|
|
|
|
|
})(
|
2021-03-04 15:08:58 +08:00
|
|
|
|
<TextArea
|
2021-05-07 16:26:50 +08:00
|
|
|
|
placeholder="请输入项目简介"
|
2021-03-24 14:08:10 +08:00
|
|
|
|
style={{ height: "80px" }} maxLength={200}
|
2021-03-04 15:08:58 +08:00
|
|
|
|
/>
|
2020-03-16 14:12:11 +08:00
|
|
|
|
)}
|
2020-05-22 17:00:18 +08:00
|
|
|
|
</Form.Item>
|
2021-03-04 15:08:58 +08:00
|
|
|
|
<Form.Item label="项目类别">
|
|
|
|
|
|
{getFieldDecorator("project_category_id", {
|
|
|
|
|
|
rules: [
|
|
|
|
|
|
{
|
|
|
|
|
|
required: true,
|
|
|
|
|
|
message: "请选择大类别",
|
|
|
|
|
|
},
|
|
|
|
|
|
],
|
|
|
|
|
|
})(<Select>{CategoryList}</Select>)}
|
|
|
|
|
|
</Form.Item>
|
|
|
|
|
|
<Form.Item label="项目语言">
|
|
|
|
|
|
{getFieldDecorator("project_language_id", {
|
|
|
|
|
|
rules: [
|
|
|
|
|
|
{
|
|
|
|
|
|
required: true,
|
|
|
|
|
|
message: "请选择项目语言",
|
|
|
|
|
|
},
|
|
|
|
|
|
],
|
|
|
|
|
|
})(<Select>{LanguageList}</Select>)}
|
|
|
|
|
|
</Form.Item>
|
2021-03-19 15:46:37 +08:00
|
|
|
|
<Form.Item label="项目导航">
|
|
|
|
|
|
{getFieldDecorator("project_units", {
|
|
|
|
|
|
rules: [],
|
|
|
|
|
|
})(
|
|
|
|
|
|
<Checkbox.Group>
|
|
|
|
|
|
{
|
|
|
|
|
|
menu.map((item,key)=>{
|
|
|
|
|
|
return(
|
|
|
|
|
|
<Checkbox
|
|
|
|
|
|
key={key}
|
|
|
|
|
|
value={item.index}
|
2021-05-07 17:33:41 +08:00
|
|
|
|
disabled={item.index === "home" || item.index === "activity" || item.index === "code" || (mirror && (type && type===2) && item.index === "pulls")}
|
2021-03-19 15:46:37 +08:00
|
|
|
|
>{item.name}</Checkbox>
|
|
|
|
|
|
)
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
</Checkbox.Group>
|
|
|
|
|
|
)}
|
|
|
|
|
|
</Form.Item>
|
2021-03-04 15:08:58 +08:00
|
|
|
|
<p className="clearfix">
|
|
|
|
|
|
<a className="submitBtn" onClick={this.resetSetting}>
|
|
|
|
|
|
更新仓库设置
|
|
|
|
|
|
</a>
|
|
|
|
|
|
</p>
|
|
|
|
|
|
</Form>
|
|
|
|
|
|
{/* 镜像设置部分,暂无接口,先不显示 */}
|
|
|
|
|
|
{/* <Mirror /> */}
|
|
|
|
|
|
</WhiteBack>
|
2021-04-26 14:59:19 +08:00
|
|
|
|
{
|
2021-04-27 13:50:05 +08:00
|
|
|
|
projectDetail && projectDetail.permission && (projectDetail.permission === "Admin" || projectDetail.permission === "Owner")?
|
2021-04-26 14:59:19 +08:00
|
|
|
|
<WhiteBack className="dangerousBox mb20">
|
2020-06-17 09:43:08 +08:00
|
|
|
|
<div>
|
2021-04-26 14:59:19 +08:00
|
|
|
|
<div className="dangerousTitle">危险操作区</div>
|
|
|
|
|
|
<div className="flex-a-center padding15-10" style={{borderBottom:"1px solid #f9edbe"}}>
|
|
|
|
|
|
<div>
|
|
|
|
|
|
<p className="font-bd font-16">转移仓库</p>
|
|
|
|
|
|
<p className="mt10">
|
2021-04-27 17:12:00 +08:00
|
|
|
|
{
|
|
|
|
|
|
is_transfering ?
|
|
|
|
|
|
<span>此仓库正在转移给【
|
2021-08-30 10:31:51 +08:00
|
|
|
|
{transfer && <Link to={transfer.login}>{transfer.name}</Link>}
|
2021-04-27 17:12:00 +08:00
|
|
|
|
】,请联系对方接收此仓库。</span>
|
|
|
|
|
|
:
|
|
|
|
|
|
`将此仓库转移给其他用户或组织`
|
|
|
|
|
|
}
|
2021-04-26 14:59:19 +08:00
|
|
|
|
</p>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
{
|
|
|
|
|
|
is_transfering ?
|
|
|
|
|
|
<a onClick={this.CancelDivertProject} className="red_deleteBtn">取消转移</a>
|
|
|
|
|
|
:
|
|
|
|
|
|
<a onClick={this.DivertProject} className="red_deleteBtn">转移</a>
|
|
|
|
|
|
}
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div className="flex-a-center padding15-10">
|
|
|
|
|
|
<div>
|
|
|
|
|
|
<p className="font-bd font-16">删除本仓库</p>
|
|
|
|
|
|
<p className="mt10">
|
|
|
|
|
|
删除仓库是永久性的,
|
|
|
|
|
|
无法撤消,且删除后,与仓库关联的项目/任务/合并请求/版本发布等,均会被删除
|
|
|
|
|
|
</p>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<a onClick={this.deleteProject} className="red_deleteBtn">
|
|
|
|
|
|
删除本仓库
|
|
|
|
|
|
</a>
|
|
|
|
|
|
</div>
|
2020-06-17 09:43:08 +08:00
|
|
|
|
</div>
|
2021-04-26 14:59:19 +08:00
|
|
|
|
</WhiteBack>
|
|
|
|
|
|
:""
|
|
|
|
|
|
}
|
2021-03-04 15:08:58 +08:00
|
|
|
|
</Spin>
|
2020-03-16 14:12:11 +08:00
|
|
|
|
</div>
|
2020-05-22 17:00:18 +08:00
|
|
|
|
);
|
2020-03-16 14:12:11 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2020-05-22 17:00:18 +08:00
|
|
|
|
const WrappedSettingIndexForm = Form.create({ name: "settingForm" })(Setting);
|
|
|
|
|
|
export default WrappedSettingIndexForm;
|