index.vue 25 KB

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