index.vue 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988
  1. <template>
  2. <div class="index" v-if="isData && configInfor" v-loading="loading">
  3. <template v-if="isPc">
  4. <div class="shadow" v-if="LoginOrRegistration != 'signin'">
  5. <LoginNav
  6. :changeLoginReg="changeLoginReg"
  7. :FatheruserMessage="userMessage"
  8. :language_list="language_list"
  9. :configInfor="configInfor"
  10. :projectList="projectList"
  11. />
  12. <div class="logoAndlogin">
  13. <div class="LogoAndText">
  14. <!-- <div class="logo">
  15. <img :src="configInfor.logo_image_url_home" class="logo-img" />
  16. </div> -->
  17. <div class="text">
  18. <p class="p1">{{ configInfor.title }}</p>
  19. <p class="p2">
  20. {{ $t("Key1") }}
  21. <!-- 这里有丰富的教学资源、先进的教学方法,无论您是教师或学生都能在这里尽情汲取养分! -->
  22. </p>
  23. </div>
  24. </div>
  25. <div
  26. :class="['login', language_type == 'AR' ? 'left' : '']"
  27. v-if="LoginOrRegistration == 'login'"
  28. >
  29. <Login
  30. :ForgetType.sync="loginType"
  31. :changeLoginReg="changeLoginReg"
  32. :changeLoginType="changeLoginType"
  33. :getChildSysList="getChildSysList"
  34. :changeEmailTips="changeEmailTips"
  35. />
  36. </div>
  37. <div
  38. v-if="LoginOrRegistration == 'Forget password'"
  39. class="ForgetPassword"
  40. >
  41. <ForgetPassword
  42. :changeLoginReg="changeLoginReg"
  43. :ForgetType.sync="loginType"
  44. :changeLoginType="changeLoginType"
  45. />
  46. </div>
  47. <div class="list" v-if="!LoginOrRegistration">
  48. <div
  49. :class="projectIndex == item.key ? 'Selectproject' : ''"
  50. @mousemove="projectMove(item)"
  51. @mouseout="projectOut"
  52. v-for="(item, i) in projectList"
  53. :key="i"
  54. @click="SelectProject(i)"
  55. >
  56. <div>
  57. <img
  58. v-if="projectIndex == item.key"
  59. :src="item.icon_url_home_selected"
  60. alt=""
  61. />
  62. <img v-else :src="item.icon_url_home_default" alt="" />
  63. <p>{{ item.name }}</p>
  64. </div>
  65. <p>{{ item.desc }}</p>
  66. </div>
  67. </div>
  68. </div>
  69. <div class="bottom" v-if="LoginOrRegistration != 'signin'">
  70. <div>
  71. © 2010-2021 Beijing Language and Culture University Press All rights
  72. reserved.
  73. </div>
  74. <div>
  75. <a target="_blank" href="https://www.blcup.com"
  76. ><img
  77. src="../../assets/login/icon-logo.jpg"
  78. />https://www.blcup.com</a
  79. >
  80. </div>
  81. <div>
  82. <img src="../../assets/login/icon-email.png" />shuzichuban@blcup.com
  83. </div>
  84. </div>
  85. </div>
  86. </template>
  87. <template v-else>
  88. <div class="empty">
  89. <p>{{ $t("Key247") }}...</p>
  90. </div>
  91. </template>
  92. <div class="emailTipsBox" v-if="emailTipShow">
  93. <div class="emailTipsBox-innder">
  94. <img
  95. src="../../assets/login/close-forget.png"
  96. class="close-win"
  97. @click="closeEmailTip"
  98. />
  99. <h2>提示</h2>
  100. <b>您已{{ emailTipDay }}天未修改密码,为了账户安全,请更改密码。</b>
  101. <a @click="changeLoginReg('Forget password')">好的</a>
  102. </div>
  103. </div>
  104. <el-dialog
  105. :visible.sync="showOrgList"
  106. width="494px"
  107. append-to-body
  108. :show-close="false"
  109. :close-on-click-modal="false"
  110. class="login-org-list"
  111. >
  112. <div class="org-list-box">
  113. <h3>请选择你所在的学校</h3>
  114. <h4>Please select your school</h4>
  115. <div class="org-list">
  116. <el-select
  117. v-model="org_id"
  118. :placeholder="'点击选择'"
  119. v-loadmore="SelectScroll"
  120. v-loading="SelectLoading"
  121. >
  122. <el-option
  123. v-for="item in institutionList.org_list"
  124. :key="item.id"
  125. :value="item.id"
  126. :label="item.name"
  127. ></el-option>
  128. </el-select>
  129. <el-button type="primary" @click="getLoginClever(code, 'orgId')"
  130. >确定</el-button
  131. >
  132. </div>
  133. </div>
  134. </el-dialog>
  135. </div>
  136. </template>
  137. <script>
  138. //这里可以导入其它文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
  139. //例如:import 《组件名称》from ‘《组件路径》';
  140. import Cookies from "js-cookie";
  141. import Login from "@/components/login/login";
  142. import Registration from "@/components/login/registration";
  143. import LoginNav2 from "@/components/login/LoginNav2";
  144. import ForgetPassword from "@/components/login/ForgetPassword";
  145. import LoginNav from "@/components/login/LoginNav";
  146. import { getLogin, getContent, getAcsCode, getStaticContent } from "@/api/api";
  147. import { updateWordPack } from "@/utils/i18n";
  148. import { getToken, removeToken, setToken } from "@/utils/auth";
  149. import { getConfigInfor } from "@/utils/index";
  150. import { mapGetters } from "vuex";
  151. import { setI18nLang } from "@/utils/i18n";
  152. export default {
  153. //import引入的组件需要注入到对象中才能使用
  154. components: {
  155. Login,
  156. Registration,
  157. ForgetPassword,
  158. LoginNav,
  159. LoginNav2,
  160. },
  161. props: {},
  162. data() {
  163. //这里存放数据
  164. return {
  165. isPc: false,
  166. LoginOrRegistration: "", //注册 登录 忘记密码
  167. loginType: "teacher",
  168. projectList: [],
  169. projectList1: [
  170. {
  171. id: 0,
  172. name: "教学中心",
  173. img: "project1-1",
  174. selectImg: "project1-1-1",
  175. text: "帮助您快速完成课程及任务安排,快速清晰的完成学习任务。",
  176. },
  177. {
  178. id: 1,
  179. name: "教材中心",
  180. img: "project8-8",
  181. selectImg: "project1-1-1",
  182. text: "帮您快速定制生动、有趣、实用的数字教材。",
  183. },
  184. {
  185. id: 2,
  186. name: "教培中心",
  187. img: "project2-2-2",
  188. selectImg: "project2-2",
  189. text: "名师授课,丰富的课程体系,快速扎实帮您提升教学能力。",
  190. },
  191. {
  192. id: 3,
  193. name: "教研中心",
  194. img: "project6-6-6",
  195. selectImg: "project6-6",
  196. text: "丰富的教学资料和珍贵的文献可以在线查看或下载。",
  197. },
  198. //
  199. {
  200. id: 4,
  201. name: "考试中心",
  202. img: "project5-5-5",
  203. selectImg: "project5-5",
  204. text: "丰富的题库将帮助您快速编写实用、准确、全面的试卷。",
  205. },
  206. {
  207. id: 5,
  208. name: "学习中心",
  209. img: "project4-4-4",
  210. selectImg: "project4-4",
  211. text: "在这里可以很容易地找到数字教科书、学习材料和丰富的课程。",
  212. },
  213. {
  214. id: 6,
  215. // Teacher training center
  216. name: "个人中心",
  217. img: "project3-3-3",
  218. selectImg: "project3-3",
  219. text: "您收集和购买的所有资源都可以在这里轻松找到。",
  220. },
  221. ],
  222. teacherProList: [
  223. //普通教师
  224. {
  225. id: 0,
  226. name: "教学中心",
  227. img: "project1-1",
  228. selectImg: "project1-1-1",
  229. text: "帮助您快速完成课程及任务安排,快速清晰的完成学习任务。",
  230. },
  231. {
  232. id: 2,
  233. name: "教培中心",
  234. img: "project2-2-2",
  235. selectImg: "project2-2",
  236. text: "名师授课,丰富的课程体系,快速扎实帮您提升教学能力。",
  237. },
  238. {
  239. id: 3,
  240. name: "教研中心",
  241. img: "project6-6-6",
  242. selectImg: "project6-6",
  243. text: "丰富的教学资料和珍贵的文献可以在线查看或下载。",
  244. },
  245. {
  246. id: 4,
  247. name: "考试中心",
  248. img: "project5-5-5",
  249. selectImg: "project5-5",
  250. text: "丰富的题库将帮助您快速编写实用、准确、全面的试卷。",
  251. },
  252. {
  253. id: 5,
  254. name: "学习中心",
  255. img: "project4-4-4",
  256. selectImg: "project4-4",
  257. text: "在这里可以很容易地找到数字教科书、学习材料和丰富的课程。",
  258. },
  259. {
  260. id: 6,
  261. // Teacher training center
  262. name: "个人中心",
  263. img: "project3-3-3",
  264. selectImg: "project3-3",
  265. text: "您收集和购买的所有资源都可以在这里轻松找到。",
  266. },
  267. ],
  268. stuProList: [
  269. {
  270. id: 0,
  271. name: "教学中心",
  272. // name: this.$t("teaching"),
  273. img: "project1-1-1",
  274. selectImg: "project1-1",
  275. text: "帮助您快速完成课程及任务安排,快速清晰的完成学习任务。",
  276. },
  277. {
  278. id: 5,
  279. name: "学习中心",
  280. img: "project4-4-4",
  281. selectImg: "project4-4",
  282. text: "在这里可以很容易地找到数字教科书、学习材料和丰富的课程。",
  283. },
  284. {
  285. id: 6,
  286. // Teacher training center
  287. name: "个人中心",
  288. img: "project3-3-3",
  289. selectImg: "project3-3",
  290. text: "您收集和购买的所有资源都可以在这里轻松找到。",
  291. },
  292. ],
  293. projectIndex: null,
  294. userMessage: null,
  295. language_list: null,
  296. configInfor: null,
  297. isData: false,
  298. emailTipShow: false,
  299. emailTipDay: 0,
  300. loading: false,
  301. org_id: "",
  302. showOrgList: false,
  303. SelectLoading: false,
  304. institutionList: {
  305. org_list: [],
  306. }, //机构列表
  307. inPage: 1,
  308. inPageSize: 100,
  309. code: "",
  310. };
  311. },
  312. //计算属性 类似于data概念
  313. computed: {
  314. ...mapGetters(["language_type"]),
  315. },
  316. //监控data中数据变化
  317. watch: {},
  318. //方法集合
  319. methods: {
  320. changeLoginReg(value, userMessage) {
  321. if (value == "signin") {
  322. this.$router.push("/Signup");
  323. } else {
  324. this.LoginOrRegistration = value;
  325. }
  326. this.userMessage = userMessage;
  327. this.emailTipShow = false;
  328. },
  329. changeLoginType(value) {
  330. this.loginType = value;
  331. },
  332. // 鼠标进入
  333. projectMove(item) {
  334. this.projectIndex = item.key;
  335. },
  336. // 鼠标离开
  337. projectOut() {
  338. this.projectIndex = null;
  339. },
  340. async SelectProject(command) {
  341. let _this = this;
  342. _this.LoginNavIndex = command;
  343. let userInfor = getToken();
  344. let user_code = "",
  345. user_type = "",
  346. session_id = "";
  347. if (userInfor) {
  348. userInfor = JSON.parse(getToken());
  349. user_code = userInfor.user_code;
  350. user_type = userInfor.user_type;
  351. session_id = userInfor.session_id;
  352. }
  353. if (!session_id || !user_code || !user_type || !userInfor) {
  354. this.$message.warning(this.$t("Key573"));
  355. this.projectName = this.projectList[0].name;
  356. return;
  357. }
  358. _this.projectName = this.projectList[command].name;
  359. let relative_path = this.projectList[command].relative_path;
  360. location.href = relative_path;
  361. },
  362. // 获取语言列表
  363. getLangList() {
  364. let MethodName = "language_manager-GetLanguageList";
  365. let data = {};
  366. getStaticContent(MethodName, data).then((res) => {
  367. this.language_list = res.language_list;
  368. });
  369. },
  370. // 验证用户是否登录
  371. async Islogin() {
  372. let userInfor = getToken();
  373. let user_code = "",
  374. user_type = "",
  375. session_id = "";
  376. if (userInfor) {
  377. userInfor = JSON.parse(getToken());
  378. user_code = userInfor.user_code;
  379. user_type = userInfor.user_type;
  380. session_id = userInfor.session_id;
  381. let MethodName = "login_control-Is_Effective_User";
  382. getAcsCode(MethodName, {
  383. UserCode: user_code,
  384. SessionID: session_id,
  385. UserType: user_type,
  386. }).then((res) => {
  387. if (res.is_effective == "false") {
  388. this.userMessage = null;
  389. this.isPc = true;
  390. this.LoginOrRegistration = "login";
  391. removeToken();
  392. } else {
  393. this.userMessage = userInfor;
  394. console.log(Cookies.get("GCLSCode"));
  395. if (Cookies.get("GCLSCode")) {
  396. this.$message.warning(this.$t("Key247") + "....");
  397. location.href = `/GCLS-LC/#/EnterSys`;
  398. } else {
  399. if (
  400. userInfor.popedom_code_list.indexOf(2000001) > -1 ||
  401. userInfor.user_type == "STUDENT"
  402. ) {
  403. this.isPc = false;
  404. this.$message.warning(this.$t("Key247") + "....");
  405. location.href = `/GCLS-Learn/#/EnterSys`;
  406. } else {
  407. this.isPc = true;
  408. this.LoginOrRegistration = "";
  409. this.getChildSysList();
  410. }
  411. }
  412. this.getLangList();
  413. }
  414. });
  415. } else {
  416. this.isPc = true;
  417. this.LoginOrRegistration = "login";
  418. }
  419. },
  420. browserRedirect() {
  421. var sUserAgent = navigator.userAgent.toLowerCase();
  422. var bIsIpad = sUserAgent.match(/ipad/i) == "ipad";
  423. var bIsIphoneOs = sUserAgent.match(/iphone os/i) == "iphone os";
  424. var bIsMidp = sUserAgent.match(/midp/i) == "midp";
  425. var bIsUc7 = sUserAgent.match(/rv:1.2.3.4/i) == "rv:1.2.3.4";
  426. var bIsUc = sUserAgent.match(/ucweb/i) == "ucweb";
  427. var bIsAndroid = sUserAgent.match(/android/i) == "android";
  428. var bIsCE = sUserAgent.match(/windows ce/i) == "windows ce";
  429. var bIsWM = sUserAgent.match(/windows mobile/i) == "windows mobile";
  430. if (
  431. (bIsIpad ||
  432. bIsIphoneOs ||
  433. bIsMidp ||
  434. bIsUc7 ||
  435. bIsUc ||
  436. bIsAndroid ||
  437. bIsCE ||
  438. bIsWM) &&
  439. !Cookies.get("GCLSCode")
  440. ) {
  441. location.href = "/GCLS-Mobile/#/";
  442. } else {
  443. this._getConfig();
  444. }
  445. },
  446. getChildSysList() {
  447. let _this = this;
  448. let MethodName = "login_control-GetChildSysList_CanEnter_PC";
  449. let userInfor = getToken();
  450. let user_code = "",
  451. user_type = "",
  452. session_id = "";
  453. if (userInfor) {
  454. userInfor = JSON.parse(getToken());
  455. user_code = userInfor.user_code;
  456. user_type = userInfor.user_type;
  457. session_id = userInfor.session_id;
  458. getContent(MethodName, user_code, user_type, session_id, {})
  459. .then((res) => {
  460. if (res.child_sys_list && res.child_sys_list.length > 0) {
  461. // this.projectList = res.child_sys_list;
  462. if (Cookies.get("GCLSCode")) {
  463. _this.projectList = [];
  464. res.child_sys_list.forEach((item) => {
  465. if (item.key === "GCLS-LC" || item.key === "GCLS-Personal") {
  466. _this.projectList.push(item);
  467. }
  468. });
  469. } else {
  470. _this.projectList = res.child_sys_list;
  471. }
  472. } else {
  473. // this.$message.warning("您没有任何权限,请联系您所在机构的管理员");
  474. this.$message.warning(this.$t("Key652"));
  475. }
  476. })
  477. .catch((err) => {
  478. console.log();
  479. });
  480. }
  481. },
  482. async _getConfig() {
  483. this.configInfor = await getConfigInfor();
  484. let user_name = JSON.parse(localStorage.getItem("user_name"));
  485. if (user_name) {
  486. if (user_name.user_type == "TEACHER") {
  487. this.loginType = "teacher";
  488. } else {
  489. this.loginType = "student";
  490. }
  491. }
  492. this.Islogin();
  493. let type = this.$route.query.type;
  494. if (type && type == "login") {
  495. this.LoginOrRegistration = "login";
  496. }
  497. },
  498. changeEmailTips(data) {
  499. this.emailTipShow = true;
  500. this.emailTipDay = data;
  501. },
  502. closeEmailTip() {
  503. this.emailTipShow = false;
  504. this.browserRedirect();
  505. },
  506. // clever登录
  507. getLoginClever(code, type) {
  508. if (type && !this.org_id) {
  509. return;
  510. }
  511. this.loading = true;
  512. let data = {
  513. code: code,
  514. is_first_login: type ? "false" : "true",
  515. org_id: type ? this.org_id : "",
  516. };
  517. getLogin("login_control-Login_Clever", data)
  518. .then((res) => {
  519. this.loading = false;
  520. if (res.status == -5) {
  521. this.$message.error(res.error);
  522. return;
  523. }
  524. if (res.is_new_email && res.is_new_email === "true") {
  525. this.showOrgList = true;
  526. return;
  527. } else {
  528. this.showOrgList = false;
  529. }
  530. setToken(res);
  531. let isShare = this.$route.query.temporary_link
  532. ? decodeURIComponent(this.$route.query.temporary_link)
  533. : "";
  534. this.$message.success(this.$t("Key442"));
  535. setI18nLang(this.language_type).then(() => {
  536. console.log(Cookies.get("GCLSCode"));
  537. if (Cookies.get("GCLSCode")) {
  538. this.$message.warning(this.$t("Key247") + "....");
  539. location.href = `/GCLS-LC/#/EnterSys`;
  540. } else {
  541. if (isShare) {
  542. location.href = isShare;
  543. } else if (localStorage.getItem("testLink")) {
  544. location.href = localStorage.getItem("testLink");
  545. localStorage.removeItem("testLink");
  546. } else if (
  547. res.popedom_code_list.indexOf(2000001) > -1 ||
  548. res.user_type == "STUDENT"
  549. ) {
  550. this.$message.warning(this.$t("Key247") + "....");
  551. location.href = `/GCLS-Learn/#/EnterSys`;
  552. } else {
  553. this.LoginOrRegistration = "";
  554. this.getChildSysList();
  555. }
  556. }
  557. });
  558. })
  559. .catch((err) => {
  560. this.loading = false;
  561. });
  562. },
  563. // 滚动加载
  564. SelectScroll() {
  565. if (
  566. this.institutionList.org_list.length == this.institutionList.total_count
  567. ) {
  568. // this.$message.warning("No more data");
  569. return;
  570. }
  571. this.SelectLoading = true;
  572. this.inPage++;
  573. let MethodName = "org_manager-PageQueryOrgIndexList_OpenQuery";
  574. let data = {
  575. name: "",
  576. page_capacity: this.inPageSize,
  577. cur_page: this.inPage,
  578. };
  579. getLogin(MethodName, data).then((res) => {
  580. res.org_list.forEach((item) => {
  581. this.institutionList.org_list.push(item);
  582. });
  583. this.SelectLoading = false;
  584. });
  585. },
  586. // 获取机构列表
  587. getinstitutionList() {
  588. this.loading = true;
  589. let MethodName = "org_manager-PageQueryOrgIndexList_OpenQuery";
  590. let data = {
  591. name: "",
  592. page_capacity: this.inPageSize,
  593. cur_page: this.inPage,
  594. };
  595. getLogin(MethodName, data).then((res) => {
  596. this.loading = false;
  597. this.institutionList = res;
  598. });
  599. },
  600. },
  601. //生命周期 - 创建完成(可以访问当前this实例)
  602. async created() {
  603. await updateWordPack({
  604. word_key_list: [
  605. "Key1",
  606. "Key9",
  607. "Key10",
  608. "Key11",
  609. "Key12",
  610. "Key13",
  611. "Key14",
  612. "Key16",
  613. "Key17",
  614. "Key18",
  615. "Key19",
  616. "Key20",
  617. "Key21",
  618. "Key22",
  619. "Key32",
  620. "Key34",
  621. "Key35",
  622. "Key36",
  623. "Key37",
  624. "Key38",
  625. "Key39",
  626. "Key82",
  627. "Key85",
  628. "Key93",
  629. "Key121",
  630. "Key208",
  631. "Key247",
  632. "Key442",
  633. "Key494",
  634. "Key501",
  635. "Key539",
  636. "Key542",
  637. "Key543",
  638. "Key544",
  639. "Key545",
  640. "Key546",
  641. "Key573",
  642. "Key655",
  643. "Key654",
  644. "Key653",
  645. "Key652",
  646. "Key656",
  647. ],
  648. });
  649. this.isData = true;
  650. this.code = window.location.search.split("?")[1]?.split("=")[1]; // 获取识别码
  651. // this.code = this.$route.query.code;
  652. if (this.code) {
  653. this.getLoginClever(this.code);
  654. Cookies.set("GCLSCode", this.code);
  655. } else {
  656. Cookies.remove("GCLSCode");
  657. }
  658. this.getinstitutionList();
  659. },
  660. //生命周期 - 挂载完成(可以访问DOM元素)
  661. mounted() {
  662. this.code = window.location.search.split("?")[1]?.split("=")[1]; // 获取识别码
  663. // this.code = this.$route.query.code;
  664. if (this.code) {
  665. Cookies.set("GCLSCode", this.code);
  666. } else {
  667. Cookies.remove("GCLSCode");
  668. }
  669. this.browserRedirect();
  670. },
  671. //生命周期-创建之前
  672. beforeCreated() {},
  673. //生命周期-挂载之前
  674. beforeMount() {},
  675. //生命周期-更新之前
  676. beforUpdate() {},
  677. //生命周期-更新之后
  678. updated() {},
  679. //生命周期-销毁之前
  680. beforeDestory() {},
  681. //生命周期-销毁完成
  682. destoryed() {},
  683. //如果页面有keep-alive缓存功能,这个函数会触发
  684. activated() {},
  685. };
  686. </script>
  687. <style lang="scss" scoped>
  688. .index {
  689. margin: 0;
  690. padding: 0;
  691. min-height: 100vh;
  692. background: url("../../assets/login/indexBG.png") center bottom no-repeat;
  693. background-size: cover;
  694. position: relative;
  695. min-width: 1260px;
  696. .empty {
  697. background: #fff;
  698. width: 100%;
  699. height: 100vh;
  700. overflow: hidden;
  701. padding-top: 200px;
  702. display: flex;
  703. justify-content: center;
  704. align-items: flex-start;
  705. > p {
  706. color: #3182bd;
  707. font-size: 20px;
  708. font-weight: bold;
  709. }
  710. }
  711. .shadow {
  712. min-height: 100vh;
  713. height: 100%;
  714. background: rgba(0, 0, 0, 0.5);
  715. padding-bottom: 54px;
  716. .logoAndlogin {
  717. width: 1260px;
  718. margin: 0 auto;
  719. position: relative;
  720. min-height: 600px;
  721. // display: flex;
  722. .login {
  723. position: absolute;
  724. top: 0;
  725. right: 15px;
  726. z-index: 1;
  727. &.left {
  728. left: 15px;
  729. right: auto;
  730. }
  731. }
  732. .ForgetPassword {
  733. position: absolute;
  734. top: 0;
  735. right: 100px;
  736. }
  737. }
  738. .LogoAndText {
  739. // width: 700px;
  740. margin-top: 58px;
  741. margin-left: 30px;
  742. display: flex;
  743. .logo {
  744. width: 128px;
  745. height: 128px;
  746. background: #fff;
  747. border-radius: 24px;
  748. color: black;
  749. text-align: center;
  750. line-height: 128px;
  751. display: flex;
  752. justify-content: center;
  753. align-items: center;
  754. overflow: hidden;
  755. > img {
  756. max-height: 100%;
  757. max-width: 100%;
  758. }
  759. }
  760. .text {
  761. margin: 100px 32px 0 32px;
  762. color: white;
  763. p {
  764. width: 533px;
  765. margin: 0;
  766. }
  767. .p1 {
  768. font-weight: 600;
  769. font-size: 40px;
  770. line-height: 48px;
  771. }
  772. .p2 {
  773. width: 533px;
  774. margin-top: 32px;
  775. font-size: 20px;
  776. line-height: 28px;
  777. }
  778. }
  779. }
  780. }
  781. .bottom {
  782. position: absolute;
  783. bottom: 0px;
  784. width: 100%;
  785. background: #2c2c2c;
  786. height: 54px;
  787. display: flex;
  788. align-items: center;
  789. justify-content: center;
  790. > div {
  791. text-align: center;
  792. font-size: 14px;
  793. line-height: 22px;
  794. color: rgba(255, 255, 255, 0.7);
  795. margin: 0 20px;
  796. display: flex;
  797. align-items: center;
  798. a {
  799. display: flex;
  800. align-items: center;
  801. &:hover {
  802. text-decoration: underline;
  803. }
  804. }
  805. img {
  806. width: 16px;
  807. height: 16px;
  808. margin-right: 4px;
  809. border-radius: 2px;
  810. }
  811. }
  812. > :first-child {
  813. // height: 80px;
  814. // line-height: 80px;
  815. > :first-child {
  816. color: white;
  817. }
  818. > :first-child::before {
  819. content: "|";
  820. background: white;
  821. width: 6px;
  822. height: 20px;
  823. position: relative;
  824. right: 5px;
  825. }
  826. }
  827. }
  828. .signin {
  829. background: #e5e5e5;
  830. padding-bottom: 30px;
  831. }
  832. .list {
  833. width: 1248px;
  834. margin: 10px auto;
  835. display: flex;
  836. flex-wrap: wrap;
  837. > div {
  838. width: 368px;
  839. height: 161px;
  840. background: #ffffff;
  841. border-radius: 4px;
  842. // margin: 20px 50px 0 10px;
  843. margin: 10px 24px;
  844. cursor: pointer;
  845. > div {
  846. display: flex;
  847. justify-content: space-around;
  848. align-items: center;
  849. font-weight: bold;
  850. font-size: 20px;
  851. color: #2c2c2c;
  852. padding: 20px 0 0 20px;
  853. img {
  854. width: 56px;
  855. height: 60px;
  856. }
  857. p {
  858. width: 250px;
  859. }
  860. }
  861. > p {
  862. width: 304px;
  863. margin: 16px auto;
  864. font-size: 14px;
  865. color: #666666;
  866. opacity: 0.7;
  867. text-align: left;
  868. line-height: 20px;
  869. }
  870. }
  871. .Selectproject {
  872. background: #ff9900;
  873. box-shadow: 0px 2px 8px rgba(0, 0, 0, 0.15);
  874. }
  875. }
  876. .emailTipsBox {
  877. position: fixed;
  878. left: 0;
  879. top: 0;
  880. z-index: 999;
  881. width: 100%;
  882. height: 100vh;
  883. background: rgba(0, 0, 0, 0.19);
  884. box-sizing: border-box;
  885. overflow: hidden;
  886. overflow-y: auto;
  887. .emailTipsBox-innder {
  888. width: 395px;
  889. min-height: 234px;
  890. position: absolute;
  891. left: 50%;
  892. top: 50%;
  893. margin-left: -186px;
  894. margin-top: -117px;
  895. background: #ffffff;
  896. border-radius: 8px;
  897. padding: 32px 60px;
  898. text-align: center;
  899. img {
  900. width: 14px;
  901. height: 14px;
  902. position: absolute;
  903. right: 9px;
  904. top: 9px;
  905. cursor: pointer;
  906. }
  907. h2 {
  908. font-weight: 700;
  909. font-size: 20px;
  910. line-height: 29px;
  911. color: #ff9900;
  912. }
  913. b {
  914. font-weight: 400;
  915. font-size: 16px;
  916. line-height: 150%;
  917. color: #2c2c2c;
  918. display: block;
  919. }
  920. a {
  921. height: 44px;
  922. padding: 12px;
  923. min-width: 80px;
  924. background: #ff9900;
  925. border-radius: 4px;
  926. font-weight: 700;
  927. font-size: 16px;
  928. line-height: 20px;
  929. color: #ffffff;
  930. display: inline-block;
  931. margin-top: 32px;
  932. }
  933. }
  934. }
  935. }
  936. </style>
  937. <style lang="scss">
  938. .login-org-list {
  939. .el-dialog__header {
  940. padding: 0;
  941. }
  942. .el-dialog__body {
  943. text-align: center;
  944. padding: 40px;
  945. }
  946. h3 {
  947. color: #000;
  948. font-size: 24px;
  949. font-weight: 500;
  950. line-height: 32px; /* 133.333% */
  951. margin: 0;
  952. }
  953. h2 {
  954. color: #000;
  955. font-size: 16px;
  956. font-weight: 500;
  957. line-height: 24px; /* 150% */
  958. margin: 8px 0 24px 0;
  959. }
  960. .org-list {
  961. display: flex;
  962. column-gap: 16px;
  963. .el-select {
  964. flex: 1;
  965. }
  966. .el-button--primary {
  967. background-color: #165dff;
  968. border-color: #165dff;
  969. }
  970. }
  971. }
  972. </style>