diff --git a/package-lock.json b/package-lock.json index 9722a84e..4da8ad4d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -261,16 +261,15 @@ "version": "0.13.9", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" -<<<<<<< HEAD } } }, "@babel/runtime-corejs3": { - "version": "7.15.3", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.15.3.tgz", - "integrity": "sha512-30A3lP+sRL6ml8uhoJSs+8jwpKzbw8CqBvDc1laeptxPm5FahumJxirigcbD2qTs71Sonvj1cyZB0OKGAmxQ+A==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.16.0.tgz", + "integrity": "sha512-Oi2qwQ21X7/d9gn3WiwkDTJmq3TQtYNz89lRnoFy8VeZpWlsyXvzSwiRrRZ8cXluvSwqKxqHJ6dBd9Rv+p0ZGQ==", "requires": { - "core-js-pure": "^3.16.0", + "core-js-pure": "^3.19.0", "regenerator-runtime": "^0.13.4" }, "dependencies": { @@ -278,8 +277,6 @@ "version": "0.13.9", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" -======= ->>>>>>> 01f71bca87fac88ba9ad56c16260521c47f4ca6c } } }, @@ -1083,6 +1080,18 @@ "react-lifecycles-compat": "^3.0.4", "warning": "^4.0.3" } + }, + "react-slick": { + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/react-slick/-/react-slick-0.25.2.tgz", + "integrity": "sha512-8MNH/NFX/R7zF6W/w+FS5VXNyDusF+XDW1OU0SzODEU7wqYB+ZTGAiNJ++zVNAVqCAHdyCybScaUB+FCZOmBBw==", + "requires": { + "classnames": "^2.2.5", + "enquire.js": "^2.1.6", + "json2mq": "^0.2.0", + "lodash.debounce": "^4.0.8", + "resize-observer-polyfill": "^1.5.0" + } } } }, @@ -3939,14 +3948,11 @@ "version": "2.6.12", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==" -<<<<<<< HEAD }, "core-js-pure": { - "version": "3.16.4", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.16.4.tgz", - "integrity": "sha512-bY1K3/1Jy9D8Jd12eoeVahNXHLfHFb4TXWI8SQ4y8bImR9qDPmGITBAfmcffTkgUvbJn87r8dILOTWW5kZzkgA==" -======= ->>>>>>> 01f71bca87fac88ba9ad56c16260521c47f4ca6c + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.19.1.tgz", + "integrity": "sha512-Q0Knr8Es84vtv62ei6/6jXH/7izKmOrtrxH9WJTHLCMAVeU+8TF8z8Nr08CsH4Ot0oJKzBzJJL9SJBYIv7WlfQ==" }, "core-util-is": { "version": "1.0.2", @@ -3967,6 +3973,11 @@ "require-from-string": "^1.1.0" } }, + "countup.js": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/countup.js/-/countup.js-2.0.8.tgz", + "integrity": "sha512-pW3xwwD+hB+xmtI16xFcuLS0D5hSQqPQWkZOdgpKQyzxCquDNo2VCFPkRw12vmvdpnicXVTcjmYiakG6biwINg==" + }, "create-ecdh": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", @@ -4029,7 +4040,6 @@ "object-assign": "^4.1.1" } }, -<<<<<<< HEAD "cross-env": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", @@ -4082,8 +4092,6 @@ } } }, -======= ->>>>>>> 01f71bca87fac88ba9ad56c16260521c47f4ca6c "cross-spawn": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", @@ -14663,6 +14671,14 @@ "object-assign": "^4.1.1" } }, + "react-countup": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/react-countup/-/react-countup-6.1.0.tgz", + "integrity": "sha512-0tN65l4ksaNa4rm8ZKshpGxbIHQ4RAh8TGaKYp06EZ7nZw+haXpW3dQTVDhTey9+10jDkJgdzyXKDmC96c1M8g==", + "requires": { + "countup.js": "^2.0.8" + } + }, "react-datepicker": { "version": "2.16.0", "resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-2.16.0.tgz", @@ -15147,9 +15163,9 @@ } }, "react-slick": { - "version": "0.25.2", - "resolved": "https://registry.npmjs.org/react-slick/-/react-slick-0.25.2.tgz", - "integrity": "sha512-8MNH/NFX/R7zF6W/w+FS5VXNyDusF+XDW1OU0SzODEU7wqYB+ZTGAiNJ++zVNAVqCAHdyCybScaUB+FCZOmBBw==", + "version": "0.28.1", + "resolved": "https://registry.npmjs.org/react-slick/-/react-slick-0.28.1.tgz", + "integrity": "sha512-JwRQXoWGJRbUTE7eZI1rGIHaXX/4YuwX6gn7ulfvUZ4vFDVQAA25HcsHSYaUiRCduTr6rskyIuyPMpuG6bbluw==", "requires": { "classnames": "^2.2.5", "enquire.js": "^2.1.6", @@ -16311,7 +16327,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", -<<<<<<< HEAD "dev": true, "requires": { "emoji-regex": "^7.0.1", @@ -16340,36 +16355,6 @@ "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", "dev": true, "requires": { -======= - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "requires": { ->>>>>>> 01f71bca87fac88ba9ad56c16260521c47f4ca6c "ansi-styles": "^3.2.0", "string-width": "^3.0.0", "strip-ansi": "^5.0.0" @@ -17108,6 +17093,11 @@ "is-fullwidth-code-point": "^2.0.0" } }, + "slick-carousel": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/slick-carousel/-/slick-carousel-1.8.1.tgz", + "integrity": "sha512-XB9Ftrf2EEKfzoQXt3Nitrt/IPbT+f1fgqBdoxO3W/+JYvtEOW6EgxnWfr9GH6nmULv7Y2tPmEX3koxThVmebA==" + }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -19245,22 +19235,15 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", -<<<<<<< HEAD "dev": true, "optional": true -======= - "dev": true ->>>>>>> 01f71bca87fac88ba9ad56c16260521c47f4ca6c }, "is-glob": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", "dev": true, -<<<<<<< HEAD "optional": true, -======= ->>>>>>> 01f71bca87fac88ba9ad56c16260521c47f4ca6c "requires": { "is-extglob": "^2.1.1" } diff --git a/package.json b/package.json index 04e606c4..068d2ac0 100644 --- a/package.json +++ b/package.json @@ -80,6 +80,7 @@ "react-color": "^2.18.0", "react-content-loader": "^3.1.1", "react-cookies": "^0.1.1", + "react-countup": "^6.1.0", "react-datepicker": "^2.14.1", "react-dev-utils": "^9.2.0-next.80", "react-dom": "^16.13.1", @@ -92,6 +93,7 @@ "react-resizable": "^1.10.1", "react-router": "^4.2.0", "react-router-dom": "^4.2.2", + "react-slick": "^0.28.1", "react-split-pane": "^0.1.91", "react-url-query": "^1.5.0", "react-zmage": "^0.8.5-beta.31", @@ -102,6 +104,7 @@ "scroll-into-view": "^1.14.2", "showdown": "^1.9.1", "showdown-katex": "^0.8.0", + "slick-carousel": "^1.8.1", "store": "^2.0.12", "style-loader": "0.19.0", "styled-components": "^4.4.1", diff --git a/public/css/iconfont.css b/public/css/iconfont.css index 05762336..21957ed2 100644 --- a/public/css/iconfont.css +++ b/public/css/iconfont.css @@ -1,8 +1,8 @@ @font-face { font-family: "iconfont"; /* Project id 2340181 */ - src: url('iconfont.woff2?t=1629767316093') format('woff2'), - url('iconfont.woff?t=1629767316093') format('woff'), - url('iconfont.ttf?t=1629767316093') format('truetype'); + src: url('iconfont.woff2?t=1637120496912') format('woff2'), + url('iconfont.woff?t=1637120496912') format('woff'), + url('iconfont.ttf?t=1637120496912') format('truetype'); } .iconfont { @@ -13,6 +13,254 @@ -moz-osx-font-smoothing: grayscale; } +.icon-zhishitupu:before { + content: "\e8fc"; +} + +.icon-jisuanji1:before { + content: "\e8fd"; +} + +.icon-dianzi1:before { + content: "\e8ff"; +} + +.icon-junshililun1:before { + content: "\e900"; +} + +.icon-ruanjiangongcheng1:before { + content: "\e901"; +} + +.icon-yixue1:before { + content: "\e902"; +} + +.icon-tongxin1:before { + content: "\e904"; +} + +.icon-zhengcefagui1:before { + content: "\e906"; +} + +.icon-dashuju:before { + content: "\e8f3"; +} + +.icon-rengongzhineng:before { + content: "\e8f6"; +} + +.icon-a-shuangyinhao12x:before { + content: "\e8f2"; +} + +.icon-dingbu:before { + content: "\e8ee"; +} + +.icon-bangzhu1:before { + content: "\e8ef"; +} + +.icon-yijianfankui2:before { + content: "\e8f0"; +} + +.icon-fenxiang:before { + content: "\e8f1"; +} + +.icon-dizhi:before { + content: "\e8eb"; +} + +.icon-youxiang1:before { + content: "\e8ec"; +} + +.icon-dianhuaicon:before { + content: "\e8ed"; +} + +.icon-tianjiaicon:before { + content: "\e8e8"; +} + +.icon-lingshengicon:before { + content: "\e8ea"; +} + +.icon-gengduoicon:before { + content: "\e8e5"; +} + +.icon-shijianicon:before { + content: "\e8e7"; +} + +.icon-mimaicon:before { + content: "\e8e1"; +} + +.icon-gouicon:before { + content: "\e8e2"; +} + +.icon-zhankaiicon:before { + content: "\e8e3"; +} + +.icon-wenjian7:before { + content: "\e8e0"; +} + +.icon-xiangyoujiantou:before { + content: "\e8de"; +} + +.icon-xiangzuojiantou:before { + content: "\e8df"; +} + +.icon-a-liulanicon2x:before { + content: "\e8dd"; +} + +.icon-wenjianicon:before { + content: "\e8dc"; +} + +.icon-a-yuanquan2x:before { + content: "\e8db"; +} + +.icon-xiangmubiaoqian:before { + content: "\e8da"; +} + +.icon-icon:before { + content: "\e8ce"; +} + +.icon-tar:before { + content: "\e8cf"; +} + +.icon-a-fuzhi2:before { + content: "\e8d0"; +} + +.icon-fujian1:before { + content: "\e8d1"; +} + +.icon-a-bianji1:before { + content: "\e8d2"; +} + +.icon-banbenicon:before { + content: "\e8d3"; +} + +.icon-shanchuicon2:before { + content: "\e8d4"; +} + +.icon-a-lajitong_icon3x:before { + content: "\e8d5"; +} + +.icon-xialaanniu2:before { + content: "\e8d6"; +} + +.icon-xiazai-icon:before { + content: "\e8d7"; +} + +.icon-master_icon1:before { + content: "\e8d8"; +} + +.icon-shangchuanicon:before { + content: "\e8d9"; +} + +.icon-gerenziliao1:before { + content: "\e8c7"; +} + +.icon-lichengbeiicon:before { + content: "\e885"; +} + +.icon-cangkushezhiicon:before { + content: "\e889"; +} + +.icon-dongtaiicon:before { + content: "\e88a"; +} + +.icon-gongzuoliuicon:before { + content: "\e88b"; +} + +.icon-yixiuicon1:before { + content: "\e89b"; +} + +.icon-a-wikiicon1:before { + content: "\e8c6"; +} + +.icon-daimakuicon1:before { + content: "\e8c5"; +} + +.icon-wodetongzhi:before { + content: "\e8c8"; +} + +.icon-tongzhiguanli:before { + content: "\e8c9"; +} + +.icon-xuanzhong3:before { + content: "\e8ca"; +} + +.icon-xitongtongzhiicon:before { + content: "\e8cb"; +} + +.icon-xiaoxi2:before { + content: "\e8cc"; +} + +.icon-sshmiyue:before { + content: "\e8cd"; +} + +.icon-gerenziliao:before { + content: "\e8c4"; +} + +.icon-xinshouzhiyin:before { + content: "\e8e4"; +} + +.icon-xinjianxiangmu:before { + content: "\e8e6"; +} + +.icon-jiaruketang1:before { + content: "\e8e9"; +} + .icon-xiangmugonggao:before { content: "\e8c2"; } @@ -105,10 +353,6 @@ content: "\e883"; } -.icon-cangkushezhiicon:before { - content: "\e885"; -} - .icon-lianjieicon:before { content: "\e887"; } @@ -117,18 +361,6 @@ content: "\e888"; } -.icon-lichengbeiicon:before { - content: "\e889"; -} - -.icon-gongzuoliuicon:before { - content: "\e88a"; -} - -.icon-dongtaiicon:before { - content: "\e88b"; -} - .icon-morendianzan_icon:before { content: "\e88e"; } @@ -233,10 +465,6 @@ content: "\e898"; } -.icon-weixuanzhongqingqiuicon:before { - content: "\e89b"; -} - .icon-xiezuozheguanliicon:before { content: "\e8a1"; } diff --git a/public/css/iconfont.js b/public/css/iconfont.js index 4b7d64b3..e89ab836 100644 --- a/public/css/iconfont.js +++ b/public/css/iconfont.js @@ -1 +1 @@ -!function(c){var l,a,h,i,o,z='',t=(t=document.getElementsByTagName("script"))[t.length-1].getAttribute("data-injectcss"),p=function(c,l){l.parentNode.insertBefore(c,l)};if(t&&!c.__iconfont__svg__cssinject__){c.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(c){console&&console.log(c)}}function v(){o||(o=!0,h())}function m(){try{i.documentElement.doScroll("left")}catch(c){return void setTimeout(m,50)}v()}l=function(){var c,l;(l=document.createElement("div")).innerHTML=z,z=null,(c=l.getElementsByTagName("svg")[0])&&(c.setAttribute("aria-hidden","true"),c.style.position="absolute",c.style.width=0,c.style.height=0,c.style.overflow="hidden",l=c,(c=document.body).firstChild?p(l,c.firstChild):c.appendChild(l))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(l,0):(a=function(){document.removeEventListener("DOMContentLoaded",a,!1),l()},document.addEventListener("DOMContentLoaded",a,!1)):document.attachEvent&&(h=l,i=c.document,o=!1,m(),i.onreadystatechange=function(){"complete"==i.readyState&&(i.onreadystatechange=null,v())})}(window); \ No newline at end of file +!function(a){var c,l,h,i,o,z='',t=(t=document.getElementsByTagName("script"))[t.length-1].getAttribute("data-injectcss"),p=function(a,c){c.parentNode.insertBefore(a,c)};if(t&&!a.__iconfont__svg__cssinject__){a.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(a){console&&console.log(a)}}function v(){o||(o=!0,h())}function m(){try{i.documentElement.doScroll("left")}catch(a){return void setTimeout(m,50)}v()}c=function(){var a,c;(c=document.createElement("div")).innerHTML=z,z=null,(a=c.getElementsByTagName("svg")[0])&&(a.setAttribute("aria-hidden","true"),a.style.position="absolute",a.style.width=0,a.style.height=0,a.style.overflow="hidden",c=a,(a=document.body).firstChild?p(c,a.firstChild):a.appendChild(c))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(c,0):(l=function(){document.removeEventListener("DOMContentLoaded",l,!1),c()},document.addEventListener("DOMContentLoaded",l,!1)):document.attachEvent&&(h=c,i=a.document,o=!1,m(),i.onreadystatechange=function(){"complete"==i.readyState&&(i.onreadystatechange=null,v())})}(window); \ No newline at end of file diff --git a/public/css/iconfont.json b/public/css/iconfont.json index ccad2747..41b97b77 100644 --- a/public/css/iconfont.json +++ b/public/css/iconfont.json @@ -5,6 +5,440 @@ "css_prefix_text": "icon-", "description": "", "glyphs": [ + { + "icon_id": "25748537", + "name": "知识图谱", + "font_class": "zhishitupu", + "unicode": "e8fc", + "unicode_decimal": 59644 + }, + { + "icon_id": "25748551", + "name": "计算机", + "font_class": "jisuanji1", + "unicode": "e8fd", + "unicode_decimal": 59645 + }, + { + "icon_id": "25748553", + "name": "电子", + "font_class": "dianzi1", + "unicode": "e8ff", + "unicode_decimal": 59647 + }, + { + "icon_id": "25748554", + "name": "军事理论", + "font_class": "junshililun1", + "unicode": "e900", + "unicode_decimal": 59648 + }, + { + "icon_id": "25748555", + "name": "软件工程", + "font_class": "ruanjiangongcheng1", + "unicode": "e901", + "unicode_decimal": 59649 + }, + { + "icon_id": "25748556", + "name": "医学", + "font_class": "yixue1", + "unicode": "e902", + "unicode_decimal": 59650 + }, + { + "icon_id": "25748558", + "name": "通信", + "font_class": "tongxin1", + "unicode": "e904", + "unicode_decimal": 59652 + }, + { + "icon_id": "25748560", + "name": "政策法规", + "font_class": "zhengcefagui1", + "unicode": "e906", + "unicode_decimal": 59654 + }, + { + "icon_id": "25748528", + "name": "大数据", + "font_class": "dashuju", + "unicode": "e8f3", + "unicode_decimal": 59635 + }, + { + "icon_id": "25748531", + "name": "人工智能", + "font_class": "rengongzhineng", + "unicode": "e8f6", + "unicode_decimal": 59638 + }, + { + "icon_id": "25733167", + "name": "双引号(1)@2x", + "font_class": "a-shuangyinhao12x", + "unicode": "e8f2", + "unicode_decimal": 59634 + }, + { + "icon_id": "25701947", + "name": "顶部", + "font_class": "dingbu", + "unicode": "e8ee", + "unicode_decimal": 59630 + }, + { + "icon_id": "25701948", + "name": "帮助", + "font_class": "bangzhu1", + "unicode": "e8ef", + "unicode_decimal": 59631 + }, + { + "icon_id": "25701949", + "name": "意见反馈", + "font_class": "yijianfankui2", + "unicode": "e8f0", + "unicode_decimal": 59632 + }, + { + "icon_id": "25701950", + "name": "分享", + "font_class": "fenxiang", + "unicode": "e8f1", + "unicode_decimal": 59633 + }, + { + "icon_id": "25580217", + "name": "地址", + "font_class": "dizhi", + "unicode": "e8eb", + "unicode_decimal": 59627 + }, + { + "icon_id": "25580218", + "name": "邮箱", + "font_class": "youxiang1", + "unicode": "e8ec", + "unicode_decimal": 59628 + }, + { + "icon_id": "25580219", + "name": "电话icon", + "font_class": "dianhuaicon", + "unicode": "e8ed", + "unicode_decimal": 59629 + }, + { + "icon_id": "25284174", + "name": "添加icon", + "font_class": "tianjiaicon", + "unicode": "e8e8", + "unicode_decimal": 59624 + }, + { + "icon_id": "25284175", + "name": "铃声icon", + "font_class": "lingshengicon", + "unicode": "e8ea", + "unicode_decimal": 59626 + }, + { + "icon_id": "25204490", + "name": "更多icon", + "font_class": "gengduoicon", + "unicode": "e8e5", + "unicode_decimal": 59621 + }, + { + "icon_id": "25204491", + "name": "时间icon", + "font_class": "shijianicon", + "unicode": "e8e7", + "unicode_decimal": 59623 + }, + { + "icon_id": "25188228", + "name": "密码icon", + "font_class": "mimaicon", + "unicode": "e8e1", + "unicode_decimal": 59617 + }, + { + "icon_id": "25188229", + "name": "钩icon", + "font_class": "gouicon", + "unicode": "e8e2", + "unicode_decimal": 59618 + }, + { + "icon_id": "25188230", + "name": "展开icon", + "font_class": "zhankaiicon", + "unicode": "e8e3", + "unicode_decimal": 59619 + }, + { + "icon_id": "24656750", + "name": "文件", + "font_class": "wenjian7", + "unicode": "e8e0", + "unicode_decimal": 59616 + }, + { + "icon_id": "630094", + "name": "向右箭头", + "font_class": "xiangyoujiantou", + "unicode": "e8de", + "unicode_decimal": 59614 + }, + { + "icon_id": "630095", + "name": "向左箭头", + "font_class": "xiangzuojiantou", + "unicode": "e8df", + "unicode_decimal": 59615 + }, + { + "icon_id": "24600282", + "name": "浏览icon@2x", + "font_class": "a-liulanicon2x", + "unicode": "e8dd", + "unicode_decimal": 59613 + }, + { + "icon_id": "24567893", + "name": "文件icon", + "font_class": "wenjianicon", + "unicode": "e8dc", + "unicode_decimal": 59612 + }, + { + "icon_id": "24527422", + "name": "圆圈@2x", + "font_class": "a-yuanquan2x", + "unicode": "e8db", + "unicode_decimal": 59611 + }, + { + "icon_id": "24378423", + "name": "项目标签", + "font_class": "xiangmubiaoqian", + "unicode": "e8da", + "unicode_decimal": 59610 + }, + { + "icon_id": "24368060", + "name": "icon", + "font_class": "icon", + "unicode": "e8ce", + "unicode_decimal": 59598 + }, + { + "icon_id": "24368061", + "name": "tar", + "font_class": "tar", + "unicode": "e8cf", + "unicode_decimal": 59599 + }, + { + "icon_id": "24289113", + "name": "复制 (2)", + "font_class": "a-fuzhi2", + "unicode": "e8d0", + "unicode_decimal": 59600 + }, + { + "icon_id": "24289114", + "name": "附件", + "font_class": "fujian1", + "unicode": "e8d1", + "unicode_decimal": 59601 + }, + { + "icon_id": "24289115", + "name": "编 辑", + "font_class": "a-bianji1", + "unicode": "e8d2", + "unicode_decimal": 59602 + }, + { + "icon_id": "24289116", + "name": "版本icon", + "font_class": "banbenicon", + "unicode": "e8d3", + "unicode_decimal": 59603 + }, + { + "icon_id": "24289117", + "name": "删除icon", + "font_class": "shanchuicon2", + "unicode": "e8d4", + "unicode_decimal": 59604 + }, + { + "icon_id": "24289118", + "name": "垃圾桶_icon@3x", + "font_class": "a-lajitong_icon3x", + "unicode": "e8d5", + "unicode_decimal": 59605 + }, + { + "icon_id": "24289119", + "name": "下拉按钮", + "font_class": "xialaanniu2", + "unicode": "e8d6", + "unicode_decimal": 59606 + }, + { + "icon_id": "24289120", + "name": "下载-icon", + "font_class": "xiazai-icon", + "unicode": "e8d7", + "unicode_decimal": 59607 + }, + { + "icon_id": "24289121", + "name": "master_icon", + "font_class": "master_icon1", + "unicode": "e8d8", + "unicode_decimal": 59608 + }, + { + "icon_id": "24289122", + "name": "上传icon", + "font_class": "shangchuanicon", + "unicode": "e8d9", + "unicode_decimal": 59609 + }, + { + "icon_id": "24059956", + "name": "个人资料", + "font_class": "gerenziliao1", + "unicode": "e8c7", + "unicode_decimal": 59591 + }, + { + "icon_id": "24059409", + "name": "里程碑icon", + "font_class": "lichengbeiicon", + "unicode": "e885", + "unicode_decimal": 59525 + }, + { + "icon_id": "24059410", + "name": "仓库设置icon", + "font_class": "cangkushezhiicon", + "unicode": "e889", + "unicode_decimal": 59529 + }, + { + "icon_id": "24059411", + "name": "动态icon", + "font_class": "dongtaiicon", + "unicode": "e88a", + "unicode_decimal": 59530 + }, + { + "icon_id": "24059412", + "name": "工作流icon", + "font_class": "gongzuoliuicon", + "unicode": "e88b", + "unicode_decimal": 59531 + }, + { + "icon_id": "24059413", + "name": "易修icon", + "font_class": "yixiuicon1", + "unicode": "e89b", + "unicode_decimal": 59547 + }, + { + "icon_id": "24059414", + "name": "wiki icon", + "font_class": "a-wikiicon1", + "unicode": "e8c6", + "unicode_decimal": 59590 + }, + { + "icon_id": "24047186", + "name": "代码库icon", + "font_class": "daimakuicon1", + "unicode": "e8c5", + "unicode_decimal": 59589 + }, + { + "icon_id": "24047189", + "name": "我的通知", + "font_class": "wodetongzhi", + "unicode": "e8c8", + "unicode_decimal": 59592 + }, + { + "icon_id": "24047190", + "name": "通知管理", + "font_class": "tongzhiguanli", + "unicode": "e8c9", + "unicode_decimal": 59593 + }, + { + "icon_id": "24047191", + "name": "选中", + "font_class": "xuanzhong3", + "unicode": "e8ca", + "unicode_decimal": 59594 + }, + { + "icon_id": "24047192", + "name": "系统通知icon", + "font_class": "xitongtongzhiicon", + "unicode": "e8cb", + "unicode_decimal": 59595 + }, + { + "icon_id": "24047193", + "name": "消息", + "font_class": "xiaoxi2", + "unicode": "e8cc", + "unicode_decimal": 59596 + }, + { + "icon_id": "24047194", + "name": "ssh密钥", + "font_class": "sshmiyue", + "unicode": "e8cd", + "unicode_decimal": 59597 + }, + { + "icon_id": "24014152", + "name": "个人资料", + "font_class": "gerenziliao", + "unicode": "e8c4", + "unicode_decimal": 59588 + }, + { + "icon_id": "23655968", + "name": "新手指引", + "font_class": "xinshouzhiyin", + "unicode": "e8e4", + "unicode_decimal": 59620 + }, + { + "icon_id": "23655969", + "name": "新建项目", + "font_class": "xinjianxiangmu", + "unicode": "e8e6", + "unicode_decimal": 59622 + }, + { + "icon_id": "23658111", + "name": "加入课堂", + "font_class": "jiaruketang1", + "unicode": "e8e9", + "unicode_decimal": 59625 + }, { "icon_id": "23791639", "name": "项目公告", @@ -166,13 +600,6 @@ "unicode": "e883", "unicode_decimal": 59523 }, - { - "icon_id": "23472256", - "name": "仓库设置icon", - "font_class": "cangkushezhiicon", - "unicode": "e885", - "unicode_decimal": 59525 - }, { "icon_id": "23472258", "name": "链接icon", @@ -187,27 +614,6 @@ "unicode": "e888", "unicode_decimal": 59528 }, - { - "icon_id": "23472260", - "name": "里程碑icon", - "font_class": "lichengbeiicon", - "unicode": "e889", - "unicode_decimal": 59529 - }, - { - "icon_id": "23472261", - "name": "工作流icon", - "font_class": "gongzuoliuicon", - "unicode": "e88a", - "unicode_decimal": 59530 - }, - { - "icon_id": "23472262", - "name": "动态icon", - "font_class": "dongtaiicon", - "unicode": "e88b", - "unicode_decimal": 59531 - }, { "icon_id": "23472263", "name": "默认点赞_icon", @@ -390,13 +796,6 @@ "unicode": "e898", "unicode_decimal": 59544 }, - { - "icon_id": "23144155", - "name": "未选中请求icon", - "font_class": "weixuanzhongqingqiuicon", - "unicode": "e89b", - "unicode_decimal": 59547 - }, { "icon_id": "23144158", "name": "协作者管理icon", diff --git a/public/css/iconfont.ttf b/public/css/iconfont.ttf index c73a3911..dc757c28 100644 Binary files a/public/css/iconfont.ttf and b/public/css/iconfont.ttf differ diff --git a/public/css/iconfont.woff b/public/css/iconfont.woff index 4bf61a4c..3fed2f00 100644 Binary files a/public/css/iconfont.woff and b/public/css/iconfont.woff differ diff --git a/public/css/iconfont.woff2 b/public/css/iconfont.woff2 index be264e21..678c08c8 100644 Binary files a/public/css/iconfont.woff2 and b/public/css/iconfont.woff2 differ diff --git a/src/App.js b/src/App.js index 263be1f7..a79aa7eb 100644 --- a/src/App.js +++ b/src/App.js @@ -85,6 +85,11 @@ const EducoderLogin = Loadable({ loading: Loading, }) +const HomePage = Loadable({ + loader: () => import('./home'), + loading: Loading, +}) + class App extends Component { constructor(props) { super(props); @@ -131,6 +136,8 @@ class App extends Component { } }); } + + componentDidMount() { document.title = "loading..."; this.disableVideoContextMenu(); @@ -281,11 +288,12 @@ class App extends Component { (props) => { return () } - }> + }> ( - + + // ) } /> diff --git a/src/AppConfig.js b/src/AppConfig.js index 1b78e7a9..b917be36 100644 --- a/src/AppConfig.js +++ b/src/AppConfig.js @@ -25,7 +25,7 @@ if (isDev) { } debugType = window.location.search.indexOf('debug=t') !== -1 ? 'teacher' : window.location.search.indexOf('debug=s') !== -1 ? 'student' : - window.location.search.indexOf('debug=a') !== -1 ? 'admin' : parsed.debug || 's' + window.location.search.indexOf('debug=a') !== -1 ? 'admin' : parsed.debug || 'a' } function clearAllCookie() { cookie.remove('_educoder_session', { path: '/' }); diff --git a/src/common/Env.js b/src/common/Env.js index 9830d772..719f7c15 100644 --- a/src/common/Env.js +++ b/src/common/Env.js @@ -3,6 +3,6 @@ export function isDev() { } // const isMobile -export const isMobile = (/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i.test(navigator.userAgent.toLowerCase())); +export const isMobile = (/android|webos|iphone|ipad|ipod|blackberry|honor|huawei|iemobile|opera mini/i.test(navigator.userAgent.toLowerCase())); // const isWeiXin = (/MicroMessenger/i.test(navigator.userAgent.toLowerCase())); diff --git a/src/common/UrlTool.js b/src/common/UrlTool.js index f952f22c..175fb56b 100644 --- a/src/common/UrlTool.js +++ b/src/common/UrlTool.js @@ -34,6 +34,30 @@ export function getImage(path) { } } +export function getTestImage(path) { + // https://www.educoder.net + // https://testbdweb.trustie.net + // const local = 'http://localhost:3000' + const local = 'http://117.50.100.12:49999'; + if(path.indexOf("http://")===-1){ + if (isDev) { + return `${local}${path}` + } + return `${path}`; + }else{ + return path; + } +} + +export function getLogoImageUrl(path) { + const local = 'http://117.50.100.12:49999'; + + if (isDev) { + return `${local}/${path}` + } + return `/${path}`; +} + export function getcdnImageUrl(path) { // https://www.educoder.net // https://testbdweb.trustie.net @@ -234,3 +258,9 @@ export function publicSearchs(Placeholder,onSearch,onInputs,onChanges,loadings) allowClear={true} >) } + +export function getUrlToken(name, str) { + const reg = new RegExp(`(^|&)${ name}=([^&]*)(&|$)`); + const r = str.substr(1).match(reg); + if (r != null) return decodeURIComponent(r[2]); return null; +} \ No newline at end of file diff --git a/src/common/educoder.js b/src/common/educoder.js index c6eaf176..e8592c87 100644 --- a/src/common/educoder.js +++ b/src/common/educoder.js @@ -6,7 +6,7 @@ export { getUploadLogoActionUrl as getUploadLogoActionUrl, getImageUrl as getImageUrl,getImage as getImage, getmyUrl as getmyUrl, getRandomNumber as getRandomNumber, getUrl as getUrl, publicSearchs as publicSearchs, getRandomcode as getRandomcode, getUrlmys as getUrlmys, getUrl2 as getUrl2, setImagesUrl as setImagesUrl , getUploadActionUrl as getUploadActionUrl, getUploadActionUrltwo as getUploadActionUrltwo, getUploadActionUrlthree as getUploadActionUrlthree, getUploadActionUrlOfAuth as getUploadActionUrlOfAuth - , getTaskUrlById as getTaskUrlById, TEST_HOST, htmlEncode as htmlEncode, getupload_git_file as getupload_git_file, getcdnImageUrl as getcdnImageUrl + , getTaskUrlById as getTaskUrlById, TEST_HOST, htmlEncode as htmlEncode, getupload_git_file as getupload_git_file, getcdnImageUrl as getcdnImageUrl,getTestImage as getTestImage,getLogoImageUrl as getLogoImageUrl,getUrlToken as getUrlToken } from './UrlTool'; export { setmiyah as setmiyah } from './Component'; diff --git a/src/home/FifthSection/index.jsx b/src/home/FifthSection/index.jsx new file mode 100644 index 00000000..64eed1a0 --- /dev/null +++ b/src/home/FifthSection/index.jsx @@ -0,0 +1,224 @@ +import React, { memo, useState, useEffect } from 'react'; +import { Collapse, Button } from 'antd'; +import moment from 'moment'; +import Line from '../Line'; +import { getTaskCategory, getTaskList } from '../../military/task/api'; +import { taskModeIdArr } from '../../military/task/static'; + +import './index.scss'; +const { Panel } = Collapse; + +const taskModeNameArr = []; +for (const item of taskModeIdArr) { + taskModeNameArr[item.dicItemCode] = item.dicItemName; +} + + +let taskArrMock = [ + { + id: 447, + name: "研发配置要求为包含网络化协同控制仿真验证与多样化目标识别仿真验证模块的1套软件和1份测试报告。", + taskModeId: 1, //悬赏模式 + bounty: 1.0, //赏金 + description: "

统筹管理员能看到不?

", //详情 + createdAt: "2021-11-10 17:42:38", //创建时间 + publishedAt: "2021-11-10 17:43:41", //发布时间 + collectingDays: 30, //成果提交天数 + }, + { + id: 448, + name: "研发配置要求验证与多样化目标识别仿真验证模块的1套软件和1份测试报告。", + taskModeId: 2, //悬赏模式 + bounty: 100.0, //赏金 + description: "

统筹管理员能看到不?

", //详情 + createdAt: "2021-11-10 17:42:38", + publishedAt: "2021-11-11 17:43:41", + collectingDays: 30, + }, + { + id: 449, + name: "研发配置要求为包含网络", + taskModeId: 3, //悬赏模式 + bounty: 10000.0, //赏金 + description: "

统筹管理员能看到不?

", //详情 + createdAt: "2021-11-10 17:42:38", + publishedAt: "2021-11-12 17:43:41", + collectingDays: 30, + } +] + +function getSomeDayAfter(initailDate, nDay) { + return moment(new Date(initailDate).setDate(new Date(initailDate).getDate() + nDay)).format('YYYY-MM-DD'); +} + +function FifthSection({ fifth, history }) { + + const [taskCategoryArr, setTaskCategoryArr] = useState([]); + const [taskArr, serTaskArr] = useState(taskArrMock); + + useEffect(() => { + const params = { + curPage: 1, + pageSize: 3, + orderBy: 'visitsDesc', + isDelete: '0', + recommend: '1', + }; + getTaskList(params).then(data => { + if (data) { + serTaskArr(data.rows); + } + }) + }, []); + + + // 获取分类数据 + useEffect(() => { + getTaskCategory().then(data => { + if (data) { + for (const item of data) { + switch (item.name) { + case "军事理论": + item.icon = "junshililun1"; + break; + case "政策法规": + item.icon = "zhengcefagui1"; + break; + case "医学": + item.icon = "yixue1"; + break; + case "电子": + item.icon = "dianzi1"; + break; + case "通信": + item.icon = "tongxin1"; + break; + case "计算机科学": + item.icon = "jisuanji1"; + item.name = "计算机"; + break; + case "软件工程": + item.icon = "ruanjiangongcheng1"; + break; + case "人工智能": + item.icon = "rengongzhineng"; + break; + case "知识图谱": + item.icon = "zhishitupu"; + break; + case "大数据": + item.icon = "dashuju"; + break; + default: + item.icon = "dianzi1"; + } + } + setTaskCategoryArr(data.slice(0, 10)); + } + }); + }, []); + + function goTask(item) { + history.push(`/task?type=${item.id}`) + // console.log(item); + } + + + return ( + +
+
+
    + { + taskCategoryArr.map((item, i) => { + return (
  • { goTask(item) }}> + + {item.name} +
  • ) + }) + } +
+ +
+
+
+
+
+
+
+ 创客空间 +
+
+
+ +
+ +
+

创客空间

+

开源项目版块集项目托管、版本管理等功能于一体,为开源协作和群智汇聚提供创作环境

+ + + { + taskArr.map((item, i) => { + return ( + +

+
+

+ + {taskModeNameArr[item.taskModeId]} + ¥ {item.bounty} +

+ +

+ + 发布时间 + {moment(item.publishedAt || item.createdAt).format('YYYY-MM-DD')} +

+ +

+ + 截止时间 + {getSomeDayAfter(item.publishedAt || item.createdAt, item.collectingDays)} + +

+
+
+ ) + }) + } + +
+
+ +
+ +
+ +
+ + + + + + + + {/* + + */} + + + + + + +
+ ) +} + +export default memo(FifthSection); \ No newline at end of file diff --git a/src/home/FifthSection/index.scss b/src/home/FifthSection/index.scss new file mode 100644 index 00000000..27297895 --- /dev/null +++ b/src/home/FifthSection/index.scss @@ -0,0 +1,342 @@ +$deg: 36deg; +$deg2: -36deg; + +$bgcolorlist:#254dea #e33230 #0766fb #f02c66 #6038ff #f85e55 #c13cff #2cb840 #5744f6 #e9862e; + +.home-fifth-section { + min-height: 50vh; + background: linear-gradient(#fff 0%, #cbdcff 100%); + + .fifth-main { + display: flex; + margin: 5vh auto 3vh; + justify-content: space-between; + } + + .homepage-btn { + margin-bottom: 10vh; + } + + .circle-wave { + position: relative; + width: 37.5em; + height: 43.75em; + flex: none; + + &:hover .icon-circle { + animation-play-state: paused; + + li span { + animation-play-state: paused; + } + } + } + .icon-circle { + position: absolute; + width: 35em; + height: 35em; + border-radius: 50%; + animation: iconCircle infinite 20s linear; + + li { + width: 4.375em; + height: 4.375em; + position: absolute; + background-color: #254dea; + border-radius: 50%; + color: #fff; + line-height: 4.375em; + text-align: center; + left: 50%; + margin-left: -1.25em; + margin-top: -1.25em; + cursor: pointer; + .iconfont { + font-size: 1.5em !important; + cursor: pointer; + } + } + + @for $i from 1 to length($bgcolorlist) + 1 { + li:nth-child(#{$i}) { + background: nth($bgcolorlist, $i); + transform: rotate(($i - 1) * $deg); + transform-origin: 1.25em 18.75em; + span { + transform: rotate(($i - 1) * $deg2); + animation: iconItem#{$i} infinite 20s linear; + } + } + + @keyframes iconItem#{$i} { + 0% { + transform: rotate(($i - 1) * $deg2); + } + 100% { + transform: rotate(($i + 9) * $deg2); + } + } + } + + + li { + span { + position: absolute; + left: 0; + border-radius: 50%; + width: 100%; + background: rgba(0, 0, 0, 0.5); + visibility: hidden; + } + &:hover span { + visibility: visible; + z-index: 2; + } + } + } + + @keyframes iconCircle { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } + } + + + .circleBox { + position: relative; + right: 0.9375em; + width: 10em; + height: 10em; + margin: 12.5em auto 0; + } + + .circle1, + .circle2, + .circle3, + .circle4, + .circle5 { + width: 10em; + height: 10em; + border-radius: 50%; + position: absolute; + } + + .circle5 { + background-color: rgba(98, 88, 252, 0.3); + display: flex; + justify-content: center; + align-items: center; + } + + .circle-center { + width: 6.25em; + height: 6.25em; + padding: 1em 2em; + border-radius: 50%; + background: linear-gradient(to bottom right, #2bebd7 0%, #692fd1 100%); + color: #fff; + text-align: center; + font-size: 1.25em; + line-height: 2em; + } + + .circle1 { + animation: cricle-wave 5s linear 0s infinite; + background-color: rgba(98, 88, 252, 0.3); + } + + .circle2 { + animation: cricle-wave 5s linear 1s infinite; + background-color: rgba(98, 88, 252, 0.3); + } + + .circle3 { + animation: cricle-wave 5s linear 2s infinite; + background-color: rgba(98, 88, 252, 0.3); + } + + .circle4 { + animation: cricle-wave 5s linear 3s infinite; + background-color: rgba(98, 88, 252, 0.3); + } + + @keyframes cricle-wave { + 0% { + transform: scale(1); + opacity: 1; + } + + 10% { + transform: scale(1.15); + opacity: 0.9; + } + + 20% { + transform: scale(1.3); + opacity: 0.8; + } + + 30% { + transform: scale(1.45); + opacity: 0.7; + } + + 40% { + transform: scale(1.6); + opacity: 0.6; + } + + 50% { + transform: scale(1.75); + opacity: 0.5; + } + + 60% { + transform: scale(1.9); + opacity: 0.4; + } + + 70% { + transform: scale(2.05); + opacity: 0.3; + } + + 80% { + transform: scale(2.2); + opacity: 0.2; + } + + 90% { + transform: scale(2.35); + opacity: 0.1; + } + + 100% { + transform: scale(2.5); + opacity: 0; + } + } + + .task-main { + margin:-2.5em 0 0 2.5em; + .home-line { + text-align: left; + margin-bottom: 1.56em !important; + } + } + + .ant-collapse { + border: 0; + background: inherit; + font-size: .875em; + .ant-collapse-item { + border: 0; + margin-bottom: 0.9375em; + } + .ant-collapse-item:last-child, + .ant-collapse-item:last-child > .ant-collapse-header { + border-radius: .375em .375em 0 0; + } + + .ant-collapse-header { + height: 4.875em; + background: #ffffff; + box-shadow: 0px 0px .625em .3125em rgba(38, 118, 255, 0.04); + border-radius: .375em; + font-size: 1.125em; + color: #0a1255; + letter-spacing: 0; + font-weight: 500; + padding: 1.6875em 2.8125em 1.6875em 3.375em; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + + // max-width: 35em; + + .ant-collapse-arrow { + display: inline-flex; + justify-content: center; + align-items: center; + width: 1.75em; + height: 1.75em; + border-radius: 50%; + box-shadow: 0px 0px 3.125em 1px rgba(38, 118, 255, 0.1); + svg { + transform: rotate(90deg); + } + } + } + + .ant-collapse-item-active { + background: #ffffff; + box-shadow: 0px 0px .625em .3125em rgba(38, 118, 255, 0.04); + border-radius: .375em; + border: 0; + .ant-collapse-header { + height: 3em; + padding: 0.9375em 3.375em; + background: #596cee; + color: #fff; + border-bottom-left-radius: 0px; + border-bottom-right-radius: 0px; + } + + .ant-collapse-arrow { + display: none; + } + } + + .ant-collapse-content > .ant-collapse-content-box { + padding: 1.375em 1.75em; + } + } + + .collapse-des { + font-size: 0.9375em; + color: #3a4772; + letter-spacing: 0; + line-height: 1.75em; + font-weight: 400; + margin-bottom: 0.5em !important; + + + } + .collapse-content { + padding: .75em; + background: #f5f7fa; + border-radius: .25em; + + .collapse-content-item { + position: relative; + height: 1.875em; + line-height: 1.875em; + font-weight: 400; + } + .iconfont { + margin-right: .75em; + color: #ea0000; + } + .collapse-content-money { + margin-left: 1.375em; + color: #ea0000; + } + .collapse-content-time { + margin-left: 1.375em; + } + } + + .collapse-detail{ + color: #4154f1; + border-color: #4154f1; + position: absolute; + right: 1.25em; + } + .waves { + position: relative; + bottom: -1.5vh; + } +} diff --git a/src/home/FirstSection/index.jsx b/src/home/FirstSection/index.jsx new file mode 100644 index 00000000..8fabd64a --- /dev/null +++ b/src/home/FirstSection/index.jsx @@ -0,0 +1,110 @@ +import React, { memo, useEffect, useState } from 'react'; +import { Button } from 'antd'; +import './index.scss'; + +import circle from '../img/1-circle.png'; +import code1 from '../img/1-code.png'; +import codeBed from '../img/1-code-bed.png'; +import glass from '../img/1-glass.png'; +import logo from '../img/1-logo.png'; +import box1 from '../img/1-box1.png'; +import box2 from '../img/1-box2.png'; +import box3 from '../img/1-box3.png'; +import box4 from '../img/1-box4.png'; + +import text1 from '../img/1-text1.png'; +import text2 from '../img/1-text2.png'; +import text3 from '../img/1-text3.png'; +import text4 from '../img/1-text4.png'; + +function FirstSection({ first }) { + + const [circulation, setCirculation] = useState(''); + + useEffect(() => { + const playGlass = document.getElementById("playGlass"); + playGlass.addEventListener("webkitAnimationEnd", secondAnimation); + return () => { + setCirculation(''); + playGlass.removeEventListener("webkitAnimationEnd",secondAnimation); + }; + }, []); + + function secondAnimation(){ + setCirculation('circulation'); + } + + useEffect(() => { + setCirculation(''); + }, [first]); + + + function goNext(){ + window.scrollTo({ + letf:0, + top:document.querySelector(".home-second-section").offsetTop, + behavior:"smooth" + } + ) + } + + return ( +
+
+ +
+

红山开源

+
+ 群智共享 + 开源开放 + 协同创新 + 择优孵化 +
+
红山开源是一个依托互联网群体智慧实现世界范围内资源深度融合、开放共享和协同创新的开源社区,是集开源项目演化发展、科研任务众包、竞赛组织选拔和社区开放交流为一体的创新科研服务平台。红山开源致力于打造一个“开放、汇聚、协同、众创”的生态空间。 +
+ {/* */} +
+ +
+ images-not_found + images-not_found + images-not_found + images-not_found + images-not_found + images-not_found + images-not_found +
+
+
+ images-not_found + images-not_found + images-not_found + images-not_found + images-not_found + images-not_found + +
+
+ + + + + + + {/* + + + */} + {/* */} + + + + + + +
+ ) +} + +export default memo(FirstSection); \ No newline at end of file diff --git a/src/home/FirstSection/index.scss b/src/home/FirstSection/index.scss new file mode 100644 index 00000000..f52d53b9 --- /dev/null +++ b/src/home/FirstSection/index.scss @@ -0,0 +1,696 @@ +.home-first-section { + height: 90vh; + min-height: 650px; + // background: linear-gradient( + // #1a2358 0%, + // #12277b 33%, + // #0c2d8f 67%, + // #002a89 100% + // ); + background: linear-gradient( + #0037AF 0%, + #0c2d8f 100%, + ); + + .grid-picture { + position: relative; + height: 100%; + background: url(../img/grid.png) no-repeat; + background-size: 100% auto; + .waves { + position: absolute; + left: 0; + right: 0; + bottom: -2px; + height: 10vh; + } + } + + .website-content { + display: flex; + justify-content: space-between; + align-items: center; + height: 80vh; + min-height: 600px; + } + + .website { + position: relative; + display: flex; + flex-direction: column; + justify-content: center; + height: 100%; + margin-right: 3.5%; + color: #fff; + .website-title { + color: #fff; + font-size: 2.4em; + } + .website-vision { + display: flex; + justify-content: space-between; + margin-bottom: 1.3em; + color: #ff832b; + font-size: 1.5em; + } + .website-des { + font-size: 1em; + line-height: 2.3; + margin-bottom: 1.5em; + opacity: 0.8; + } + + .website-more { + margin: 0; + } + } + + .play-img { + display: flex; + flex: none; + justify-content: center; + align-items: flex-end; + position: relative; + width: 680px; + height: 580px; + img { + opacity: 0; + } + + .play-glass { + position: relative; + width: 351px; + z-index: 1; + } + .play-circle { + position: absolute; + width: 165px; + height: 160px; + right: 17%; + bottom: -6.5%; + z-index: 2; + } + + .play-circle-circle1,.play-circle-circle2,.play-circle-circle3,.play-circle-circle4,.play-circle-circle5 { + position: absolute; + width: 85px; + height: 53px; + right: 23.2%; + bottom: 9%; + z-index: 2; + border: 1px solid rgb(73, 169, 241); + border-radius: 50%; + } + + .play-pillar { + position: absolute; + left: -11%; + top: 37%; + width: 230px; + } + .play-box1 { + position: absolute; + left: -6%; + bottom: 30%; + width: 57px; + } + .play-box2 { + position: absolute; + left: 0%; + bottom: 34%; + width: 57px; + } + .play-box3 { + position: absolute; + left: 6%; + bottom: 38%; + width: 57px; + } + .play-box4 { + position: absolute; + left: 12%; + bottom: 42%; + width: 57px; + } + .play-code1 { + position: absolute; + right: 0%; + top: 33%; + width: 128px; + z-index: 1; + } + .play-code-bed { + position: absolute; + right: -5%; + top: 44%; + width: 211px; + z-index: 1; + opacity: 1; + } + .play-logo { + position: absolute; + top: 25%; + width: 87px; + z-index: 10; + color: #fff; + font-size: 40px; + } + .play-text1 { + position: absolute; + z-index: 2; + } + .play-text2 { + position: absolute; + z-index: 2; + } + .play-text3 { + position: absolute; + } + .play-text4 { + position: absolute; + } + } + + .active { + .website { + animation: website 0.75s 1 forwards; + } + .play-glass { + animation: glass 0.75s 1 forwards; + } + .play-circle { + animation: circle 0.75s 1 forwards; + } + .play-circle-circle1,.play-circle-circle2,.play-circle-circle3,.play-circle-circle4,.play-circle-circle5{ + animation: circle-before 0.75s 1 forwards; + } + .play-box1 { + animation: box1 0.75s 1 forwards; + } + .play-box2 { + animation: box2 0.75s 1 forwards; + } + .play-box3 { + animation: box3 0.75s 1 forwards; + } + .play-box4 { + animation: box4 0.75s 1 forwards; + } + // .play-code { + // animation: code 0.75s 1 forwards; + // } + .play-code1 { + animation: code1 0.75s 1 forwards; + } + .play-code-bed { + animation: codeBed 0.75s 1 forwards; + } + .play-logo { + animation: logo 6s 0.5s infinite; //linear + } + .play-text1 { + // animation: text1-show 0.5s 1 0.5s forwards; + animation: text1-show 6s 0.5s infinite; + } + .play-text2 { + animation: text2-show 6s 0.5s infinite; + } + .play-text3 { + animation: text3-show 6s 0.5s infinite; + } + .play-text4 { + animation: text4-show 6s 0.5s infinite; + } + + .circulation { + .play-code1 { + animation: code1-circulation 6s infinite; + } + + .play-box1 { + animation: box1-circulation 2s infinite; + } + + .play-box2 { + animation: box2-circulation 2s infinite; + } + + .play-box3 { + animation: box3-circulation 2s infinite; + } + + .play-box4 { + animation: box4-circulation 2s infinite; + } + + .play-circle-circle1{ + animation: circle-circle 6s 0.25s infinite; + } + .play-circle-circle2{ + animation: circle-circle 6s 2.25s infinite; + } + .play-circle-circle3{ + animation: circle-circle 6s 4.25s infinite; + } + // .play-circle-circle4{ + // animation: circle-circle 6s 4.5s infinite; + // } + // .play-circle-circle5{ + // animation: circle-circle 6s 6s infinite; + // } + } + } + + @keyframes website { + 0% { + top: 25vh; + opacity: 0; + } + 100% { + top: 0; + opacity: 1; + } + } + + @keyframes glass { + 0% { + opacity: 0; + transform: rotate(-25deg); + top: 5.5%; + } + 100% { + opacity: 1; + transform: rotate(0deg); + top: 0; + } + } + + @keyframes logo { + 0% { + opacity: 1; + top: 23%; + } + 50% { + opacity: 1; + top: 12%; + } + 100% { + opacity: 1; + top: 23%; + } + } + + // logo动效方案一 + // @keyframes logo { + // 10% { + // opacity: 0; + // top: 33%; + // transform: rotateY(0deg); + // } + // 50% { + // opacity: 1; + // top: 12%; + // transform: rotateY(360deg); + // } + // 90% { + // opacity: 0; + // top: 33%; + // transform: rotateY(360deg); + // } + // } + + // logo动效方案二 + // @keyframes logo { + // 15% { + // opacity: 0; + // top: 33%; + // // transform: rotate(0deg); + // } + // 40% { + // opacity: 1; + // top: 10%; + // transform: rotateX(0deg); + // } + // 60% { + // opacity: 1; + // top: 10%; + // transform: rotateX(360deg); + // } + // 85% { + // opacity: 0; + // top: 40%; + // // transform: rotateY(360deg); + // } + // } + + // logo动效方案三 + // @keyframes logo { + // 0% { + // opacity: 1; + // top: 10%; + // transform: rotateY(0deg); + // } + + // 25% { + // opacity: 1; + // top: 10%; + // transform: rotateY(90deg); + // } + // 50% { + // opacity: 1; + // top: 10%; + // transform: rotateY(180deg); + // } + + // 75% { + // opacity: 1; + // top: 10%; + // transform: rotateY(270deg); + // } + + // 100% { + // opacity: 1; + // top: 10%; + // transform: rotateY(360deg); + // } + // } + + @keyframes circle { + 0% { + opacity: 0; + bottom: -10%; + } + 100% { + opacity: 1; + bottom: -6.5%; + } + } + + @keyframes circle-before { + 0% { + opacity: 0; + bottom: -1%; + } + 100% { + opacity: 1; + bottom: 9%; + } + } + + + @keyframes box1 { + 0% { + opacity: 0; + bottom: 20%; + } + 100% { + opacity: 1; + bottom: 30%; + } + } + + @keyframes box2 { + 0% { + opacity: 0; + bottom: 24%; + } + 100% { + opacity: 1; + bottom: 34%; + } + } + + @keyframes box3 { + 0% { + opacity: 0; + bottom: 28%; + } + 100% { + opacity: 1; + bottom: 38%; + } + } + + @keyframes box4 { + 0% { + opacity: 0; + bottom: 32%; + } + 100% { + opacity: 1; + bottom: 42%; + } + } + + @keyframes box1-circulation { + 0% { + opacity: 1; + height: 60px; + } + 48% { + height: 65px; + } + 52% { + height: 65px; + } + 100% { + height: 60px; + opacity: 1; + } + } + + @keyframes box2-circulation { + 0% { + height: 96px; + opacity: 1; + } + 48% { + height: 90px; + } + 52% { + height: 90px; + } + 100% { + height: 96px; + opacity: 1; + } + } + + @keyframes box3-circulation { + 0% { + height: 128px; + opacity: 1; + } + 48% { + height: 135px; + } + 52% { + height: 135px; + } + 100% { + height: 128px; + opacity: 1; + } + } + + @keyframes box4-circulation { + 0% { + height: 113px; + opacity: 1; + } + 48% { + height: 108px; + } + 52% { + height: 108px; + } + 100% { + height: 113px; + opacity: 1; + } + } + + // @keyframes code { + // 0% { + // opacity: 0; + // top: 40%; + // } + // 100% { + // opacity: 1; + // top: 30%; + // } + // } + + @keyframes code1 { + 0% { + opacity: 0; + top: 43%; + } + 100% { + opacity: 1; + top: 33%; + } + } + + @keyframes code1-circulation { + 0% { + opacity: 1; + top: 33%; + } + 50% { + opacity: 1; + top: 30%; + } + 100% { + opacity: 1; + top: 33%; + } + } + + @keyframes codeBed { + 0% { + opacity: 0; + top: 54%; + } + 100% { + opacity: 1; + top: 44%; + } + } + + @keyframes text1-show { + 5% { + opacity: 0; + width: 0; + bottom: 36%; + right: 60%; + } + 20% { + opacity: 1; + width: 262px; + bottom: 12%; + left: 55%; + } + 80% { + opacity: 1; + width: 262px; + bottom: 12%; + left: 55%; + } + 100% { + opacity: 0; + width: 0; + bottom: 36%; + right: 60%; + } + } + + @keyframes text2-show { + 5% { + opacity: 0; + width: 0; + bottom: 36%; + right: 60%; + } + 20% { + opacity: 1; + width: 262px; + bottom: 10%; + right: 56%; + } + 80% { + opacity: 1; + width: 262px; + bottom: 10%; + right: 56%; + } + 100% { + opacity: 0; + width: 0; + bottom: 36%; + right: 60%; + } + } + + @keyframes text3-show { + 5% { + opacity: 0; + width: 0; + right: 36%; + top: 50%; + } + 20% { + opacity: 1; + right: 8%; + top: 6%; + width: 227px; + } + 80% { + opacity: 1; + right: 8%; + top: 6%; + width: 227px; + } + 100% { + opacity: 0; + width: 0; + right: 36%; + top: 50%; + } + } + + @keyframes text4-show { + 5% { + opacity: 0; + width: 0; + right: 50%; + top: 50%; + } + 20% { + opacity: 1; + top: 14%; + right: 55%; + width: 206px; + } + 80% { + opacity: 1; + top: 14%; + right: 55%; + width: 206px; + } + 100% { + opacity: 0; + width: 0; + right: 50%; + top: 50%; + } + } + + @keyframes circle-circle { + + 0% { + transform: scale(1); + opacity: 1; + bottom: 9%; + } + + 33% { + transform: scale(1.2); + opacity: 0.7; + bottom: 9.5%; + } + + + 67% { + transform: scale(1.5); + opacity: 0.35; + bottom: 10.2%; + } + + 100% { + transform: scale(2); + opacity: 0; + bottom: 11.5%; + } + } +} diff --git a/src/home/Footer/index.jsx b/src/home/Footer/index.jsx new file mode 100644 index 00000000..511ba73c --- /dev/null +++ b/src/home/Footer/index.jsx @@ -0,0 +1,32 @@ +import React, { memo } from "react"; +// import logo from '../../modules/tpm/images/hskylogo.png'; + +import './index.scss'; + +function HomeFooter() { + let chromesettingArray = JSON.parse(localStorage.getItem('chromesetting')); + let footerHtml= chromesettingArray.footer; + + return ( +
+
+
+ {/*

+ +86-010-66357650 + 北京市海淀区西三环北路72号 + osredm@163.com +

+ +

+ 版权所有:红山开源社区     + + 京公网安备 11010802034576 号 + 京ICP备2021005060 +

+ */} +
+
+ ) +} + +export default memo(HomeFooter); diff --git a/src/home/Footer/index.scss b/src/home/Footer/index.scss new file mode 100644 index 00000000..9fdf2665 --- /dev/null +++ b/src/home/Footer/index.scss @@ -0,0 +1,61 @@ +.home-footer { + height: 40vh; + min-width: 100vw; + // background: #162046; + background: linear-gradient(#cbdcff 0%, #162046 5%, #162046 100%); + + overflow: hidden; + .arc { + position: relative; + margin: -15vh -5vw 0 -5vw; + height: 30vh; + // width: 110vw; + // background: linear-gradient(#cbdcff 0%, #bbccef 100%); + background: #cbdcff; + border-radius: 50%; + } + .logo { + position: absolute; + left: 20px; + bottom: 75px; + width: 190px; + height: 60px; + } + .footer-main { + position: relative; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + height: 18vh; + font-size: 12px; + font-family: PingFangSC-Regular, PingFang SC; + font-weight: 400; + color: #bdc2d1; + line-height: 28px; + } + .police { + color: #bdc2d1; + margin-right: 20px; + } + .police-img { + width: 16px; + border-radius: 10px; + margin-right: 3px; + } + .police-number { + color: #bdc2d1; + } + + .footer-email { + display: inline-flex; + .iconfont { + margin-right: 2px; + } + } + + .footerbottom { + background-color: #162046 !important; + } +} + diff --git a/src/home/FourthSection/index.jsx b/src/home/FourthSection/index.jsx new file mode 100644 index 00000000..8e36ad9f --- /dev/null +++ b/src/home/FourthSection/index.jsx @@ -0,0 +1,126 @@ +import React, { memo } from 'react'; +import { Button } from 'antd'; +import Line from '../Line'; +import logoLine from '../img/4-logo.png'; +import task from '../img/4-task.png'; +import codeManage from '../img/4-codeManage.png'; +import versionManage from '../img/4-versionManage.png'; +import editorInline from '../img/4-editorInline.png'; +import teamwork from '../img/4-teamwork.png'; +import './index.scss'; + +const code = [ + { str: latest: Pulling from appleboy/drone-ssh }, + { str: Digest:sha256:095ca4ceafcb7 }, + { str: Status:Image is up to date for appleboy/drone-ssh:latest }, + { str: echo ====开始部署======= }, + // { str: echo ====暂停容器开始======= }, + { str: docker rm -f mo-test }, + { str: docker rmi mo-test:1.0 }, + // { str: cd /opt/demo }, + { str: docker build -t mo-test:1.0 . }, + { str: docker run -d -p 8080:8080 --name mo-test mo-test:1.0 }, + { str: echo ====部署成功======= }, + { str: ~/opt/Users/demo/app/static/ }, + // { str: ======END====== }, +] + +function FourthSection({ fourth, history }) { + return ( +
+
+
+

开源项目

+

开源项目版块集项目托管、版本管理等功能于一体,为开源协作和群智汇聚提供创作环境

+ + +
+ +
+
+ +
+
+
+
    +
  • +
    +                    1
    +                    
    +                       ~/
    +                      c
    +                      d
    +                      
    +                       /opt
    +                      /Us
    +                      ers
    +                      /de
    +                      mo
    +                      /app
    +                      /sta
    +                      tic
    +                      
    +                    
    +                  
    +
  • + { + code.map((i, k) => { + return ( +
  • {k + 2}{i.str}
  • + ) + }) + } +
+
+
+ +
+
+ +
+ +
+
+ +
+
+

代码托管

+

免费提供海量代码仓储

+
+ +
+
+ +
+
+

版本管理

+

记录和维护软件演化全过程

+
+ +
+
+ +
+
+

在线编辑

+

轻量级修改和提交

+
+ +
+
+ +
+
+

质量追踪

+

代码安全和质量管控

+
+ + +
+ + +
+ ) +} + +export default memo(FourthSection); \ No newline at end of file diff --git a/src/home/FourthSection/index.scss b/src/home/FourthSection/index.scss new file mode 100644 index 00000000..c7e066d4 --- /dev/null +++ b/src/home/FourthSection/index.scss @@ -0,0 +1,349 @@ +.home-fourth-section { + text-align: center; + min-height: 45vh; + padding: 1.95em 0 1.25em 0; + background: url(../img/4-map.png) no-repeat; + + .homepage-btn{ + margin-top:1.25em; + } + .fourth-main { + margin: 1.25em auto; + } + .fourth-title { + display: flex; + } + .fourth-main-title { + width: 33%; + margin-right: 4.5%; + } + + .code-box { + position: relative; + width: 62.5%; + img { + float: left; + width: 32%; + } + &>img{ + max-width: 20vw; + } + } + .code-box-action { + width: 67%; + height: 20.75em; + border-radius: 1.25em; + } + .code-box-picture { + position: relative; + float: left; + // background: url(../img/task.png) no-repeat; + opacity: 0; + img { + width: 100%; + } + } + + .code-box-code { + position: absolute; + top: 6.25em; + left: 10em; + background: #fff; + box-shadow: 0px 0px .25em .25em rgba(0, 0, 0, 0.06); + opacity: 0; + } + + .hadoopCode { + border-radius: .3em; + margin: .625em; + background: #1c1c25; + padding: 1.125em 1.25em; + flex: 1; + position: relative; + li { + display: flex; + flex-wrap: wrap; + font-size: .75em; + font-weight: 500; + line-height: 2.1em; + color: #e1e1e1; + } + } + + pre { + font-family: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, + Liberation Mono, monospace; + word-break: break-all; + overflow: initial; + margin-bottom: 0; + .codenum { + display: inline-block; + width: .95em; + text-align: left; + margin-right: .95em; + } + .code-green { + color: #00fa30; + } + .code-red { + color: #ff5058; + } + .code-blue { + color: #05cfc8; + } + } + .code-input{ + position: relative; + } + .animation-is-typing::before { + position: absolute; + top: 0; + right: -0.8em; + bottom: 0; + display: block; + height: 100%; + margin-top: auto; + margin-bottom: auto; + font-size: 1em; + line-height: 1em; + content: "▊"; + } + .word-item { + opacity: 0; + } + .js-type-letters{ + opacity: 0; + } + + + .fourth-projects { + position: relative; + display: flex; + justify-content: space-between; + padding: 1.25em 0; + opacity: 0; + } + + .project-item { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + width: 15.875em; + height: 12em; + border: .1em dashed #517df1; + border-radius: 0.375em; + + .fourth-item-img { + position: relative; + display: flex; + justify-content: center; + align-items: center; + width: 4.5em; + height: 4.5em; + background: #ffffff; + border-radius: 50%; + box-shadow: 0px 0px .5em .5em rgba(38, 118, 255, 0.04); + } + + .fourth-item-circle { + position: absolute; + width: 100%; + height: 100%; + animation: turnCircle infinite 10s linear; + } + .fourth-item-circle::before, + .fourth-item-circle::after { + content: ""; + position: absolute; + width: .5em; + height: .5em; + border-radius: 50%; + background: linear-gradient(-45deg, #0949ff 0, #03bdff 100%); + } + .fourth-item-circle::before { + top: -.25em; + left: 2em; + } + .fourth-item-circle::after { + left: 2em; + bottom: -.25em; + } + + .fourth-item-title { + margin: 0.5em auto 0; + font-family: PingFangSC-Medium; + font-size: 1.25em; + color: #0a1255; + font-weight: 500; + } + + .fourth-item-des { + font-family: PingFangSC-Medium; + font-size: 1em; + color: #777988; + line-height: 2em; + font-weight: 500; + } + } + + .project-item:nth-child(2) { + margin-top: 5em; + border-color: #df0757; + .fourth-item-circle { + animation: turnCircle2 infinite 10s linear; + } + .fourth-item-circle::before, + .fourth-item-circle::after { + background: linear-gradient(-45deg, #df0757 0, #ffa38d 100%); + } + } + + .project-item:nth-child(3) { + margin-top: 10em; + border-color: #00ffa4; + .fourth-item-circle::before, + .fourth-item-circle::after { + background: linear-gradient(-45deg, #00ffa4 0, #f2ffa4 100%); + } + } + + .project-item:nth-child(4) { + margin-top: 8.75em; + border-color: #8b5ff0; + .fourth-item-circle { + animation: turnCircle2 infinite 10s linear; + } + .fourth-item-circle::before, + .fourth-item-circle::after { + background: linear-gradient(-45deg, #8b5ff0 0, #fe86ff 100%); + } + } + + .activeCode { + .code-box-picture { + animation: taskPicture 1s 1 forwards; + } + .code-box-code { + animation: taskCode 1s 1 0.75s forwards; + } + .hadoopCode .code-content { + margin: 0; + animation: showBackgroud 16s 2s infinite; + } + + .animation-is-typing::before { + animation: BlinkingCursor .8s infinite; + } + + .js-type-letters{ + animation: BlinkingCursor-1 16s infinite; + } + + .word-item { + animation: show 16s infinite; + } + &.fourth-projects { + animation: taskPicture 1s 1 1s forwards; + } + } + + @keyframes show { + 0% { + opacity: 0; + } + 1% { + opacity: 1; + } + 70% { + opacity: 1; + } + 71% { + opacity: 0; + } + 100% { + opacity: 0; + } + } + + @keyframes BlinkingCursor-1 { + 0% { + opacity: 0; + } + 2% { + opacity: 1; + } + 4% { + opacity: 0; + } + 100% { + opacity: 0; + } + + } + + @keyframes BlinkingCursor { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } + } + + @keyframes showBackgroud { + 0% { + opacity: 1; + } + 71% { + opacity: 1; + } + 72% { + opacity: 0; + } + 100% { + opacity: 0; + } + } + + @keyframes taskPicture { + 0% { + opacity: 0; + top: 35vh; + } + 100% { + opacity: 1; + top: 0; + } + } + + @keyframes taskCode { + 0% { + opacity: 0; + top: 35vh; + } + 100% { + opacity: 1; + } + } + + @keyframes turnCircle { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } + } + + @keyframes turnCircle2 { + 0% { + transform: rotate(-90deg); + } + 100% { + transform: rotate(270deg); + } + } +} + + diff --git a/src/home/Line/index.jsx b/src/home/Line/index.jsx new file mode 100644 index 00000000..df9e83eb --- /dev/null +++ b/src/home/Line/index.jsx @@ -0,0 +1,14 @@ +import React, { memo } from 'react'; +import './index.scss'; + + +export default memo(() => { + return ( +

+ + + +

+ ) +}) + diff --git a/src/home/Line/index.scss b/src/home/Line/index.scss new file mode 100644 index 00000000..10a70068 --- /dev/null +++ b/src/home/Line/index.scss @@ -0,0 +1,20 @@ +.home-line { + text-align: center; + line-height: 0; + .yellow-line { + display: inline-block; + width: 23px; + height: 4px; + background: #ff8520; + border-radius: 3px; + } + .brown-line { + display: inline-block; + width: 38px; + height: 4px; + margin:0 5px; + background: #e67a21; + border-radius: 3px; + + } +} diff --git a/src/home/SecondSection/index.jsx b/src/home/SecondSection/index.jsx new file mode 100644 index 00000000..8d59a8c2 --- /dev/null +++ b/src/home/SecondSection/index.jsx @@ -0,0 +1,124 @@ +import React, { memo, useEffect, useState } from 'react'; +import { Button } from 'antd'; +import axios from 'axios'; +import Slider from 'react-slick'; +import "slick-carousel/slick/slick.css"; +import "slick-carousel/slick/slick-theme.css"; +import Line from '../Line'; + +import './index.scss'; + + +let setting = { + infinite: true, + speed: 750, + slidesToShow: 3, + slidesToScroll: 1, + pauseOnDotsHover: true, + autoplaySpeed: 4000, + centerMode: true, + centerPadding: "10px", + // pauseOnFocus: true, + autoplay: true, + arrows: false, + vertical: true, +} + + +function SecondSection({ second ,main_web_site_url}) { + + const [leftItem, setLeftItem] = useState({}); + const [list, setList] = useState([]); + + useEffect(() => { + const url = `/home/platform_communicates.json`; + axios.get(url, { + params: { + limit: 10, + page: 1 + } + }).then(result => { + if (result && result.data) { + let communicates = result.data.communicates; + if (communicates.length) { + setLeftItem(communicates[0]); + setList(communicates.slice(1, 5)); + } + } + }).catch(error => { }); + }, []) + + + function goDetail(id) { + window.open(`${main_web_site_url}/forums/${id}/detail`); + } + + return ( + +

社区动态

+

为社区用户提供自主交流空间,实现思维碰撞和智慧融合

+ +
+ +
+
C O M M U N I T Y    D Y N A M I C S
+

+ + + + + +

+ +

{ goDetail(leftItem.fake_id) }}>{leftItem.title}

+ +
+ {leftItem.content} +
+ +
+ +
+
+ +
+ + { + list.map((item, i) => { + return ( +
+
{ goDetail(item.fake_id) }}> + {i + 1} +

{item.title}

+ {item.tag} +
+

{item.content}

+ {item.created_time && item.created_time.split(' ')[0]} +
+ ) + }) + } +
+
+
+ + + + + + + {/* + + */} + + + + + +
+ + ) +} + +export default memo(SecondSection); \ No newline at end of file diff --git a/src/home/SecondSection/index.scss b/src/home/SecondSection/index.scss new file mode 100644 index 00000000..b87ff930 --- /dev/null +++ b/src/home/SecondSection/index.scss @@ -0,0 +1,167 @@ +.home-second-section { + background: linear-gradient(#fff 0%, #cbdcff 100%); + text-align: center; + padding-top: 40px; + margin-bottom: -10px; + + .community-left-tit { + font-size: 1.15em; + color: #000870; + } + + .community-main { + display: flex; + justify-content: space-between; + margin: 1.25em auto 3.15em; + text-align: left; + + .homepage-btn { + margin-top: 2.5em; + } + } + + .community-english { + font-size: 1.25em; + opacity: 0.88; + color: #e67a21; + margin-right: 1.25em; + } + + .community-star { + color: #ff7a21; + i { + margin-right: 0.5em; + } + } + + .community-left { + display: flex; + flex-direction: column; + justify-content: center; + width: 50%; + padding-right: 20px; + opacity: 0; + text-align: left; + } + .community-left-content { + font-size: .95em; + font-family: PingFangSC-Regular, PingFang SC; + font-weight: 400; + color: #3c476e; + line-height: 2.25em; + } + + .community-active { + position: relative; + animation: community 0.75s 1 forwards; + } + + @keyframes community { + 0% { + right: 50vw; + opacity: 0; + } + 100% { + right: 0; + opacity: 1; + transition: all 2s; + } + } + + // .parallax > use:nth-child(1) { + // animation-delay: -5s; + // animation-duration: 20s; + // } +} + +.home-second-section-slide { + width: 50%; + .slick-track > div { + max-width: 83.3%; + position: relative; + transition: all 0.7s; + } + .news-slide-item { + height: 11.25em; + overflow: hidden; + background-image: linear-gradient( + to bottom right, + #e9f5ff 0%, + #f1f2fd 25%, + #e8f2ff 50%, + #e1eaff 75%, + #c6d3ff 100% + ); + margin-bottom: 10px; + padding: 1.25em 1.8em 1.6em; + border: 1px solid #fff; + border-radius: .3em; + + .slide-title { + display: flex; + align-items: center; + } + .slide-title-content { + color: #000870; + font-size: 1em; + margin-bottom: 0 !important; + flex: auto; + } + .order-num { + flex: none; + display: inline-block; + margin-right: 1em; + color: #fff; + border-radius: 50%; + width: 1.75em; + height: 1.75em; + line-height: 1.75em; + background: linear-gradient( + 272deg, + #4154f1 0%, + #4154f1 47%, + #4154f1 100% + ); + box-shadow: 0px 0px 9px 2px rgba(65, 84, 241, 0.33); + text-align: center; + } + + .slide-tag { + flex: none; + color: #fff; + padding: .2em .75em; + background: #586dff; + border-radius: .2em; + } + + .slide-tag-1{ + background: #586dff; + } + + .slide-tag-2 { + background: #e53939; + } + + .slide-tag-3 { + background: #ff7300; + } + + + .news-time { + font-size: .95em; + font-weight: 400; + color: #3c476e; + } + + p { + margin:1em 0 .5em; + color: #3c476e; + font-size: .9em; + + } + } + .slick-center { + margin-left: 100px; + } + +} diff --git a/src/home/SeventhSection/index.jsx b/src/home/SeventhSection/index.jsx new file mode 100644 index 00000000..d92d1c69 --- /dev/null +++ b/src/home/SeventhSection/index.jsx @@ -0,0 +1,89 @@ +import React, { memo, useEffect, useState } from 'react'; +import { Button } from 'antd'; +import axios from 'axios'; +import Slider from 'react-slick'; +import "slick-carousel/slick/slick.css"; +import "slick-carousel/slick/slick-theme.css"; +import { getTestImage } from "educoder"; +import Line from '../Line'; + + +import './index.scss'; + + +let setting = { + infinite: true, + dots:true, + speed: 750, + slidesToShow: 1, + slidesToScroll: 1, + pauseOnDotsHover: true, + autoplaySpeed: 5000, + // pauseOnFocus: true, + centerMode: true, + centerPadding: "0px", + autoplay: true, + arrows: false, +} + + +function SeventhSection({ main_web_site_url }) { + + const [list, setList] = useState([]); + + useEffect(() => { + const url = `/home/platform_people.json`; + axios.get(url, { + params: { + limit: 6, + page: 1 + } + }).then(result => { + if (result && result.data) { + setList(result.data.people); + } + }).catch(error => { }); + }, []) + + function goDetail(fake_login) { + window.open(`${main_web_site_url}/accounts/${fake_login}`); + } + + return ( +
+

论坛交流

+

论坛交流版块通过技术交流、学术探讨等方式,为社区用户提供自主交流空间,实现思维碰撞和智慧融合

+ +
+ { + list.map((item, i) => { + return ( { goDetail(item.fake_login) }} alt="images-not_found" />) + }) + } + + + +
+ + { + list.map((item, i) => { + return (
+ { goDetail(item.fake_login) }} alt="images-not_found" /> + { goDetail(item.fake_login) }}>{item.name} +

{item.announcement}

+

{item.content}

+ {item.created_time && item.created_time.split(' ')[0]} +
) + }) + } + +
+ + + +
+ + ) +} + +export default memo(SeventhSection); \ No newline at end of file diff --git a/src/home/SeventhSection/index.scss b/src/home/SeventhSection/index.scss new file mode 100644 index 00000000..e13901bb --- /dev/null +++ b/src/home/SeventhSection/index.scss @@ -0,0 +1,207 @@ +.home-seventh-section { + background: linear-gradient(#fff 0%, #cbdcff 100%); + text-align: center; + padding-top: 2.5em; + padding-bottom: 0.625em; + z-index: 100000; + margin-bottom: -0.625em; + border-bottom: 1px solid #cbdcff; + .seventh-main { + position: relative; + } + .clients { + position: absolute; + width: 100%; + height: 31.25em; + left: 0; + bottom: 2.5em; + // z-index: 10; + .client { + position: absolute; + width: 6.25em; + height: 6.25em; + border-radius: 50%; + z-index: 100; + } + + .client:nth-child(1) { + top: 0; + left: 0; + animation: zoomin 0.9s infinite alternate; + } + .client:nth-child(2) { + top: 11.875em; + left: -7.1875em; + animation: zoomin 1.3s infinite alternate; + } + .client:nth-child(3) { + left: 0; + bottom: 4.375em; + animation: zoomin 1.6s infinite alternate; + } + .client:nth-child(4) { + top: 2.5em; + right: 0; + animation: zoomin 1.9s infinite alternate; + } + .client:nth-child(5) { + right: -5.3125em; + bottom: 8.4375em; + animation: zoomin 2.1s infinite alternate; + } + .client:nth-child(6) { + right: 9.375em; + bottom: 0.625em; + animation: zoomin 1.6s infinite alternate; + } + + .icon-a-shuangyinhao12x { + position: absolute; + color: #ef7a30; + font-size: 2.25em !important ; + } + .start-icon { + top: 50px; + left: 280px; + transform: rotateY(180deg); + z-index: 100; + } + .end-icon { + bottom: 130px; + right: 330px; + z-index: 100; + } + } + + .slick-dots { + height: 31.25em; + left: 0; + bottom: -4.5em; + z-index: 101; + li { + position: absolute; + width: 7em; + height: 7em; + border-radius: 50%; + button{ + width: inherit; + height: inherit; + &:before { + width: inherit; + height: inherit; + color: #fff; + opacity: 0; + } + } + + } + li:nth-child(1) { + top: -.5em; + left: -.5em; + } + li:nth-child(2) { + top: 11.875em; + left: -7.6875em; + } + li:nth-child(3) { + left: -.5em; + bottom: 3.875em; + } + li:nth-child(4) { + top: 2.5em; + right: -.5em; + } + li:nth-child(5) { + right: -5.8125em; + bottom: 8em; + } + li:nth-child(6) { + right: 8.875em; + bottom: 0.125em; + } + } + .slick-slider { + margin: 2.5em auto 1.25em; + height: 30em; + background: url(../img/7-bg.png) no-repeat; + background-size: 50.25em 29.625em; + background-position: center; + } + .slick-list { + width: 33.75em; + margin: 0 auto; + z-index: 10000; + } + .issue-item { + text-align: center; + + .author-head { + width: 8.125em; + height: 8.125em; + border-radius: 50%; + margin: 0 auto; + } + .issue-author { + display: inline-block; + font-size: 1.125em; + font-weight: 500; + color: #ff7300; + line-height: 1.75em; + margin: 0.625em auto; + } + .issue-title { + font-size: 1.25em; + font-weight: 500; + color: #000870; + line-height: 1.75em; + margin-bottom: 1.25em; + } + .issue-content { + text-align: left; + text-indent: 2em; + font-size: 15px; + font-weight: 400; + color: #3c476e; + line-height: 28px; + } + .issue-time { + height: 28px; + font-size: 15px; + color: #3c476e; + line-height: 28px; + } + } + + .homepage-btn { + margin-top: 50px; + } + + @keyframes zoomin { + 0% { + transform: scale(0.9); + } + + 100% { + transform: scale(1.1); + } + } +} + +@media screen and (max-width: 1400px) { + .home-seventh-section { + .slick-dots,.clients { + width: 86%; + left: 8%; + + } + } +} + +@media screen and (max-width: 1200px) { + .home-seventh-section { + .slick-dots,.clients { + width: 80%; + left: 11%; + } + } +} diff --git a/src/home/SixthSection/index.jsx b/src/home/SixthSection/index.jsx new file mode 100644 index 00000000..838fa01e --- /dev/null +++ b/src/home/SixthSection/index.jsx @@ -0,0 +1,97 @@ +import React, { memo, useEffect, useState } from 'react'; +import { Button } from 'antd'; +import axios from 'axios'; +import Line from '../Line'; +import completeIcon1 from '../img/6-completeIcon1.png'; +import completeIcon2 from '../img/6-completeIcon2.png'; +import completeIcon3 from '../img/6-completeIcon3.png'; +import ball from '../img/6-ball.png'; +import cup from '../img/6-cup.png'; +import yLetter from '../img/6-y.png'; +import net from '../img/6-net.png'; +import overall from '../img/6-overall.png'; +import pillar1 from '../img/6-pillar1.png'; +import pillar2 from '../img/6-pillar2.png'; +import pillar3 from '../img/6-pillar3.png'; +import './index.scss'; +let iconArr = [completeIcon1, completeIcon2, completeIcon3]; + + +function SixthSection({ sixth, main_web_site_url }) { + + const [list, setList] = useState(); + + useEffect(() => { + const url = `/home/competitions.json`; + axios.get(url).then(result => { + if (result && result.data) { + setList(result.data.competitions); + } + }).catch(error => { }); + }, []) + + function goDetail(id) { + window.open(`${main_web_site_url}/competitions/${id}/enroll`); + } + + return ( +
+
+ +
+ + { + list && list.map((item, i) => { + return ( +
+ 竞赛 +
+

{ goDetail(item.id) }}>{item.title}

+

竞赛时间:{item.start_time && item.start_time.split(' ')[0]}-{item.end_time && item.end_time.split(' ')[0]}

+

赛事简介: {item.content||'暂无简介'}

+
+
+ ) + }) + } +
+ +
+
+

开放竞赛

+

开放竞赛版块通过赛事和学术活动组织,为验证技术成果、挖掘优秀人才提供有效途径

+ +
+ +
+ images-not_found + images-not_found + images-not_found + images-not_found + images-not_found + images-not_found + images-not_found + images-not_found + +
+
+ +
+ + + + + + + + + + + + + +
+ ) +} +export default memo(SixthSection); \ No newline at end of file diff --git a/src/home/SixthSection/index.scss b/src/home/SixthSection/index.scss new file mode 100644 index 00000000..b69873d5 --- /dev/null +++ b/src/home/SixthSection/index.scss @@ -0,0 +1,293 @@ +.home-sixth-section { + position: relative; + color: #fff; + background: linear-gradient(#0037AF 0%, #2951da 100%); + text-align: center; + margin-bottom: -2px; + z-index: 10; + .grid-picture { + background: url(../img/grid.png) no-repeat; + background-size: auto 100%; + padding-bottom: 6.25em; + } + + .sixth-main { + display: flex; + padding-top: 10vh; + overflow: visible; + } + + .des-item { + position: relative; + opacity: 0; + display: flex; + padding: .9375em; + margin: 1.875em 0; + align-items: center; + width: 30em; + height: 10.625em; + background: rgba(255, 255, 255, 0.06); + box-shadow: 0px 0px .625em .3125em rgba(38, 118, 255, 0.04); + border-radius: .625em; + border: 1px transparent solid; + border-image: linear-gradient( + to right, + rgba(255, 255, 255, 0.2), + rgba(255, 255, 255, 1), + rgba(255, 255, 255, 0.2) + ) + 1 10; + + p{ + margin-bottom: .5em; + } + } + + .des-item:nth-child(2) { + margin: 3.75em 0 0 1.25em; + } + + .des-item:nth-child(3) { + margin: 3.75em 0 0 2.5em; + } + + .des-item-img { + width: 6.25em; + height: 6.25em; + flex: none; + } + + .des-item-content { + width: 21.75em; + text-align: left; + font-size: .9375em; + font-weight: 400; + line-height: 1.75em; + opacity: .8; + .des-item-title { + font-size: 1.125em; + font-family: PingFangSC-Medium, PingFang SC; + font-weight: 500; + color: #ff9931; + line-height: 1.5625em; + } + } + + .sixth-right { + width: 42.5em; + overflow: visible; + } + .sixth-right-title { + margin-left: 5em; + width: 28.125em; + text-align: left; + + .home-line { + text-align: left; + } + } + .sixth-play-img { + width: 48.1825em; + position: relative; + + .ball { + position: absolute; + top: 18.75em; + left: 6.875em; + z-index: 1; + width: 2.0625em; + animation: ball infinite 5s linear; + } + + .cup { + position: absolute; + top: 15%; + left: 45%; + z-index: 1; + width: 5.75em; + animation: cup infinite 4s; + } + + .net { + position: absolute; + top: 9%; + left: 22%; + z-index: 1; + width: 3.75em; + animation: net infinite 4s 1s; + } + + .yLetter { + position: absolute; + top: 6%; + right: 17%; + z-index: 1; + width: 3.4375em; + animation: yLetter infinite 4s 1.5s; + } + + .pillar1 { + position: absolute; + bottom: 10%; + left: 43%; + z-index: 1; + width: 2.25em; + height: 2.625em; + animation: pillar1 infinite 3s; + } + .pillar2 { + position: absolute; + bottom: 12%; + left: 40%; + z-index: 1; + width: 1.75em; + height: 3.125em; + animation: pillar2 infinite 3s; + } + .pillar3 { + position: absolute; + bottom: 12%; + left: 42%; + z-index: 1; + width: 1.75em; + height: 3.6875em; + animation: pillar3 infinite 3s; + } + } + + .overall { + width: 47.4375em; + } + + .homepage-btn{ + margin-top: 0; + background-color: #4F7DFF ; + } + + .waves { + position: absolute; + left: 0; + right: 0; + bottom: -2px; + } + + .complete-des.active { + .des-item { + animation: showTop 1s 1 forwards; + } + .des-item:nth-child(2) { + animation: showTop 1s 1 .75s forwards; + } + .des-item:nth-child(3) { + animation: showTop 1s 1 1.5s forwards; + } + } + + @keyframes showTop { + 0% { + opacity: 0; + top: 30vh; + } + 100% { + opacity: 1; + top: 0; + } + } + + @keyframes ball { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(-360deg); + } + } + + @keyframes cup { + 0% { + top: 12%; + } + 45% { + top: 20%; + } + 55% { + top: 20%; + } + 100% { + top: 12%; + } + } + + @keyframes net { + 0% { + top: 2%; + } + 45% { + top: 9%; + } + 55% { + top: 9%; + } + 100% { + top: 2%; + } + } + @keyframes yLetter { + 0% { + top: 0%; + } + 45% { + top: 6%; + } + 55% { + top: 6%; + } + 100% { + top: 0%; + } + } + @keyframes pillar1 { + 0% { + height: 2.5em; + } + 48% { + height: 2em; + } + 52% { + height: 2em; + } + 100% { + height: 2.5em; + } + } + + @keyframes pillar2 { + 0% { + height: 2.5em; + } + 48% { + height: 4.0625em; + } + 52% { + height: 4.0625em; + } + 100% { + height: 2.5em; + } + } + + @keyframes pillar3 { + 0% { + height: 4.0625em; + } + 48% { + height: 2.5em; + } + 52% { + height: 2.5em; + } + 100% { + height: 4.0625em; + } + } +} diff --git a/src/home/ThirdSection/index.jsx b/src/home/ThirdSection/index.jsx new file mode 100644 index 00000000..9109039e --- /dev/null +++ b/src/home/ThirdSection/index.jsx @@ -0,0 +1,96 @@ +import React, { memo, useEffect, useState } from 'react'; +import CountUp from 'react-countup'; +import axios from 'axios'; +import Line from '../Line'; +import './index.scss'; + +const countUpProps = { + redraw: true, + start: 0, + duration: 1 +}; + + +function ThirdSection({ third }) { + const [statisticsNum, setStatisticsNum] = useState({}); + + useEffect(() => { + const url = `/home/platform_statistics.json`; + axios.get(url).then(result => { + if (result && result.data) { + setStatisticsNum(result.data); + } + }).catch(error => { }); + }, []) + + return ( +
+

数据统计总览

+ +
+
+
+
9999999?'24px':statisticsNum.visits>99999?'36px':'48px'}}> + +
+
+

