Login.vue 39 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489
  1. <template>
  2. <div class="wrap" style="background: #fff">
  3. <div
  4. class="header"
  5. style="
  6. position: relative;
  7. overflow: hidden;
  8. max-width: 1200px;
  9. margin: 0 auto;
  10. height: 75px;
  11. cursor: pointer;
  12. "
  13. >
  14. <img
  15. @click="toView('home')"
  16. src="@/assets/img/login/logosvg.svg"
  17. style="display: block; height: 65px; margin: 5px"
  18. />
  19. <div @click="toView('home')" class="text">
  20. {{ $i18n.locale == "en" ? "Welcome " : "欢迎您" }}
  21. </div>
  22. </div>
  23. <div class="loginImg">
  24. <div class="login">
  25. <div class="option-btns">
  26. <el-button type="text" @click="locale('zh')">{{
  27. $t("common.CN")
  28. }}
  29. </el-button>
  30. <span> / </span>
  31. <el-button type="text" @click="locale('en')">EN</el-button>
  32. <el-button type="primary" @click="toView('home')">{{
  33. $t("common.BackToHome")
  34. }}
  35. </el-button>
  36. </div>
  37. <div class="loginChange">
  38. <span
  39. :class="index == 1 ? 'span1' : 'span2'"
  40. class="cursor"
  41. @click="loginChanges(1)"
  42. >{{ $t("common.PasswordLogin") }}</span
  43. >
  44. <span
  45. :class="index == 2 ? 'span1' : 'span2'"
  46. class="cursor"
  47. @click="loginChanges(2)"
  48. >{{ $t("common.FreeKeyLogin") }}</span
  49. >
  50. </div>
  51. <!--手机-账户登陆-->
  52. <el-form
  53. ref="form"
  54. :model="form"
  55. label-width="0px"
  56. style="margin: 20px auto; width: 310px"
  57. v-if="index == 1 && !isUserPassLogin"
  58. class="login2"
  59. >
  60. <el-form-item
  61. v-if="index == 1 && !isUserPassLogin"
  62. style="margin-bottom: 10px"
  63. >
  64. <GlobalRoaming
  65. ref="GlobalRoaming"
  66. :size="{ width: '300px' }"
  67. v-model="form.phoneUser"
  68. :language="language"
  69. @getAreaCode="getPassAreaCode"
  70. ></GlobalRoaming>
  71. </el-form-item>
  72. <el-form-item style="margin-bottom: 10px">
  73. <el-input
  74. :placeholder="$t('common.EnterPassword')"
  75. id="phonePassWord"
  76. @keyup.enter="passwordInputfocus(2)"
  77. show-password
  78. style="font-size: 12px"
  79. v-model="form.phonePassWord"
  80. ></el-input>
  81. </el-form-item>
  82. <el-form-item style="margin-bottom: 0">
  83. <span
  84. type="text"
  85. class="cursor"
  86. @click="isUserPassLogin = !isUserPassLogin"
  87. style="font-size: 12px; color: rgba(80, 141, 231, 1)"
  88. >
  89. {{ $t("common.EmailOrUserLogin") }}</span
  90. >
  91. </el-form-item>
  92. <!-- 图片验证 -->
  93. <el-form-item style="margin-bottom: 0">
  94. <Captcha
  95. ref="captcha"
  96. @getResult="getResult"
  97. @getValidate="getValidate"
  98. @getCaptchaToken="getCaptchaToken"
  99. ></Captcha>
  100. </el-form-item>
  101. <el-form-item style="margin: 0">
  102. <span
  103. type="text"
  104. style="font-size: 12px; color: #333; margin: 0"
  105. class="cursor"
  106. >{{ $t("common.LoginMeans") }}
  107. <span
  108. style="color: #508de7; margin: 0"
  109. class="cursor"
  110. @click="getAboutMenu('用户协议')"
  111. >《{{
  112. $i18n.locale == "en"
  113. ? "Platform User Agreement"
  114. : "平台用户协议"
  115. }}》</span
  116. >
  117. {{ $t("common.and") }}
  118. <span
  119. style="color: #508de7; margin: 0"
  120. class="cursor"
  121. @click="getAboutMenu('隐私政策')"
  122. >《{{
  123. $i18n.locale == "en" ? "Privacy Policy" : "隐私政策"
  124. }}》</span
  125. >
  126. </span>
  127. </el-form-item>
  128. <el-form-item style="margin-bottom: 0px">
  129. <el-button
  130. type="primary"
  131. @click="login"
  132. style="width: 100%; font-size: 14px; padding-top: 0"
  133. >{{ $t("common.login") }}
  134. </el-button
  135. >
  136. </el-form-item>
  137. <el-form-item style="margin-bottom: 0">
  138. <span
  139. style="font-size: 12px; color: rgba(80, 141, 231, 1)"
  140. class="cursor"
  141. @click="toView('Register', '')"
  142. >{{ $t("common.NewUserRegistration") }}</span
  143. >
  144. <span
  145. style="
  146. font-size: 12px;
  147. color: rgba(80, 141, 231, 1);
  148. float: right;
  149. "
  150. class="cursor"
  151. @click="toView('PasswordReset', '')"
  152. >{{ $t("common.ForgetPassword") }}</span
  153. >
  154. </el-form-item>
  155. </el-form>
  156. <el-form
  157. ref="form"
  158. v-show="loginType == 1"
  159. :model="form"
  160. label-width="0"
  161. style="margin: 20px auto; width: 310px"
  162. v-if="index == 1 && isUserPassLogin"
  163. class="login1"
  164. >
  165. <!--邮箱-账户名登陆-->
  166. <el-form-item style="margin-bottom: 10px">
  167. <el-input
  168. type="loginId"
  169. id="userInput"
  170. @keyup.enter="passwordInputfocus(1)"
  171. v-model="form.account"
  172. :placeholder="$t('common.EnterMorE')"
  173. ></el-input>
  174. </el-form-item>
  175. <el-form-item style="margin-bottom: 0px">
  176. <el-input
  177. :placeholder="$t('common.EnterPassword')"
  178. id="passWordInput"
  179. @keyup.enter="passwordInputfocus(2)"
  180. v-model="form.password"
  181. show-password
  182. ></el-input>
  183. </el-form-item>
  184. <el-form-item style="margin-bottom: 10px">
  185. <span
  186. type="text"
  187. style="font-size: 12px; color: rgba(80, 141, 231, 1)"
  188. class="cursor"
  189. @click="isUserPassLogin = !isUserPassLogin"
  190. >
  191. {{ $t("common.PhoneNumberLogin") }}</span
  192. >
  193. </el-form-item>
  194. <el-form-item style="margin-bottom: 10px">
  195. <Captcha
  196. ref="captcha"
  197. @getResult="getResult"
  198. @getValidate="getValidate"
  199. @getCaptchaToken="getCaptchaToken"
  200. ></Captcha>
  201. </el-form-item>
  202. <el-form-item style="margin-bottom: 10px">
  203. <div
  204. type="text"
  205. style="font-size: 12px; color: #333"
  206. class="cursor"
  207. >
  208. {{ $t("common.LoginMeans") }}
  209. <span
  210. style="color: #508de7; margin: 0"
  211. class="cursor"
  212. @click="getAboutMenu('用户协议')"
  213. >《{{
  214. $i18n.locale == "en"
  215. ? "Platform User Agreement"
  216. : "平台用户协议"
  217. }}》</span
  218. >
  219. {{ $t("common.and") }}
  220. <span
  221. style="color: #508de7; margin: 0"
  222. class="cursor"
  223. @click="getAboutMenu('隐私政策')"
  224. >《{{
  225. $i18n.locale == "en" ? "Privacy Policy" : "隐私政策"
  226. }}》</span
  227. >
  228. </div>
  229. </el-form-item>
  230. <el-form-item style="margin-bottom: 10px">
  231. <el-button
  232. type="primary"
  233. @click="login"
  234. style="width: 100%; font-size: 14px; padding-top: 0"
  235. >{{ $t("common.login") }}
  236. </el-button
  237. >
  238. </el-form-item>
  239. <el-form-item style="margin-bottom: 10px">
  240. <span
  241. style="font-size: 12px; color: rgba(80, 141, 231, 1)"
  242. class="cursor"
  243. @click="toView('Register', '')"
  244. >{{ $t("common.NewUserRegistration") }}</span
  245. >
  246. <span
  247. style="
  248. font-size: 12px;
  249. color: rgba(80, 141, 231, 1);
  250. float: right;
  251. "
  252. class="cursor"
  253. @click="toView('PasswordReset', '')"
  254. >{{ $t("common.ForgetPassword") }}</span
  255. >
  256. </el-form-item>
  257. </el-form>
  258. <!-- 手机-验证码登录 -->
  259. <el-form
  260. ref="form2"
  261. :model="form2"
  262. label-width="0px"
  263. style="margin: 20px auto; width: 310px"
  264. v-if="index == 2 && isTelLogin"
  265. class="login2"
  266. >
  267. <el-form-item>
  268. <GlobalRoaming
  269. ref="GlobalRoaming"
  270. :size="{ width: '300px' }"
  271. v-model="form2.mobile"
  272. :language="language"
  273. @getAreaCode="getPassAreaCode"
  274. ></GlobalRoaming>
  275. </el-form-item>
  276. <el-form-item style="margin-bottom: 0">
  277. <el-input
  278. :placeholder="$t('common.EnterVerification')"
  279. v-model="form2.checkCode"
  280. style="width: 160px"
  281. ></el-input>
  282. <el-button
  283. v-show="show"
  284. @click="sendCode(form2)"
  285. type="primary"
  286. class="getCode cursor"
  287. plain
  288. style="margin-left: 12px; font-size: 14px; border-radius: 4px"
  289. >{{ $t("common.GetVerification") }}
  290. </el-button
  291. >
  292. <span
  293. v-show="!show"
  294. class="count"
  295. style="margin-left: 10px; color: #999"
  296. >{{ count }}{{ $t("common.resend") }}</span
  297. >
  298. </el-form-item>
  299. <el-form-item style="margin-bottom: 0">
  300. <span
  301. type="text"
  302. style="font-size: 12px; color: rgba(80, 141, 231, 1)"
  303. class="cursor"
  304. @click="isTelLogin = !isTelLogin"
  305. >{{ $t("common.EmailLogin") }}</span
  306. >
  307. </el-form-item>
  308. <el-form-item style="margin-bottom: 0">
  309. <span
  310. type="text"
  311. style="font-size: 12px; color: #333; line-height: 25px"
  312. class="cursor"
  313. >
  314. {{ $t("common.LoginMeans") }}
  315. <span
  316. style="color: #508de7; margin: 0"
  317. class="cursor"
  318. @click="getAboutMenu('用户协议')"
  319. >《{{
  320. $i18n.locale == "en"
  321. ? "Platform User Agreement"
  322. : "平台用户协议"
  323. }}》</span
  324. >
  325. {{ $t("common.and") }}
  326. <span
  327. style="color: #508de7; margin: 0"
  328. class="cursor"
  329. @click="getAboutMenu('隐私政策')"
  330. >《{{
  331. $i18n.locale == "en" ? "Privacy Policy" : "隐私政策"
  332. }}》</span
  333. >
  334. </span>
  335. </el-form-item>
  336. <el-form-item style="margin-bottom: 0">
  337. <el-button
  338. type="primary"
  339. @click="onSubmit"
  340. style="width: 100%; font-size: 14px; padding-top: 0"
  341. >{{ $t("common.login") }}
  342. </el-button
  343. >
  344. </el-form-item>
  345. <el-form-item style="margin-bottom: 0px">
  346. <span
  347. style="font-size: 14px; color: rgba(80, 141, 231, 1)"
  348. class="cursor"
  349. @click="toView('Register', '')"
  350. >{{ $t("common.NewUserRegistration") }}</span
  351. >
  352. </el-form-item>
  353. </el-form>
  354. <!-- 邮箱-验证码登录 -->
  355. <el-form
  356. ref="form2"
  357. :model="form2"
  358. label-width="0px"
  359. style="margin: 20px auto; width: 310px"
  360. v-if="index == 2 && !isTelLogin"
  361. class="login2"
  362. >
  363. <el-form-item class="email-login" style="margin-bottom: 10px">
  364. <el-input
  365. :placeholder="$t('common.EnterEmail')"
  366. v-model="form2.email"
  367. class="input-with-select login2_item"
  368. ></el-input>
  369. </el-form-item>
  370. <el-form-item style="margin-bottom: 10px">
  371. <el-input
  372. :placeholder="$t('common.EnterVerification')"
  373. v-model="form2.checkCode"
  374. style="width: 150px"
  375. ></el-input>
  376. <el-button
  377. v-if="show"
  378. @click="sendCode(form2)"
  379. type="primary"
  380. plain
  381. style="margin-left: 12px; font-size: 14px; border-radius: 4px"
  382. class="getCode cursor"
  383. >
  384. {{ $t("common.GetVerification") }}
  385. </el-button>
  386. <span
  387. v-if="!show"
  388. class="count"
  389. style="margin-left: 20px; color: #999"
  390. >{{ count }}{{ $t("common.resend") }}</span
  391. >
  392. </el-form-item>
  393. <el-form-item style="margin-bottom: 0">
  394. <span
  395. type="text"
  396. style="font-size: 12px; color: rgba(80, 141, 231, 1)"
  397. class="cursor"
  398. @click="isTelLogin = !isTelLogin"
  399. >{{ $t("common.PhoneNumberLogin") }}</span
  400. >
  401. </el-form-item>
  402. <el-form-item style="margin-bottom: 0px">
  403. <span style="font-size: 12px; color: #333" class="cursor"
  404. >{{ $t("common.LoginMeans") }}
  405. <span
  406. style="color: #508de7; margin: 0"
  407. class="cursor"
  408. @click="getAboutMenu('用户协议')"
  409. >《{{
  410. $i18n.locale == "en"
  411. ? "Platform User Agreement"
  412. : "平台用户协议"
  413. }}》</span
  414. >
  415. {{ $t("common.and") }}
  416. <span
  417. style="color: #508de7; margin: 0"
  418. class="cursor"
  419. @click="getAboutMenu('隐私政策')"
  420. >《{{
  421. $i18n.locale == "en" ? "Privacy Policy" : "隐私政策"
  422. }}》</span
  423. ></span
  424. >
  425. </el-form-item>
  426. <el-form-item style="margin-bottom: 0">
  427. <el-button
  428. type="primary"
  429. @click="onSubmit"
  430. style="width: 100%; font-size: 14px; padding-top: 0"
  431. >{{ $t("common.login") }}
  432. </el-button
  433. >
  434. </el-form-item>
  435. <el-form-item style="margin-bottom: 0px">
  436. <span
  437. style="font-size: 12px; color: rgba(80, 141, 231, 1)"
  438. class="cursor"
  439. @click="toView('Register', '')"
  440. >{{ $t("common.NewUserRegistration") }}</span
  441. >
  442. </el-form-item>
  443. </el-form>
  444. <!-- 用户协议 -->
  445. <div>
  446. <el-dialog
  447. width="60%"
  448. :title="
  449. $i18n.locale == 'en'
  450. ? '《User Agreement of Global Energy Interconnection Development and Cooperation Platform》'
  451. : '《全球能源互联网发展合作平台用户协议》'
  452. "
  453. :visible.sync="innerVisible1"
  454. append-to-body
  455. >
  456. <!-- <PlatformRegistered ></PlatformRegistered> -->
  457. <iframe
  458. v-if="$i18n.locale == 'zh'"
  459. width="100%"
  460. id="embed"
  461. name="main"
  462. ref="embed1"
  463. height="600px"
  464. :src="srcPdf3"
  465. frameborder="0"
  466. ></iframe>
  467. <iframe
  468. v-if="$i18n.locale == 'en'"
  469. width="100%"
  470. id="embed"
  471. name="main"
  472. ref="embed1"
  473. height="600px"
  474. :src="srcPdf4"
  475. frameborder="0"
  476. ></iframe>
  477. </el-dialog>
  478. <el-dialog
  479. width="60%"
  480. :title="
  481. $i18n.locale == 'en'
  482. ? '《Privacy Policy of Global Energy Interconnection Development and Cooperation Platform》'
  483. : '《全球能源互联网发展合作平台隐私政策》'
  484. "
  485. :visible.sync="innerVisible2"
  486. append-to-body
  487. >
  488. <!-- <LegalNotices></LegalNotices> -->
  489. <iframe
  490. v-if="$i18n.locale == 'zh'"
  491. width="100%"
  492. id="embed"
  493. name="main"
  494. ref="embed2"
  495. height="600px"
  496. :src="srcPdf"
  497. frameborder="0"
  498. ></iframe>
  499. <iframe
  500. v-if="$i18n.locale == 'en'"
  501. width="100%"
  502. id="embed"
  503. name="main"
  504. ref="embed2"
  505. height="600px"
  506. :src="srcPdf2"
  507. frameborder="0"
  508. ></iframe>
  509. <!-- <div>asdasdasdasd</div> -->
  510. </el-dialog>
  511. </div>
  512. </div>
  513. </div>
  514. <div class="footer">
  515. <footers></footers>
  516. <!-- <div class="qcode">
  517. <div class="text">{{$i18n.locale=='en'?"Hosts":"主办单位"}}</div>
  518. <img src="@/assets/logo.gif" style="display:block;height:30px"/>
  519. <div class="titleinfo">
  520. <div class="eng">Global Energy Interconnection</div>
  521. <div class="eng">Development and Cooperation Organization</div>
  522. <div class="chi">全球能源互联网发展合作组织</div>
  523. </div>
  524. </div>
  525. <div class="title">
  526. <span>{{$i18n.locale=='en'?'User Agreement':'用户协议'}}</span>
  527. <span> | </span>
  528. <span>{{$i18n.locale=='en'?'Privacy Policy':'隐私政策'}}</span>
  529. <span> | </span>
  530. <span @click="goPage">{{$i18n.locale=='en'?'Help':'帮助中心'}}</span>
  531. </div>
  532. <div class="footerline"></div>
  533. <div class="crop">{{$i18n.locale=='en'?"2020 GEIDCO All rights reserved. Beijing ICP license No.19029734-3. E-mail: service@geidco.org":
  534. "2020 GEIDCO All rights reserved. 京ICP备19029734号-3. E-mail: service@geidco.org"}}</div> -->
  535. </div>
  536. </div>
  537. </template>
  538. <script>
  539. import footers from "@/components/footersNewBlack";
  540. import Cookies from "js-cookie"; //引入cookie操作依赖
  541. import Base from "@/views/base/Base";
  542. import UpdatePwd from "@/views/UpdatePwd";
  543. import {getHelpColumnTree} from "@/api/operation/help/helpCenterEntity";
  544. var jsSHA = require("jssha");
  545. import Forget from "@/views/Forget";
  546. import {sendTelCode} from "@/api/user";
  547. import {registerByTel} from "@/api/user";
  548. import {getToken} from "@/api/token.js";
  549. import headers from "@/components/loginHeader";
  550. import {getMobileSmsCode, getCaptcha} from "@/api/user";
  551. // import JcRange from "@/components/JcRange";
  552. // import JcRangeImg from "@/components/JcRangeImg";
  553. import JcRangeImg2 from "@/components/JcRangeImg2";
  554. import GlobalRoaming from "@/components/GlobalRoaming";
  555. import Captcha from "@/components/Captcha";
  556. import {
  557. getUserInfoByTel,
  558. sendPhoneCode,
  559. mobileOrEmailCodeLogin,
  560. judgeLogin,
  561. } from "@/api/login";
  562. var bgSuffix = window.bgSuffix;
  563. // import { addGrowth } from "@/utils/toCompleteTask";
  564. export default {
  565. name: "Login",
  566. components: {headers, footers, JcRangeImg2, GlobalRoaming, Captcha},
  567. extends: Base,
  568. data() {
  569. return {
  570. crop: "2020 GEIDCO All rights reserved. 京ICP备19029734号-3. E-mail: service@geidco.org",
  571. links: "友情链接",
  572. titleInfo: "全球能源互联网发展合作组织",
  573. welcome: "欢迎您!",
  574. language: "",
  575. result: true,
  576. validate: "",
  577. captchaToken: "",
  578. loginType: 1,
  579. success: false,
  580. codeFromTel: "",
  581. index: "1",
  582. isTelLogin: true,
  583. isUserPassLogin: false,
  584. isSendCode: false,
  585. ifSelect: false,
  586. show: true,
  587. count: "",
  588. timer: null,
  589. select: "0086",
  590. service: "",
  591. phoneNum: "",
  592. phoneUserNum: "",
  593. backUserData: "",
  594. userName: "",
  595. srcPdf: null,
  596. srcPdf2: null,
  597. srcPdf3: null,
  598. srcPdf4: null,
  599. innerVisible1: false,
  600. innerVisible2: false,
  601. form: {
  602. account: "",
  603. region: "",
  604. password: "",
  605. phoneUser: "",
  606. phonePassWord: "",
  607. date2: "",
  608. delivery: false,
  609. type: [],
  610. resource: "",
  611. desc: "",
  612. },
  613. form2: {
  614. mobile: "",
  615. email: "",
  616. checkCode: "",
  617. },
  618. aboutMenu: [],
  619. fromPath: "",
  620. };
  621. },
  622. watch: {
  623. select(val) {
  624. /* var selects =this.$refs.GlobalRoaming.select;
  625. if(selects == ""){
  626. this.$message.warning("请选择国家区号!");
  627. return;
  628. }
  629. this.select = selects.split(' ').length==2 ? selects.split(' ')[1] : selects;*/
  630. },
  631. "form.phoneUser"(val) {
  632. this.form2.mobile = val;
  633. },
  634. "form2.mobile"(val) {
  635. this.form.phoneUser = val;
  636. },
  637. "form2.phoneNumber"(val) {
  638. if (
  639. this.form2.phoneNumber.length >= 3 &&
  640. !isNaN(this.form2.phoneNumber)
  641. ) {
  642. if (this.form2.phoneNumber.indexOf("@") != -1) {
  643. this.ifSelect = false;
  644. } else {
  645. this.ifSelect = true;
  646. }
  647. } else {
  648. this.ifSelect = false;
  649. }
  650. },
  651. success() {
  652. this.getJcRange();
  653. },
  654. "$i18n.locale"() {
  655. if (this.$i18n.locale == "en" && this.$Cookies.get("token")) {
  656. this.i = 3;
  657. } else if (
  658. this.$i18n.locale == "zh" &&
  659. window.sessionStorage.getItem("token")
  660. ) {
  661. this.i = 2;
  662. } else {
  663. this.i = 1;
  664. }
  665. },
  666. },
  667. beforeRouteEnter(to, from, next) {
  668. next((vm) => {
  669. // 通过 `vm` 访问组件实例,将值传入fromPath
  670. vm.fromPath = from.path;
  671. });
  672. },
  673. mounted() {
  674. let locale = window.localStorage.getItem("locale");
  675. if (!locale) {
  676. window.localStorage.setItem("locale", "en");
  677. }
  678. this.getAboutId();
  679. document.title = this.$t("common.GEIDcpTitleSeptember");
  680. let locales = window.localStorage.getItem("locale");
  681. this.$i18n.locale = locales;
  682. this.language = locales;
  683. this.srcPdf = "/api/file/pub/def/PrivacyPolicy_CN.pdf";
  684. this.srcPdf2 = "/api/file/pub/def/PrivacyPolicy_EN.pdf";
  685. this.srcPdf3 = "/api/file/pub/def/UserAgreement_CN.pdf";
  686. this.srcPdf4 = "/api/file/pub/def/UserAgreement_EN.pdf";
  687. console.log(
  688. window.localStorage.getItem("locale"),
  689. window.localStorage.getItem("userLogin")
  690. );
  691. //if (window.localStorage.getItem('userLogin')) {
  692. if (this.$Cookies.get("token") && this.$i18n.locale == "zh") {
  693. return (this.i = 2);
  694. } else if (this.$i18n.locale == "en" && this.$Cookies.get("token")) {
  695. return (this.i = 3);
  696. } else {
  697. return (this.i = 1);
  698. }
  699. },
  700. methods: {
  701. locale(lang) {
  702. this.$i18n.locale = lang;
  703. let locale = window.localStorage.getItem("locale");
  704. if (locale) {
  705. window.localStorage.setItem("locale", lang);
  706. } else {
  707. window.localStorage["locale"] = lang;
  708. }
  709. this.language = window.localStorage.getItem("locale");
  710. // this.$bus.emit('setLang', window.localStorage.getItem("locale"))
  711. console.log(window.localStorage.getItem("locale"));
  712. },
  713. getPassAreaCode(code) {
  714. this.select = code;
  715. console.log("select=" + this.select);
  716. },
  717. getResult(r) {
  718. this.result = r;
  719. },
  720. getValidate(v) {
  721. this.validate = v;
  722. },
  723. getCaptchaToken(t) {
  724. this.captchaToken = t;
  725. },
  726. JcRangeImg2Success(val) {
  727. this.success = val;
  728. },
  729. goPage() {
  730. this.$router.push({
  731. path: "/helpCenter",
  732. });
  733. },
  734. toView(router, json) {
  735. this.$router.push({name: router, params: json});
  736. if (router == "userCenterView") {
  737. let i = {
  738. label: "用户中心",
  739. value: "userCenterView",
  740. };
  741. if (this.$Cookies.get("token")) {
  742. return (this.i = 2);
  743. } else if (this.$i18n.locale == "en") {
  744. return (this.i = 3);
  745. } else {
  746. return (this.i = 1);
  747. }
  748. this.$nextTick(() => {
  749. Bus.$emit("title", i);
  750. });
  751. // this.BusChange(i)
  752. }
  753. },
  754. mobileLogin() {
  755. if (!this.form.mobile) {
  756. this.$message.warning(this.$t("common.Mobilephonenumbercannotbeempty")); // 手机号不能为空
  757. return;
  758. }
  759. if (!this.form.code) {
  760. this.$message.warning(this.$t("common.Verificationcodecannotbeempty")); //验证码不能为空
  761. return;
  762. }
  763. this.$store
  764. .dispatch("user/MOBILE_LOGIN", {mobile: this.mobile, code: this.code})
  765. .then(() => {
  766. this.$router.push({
  767. name: "Home",
  768. params: {},
  769. });
  770. });
  771. },
  772. async accountPasswordLogin() {
  773. var password = "";
  774. var isPhonePass = "";
  775. if (this.isUserPassLogin) {
  776. if (!this.form.account) {
  777. this.$message.warning(this.$t("common.Accountnumbercannotbeempty")); // 帐号不能为空
  778. return;
  779. }
  780. if (!this.form.password) {
  781. this.$message.warning(this.$t("common.Passwordcannotbeempty")); //密码不能为空
  782. return;
  783. }
  784. password = this.form.password;
  785. isPhonePass = this.form.password;
  786. this.phoneUserNum = this.form.account;
  787. } else {
  788. if (!this.form.phoneUser) {
  789. this.$message.warning(
  790. this.$t("common.Mobilephonenumbercannotbeempty")
  791. ); //手机号不能为空
  792. return;
  793. }
  794. if (!this.form.phonePassWord) {
  795. this.$message.warning(this.$t("common.Passwordcannotbeempty")); //密码不能为空
  796. return;
  797. }
  798. password = this.form.phonePassWord;
  799. isPhonePass = this.form.phonePassWord;
  800. this.phoneUserNum = this.select.concat(this.form.phoneUser);
  801. }
  802. try {
  803. if (this.result) {
  804. let that = this;
  805. this.submitHandler((token) => {
  806. var salt = token;
  807. console.log(password);
  808. var shaObj = new jsSHA("SHA-1", "TEXT");
  809. shaObj.update(password);
  810. password = shaObj.getHash("B64");
  811. password = "{SHA}" + password + salt;
  812. var shaObj2 = new jsSHA("SHA-1", "TEXT");
  813. shaObj2.update(password);
  814. password = "{SHA}" + shaObj2.getHash("B64");
  815. let language = window.localStorage.getItem("locale");
  816. this.$store
  817. .dispatch("user/LOGIN", {
  818. account: this.phoneUserNum,
  819. password: password,
  820. token: salt,
  821. validate: this.validate,
  822. captchaToken: this.captchaToken,
  823. language: language,
  824. })
  825. .then((res) => {
  826. var msg =
  827. this.form.password == "123" || this.form.password == "123456"
  828. ? this.$t("common.Theinitialpasswordmustbechanged") //初始密码必须修改
  829. : "";
  830. if (msg == "") {
  831. // msg = /((?=.*\d)(?=.*\D)(?=.*[a-z])(?=.*[A-Z]))(?!^.*[\u4E00-\u9FA5].*$)^\S{8,20}$/.test(isPhonePass)
  832. // ? "" : this.$t('common.Yourpasswordstrengthistoolow');//您的密码强度过低,请及时修改密码
  833. msg =
  834. /^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\W_]+$)(?![a-z0-9]+$)(?![a-z\W_]+$)(?![0-9\W_]+$)[a-zA-Z0-9\W_]{8,20}$/.test(
  835. isPhonePass
  836. )
  837. ? ""
  838. : this.$t("common.Yourpasswordstrengthistoolow"); //您的密码强度过低,请及时修改密码
  839. console.log("msg:", msg);
  840. }
  841. if (msg != "") {
  842. this.$message.success(
  843. this.$t("common.Loginsuccessful") + msg + "!"
  844. ); //登录成功
  845. // addGrowth("point_task_sign")
  846. window.sessionStorage.setItem("token", "res.data.token");
  847. } else {
  848. console.log("成功");
  849. window.sessionStorage.setItem("token", "res.data.token");
  850. if (sessionStorage.getItem("pathReminder")) {
  851. this.$router.push(
  852. JSON.parse(sessionStorage.getItem("pathReminder"))
  853. );
  854. } else {
  855. const userInfo = JSON.parse(this.$Cookies.get("userInfo"));
  856. if (userInfo.umsUser.userStatusDict == "5") {
  857. this.$alert(
  858. this.$t("common.plaseChangePassworld") + "!",
  859. this.$t("common.Tips"),
  860. {
  861. confirmButtonText: this.$t("common.submit"),
  862. callback: (action) => {
  863. this.$message({
  864. message:
  865. this.$t("common.plaseChangePassworld") + "!",
  866. type: "warning",
  867. duration: 5000,
  868. });
  869. this.$store.commit("modify", "securitySetting");
  870. window.localStorage.setItem(
  871. "router",
  872. "securitySetting"
  873. );
  874. this.$router.push({
  875. name: "securitySetting",
  876. query: {
  877. key: "/securitySetting",
  878. dialogVisible: "true",
  879. },
  880. });
  881. },
  882. }
  883. );
  884. } else {
  885. this.$message.success(
  886. this.$t("common.Loginsuccessful") + "!"
  887. );
  888. let RouterConfig = this.getRouterConfig();
  889. //如果存在路由则返回之前的路由页面,如果不存在路由则直接返回首页
  890. if (RouterConfig) {
  891. this.$router.go(-1);
  892. } else {
  893. this.$router.push({
  894. name: "home",
  895. params: {},
  896. });
  897. }
  898. }
  899. }
  900. }
  901. })
  902. .catch((error) => {
  903. if (error.data >= 2) {
  904. console.log(1);
  905. this.$refs.captcha.captchaInit();
  906. this.result = false;
  907. }
  908. // msg(error.msg)
  909. let msg;
  910. let msgs = new Array();
  911. if (error.msg && error.msg.indexOf(";") != -1) {
  912. msgs = error.msg.split(";");
  913. if (language == "zh") {
  914. msg = msgs[0];
  915. } else {
  916. msg = msgs[1];
  917. }
  918. } else if (error.msg && error.msg.indexOf(";") == -1) {
  919. msg = error.msg;
  920. } else {
  921. msg =
  922. this.$t("common.ThesystemisbusyPleasetryagainlater") + "!";
  923. }
  924. return this.$message({
  925. message: msg,
  926. type: "error",
  927. });
  928. this.resetToken();
  929. });
  930. }, false);
  931. } else {
  932. if ($i18n.locale == "zh") {
  933. alert("请滑动验证码");
  934. } else {
  935. alert("Please slide the captcha.");
  936. }
  937. }
  938. } catch (err) {
  939. console.log(err);
  940. this.resetToken();
  941. }
  942. },
  943. login: function () {
  944. //增加登陆鉴权,如果存在token说明是已经登录的用户,将不会在进行登录请求直接跳转
  945. let token = this.$Cookies.get("token");
  946. if (token) {
  947. this.$router.push({
  948. name: "home",
  949. params: {},
  950. });
  951. } else {
  952. if (this.loginType == 1) {
  953. console.log(1);
  954. this.accountPasswordLogin();
  955. } else {
  956. console.log(2);
  957. this.mobileLogin();
  958. }
  959. }
  960. },
  961. //zzy 免密码登录
  962. onSubmit() {
  963. if (this.isTelLogin) {
  964. var tel = this.verificationTel(this.form2.mobile);
  965. if (!tel) {
  966. return;
  967. }
  968. if (!this.form2.checkCode) {
  969. this.$message.warning(this.$t("common.Verificationcodeerror")); //验证码不能为空
  970. return;
  971. }
  972. if (this.phoneNum == "") {
  973. this.phoneNum = this.select.concat(this.form2.mobile);
  974. }
  975. } else {
  976. var tel = this.verificationTel(this.form2.email);
  977. if (!tel) {
  978. return;
  979. }
  980. if (!this.form2.checkCode) {
  981. this.$message.warning(this.$t("common.Verificationcodeerror")); //验证码不能为空
  982. return;
  983. }
  984. this.phoneNum = this.form2.email;
  985. }
  986. let locale = window.localStorage.getItem("locale");
  987. let myList = new Array(this.phoneNum, locale);
  988. let names = myList.join(",");
  989. try {
  990. this.submitHandler((token) => {
  991. this.$store
  992. .dispatch("user/MOBILE_LOGIN", {
  993. mobile: names,
  994. checkCode: this.form2.checkCode,
  995. service: this.service,
  996. token: token,
  997. language: locale,
  998. })
  999. .then(() => {
  1000. if (sessionStorage.getItem("pathReminder")) {
  1001. this.$router.push(
  1002. JSON.parse(sessionStorage.getItem("pathReminder"))
  1003. );
  1004. } else {
  1005. const userInfo = JSON.parse(this.$Cookies.get("userInfo"));
  1006. if (userInfo.umsUser.userStatusDict == "5") {
  1007. this.$alert(
  1008. this.$t("common.plaseChangePassworld") + "!",
  1009. this.$t("common.Tips"),
  1010. {
  1011. confirmButtonText: this.$t("common.submit"),
  1012. callback: (action) => {
  1013. this.$message({
  1014. message:
  1015. this.$t("common.plaseChangePassworld") + "!",
  1016. type: "warning",
  1017. duration: 5000,
  1018. });
  1019. // this.$router.push({
  1020. // name: "securitySetting",
  1021. // query: {dialogVisible:'true'},
  1022. // });
  1023. this.$store.commit("modify", "securitySetting");
  1024. window.localStorage.setItem(
  1025. "router",
  1026. "securitySetting"
  1027. );
  1028. this.$router.push({
  1029. name: "securitySetting",
  1030. query: {
  1031. key: "/securitySetting",
  1032. dialogVisible: "true",
  1033. },
  1034. });
  1035. },
  1036. }
  1037. );
  1038. } else {
  1039. this.$message.success(
  1040. this.$t("common.Loginsuccessful") + "!"
  1041. );
  1042. let RouterConfig = this.getRouterConfig();
  1043. if (RouterConfig) {
  1044. this.$router.go(-1);
  1045. } else {
  1046. this.$router.push({
  1047. name: "home",
  1048. params: {},
  1049. });
  1050. }
  1051. }
  1052. }
  1053. })
  1054. .catch((error) => {
  1055. if (error.msg) {
  1056. this.$message.error(error.msg);
  1057. } else {
  1058. this.$message.error(this.$t("common.loginfailed") + "!");
  1059. }
  1060. this.resetToken();
  1061. });
  1062. }, false);
  1063. } catch (err) {
  1064. console.log(err);
  1065. this.resetToken();
  1066. }
  1067. },
  1068. // 判断页面上一级,添加白名单,添加白名单
  1069. getRouterConfig() {
  1070. let config = ["/Register", "/PasswordReset", "/helpCenter", "/"];
  1071. return config.indexOf(this.fromPath) == -1;
  1072. },
  1073. // 免密码登录(手机号验证码)
  1074. loginChanges(num) {
  1075. console.log("num:", num);
  1076. this.index = num;
  1077. },
  1078. async sendCode() {
  1079. var loginMethod = this.isTelLogin ? this.form2.mobile : this.form2.email;
  1080. var bool = this.verificationTel(loginMethod);
  1081. if (!bool) {
  1082. return;
  1083. }
  1084. this.getJcRange();
  1085. /*this.success=true;
  1086. this.getJcRange();*/
  1087. // this.ifJcRangeImg2 = true;
  1088. },
  1089. verificationTel: function (name) {
  1090. //验证手机、邮箱合法性
  1091. if (this.isTelLogin) {
  1092. this.service = "TX";
  1093. if (!this.form2.mobile) {
  1094. this.$message.warning(
  1095. this.$t("common.Mobilephonenumbercannotbeempty")
  1096. ); //手机号不能为空
  1097. return;
  1098. }
  1099. const regPhone = /^([0-9]*)$/;
  1100. if (regPhone.test(name)) {
  1101. return true;
  1102. } else {
  1103. this.$message.warning(
  1104. this.$t("common.Pleaseenteravalidmobilephonenumber") + "!"
  1105. ); //请输入合法的手机号
  1106. return false;
  1107. }
  1108. } else {
  1109. this.service = "YJ";
  1110. if (!this.form2.email) {
  1111. this.$message.warning(this.$t("common.Themailboxcannotbeempty")); //邮箱不能为空
  1112. return;
  1113. }
  1114. const regEmail =
  1115. /^[a-zA-Z0-9]+([-_.][a-zA-Z0-9]+)*@[a-zA-Z0-9]+([-_.][a-zA-Z0-9]+)*\.[a-z]{2,}$/;
  1116. if (regEmail.test(name)) {
  1117. return true;
  1118. } else {
  1119. this.$message.warning(this.$t("common.Pleaseenterlegalemail") + "!"); //请输入合法邮箱
  1120. return false;
  1121. }
  1122. }
  1123. },
  1124. async getJcRange() {
  1125. // if (this.success) {
  1126. if (this.isTelLogin) {
  1127. this.phoneNum = this.select.concat(this.form2.mobile);
  1128. } else {
  1129. this.phoneNum = this.form2.email;
  1130. }
  1131. //获取当前登录手机号的用户信息
  1132. // this.isSendCode = false;
  1133. // await getUserInfoByTel(this.phoneNum, this.$i18n.locale)
  1134. // .then((result) => {
  1135. // console.log(result);
  1136. // if (result) {
  1137. // this.isSendCode = true;
  1138. // // this.userInfo = result.data;
  1139. // }
  1140. // })
  1141. // .catch((error) => {});
  1142. //短信:service:“TX" 邮件:service:“YJ
  1143. let locale = window.localStorage.getItem("locale");
  1144. await sendPhoneCode(this.phoneNum, this.service, locale)
  1145. .then((result) => {
  1146. // this.msg(
  1147. // this.$t("common.Verificationcodehasbeensent") + "!",
  1148. // "success"
  1149. // );
  1150. //验证码已发送,请查收
  1151. this.msg(result.msg, "success");
  1152. })
  1153. .catch((error) => {
  1154. this.msg(error.msg, "error");
  1155. // this.msg(this.$t("common.userdoesnotexist") + "!", "error");
  1156. });
  1157. // if (this.isSendCode) {
  1158. //
  1159. // }
  1160. // else {
  1161. // this.msg(this.$t("common.userdoesnotexist") + "!", "error"); //用户不存在
  1162. // return;
  1163. // }
  1164. this.ifJcRangeImg2 = false;
  1165. this.success = false;
  1166. //倒计时
  1167. const TIME_COUNT = 60;
  1168. if (!this.timer) {
  1169. this.count = TIME_COUNT;
  1170. this.show = false;
  1171. this.timer = setInterval(() => {
  1172. if (this.count > 0 && this.count <= TIME_COUNT) {
  1173. this.count--;
  1174. } else {
  1175. this.show = true;
  1176. clearInterval(this.timer);
  1177. this.timer = null;
  1178. }
  1179. }, 1000);
  1180. }
  1181. // }
  1182. },
  1183. msg: function (msg, type) {
  1184. if (msg == "error") {
  1185. msg = this.$t("common.ThesystemisbusyPleasetryagainlater") + "!"; //系统繁忙,请稍后再试
  1186. }
  1187. return this.$message({
  1188. message: msg,
  1189. type: type,
  1190. });
  1191. },
  1192. getCode() {
  1193. const TIME_COUNT = 60;
  1194. if (!this.timer) {
  1195. this.count = TIME_COUNT;
  1196. this.show = false;
  1197. this.timer = setInterval(() => {
  1198. if (this.count > 0 && this.count <= TIME_COUNT) {
  1199. this.count--;
  1200. } else {
  1201. this.show = true;
  1202. clearInterval(this.timer);
  1203. this.timer = null;
  1204. }
  1205. }, 1000);
  1206. }
  1207. },
  1208. handleClose(done) {
  1209. this.dialogVisible = false;
  1210. },
  1211. //用户注册、隐私协议数据连接处理
  1212. getAboutMenu(type) {
  1213. this.aboutMenu.forEach((item) => {
  1214. if (item.name == type) {
  1215. this.toViewAbout("helpCenter", item.id);
  1216. }
  1217. });
  1218. },
  1219. //获取用户注册、隐私协议id信息
  1220. getAboutId() {
  1221. var language = "ZH";
  1222. getHelpColumnTree(language).then((result) => {
  1223. this.aboutMenu = [];
  1224. let menuHelp = result.data;
  1225. for (let i = 0; i <= menuHelp.length - 1; i++) {
  1226. if (
  1227. menuHelp[i].name == "关于我们" ||
  1228. menuHelp[i].name == "About Us"
  1229. ) {
  1230. this.aboutMenu = menuHelp[i].children;
  1231. }
  1232. }
  1233. });
  1234. },
  1235. //跳转帮助中心
  1236. toViewAbout(router, id) {
  1237. this.$store.commit("modify", router);
  1238. window.localStorage.setItem("router", router);
  1239. const {href} = this.$router.resolve({
  1240. name: router,
  1241. query: {
  1242. key: id,
  1243. },
  1244. });
  1245. window.open(href, "_blank");
  1246. },
  1247. },
  1248. };
  1249. </script>
  1250. <!-- Add "scoped" attribute to limit CSS to this component only -->
  1251. <style scoped>
  1252. body,
  1253. html {
  1254. height: 100%;
  1255. }
  1256. .loginChange {
  1257. padding: 0 10px;
  1258. }
  1259. .loginChange span {
  1260. display: inline-block;
  1261. width: 50%;
  1262. height: 34px;
  1263. text-align: center;
  1264. line-height: 40px;
  1265. font-size: 14px;
  1266. }
  1267. .loginChange .span1 {
  1268. color: rgba(80, 141, 231, 1);
  1269. border-bottom: 2px solid #508de7;
  1270. }
  1271. .loginChange .span2 {
  1272. color: rgba(80, 141, 231, 1);
  1273. background: #fff;
  1274. }
  1275. .login1 >>> .el-input__inner {
  1276. height: 34px;
  1277. line-height: 34px;
  1278. font-size: 14px;
  1279. }
  1280. .login1 >>> .el-button,
  1281. .login2 >>> .el-button {
  1282. height: 34px;
  1283. line-height: 34px;
  1284. }
  1285. .login2 >>> .el-input__inner {
  1286. height: 34px;
  1287. line-height: 34px;
  1288. background: #fff;
  1289. border: 1px solid #dcdfe6;
  1290. font-size: 14px;
  1291. }
  1292. .login2 >>> .el-select {
  1293. width: 130px;
  1294. height: 34px;
  1295. border-radius: 4px;
  1296. background: linear-gradient(
  1297. 90deg,
  1298. #dcdfe6 0%,
  1299. #f3f3f3 15%,
  1300. #f3f3f3 85%,
  1301. #dcdfe6 100%
  1302. );
  1303. }
  1304. .login2 >>> .el-input-group__prepend {
  1305. border: none;
  1306. }
  1307. .login2 >>> .el-input-group {
  1308. border: 1px solid #dcdfe6;
  1309. border-radius: 4px;
  1310. overflow: hidden;
  1311. }
  1312. .login2 >>> .el-input-group .el-input__inner {
  1313. border: none;
  1314. }
  1315. .loginImg {
  1316. position: fixed;
  1317. top: 75px;
  1318. bottom: 120px;
  1319. left: 0;
  1320. width: 100%;
  1321. background: url("../assets/img/login/loginbg1.png") no-repeat 20px 50%,
  1322. linear-gradient(90deg, #1b54db 0%, #18d0f3 100%);
  1323. display: flex;
  1324. align-items: center;
  1325. }
  1326. .loginImg .login {
  1327. position: relative;
  1328. left: 85%;
  1329. margin-left: -210px;
  1330. background: #fff;
  1331. z-index: 9999;
  1332. font-family: HiraginoSansGB-W3, HiraginoSansGB;
  1333. padding: 10px;
  1334. border-radius: 5px;
  1335. width: 330px;
  1336. height: 420px;
  1337. }
  1338. .loginImg .option-btns {
  1339. position: relative;
  1340. margin: 10px;
  1341. text-align: right;
  1342. }
  1343. .option-btns .el-button--primary {
  1344. padding: 5px 20px;
  1345. }
  1346. .option-btns .el-button--text {
  1347. color: #333;
  1348. }
  1349. .option-btns .el-button--text:hover {
  1350. color: #999;
  1351. }
  1352. /deep/ .el-form-item {
  1353. margin-bottom: 10px;
  1354. font-size: 14px;
  1355. }
  1356. /deep/ .el-select {
  1357. max-width: 120px !important;
  1358. font-size: 14px;
  1359. }
  1360. /deep/ .el-button.getCode {
  1361. padding-top: 0;
  1362. }
  1363. /deep/ .el-form-item__content {
  1364. line-height: 20px;
  1365. margin: 5px 0;
  1366. }
  1367. .email-login {
  1368. border: 1px solid transparent;
  1369. }
  1370. .wrap .header {
  1371. display: flex;
  1372. align-items: center;
  1373. }
  1374. .wrap .header .text {
  1375. padding: 10px 20px;
  1376. border-left: 1px solid #ddd;
  1377. margin-left: 10px;
  1378. }
  1379. .wrap .footer {
  1380. position: fixed;
  1381. left: 0;
  1382. right: 0;
  1383. bottom: 0;
  1384. height: 120px;
  1385. margin: 0 auto;
  1386. overflow: hidden;
  1387. }
  1388. .wrap .footer .qcode {
  1389. display: inline-flex;
  1390. align-items: center;
  1391. color: #333;
  1392. padding-bottom: 5px;
  1393. margin-left: 23%;
  1394. font-size: 14px;
  1395. }
  1396. .wrap .footer .qcode .titleinfo .eng {
  1397. font-size: 12px;
  1398. }
  1399. .wrap .footer .qcode .titleinfo .chi {
  1400. margin-top: 4px;
  1401. font-size: 12px;
  1402. }
  1403. .wrap .footer .qcode img {
  1404. margin: 0 10px;
  1405. }
  1406. .wrap .footer .info a {
  1407. text-decoration: none;
  1408. color: #333;
  1409. }
  1410. .wrap .footer .title {
  1411. width: 80%;
  1412. height: 30px;
  1413. line-height: 30px;
  1414. cursor: pointer;
  1415. margin: 5px 0 10px 0;
  1416. display: inline-flex;
  1417. align-content: space-around;
  1418. margin-left: 20.5%;
  1419. }
  1420. .wrap .footer .title span {
  1421. padding: 0 20px;
  1422. font-size: 14px;
  1423. }
  1424. .wrap .footer .footerline {
  1425. height: 1px;
  1426. width: 60%;
  1427. margin: 0 auto;
  1428. background: #ccc;
  1429. }
  1430. .wrap .footer .crop {
  1431. height: 30px;
  1432. line-height: 30px;
  1433. flex: 1;
  1434. align-self: flex-end;
  1435. cursor: pointer;
  1436. text-align: center;
  1437. font-size: 12px;
  1438. }
  1439. .wrap .footer .footers2 {
  1440. background: transparent;
  1441. color: #333 !important;
  1442. }
  1443. </style>