From e0cf61e26c674085afdcc99bb8a7b6dd2b8d9e9b Mon Sep 17 00:00:00 2001 From: ddcat1115 Date: Fri, 2 Mar 2018 00:40:02 +0800 Subject: [PATCH] update userCenter --- .roadhogrc.mock.js | 2 +- mock/api.js | 2 +- src/routes/Dashboard/Workplace.less | 9 ++-- src/routes/List/Projects.js | 2 +- src/routes/UserCenter.js | 79 ++++++++++++++++++++++++----- src/routes/UserCenter.less | 14 +++-- src/utils/utils.js | 4 +- 7 files changed, 83 insertions(+), 29 deletions(-) diff --git a/.roadhogrc.mock.js b/.roadhogrc.mock.js index 20096fce..163727f8 100644 --- a/.roadhogrc.mock.js +++ b/.roadhogrc.mock.js @@ -31,7 +31,7 @@ const proxy = { profile: '简单的介绍下自己', signature: '海纳百川,有容乃大', title: '交互专家', - group: '蚂蚁金服-平台数据技术事业群-基础平台部-用户体验技术部-UED', + group: '蚂蚁金服-某某某事业群-某某平台部-某某技术部-UED', tags: [{ key: '0', label: '很有想法的', diff --git a/mock/api.js b/mock/api.js index e639bc6e..a8b314f6 100644 --- a/mock/api.js +++ b/mock/api.js @@ -37,7 +37,7 @@ const avatars2 = [ const covers = [ 'https://gw.alipayobjects.com/zos/rmsportal/uMfMFlvUuceEyPpotzlq.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', ]; const desc = [ diff --git a/src/routes/Dashboard/Workplace.less b/src/routes/Dashboard/Workplace.less index 732146a3..a8cea7c5 100644 --- a/src/routes/Dashboard/Workplace.less +++ b/src/routes/Dashboard/Workplace.less @@ -87,20 +87,17 @@ display: block; margin: 12px 0; height: 24px; + color: @text-color; + transition: all .3s; .textOverflow(); .member { font-size: @font-size-base; - color: @text-color; line-height: 24px; vertical-align: top; margin-left: 12px; - transition: all .3s; - .textOverflow(); } &:hover { - span { - color: @primary-color; - } + color: @primary-color; } } } diff --git a/src/routes/List/Projects.js b/src/routes/List/Projects.js index 48e83c8f..94d63282 100644 --- a/src/routes/List/Projects.js +++ b/src/routes/List/Projects.js @@ -62,7 +62,7 @@ export default class CoverCardList extends PureComponent { } + cover={{item.title}} > {item.title}} diff --git a/src/routes/UserCenter.js b/src/routes/UserCenter.js index c4f3ef8c..c7d17c20 100644 --- a/src/routes/UserCenter.js +++ b/src/routes/UserCenter.js @@ -1,9 +1,10 @@ import React, { PureComponent } from 'react'; import { connect } from 'dva'; +import { Link } from 'dva/router'; import moment from 'moment'; import numeral from 'numeral'; 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 { formatWan } from '../utils/utils'; import styles from './UserCenter.less'; @@ -22,6 +23,9 @@ import stylesProjects from './List/Projects.less'; export default class UserCenter extends PureComponent { state = { key: 'article', + newTags: [], + inputVisible: false, + inputValue: '', } componentDidMount() { @@ -44,6 +48,32 @@ export default class UserCenter extends PureComponent { 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) => { const IconText = ({ type, text }) => ( @@ -171,7 +201,7 @@ export default class UserCenter extends PureComponent { } + cover={{item.title}} > {item.title}} @@ -201,17 +231,18 @@ export default class UserCenter extends PureComponent { } render() { + const { key, newTags, inputVisible, inputValue } = this.state; const { list: { list }, listLoading, currentUser, currentUserLoading, project: { notice }, projectLoading } = this.props; const operationTabList = [{ key: 'article', - tab: '文章(8)', + tab: 文章 (8), }, { key: 'application', - tab: '应用(8)', + tab: 应用 (8), }, { key: 'project', - tab: '项目(8)', + tab: 项目 (8), }]; const contentMap = { article: this.renderArticles(list, listLoading), @@ -249,22 +280,42 @@ export default class UserCenter extends PureComponent {
标签
{ - currentUser.tags.map(item => {item.label}) + currentUser.tags.concat(newTags).map(item => + {item.label}) } - - - + {inputVisible && ( + + )} + {!inputVisible && ( + + + + )}
- +
团队
{ notice.map(item => ( - - - {item.member} + + + + {item.member} + )) } @@ -283,7 +334,7 @@ export default class UserCenter extends PureComponent { tabList={operationTabList} onTabChange={this.onTabChange} > - {contentMap[this.state.key]} + {contentMap[key]} diff --git a/src/routes/UserCenter.less b/src/routes/UserCenter.less index 4fe92ba4..b74e91b7 100644 --- a/src/routes/UserCenter.less +++ b/src/routes/UserCenter.less @@ -1,4 +1,5 @@ @import '~antd/lib/style/themes/default.less'; +@import "../utils/utils.less"; .avatarHolder { text-align: center; @@ -73,11 +74,16 @@ } } - .item { - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; + a { + display: block; margin-bottom: 24px; + color: @text-color; + transition: color .3s; + .textOverflow(); + + &:hover { + color: @primary-color; + } } } diff --git a/src/utils/utils.js b/src/utils/utils.js index bbdf5235..01250825 100644 --- a/src/utils/utils.js +++ b/src/utils/utils.js @@ -169,7 +169,7 @@ export function formatWan(val) { result = ( {result} - 万 - + ); } -- GitLab