平台点击量

+
+ +
+
+
+ +
+
+

平台用户数

+
+ +
+
+
+ +
+
+

开源项目托管数

+
+ +
+
+
+ +
+
+

创客任务发布数

+
+ +
+
+
+ +
+
+

论坛发帖数量

+
+ +
+ + + + + + + + + + + +
+ ) +} + +export default memo(ThirdSection); \ No newline at end of file diff --git a/src/home/ThirdSection/index.scss b/src/home/ThirdSection/index.scss new file mode 100644 index 00000000..e54fad12 --- /dev/null +++ b/src/home/ThirdSection/index.scss @@ -0,0 +1,168 @@ +.home-third-section { + color: #fff; + background: linear-gradient( + #0037AF 0%, + #2951DA 100%, + ); + text-align: center; + // #041670 0%, + + .ball-background{ + background: url(../img/3-ballBg.png) no-repeat; + background-size: 100% 100%; + } + .third-tit { + padding-top: 1.75em; + color: #fff; + font-size: 2em; + } + + .third-main { + display: flex; + justify-content: space-around; + max-width: 100%; + margin: 10vh auto; + } + + .circle-item > h4 { + margin-top: 1.25em; + color: #fff; + font-weight: 600; + font-size: 1.15rem; + } + + .circle-item-box { + position: relative; + width: 10.25em; + height: 10.25em; + box-sizing: border-box; + padding: .25em; + border-radius: 50%; + background-image: linear-gradient( + to bottom right, + rgba(255, 255, 255, 0.63) 0%, + rgba(55, 236, 255, 0.56) 33%, + rgba(255, 255, 255, 0.42) 67%, + rgba(255, 255, 255, 0.45) 100% + ); + } + + .circle-item-num { + position: relative; + display: inline-flex; + justify-content: center; + align-items: center; + width: 100%; + height: 100%; + border-radius: 50%; + background: #12277b; + font-size: 3em; + font-weight: 600; + span { + background-image: -webkit-linear-gradient(bottom, red, #fd8403, yellow); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + } + + &::before { + position: absolute; + left: -5%; + top: -5%; + content: ""; + background-image: url(../img/3-dashCircle.png); + width: 110%; + height: 110%; + background-position: center center; + background-size: cover; + background-repeat: no-repeat; + z-index: 9; + opacity: 1; + visibility: hidden; + } + + &:hover::before{ + visibility: visible; + animation: dashCircle infinite 4s linear; + } + } + + .circle-item:nth-child(2) { + .circle-item-box { + background-image: linear-gradient( + to bottom left, + rgba(255, 255, 255, 0.88) 0%, + rgba(7, 188, 207, 0.56) 33%, + rgba(255, 255, 255, 0.16) 67%, + rgba(255, 255, 255, 1) 100% + ); + } + span { + background-image: -webkit-linear-gradient(bottom, #f5f65b, #15ccf6); + } + } + + .circle-item:nth-child(3) { + .circle-item-box { + background-image: linear-gradient( + to bottom left, + rgba(255, 255, 255, 1) 0%, + rgba(255, 255, 255, 0.16) 0%, + rgba(7, 188, 207, 0.56) 33%, + rgba(255, 255, 255, 0.88) 100% + ); + } + span { + background-image: -webkit-linear-gradient(bottom, #bad3ff, #00a0dd); + } + } + + .circle-item:nth-child(4) { + .circle-item-box { + background-image: linear-gradient( + to bottom left, + rgba(255, 255, 255, 0.88) 0%, + rgba(7, 188, 207, 0.56) 33%, + rgba(255, 255, 255, 0.16) 67%, + rgba(255, 255, 255, 1) 100% + ); + } + span { + background-image: -webkit-linear-gradient(bottom, #f0a3ff, #b33dff); + } + } + + .circle-item:nth-child(5) { + .circle-item-box { + background-image: linear-gradient( + to bottom left, + rgba(255, 255, 255, 0.45) 0%, + rgba(7, 188, 207, 0.56) 33%, + rgba(255, 255, 255, 0.16) 67%, + rgba(255, 255, 255, 1) 100% + ); + } + span { + background-image: -webkit-linear-gradient(bottom, #08ece1, #ff7e3d); + } + } + + .circle-item .circle-item-box { + &:hover{ + background:rgba(255, 255, 255, 0); + } + } + + .waves{ + position: relative; + bottom: -1.5vh; + } + + @keyframes dashCircle { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } + } +} diff --git a/src/home/img/1-box1.png b/src/home/img/1-box1.png new file mode 100644 index 00000000..bcae1fea Binary files /dev/null and b/src/home/img/1-box1.png differ diff --git a/src/home/img/1-box2.png b/src/home/img/1-box2.png new file mode 100644 index 00000000..94439d6e Binary files /dev/null and b/src/home/img/1-box2.png differ diff --git a/src/home/img/1-box3.png b/src/home/img/1-box3.png new file mode 100644 index 00000000..7c1fae8e Binary files /dev/null and b/src/home/img/1-box3.png differ diff --git a/src/home/img/1-box4.png b/src/home/img/1-box4.png new file mode 100644 index 00000000..fde3fec9 Binary files /dev/null and b/src/home/img/1-box4.png differ diff --git a/src/home/img/1-circle.png b/src/home/img/1-circle.png new file mode 100644 index 00000000..0b3d2f5f Binary files /dev/null and b/src/home/img/1-circle.png differ diff --git a/src/home/img/1-code-bed.png b/src/home/img/1-code-bed.png new file mode 100644 index 00000000..2609442d Binary files /dev/null and b/src/home/img/1-code-bed.png differ diff --git a/src/home/img/1-code.png b/src/home/img/1-code.png new file mode 100644 index 00000000..398a2c59 Binary files /dev/null and b/src/home/img/1-code.png differ diff --git a/src/home/img/1-glass.png b/src/home/img/1-glass.png new file mode 100644 index 00000000..8cada7b9 Binary files /dev/null and b/src/home/img/1-glass.png differ diff --git a/src/home/img/1-logo.png b/src/home/img/1-logo.png new file mode 100644 index 00000000..ad60b820 Binary files /dev/null and b/src/home/img/1-logo.png differ diff --git a/src/home/img/1-text1.png b/src/home/img/1-text1.png new file mode 100644 index 00000000..e3d47407 Binary files /dev/null and b/src/home/img/1-text1.png differ diff --git a/src/home/img/1-text2.png b/src/home/img/1-text2.png new file mode 100644 index 00000000..76b85af9 Binary files /dev/null and b/src/home/img/1-text2.png differ diff --git a/src/home/img/1-text3.png b/src/home/img/1-text3.png new file mode 100644 index 00000000..8c081236 Binary files /dev/null and b/src/home/img/1-text3.png differ diff --git a/src/home/img/1-text4.png b/src/home/img/1-text4.png new file mode 100644 index 00000000..1f6f4974 Binary files /dev/null and b/src/home/img/1-text4.png differ diff --git a/src/home/img/3-ballBg.png b/src/home/img/3-ballBg.png new file mode 100644 index 00000000..67acac25 Binary files /dev/null and b/src/home/img/3-ballBg.png differ diff --git a/src/home/img/3-dashCircle.png b/src/home/img/3-dashCircle.png new file mode 100644 index 00000000..b3f8178f Binary files /dev/null and b/src/home/img/3-dashCircle.png differ diff --git a/src/home/img/4-codeManage.png b/src/home/img/4-codeManage.png new file mode 100755 index 00000000..91bdf1ae Binary files /dev/null and b/src/home/img/4-codeManage.png differ diff --git a/src/home/img/4-editorInline.png b/src/home/img/4-editorInline.png new file mode 100755 index 00000000..b34b2a27 Binary files /dev/null and b/src/home/img/4-editorInline.png differ diff --git a/src/home/img/4-logo.png b/src/home/img/4-logo.png new file mode 100755 index 00000000..48a23551 Binary files /dev/null and b/src/home/img/4-logo.png differ diff --git a/src/home/img/4-map.png b/src/home/img/4-map.png new file mode 100755 index 00000000..3ed37450 Binary files /dev/null and b/src/home/img/4-map.png differ diff --git a/src/home/img/4-task.png b/src/home/img/4-task.png new file mode 100644 index 00000000..45792b5a Binary files /dev/null and b/src/home/img/4-task.png differ diff --git a/src/home/img/4-teamwork.png b/src/home/img/4-teamwork.png new file mode 100755 index 00000000..8bd8f643 Binary files /dev/null and b/src/home/img/4-teamwork.png differ diff --git a/src/home/img/4-versionManage.png b/src/home/img/4-versionManage.png new file mode 100755 index 00000000..b7fc035c Binary files /dev/null and b/src/home/img/4-versionManage.png differ diff --git a/src/home/img/6-ball.png b/src/home/img/6-ball.png new file mode 100644 index 00000000..d5ea03ca Binary files /dev/null and b/src/home/img/6-ball.png differ diff --git a/src/home/img/6-completeIcon1.png b/src/home/img/6-completeIcon1.png new file mode 100755 index 00000000..51ceda87 Binary files /dev/null and b/src/home/img/6-completeIcon1.png differ diff --git a/src/home/img/6-completeIcon2.png b/src/home/img/6-completeIcon2.png new file mode 100755 index 00000000..c76a3399 Binary files /dev/null and b/src/home/img/6-completeIcon2.png differ diff --git a/src/home/img/6-completeIcon3.png b/src/home/img/6-completeIcon3.png new file mode 100755 index 00000000..6a445d17 Binary files /dev/null and b/src/home/img/6-completeIcon3.png differ diff --git a/src/home/img/6-cup.png b/src/home/img/6-cup.png new file mode 100644 index 00000000..ec5a09fb Binary files /dev/null and b/src/home/img/6-cup.png differ diff --git a/src/home/img/6-line.png b/src/home/img/6-line.png new file mode 100644 index 00000000..f187c5e2 Binary files /dev/null and b/src/home/img/6-line.png differ diff --git a/src/home/img/6-net.png b/src/home/img/6-net.png new file mode 100644 index 00000000..4fbc337d Binary files /dev/null and b/src/home/img/6-net.png differ diff --git a/src/home/img/6-overall.png b/src/home/img/6-overall.png new file mode 100644 index 00000000..7c5cfe92 Binary files /dev/null and b/src/home/img/6-overall.png differ diff --git a/src/home/img/6-pillar1.png b/src/home/img/6-pillar1.png new file mode 100644 index 00000000..7e58e2ef Binary files /dev/null and b/src/home/img/6-pillar1.png differ diff --git a/src/home/img/6-pillar2.png b/src/home/img/6-pillar2.png new file mode 100644 index 00000000..d1394a67 Binary files /dev/null and b/src/home/img/6-pillar2.png differ diff --git a/src/home/img/6-pillar3.png b/src/home/img/6-pillar3.png new file mode 100644 index 00000000..1a35411b Binary files /dev/null and b/src/home/img/6-pillar3.png differ diff --git a/src/home/img/6-y.png b/src/home/img/6-y.png new file mode 100644 index 00000000..67f2d01c Binary files /dev/null and b/src/home/img/6-y.png differ diff --git a/src/home/img/7-bg.png b/src/home/img/7-bg.png new file mode 100644 index 00000000..ba45f598 Binary files /dev/null and b/src/home/img/7-bg.png differ diff --git a/src/home/img/7-head1.png b/src/home/img/7-head1.png new file mode 100644 index 00000000..3860c458 Binary files /dev/null and b/src/home/img/7-head1.png differ diff --git a/src/home/img/7-head2.png b/src/home/img/7-head2.png new file mode 100644 index 00000000..769b9835 Binary files /dev/null and b/src/home/img/7-head2.png differ diff --git a/src/home/img/7-head3.png b/src/home/img/7-head3.png new file mode 100644 index 00000000..aaaf1357 Binary files /dev/null and b/src/home/img/7-head3.png differ diff --git a/src/home/img/7-head4.png b/src/home/img/7-head4.png new file mode 100644 index 00000000..ecbd4070 Binary files /dev/null and b/src/home/img/7-head4.png differ diff --git a/src/home/img/7-head5.png b/src/home/img/7-head5.png new file mode 100644 index 00000000..8d8804f5 Binary files /dev/null and b/src/home/img/7-head5.png differ diff --git a/src/home/img/7-head6.png b/src/home/img/7-head6.png new file mode 100644 index 00000000..2e2068fe Binary files /dev/null and b/src/home/img/7-head6.png differ diff --git a/src/home/img/7-head7.png b/src/home/img/7-head7.png new file mode 100644 index 00000000..24f8c591 Binary files /dev/null and b/src/home/img/7-head7.png differ diff --git a/src/home/img/circle.png b/src/home/img/circle.png new file mode 100644 index 00000000..53748c9f Binary files /dev/null and b/src/home/img/circle.png differ diff --git a/src/home/img/code.png b/src/home/img/code.png new file mode 100644 index 00000000..b7bde5fc Binary files /dev/null and b/src/home/img/code.png differ diff --git a/src/home/img/grid.png b/src/home/img/grid.png new file mode 100644 index 00000000..4675007c Binary files /dev/null and b/src/home/img/grid.png differ diff --git a/src/home/img/pillar.png b/src/home/img/pillar.png new file mode 100644 index 00000000..568b3df4 Binary files /dev/null and b/src/home/img/pillar.png differ diff --git a/src/home/index.jsx b/src/home/index.jsx new file mode 100644 index 00000000..96b5c425 --- /dev/null +++ b/src/home/index.jsx @@ -0,0 +1,153 @@ +import React, { useEffect, useState } from 'react'; +import { TPMIndexHOC } from '../modules/tpm/TPMIndexHOC'; +import { isMobile } from 'educoder'; +import './index.scss'; + +import FirstSection from './FirstSection'; +import SecondSection from './SecondSection'; +import ThirdSection from './ThirdSection'; +import FourthSection from './FourthSection'; +import FifthSection from './FifthSection'; +import SixthSection from './SixthSection'; +import SeventhSection from './SeventhSection'; +import Footer from './Footer'; + + +let isHuawei = (/honor|huawei/i.test(navigator.userAgent.toLowerCase())); +function HomePage({ history }) { + + useEffect(() => { + window.addEventListener("scroll", scrollListener, false); + return () => { + window.removeEventListener("scroll", scrollListener, false); + } + }, []); + + const [first, setFirst] = useState(true); + const [second, setSecond] = useState(isMobile); + const [third, setThird] = useState(false || isHuawei); + const [fourth, setFourth] = useState(false || isHuawei); + const [fifth, setFifth] = useState(false || isHuawei); + const [sixth, setSixth] = useState(false || isHuawei); + + + let settings = JSON.parse(localStorage.chromesetting); + let main_web_site_url = settings.main_web_site_url; + + + function scrollListener() { + let clientHeight = document.body.clientHeight; + let clientWidth = document.body.clientWidth; + // let secondSection = document.querySelector(".home-second-section").offsetTop; + // let thirdSection = document.querySelector(".home-third-section").offsetTop; + // let fourthSection = document.querySelector(".home-fourth-section").offsetTop; + // let fifthSection = document.querySelector(".home-fifth-section").offsetTop; + // let sixthSection = document.querySelector(".home-sixth-section").offsetTop; + // let seventhSection = document.querySelector(".home-seventh-section").offsetTop; + let secondSection = document.getElementById("home-second-section").offsetTop; + let thirdSection = document.getElementById("home-third-section").offsetTop; + let fourthSection = document.getElementById("home-fourth-section").offsetTop; + let fifthSection = document.getElementById("home-fifth-section").offsetTop; + let sixthSection = document.getElementById("home-sixth-section").offsetTop; + let seventhSection = document.getElementById("home-seventh-section").offsetTop; + + let top = document.documentElement.scrollTop; + + + if (top >= clientHeight - 300) { + setFirst(false); + } else { + setFirst(true); + } + + if (clientWidth > 1100) { + // 第二个动效 + if (top >= secondSection - clientHeight * 0.8 && top < thirdSection) { + setSecond(true); + } else { + setSecond(false); + } + } else { + // 第二个动效 + if (top >= secondSection - clientHeight && top < thirdSection) { + setSecond(true); + } else { + setSecond(false); + } + } + + // 第三个动效 + if (top >= thirdSection - clientHeight && top < fourthSection) { + setThird(true); + } else { + setThird(false); + } + + // 第四个动效 + if (top >= fourthSection - clientHeight && top < fifthSection) { + setFourth(true); + } else { + setFourth(false); + } + + // 第五个动效 + if (top >= fifthSection - clientHeight && top < sixthSection) { + setFifth(true); + } else { + setFifth(false); + } + + // 第六个动效 + if (top >= sixthSection - clientHeight && top < seventhSection - 100) { + setSixth(true); + } else { + setSixth(false); + } + + if(isHuawei){ + setFourth(true); + setSixth(true); + } + } + + + return ( +
+ +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ ) +} + +export default TPMIndexHOC(HomePage, { noFooter: true }); diff --git a/src/home/index.scss b/src/home/index.scss new file mode 100644 index 00000000..e806fa72 --- /dev/null +++ b/src/home/index.scss @@ -0,0 +1,335 @@ +.homePage { + background: #fff; + font-size: 16px; + // min-width: 800px; + // 首页多个部分公共样式 + + // 1行省略号 + .ellipsis-1 { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } + // 2行省略号 + .ellipsis-2 { + text-overflow: -o-ellipsis-lastline; + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-line-clamp: 2; + line-clamp: 2; + -webkit-box-orient: vertical; + } + + // 5行省略号 + .ellipsis-5 { + text-overflow: -o-ellipsis-lastline; + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-line-clamp: 5; + line-clamp: 5; + -webkit-box-orient: vertical; + } + + // 8行省略号 + .ellipsis-8 { + text-overflow: -o-ellipsis-lastline; + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-line-clamp: 8; + line-clamp: 8; + -webkit-box-orient: vertical; + } + + .link { + cursor: pointer; + &:hover { + opacity: 0.8; + } + } + + .ant-btn-primary { + background-color: #2a3ee9; + border-color: #2a3ee9; + height: 3.5em; + box-shadow: 0px 0px 9px 2px rgba(65, 84, 241, 0.33) !important; + border-radius: 0.375em; + } + .homepage-btn { + width: 8.75em; + height: 3.5em; + font-size: 1em; + &:hover { + background-color: #4154f1; + border-color: #4154f1; + } + .icon-gengduoicon { + margin-left: 0.375em; + color: #ffbf2d; + font-size: 1em !important; + } + } + .text-center { + text-align: center; + } + + .homepage-main { + width: 1200px; + max-width: 96%; + margin: -1px auto 0; + } + + .homePage-blue-tit { + color: #000870; + font-size: 2.125em; + margin-bottom: 0; + } + + .homePage-subhead { + font-size: 1em; + color: #666; + } + + .homePage-white-tit { + font-size: 2.25em; + font-weight: 500; + color: #ffffff; + line-height: 3.125em; + } + + .homePage-white-subhead { + font-size: 1em; + font-weight: 400; + color: #fff; + line-height: 1.6875em; + opacity: 0.8; + } + + // 首页特定头部样式起 + + &.newHeaders { + // background-color: #1a2358; + background-color: #0037af; + } + .head-nav { + min-width: auto; + } + .head-nav ul#header-nav li a { + font-size: 1em; + color: #fff; + } + .head-nav ul#header-nav li:hover a, + .head-nav ul#header-nav li.active a { + color: #ffa13a; + } + .head-nav ul#header-nav li.active a::after { + background-color: #ffa13a; + } + + .logoDiv img { + min-width: 2.8125em; + height: 2.8125em; + } + + .color-home { + color: #fff; + } + + .color-home:hover { + color: #4154f1; + } + + .register-button { + height: 3em; + margin-left: 1.25em; + padding: 0 1.5625em; + font-size: 0.875em; + } + // 首页特定头部样式止 +} + +// 波浪样式起 +.waves { + position: relative; + width: 100%; + height: 8vh; + bottom: -0.5vh; +} +// .waves-low { +// height: 6vh; +// } +.parallax > use { + animation: move-forever 25s cubic-bezier(0.55, 0.5, 0.45, 0.5) infinite; +} +.parallax > use:nth-child(1) { + animation-delay: -2s; + animation-duration: 7s; +} +.parallax > use:nth-child(2) { + animation-delay: -3s; + animation-duration: 10s; +} +.parallax > use:nth-child(3) { + animation-delay: -4s; + animation-duration: 13s; +} +.parallax > use:nth-child(4) { + animation-delay: -5s; + animation-duration: 20s; +} +@keyframes move-forever { + 0% { + transform: translate3d(-90px, 0, 0); + } + 100% { + transform: translate3d(85px, 0, 0); + } +} /*Shrinking for mobile*/ + +@media screen and (max-width: 1000px) { + .newContainer .home-first-section { + height: auto; + margin-top: -5vh; + .website-content { + height: 60vh; + } + .grid-picture { + background-size: auto 100%; + } + } +} +@media screen and (max-width: 1200px) { + .waves { + height: 6vh; + } + .newContainer .home-first-section { + .grid-picture { + background-size: auto 100%; + } + } + .home-fifth-section .circle-wave { + left: 1.5vw; + } + + .home-seventh-section { + .seventh-main .clients { + .start-icon { + top: 100px; + left: 150px; + } + .end-icon { + bottom: 100px; + right: 280px; + } + } + } + .home-footer { + height: 400px; + .arc { + margin: -100px -100px 0; + height: 200px; + border-radius: 50%; + } + .footer-main { + height: 200px; + } + } +} +@media screen and (min-width: 2000px) { + .homePage { + font-size: 20px; + &.newHeaders { + height: 4.375em; + .head-nav { + height: inherit; + ul#header-nav { + height: inherit; + li { + height: inherit; + font-size: 1em; + line-height: 4.375em; + a { + font-size: 1.1em; + } + } + } + } + .login-box { + font-size: 0.9375em; + } + } + .homepage-main { + width: 1600px; + } + .home-first-section { + .website { + margin-right: 7%; + .website-vision { + justify-content: flex-start; + span { + margin-right: 1.5em; + } + } + } + .play-img { + width: 50%; + height: 600px; + .play-circle { + right: 21%; + } + .play-circle-circle1, + .play-circle-circle2, + .play-circle-circle3, + .play-circle-circle4, + .play-circle-circle5 { + right: 26.1%; + } + } + } + + .home-seventh-section { + .clients { + .start-icon { + top: 100px; + left: 380px; + } + .end-icon { + bottom: 130px; + right: 480px; + } + } + } + .footerbottom { + font-size: 16px !important; + } + } +} + +@media screen and (min-width: 2800px) { + .homePage { + font-size: 24px; + .homepage-main { + width: 2000px; + } + .home-first-section { + .website { + margin-right: 14%; + } + .play-img { + width: 40%; + .play-circle { + right: 21%; + } + .play-circle-circle1, + .play-circle-circle2, + .play-circle-circle3, + .play-circle-circle4, + .play-circle-circle5 { + right: 26.1%; + } + } + } + } +} diff --git a/src/military/components/chooseNav/index.jsx b/src/military/components/chooseNav/index.jsx index 04bc7055..159d97f9 100644 --- a/src/military/components/chooseNav/index.jsx +++ b/src/military/components/chooseNav/index.jsx @@ -1,10 +1,10 @@ -import React, { useEffect, useState,memo } from 'react'; +import React, { useEffect, useState, memo } from 'react'; import classNames from 'classnames'; import './index.scss'; export default memo((props) => { - const { title, options, changeOptionId, type ,size} = props; - const [option, setOption] = useState({ code: "", dicItemName: "" ,dicItemCode:""}); + const { title, options, changeOptionId, type, size, defaultOption } = props; + const [option, setOption] = useState(defaultOption || { code: "", dicItemName: "", dicItemCode: "" }); useEffect(() => { changeOptionId(option, type); @@ -12,13 +12,13 @@ export default memo((props) => { return ( -
+
{title}
{ setOption({ dicItemCode: "", dicItemName: "" }) }}>全部
{ options.map((item) => { - return
{ setOption(item) }} >{item.dicItemName}
+ return
{ setOption(item) }} >{item.dicItemName}
}) }
diff --git a/src/military/components/sortBox/index.jsx b/src/military/components/sortBox/index.jsx index 4cb0f4f3..f3f3004f 100644 --- a/src/military/components/sortBox/index.jsx +++ b/src/military/components/sortBox/index.jsx @@ -32,7 +32,6 @@ export default memo((props) => { setMyOptions(myOptions); } - console.log('-----options----') return (
diff --git a/src/military/javaFetch.js b/src/military/javaFetch.js index 829a50d4..90e7e925 100644 --- a/src/military/javaFetch.js +++ b/src/military/javaFetch.js @@ -17,7 +17,6 @@ export default function javaFetch(actionUrl){ // request拦截器 service.interceptors.request.use(config => { if (cookie.load(TokenKey)) { - console.log(cookie.load(TokenKey)); config.headers['Authorization'] = cookie.load(TokenKey); // 让每个请求携带自定义token 请根据实际情况自行修改 } if (window.location.port === "3007") { diff --git a/src/military/task/api.js b/src/military/task/api.js index 85645e2b..98313f63 100644 --- a/src/military/task/api.js +++ b/src/military/task/api.js @@ -160,6 +160,13 @@ export function deleteTask(id, isDelete) { }); } +//推荐 +export function recommendTask(id, recommend) { + return fetch({ + url: '/api/tasks/backend/changeTaskRecommendedStatus/' + id + '?recommend=' + recommend, + method: 'PUT', + }); +} //新增成果 export function addPaper(data) { diff --git a/src/military/task/taskAdmin/index.jsx b/src/military/task/taskAdmin/index.jsx index 2ca99d8a..c6dcbb79 100644 --- a/src/military/task/taskAdmin/index.jsx +++ b/src/military/task/taskAdmin/index.jsx @@ -4,7 +4,7 @@ import { Input, Select, Button, Form, DatePicker, Table, Pagination, Modal } fro import { Link } from "react-router-dom"; import { paperCheckStatusArr, publishModeArr, taskStatusAllArr, showUserModeArr, main_web_site_url } from '../static'; -import { getTaskAdminList, changeShowUserMode, deleteTask } from '../api'; +import { getTaskAdminList, changeShowUserMode, deleteTask, recommendTask } from '../api'; import '../index.scss'; import './index.scss'; const format = "YYYY-MM-DD HH:mm:ss"; @@ -29,6 +29,7 @@ export default Form.create()(({ form, showNotification, match, history }) => { const [publishMode, setPublishMode] = useState(''); const [showUserMode, setShowUserMode] = useState(''); const [isDelete, setIsDelete] = useState('0'); + const [recommend, setRecommend] = useState(''); const [sort, setSort] = useState('Desc'); const [order, setOrder] = useState('createdAt'); @@ -48,6 +49,7 @@ export default Form.create()(({ form, showNotification, match, history }) => { pageSize: 10, orderBy: order + sort, isDelete, + recommend, }; setLoading(true); getTaskAdminList(params).then(data => { @@ -57,7 +59,7 @@ export default Form.create()(({ form, showNotification, match, history }) => { } setLoading(false); }) - }, [statusString, order, sort, publishMode, showUserMode, curPage, searchObj, isDelete, reload]); + }, [statusString, order, sort, publishMode, showUserMode, curPage, searchObj, isDelete, reload ,recommend]); const helper = useCallback( @@ -205,8 +207,13 @@ export default Form.create()(({ form, showNotification, match, history }) => { { - isDelete == '0' ? - : + isDelete == '0' ? + : + } + + { + record.recommend ? + : } {/* 查看 */} @@ -216,8 +223,24 @@ export default Form.create()(({ form, showNotification, match, history }) => { ] }, [isDelete]); + function recommendItem(id, recommend) { + Modal.confirm({ + title: "警告", + content: recommend == '0' ? "确认撤销该推荐吗 ?撤销后首页中将不再展示该任务" : "确认推荐吗?推荐后,用户可以在首页看到推荐任务中点击量前三的任务!", + okText: '确定', + cancelText: '取消', + onOk() { + recommendTask(id, recommend).then(res => { + if (res.message === 'success') { + showNotification('操作成功!'); + setReload(Math.random()); + } + }); + }, + }); + } - function deletItem(id, isDelete) { + function deleteItem(id, isDelete) { Modal.confirm({ title: "警告", content: isDelete == '0' ? "确认恢复该任务吗?恢复后用户可以重新看到该任务!" : "确认隐藏?隐藏后用户无法看到该任务!", @@ -261,7 +284,16 @@ export default Form.create()(({ form, showNotification, match, history }) => { const changeShow = useCallback((isDelete) => { setIsDelete(isDelete); setCurPage(1); - }) + }); + + const changeRecommend = useCallback((recommend) => { + if (recommend === 'all') { + setRecommend(''); + } else { + setRecommend(recommend); + } + setCurPage(1); + }); function downloadFile() { window.open(main_web_site_url + '/admin/tasks.xlsx'); @@ -334,6 +366,19 @@ export default Form.create()(({ form, showNotification, match, history }) => { + + + +