Merge remote-tracking branch 'origin/master'

dev_forum
杨树明 6 years ago
commit 7f12ef4a34

@ -35,6 +35,10 @@
.editormd .CodeMirror-linenumbers {
padding: 0;
}
.editormd-html-preview hr, .editormd-preview-container hr {
/* 颜色加深 */
border-top: 1px solid #ccc;
}
/* 重置掉antd的一些样式 */
html, body {

@ -1719,6 +1719,10 @@ const options = [{
label: '其他'
}],
}];
function filter(inputValue, path) {
return path.some(option => option.label.toLowerCase().indexOf(inputValue.toLowerCase()) > -1);
}
class City extends Component{
constructor(props){
super(props);
@ -1739,11 +1743,16 @@ class City extends Component{
}
}
render(){
const { defaultValue } = this.props
const { defaultValue, matchInputWidth, className, popupClassName } = this.props
const { value } = this.state
// 这里用请选择所在省市的话会触发chrome的地址选择
return(
<Cascader allowClear size="large" options={options} placeholder="请选择所在省市" onChange={this.onChange}
<Cascader allowClear size="large" options={options} placeholder="请选择所在地" onChange={this.onChange}
matchInputWidth={matchInputWidth}
value={value}
showSearch={{ filter }}
className={className}
popupClassName={popupClassName}
></Cascader>
)
}

@ -79,6 +79,22 @@ class AccountPage extends Component {
.accountPage {
display: flex;
}
.basicFormWrap{
flex:1;
width: 0;
}
/* 左侧 */
.accountNav {
width: 290px;
box-shadow: 0px 4px 9px 0px rgba(11,62,120,0.21);
border-radius: 2px;
padding-top: 8px;
padding-bottom: 30px;
margin-bottom:30px;
margin-right:20px;
height:418px;
}
`}</style>
<AccountNav {...this.props} {...common}></AccountNav>
<div className="basicFormWrap">

@ -3,7 +3,7 @@ import React, { Component } from 'react';
import { SnackbarHOC, getImageUrl, City } from 'educoder';
import { Form, Button, Input, Radio, Select, Tooltip, Icon } from 'antd'
import './common.css'
import { getHiddenName } from './AccountBasicEdit'
const RadioGroup = Radio.Group;
const Option = Select.Option
@ -70,7 +70,7 @@ class AccountBasicEdit extends Component {
label="姓名"
className="display formItemInline"
>
{basicInfo && basicInfo.name}
{basicInfo && (basicInfo.show_realname == true ? basicInfo.name : getHiddenName(basicInfo.name))}
</Form.Item>
<Form.Item

@ -10,6 +10,14 @@ const RadioGroup = Radio.Group;
const Option = Select.Option;
const map = identityMap // {"teacher":"教师", "student":"学生", "professional":"专业人士"}
export function getHiddenName(name) {
if (!name) return ''
let len=parseInt(name.length)-1;
let str="";
for(var i = 0; i < len; i++){ str += "*"; }
const newName = name.substr(0,1)+str;
return newName
}
class AccountBasic extends Component {
constructor(props){
super(props);
@ -110,11 +118,7 @@ class AccountBasic extends Component {
this.props.form.validateFieldsAndScroll((err, values) => {
console.log(values);
let {basicInfo}=this.props;
// TODO 为什么modal里的form影响到这里的了
if (err) {
delete err.depart
}
if(!err || Object.keys(err).length == 0){
if(!err ){
let url=`/users/accounts/${basicInfo.id}.json`
axios.put((url),{
nickname:values.nickname,
@ -158,19 +162,10 @@ class AccountBasic extends Component {
}
}
getHiddenName(name) {
if (!name) return ''
let len=parseInt(name.length)-1;
let str="";
for(var i = 0; i < len; i++){ str += "*"; }
const newName = name.substr(0,1)+str;
return newName
}
// 将名字隐藏起来
hideRealName=(name)=>{
this.setState({ realName: name })
const newName = this.getHiddenName(name)
const newName = getHiddenName(name)
this.props.form.setFieldsValue({
name: newName
@ -202,6 +197,7 @@ class AccountBasic extends Component {
}
//搜索部门
searchDepartment=(e)=>{
if (e) {
this.props.form.setFieldsValue({
org2:e
})
@ -213,6 +209,7 @@ class AccountBasic extends Component {
departmentsName:e
})
}
}
// 选择部门、学院
changeDepartment=(e)=>{
@ -251,6 +248,9 @@ class AccountBasic extends Component {
this.props.form.setFieldsValue({
org2:result.data.departments[0].name
})
this.setState({
department_id: result.data.departments[0].id
})
}
}
}).catch((error)=>{
@ -303,12 +303,15 @@ class AccountBasic extends Component {
const { getFieldDecorator } = this.props.form;
let{basicInfo}=this.props
// form合并了
const propsWithoutForm = Object.assign({}, this.props)
delete propsWithoutForm.form
return (
<div>
<ApplyForAddOrgModal ref="applyForAddOrgModal" wrappedComponentRef={(form) => this.applyForAddOrgForm = form} schoolName={school}
{...this.props}></ApplyForAddOrgModal>
{...propsWithoutForm}></ApplyForAddOrgModal>
<ApplyForAddChildOrgModal ref="applyForAddChildOrgModal" schoolName={school} schoolId={school_id} departmentName={departmentsName}
{...this.props} wrappedComponentRef={(form) => this.applyForAddChildOrgForm = form} ></ApplyForAddChildOrgModal>
{...propsWithoutForm} wrappedComponentRef={(form) => this.applyForAddChildOrgForm = form} ></ApplyForAddChildOrgModal>
<div className="basicForm">
<style>{`
@ -360,7 +363,7 @@ class AccountBasic extends Component {
font-size:14px;
}
.resetCityStyle .ant-form-item-control{
width:190px;
width:220px;
}
`}</style>
<div className="title">基本信息</div>
@ -402,7 +405,7 @@ class AccountBasic extends Component {
<span>{ showRealName ? '(显示:平台将显示您的真实姓名)' : '(隐藏:平台将显示你的昵称)' }</span>
</React.Fragment> :
<div className="df" style={{ 'justify-content': 'center' }}>
<span className="mr8" >{showRealName ? this.props.basicInfo.name : this.getHiddenName(this.props.basicInfo.name)}</span>
<span className="mr8" >{showRealName ? this.props.basicInfo.name : getHiddenName(this.props.basicInfo.name)}</span>
<i className={showRealName?"iconfont icon-xianshi font-18 color-blue":"iconfont icon-yincang font-18 color-blue"}
onClick={()=>this.showOrHide(showRealName)}></i>
<span>{ showRealName ? '(显示:平台将显示您的真实姓名)' : '(隐藏:平台将显示你的昵称)' }</span>

@ -21,8 +21,60 @@ class AccountNav extends Component {
const isSecure = path.indexOf('secure') != -1
return (
<div className="accountNav fl">
<style>{`
.accountInfo {
text-align: center;
display: flex;
flex-direction: column;
align-items: center;
}
.accountInfo .name {
color: #05101A;
font-size: 24px;
height: 36px;
}
.accountInfo .role {
color: #666666;
font-size: 14px;
}
.accountManagement .title {
color: #05101A;
font-size: 18px;
font-weight: 400;
padding: 10px 28px;
margin-top: 6px;
}
.accountManagement .navItem {
font-size: 16px;
padding: 6px 0px;
padding-left: 30px;
border-left: 2px solid #fff;
cursor: pointer;
color:#4D4D4D;
}
.accountManagement .navItem i{
margin-top: -4px;
display: inline-block;
margin-right: 7px;
}
.accountManagement .navItem i.status{
margin-top: 1px;
margin-right: 24px;
}
.accountManagement .navItem.active {
border-left: 2px solid #4CACFF;
background: #E6F3FF;
}
.accountManagement .navItem.active i:first-child{
color:#4CACFF!important;
}
.color-green-light{
color: #45E660!important;
}
`}</style>
{
basicInfo &&
basicInfo && basicInfo.id &&
<React.Fragment>
<div className="accountInfo">
<AccountImg src={basicInfo.avatar_url} {...this.props}></AccountImg>

@ -35,6 +35,9 @@ class AccountSecure extends Component {
// 获取验证码倒计时
remainTime=()=>{
this.setState({
seconds: 60
})
this.timer = setInterval(() => {
let { seconds } =this.state;
let s = parseInt(seconds)-1;
@ -53,7 +56,7 @@ class AccountSecure extends Component {
// 获取验证码
getCode=(index)=>{
let url=`/account/get_verification_code.json`
let url=`/accounts/get_verification_code.json`
let login = '';
let values=this.props.form.getFieldsValue();
if(index == 3){
@ -199,8 +202,10 @@ class AccountSecure extends Component {
InputNewPassword=(rule,value,callback)=>{
const { form } = this.props;
if (value.length<8 || value.length>12) {
callback("请输入8-12个字符的新密码区分大小写");
if (!value) {
callback("请输入8-16位字符的新密码区分大小写");
} else if (value.length<8 || value.length>16) {
callback("请输入8-16位字符的新密码区分大小写");
} else {
callback();
}
@ -283,7 +288,7 @@ class AccountSecure extends Component {
:
<span style={{color: '#EA320E'}}>未绑定</span>
}
绑定手机号码将获得500金币的奖励哟手机号码仅自己可见~
{basicInfo.phone ? '仅自己可见可用手机号码登录EduCoder' : '绑定手机号码将获得500金币的奖励哟手机号码仅自己可见~'}
</div>
{
updating != PHONE &&
@ -305,10 +310,10 @@ class AccountSecure extends Component {
rules: [{
// initialValue: this.state.cityDefaultValue,
required: true,
message: '请输入要绑定的手机号码',
message: `请输入要${basicInfo.phone ? '更换' : '绑定'}的手机号码`,
}],
})(
<Input placeholder="请输入要绑定的手机号码"></Input>
<Input placeholder={`请输入要${basicInfo.phone ? '更换' : '绑定'}的手机号码`}></Input>
)}
</Form.Item>
@ -442,10 +447,6 @@ class AccountSecure extends Component {
>
{getFieldDecorator('p_new', {
rules: [{
// initialValue: this.state.cityDefaultValue,
required: true,
message: '请输入816位的新密码区分大小写',
},{
validator:this.InputNewPassword
}],
})(

@ -18,9 +18,7 @@
.flexRow {
display: flex;
}
.color-green-light{
color: #45E660!important;
}
.mb15{margin-bottom: 15px!important;}
/* BUTTOn */
.ant-btn {
@ -45,10 +43,7 @@ button.ant-btn.ant-btn-primary.grayBtn {
display: none;
}
.basicFormWrap{
flex:1;
width: 0;
}
/* .basicForm .ant-form-item-label {
width: 100px;
padding-right: 10px;
@ -56,61 +51,3 @@ button.ant-btn.ant-btn-primary.grayBtn {
.basicForm .ant-form-item-label label {
color: #979797
} */
/* 左侧 */
.accountNav {
width: 290px;
box-shadow: 0px 4px 9px 0px rgba(11,62,120,0.21);
border-radius: 2px;
padding-top: 8px;
padding-bottom: 30px;
margin-bottom:30px;
margin-right:20px;
height:418px;
}
.accountInfo {
text-align: center;
display: flex;
flex-direction: column;
align-items: center;
}
.accountInfo .name {
color: #05101A;
font-size: 24px;
height: 36px;
}
.accountInfo .role {
color: #666666;
font-size: 14px;
}
.accountManagement .title {
color: #05101A;
font-size: 18px;
font-weight: 400;
padding: 10px 28px;
margin-top: 6px;
}
.accountManagement .navItem {
font-size: 16px;
padding: 6px 0px;
padding-left: 30px;
border-left: 2px solid #fff;
cursor: pointer;
color:#4D4D4D;
}
.accountManagement .navItem i{
margin-top: -4px;
display: inline-block;
margin-right: 7px;
}
.accountManagement .navItem i.status{
margin-top: 1px;
margin-right: 24px;
}
.accountManagement .navItem.active {
border-left: 2px solid #4CACFF;
background: #E6F3FF;
}
.accountManagement .navItem.active i:first-child{
color:#4CACFF!important;
}

@ -40,9 +40,9 @@ class ApplyForAddOrgModal extends Component{
if(!err){
let url=`/add_school_applies.json`;
axios.post(url,{
schoolName:values.name,
province:values.city[0],
city:values.city[1],
schoolName:values.schoolName,
province:values.city && values.city[0],
city:values.city && values.city[1],
address:values.address,
remarks:values.remarks
}).then((result)=>{
@ -95,6 +95,10 @@ class ApplyForAddOrgModal extends Component{
.explain .ant-form-explain{
top:36px;
}
.addOrg ul.ant-cascader-menu {
width: 196px;
}
`}</style>
<Form onSubmit={this.onOk}>
<Form.Item
@ -132,7 +136,7 @@ class ApplyForAddOrgModal extends Component{
{getFieldDecorator('city', {
rules: [],
})(
<City ></City>
<City matchInputWidth={true} popupClassName={"addOrg"}></City>
)}
</Form.Item>

Loading…
Cancel
Save