diff --git a/src/forge/SecuritySetting/Index.jsx b/src/forge/SecuritySetting/Index.jsx
index beb45b42f..cdabd86d3 100644
--- a/src/forge/SecuritySetting/Index.jsx
+++ b/src/forge/SecuritySetting/Index.jsx
@@ -66,6 +66,10 @@ const Disposition = Loadable({
loader: () => import("./bot/disposition"),
loading: Loading,
});
+const Mysite = Loadable({
+ loader: () => import("./website/mySiteList"),
+ loading: Loading,
+});
function Index(props){
const { current_user,mygetHelmetapi , checkIfLogin } = props;
@@ -73,6 +77,8 @@ function Index(props){
const notice_url = mygetHelmetapi && mygetHelmetapi.common && mygetHelmetapi.common.notice;
const [ avatarVisible , setAvatarVisible ] = useState(false);
+ const [active, setActive] = useState(1);
+ console.log('active', active);
useEffect(()=>{
if(checkIfLogin() === false){
@@ -80,6 +86,28 @@ function Index(props){
}
},[])
+ useEffect(()=>{
+ console.log('pathname', pathname, ["/settings/profile"].indexOf(pathname));
+ if(["/settings/profile"].indexOf(pathname) !== -1){
+ setActive(1);
+ }else if(["/settings/emails", "/settings/phone", "/settings/password", "/settings/cancel"].indexOf(pathname) !== -1){
+ setActive(2);
+ }else if(["/settings/notice/config"].indexOf(pathname) !== -1){
+ setActive(4);
+ }else if(["/settings/notice"].indexOf(pathname) !== -1){
+ setActive(3);
+ }else if(["/settings/SSH"].indexOf(pathname) !== -1){
+ setActive(5);
+ }else if(["/settings/CLA"].indexOf(pathname) !== -1){
+ setActive(6);
+ }else if(["/settings/mybot"].indexOf(pathname) !== -1){
+ setActive(7);
+ }else if(["/settings/installbot"].indexOf(pathname) !== -1){
+ setActive(8);
+ }else if(["/settings/mysite"].indexOf(pathname) !== -1){
+ setActive(9);
+ }
+ }, [pathname])
function onCancelAvatar(){
setAvatarVisible(false);
@@ -108,23 +136,27 @@ function Index(props){
- 个人信息
- - -1 ?"active":""}>基本资料
- - -1 || pathname.indexOf("/settings/phone")>-1 || pathname.indexOf("/settings/password")>-1 || pathname.indexOf("/settings/cancel")>-1) ?"active":""}>账号管理
+ - 基本资料
+ - 账号管理
{notice_url &&
- 消息通知
- - -1 && pathname.indexOf("/settings/notice/config") == -1) || pathname.indexOf("/settings/notice/privateLetter")>-1 ?"active":""}>我的通知
- - -1 ?"active":""}>通知管理
+ - 我的通知
+ - 通知管理
}
- 安全设置
- - -1 ?"active":""}>SSH密钥
- - -1 ?"active":""}>我的CLA
+ - SSH密钥
+ - 我的CLA
+
+
- - Bot开发
- - -1 ?"active":""}>我的Bot
- - -1 ?"active":""}>Bot安装
+ - 个人建站
+ - 我的站点
@@ -190,6 +222,12 @@ function Index(props){
)}
>
+ (
+
+ )}
+ >
(
@@ -224,6 +262,13 @@ function Index(props){
)}
>
+ {/* 个人建站 */}
+ (
+
+ )}
+ >
diff --git a/src/forge/SecuritySetting/website/index.scss b/src/forge/SecuritySetting/website/index.scss
new file mode 100644
index 000000000..89b9d18c0
--- /dev/null
+++ b/src/forge/SecuritySetting/website/index.scss
@@ -0,0 +1,8 @@
+.default_head{
+ height: 65px;
+ line-height: 64px;
+ border-bottom: 1px solid rgba(224, 230, 245, 1);
+ color:#151d40;
+ font-size:17px;
+ padding-bottom:20px;
+}
\ No newline at end of file
diff --git a/src/forge/SecuritySetting/website/mySiteList.jsx b/src/forge/SecuritySetting/website/mySiteList.jsx
new file mode 100644
index 000000000..4c2417778
--- /dev/null
+++ b/src/forge/SecuritySetting/website/mySiteList.jsx
@@ -0,0 +1,16 @@
+import React, { useState, useEffect, Fragment } from "react";
+import { Button, Icon, message, Modal } from "antd";
+import './index.scss';
+
+function MySiteList(props){
+ const {current_user} = props;
+
+ useEffect(()=>{
+ document.title='我的站点';
+ }, [])
+
+ return
+ 我的站点
+
+}
+export default MySiteList;
\ No newline at end of file
diff --git a/src/forge/users/Material/Base.jsx b/src/forge/users/Material/Base.jsx
index 20dc79e80..3dc7e27cc 100644
--- a/src/forge/users/Material/Base.jsx
+++ b/src/forge/users/Material/Base.jsx
@@ -13,10 +13,6 @@ export default Form.create()(
// const { username } = props && props.match && props.match.params;
const { resetUserInfo , current_user } = props;
- useEffect(()=>{
- document.title="基本资料"
- }, [])
-
useEffect(()=>{
if(current_user && current_user.login){
setFieldsValue({
diff --git a/src/forge/users/Material/Index.jsx b/src/forge/users/Material/Index.jsx
index bcd84e408..68a0fa4e5 100644
--- a/src/forge/users/Material/Index.jsx
+++ b/src/forge/users/Material/Index.jsx
@@ -2,6 +2,7 @@ import React , { useEffect , useState } from 'react';
import { Menu } from 'antd';
import Base from './Base';
import Password from './Password';
+import Verification from './verification';
import './Index.scss';
import '../../SecuritySetting/notice/manager/Index.scss';
@@ -13,24 +14,35 @@ function Index(props){
useEffect(()=>{
if(pathname){
+ let documentTitle = "基本资料";
if(pathname === `/settings/profile`){
setKey("0");
+ documentTitle = "基本资料";
}else{
setKey("1");
switch(pathname){
case '/settings/phone':
+ documentTitle = "手机号管理";
setType('3');
break;
case '/settings/emails':
setType('0');
+ documentTitle = "邮箱管理";
break;
case '/settings/password':
setType('1');
+ documentTitle = "密码管理";
+ break;
+ case '/settings/verification':
+ setType('4');
+ documentTitle = "身份认证";
break;
default:
setType('2');
+ documentTitle = "账号注销";
}
}
+ document.title = documentTitle;
}
},[pathname])
@@ -43,15 +55,13 @@ function Index(props){
{props.history.push('/settings/phone')}}>手机号管理
{props.history.push('/settings/emails')}}>邮箱管理
{props.history.push('/settings/password')}}>密码管理
+ {props.history.push('/settings/verification')}}>身份认证
{props.history.push('/settings/cancel')}}>账号注销
}
{
- key === "0" ?
-
- :
-
+ key === "0" ? : type === "4" ? :
}
diff --git a/src/forge/users/Material/Index.scss b/src/forge/users/Material/Index.scss
index 7e3ac67c6..0e05838f2 100644
--- a/src/forge/users/Material/Index.scss
+++ b/src/forge/users/Material/Index.scss
@@ -57,6 +57,12 @@
.spanTil{
letter-spacing: normal;
}
+ &.errorTip{
+ height: auto;
+ color:red;
+ background-color: rgba($color: red, $alpha: 0.05);
+ border:1px solid red;
+ }
}
.tipCont{
min-height: 330px;
@@ -167,4 +173,22 @@
}
.gotoUpdateEmail{
line-height: 40px;
+}
+.verificationForm{
+ .ant-form-item-label{
+ width: 125px;
+ }
+ .uploadCard{
+ margin-right: 80px;
+ }
+ .ant-form-extra{
+ text-align: center;
+ }
+ .verUpload{
+ position: relative;
+ .ant-form-explain{
+ position: absolute;
+ bottom: 20px;
+ }
+ }
}
\ No newline at end of file
diff --git a/src/forge/users/Material/Password.jsx b/src/forge/users/Material/Password.jsx
index 4fa070cb1..c2dda19c4 100644
--- a/src/forge/users/Material/Password.jsx
+++ b/src/forge/users/Material/Password.jsx
@@ -24,7 +24,6 @@ export default Form.create()(
useEffect(()=>{
setPassMap({password: undefined, email: undefined, code: undefined});
setUpdatePsdMap({oldPassword: undefined, password: undefined, password1: undefined});
- document.title = type === '0' ? '邮箱管理' : type === '1' ? '密码管理' : type === '2' ? '账号注销' : '手机号管理';
}, type)
function submit() {
diff --git a/src/forge/users/Material/verification.jsx b/src/forge/users/Material/verification.jsx
new file mode 100644
index 000000000..2fb684145
--- /dev/null
+++ b/src/forge/users/Material/verification.jsx
@@ -0,0 +1,151 @@
+import React , { forwardRef, Fragment, useEffect, useState } from 'react';
+import { Form , Input, Button , Spin, message, Alert } from 'antd';
+import { AlignCenter, AlignTop } from '../../Component/layout';
+import './Index.scss';
+import UploadImage from '../../Team/Component/UploadImage';
+import axios from 'axios';
+import { getImageUrl } from '../../../common/UrlTool';
+
+export default Form.create()(
+ forwardRef((props)=>{
+ const { getFieldDecorator, validateFields , setFieldsValue } = props && props.form;
+ const { resetUserInfo , current_user } = props;
+ const [loading, setLoading] = useState(false);
+ const [data, setData] = useState(undefined);
+ const [reload, setReload] = useState(undefined);
+
+ useEffect(()=>{
+ if(current_user && current_user.login){
+ setLoading(true);
+ // 获取用户身份认证信息
+ axios.get(`http://ng.learnerhub.net/api/identity_verifications.json`).then(res=>{
+ setLoading(false);
+ if(res && res.status === 200){
+ if(res.data && res.data.status === 0){
+ return;
+ }
+ setData(res.data);
+ const {name, number, card_back, card_front, hold_card_back, hold_card_front} = res.data;
+ setFieldsValue({
+ name, number, card_back, card_front, hold_card_back, hold_card_front
+ })
+ }
+ })
+ }
+ },[current_user, reload])
+
+ function submit() {
+ validateFields((error, values) => {
+ if (!error) {
+ if(data){
+ axios.put(`http://ng.learnerhub.net/api/identity_verifications/${data.id}.json`, values).then(res => {
+ if(res && res.status === 200){
+ message.success("提交成功");
+ setReload(Math.random());
+ }
+ }).catch((error) => {});
+ }else{
+ // 新增
+ axios.post(`http://ng.learnerhub.net/api/identity_verifications.json`, values).then(res=>{
+ if(res && res.status === 200){
+ message.success("提交成功");
+ setReload(Math.random());
+ }
+ })
+ }
+ }
+ });
+ }
+
+ return (
+
+ {data && data.state && (
+
+ {data.state === "待审核" && (
+
+ 您提供的身份信息正在审核,请耐心等待
+
+ )}
+ {data.state === "已拒绝" &&
+ 您提交的身份信息未提供,原因:{data.description || "无,如有需要请联系平台管理员"}
+
}
+ {data.state === "已通过" && }
+
+ )}
+
+ {getFieldDecorator("name", {
+ rules: [{ required: true, message: "请输入真实姓名" }],
+ })(
+
+ )}
+
+
+ {getFieldDecorator("number", {
+ rules: [
+ { required: true, message: "请输入大陆身份证号码" },
+ { pattern: /^[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}([0-9]|X)$/, message: "请输入正确的中国大陆身份证号码"}
+ ],
+ })(
+
+ )}
+
+
+
+ {getFieldDecorator("card_front", {
+ rules: [{ required: true, message: "请上传照片" }],
+ })(
+ {setFieldsValue({'card_front': id})}} url={data && getImageUrl(`/api/attachments/${data.card_front}`)}/>
+ )}
+
+
+ {getFieldDecorator("card_back", {
+ rules: [{ required: true, message: "请上传照片" }],
+ })(
+ {setFieldsValue({'card_back': id})}} url={data && getImageUrl(`/api/attachments/${data.card_back}`)}/>
+ )}
+
+
+
+
+ {getFieldDecorator("hold_card_front", {
+ rules: [{ required: true, message: "请上传照片" }],
+ })(
+ {setFieldsValue({'hold_card_front': id})}} url={data && getImageUrl(`/api/attachments/${data.hold_card_front}`)}/>
+ )}
+
+
+ {getFieldDecorator("hold_card_back", {
+ rules: [{ required: true, message: "请上传照片" }],
+ })(
+ {setFieldsValue({'hold_card_back': id})}} url={data && getImageUrl(`/api/attachments/${data.hold_card_back}`)}/>
+ )}
+
+
+ {(!data || (data && data.state === "已拒绝")) && (
+
+
+
+
+ )}
+
+
+ );
+ })
+)
\ No newline at end of file