Commit e0cf61e2 authored by ddcat1115's avatar ddcat1115

update userCenter

parent 92293e44
...@@ -31,7 +31,7 @@ const proxy = { ...@@ -31,7 +31,7 @@ const proxy = {
profile: '简单的介绍下自己', profile: '简单的介绍下自己',
signature: '海纳百川,有容乃大', signature: '海纳百川,有容乃大',
title: '交互专家', title: '交互专家',
group: '蚂蚁金服-平台数据技术事业群-基础平台部-用户体验技术部-UED', group: '蚂蚁金服-某某某事业群-某某平台部-某某技术部-UED',
tags: [{ tags: [{
key: '0', key: '0',
label: '很有想法的', label: '很有想法的',
......
...@@ -37,7 +37,7 @@ const avatars2 = [ ...@@ -37,7 +37,7 @@ const avatars2 = [
const covers = [ const covers = [
'https://gw.alipayobjects.com/zos/rmsportal/uMfMFlvUuceEyPpotzlq.png', 'https://gw.alipayobjects.com/zos/rmsportal/uMfMFlvUuceEyPpotzlq.png',
'https://gw.alipayobjects.com/zos/rmsportal/iZBVOIhGJiAnhplqjvZW.png', 'https://gw.alipayobjects.com/zos/rmsportal/iZBVOIhGJiAnhplqjvZW.png',
'https://gw.alipayobjects.com/zos/rmsportal/uVZonEtjWwmUZPBQfycs.png', 'https://gw.alipayobjects.com/zos/rmsportal/iXjVmWVHbCJAyqvDxdtx.png',
'https://gw.alipayobjects.com/zos/rmsportal/gLaIAoVWTtLbBWZNYEMg.png', 'https://gw.alipayobjects.com/zos/rmsportal/gLaIAoVWTtLbBWZNYEMg.png',
]; ];
const desc = [ const desc = [
......
...@@ -87,22 +87,19 @@ ...@@ -87,22 +87,19 @@
display: block; display: block;
margin: 12px 0; margin: 12px 0;
height: 24px; height: 24px;
color: @text-color;
transition: all .3s;
.textOverflow(); .textOverflow();
.member { .member {
font-size: @font-size-base; font-size: @font-size-base;
color: @text-color;
line-height: 24px; line-height: 24px;
vertical-align: top; vertical-align: top;
margin-left: 12px; margin-left: 12px;
transition: all .3s;
.textOverflow();
} }
&:hover { &:hover {
span {
color: @primary-color; color: @primary-color;
} }
} }
}
} }
.projectList { .projectList {
......
...@@ -62,7 +62,7 @@ export default class CoverCardList extends PureComponent { ...@@ -62,7 +62,7 @@ export default class CoverCardList extends PureComponent {
<Card <Card
className={styles.card} className={styles.card}
hoverable hoverable
cover={<img alt={item.title} src={item.cover} height={154} />} cover={<img alt={item.title} src={item.cover} />}
> >
<Card.Meta <Card.Meta
title={<a href="#">{item.title}</a>} title={<a href="#">{item.title}</a>}
......
import React, { PureComponent } from 'react'; import React, { PureComponent } from 'react';
import { connect } from 'dva'; import { connect } from 'dva';
import { Link } from 'dva/router';
import moment from 'moment'; import moment from 'moment';
import numeral from 'numeral'; import numeral from 'numeral';
import { List, Card, Row, Col, Icon, Dropdown, import { List, Card, Row, Col, Icon, Dropdown,
Menu, Avatar, Tag, Divider, Tooltip, Spin } from 'antd'; Menu, Avatar, Tag, Divider, Tooltip, Spin, Input } from 'antd';
import AvatarList from '../components/AvatarList'; import AvatarList from '../components/AvatarList';
import { formatWan } from '../utils/utils'; import { formatWan } from '../utils/utils';
import styles from './UserCenter.less'; import styles from './UserCenter.less';
...@@ -22,6 +23,9 @@ import stylesProjects from './List/Projects.less'; ...@@ -22,6 +23,9 @@ import stylesProjects from './List/Projects.less';
export default class UserCenter extends PureComponent { export default class UserCenter extends PureComponent {
state = { state = {
key: 'article', key: 'article',
newTags: [],
inputVisible: false,
inputValue: '',
} }
componentDidMount() { componentDidMount() {
...@@ -44,6 +48,32 @@ export default class UserCenter extends PureComponent { ...@@ -44,6 +48,32 @@ export default class UserCenter extends PureComponent {
this.setState({ key }); this.setState({ key });
} }
showInput = () => {
this.setState({ inputVisible: true }, () => this.input.focus());
}
saveInputRef = (input) => {
this.input = input;
}
handleInputChange = (e) => {
this.setState({ inputValue: e.target.value });
}
handleInputConfirm = () => {
const { state } = this;
const { inputValue } = state;
let { newTags } = state;
if (inputValue && newTags.filter(tag => tag.label === inputValue).length === 0) {
newTags = [...newTags, { key: `new-${newTags.length}`, label: inputValue }];
}
this.setState({
newTags,
inputVisible: false,
inputValue: '',
});
}
renderArticles = (list, loading) => { renderArticles = (list, loading) => {
const IconText = ({ type, text }) => ( const IconText = ({ type, text }) => (
<span> <span>
...@@ -171,7 +201,7 @@ export default class UserCenter extends PureComponent { ...@@ -171,7 +201,7 @@ export default class UserCenter extends PureComponent {
<Card <Card
className={stylesProjects.card} className={stylesProjects.card}
hoverable hoverable
cover={<img alt={item.title} src={item.cover} height={154} />} cover={<img alt={item.title} src={item.cover} />}
> >
<Card.Meta <Card.Meta
title={<a href="#">{item.title}</a>} title={<a href="#">{item.title}</a>}
...@@ -201,17 +231,18 @@ export default class UserCenter extends PureComponent { ...@@ -201,17 +231,18 @@ export default class UserCenter extends PureComponent {
} }
render() { render() {
const { key, newTags, inputVisible, inputValue } = this.state;
const { list: { list }, listLoading, currentUser, currentUserLoading, const { list: { list }, listLoading, currentUser, currentUserLoading,
project: { notice }, projectLoading } = this.props; project: { notice }, projectLoading } = this.props;
const operationTabList = [{ const operationTabList = [{
key: 'article', key: 'article',
tab: '文章(8)', tab: <span>文章 <span style={{ fontSize: 14 }}>(8)</span></span>,
}, { }, {
key: 'application', key: 'application',
tab: '应用(8)', tab: <span>应用 <span style={{ fontSize: 14 }}>(8)</span></span>,
}, { }, {
key: 'project', key: 'project',
tab: '项目(8)', tab: <span>项目 <span style={{ fontSize: 14 }}>(8)</span></span>,
}]; }];
const contentMap = { const contentMap = {
article: this.renderArticles(list, listLoading), article: this.renderArticles(list, listLoading),
...@@ -249,22 +280,42 @@ export default class UserCenter extends PureComponent { ...@@ -249,22 +280,42 @@ export default class UserCenter extends PureComponent {
<div className={styles.tags}> <div className={styles.tags}>
<div className={styles.tagsTitle}>标签</div> <div className={styles.tagsTitle}>标签</div>
{ {
currentUser.tags.map(item => <Tag key={item.key}>{item.label}</Tag>) currentUser.tags.concat(newTags).map(item =>
<Tag key={item.key}>{item.label}</Tag>)
} }
<Tag style={{ background: '#fff', borderStyle: 'dashed' }}> {inputVisible && (
<Input
ref={this.saveInputRef}
type="text"
size="small"
style={{ width: 78 }}
value={inputValue}
onChange={this.handleInputChange}
onBlur={this.handleInputConfirm}
onPressEnter={this.handleInputConfirm}
/>
)}
{!inputVisible && (
<Tag
onClick={this.showInput}
style={{ background: '#fff', borderStyle: 'dashed' }}
>
<Icon type="plus" /> <Icon type="plus" />
</Tag> </Tag>
)}
</div> </div>
<Divider dashed /> <Divider style={{ marginTop: 16 }} dashed />
<div className={styles.team}> <div className={styles.team}>
<div className={styles.teamTitle}>团队</div> <div className={styles.teamTitle}>团队</div>
<Spin spinning={projectLoading}> <Spin spinning={projectLoading}>
<Row gutter={36}> <Row gutter={36}>
{ {
notice.map(item => ( notice.map(item => (
<Col key={item.id} className={styles.item} lg={24} xl={12}> <Col key={item.id} lg={24} xl={12}>
<Link to={item.href}>
<Avatar size="small" src={item.logo} /> <Avatar size="small" src={item.logo} />
{item.member} {item.member}
</Link>
</Col> </Col>
)) ))
} }
...@@ -283,7 +334,7 @@ export default class UserCenter extends PureComponent { ...@@ -283,7 +334,7 @@ export default class UserCenter extends PureComponent {
tabList={operationTabList} tabList={operationTabList}
onTabChange={this.onTabChange} onTabChange={this.onTabChange}
> >
{contentMap[this.state.key]} {contentMap[key]}
</Card> </Card>
</Col> </Col>
</Row> </Row>
......
@import '~antd/lib/style/themes/default.less'; @import '~antd/lib/style/themes/default.less';
@import "../utils/utils.less";
.avatarHolder { .avatarHolder {
text-align: center; text-align: center;
...@@ -73,11 +74,16 @@ ...@@ -73,11 +74,16 @@
} }
} }
.item { a {
white-space: nowrap; display: block;
text-overflow: ellipsis;
overflow: hidden;
margin-bottom: 24px; margin-bottom: 24px;
color: @text-color;
transition: color .3s;
.textOverflow();
&:hover {
color: @primary-color;
}
} }
} }
......
...@@ -169,7 +169,7 @@ export function formatWan(val) { ...@@ -169,7 +169,7 @@ export function formatWan(val) {
result = ( result = (
<span> <span>
{result} {result}
<em styles={{ <span styles={{
position: 'relative', position: 'relative',
top: -2, top: -2,
fontSize: 14, fontSize: 14,
...@@ -179,7 +179,7 @@ export function formatWan(val) { ...@@ -179,7 +179,7 @@ export function formatWan(val) {
}} }}
> >
</em> </span>
</span> </span>
); );
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment