Compare commits
18 Commits
master
...
feature_ab
Author | SHA1 | Date |
---|---|---|
|
70f9cd0997 | |
|
fa247e39bf | |
|
10c9891b7b | |
|
e5f8eac497 | |
|
cf1d2dd5ba | |
|
121b1aaab1 | |
|
3e42a620d9 | |
|
982536b547 | |
|
d5b4c5425f | |
|
56946f94e8 | |
![]() |
61ee3fe36f | |
|
7b77c46915 | |
|
746f552a21 | |
|
7872d5ecab | |
|
60da6bd110 | |
|
aeff357660 | |
|
0e6cb3954a | |
|
ae12618c0c |
124
LICENSE
|
@ -1,124 +0,0 @@
|
|||
木兰宽松许可证, 第2版
|
||||
|
||||
2020年1月 http://license.coscl.org.cn/MulanPSL2
|
||||
|
||||
您对“软件”的复制、使用、修改及分发受木兰宽松许可证,第2版(“本许可证”)的如下条款的约束:
|
||||
|
||||
0. 定义
|
||||
|
||||
“软件” 是指由“贡献”构成的许可在“本许可证”下的程序和相关文档的集合。
|
||||
|
||||
“贡献” 是指由任一“贡献者”许可在“本许可证”下的受版权法保护的作品。
|
||||
|
||||
“贡献者” 是指将受版权法保护的作品许可在“本许可证”下的自然人或“法人实体”。
|
||||
|
||||
“法人实体” 是指提交贡献的机构及其“关联实体”。
|
||||
|
||||
“关联实体” 是指,对“本许可证”下的行为方而言,控制、受控制或与其共同受控制的机构,此处的控制是指有受控方或共同受控方至少50%直接或间接的投票权、资金或其他有价证券。
|
||||
|
||||
1. 授予版权许可
|
||||
|
||||
每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的版权许可,您可以复制、使用、修改、分发其“贡献”,不论修改与否。
|
||||
|
||||
2. 授予专利许可
|
||||
|
||||
每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的(根据本条规定撤销除外)专利许可,供您制造、委托制造、使用、许诺销售、销售、进口其“贡献”或以其他方式转移其“贡献”。前述专利许可仅限于“贡献者”现在或将来拥有或控制的其“贡献”本身或其“贡献”与许可“贡献”时的“软件”结合而将必然会侵犯的专利权利要求,不包括对“贡献”的修改或包含“贡献”的其他结合。如果您或您的“关联实体”直接或间接地,就“软件”或其中的“贡献”对任何人发起专利侵权诉讼(包括反诉或交叉诉讼)或其他专利维权行动,指控其侵犯专利权,则“本许可证”授予您对“软件”的专利许可自您提起诉讼或发起维权行动之日终止。
|
||||
|
||||
3. 无商标许可
|
||||
|
||||
“本许可证”不提供对“贡献者”的商品名称、商标、服务标志或产品名称的商标许可,但您为满足第4条规定的声明义务而必须使用除外。
|
||||
|
||||
4. 分发限制
|
||||
|
||||
您可以在任何媒介中将“软件”以源程序形式或可执行形式重新分发,不论修改与否,但您必须向接收者提供“本许可证”的副本,并保留“软件”中的版权、商标、专利及免责声明。
|
||||
|
||||
5. 免责声明与责任限制
|
||||
|
||||
“软件”及其中的“贡献”在提供时不带任何明示或默示的担保。在任何情况下,“贡献者”或版权所有者不对任何人因使用“软件”或其中的“贡献”而引发的任何直接或间接损失承担责任,不论因何种原因导致或者基于何种法律理论,即使其曾被建议有此种损失的可能性。
|
||||
|
||||
6. 语言
|
||||
|
||||
“本许可证”以中英文双语表述,中英文版本具有同等法律效力。如果中英文版本存在任何冲突不一致,以中文版为准。
|
||||
|
||||
条款结束
|
||||
|
||||
如何将木兰宽松许可证,第2版,应用到您的软件
|
||||
|
||||
如果您希望将木兰宽松许可证,第2版,应用到您的新软件,为了方便接收者查阅,建议您完成如下三步:
|
||||
|
||||
1, 请您补充如下声明中的空白,包括软件名、软件的首次发表年份以及您作为版权人的名字;
|
||||
|
||||
2, 请您在软件包的一级目录下创建以“LICENSE”为名的文件,将整个许可证文本放入该文件中;
|
||||
|
||||
3, 请将如下声明文本放入每个源文件的头部注释中。
|
||||
|
||||
Copyright (c) [Year] [name of copyright holder]
|
||||
[Software Name] is licensed under Mulan PSL v2.
|
||||
You can use this software according to the terms and conditions of the Mulan PSL v2.
|
||||
You may obtain a copy of Mulan PSL v2 at:
|
||||
http://license.coscl.org.cn/MulanPSL2
|
||||
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
||||
EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||||
MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||||
See the Mulan PSL v2 for more details.
|
||||
Mulan Permissive Software License,Version 2
|
||||
Mulan Permissive Software License,Version 2 (Mulan PSL v2)
|
||||
|
||||
January 2020 http://license.coscl.org.cn/MulanPSL2
|
||||
|
||||
Your reproduction, use, modification and distribution of the Software shall be subject to Mulan PSL v2 (this License) with the following terms and conditions:
|
||||
|
||||
0. Definition
|
||||
|
||||
Software means the program and related documents which are licensed under this License and comprise all Contribution(s).
|
||||
|
||||
Contribution means the copyrightable work licensed by a particular Contributor under this License.
|
||||
|
||||
Contributor means the Individual or Legal Entity who licenses its copyrightable work under this License.
|
||||
|
||||
Legal Entity means the entity making a Contribution and all its Affiliates.
|
||||
|
||||
Affiliates means entities that control, are controlled by, or are under common control with the acting entity under this License, ‘control’ means direct or indirect ownership of at least fifty percent (50%) of the voting power, capital or other securities of controlled or commonly controlled entity.
|
||||
|
||||
1. Grant of Copyright License
|
||||
|
||||
Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable copyright license to reproduce, use, modify, or distribute its Contribution, with modification or not.
|
||||
|
||||
2. Grant of Patent License
|
||||
|
||||
Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable (except for revocation under this Section) patent license to make, have made, use, offer for sale, sell, import or otherwise transfer its Contribution, where such patent license is only limited to the patent claims owned or controlled by such Contributor now or in future which will be necessarily infringed by its Contribution alone, or by combination of the Contribution with the Software to which the Contribution was contributed. The patent license shall not apply to any modification of the Contribution, and any other combination which includes the Contribution. If you or your Affiliates directly or indirectly institute patent litigation (including a cross claim or counterclaim in a litigation) or other patent enforcement activities against any individual or entity by alleging that the Software or any Contribution in it infringes patents, then any patent license granted to you under this License for the Software shall terminate as of the date such litigation or activity is filed or taken.
|
||||
|
||||
3. No Trademark License
|
||||
|
||||
No trademark license is granted to use the trade names, trademarks, service marks, or product names of Contributor, except as required to fulfill notice requirements in section 4.
|
||||
|
||||
4. Distribution Restriction
|
||||
|
||||
You may distribute the Software in any medium with or without modification, whether in source or executable forms, provided that you provide recipients with a copy of this License and retain copyright, patent, trademark and disclaimer statements in the Software.
|
||||
|
||||
5. Disclaimer of Warranty and Limitation of Liability
|
||||
|
||||
THE SOFTWARE AND CONTRIBUTION IN IT ARE PROVIDED WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED. IN NO EVENT SHALL ANY CONTRIBUTOR OR COPYRIGHT HOLDER BE LIABLE TO YOU FOR ANY DAMAGES, INCLUDING, BUT NOT LIMITED TO ANY DIRECT, OR INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING FROM YOUR USE OR INABILITY TO USE THE SOFTWARE OR THE CONTRIBUTION IN IT, NO MATTER HOW IT’S CAUSED OR BASED ON WHICH LEGAL THEORY, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
6. Language
|
||||
|
||||
THIS LICENSE IS WRITTEN IN BOTH CHINESE AND ENGLISH, AND THE CHINESE VERSION AND ENGLISH VERSION SHALL HAVE THE SAME LEGAL EFFECT. IN THE CASE OF DIVERGENCE BETWEEN THE CHINESE AND ENGLISH VERSIONS, THE CHINESE VERSION SHALL PREVAIL.
|
||||
|
||||
END OF THE TERMS AND CONDITIONS
|
||||
|
||||
How to Apply the Mulan Permissive Software License,Version 2 (Mulan PSL v2) to Your Software
|
||||
|
||||
To apply the Mulan PSL v2 to your work, for easy identification by recipients, you are suggested to complete following three steps:
|
||||
|
||||
Fill in the blanks in following statement, including insert your software name, the year of the first publication of your software, and your name identified as the copyright owner;
|
||||
Create a file named "LICENSE" which contains the whole context of this License in the first directory of your software package;
|
||||
Attach the statement to the appropriate annotated syntax at the beginning of each source file.
|
||||
Copyright (c) [Year] [name of copyright holder]
|
||||
[Software Name] is licensed under Mulan PSL v2.
|
||||
You can use this software according to the terms and conditions of the Mulan PSL v2.
|
||||
You may obtain a copy of Mulan PSL v2 at:
|
||||
http://license.coscl.org.cn/MulanPSL2
|
||||
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
||||
EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||||
MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||||
See the Mulan PSL v2 for more details.
|
|
@ -3811,6 +3811,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.3",
|
||||
"resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz",
|
||||
|
@ -7286,8 +7291,7 @@
|
|||
"ansi-regex": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
|
||||
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
|
||||
"optional": true
|
||||
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
|
||||
},
|
||||
"aproba": {
|
||||
"version": "1.2.0",
|
||||
|
@ -7308,14 +7312,12 @@
|
|||
"balanced-match": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
|
||||
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
|
||||
"optional": true
|
||||
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
|
||||
},
|
||||
"brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"balanced-match": "^1.0.0",
|
||||
"concat-map": "0.0.1"
|
||||
|
@ -7330,20 +7332,17 @@
|
|||
"code-point-at": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
|
||||
"integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
|
||||
"optional": true
|
||||
"integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
|
||||
},
|
||||
"concat-map": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
||||
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
|
||||
"optional": true
|
||||
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
|
||||
},
|
||||
"console-control-strings": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
|
||||
"integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
|
||||
"optional": true
|
||||
"integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="
|
||||
},
|
||||
"core-util-is": {
|
||||
"version": "1.0.2",
|
||||
|
@ -7460,8 +7459,7 @@
|
|||
"inherits": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
|
||||
"optional": true
|
||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
||||
},
|
||||
"ini": {
|
||||
"version": "1.3.5",
|
||||
|
@ -7473,7 +7471,6 @@
|
|||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
|
||||
"integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"number-is-nan": "^1.0.0"
|
||||
}
|
||||
|
@ -7488,7 +7485,6 @@
|
|||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
|
||||
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"brace-expansion": "^1.1.7"
|
||||
}
|
||||
|
@ -7496,14 +7492,12 @@
|
|||
"minimist": {
|
||||
"version": "1.2.5",
|
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
|
||||
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
|
||||
"optional": true
|
||||
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
|
||||
},
|
||||
"minipass": {
|
||||
"version": "2.9.0",
|
||||
"resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
|
||||
"integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"safe-buffer": "^5.1.2",
|
||||
"yallist": "^3.0.0"
|
||||
|
@ -7522,7 +7516,6 @@
|
|||
"version": "0.5.3",
|
||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.3.tgz",
|
||||
"integrity": "sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg==",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"minimist": "^1.2.5"
|
||||
}
|
||||
|
@ -7584,8 +7577,7 @@
|
|||
"npm-normalize-package-bin": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz",
|
||||
"integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==",
|
||||
"optional": true
|
||||
"integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA=="
|
||||
},
|
||||
"npm-packlist": {
|
||||
"version": "1.4.8",
|
||||
|
@ -7613,8 +7605,7 @@
|
|||
"number-is-nan": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
|
||||
"integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
|
||||
"optional": true
|
||||
"integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
|
||||
},
|
||||
"object-assign": {
|
||||
"version": "4.1.1",
|
||||
|
@ -7626,7 +7617,6 @@
|
|||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
||||
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"wrappy": "1"
|
||||
}
|
||||
|
@ -7704,8 +7694,7 @@
|
|||
"safe-buffer": {
|
||||
"version": "5.1.2",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
|
||||
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
|
||||
"optional": true
|
||||
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
|
||||
},
|
||||
"safer-buffer": {
|
||||
"version": "2.1.2",
|
||||
|
@ -7741,7 +7730,6 @@
|
|||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
|
||||
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"code-point-at": "^1.0.0",
|
||||
"is-fullwidth-code-point": "^1.0.0",
|
||||
|
@ -7761,7 +7749,6 @@
|
|||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
|
||||
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"ansi-regex": "^2.0.0"
|
||||
}
|
||||
|
@ -7805,14 +7792,12 @@
|
|||
"wrappy": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
||||
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
|
||||
"optional": true
|
||||
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
|
||||
},
|
||||
"yallist": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
|
||||
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
|
||||
"optional": true
|
||||
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -14977,6 +14962,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.14.1",
|
||||
"resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-2.14.1.tgz",
|
||||
|
|
|
@ -84,6 +84,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",
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
@font-face {
|
||||
font-family: "iconfont"; /* Project id 2340181 */
|
||||
src: url('iconfont.woff2?t=1634881729644') format('woff2'),
|
||||
url('iconfont.woff?t=1634881729644') format('woff'),
|
||||
url('iconfont.ttf?t=1634881729644') format('truetype');
|
||||
src: url('iconfont.woff2?t=1632964996877') format('woff2'),
|
||||
url('iconfont.woff?t=1632964996877') format('woff'),
|
||||
url('iconfont.ttf?t=1632964996877') format('truetype');
|
||||
}
|
||||
|
||||
.iconfont {
|
||||
|
|
12
src/App.js
|
@ -97,13 +97,18 @@ const ProjectIndex = Loadable({
|
|||
loading: Loading,
|
||||
});
|
||||
|
||||
const AboutUs = Loadable({
|
||||
loader: () => import("./forge/AboutUs/AboutUs"),
|
||||
loading: Loading,
|
||||
})
|
||||
|
||||
// const CreateMerge = Loadable({
|
||||
// loader: () => import('./forge/Merge/NewMerge'),
|
||||
// loading: Loading,
|
||||
// })
|
||||
|
||||
// 此处仅维护前端可能的一级路由,不用进行项目或者组织判断的字段。
|
||||
const keyWord = ["explore", "settings", "setting", "mulan", "wiki", "issues", "setting", "trending", "code", "projects", "pulls", "mine", "login", "register", "email", "export", "nopage", "404", "403", "500", "501", "search", "organize"];
|
||||
const keyWord = ["explore", "settings", "setting", "mulan", "wiki", "issues", "setting", "trending", "code", "projects", "pulls", "mine", "login", "register", "email", "export", "nopage", "404", "403", "500", "501", "search", "organize", "aboutus"];
|
||||
|
||||
class App extends Component {
|
||||
constructor(props) {
|
||||
|
@ -330,6 +335,11 @@ class App extends Component {
|
|||
}
|
||||
/>
|
||||
|
||||
{/* 关于我们 */}
|
||||
<Route
|
||||
path = "/aboutus"
|
||||
render = {(props)=><AboutUs {...this.props} {...props}/>}
|
||||
></Route>
|
||||
|
||||
{/* 组织 */}
|
||||
<Route path={"/organize"}
|
||||
|
|
|
@ -0,0 +1,280 @@
|
|||
import React , { useEffect , useState } from 'react';
|
||||
import { TPMIndexHOC} from '../../modules/tpm/TPMIndexHOC';
|
||||
import { Timeline, Carousel } from 'antd';
|
||||
import { getImageUrl } from 'educoder';
|
||||
import CountUp from 'react-countup';
|
||||
import axios from 'axios';
|
||||
import './AboutUs.scss';
|
||||
import subititle from './image/subtitle.png';
|
||||
import achievements from './image/achievements.png';
|
||||
import earth from './image/earth.png';
|
||||
import computer from './image/computer.png';
|
||||
import position from './image/position.png';
|
||||
import quan1 from './image/quan1.png';
|
||||
import quan2 from './image/quan2.png';
|
||||
import fun1 from './image/fun1.png';
|
||||
import fun2 from './image/fun2.png';
|
||||
import fun3 from './image/fun3.png';
|
||||
import fun4 from './image/fun4.png';
|
||||
import fun5 from './image/fun5.png';
|
||||
|
||||
function AboutUs(){
|
||||
const countUpProps = {
|
||||
redraw: true,
|
||||
start: 0,
|
||||
duration: 2,
|
||||
suffix: "+"
|
||||
};
|
||||
const [selectTitle, setSelectTitle] = useState(1);
|
||||
//用于刷新组件
|
||||
const [flush, setFlush] = useState(false);
|
||||
//合作单位
|
||||
const [units, setUnits] = useState([]);
|
||||
|
||||
useEffect(()=>{
|
||||
//添加浏览器滚动监听事件
|
||||
window.addEventListener('scroll', scrollListener);
|
||||
//请求topics.json接口获取合作单位信息
|
||||
axios.get(`/topics.json`, { params: { topic_type: "cooperator", limit: 20, group_size: 5}}).then(response=>{
|
||||
response && setUnits(response.data.topics);
|
||||
});
|
||||
return ()=>window.removeEventListener('scroll', scrollListener);
|
||||
},[])
|
||||
|
||||
function scrollListener(e){
|
||||
const top = e.srcElement.scrollingElement.scrollTop;
|
||||
//回到顶部时导航栏选中【关于我们】
|
||||
top < 555 && setSelectTitle(1);
|
||||
if (top > 2800 && top< 4000){
|
||||
setFlush(true);
|
||||
}else{
|
||||
setFlush(false);
|
||||
}
|
||||
}
|
||||
|
||||
return(
|
||||
<div className="aboutUs_body">
|
||||
<div className="aboutUs_head df">
|
||||
<p className="head_title">GitLink 确实开源</p>
|
||||
<p className="head_cont font-20 mt36">新一代开源创新服务平台,让您的创意在这里释放</p>
|
||||
</div>
|
||||
<div className="aboutUs_title df">
|
||||
<a className={selectTitle === 1 ? "active" : ""} href="#value1" onClick={() => setSelectTitle(1)}>关于我们</a>
|
||||
<a className={selectTitle === 2 ? "active" : ""} href="#value2" onClick={() => setSelectTitle(2)}>平台统计</a>
|
||||
<a className={selectTitle === 3 ? "active" : ""} href="#value3" onClick={() => setSelectTitle(3)}>加入我们</a>
|
||||
<a className={selectTitle === 4 ? "active" : ""} href="#value4" onClick={() => setSelectTitle(4)}>合作单位</a>
|
||||
</div>
|
||||
<div className="aboutUs">
|
||||
<a id="value1" className="mao"></a>
|
||||
{/* 关于我们 */}
|
||||
<div className="about_us">
|
||||
<div className="au_bg">
|
||||
<div className="au_title">关于我们</div>
|
||||
{/* 简介 */}
|
||||
<div className="au_cont subt df">
|
||||
<div className="cont1_introduction">
|
||||
<p className="subtitle">简介</p>
|
||||
<div className="font-16">GitLink(确实开源)是CCF官方指定的开源创新服务平台,旨在以“为开源创新服务”为使命,以“成为开源创新的汇聚地”为愿景,秉承“创新、开放、协作、共享”的价值观,致力于为大规模开源开放协同创新助力赋能,打造创新成果孵化和新工科人才培养的开源创新生态!</div>
|
||||
</div>
|
||||
<img src={subititle} className="subtitleImg"></img>
|
||||
</div>
|
||||
</div>
|
||||
{/* 确实开源 一脉传承 */}
|
||||
<div className="au_cont inherit pl30">
|
||||
<p className="subtitle">确实开源 一脉传承</p>
|
||||
<div>本世纪以来,随着软件创新需求和应用规模的飞速增长,软件开发队伍、开发资源、可信评估呈现出规模化、开放化、持续化的新特点,软件开发活动面临协同难、复用难、评估难的制约,经典的工程化软件开发方法面临严峻挑战,严重影响了软件开发效率和质量的提升。在此背景下,国防科技大学联合国内多所知名高校、科研机构和软件企业,围绕开源创新开展了持续性探索,构建形成了以Trustie(确实)为代表的一系列开源创新服务基础设施。自2006年以来,Trustie经过三个阶段的演化发展,于2021年迎来全面升级:在计算机学会(CCF)的带领指导下,共同推进产学研用深度融合,共筑新一代开源创新服务平台GitLink!</div>
|
||||
<div className="inherit_items">
|
||||
<img src={quan1} className="quan1Img"/>
|
||||
<img src={quan2} className="quan2Img"/>
|
||||
<Timeline>
|
||||
<Timeline.Item dot={<i className="iconfont icon-a-yuanquan2x font-20"></i>}>
|
||||
<div className="timeline_cont">
|
||||
<p>Trustie 1.0阶段(2006年-2014年)</p>
|
||||
<div>国防科技大学、北京大学、北京航空航天大学、中国科学院软件研究所等单位合作开展了基于网络的软件开发群体化方法与技术研究,揭示了以大众化协同开发、开放式资源共享、持续性可信评估为核心的互联网大规模协同机理,与软件开发工程化方法相结合,系统地提出了基于网络的软件开发群体化方法,并于2008年发布了可信的国家软件资源共享与协同生产环境(简称“Trustie v1.0”,中文简称“确实”),重点解决大规模软件协同开发、可信评估、运行监控和持续演化等问题。</div>
|
||||
</div>
|
||||
</Timeline.Item>
|
||||
<Timeline.Item dot={<i className="iconfont icon-a-yuanquan2x"></i>}>
|
||||
<div className="timeline_cont">
|
||||
<p>Trustie 2.0阶段(2014年-2020年)</p>
|
||||
<div>在科技部项目的持续资助下,国防科技大学联合国内多所知名高校、科研机构和软件企业,致力于系统研究新型软件开发方法,为开源生态建设提供方法指导和实践指南,支撑科教领域原始创新成果的开源孵化和开源人才培养,并于2014年发布了面向软件创新和教育的开源社区Trustie v2.0,重点探索协作开发社区、知识分享社区、应用服务社区等“大外围”软件涉众的联接,以及基于开源大数据的智能化开发等技术。</div>
|
||||
</div>
|
||||
</Timeline.Item>
|
||||
<Timeline.Item dot={<i className="iconfont icon-a-yuanquan2x"></i>}>
|
||||
<div className="timeline_cont">
|
||||
<p>Trustie 3.0阶段 (2020年至今)</p>
|
||||
<div>Trustie在已有的技术积累基础上,进一步联合国内高等院校、科研机构、产业企业和开源组织等,在计算机学会(CCF)的带领指导下,共同推进产学研用深度融合,致力于联接互联网海量群智资源,探索开源创新成果开放与共享、开源生态协作与共建的新模式和新方法,升级形成了新一代开源创新服务平台GitLink,力图破解软件开发群智范式背后的本质机理,建立面向“大外围”开放创新的群智激发与汇聚关键机制,实现面向大规模软件涉众的稳态群智激发与汇聚。</div>
|
||||
</div>
|
||||
</Timeline.Item>
|
||||
</Timeline>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* 特色功能 确实给力 */}
|
||||
<div className="feature_function_bg">
|
||||
<div className="au_cont">
|
||||
<p className="au_title">特色功能 确实给力</p>
|
||||
<table><tr>
|
||||
<td>
|
||||
<div className="feat_func_cont">
|
||||
<div className="feat_fun_img"><img src={fun1} /></div>
|
||||
<div>
|
||||
<p>分布式协作开发</p>
|
||||
<div>支持在线文件编辑、 <br />分支管理、贡献统计、<br />仓库复刻、合并请求 </div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div className="feat_func_cont">
|
||||
<div className="feat_fun_img"><img src={fun2} /></div>
|
||||
<div>
|
||||
<p>一站式过程管理</p>
|
||||
<div>支持易修、里程碑、 <br />通知提醒、标签归档、Wiki文档、组织管理 </div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div className="feat_func_cont">
|
||||
<div className="feat_fun_img"><img src={fun3} /></div>
|
||||
<div>
|
||||
<p>高效流水线运维</p>
|
||||
<div>提供轻量级工作流引擎<br />并支持自定义配置、 <br/>静态扫描、制品构建 </div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div className="feat_func_cont">
|
||||
<div className="feat_fun_img"><img src={fun4} /></div>
|
||||
<div>
|
||||
<p>多层次代码分析</p>
|
||||
<div>支持代码溯源分析、 <br />许可证风险分析、开源漏洞检测和加固建议 </div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div className="feat_func_cont">
|
||||
<div className="feat_fun_img"><img src={fun5} /></div>
|
||||
<div>
|
||||
<p>多维度用户画像</p>
|
||||
<div>支持开发活动统计、 <br />贡献日历、能力建模、<br />角色与专业定位分析 </div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr></table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* 成果作用,确实有效 */}
|
||||
<div className="au_cont df pl30">
|
||||
<img src={achievements} className="achievementsImg"></img>
|
||||
<div className="cont1_achievements">
|
||||
<p className="subtitle ml0">成果作用 确实有效</p>
|
||||
<div>GitLink(确实开源)为我国创新型软件产业发展提供了关键技术支撑和实践指南,为各类开源创新活动以及我国军地开源社区建设提供了有效支撑,为推动开源创新发展和创新人才培养发挥了重要作用。<br/>通过10多年的发展,GitLink平台显著提升了大型软件企业软件生产能力,支持了我国航空、航天、国防等多个关键领域的可信软件生产,为包括新一代人工智能启智社区、ARM绿色计算社区、科技部云计算与大数据木兰社区、科技委可控开源创造行动红山社区等的建设提供关键技术支撑,为我国关键领域开源社区生态建设发挥了重要作用!</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* 平台统计 */}
|
||||
<div className="about_us statistics">
|
||||
<a id="value2" className="mao"></a>
|
||||
<div className="au_title">平台统计</div>
|
||||
<p>联接海量群智资源,汇聚优秀开源组织,孵化优质创新成果</p>
|
||||
<img src={earth} className="earthImg"/>
|
||||
<div className="statistics_cont df">
|
||||
<div>
|
||||
<CountUp {...countUpProps} start={0} end={50000} />
|
||||
<p>开发者</p>
|
||||
</div>
|
||||
<div>
|
||||
<CountUp {...countUpProps} end={1000} />
|
||||
<p>组织</p>
|
||||
</div>
|
||||
<div>
|
||||
<CountUp {...countUpProps} end={1400000} />
|
||||
<p>仓库</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* 加入我们 */}
|
||||
<div className="join_us_bg">
|
||||
<a id="value3" className="mao"></a>
|
||||
<div className="au_cont">
|
||||
<div className="au_title">加入我们</div>
|
||||
<p className="subtitle">探索你的未来</p>
|
||||
<p>GitLink团队在寻找新的小伙伴,期待着您的加入,让我们一起为开源创新贡献力量!</p>
|
||||
<img src={computer} className="joinUsImg"/>
|
||||
{/* 轮播图 */}
|
||||
<Carousel autoplay easing="none">
|
||||
<div className="df">
|
||||
<div className="position">
|
||||
<p className="df"><img src={position} /><span className="ml10">前端开发工程师</span></p>
|
||||
<div>
|
||||
1、全日制本科及以上学历,5年以上Web前端开发经验,熟练使用Gulp、Webpack等构建工具;<br />
|
||||
2、熟练掌握VUE或React编程;有前端模块化、组件化、自动化开发经验者优先;<br />
|
||||
3、精通jQuery、Ajax、Json等技术,对VUE,NodeJs等技术有所涉及;<br />
|
||||
4、熟悉前端开发技术(HTML5、JS、JSON、XHTML、CSS3、ES6),了解各项技术的相关标准,并严格按照标准进行开发。<br />
|
||||
</div>
|
||||
</div>
|
||||
<div className="position right">
|
||||
<p className="df"><img src={position} /><span className="ml10">后端开发工程师</span></p>
|
||||
<div>
|
||||
1、全日制本科及以上学历,计算机、软件工程相关专业者优先;<br />
|
||||
2、3年以上Java开发相关经验,扎实的Java编程基础,参与过1个以上大/中型高并发、高性能系统架构设计、开发和调优;<br />
|
||||
3、熟练掌握Spring、SpringBoot、Spring MVC、MyBatis等开源框架,掌握MVC框架模式及BS架构;<br />
|
||||
4、精通SQL,熟练使用MySQL、Oracle等数据库,并具有一定的SQL优化能力;熟悉Redis、MongoDB等常用NoSQL解决方案,了解各自的优缺点以及使用场景者优先。<br />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="df">
|
||||
<div className="position">
|
||||
<p className="df"><img src={position} /><span className="ml10">软件测试工程师</span></p>
|
||||
<div>
|
||||
1、熟悉主流开发技术框架,具备软件工程的基本知识;<br />
|
||||
2、熟练掌握各种测试理论和测试技术,精通测试过程设计和用例设计方法;<br />
|
||||
3、熟悉性能测试、自动化测试、安全测试其中一种或多种测试工具;(LoadRunner、Jmeter、Selenium、QTP、Robot、Firebug、AppScan,PyCharm等),熟练运用工具从事过相关测试工作;<br />
|
||||
4、熟悉掌握一种编程语言(Java/Python/C++等);<br />
|
||||
5、熟悉Oracle/MySQL数据库,并能熟练编写SQL语句,熟练常用Linux命令;<br />
|
||||
6、有整体质量意识,测试管理经验。<br />
|
||||
</div>
|
||||
</div>
|
||||
<div className="position right">
|
||||
<p className="df"><img src={position} /><span className="ml10">产品经理</span></p>
|
||||
<div>
|
||||
1、计算机或相关专业本科以上学历;3年以上工作经验;<br />
|
||||
2、熟悉开源软件项目的管理流程,了解软件需求的调研方法,具备需求分析能力;<br />
|
||||
3、能以专业的方式向客户提供技术咨询,良好的方案设计能力和文字功底;<br />
|
||||
4、具备良好的交流、沟通和表达能力,良好的方案演示和介绍技巧;<br />
|
||||
5、了解互联网产品的基本思路及基础方法论,能够基于数据提出产品优化策略;<br />
|
||||
6、承受较强的工作压力,强烈的团队合作意识与工作责任心;<br />
|
||||
7、有良好人际交往能力,工作积极主动,自信心强,有较强的学习能力。<br />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</Carousel>
|
||||
<p className="delivery">简历投递邮箱:zengyt#csxjy.com.cn 曾先生 (用@符号替换#)</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* 合作单位 */}
|
||||
<div className="unit">
|
||||
<a id="value4" className="mao"></a>
|
||||
<div className="au_title">合作单位</div>
|
||||
<table>
|
||||
{units && units.map(group =>{
|
||||
return (
|
||||
<tr>
|
||||
{group.map(item =>{
|
||||
return(
|
||||
<td><a href={item.url} target="_blank"><img src={getImageUrl(item.image)}></img></a></td>
|
||||
)
|
||||
})}
|
||||
</tr>
|
||||
)
|
||||
})}
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
export default TPMIndexHOC(AboutUs);
|
|
@ -0,0 +1,338 @@
|
|||
.aboutUs_body{
|
||||
font-size: 16px;
|
||||
color: #182332;
|
||||
font-family: PingFangSC-Regular, PingFang SC;
|
||||
& table{
|
||||
text-align: center;
|
||||
margin: 0 auto;
|
||||
}
|
||||
& .df{
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
align-items: center;
|
||||
}
|
||||
& .join_us_bg, .feature_function_bg, .feat_fun_img, .aboutUs_head{
|
||||
background-size: cover;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
}
|
||||
& .mao{
|
||||
position: relative;
|
||||
top: -70px;
|
||||
}
|
||||
}
|
||||
.aboutUs_head.df{
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
height: 500px;
|
||||
line-height: 500px;
|
||||
background-image: url('./image/banner.png');
|
||||
& p{
|
||||
text-align: center;
|
||||
}
|
||||
& .head_title{
|
||||
line-height: 50px;
|
||||
font-size: 48px;
|
||||
font-weight: 600;
|
||||
background-image: -webkit-linear-gradient(bottom,#4CDBF5,#5AACFF);
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
}
|
||||
& .head_cont{
|
||||
line-height: 39px;
|
||||
color: #FFFFFF;
|
||||
opacity: 0.9;
|
||||
}
|
||||
}
|
||||
.aboutUs_title{
|
||||
width: 800px;
|
||||
height: 62px;
|
||||
margin: 0 auto;
|
||||
&>table{
|
||||
width: 800px;
|
||||
font-weight: 400;
|
||||
}
|
||||
& a.active{
|
||||
color: #466AFF;
|
||||
height: 62px;
|
||||
line-height: 62px;
|
||||
border-bottom: 2px solid;
|
||||
}
|
||||
}
|
||||
.aboutUs{
|
||||
& .au_title{
|
||||
font-size: 38px;
|
||||
font-weight: 500;
|
||||
color: #1E1E1E;
|
||||
text-align: center;
|
||||
padding-top: 50px;
|
||||
// line-height: 53px;
|
||||
}
|
||||
& .subtitle{
|
||||
font-size: 20px;
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
margin-bottom: 23px !important;
|
||||
}
|
||||
}
|
||||
.about_us{
|
||||
// 关于我们
|
||||
& .au_cont.df{
|
||||
justify-content: space-between;
|
||||
}
|
||||
& .au_bg{ background: linear-gradient(180deg, #F3F9FF 0%, rgba(255, 255, 255, 0) 100%);}
|
||||
& .cont1_introduction{
|
||||
width: 472px;
|
||||
&>div{
|
||||
line-height: 34px;
|
||||
}
|
||||
}
|
||||
& .cont1_achievements{
|
||||
width: 581px;
|
||||
& .subtitle.ml0{margin-left: 0;}
|
||||
&>div{
|
||||
font-size: 15px;
|
||||
line-height: 36px;
|
||||
}
|
||||
}
|
||||
& .subtitleImg{
|
||||
width: 650px;
|
||||
height: 330px;
|
||||
}
|
||||
& .achievementsImg{
|
||||
width: 507px;
|
||||
height: 384px;
|
||||
}
|
||||
//时间轴
|
||||
& .inherit_items{
|
||||
position: relative;
|
||||
& .quan1Img{
|
||||
width: 140px;
|
||||
height: 167px;
|
||||
position: absolute;
|
||||
left: -290px;
|
||||
top: 90px;
|
||||
}
|
||||
& .quan2Img{
|
||||
width: 100px;
|
||||
height: 120px;
|
||||
position: absolute;
|
||||
right: -170px;
|
||||
bottom: 80px;
|
||||
}
|
||||
}
|
||||
.inherit{
|
||||
& .icon-a-yuanquan2x{
|
||||
color: #466aff;
|
||||
}
|
||||
& .ant-timeline-item-tail{
|
||||
border-left: 2px solid rgba(108, 134, 172, 0.42);
|
||||
height: calc(100% - -30px);
|
||||
}
|
||||
& .ant-timeline-item:last-child .ant-timeline-item-tail{
|
||||
display: block;
|
||||
height: calc(100% - 18px);
|
||||
}
|
||||
& .ant-timeline-item-content{
|
||||
margin: 0 0 -15px 18px;
|
||||
}
|
||||
}
|
||||
.timeline_cont{
|
||||
margin-left: 35px;
|
||||
&>p{
|
||||
font-size: 20px;
|
||||
font-weight: 500;
|
||||
color: #466AFF;
|
||||
margin: 45px 0 30px !important;
|
||||
}
|
||||
&>div{
|
||||
width: 980px;
|
||||
padding: 20px 35px;
|
||||
background: #F5F7FA;
|
||||
font-size: 15px;
|
||||
font-weight: 400;
|
||||
color: #182332;
|
||||
line-height: 33px;
|
||||
&:after,&:before{
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 21px;
|
||||
top: 100px;
|
||||
border-top: 10px solid transparent;
|
||||
border-bottom: 10px solid transparent;
|
||||
border-right: 14px solid #F5F7FA;
|
||||
}
|
||||
}
|
||||
}
|
||||
//特色功能 确实给力
|
||||
& .feature_function_bg{
|
||||
position: relative;
|
||||
height: 630px;
|
||||
background-image: url(./image/funBg.png);
|
||||
& .au_cont p.au_title{
|
||||
font-size: 30px;
|
||||
padding: 50px 0 70px;
|
||||
color: #FFFFFF;
|
||||
opacity: 0.9;
|
||||
}
|
||||
& table{
|
||||
position: relative;
|
||||
background: none;
|
||||
width: 1200px;}
|
||||
& .funBg2 {
|
||||
width: 1600px;
|
||||
left: 50%;
|
||||
margin-left: -800px;
|
||||
position: absolute;
|
||||
bottom: -15px;
|
||||
}
|
||||
}
|
||||
|
||||
& .feat_func_cont{
|
||||
width: 200px;
|
||||
& .feat_fun_img{
|
||||
height: 205px;
|
||||
line-height: 205px;
|
||||
background-image: url('./image/funBg3.png');
|
||||
&:hover{background-image: url('./image/funBg4.png');}
|
||||
}
|
||||
& img{ width: 175px;}
|
||||
& p{
|
||||
font-size: 18px;
|
||||
font-weight: 500;
|
||||
color: #FFFFFF;
|
||||
line-height: 28px;
|
||||
background-image: -webkit-linear-gradient(bottom,#4FFDFF,#0183FF);
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
}
|
||||
& div>div{
|
||||
margin: 10px auto;
|
||||
width: 142px;
|
||||
font-size: 14px;
|
||||
line-height: 28px;
|
||||
color: #FFFFFF;
|
||||
opacity: 0.76;
|
||||
}
|
||||
}
|
||||
|
||||
// 平台统计
|
||||
&.statistics{
|
||||
text-align: center;
|
||||
background: linear-gradient(180deg, #ECF3FF 0%, #FFFFFF 100%);
|
||||
height: 640px;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
& .statistics_cont{
|
||||
width: 1014px;
|
||||
height: 203px;
|
||||
background: #FFFFFF;
|
||||
opacity: 0.83;
|
||||
position: absolute;
|
||||
top: 230px;
|
||||
left: 50%;
|
||||
margin-left: -500px;
|
||||
& span{
|
||||
font-size: 48px;
|
||||
font-weight: bold;
|
||||
color: #1338D1;
|
||||
}
|
||||
& p{
|
||||
width: 111px;
|
||||
height: 38px;
|
||||
line-height: 38px;
|
||||
border: 1px solid #182332;
|
||||
margin: 0 auto;
|
||||
font-size: 22px;
|
||||
color: #1E1E1E;
|
||||
}
|
||||
}
|
||||
& .earthImg{
|
||||
width: 1500px;
|
||||
margin-top: -120px;
|
||||
animation: moving 60s linear infinite;
|
||||
}
|
||||
@keyframes moving {
|
||||
0% { transform: rotate(0deg);}
|
||||
50% { transform: rotate(180deg);}
|
||||
100% { transform: rotate(360deg);}
|
||||
}
|
||||
}
|
||||
}
|
||||
// 加入我们
|
||||
.join_us_bg{
|
||||
height: 710px;
|
||||
margin-top: 40px;
|
||||
background-image: url(./image/joinUs.png);
|
||||
& .au_cont{position: relative;}
|
||||
& .joinUsImg{
|
||||
width: 260px;
|
||||
height: 265px;
|
||||
position: absolute;
|
||||
top: 27px;
|
||||
right: 10px;
|
||||
}
|
||||
& .df{
|
||||
display: flex !important;
|
||||
margin-top: 30px;
|
||||
}
|
||||
& .position{
|
||||
width: 540px;
|
||||
&.right{ margin-right: -30px;}
|
||||
& p{
|
||||
justify-content: flex-start;
|
||||
height: 60px;
|
||||
background: #253DA0;
|
||||
line-height: 60px;
|
||||
padding-left: 20px;
|
||||
& img{width: 30px;}
|
||||
& span{
|
||||
font-weight: 500;
|
||||
color: #FFFFFF;
|
||||
line-height: 22px;
|
||||
}
|
||||
}
|
||||
& div{
|
||||
height: 306px;
|
||||
font-size: 14px;
|
||||
line-height: 34px;
|
||||
padding: 20px;
|
||||
background: #FFFFFF;}
|
||||
}
|
||||
& .ant-carousel .slick-dots-bottom{bottom: -30px;}
|
||||
& .ant-carousel .slick-dots li button{
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
border-radius: 10px;
|
||||
background: #466AFF;
|
||||
}
|
||||
& .delivery{
|
||||
height: 60px;
|
||||
line-height: 60px;
|
||||
margin-left: 35px;
|
||||
}
|
||||
}
|
||||
//合作单位
|
||||
.unit{
|
||||
margin-bottom: 60px;
|
||||
& table{
|
||||
width: 1200px;
|
||||
height: 550px;
|
||||
margin-top: 15px;
|
||||
border-collapse: separate;
|
||||
border-spacing: 10px 10px;
|
||||
& td{
|
||||
width: 224px;
|
||||
height: 122px;
|
||||
box-shadow: 0px 1px 8px 1px rgba(0, 0, 0, 0.06);
|
||||
border-radius: 6px;
|
||||
border: 2px solid #FFFFFF;
|
||||
&:hover{ border: 1px solid #466AFF;}
|
||||
}
|
||||
}
|
||||
}
|
||||
.au_cont{
|
||||
width: 1200px;
|
||||
margin: 50px auto;
|
||||
&.pl30 .subtitle{ margin-left: -30px;}
|
||||
}
|
After Width: | Height: | Size: 68 KiB |
After Width: | Height: | Size: 1.7 MiB |
After Width: | Height: | Size: 36 KiB |
After Width: | Height: | Size: 130 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 454 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 33 KiB |
After Width: | Height: | Size: 859 KiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 3.8 KiB |
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 172 KiB |
|
@ -414,7 +414,10 @@ class NewHeader extends Component {
|
|||
if (user_login && (new_link && new_link.indexOf("homes") > -1)) {
|
||||
new_link = new_link.replace(/homes/g, user_login + "/user_activities")
|
||||
}
|
||||
|
||||
//【关于我们】页面
|
||||
if(item.name === "关于我们"){
|
||||
new_link = `/aboutus`;
|
||||
}
|
||||
var waiLian = (new_link && str.filter(item=>new_link.indexOf(item)>-1) );
|
||||
var wl = waiLian && waiLian.length>0;
|
||||
return (
|
||||
|
|
|
@ -1,92 +0,0 @@
|
|||
import React , { useState, useEffect } from 'react';
|
||||
import { Link } from "react-router-dom";
|
||||
import { Dropdown , Menu , Icon , Tooltip , Spin } from 'antd';
|
||||
import { truncateCommitId } from '../common/util';
|
||||
import { getBranch } from '../GetData/getData';
|
||||
import Nodata from '../Nodata';
|
||||
import './list.scss';
|
||||
|
||||
function turnbar(str){
|
||||
if(str && str.length>0 && str.indexOf("/")>-1){
|
||||
return str.replaceAll('/','%2F');
|
||||
}
|
||||
return str;
|
||||
}
|
||||
export default ((props)=>{
|
||||
const [ data , setData ] =useState(undefined);
|
||||
const [ isSpin , setIsSpin ] =useState(true);
|
||||
|
||||
const { projectsId , owner } = props.match.params;
|
||||
const { isManager , isDeveloper , projectDetail } = props;
|
||||
useEffect(()=>{
|
||||
getBranchs(projectsId, owner);
|
||||
},[projectsId])
|
||||
|
||||
async function getBranchs(id,owner){
|
||||
let result = await getBranch(id,owner);
|
||||
setData(result);
|
||||
setIsSpin(false);
|
||||
}
|
||||
|
||||
const list =()=>{
|
||||
if(data && data.length>0){
|
||||
return(
|
||||
<React.Fragment>
|
||||
<ul className="branchUl">
|
||||
{
|
||||
data.map((item,key)=>{
|
||||
return(
|
||||
<li key={key}>
|
||||
<div>
|
||||
<Link to={`/${owner}/${projectsId}/tree/${turnbar(item.name)}`} className="color-blue font-15" style={{"maxWidth":"100px"}}>{item.name}</Link>
|
||||
<p className="f-wrap-alignCenter mt15">
|
||||
<Link to={`/${owner}/${projectsId}/commits/${truncateCommitId(`${item.last_commit.sha}`)}`} className="mr5 commitKey" style={{marginLeft:0}}>{item.last_commit && truncateCommitId(item.last_commit.sha)}</Link>
|
||||
<span className="color-grey-3 hide-1 messages leftPoint">{item.last_commit && item.last_commit.message}</span>
|
||||
<span className="color-grey-8 ml30">最后更新于{item.last_commit && item.last_commit.time_from_now}</span>
|
||||
</p>
|
||||
</div>
|
||||
<span>
|
||||
{
|
||||
(isManager || isDeveloper) && (projectDetail && projectDetail.type!==2) &&
|
||||
<Link to={`/${owner}/${projectsId}/pulls/new/${item.name}`} className="mr20 color-blue mr30">创建合并请求</Link>
|
||||
}
|
||||
<Dropdown overlay={menu(item.zip_url,item.tar_url)} trigger={['click']} placement="bottomRight" className="color-green-file">
|
||||
<a className="ant-dropdown-link">
|
||||
<Tooltip title={`下载分支${item.name}`}><Icon type="cloud-download" className="font-18"/></Tooltip>
|
||||
</a>
|
||||
</Dropdown>
|
||||
</span>
|
||||
</li>
|
||||
)
|
||||
})
|
||||
}
|
||||
</ul>
|
||||
</React.Fragment>
|
||||
)
|
||||
}else if(data && data.length === 0){
|
||||
return ( <Nodata _html="暂无数据"/>)
|
||||
}
|
||||
}
|
||||
const menu =(zip_url,tar_url)=> (
|
||||
<Menu>
|
||||
<Menu.Item key={'0'}><a href={zip_url}>ZIP</a></Menu.Item>
|
||||
<Menu.Item key={'1'}><a href={tar_url}>TAR.GZ</a></Menu.Item>
|
||||
</Menu>
|
||||
)
|
||||
|
||||
return(
|
||||
<React.Fragment>
|
||||
<div className="main">
|
||||
<Spin spinning={isSpin}>
|
||||
<div className="branchTable">
|
||||
<p className="branchTitle bor-bottom-greyE">分支列表</p>
|
||||
<div style={{minHeight:"400px"}}>{list()}</div>
|
||||
</div>
|
||||
</Spin>
|
||||
</div>
|
||||
</React.Fragment>
|
||||
)
|
||||
})
|
||||
|
||||
|
||||
|
|
@ -3,7 +3,6 @@ import { Spin, Tooltip } from 'antd';
|
|||
import { Link, Route, Switch } from 'react-router-dom';
|
||||
import { Content, AlignTop } from '../Component/layout';
|
||||
import DetailBanner from './sub/DetailBanner';
|
||||
import { numFormat } from 'educoder';
|
||||
import '../css/index.scss'
|
||||
import './list.scss';
|
||||
|
||||
|
@ -509,11 +508,6 @@ class Detail extends Component {
|
|||
this.textFunc(projectDetail.forked_from_project_id, projectDetail.fork_info)
|
||||
: ""
|
||||
}
|
||||
{
|
||||
projectDetail && projectDetail.type && projectDetail.type !== 0 ?
|
||||
<span className="color-grey-9">导入于 <a className="color-grey-6" target="_blank" href={projectDetail.mirror_url}>{projectDetail.mirror_url}</a></span>
|
||||
: ""
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
|
@ -576,18 +570,6 @@ class Detail extends Component {
|
|||
}
|
||||
</div>
|
||||
</AlignTop>
|
||||
{/* <div className="mt6" style={{minHeight:"20px"}}>
|
||||
{
|
||||
projectDetail && projectDetail.forked_from_project_id && projectDetail.fork_info ?
|
||||
this.textFunc(projectDetail.forked_from_project_id,projectDetail.fork_info)
|
||||
:""
|
||||
}
|
||||
{
|
||||
projectDetail && projectDetail.type && projectDetail.type !== 0 ?
|
||||
<span className="color-grey-9">镜像自 <a className="color-blue hoverLine" target="_blank" href={projectDetail.mirror_url}>{projectDetail.mirror_url}</a></span>
|
||||
:""
|
||||
}
|
||||
</div> */}
|
||||
{
|
||||
firstSync ? "" :
|
||||
<DetailBanner
|
||||
|
|
|
@ -52,12 +52,6 @@ class IndexItem extends Component {
|
|||
<i className="iconfont icon-banbenku font-18 color-green" />
|
||||
</Tooltip>:""
|
||||
}
|
||||
{
|
||||
item.type && item.type === 1 ?
|
||||
<Tooltip title="该项目是一个导入于其他网站的仓库" className="ml5">
|
||||
<i className="iconfont icon-jingxiang font-18 color-green" />
|
||||
</Tooltip>:""
|
||||
}
|
||||
</AlignCenter>
|
||||
<span className="p-r-tags">
|
||||
{
|
||||
|
|
|
@ -267,6 +267,11 @@ class Setting extends Component {
|
|||
},
|
||||
],
|
||||
})(<Input placeholder="请输入项目名称" />)}
|
||||
{
|
||||
projectDetail && projectDetail.type && projectDetail.type !== 0 ?
|
||||
<span className="color-grey-9">该项目导入于 <a className="color-grey-6" target="_blank" href={projectDetail.mirror_url}>{projectDetail.mirror_url}</a></span>
|
||||
: ""
|
||||
}
|
||||
</Form.Item>
|
||||
<div className="df" style={{ alignItems: "center" }}>
|
||||
<span className="mr20 mb15 font-16">可见性</span>
|
||||
|
|
|
@ -10,14 +10,10 @@ function ListItem({item,key,OIdentifier}) {
|
|||
<Link to={`/${OIdentifier}/${item.identifier}`} className="name">{item.name}</Link>
|
||||
{ item.forked_from_project_id && <i className="iconfont icon-fork font-18 color-orange ml8" /> }
|
||||
{
|
||||
item.type && item.type !== 0 ?
|
||||
item.type === 2 ?
|
||||
item.type && item.type === 2 ?
|
||||
<Tooltip title="该项目是一个镜像" className="ml8">
|
||||
<i className="iconfont icon-banbenku font-18 color-green" />
|
||||
</Tooltip>:
|
||||
<span className="ml8">
|
||||
<i className="iconfont icon-jingxiang font-18 color-green" />
|
||||
</span>:""
|
||||
</Tooltip>:""
|
||||
}
|
||||
</span>
|
||||
<ListCount fork={item.forked_count} parise={item.praises_count}/>
|
||||
|
|
|
@ -153,21 +153,21 @@ class EducoderLogin extends Component {
|
|||
justifyContent: "center",
|
||||
width: "100%",
|
||||
}}>
|
||||
<div className="font-14 color-grey-9 " style={{marginTop:"20px"}}><span className="font-18">©</span> {moment().year()} EduCoder<span className="ml15 mr15">湘ICP备17009477号</span><a href="https://team.trustie.net" style={{"color":"#888"}} target="_blank">Trustie</a> & IntelliDE inside.</div>
|
||||
<div className="font-14 color-grey-9 " style={{marginTop:"20px"}}><span className="font-18">©</span> {moment().year()} GitLink | 确实开源<span className="ml15 mr15">京ICP备13000930号</span><a href="https://team.trustie.net" style={{"color":"#888"}} target="_blank">GitLink</a> & IntelliDE inside.</div>
|
||||
</div>:
|
||||
this.props.mygetHelmetapi===undefined||this.props.mygetHelmetapi.main_site===null|| this.props.mygetHelmetapi.main_site===undefined? <div style={{
|
||||
display: "flex",
|
||||
justifyContent: "center",
|
||||
width: "100%",
|
||||
}}>
|
||||
<div className="font-14 color-grey-9 " style={{marginTop:"20px"}}><span className="font-18">©</span> {moment().year()} EduCoder<span className="ml15 mr15">湘ICP备17009477号</span><a href="https://team.trustie.net" style={{"color":"#888"}} target="_blank">Trustie</a> & IntelliDE inside.</div>
|
||||
<div className="font-14 color-grey-9 " style={{marginTop:"20px"}}><span className="font-18">©</span> {moment().year()} GitLink | 确实开源<span className="ml15 mr15">京ICP备13000930号</span><a href="https://team.trustie.net" style={{"color":"#888"}} target="_blank">GitLink</a> & IntelliDE inside.</div>
|
||||
</div>:this.props.mygetHelmetapi.main_site===true?
|
||||
<div style={{
|
||||
display: "flex",
|
||||
justifyContent: "center",
|
||||
width: "100%",
|
||||
}}>
|
||||
<div className="font-14 color-grey-9 " style={{marginTop:"20px"}}><span className="font-18">©</span> {moment().year()} EduCoder<span className="ml15 mr15">湘ICP备17009477号</span><a href="https://team.trustie.net" style={{"color":"#888"}} target="_blank">Trustie</a> & IntelliDE inside.</div>
|
||||
<div className="font-14 color-grey-9 " style={{marginTop:"20px"}}><span className="font-18">©</span> {moment().year()} GitLink | 确实开源<span className="ml15 mr15">京ICP备13000930号</span><a href="https://team.trustie.net" style={{"color":"#888"}} target="_blank">GitLink</a> & IntelliDE inside.</div>
|
||||
</div>
|
||||
:""
|
||||
}
|
||||
|
|
|
@ -142,12 +142,12 @@ class Trialapplication extends Component {
|
|||
if (this.state.Phonenumberisnotcobool === false) {
|
||||
if (this.state.login.length === 0) {
|
||||
this.setState({
|
||||
Phonenumberisnotco: "请输入正确的手机号或邮箱",
|
||||
Phonenumberisnotco: "请输入正确的邮箱账号",
|
||||
})
|
||||
return
|
||||
} else {
|
||||
this.setState({
|
||||
Phonenumberisnotco: "请输入正确的手机号或邮箱",
|
||||
Phonenumberisnotco: "请输入正确的邮箱账号",
|
||||
})
|
||||
}
|
||||
return;
|
||||
|
|
|
@ -158,12 +158,12 @@ class Trialapplicationysl extends Component {
|
|||
if (this.state.Phonenumberisnotcobool === false) {
|
||||
if (this.state.login.length === 0) {
|
||||
this.setState({
|
||||
Phonenumberisnotco: "请输入正确的手机号或邮箱",
|
||||
Phonenumberisnotco: "请输入正确的邮箱账号",
|
||||
})
|
||||
return
|
||||
} else {
|
||||
this.setState({
|
||||
Phonenumberisnotco: "请输入正确的手机号或邮箱",
|
||||
Phonenumberisnotco: "请输入正确的邮箱账号",
|
||||
})
|
||||
}
|
||||
return;
|
||||
|
|
|
@ -699,7 +699,7 @@ class LoginRegisterComponent extends Component {
|
|||
{/*onBlur={(e) => this.inputOnBlur(e)}*/}
|
||||
<Input style={loginInputsyl} type="text" autoComplete="off" onClick={this.changeTypey}
|
||||
className={Phonenumberisnotco && Phonenumberisnotco !== "" ?" color-grey-9 loginInputzhucheyslass bor-reds":" color-grey-9 loginInputzhuche"}
|
||||
placeholder="输入注册手机号或邮箱" value={this.state.login}
|
||||
placeholder="输入注册的邮箱账号" value={this.state.login}
|
||||
// onBlur={(e) => this.inputOnBlurzhuche(e)}
|
||||
onChange={this.loginInputonChange} style={{marginTop: '10px', height: "38px"}}></Input>
|
||||
{
|
||||
|
|
|
@ -7,6 +7,7 @@ import axios from 'axios';
|
|||
import CheckInputysl1 from './CheckInputysl';
|
||||
import CheckInputysl2 from './CheckInputysl';
|
||||
import Notcompletedysl from './Notcompletedysl';
|
||||
import Educoder from '../login/educoder.png';
|
||||
import './common.css'
|
||||
import './commontwo.css'
|
||||
const { TabPane } = Tabs;
|
||||
|
@ -1039,7 +1040,7 @@ class LoginRegisterComponent extends Component {
|
|||
}
|
||||
</style>
|
||||
|
||||
<Input placeholder="请输入登录手机号码或邮箱" value={this.state.login}
|
||||
<Input placeholder="请输入邮箱账号" value={this.state.login}
|
||||
onChange={this.loginInputonChange}
|
||||
name="username"
|
||||
className={Phonenumberisnotco && Phonenumberisnotco !== "" ?" color-grey-9 loginInputzhucheyslass bor-reds":" color-grey-9 loginInputzhuche"}
|
||||
|
@ -1085,28 +1086,14 @@ class LoginRegisterComponent extends Component {
|
|||
|
||||
<Button className="login_btn font-16" type="primary" style={{height:"46px"}} onClick={() => this.postLogin()}
|
||||
size={"large"}>登录</Button>
|
||||
{this.props.mygetHelmetapi&&this.props.mygetHelmetapi.main_site===true?this.state.isphone===true?<p className="clearfix mb10 textcenter">
|
||||
|
||||
<span className={"startlogin"}>———————— 快速登录 ————————</span>
|
||||
<div className={"mt10"}>
|
||||
<a onClick={()=>this.openweixinlogin()}>
|
||||
<img src={require('./img/WeChat.png')} alt="微信登录"/>
|
||||
</a>
|
||||
<a onClick={()=>this.openqqlogin()} className={"ml10"}>
|
||||
<img src={require('./img/qq.png')} alt="qq登录"/>
|
||||
</a>
|
||||
</div>
|
||||
</p>:<p className="clearfix mb10 textcenter">
|
||||
<span className={"startlogin"}>———————— 快速登录 ————————</span>
|
||||
<div className={"mt10"}>
|
||||
{/*<a onClick={()=>this.openweixinlogin()}>*/}
|
||||
{/*<img src={require('./WeChat.png')} alt="微信登录"/>*/}
|
||||
{/*</a>*/}
|
||||
<a onClick={()=>this.openphoneqqlogin()}>
|
||||
<img src={require('./img/qq.png')} alt="qq登录"/>
|
||||
</a>
|
||||
</div>
|
||||
</p>:""}
|
||||
<p className="clearfix mb10 textcenter">
|
||||
<span className={"startlogin"}>———————— 快速登录 ————————</span>
|
||||
<div className={"mt10"}>
|
||||
<a href="https://data.educoder.net/oauth2?call_url=/oauth/authorize?client_id=d060ea87615f6f731880857bccc73f2620b0421b6780532cdf0df33583dbab4d&redirect_uri=https%3A%2F%2Fforgeplus.trustie.net%2Fapi%2Fauth%2Feducoder%2Fcallback&response_type=code">
|
||||
<img src={Educoder} alt="educoder登录" width="46px"/>
|
||||
</a>
|
||||
</div>
|
||||
</p>
|
||||
</div>
|
||||
}
|
||||
|
||||
|
@ -1115,7 +1102,7 @@ class LoginRegisterComponent extends Component {
|
|||
{
|
||||
weixinlogin===false&&parseInt(tab[0])==1 &&
|
||||
<div style={{width: '340px'}}>
|
||||
<Input placeholder="请使用手机号/邮箱账号进行注册"
|
||||
<Input placeholder="请使用邮箱账号进行注册"
|
||||
className={Phonenumberisnotcos && Phonenumberisnotcos !== "" ?" color-grey-9 loginInputzhucheyslass bor-reds":" color-grey-9 loginInputzhuche"}
|
||||
value={this.state.logins}
|
||||
type="text" autoComplete="off"
|
||||
|
@ -1255,34 +1242,19 @@ class LoginRegisterComponent extends Component {
|
|||
color: '#676767',
|
||||
}}>我已阅读并同意
|
||||
<span>
|
||||
<a href={'https://forge.educoder.net/help?index=4'} target="_blank" className={"color-blue"}>《服务协议条款》</a>
|
||||
<a href={'https://gitlink.org.cn/forums/5029/detail'} target="_blank" className={"color-blue"}>《服务协议条款》</a>
|
||||
</span></span></Checkbox>:""}
|
||||
<Button className=" font-16 mb20" type="primary" style={this.props.mygetHelmetapi&&this.props.mygetHelmetapi.main_site===true?{height:"46px", width: "100%",marginTop:"26px"}:{height:"46px", width: "100%"}} onClick={() => this.postregistered()}
|
||||
size={"large"}>{this.props.weixinlogin?"注册并绑定":"注册"}</Button>
|
||||
|
||||
{this.props.mygetHelmetapi&&this.props.mygetHelmetapi.main_site===true?this.state.isphone===true?<p className="clearfix mb10 textcenter">
|
||||
|
||||
<span className={"startlogin"}>———————— 快速登录 ————————</span>
|
||||
<div className={"mt10"}>
|
||||
<a onClick={()=>this.openweixinlogin()}>
|
||||
<img src={require('./img/WeChat.png')} alt="微信登录"/>
|
||||
</a>
|
||||
<a onClick={()=>this.openqqlogin()} className={"ml10"}>
|
||||
<img src={require('./img/qq.png')} alt="qq登录"/>
|
||||
</a>
|
||||
</div>
|
||||
</p>:<p className="clearfix mb10 textcenter">
|
||||
<span className={"startlogin"}>———————— 快速登录 ————————</span>
|
||||
<div className={"mt10"}>
|
||||
{/*<a onClick={()=>this.openweixinlogin()}>*/}
|
||||
{/*<img src={require('./WeChat.png')} alt="微信登录"/>*/}
|
||||
{/*</a>*/}
|
||||
<a onClick={()=>this.openphoneqqlogin()}>
|
||||
<img src={require('./img/qq.png')} alt="qq登录"/>
|
||||
</a>
|
||||
</div>
|
||||
</p>:""
|
||||
}
|
||||
<p className="clearfix mb10 textcenter">
|
||||
<span className={"startlogin"}>———————— 快速登录 ————————</span>
|
||||
<div className={"mt10"}>
|
||||
<a href="https://data.educoder.net/oauth2?call_url=/oauth/authorize?client_id=d060ea87615f6f731880857bccc73f2620b0421b6780532cdf0df33583dbab4d&redirect_uri=https%3A%2F%2Fforgeplus.trustie.net%2Fapi%2Fauth%2Feducoder%2Fcallback&response_type=code">
|
||||
<img src={Educoder} alt="educoder登录" width="46px"/>
|
||||
</a>
|
||||
</div>
|
||||
</p>
|
||||
</div>
|
||||
}
|
||||
|
||||
|
|