content.jsx 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813
  1. import React from 'react';
  2. import { Spin, Button, Tabs, Table, message, Modal, Tooltip } from 'antd';
  3. import ajax from 'jquery/src/ajax/xhr.js'
  4. import $ from 'jquery/src/ajax';
  5. import '../content.less';
  6. import './content.less';
  7. import LeftTab from './leftTab.jsx';
  8. import FollowDetail from "../customer/NEW/intentionCustomer/followDetail";
  9. const TabPane = Tabs.TabPane;
  10. const MessageModal = React.createClass({
  11. getInitialState() {
  12. return {
  13. unreadData: [],
  14. unreadDataType: '0',
  15. dataSourceType: '1',
  16. unreadDataIndex: 0,
  17. newVisible: false,
  18. loading: false,
  19. categoryArr: [],
  20. pagination: {
  21. defaultCurrent: 1,
  22. defaultPageSize: 10,
  23. showQuickJumper: true,
  24. pageSize: 10,
  25. onChange: function (page) {
  26. this.loadReaded(page);
  27. }.bind(this),
  28. showTotal: function (total) {
  29. return '共' + total + '条数据';
  30. }
  31. },
  32. UnreadPagination: {
  33. defaultCurrent: 1,
  34. defaultPageSize: 10,
  35. showQuickJumper: true,
  36. pageSize: 9999999,
  37. onChange: function (page) {
  38. this.loadUnread(page);
  39. }.bind(this),
  40. showTotal: function (total) {
  41. return '共' + total + '条数据';
  42. }
  43. },
  44. columns: [
  45. {
  46. title: '类型',
  47. dataIndex: 'noticeTypeName',
  48. key: 'noticeTypeName',
  49. width: 120,
  50. render: (text, record) => {
  51. return <span style={{ color: record.noticeType == 59 && "red" }}>{text}</span>;
  52. },
  53. }, {
  54. title: '时间',
  55. dataIndex: 'createTimeFormattedDate',
  56. key: 'createTimeFormattedDate',
  57. width: 120
  58. }, {
  59. title: '内容',
  60. dataIndex: 'content',
  61. key: 'content',
  62. width: 1189,
  63. render: (text, record) => {
  64. return (
  65. <Tooltip placement="topLeft" title={text}>
  66. <div style={{
  67. color: record.noticeType == 59 && "red",
  68. width: 1189,
  69. textOverflow: "ellipsis",
  70. whiteSpace: "nowrap",
  71. overflow: 'hidden',
  72. }}>
  73. {text}
  74. </div>
  75. </Tooltip>
  76. )
  77. }
  78. },
  79. {
  80. title: "操作",
  81. dataIndex: "abc",
  82. key: "abc",
  83. width: 150,
  84. render: (text, record) => {
  85. let contractNo = '';
  86. if ((record.noticeType === 14 || record.noticeType === 40) && record.content.indexOf('合同编号-') !== -1) {
  87. let arr = record.content.split('合同编号-');
  88. contractNo = arr[1].match(/(\S*), 订单编号/)[1];
  89. }
  90. return (
  91. record.noticeType === 48 || record.noticeType === 49 ?
  92. <Button type="primary" onClick={() => {
  93. this.category();
  94. record.id = record.uid;
  95. this.setState({
  96. followData: record,
  97. visitModul: true,
  98. });
  99. }}>立即跟进</Button> :
  100. record.noticeType === 14 || record.noticeType === 40 ?
  101. <Button disabled={!contractNo} type="primary" onClick={(e) => {
  102. e.stopPropagation();
  103. let input = document.getElementById("copyText1");
  104. input.value = contractNo;
  105. input.select();
  106. document.execCommand("copy");
  107. message.success('复制成功')
  108. }}>
  109. 复制合同号
  110. </Button> : null
  111. )
  112. }
  113. }
  114. // {
  115. // title: '公司',
  116. // dataIndex: 'unitName',
  117. // key: 'unitName',
  118. // }, {
  119. // title: '业务员',
  120. // dataIndex: 'principle',
  121. // key: 'principle',
  122. // }
  123. ],
  124. columns1: [
  125. {
  126. title: '类型',
  127. dataIndex: 'noticeTypeName',
  128. key: 'noticeTypeName',
  129. width: 120,
  130. render: (text, record) => {
  131. return (
  132. <div style={{ color: record.noticeType == 59 && "red" }}>{text}</div>
  133. )
  134. }
  135. }, {
  136. title: '时间',
  137. dataIndex: 'createTimeFormattedDate',
  138. key: 'createTimeFormattedDate',
  139. width: 120
  140. }, {
  141. title: '内容',
  142. dataIndex: 'content',
  143. key: 'content',
  144. width: 610,
  145. render: (text, record) => {
  146. return (
  147. <Tooltip placement="topLeft" title={text}>
  148. <div
  149. style={{
  150. color: record.noticeType == 59 && "red",
  151. width: 610,
  152. textOverflow: "ellipsis",
  153. whiteSpace: "nowrap",
  154. overflow: 'hidden',
  155. }}>
  156. {text}
  157. </div>
  158. </Tooltip>
  159. )
  160. }
  161. },
  162. {
  163. title: "操作",
  164. dataIndex: "abc",
  165. key: "abc",
  166. width: 150,
  167. render: (text, record) => {
  168. let contractNo = '';
  169. if ((record.noticeType === 14 || record.noticeType === 40) && record.content.indexOf('合同编号-') !== -1) {
  170. let arr = record.content.split('合同编号-');
  171. contractNo = arr[1].match(/(\S*), 订单编号/)[1];
  172. }
  173. return (
  174. record.noticeType === 48 || record.noticeType === 49 ?
  175. <Button type="primary" onClick={() => {
  176. this.category();
  177. record.id = record.uid;
  178. this.setState({
  179. followData: record,
  180. visitModul: true,
  181. });
  182. }}>立即跟进</Button> :
  183. record.noticeType === 14 || record.noticeType === 40 ?
  184. <Button disabled={!contractNo} type="primary" onClick={(e) => {
  185. e.stopPropagation();
  186. let input = document.getElementById("copyText1");
  187. input.value = contractNo;
  188. input.select();
  189. document.execCommand("copy");
  190. message.success('复制成功')
  191. }}>
  192. 复制合同号
  193. </Button> : null
  194. )
  195. }
  196. }
  197. // {
  198. // title: '公司',
  199. // dataIndex: 'unitName',
  200. // key: 'unitName',
  201. // }, {
  202. // title: '业务员',
  203. // dataIndex: 'principle',
  204. // key: 'principle',
  205. // }
  206. ],
  207. data: []
  208. };
  209. },
  210. closeDesc() {
  211. this.setState({
  212. categoryArr: [],
  213. followData: '',
  214. visitModul: false
  215. }, () => {
  216. this.loadReaded(this.state.pagination.current);
  217. })
  218. },
  219. category() {
  220. $.ajax({
  221. method: "get",
  222. dataType: "json",
  223. crossDomain: false,
  224. url: globalConfig.context + "/api/admin/Varieties/getSuperList",
  225. data: {},
  226. success: function (data) {
  227. let thedata = data.data;
  228. let theArr = [];
  229. if (!thedata) {
  230. if (data.error && data.error.length) {
  231. message.warning(data.error[0].message);
  232. }
  233. thedata = {};
  234. } else {
  235. thedata.map(function (item, index) {
  236. theArr.push({
  237. value: item.id,
  238. key: item.cname,
  239. });
  240. });
  241. }
  242. this.setState({
  243. categoryArr: theArr,
  244. });
  245. }.bind(this),
  246. });
  247. },
  248. // 获取部门数据
  249. selectSuperId() {
  250. $.ajax({
  251. method: "get",
  252. dataType: "json",
  253. url: globalConfig.context + "/api/admin/organization/selectSuperId",
  254. data: {},
  255. success: function (data) {
  256. let theArr = [];
  257. if (data.error && data.error.length === 0) {
  258. // for (let i = 0; i < data.data.length; i++) {
  259. // let theData = data.data[i];
  260. // theArr.push({
  261. // value: theData.id,
  262. // label: theData.name,
  263. // });
  264. // }
  265. // this.setState({
  266. // contactsOption: theArr,
  267. // });
  268. localStorage.setItem("departmentData", JSON.stringify(data.data))
  269. } else {
  270. // message.warning(data.error[0].message);
  271. }
  272. }.bind(this),
  273. }).always(
  274. );
  275. },
  276. //主菜单请求
  277. mainMenu() {
  278. this.setState({
  279. loading: true
  280. });
  281. $.ajax({
  282. method: "get",
  283. dataType: "json",
  284. crossDomain: false,
  285. url: globalConfig.context + "/api/admin/selectNavList",
  286. data: {
  287. },
  288. success: function (data) {
  289. if (!data.data) {
  290. if (data.error && data.error.length) {
  291. message.warning(data.error[0].message);
  292. return;
  293. };
  294. };
  295. this.setState({
  296. menu: data.data
  297. });
  298. }.bind(this),
  299. }).always(function (data) {
  300. this.setState({
  301. loading: false
  302. })
  303. }.bind(this))
  304. },
  305. finId(text) {
  306. var data = this.state.menu || [];
  307. var rid = '';
  308. switch (text) {
  309. case 1:
  310. data.map(function (nub, index) {
  311. if (nub.url.indexOf('demand') != -1) {
  312. rid = nub.id;
  313. }
  314. });
  315. break;
  316. case 2:
  317. data.map(function (nub, index) {
  318. if (nub.url.indexOf('demand') != -1) {
  319. rid = nub.id;
  320. }
  321. });
  322. break;
  323. case 3:
  324. data.map(function (nub, index) {
  325. if (nub.url.indexOf('achievement') != -1) {
  326. rid = nub.id;
  327. }
  328. });
  329. break;
  330. case 4:
  331. data.map(function (nub, index) {
  332. if (nub.url.indexOf('achievement') != -1) {
  333. rid = nub.id;
  334. }
  335. });
  336. break;
  337. case 5:
  338. data.map(function (nub, index) {
  339. if (nub.url.indexOf('order') != -1) {
  340. rid = nub.id;
  341. }
  342. });
  343. break;
  344. case 6:
  345. data.map(function (nub, index) {
  346. if (nub.url.indexOf('order') != -1) {
  347. rid = nub.id;
  348. }
  349. });
  350. break;
  351. case 7:
  352. data.map(function (nub, index) {
  353. if (nub.url.indexOf('servicesManage') != -1) {
  354. rid = nub.id;
  355. }
  356. });
  357. break;
  358. default:
  359. rid = '';
  360. }
  361. return rid;
  362. },
  363. //跳转详情
  364. setStore(record) {
  365. localStorage.setItem('newData', {});
  366. let ids = record.noticeType;
  367. let rid = this.finId(ids) || "";
  368. var urls = '',
  369. dataJson = {};
  370. switch (ids) {
  371. case 1:
  372. urls = "/admin/demand.html?rid=" + rid + "#techDemandAudit";
  373. dataJson = {
  374. "id": record.uid,
  375. //"id":"3f93588b-332e-4353-bbfd-f1451b4b390c",
  376. "dataCategory": "0"
  377. };
  378. break;
  379. case 2:
  380. urls = "/admin/demand.html?rid=" + rid + "#techDemandPublish";
  381. dataJson = {
  382. "id": record.uid,
  383. //"id":"40f77e32-29fa-4a85-a6f0-7c4986bdc5e3",
  384. "dataCategory": '1'
  385. };
  386. break;
  387. case 3:
  388. urls = "/admin/achievement.html?rid=" + rid + "#techAchievementAudit";
  389. dataJson = {
  390. "id": record.uid,
  391. //"id":"f09d5c08-4a8b-48a6-9753-86006f1a53cb",
  392. "ownerType": '1'
  393. };
  394. break;
  395. case 4:
  396. urls = "/admin/achievement.html?rid=" + rid + "#techAchievementPublish";
  397. dataJson = {
  398. "id": record.uid,
  399. //"id":"953c9ef7-6cf6-4ab7-af89-c01521998fed",
  400. "ownerType": '1'
  401. };
  402. break;
  403. case 5:
  404. urls = "/admin/order.html?rid=" + rid + "#myService";
  405. dataJson = {
  406. "orderNo": record.orderNo
  407. //"orderNo":"175557414077480960"
  408. };
  409. break;
  410. case 6:
  411. urls = "/admin/order.html?rid=" + rid + "#mySettlement";
  412. dataJson = {
  413. "orderNo": record.orderNo
  414. //"orderNo":"180714111314051072"
  415. };
  416. break;
  417. case 7:
  418. urls = "/admin/servicesManage/projectOrder.html?rid=" + rid + "#projectManage";
  419. dataJson = {
  420. //"id":record.id,
  421. "id": "69e2d8ca984240a4b9c90daac69fe5e3",
  422. "buyerType": "1"
  423. };
  424. break;
  425. default:
  426. urls: '#';
  427. dataJson = {};
  428. };
  429. console.log(rid);
  430. if (rid) {
  431. var data = dataJson;
  432. var newData = JSON.stringify(data);
  433. localStorage.setItem('newData', newData);
  434. window.location.href = globalConfig.context + urls;
  435. }
  436. },
  437. loadReaded(pageNo) {
  438. this.state.data = [];
  439. this.setState({
  440. loading: true
  441. });
  442. $.ajax({
  443. method: "get",
  444. dataType: "json",
  445. crossDomain: false,
  446. url: globalConfig.context + "/api/admin/notice/readed",
  447. data: {
  448. pageNo: pageNo || 1,
  449. pageSize: this.state.pagination.pageSize,
  450. type: this.state.unreadDataType,
  451. }
  452. }).done((data) => {
  453. if (!data.data) {
  454. if (data.error && data.error.length) {
  455. message.warning(data.error[0].message);
  456. return;
  457. };
  458. };
  459. this.state.data = [];
  460. for (let i = 0; i < data.data.list.length; i++) {
  461. let thisdata = data.data.list[i];
  462. this.state.data.push({
  463. key: i + 1,
  464. id: thisdata.id,
  465. rid: thisdata.rid,
  466. uid: thisdata.uid,
  467. aid: thisdata.aid,
  468. noticeType: thisdata.noticeType,
  469. year: thisdata.year,
  470. noticeTypeName: thisdata.noticeTypeName,
  471. content: thisdata.content,
  472. createTime: thisdata.createTime,
  473. createTimeFormattedDate: thisdata.createTimeFormattedDate,
  474. principle: thisdata.principle,
  475. unitName: thisdata.unitName
  476. });
  477. };
  478. this.state.pagination.current = data.data.pageNo;
  479. this.state.pagination.total = data.data.totalCount;
  480. this.setState({
  481. dataSource: this.state.data,
  482. pagination: this.state.pagination,
  483. });
  484. }).always(function () {
  485. this.setState({
  486. loading: false
  487. });
  488. }.bind(this));
  489. },
  490. loadUnread(pageNo) {
  491. this.state.data = [];
  492. this.setState({
  493. loading: true
  494. });
  495. $.ajax({
  496. method: "get",
  497. dataType: "json",
  498. crossDomain: false,
  499. url: globalConfig.context + "/api/admin/notice/unread",
  500. data: {
  501. }
  502. }).done((data) => {
  503. if (data.error && data.error.length) {
  504. message.warning(data.error[0].message);
  505. return;
  506. } else {
  507. let arr = data.data.filter(v => v.list.length > 0)
  508. if (arr.length) {
  509. this.setState({
  510. newVisible: true
  511. });
  512. }
  513. let index = data.data.findIndex(v => v.list.length > 0);
  514. if (index >= 0) {
  515. data.data[index].isRead = true;
  516. this.setState({
  517. unreadDataType: data.data[index]['id'] + '',
  518. unreadDataIndex: index,
  519. });
  520. } else {
  521. this.setState({
  522. unreadDataType: data.data[0]['id'] + '',
  523. unreadDataIndex: '0',
  524. });
  525. }
  526. this.setState({
  527. unreadData: data.data,
  528. });
  529. }
  530. }).always(function () {
  531. this.setState({
  532. loading: false,
  533. });
  534. }.bind(this));
  535. },
  536. componentWillMount() {
  537. // this.loadReaded();
  538. this.selectSuperId();
  539. this.loadUnread();
  540. this.mainMenu();
  541. },
  542. handleOk() {
  543. let arr = this.state.unreadData.filter(v => v.list.length > 0 && !v.isRead);
  544. if (arr.length > 0) {
  545. message.warning('还存在未读消息,请查看后再关闭当前页面!');
  546. return;
  547. } else {
  548. this.loadUnread();
  549. this.setState({
  550. newVisible: false
  551. });
  552. }
  553. },
  554. render() {
  555. return (
  556. <div className="set-content">
  557. <div className="set-title" style={{ marginBottom: 10 }}>
  558. <span style={{ fontWeight: 900, fontSize: 16 }}>信息中心</span>
  559. </div>
  560. <Spin spinning={this.state.loading} className="spin-box">
  561. <Tabs defaultActiveKey={this.state.unreadDataType} activeKey={this.state.unreadDataType} onChange={v => {
  562. let index = this.state.unreadData.findIndex(d => d.id == v);
  563. this.state.unreadData[index].isRead = true;
  564. this.setState({
  565. unreadDataIndex: index,
  566. unreadData: this.state.unreadData,
  567. unreadDataType: v
  568. }, () => {
  569. if (this.state.dataSourceType === '2') {
  570. this.loadReaded()
  571. }
  572. })
  573. }}>
  574. {
  575. this.state.unreadData.map((v) => (
  576. <Tabs.TabPane
  577. key={v.id + ''}
  578. tab={
  579. <div
  580. style={{ color: v.id == 7 && "red" }}
  581. >
  582. {v.list.length === 0 || v.isRead ? null :
  583. <div
  584. style={{
  585. width: '8px',
  586. height: "8px",
  587. borderRadius: '8px',
  588. background: '#f00',
  589. position: 'absolute',
  590. right: '5px',
  591. top: '2px',
  592. }} />
  593. }
  594. {v.name}
  595. </div>
  596. } />
  597. ))
  598. }
  599. </Tabs>
  600. <Tabs defaultActiveKey="1" type="card" tabPosition='left' value={this.state.dataSourceType} onChange={(v) => {
  601. this.setState({
  602. dataSourceType: v
  603. })
  604. if (v === '2') {
  605. this.loadReaded()
  606. }
  607. }}>
  608. <Tabs.TabPane tab={'未读'} key="1">
  609. <Table
  610. bordered
  611. columns={this.state.columns}
  612. dataSource={this.state.unreadData[this.state.unreadDataIndex] ? this.state.unreadData[this.state.unreadDataIndex].list : []}
  613. pagination={false}
  614. />
  615. </Tabs.TabPane>
  616. <Tabs.TabPane tab="已读" key="2">
  617. <Table
  618. bordered
  619. columns={this.state.columns}
  620. dataSource={this.state.dataSource}
  621. pagination={this.state.pagination}
  622. />
  623. </Tabs.TabPane>
  624. </Tabs>
  625. </Spin>
  626. <Modal
  627. maskClosable={false}
  628. style={{ position: "relative" }}
  629. title="消息提醒"
  630. visible={this.state.newVisible}
  631. width={1400}
  632. closable={false}
  633. footer={null}
  634. >
  635. <Spin spinning={this.state.loading} className="spin-box">
  636. <Tabs
  637. defaultActiveKey={this.state.unreadDataType}
  638. activeKey={this.state.unreadDataType}
  639. onChange={v => {
  640. let index = this.state.unreadData.findIndex(d => d.id == v);
  641. this.state.unreadData[index].isRead = true;
  642. this.setState({
  643. unreadDataIndex: index,
  644. unreadData: this.state.unreadData,
  645. unreadDataType: v
  646. })
  647. }}>
  648. {
  649. this.state.unreadData.map((v) => (
  650. <Tabs.TabPane
  651. key={v.id + ''}
  652. tab={<div style={{ color: v.id == 7 && "red" }}>
  653. {v.list.length === 0 || v.isRead ? null : <div style={{ width: '8px', height: "8px", borderRadius: '8px', background: '#f00', position: 'absolute', right: '5px', top: '2px' }} />}
  654. {v.name}
  655. </div>
  656. } />
  657. ))
  658. }
  659. </Tabs>
  660. <Table
  661. columns={this.state.columns1}
  662. dataSource={this.state.unreadData[this.state.unreadDataIndex] ? this.state.unreadData[this.state.unreadDataIndex].list : []}
  663. pagination={false}
  664. scroll={{ y: 600, x: 1000 }}
  665. />
  666. </Spin>
  667. <Button
  668. onClick={this.handleOk}
  669. type={"primary"}
  670. style={{
  671. position: "relative",
  672. left: "50%",
  673. transform: "translateX(-50%)",
  674. bottom: -10
  675. }}
  676. >
  677. 我已阅读以上信息
  678. </Button>
  679. </Modal>
  680. <FollowDetail
  681. categoryArr={this.state.categoryArr}
  682. followData={this.state.followData}
  683. visitModul={this.state.visitModul}
  684. closeDesc={this.closeDesc}
  685. />
  686. <textarea id='copyText1' style={{ opacity: 0 }} />
  687. </div>
  688. );
  689. }
  690. });
  691. const Content = React.createClass({
  692. getInitialState() {
  693. return {
  694. loading: false,
  695. component: '<div></div>'
  696. };
  697. },
  698. getKey(key) {
  699. switch (key) {
  700. case 'normal':
  701. require.ensure([], () => {
  702. this.setState({
  703. component: <MessageModal />,
  704. });
  705. });
  706. break;
  707. case "contacts":
  708. let Module = require('./contacts/index').default;
  709. require.ensure([], () => {
  710. this.setState({
  711. component: <Module />,
  712. });
  713. });
  714. break;
  715. default:
  716. require.ensure([], () => {
  717. let Module = require('../module').default;
  718. this.setState({
  719. component: <Module />
  720. });
  721. });
  722. }
  723. window.location.hash = key;
  724. },
  725. componentWillMount() {
  726. if (window.location.hash) {
  727. this.getKey((window.location.hash).slice(1));
  728. } else {
  729. this.getKey('normal');
  730. };
  731. },
  732. render() {
  733. return (
  734. <div className="manage-content">
  735. <LeftTab handlekey={this.getKey} />
  736. <div className="content-right">
  737. <Spin spinning={this.state.loading} className='spin-box'>
  738. <div className="index-content">
  739. {this.state.component}
  740. </div>
  741. </Spin>
  742. </div>
  743. </div>
  744. )
  745. }
  746. });
  747. export default Content;
  748. // <div className="index-content">
  749. // <div className="index-userdata clearfix">
  750. // <p className="acc-title">{this.state.number}</p>
  751. // <div className="userdata-img">
  752. // <img src={globalConfig.staticHost + "/upload" + this.state.personPortraitUrl} alt="" />
  753. // </div>
  754. // <div className="userdata-content">
  755. // {(() => {
  756. // switch (userData.lvl || this.state.userlvl) {
  757. // case '0':
  758. // return <p className="userdata-lvl">等级:<span>LV1</span> 普通用户</p>;
  759. // case '1':
  760. // return <p className="userdata-lvl">等级:<span>LV2</span> 已认证用户</p>;
  761. // };
  762. // })()}
  763. // <p>完善资料 {this.state.per}% ,<a href="./set.html">继续完善</a>,有助于提高您的资信</p>
  764. // <p className="userdata-relate" style={{ 'display': 'none' }}>
  765. // <Button className="relateqq"><img src={qq} alt="" /> QQ账号登录</Button>
  766. // <Button className="relateweibo"><img src={weibo} alt="" />微博账号登录</Button>
  767. // <Button className="relateweixin"><img src={weixin} alt="" />微信账号登录</Button>
  768. // </p>
  769. // <div className="userdata-follow">已有<a href="">{this.state.follow}</a>人关注你</div>
  770. // </div>
  771. // </div>
  772. // <div className="index-record">
  773. // <p className="acc-title">我的轨迹</p>
  774. // <ul className="record-list clearfix">
  775. // <li>技术成果:<a href="">{this.state.chengguo}</a>项</li>
  776. // <li>技术开发:<a href="">{this.state.kaifa}</a>项</li>
  777. // <li>科技服务:<a href="">{this.state.fuwu}</a>项</li>
  778. // <li>发布需求:<a href="">{this.state.xuqiu}</a>项</li>
  779. // </ul>
  780. // </div>
  781. // <div className="index-activity">
  782. // <Tabs defaultActiveKey="1" onChange={this.tabChange}>
  783. // <TabPane tab="活动" key="1">
  784. // <p className="acc-title">即将举办的活动</p>
  785. // <ul className="activity-list">
  786. // {
  787. // this.state.activityArr.map(function (item, i) {
  788. // return <li key={i}>
  789. // <span className="list-type">[{item.type}]</span>
  790. // <span className="list-title">{item.title}</span>
  791. // <a href={item.link}>报名</a>
  792. // <span className="list-time">{item.time}</span>
  793. // </li>;
  794. // })
  795. // }
  796. // </ul>
  797. // </TabPane>
  798. // <TabPane tab="其他" key="2">Content of Tab Pane 2</TabPane>
  799. // </Tabs>
  800. // </div>
  801. // </div>