login.vue 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803
  1. <template>
  2. <!-- 登录 -->
  3. <div class="login_content">
  4. <div class="title">
  5. <p>{{ $t("Key539") }}</p>
  6. </div>
  7. <!-- 先择老师还是学生 -->
  8. <div class="teacherAndStudent">
  9. <div
  10. @click="selectTS('teacher')"
  11. :class="TorS == 'teacher' ? 'select' : ''"
  12. >
  13. <p>
  14. {{ $t("Key11") }}
  15. <!-- 我是老师</p> -->
  16. </p>
  17. </div>
  18. <div
  19. @click="selectTS('student')"
  20. :class="TorS == 'teacher' ? '' : 'select'"
  21. >
  22. <p>{{ $t("Key12") }}</p>
  23. <!-- 我是学生</p> -->
  24. </div>
  25. </div>
  26. <div class="main" @keydown="downLogin">
  27. <!-- 账号登录 -->
  28. <template v-if="loginType == '密码'">
  29. <div>
  30. <img
  31. v-if="TorS == 'teacher'"
  32. :class="['leftimg', language_type == 'AR' ? 'posRight' : '']"
  33. src="../../assets/login/email.png"
  34. alt=""
  35. />
  36. <img
  37. v-else
  38. :class="['leftimg', language_type == 'AR' ? 'posRight' : '']"
  39. src="../../assets/login/email.png"
  40. alt=""
  41. />
  42. <input
  43. :class="accountError ? 'inputError' : 'input'"
  44. :placeholder="$t('Key13')"
  45. v-model="email_phone"
  46. @input="Changeemail_phone"
  47. />
  48. <!-- <img
  49. @click="showLoginType"
  50. class="rightimg"
  51. src="../../assets/login/Frame3.png"
  52. alt=""
  53. /> -->
  54. <div class="selectLoginType" v-show="ShowloginType">
  55. <div @click="selectLoginType('密码')">
  56. <img src="../../assets/login/lock.png" alt="" />
  57. {{ $t("Key14") }}
  58. </div>
  59. <div @click="selectLoginType('验证码')">
  60. <img src="../../assets/login/phone2.png" alt="" />
  61. {{ $t("Key36") }}
  62. </div>
  63. </div>
  64. </div>
  65. <div>
  66. <img
  67. :class="['leftimg', language_type == 'AR' ? 'posRight' : '']"
  68. src="../../assets/login/yaoshi.png"
  69. alt=""
  70. />
  71. <input
  72. :type="parsswordType"
  73. :class="passwordError ? 'inputError' : 'input'"
  74. :placeholder="$t('Key14')"
  75. v-model="password"
  76. @input="ChangePassword"
  77. />
  78. <img
  79. v-show="parsswordType == 'password'"
  80. @click="lookParssowrd"
  81. :class="['rightimg', language_type == 'AR' ? 'posLeft' : '']"
  82. src="../../assets/login/password1.png"
  83. alt=""
  84. />
  85. <img
  86. v-show="parsswordType == 'text'"
  87. @click="lookParssowrd"
  88. :class="['rightimg', language_type == 'AR' ? 'posLeft' : '']"
  89. src="../../assets/login/password2.png"
  90. alt=""
  91. />
  92. </div>
  93. <div class="verificationCode-box">
  94. <input
  95. type="text"
  96. :class="'input'"
  97. :placeholder="$t('Key36')"
  98. v-model="verificationCode"
  99. @input="ChangeVericationCode"
  100. maxlength="20"
  101. />
  102. <div class="verificationCode-img">
  103. <img
  104. v-if="verificationCodeimg"
  105. :src="verificationCodeimg"
  106. :alt="$t('Key36')"
  107. @click="getVerificationCodeimg"
  108. />
  109. </div>
  110. </div>
  111. <div class="verificationCode-box" v-if="dynamicVerificationShow">
  112. <input
  113. type="text"
  114. :class="'input'"
  115. :placeholder="'邮箱验证码'"
  116. v-model="emailCode"
  117. @input="ChangeVericationCode"
  118. maxlength="20"
  119. />
  120. <div
  121. class="verificationCode-btn"
  122. @click="getVerificationCode"
  123. :class="VerificationCodeShow ? 'waitTime' : 'getVerification'"
  124. >
  125. {{ VerificationCodeShow ? time + "s" : $t("Key93") }}
  126. </div>
  127. </div>
  128. </template>
  129. <!-- 验证码登录 v-show="loginType == '验证码'"
  130. -->
  131. <template v-else>
  132. <div>
  133. <img class="leftimg" src="../../assets/login/singin6.png" alt="" />
  134. <input
  135. :class="accountError ? 'inputError' : 'input'"
  136. :placeholder="$t('Key494')"
  137. v-model="email_phone"
  138. />
  139. <!-- <img
  140. @click="showLoginType"
  141. class="rightimg"
  142. src="../../assets/login/Frame3.png"
  143. alt=""
  144. /> -->
  145. <div class="selectLoginType" v-show="ShowloginType">
  146. <div @click="selectLoginType('密码')">
  147. <img src="../../assets/login/lock.png" alt="" />{{ $t("Key14") }}
  148. <!-- 密码 -->
  149. </div>
  150. <div @click="selectLoginType('验证码')">
  151. <img src="../../assets/login/phone2.png" alt="" />{{
  152. $t("Key36")
  153. }}
  154. <!-- 验证码 -->
  155. </div>
  156. </div>
  157. </div>
  158. <div class="Verification">
  159. <img
  160. :class="['leftimg', language_type == 'AR' ? 'posRight' : '']"
  161. src="../../assets/login/diandian.png"
  162. alt=""
  163. />
  164. <input style="width: 202px" class="input" type="text" />
  165. <button
  166. @click="getVerificationCode"
  167. :class="VerificationCodeShow ? 'waitTime' : 'getVerification'"
  168. >
  169. {{ VerificationCodeShow ? "59s" : $t("Key542") }}
  170. </button>
  171. </div>
  172. </template>
  173. <!-- 记住我 忘记密码 -->
  174. <div class="remeberMeAndForgetparssword">
  175. <el-checkbox v-model="rememberMe">
  176. <!-- 记住我 -->
  177. <span style="color: black">{{ $t("Key19") }}</span>
  178. </el-checkbox>
  179. <!-- 忘记密码? -->
  180. <p @click="cutLoginReg('Forget password')">{{ $t("Key20") }}</p>
  181. </div>
  182. <!-- 登录 -->
  183. <div class="btnLogin">
  184. <img v-if="isLogin" src="../../assets/login/Ellipse87.png" alt="" />
  185. <!-- 登录 -->
  186. <p @click="gotoLogin" v-else>{{ $t("Key9") }}</p>
  187. </div>
  188. <!-- 同意协议 -->
  189. <div class="agreement">
  190. <el-checkbox v-model="ageeemnt">
  191. <!-- 我已阅读并同意 用户协议-->
  192. <span style="color: black">{{ $t("Key21") }} </span>
  193. </el-checkbox>
  194. <span class="userAgree" @click="viewUserAgreement">{{
  195. $t("Key22")
  196. }}</span>
  197. </div>
  198. </div>
  199. <div v-show="shadow" class="shadow"></div>
  200. <el-dialog
  201. :visible.sync="showUseragreement"
  202. width="80%"
  203. append-to-body
  204. :show-close="false"
  205. :close-on-click-modal="false"
  206. class="login-userAgree"
  207. >
  208. <UserAgreement
  209. class="userAgree-login"
  210. :changeAgreement="changeAgreement"
  211. />
  212. </el-dialog>
  213. </div>
  214. </template>
  215. <script>
  216. //这里可以导入其它文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
  217. //例如:import 《组件名称》from ‘《组件路径》';
  218. import { getLogin, getStaticContent } from "@/api/api";
  219. import { setToken } from "@/utils/auth";
  220. import { mapGetters } from "vuex";
  221. import UserAgreement from "./UserAgreement.vue"; // 用户协议
  222. import md5 from "js-md5";
  223. import { setI18nLang } from "@/utils/i18n";
  224. import { getConfigInfor } from "@/utils/index";
  225. export default {
  226. //import引入的组件需要注入到对象中才能使用
  227. components: { UserAgreement },
  228. props: [
  229. "ForgetType",
  230. "changeLoginReg",
  231. "changeLoginType",
  232. "getChildSysList",
  233. "changeEmailTips",
  234. ],
  235. data() {
  236. //这里存放数据
  237. return {
  238. TorS: this.ForgetType, //老师还是学生
  239. ShowloginType: false, //显示登录方式
  240. parsswordType: "password",
  241. loginType: "密码",
  242. VerificationCodeShow: false, //是否已经获取了验证码
  243. isLogin: false, //是否点击登录
  244. accountError: false, //账号错误
  245. passwordError: false, //密码错误
  246. shadow: false, //登录过程中的遮盖层
  247. rememberMe: false, //记住我
  248. ageeemnt: true,
  249. email_phone: "",
  250. password: "",
  251. showUseragreement: false, // 是否显示用户协议
  252. verificationCode: "",
  253. verificationCodeimg: "", // 图形验证码
  254. verificationCodeimgID: "", // 图形验证码ID
  255. verificationCodeLoading: true, // 图形验证码的flag
  256. time: 60, //获取验证码的时间
  257. emailCode: "",
  258. dynamicVerificationShow:
  259. getConfigInfor() &&
  260. getConfigInfor().is_enable_dynamic_verification_code_for_user_login ==
  261. "true"
  262. ? true
  263. : false,
  264. };
  265. },
  266. //计算属性 类似于data概念
  267. computed: {
  268. ...mapGetters(["language_type"]),
  269. },
  270. //监控data中数据变化
  271. watch: {},
  272. //方法集合
  273. methods: {
  274. // 选择老师或者学生
  275. selectTS(user_type) {
  276. this.TorS = user_type;
  277. this.changeLoginType(this.TorS);
  278. },
  279. // 显示选择登录方式
  280. showLoginType() {
  281. this.ShowloginType = !this.ShowloginType;
  282. },
  283. // 去除前后空格
  284. Changeemail_phone() {
  285. this.email_phone = this.email_phone.trim();
  286. },
  287. ChangePassword() {
  288. this.password = this.password.trim();
  289. },
  290. ChangeVericationCode() {
  291. this.verificationCode = this.verificationCode.trim();
  292. this.emailCode = this.emailCode.trim();
  293. },
  294. //选择密码登录和验证码登录
  295. selectLoginType(type) {
  296. if (this.loginType != type) {
  297. this.loginType = type;
  298. }
  299. this.ShowloginType = false;
  300. },
  301. // 查看密码
  302. lookParssowrd() {
  303. if (this.parsswordType == "text") {
  304. this.parsswordType = "password";
  305. } else {
  306. this.parsswordType = "text";
  307. }
  308. },
  309. // 获取验证码
  310. getVerificationCode() {
  311. let this_ = this;
  312. if (this_.time != 60) {
  313. return;
  314. }
  315. let timer;
  316. if (this_.email_phone) {
  317. this_.VerificationCodeShow = true;
  318. timer = setInterval(() => {
  319. this_.time--;
  320. if (this_.time == 0) {
  321. this_.VerificationCodeShow = false;
  322. clearInterval(timer);
  323. timer = null;
  324. this_.time = 60;
  325. }
  326. }, 1000);
  327. let MethodName = "user_manager-SendVerificationCode";
  328. let data = {
  329. verification_type: "EMAIL",
  330. phone_or_email: this_.email_phone,
  331. };
  332. getLogin(MethodName, data)
  333. .then((res) => {})
  334. .catch(() => {
  335. this_.VerificationCodeShow = false;
  336. clearInterval(timer);
  337. timer = null;
  338. this_.time = 60;
  339. });
  340. } else {
  341. this_.$message.warning(this.$t("Key546"));
  342. }
  343. },
  344. // 登录
  345. gotoLogin() {
  346. let flag = true;
  347. if (this.loginType == "密码") {
  348. if (!this.email_phone || !this.password) {
  349. // this.$message.warning("账号密码不能为空");
  350. this.$message.warning(this.$t("Key653"));
  351. flag = false;
  352. return;
  353. }
  354. if (!this.verificationCode) {
  355. this.$message.warning(this.$t("Key37"));
  356. flag = false;
  357. return;
  358. }
  359. if (!this.ageeemnt) {
  360. this.$message.warning(this.$t("Key543"));
  361. flag = false;
  362. return;
  363. }
  364. }
  365. if (!flag) {
  366. return;
  367. }
  368. this.isLogin = true;
  369. let MethodName = "login_control-Login";
  370. let data = {
  371. user_type: this.TorS.toUpperCase(),
  372. user_name: this.email_phone,
  373. is_password_md5: "true",
  374. password: md5(this.password).toUpperCase(),
  375. verification_code_image_text: this.verificationCode,
  376. verification_code_image_id: this.verificationCodeimgID,
  377. dynamic_verification_type: "EMAIL",
  378. phone_or_email: this.email_phone,
  379. dynamic_verification_code: this.emailCode,
  380. };
  381. if (this.rememberMe) {
  382. } else {
  383. localStorage.removeItem("user_name");
  384. }
  385. getLogin(MethodName, data)
  386. .then((res) => {
  387. this.isLogin = false;
  388. if (res.status == -5) {
  389. this.$message.error(res.error);
  390. return;
  391. }
  392. this.changeLoginReg("", res);
  393. if (this.rememberMe) {
  394. let obj = {
  395. email_phone: this.email_phone,
  396. user_type: res.user_type,
  397. };
  398. localStorage.setItem("user_name", JSON.stringify(obj));
  399. }
  400. setToken(res);
  401. let isShare = this.$route.query.temporary_link
  402. ? decodeURIComponent(this.$route.query.temporary_link)
  403. : "";
  404. // if (
  405. // res.last_update_password_days >=
  406. // res.sys_recommend_password_update_days &&
  407. // !isShare
  408. // ) {
  409. // this.changeEmailTips(res.last_update_password_days);
  410. // } else {
  411. this.$message.success(this.$t("Key442"));
  412. setI18nLang(this.language_type).then(() => {
  413. if (isShare) {
  414. location.href = isShare;
  415. } else if (localStorage.getItem("testLink")) {
  416. location.href = localStorage.getItem("testLink");
  417. localStorage.removeItem("testLink");
  418. } else if (
  419. res.popedom_code_list.indexOf(2000001) > -1 ||
  420. res.user_type == "STUDENT"
  421. ) {
  422. this.$message.warning(this.$t("Key247") + "....");
  423. location.href = `/GCLS-Learn/#/EnterSys`;
  424. } else {
  425. this.getChildSysList();
  426. }
  427. });
  428. // }
  429. })
  430. .catch((err) => {
  431. this.isLogin = false;
  432. setTimeout(() => {
  433. this.getVerificationCodeimg();
  434. }, 1000);
  435. });
  436. },
  437. // 回车登录
  438. downLogin(e) {
  439. if (e.keyCode == 13) {
  440. this.gotoLogin();
  441. }
  442. },
  443. // 切换忘记密码
  444. cutLoginReg(value) {
  445. this.changeLoginReg(value);
  446. },
  447. viewUserAgreement() {
  448. this.showUseragreement = true;
  449. },
  450. changeAgreement(flag) {
  451. this.ageeemnt = flag;
  452. this.showUseragreement = false;
  453. },
  454. // 图形验证码
  455. getVerificationCodeimg() {
  456. if (!this.verificationCodeLoading) return;
  457. this.verificationCodeLoading = false;
  458. let MethodName = "login_control-GetVerificationCodeImage";
  459. let data = {};
  460. getStaticContent(MethodName, data)
  461. .then((res) => {
  462. if (res) {
  463. this.verificationCodeLoading = true;
  464. this.verificationCodeimgID = res.image_id;
  465. this.verificationCodeimg =
  466. "data:image/jpeg;base64," + res.image_content_base64;
  467. } else {
  468. this.verificationCodeLoading = true;
  469. }
  470. })
  471. .catch(() => {
  472. this.verificationCodeLoading = true;
  473. });
  474. },
  475. },
  476. //生命周期 - 创建完成(可以访问当前this实例)
  477. created() {
  478. this.getVerificationCodeimg();
  479. let user_name = JSON.parse(localStorage.getItem("user_name"));
  480. if (user_name) {
  481. this.email_phone = user_name.email_phone;
  482. this.rememberMe = true;
  483. }
  484. },
  485. //生命周期 - 挂载完成(可以访问DOM元素)
  486. mounted() {},
  487. //生命周期-创建之前
  488. beforeCreated() {},
  489. //生命周期-挂载之前
  490. beforeMount() {},
  491. //生命周期-更新之前
  492. beforUpdate() {},
  493. //生命周期-更新之后
  494. updated() {},
  495. //生命周期-销毁之前
  496. beforeDestory() {},
  497. //生命周期-销毁完成
  498. destoryed() {},
  499. //如果页面有keep-alive缓存功能,这个函数会触发
  500. activated() {},
  501. };
  502. </script>
  503. <style lang="scss" scoped>
  504. /* @import url(); 引入css类 */
  505. .login_content {
  506. width: 462px;
  507. background: #fff;
  508. border-radius: 8px;
  509. margin-left: 30px;
  510. padding-bottom: 47px;
  511. .title {
  512. height: 100px;
  513. line-height: 100px;
  514. p {
  515. text-align: center;
  516. font-size: 20px;
  517. color: #ff9900;
  518. font-weight: bold;
  519. margin: 0;
  520. }
  521. }
  522. .teacherAndStudent {
  523. margin: 0 auto;
  524. width: 334px;
  525. height: 40px;
  526. background: #f0f0f0;
  527. border-radius: 4px;
  528. display: flex;
  529. align-items: center;
  530. justify-content: center;
  531. > div {
  532. width: 164px;
  533. height: 36px;
  534. border-radius: 2px;
  535. display: flex;
  536. align-items: center;
  537. justify-content: center;
  538. cursor: pointer;
  539. color: #a6a6a6;
  540. }
  541. .select {
  542. background: #ffffff;
  543. box-shadow: 0px 2px 8px rgba(0, 0, 0, 0.1);
  544. border-radius: 2px;
  545. font-weight: bold;
  546. color: #ff9900;
  547. }
  548. }
  549. .main {
  550. > div {
  551. margin: 24px auto;
  552. width: 334px;
  553. position: relative;
  554. .input {
  555. width: 334px;
  556. height: 48px;
  557. border: 1px solid #d9d9d9;
  558. box-sizing: border-box;
  559. border-radius: 4px;
  560. outline: none;
  561. padding-left: 45px;
  562. padding-right: 45px;
  563. }
  564. .inputError {
  565. width: 334px;
  566. height: 48px;
  567. border: 1px solid #ff0000;
  568. box-sizing: border-box;
  569. border-radius: 4px;
  570. outline: none;
  571. padding-left: 45px;
  572. padding-right: 45px;
  573. }
  574. .input:focus {
  575. border: 1px solid #ff9900;
  576. }
  577. .leftimg {
  578. width: 24px;
  579. position: absolute;
  580. top: 10px;
  581. left: 10px;
  582. &.posRight {
  583. right: 10px;
  584. left: auto;
  585. }
  586. }
  587. .rightimg {
  588. width: 24px;
  589. position: absolute;
  590. right: 10px;
  591. top: 10px;
  592. cursor: pointer;
  593. &.posLeft {
  594. left: 10px;
  595. right: auto;
  596. }
  597. }
  598. .selectLoginType {
  599. position: absolute;
  600. right: 0;
  601. z-index: 1;
  602. width: 132px;
  603. height: 96px;
  604. background: #ffffff;
  605. box-shadow: 0px 2px 8px rgba(0, 0, 0, 0.15);
  606. border-radius: 4px;
  607. transition: all 2s;
  608. > div {
  609. width: 132px;
  610. height: 40px;
  611. font-size: 16px;
  612. line-height: 40px;
  613. text-align: center;
  614. margin-top: 8px;
  615. cursor: pointer;
  616. img {
  617. width: 24px;
  618. position: relative;
  619. top: 5px;
  620. }
  621. }
  622. > div:hover {
  623. background: #f6f6f6;
  624. }
  625. }
  626. &.verificationCode-box {
  627. display: flex;
  628. > .input {
  629. width: 164px;
  630. flex: 1;
  631. padding-left: 10px;
  632. }
  633. > div {
  634. &.verificationCode-img {
  635. width: 128px;
  636. height: 48px;
  637. margin-left: 5px;
  638. background: #c5c5c5;
  639. border-radius: 4px;
  640. overflow: hidden;
  641. > img {
  642. height: 48px;
  643. cursor: pointer;
  644. }
  645. }
  646. &.verificationCode-btn {
  647. width: 128px;
  648. margin-left: 5px;
  649. background: #ff9900;
  650. border-radius: 4px;
  651. color: #fff;
  652. font-weight: 700;
  653. font-size: 16px;
  654. display: flex;
  655. align-items: center;
  656. justify-content: center;
  657. cursor: pointer;
  658. &.waitTime {
  659. background: #f0f0f0;
  660. color: #6c6c6c;
  661. }
  662. }
  663. }
  664. }
  665. }
  666. .Verification {
  667. button {
  668. width: 116px;
  669. height: 48px;
  670. margin-left: 16px;
  671. border-radius: 4px;
  672. cursor: pointer;
  673. box-sizing: border-box;
  674. }
  675. .getVerification {
  676. background: #ff9900;
  677. border: 1px solid #ff9900;
  678. color: white;
  679. }
  680. .waitTime {
  681. background: #f0f0f0;
  682. color: black;
  683. border: none;
  684. }
  685. }
  686. .remeberMeAndForgetparssword {
  687. display: flex;
  688. justify-content: space-between;
  689. p {
  690. margin: 0;
  691. color: #ff9900;
  692. cursor: pointer;
  693. font-size: 16px;
  694. font-weight: bold;
  695. }
  696. }
  697. .btnLogin {
  698. position: relative;
  699. width: 334px;
  700. height: 48px;
  701. background: #ff9900;
  702. border-radius: 4px;
  703. color: white;
  704. line-height: 48px;
  705. text-align: center;
  706. cursor: pointer;
  707. z-index: 2;
  708. p {
  709. width: 100%;
  710. height: 100%;
  711. font-weight: bold;
  712. }
  713. img {
  714. vertical-align: middle;
  715. animation: rotated 1s linear infinite;
  716. }
  717. }
  718. .agreement {
  719. font-size: 16px;
  720. span {
  721. color: #ff9900;
  722. cursor: pointer;
  723. }
  724. }
  725. }
  726. @keyframes rotated {
  727. 0% {
  728. transform: rotateZ(0deg);
  729. }
  730. 100% {
  731. transform: rotateZ(360deg);
  732. }
  733. }
  734. .shadow {
  735. top: 0;
  736. left: 0;
  737. position: absolute;
  738. width: 100%;
  739. height: 100%;
  740. background: #ffffff;
  741. opacity: 0.6;
  742. border-radius: 8px;
  743. }
  744. }
  745. </style>
  746. <style lang="scss">
  747. .login_content {
  748. input::-ms-reveal {
  749. display: none;
  750. }
  751. .el-checkbox__inner::after {
  752. box-sizing: content-box;
  753. content: "";
  754. border: 1px solid black;
  755. border-left: 0;
  756. border-top: 0;
  757. height: 7px;
  758. left: 4px;
  759. position: absolute;
  760. top: 1px;
  761. }
  762. .el-checkbox__input.is-checked .el-checkbox__inner,
  763. .el-checkbox__input.is-indeterminate .el-checkbox__inner {
  764. background-color: white;
  765. border-color: black;
  766. }
  767. .remeberMeAndForgetparssword {
  768. .el-checkbox__label {
  769. padding: 0 10px;
  770. }
  771. }
  772. .agreement {
  773. .el-checkbox__label {
  774. padding: 0 10px;
  775. }
  776. }
  777. }
  778. .login-userAgree {
  779. .el-dialog {
  780. border-radius: 8px;
  781. height: 70%;
  782. }
  783. .el-dialog__header {
  784. padding: 0;
  785. }
  786. .el-dialog__body {
  787. padding: 0;
  788. border-radius: 8px;
  789. box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
  790. height: 100%;
  791. }
  792. }
  793. .v-modal {
  794. opacity: 0.1;
  795. }
  796. </style>