Merge pull request '密码管理+issue' (#327) from caishi/forgeplus-react:gitlink_server into gitlink_server
This commit is contained in:
commit
9786aaa4fe
|
@ -303,7 +303,7 @@ class Detail extends Component {
|
||||||
<p className="grid-item-left pb15">
|
<p className="grid-item-left pb15">
|
||||||
<span className="issue_detail_info">负责人:</span>
|
<span className="issue_detail_info">负责人:</span>
|
||||||
<span>
|
<span>
|
||||||
{data && data.assign_user_name ? data.assign_user_name : "--"}
|
{data && data.assign_user_name ? <Link to={`/${data.assign_user_login}`} className="color-blue">{data.assign_user_name}</Link> : "--"}
|
||||||
</span>
|
</span>
|
||||||
</p>
|
</p>
|
||||||
<p className="grid-item-left pb15">
|
<p className="grid-item-left pb15">
|
||||||
|
@ -325,7 +325,7 @@ class Detail extends Component {
|
||||||
<p className="grid-item-left pb15">
|
<p className="grid-item-left pb15">
|
||||||
<span className="issue_detail_info">里程碑:</span>
|
<span className="issue_detail_info">里程碑:</span>
|
||||||
<span className="title_overflow">
|
<span className="title_overflow">
|
||||||
{data && data.version ? data.version : "--"}
|
{data && data.version ? <Link to={`/${owner}/${projectsId}/milestones/${data.version_id}`} className="color-blue">{data.version}</Link> : "--"}
|
||||||
</span>
|
</span>
|
||||||
</p>
|
</p>
|
||||||
<p className="grid-item-left pb15">
|
<p className="grid-item-left pb15">
|
||||||
|
|
|
@ -248,16 +248,28 @@ class order extends Component {
|
||||||
});
|
});
|
||||||
const { status_type } = this.state;
|
const { status_type } = this.state;
|
||||||
|
|
||||||
this.state.select_params.search = value;
|
this.setState({
|
||||||
this.state.select_params.page = 1;
|
select_params:{
|
||||||
this.getIssueList(status_type);
|
search:value,
|
||||||
|
page:1
|
||||||
|
}
|
||||||
|
},()=>{
|
||||||
|
this.getIssueList(status_type);
|
||||||
|
})
|
||||||
};
|
};
|
||||||
|
|
||||||
openorder = (type) => {
|
openorder = (type) => {
|
||||||
this.setState({
|
const s = {
|
||||||
author_id: undefined,
|
author_id: undefined,
|
||||||
assigned_to_id: undefined,
|
assigned_to_id: undefined,
|
||||||
|
page:1,
|
||||||
|
limit:15
|
||||||
|
}
|
||||||
|
this.setState({
|
||||||
status_type: type,
|
status_type: type,
|
||||||
|
select_params:s,
|
||||||
|
author_id: undefined,
|
||||||
|
assigned_to_id: undefined,
|
||||||
issue_tag_ids: "标记",
|
issue_tag_ids: "标记",
|
||||||
tracker_ids: "类型",
|
tracker_ids: "类型",
|
||||||
author_ids: "发布人",
|
author_ids: "发布人",
|
||||||
|
@ -265,13 +277,12 @@ class order extends Component {
|
||||||
status_ids: "状态",
|
status_ids: "状态",
|
||||||
done_ratios: "完成度",
|
done_ratios: "完成度",
|
||||||
fixed_version_ids:"里程碑",
|
fixed_version_ids:"里程碑",
|
||||||
paix: "排序",
|
|
||||||
checkedValue:[],
|
checkedValue:[],
|
||||||
all:undefined
|
all:undefined,
|
||||||
|
paix: "排序",
|
||||||
|
},()=>{
|
||||||
|
this.getIssueList(type);
|
||||||
});
|
});
|
||||||
this.state.select_params.page = 1;
|
|
||||||
this.state.select_params.limit = 15;
|
|
||||||
this.getIssueList(type);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// 筛选:全部、指派给我、由我创建
|
// 筛选:全部、指派给我、由我创建
|
||||||
|
|
|
@ -9,7 +9,7 @@ import '../../SecuritySetting/notice/manager/Index.scss';
|
||||||
function Index(props){
|
function Index(props){
|
||||||
// const { username } = props && props.match && props.match.params;
|
// const { username } = props && props.match && props.match.params;
|
||||||
const { pathname } = props && props.location;
|
const { pathname } = props && props.location;
|
||||||
// const { current_user } = props;
|
const { current_user } = props;
|
||||||
|
|
||||||
|
|
||||||
const [ key , setKey ] = useState("0");
|
const [ key , setKey ] = useState("0");
|
||||||
|
@ -28,10 +28,10 @@ function Index(props){
|
||||||
return(
|
return(
|
||||||
<div className="notice01">
|
<div className="notice01">
|
||||||
<div className="sshHead">
|
<div className="sshHead">
|
||||||
<Menu selectedKeys={[key]} mode={'horizontal'} className="infosRightMenu">
|
<Menu selectedKeys={[key]} mode={'horizontal'} className="infosRightMenu" onClick={(e)=>setKey(e.key)}>
|
||||||
<Menu.Item key="0"><Link to={`/settings/profile`}>基本资料</Link></Menu.Item>
|
<Menu.Item key="0" className="font-16">基本资料</Menu.Item>
|
||||||
{/* <Menu.Item key="0"><Link to={`/settings/profile`}>基本资料</Link></Menu.Item> */}
|
{/* <Menu.Item key="0"><Link to={`/settings/profile`}>基本资料</Link></Menu.Item> */}
|
||||||
{/* <Menu.Item key="1"><Link to={`/${username}/password`}>密码管理</Link></Menu.Item> */}
|
<Menu.Item key="1" className="font-16">密码管理</Menu.Item>
|
||||||
</Menu>
|
</Menu>
|
||||||
</div>
|
</div>
|
||||||
<div style={{padding:"20px"}}>
|
<div style={{padding:"20px"}}>
|
||||||
|
|
|
@ -7,11 +7,10 @@ import Axios from 'axios';
|
||||||
export default Form.create()(
|
export default Form.create()(
|
||||||
forwardRef((props)=>{
|
forwardRef((props)=>{
|
||||||
const { getFieldDecorator, validateFields , setFieldsValue } = props && props.form;
|
const { getFieldDecorator, validateFields , setFieldsValue } = props && props.form;
|
||||||
const { username } = props && props.match && props.match.params;
|
|
||||||
const { current_user} = props;
|
const { current_user} = props;
|
||||||
|
|
||||||
const [ oldPass , setOldPass ] = useState(undefined);
|
const [ NewPass , setNewPass ] = useState(undefined);
|
||||||
const [ oldPassRepeat , setOldPassRepeat ] = useState(undefined);
|
const [ NewPassRepeat , setNewPassRepeat ] = useState(undefined);
|
||||||
|
|
||||||
function submit() {
|
function submit() {
|
||||||
validateFields((error,values)=>{
|
validateFields((error,values)=>{
|
||||||
|
@ -34,23 +33,29 @@ export default Form.create()(
|
||||||
}
|
}
|
||||||
|
|
||||||
// 判断两次输入的密码是否一致
|
// 判断两次输入的密码是否一致
|
||||||
|
var reg = /(?!.*\s)(?!^[\u4e00-\u9fa5]+$)^.{8,16}$/;
|
||||||
function checkIdentifier(rule, value, callback , inputValue){
|
function checkIdentifier(rule, value, callback , inputValue){
|
||||||
if(!value){
|
if(!value){
|
||||||
callback();
|
callback();
|
||||||
}
|
}
|
||||||
|
if (value && !inputValue && !reg.test(value)) {
|
||||||
|
callback("请输入8-16位密码,区分大小写、不能使用空格");
|
||||||
|
}
|
||||||
if (value && inputValue && value !== inputValue) {
|
if (value && inputValue && value !== inputValue) {
|
||||||
callback("两次输入的密码不一致");
|
callback("两次输入的密码不一致");
|
||||||
}
|
}
|
||||||
callback();
|
callback();
|
||||||
}
|
}
|
||||||
var reg = /(?!.*\s)(?!^[\u4e00-\u9fa5]+$)(?!^[0-9]+$)(?!^[A-z]+$)(?!^[^A-z0-9]+$)^.{8,16}$/;
|
|
||||||
|
|
||||||
function checkNewPass(rule, value, callback) {
|
function checkNewPass(rule, value, callback,newpassrepeat) {
|
||||||
if(!value){
|
if(!value){
|
||||||
callback();
|
callback();
|
||||||
}
|
}
|
||||||
if (!reg.test(value)) {
|
if (!reg.test(value)) {
|
||||||
callback("8-16个字符,不包含空格,必须包含数字,字母或字符至少两种");
|
callback("请输入8-16位密码,区分大小写、不能使用空格");
|
||||||
|
}
|
||||||
|
if(value && newpassrepeat && newpassrepeat!==value){
|
||||||
|
callback("两次输入的密码不一致");
|
||||||
}
|
}
|
||||||
callback();
|
callback();
|
||||||
}
|
}
|
||||||
|
@ -60,37 +65,36 @@ export default Form.create()(
|
||||||
<Form.Item label="旧密码">
|
<Form.Item label="旧密码">
|
||||||
{getFieldDecorator("old_password",{
|
{getFieldDecorator("old_password",{
|
||||||
rules:[
|
rules:[
|
||||||
{required:true,message:"请输入旧密码"},
|
{required:true,message:"请输入旧密码"}
|
||||||
{validator:(rule, value, callback)=>checkIdentifier(rule, value, callback,oldPassRepeat)}
|
|
||||||
]
|
]
|
||||||
})(
|
})(
|
||||||
<Input.Password placeholder="请输入旧密码" style={{width:"400px"}} onChange={(e)=>{setOldPass(e.target.value)}}/>
|
<Input.Password placeholder="请输入旧密码" autoComplete={"new-password"} style={{width:"400px"}}/>
|
||||||
)}
|
|
||||||
</Form.Item>
|
|
||||||
<Form.Item label="重复旧密码">
|
|
||||||
{getFieldDecorator("old_password_repeat",{
|
|
||||||
rules:[
|
|
||||||
{required:true,message:"请重新输入旧密码"},
|
|
||||||
{validator:(rule, value, callback)=>checkIdentifier(rule, value, callback,oldPass)}
|
|
||||||
]
|
|
||||||
})(
|
|
||||||
<Input.Password placeholder="请重新输入旧密码" style={{width:"400px"}} onChange={(e)=>{setOldPassRepeat(e.target.value)}}/>
|
|
||||||
)}
|
)}
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label="新密码">
|
<Form.Item label="新密码">
|
||||||
{getFieldDecorator("password",{
|
{getFieldDecorator("password",{
|
||||||
rules:[
|
rules:[
|
||||||
{required:true,message:"请输入新密码"},
|
{required:true,message:"请输入新密码"},
|
||||||
{validator:checkNewPass}
|
{validator:(rule, value, callback)=>checkNewPass(rule, value, callback,NewPassRepeat)}
|
||||||
]
|
]
|
||||||
})(
|
})(
|
||||||
<Input.Password placeholder="请输入新密码" style={{width:"400px"}}/>
|
<Input.Password placeholder="请输入新密码" style={{width:"400px"}} onChange={(e)=>{setNewPass(e.target.value)}}/>
|
||||||
|
)}
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item label="确认新密码">
|
||||||
|
{getFieldDecorator("new_password_repeat",{
|
||||||
|
rules:[
|
||||||
|
{required:true,message:"请重新输入新密码"},
|
||||||
|
{validator:(rule, value, callback)=>checkIdentifier(rule, value, callback,NewPass)}
|
||||||
|
]
|
||||||
|
})(
|
||||||
|
<Input.Password placeholder="请重新输入新密码" style={{width:"400px"}} onChange={(e)=>{setNewPassRepeat(e.target.value)}}/>
|
||||||
)}
|
)}
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<AlignCenter style={{marginTop:"20px"}}>
|
<AlignCenter style={{marginTop:"20px"}}>
|
||||||
<span className="ant-form-item-label"></span>
|
<span className="ant-form-item-label"></span>
|
||||||
<Button className="but25" type={"primary"} onClick={submit}>提交</Button>
|
<Button className="but25" type={"primary"} onClick={submit}>提交</Button>
|
||||||
<Button type={"default"} onClick={()=>props.history.push(`/${username}`)} className="ml20">取消</Button>
|
<Button type={"default"} onClick={()=>props.history.push(`/${current_user && current_user.login}`)} className="ml20">取消</Button>
|
||||||
</AlignCenter>
|
</AlignCenter>
|
||||||
</Form>
|
</Form>
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in New Issue