c1b736b7bea6536bcf5411882a2e30ffdb55ba69.svn-base 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676
  1. <template>
  2. <div :class="[isFj?'login fjB':'login otherB']">
  3. <div class="login_content" style="
  4. box-shadow: 0px 0px 13px 11px rgba(0, 0, 0, 0.08);">
  5. <h2 style="text-align:center;margin-bottom: 20px;font-size:28px">
  6. <img v-if="isFj" src="../../assets/images/titleFujian.png" alt="">
  7. <span v-else>{{loginT}}</span>
  8. </h2>
  9. <div class="login_content_left">
  10. <div class="province_logo">
  11. <!-- <p>福建水利监督</p> -->
  12. <img v-if="isSd" src="../../assets/images/shandong_logo.png" alt="">
  13. <img v-else src="../../assets/images/province_logo.png" alt="">
  14. </div>
  15. <span class="left_hr"></span>
  16. <div class="download_app">
  17. <p>扫码下载APP</p>
  18. <img :src="qrCodeDownImg" alt="">
  19. <div class="llq_xz">
  20. <svg t="1590743046917" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2942" width="28" height="28"><path d="M382.4 514.4c0 69.6 57.6 127.2 127.2 127.2S636.8 584 636.8 514.4s-57.6-127.2-127.2-127.2-127.2 57.6-127.2 127.2z" fill="#BBBBBB" p-id="2943"></path><path d="M509.6 320h400.8C838.4 171.2 687.2 70.4 512 70.4c-127.2 0-242.4 52.8-321.6 139.2l136.8 240C353.6 375.2 425.6 320 509.6 320z" fill="#F75B60" p-id="2944"></path><path d="M548 704c-12 2.4-26.4 4.8-38.4 4.8-69.6 0-129.6-36-163.2-88.8L144.8 267.2c-48 69.6-74.4 153.6-74.4 244.8 0 213.6 151.2 391.2 352.8 432l-9.6-4.8L548 704z" fill="#00D19C" p-id="2945"></path><path d="M934.4 387.2H656c28.8 33.6 48 79.2 48 127.2 0 38.4-9.6 72-28.8 103.2l-194.4 336c9.6 0 21.6 2.4 31.2 2.4 244.8 0 441.6-196.8 441.6-441.6 0-45.6-7.2-88.8-19.2-127.2z" fill="#FCA253" p-id="2946"></path></svg>
  21. <a href="http://pdc.goldenwater.com.cn/tools/chrome.exe" class="llq_text">浏览器下载</a>
  22. </div>
  23. </div>
  24. </div>
  25. <div class="login_content_right">
  26. <div class="system_type_tab">
  27. <!-- <span :class="{'tabActived': tabActived == 2}" @click="changeSystem(2)" v-if="tabHideOrShow">水利稽察</span>-->
  28. <span :class="{'tabActived': tabActived == 1}" @click="changeSystem(1)" style="border-right: 0px">水利督查</span>
  29. </div>
  30. <div class="login_types">
  31. <div class="item" v-show="loginType==1 || loginType==2">
  32. <i class="el-icon-s-custom"></i>
  33. <el-input v-model="account" :placeholder="accountPlaceHolder" @keyup.enter.native="toLogin" size="medium" v-if="loginType==1 || loginType==2" maxlength="11"></el-input>
  34. </div>
  35. <!--短信验证码图片验证-->
  36. <div class="item authCode" style="display:flex;flex-direction:row;justify-content:flex-start;align-items:center;"
  37. v-show="loginType==1 || loginType==2">
  38. <i><svg t="1580975211684" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1275" width="18" height="18"><path d="M511.92574 1023.975247C357.959389 1023.975247 71.50029 794.49855 71.50029 577.448076V163.162251c0-10.049894 8.416167-18.16902 18.837362-18.379424l24.95146-0.420808c0.953007 0 98.766196-1.967898 199.599304-41.895185 103.481725-40.843164 170.179849-87.936569 170.885322-88.419261l14.691162-10.421195a19.86463 19.86463 0 0 1 11.398956-3.601625 19.480951 19.480951 0 0 1 11.324696 3.539741l14.975826 10.507832c0.680719 0.482692 67.440727 47.526591 170.798685 88.419262 100.932121 39.927287 198.74531 41.895185 199.747825 41.895184l24.753432 0.420809c10.433572 0.210404 18.824985 8.32953 18.824986 18.379423l0.210404 414.285825c0 217.02572-286.508606 446.527171-440.6111 446.527171z m372.625797-812.568556c-37.860375-2.846645-117.516921-12.624251-200.267646-45.385419-84.557726-33.417134-146.725972-71.005221-172.358151-87.602398-25.557919 16.535293-87.763295 54.135757-172.296268 87.602398-82.602205 32.686908-162.03597 42.464514-200.416167 45.385419v366.041385c0 170.216979 249.576484 378.281957 372.712435 378.281957 47.724618 0 140.723264-38.726745 232.137691-123.767163 88.12222-81.909108 140.723264-177.07368 140.723264-254.490041z m-407.948946 435.660414a33.305744 33.305744 0 0 1-23.899439 10.049894 33.738929 33.738929 0 0 1-23.998453-10.037517l-101.674724-102.330691a34.345388 34.345388 0 0 1 0-48.269193 33.664668 33.664668 0 0 1 47.935022 0l77.738155 78.183717 196.269967-197.69329a33.590408 33.590408 0 0 1 47.910269 0 34.18449 34.18449 0 0 1 0 48.269194z m0 0" p-id="1276"></path></svg></i>
  39. <el-input style="flex-basis:100%;" v-model="vCode" placeholder="请输入图片验证码" size="medium" v-if="loginType==1 || loginType==2" maxlength="4">
  40. <img slot="append" :src="imgUrl" alt="" style="width:112px; height: 34px; cursor: pointer; vertical-align: middle;" @click="imgClick">
  41. </el-input>
  42. </div>
  43. <div class="item" v-show="loginType==1 || loginType==2">
  44. <i class="el-icon-lock"></i>
  45. <el-input v-model="password" :type="passType" :placeholder="passwordPlaceHolder" @keyup.enter.native="toLogin" size="medium" v-if="loginType==1 || loginType==2" :maxlength="maxLength">
  46. <el-button v-if="loginType==1" slot="append" size="medium" plain style="flex-basis:20%" @click="getMessage" :disabled='messageDisable'>{{messageButton}}</el-button>
  47. <img src="../../assets/images/no_eye.png" v-if="loginType==2 && passType=='text'" @click="passType='password'" slot="append" style="width: 20px;height:20px;cursor:pointer;"/> <img src="../../assets/images/eye-fill.png" v-if="loginType==2 && passType=='password'" @click="passType='text'" slot="append" style="width: 20px;height:20px;cursor:pointer;"/>
  48. </el-input>
  49. </div>
  50. <div class="item" v-show="loginType==3" style="padding-top: 20px;display: flex;justify-content: center;">
  51. <div style="width:132px;height:132px;position: relative">
  52. <div v-if="!isExpire" style="width:132px;height:132px;position: absolute;z-index: 1000;left:0;top:0;background: rgba(0,0,0,0.7);display: flex;align-items: center;justify-content: center;">
  53. <div style="color:white;opacity: 1;width: 100%;height:60px;text-align: center;">
  54. <span style="font-size: 14px;font-weight: bold;line-height: 30px;">二维码失效</span>
  55. <div style="color:white;opacity: 1;width: 60px;height:25px;margin: 0 auto;background: #ff2213;color:white;line-height: 25px;font-size: 14px;font-weight: bold;cursor: pointer;" @click="getQrCode">刷新</div>
  56. </div>
  57. </div>
  58. <canvas id="canvas" style="width:200px;height:200px;"></canvas>
  59. </div>
  60. </div>
  61. <div class="item" v-if="loginType != 3">
  62. <el-button type="primary" round @click="toLogin">登 录</el-button>
  63. </div>
  64. </div>
  65. <p class="login_text"><span></span> 登录方式 <span></span></p>
  66. <div class="item login_item" style="display:flex;flex-direction:row;justify-content:center;align-items:center;">
  67. <div :class="{'item': true,'active': loginType == 3}">
  68. <el-button type="text" icon="iconfont watericon1-erweima1 loginTypeButton" size="default" @click="loginTypeChange(3)"></el-button>
  69. <p>二维码</p>
  70. </div>
  71. <div :class="{'item': true,'active': loginType == 1}">
  72. <el-button type="text" icon="iconfont watericon1-yanzhengma loginTypeButton" size="default" @click="loginTypeChange(1)"></el-button>
  73. <p>验证码</p>
  74. </div>
  75. <div :class="{'item': true,'active': loginType == 2}">
  76. <el-button type="text" icon="icon iconfont watericon1-mima loginTypeButton" size="default" @click="loginTypeChange(2)"></el-button>
  77. <p>密码</p>
  78. </div>
  79. </div>
  80. </div>
  81. </div>
  82. </div>
  83. </template>
  84. <script>
  85. import {sendMessage,loginWithMessage,qrCodeSubmit,qrCodeLogin,loginWithAccount} from '@api/loginAPI.js'
  86. import {ipPath} from '../../utils/component'
  87. import request from '@util/gw_ajax_request'
  88. const QRCode = require('qrcode');
  89. const uuidv4 = require('uuid/v4');
  90. import aes from '../../utils/aes';
  91. export default {
  92. components:{
  93. },
  94. computed: {
  95. changeData() {
  96. const { account, vCode} = this;
  97. return {
  98. account,
  99. vCode
  100. }
  101. }
  102. },
  103. data(){
  104. return{
  105. isExpire:true,
  106. isFj:false,
  107. isSd:false,
  108. tabHideOrShow:true,
  109. qrCodeDownImg:"",
  110. loginT:"水利监督",
  111. passType:"password",
  112. account: '',
  113. password: '',
  114. vCode: '',
  115. messageButton:'获取验证码',
  116. loginTitle:'APP扫码登录',
  117. messageDisable: true,
  118. loginType:3,
  119. accountPlaceHolder:'请输入手机号码',
  120. passwordPlaceHolder:'请输入验证码',
  121. qrUuid:'',
  122. pubKey: '',
  123. rememberPwd: false,
  124. tabActived: 1,
  125. countTimeNum: 0,
  126. imgUrl: null,
  127. maxLength:6,
  128. }
  129. },
  130. mounted(){
  131. this.$nextTick(()=>{
  132. ipPath(this);
  133. this.imgClick();
  134. this.getQrCode();
  135. localStorage.setItem('ownApp',this.tabActived);
  136. })
  137. },
  138. methods:{
  139. toLogin(){
  140. if(this.loginType == 1){
  141. this.toLoginWithMessage();
  142. }
  143. if(this.loginType == 2){
  144. this.toLoginWithUserName();
  145. }
  146. },
  147. toLoginWithMessage(){
  148. if(!this.account){
  149. this.$message('请输入手机号');
  150. return
  151. }
  152. if (!this.vCode) {
  153. this.$message('请输入图片验证码');
  154. return
  155. }
  156. if(!this.password){
  157. this.$message('请输入验证码');
  158. return
  159. }
  160. try{
  161. loginWithMessage(this.account,this.password).then((res)=>{
  162. console.log(res)
  163. if(res.success == true){
  164. localStorage.setItem("isSplit","1");
  165. let token = res.data.token;
  166. let userid = res.data.guid;
  167. let loginName = res.data.persName;
  168. let guid = res.data.orgId;
  169. let orgNm = res.data.orgNm;
  170. let accessToken = res.accessToken; //token是否过期
  171. localStorage.setItem('token',token);
  172. localStorage.setItem('userid',userid);
  173. localStorage.setItem('account',loginName);
  174. localStorage.setItem('guid',guid);
  175. localStorage.setItem('orgNm',orgNm);
  176. localStorage.setItem('accessToken',accessToken);
  177. let persType = res.data.persType;
  178. let isAdmin = res.data.permission;
  179. localStorage.setItem('persType',persType);
  180. let allNode = JSON.stringify(res.data.allNode);//当前用户所在组信息
  181. let allOrg = JSON.stringify(res.data.allOrg);
  182. localStorage.setItem('isAdmin',isAdmin);
  183. let orgId=res.data.orgId;
  184. localStorage.setItem('orgId',orgId);
  185. localStorage.setItem('allOrg',allOrg);
  186. localStorage.setItem("currentOrgId",res.data.defaultOrg.orgId); //省级当前的机构id
  187. localStorage.setItem("currentRlcode",res.data.defaultOrg.rlcode); //省级当前的行政区划编码
  188. localStorage.setItem("departId",res.data.departId); //人员所属责任处室id-浙江
  189. localStorage.setItem("departNm",res.data.departNm); //人员所属责任处室名称-浙江
  190. // 改变全局adcode状态
  191. this.$store.commit('changeAdCode',res.data.defaultOrg.rlcode);
  192. localStorage.setItem("currentOrgNm",res.data.defaultOrg.orgNm); //省级当前的机构名称
  193. localStorage.setItem('allNode',allNode);
  194. this.$message.success({
  195. message: '登录成功',
  196. duration: 700
  197. })
  198. this.$router.push('/')
  199. }else{
  200. this.$message(res.message)
  201. }
  202. },(err)=>{
  203. this.$message.error({
  204. message: '用户名或验证码错误',
  205. duration: 700
  206. })
  207. })
  208. }catch(e){
  209. }
  210. },
  211. toLoginWithUserName(){
  212. if(!this.account){
  213. this.$message('请输入用户名');
  214. return
  215. }
  216. if (!this.vCode) {
  217. this.$message('请输入图片验证码');
  218. return
  219. }
  220. if(!this.password){
  221. this.$message('请输入密码');
  222. return
  223. }
  224. try{
  225. loginWithAccount(this.account,this.vCode,this.imgcodeid,aes.encrypt(this.password)).then((res)=>{
  226. if(res.success == true){
  227. localStorage.setItem("isSplit","1");
  228. let token = res.data.token;
  229. let userid = res.data.guid;
  230. let loginName = res.data.persName;
  231. let guid = res.data.orgId;
  232. let orgNm = res.data.orgNm;
  233. let accessToken = res.accessToken; //token是否过期
  234. localStorage.setItem('token',token);
  235. localStorage.setItem('userid',userid);
  236. localStorage.setItem('account',loginName);
  237. localStorage.setItem('guid',guid);
  238. localStorage.setItem('orgNm',orgNm);
  239. localStorage.setItem('accessToken',accessToken);
  240. let persType = res.data.persType;
  241. let isAdmin = res.data.permission;
  242. localStorage.setItem('persType',persType);
  243. let allNode = JSON.stringify(res.data.allNode);//当前用户所在组信息
  244. let allOrg = JSON.stringify(res.data.allOrg);
  245. localStorage.setItem('isAdmin',isAdmin);
  246. let orgId=res.data.orgId;
  247. localStorage.setItem('orgId',orgId);
  248. localStorage.setItem('allOrg',allOrg);
  249. localStorage.setItem("currentOrgId",res.data.defaultOrg.orgId); //省级当前的机构id
  250. localStorage.setItem("currentRlcode",res.data.defaultOrg.rlcode); //省级当前的行政区划编码
  251. localStorage.setItem("departId",res.data.departId); //人员所属责任处室id-浙江
  252. localStorage.setItem("departNm",res.data.departNm); //人员所属责任处室名称-浙江
  253. // 改变全局adcode状态
  254. this.$store.commit('changeAdCode',res.data.defaultOrg.rlcode);
  255. localStorage.setItem("currentOrgNm",res.data.defaultOrg.orgNm); //省级当前的机构名称
  256. localStorage.setItem('allNode',allNode);
  257. this.$message.success({
  258. message: '登录成功',
  259. duration: 700
  260. })
  261. this.$router.push('/')
  262. }else{
  263. this.$message(res.message)
  264. }
  265. },(err)=>{
  266. this.$message.error({
  267. message: '用户名或验证码错误',
  268. duration: 700
  269. })
  270. })
  271. }catch(e){
  272. }
  273. },
  274. getMessage:function(){
  275. try{
  276. sendMessage(this.account,this.imgcodeid,this.vCode).then(
  277. (res) => {
  278. this.messageDisable = true;
  279. if(res.success){
  280. this.messageButton = '已发送(' + 60 + ')';
  281. this.countTime(59);
  282. }else{
  283. this.$message.warning(res.message);
  284. this.messageDisable = false;
  285. this.messageButton = '发送验证码';
  286. }
  287. },
  288. (err) => {
  289. this.messageDisable = false;
  290. this.messageButton = '发送验证码'
  291. },
  292. )
  293. }catch(e){
  294. _self.messageDisable = false;
  295. _self.messageButton = '发送验证码'
  296. }
  297. },
  298. countTime:function(countTime){
  299. var _self = this;
  300. setTimeout(function(){
  301. if(countTime>0){
  302. _self.messageButton = '已发送(' + countTime+ ')';
  303. countTime--;
  304. _self.countTime(countTime);
  305. }else{
  306. _self.messageDisable = false;
  307. _self.messageButton = '发送验证码'
  308. }
  309. },1000);
  310. },
  311. loginTypeChange: function (loginType) {
  312. console.log(loginType, "走这里了2");
  313. this.account = "";
  314. this.vCode = "";
  315. this.password = "";
  316. if(this.tabActived == '2'){
  317. localStorage.setItem('ownApp','2');
  318. }else{
  319. localStorage.setItem('ownApp','1');
  320. }
  321. if(this.loginType!=loginType){
  322. this.getQrCode();
  323. }
  324. this.loginType = loginType;
  325. if(this.loginType == 1){
  326. this.loginTitle = '短信验证码登录';
  327. this.accountPlaceHolder = '请输入手机号码';
  328. this.passwordPlaceHolder = '请输入验证码';
  329. this.passType = "text";
  330. this.maxLength = 6;
  331. }else if(this.loginType == 2){
  332. this.loginTitle = '手机密码登录';
  333. this.accountPlaceHolder = '请输入手机号码';
  334. this.passwordPlaceHolder = '请输入密码';
  335. this.maxLength = 30;
  336. this.passType = "password";
  337. }else{
  338. this.loginTitle = 'APP扫码登录';
  339. }
  340. },
  341. getQrCode:function(){
  342. this.isExpire = true;
  343. var canvas = document.getElementById('canvas');
  344. let _self = this;
  345. this.qrUuid = uuidv4();
  346. console.log(this.qrUuid);
  347. qrCodeSubmit(this.qrUuid).then((res) =>{
  348. if(res.success){
  349. _self.qrUuid = res.data.key;
  350. setTimeout(function(){
  351. QRCode.toCanvas(canvas, _self.qrUuid, function (error) {
  352. if (error) console.error(error);
  353. console.log('success!');
  354. _self.toLoginWithQrCode();
  355. })
  356. },1000);
  357. }
  358. },(err)=>{});
  359. },
  360. toLoginWithQrCode:function(){
  361. var _self = this;
  362. let qrCode = _self.qrUuid;
  363. let logtyp = this.loginType;
  364. let timer = setTimeout(function () {
  365. _self.countTimeNum ++;
  366. if(_self.countTimeNum > 20) {
  367. _self.isExpire = false;
  368. clearTimeout(timer);
  369. _self.countTimeNum = 0;
  370. }else {
  371. if (logtyp == 3) {
  372. console.log('调用二维码登录');
  373. qrCodeLogin(qrCode).then(
  374. (res) => {
  375. console.log(res);
  376. if (res.success) {
  377. localStorage.setItem("isSplit","1");
  378. let userid = res.data.guid;
  379. let loginName = res.data.persName;
  380. let guid = res.data.orgId;
  381. let orgNm = res.data.orgNm;
  382. let isAdmin = res.data.permission;
  383. let allNode = JSON.stringify(res.data.allNode);//当前用户所在组信息
  384. let allOrg = JSON.stringify(res.data.allOrg);
  385. let persType = res.data.persType;
  386. let accessToken = res.accessToken; //token是否过期
  387. localStorage.setItem('userid', userid);
  388. localStorage.setItem('account', loginName);
  389. localStorage.setItem('guid', guid);
  390. localStorage.setItem('orgNm', orgNm);
  391. localStorage.setItem('isAdmin', isAdmin);
  392. localStorage.setItem('persType', persType);
  393. localStorage.setItem('accessToken', accessToken);
  394. let orgId = res.data.orgId;
  395. localStorage.setItem('orgId', orgId);
  396. localStorage.setItem('allOrg', allOrg);
  397. localStorage.setItem("currentOrgId", res.data.defaultOrg.orgId); //省级当前的机构id
  398. localStorage.setItem("currentRlcode", res.data.defaultOrg.rlcode); //省级当前的行政区划编码
  399. localStorage.setItem("departId",res.data.departId); //人员所属责任处室id-浙江
  400. localStorage.setItem("departNm",res.data.departNm); //人员所属责任处室名称-浙江
  401. // 改变全局adcode状态
  402. _self.$store.commit('changeAdCode', res.data.defaultOrg.rlcode)
  403. localStorage.setItem("currentOrgNm", res.data.defaultOrg.orgNm); //省级当前的机构名称
  404. localStorage.setItem('allNode', allNode);
  405. _self.$message.success({
  406. message: '登录成功',
  407. duration: 700
  408. });
  409. _self.$router.push('/')
  410. } else {
  411. _self.toLoginWithQrCode();
  412. }
  413. }
  414. );
  415. }
  416. }
  417. },3000);
  418. },
  419. // 选择登入系统
  420. changeSystem(val){
  421. this.tabActived = val;
  422. localStorage.setItem('ownApp',val)
  423. },
  424. imgClick(){
  425. this.imgUrl = null;
  426. request.get(`/bis/insp/getCaptchaImage`)
  427. .then(res =>{
  428. this.$nextTick(()=>{
  429. this.imgcodeid = res.data.imgCodeId;
  430. this.imgUrl = "data:image/jpg;base64," + res.data.img;
  431. })
  432. })
  433. .catch(err =>{
  434. })
  435. }
  436. },
  437. watch:{
  438. changeData: {
  439. handler: function(newval , oldval) {
  440. if(newval){
  441. for(var key in newval){
  442. if(!newval[key]) {
  443. this.messageDisable = true;
  444. return;
  445. }else{
  446. this.messageDisable = false;
  447. }
  448. }
  449. }
  450. },
  451. deep: true
  452. }
  453. }
  454. }
  455. </script>
  456. <style lang="scss" scoped>
  457. @import url("/src/assets/iconfont/iconfont.css");
  458. .fjB{
  459. background-image: url('../../assets/images/login_bj1.png');
  460. }
  461. .otherB{
  462. background-image: url('../../assets/images/login_bj.jpg');
  463. }
  464. .login{
  465. width: 100%;
  466. height: 100vh;
  467. /*background-image: url('../../assets/images/login_bj1.png');*/
  468. background-size: 100% 100%;
  469. background-color: #0077c6;
  470. overflow: hidden;
  471. font-family: '微软雅黑';
  472. .llq_xz {
  473. display: flex;
  474. flex-direction: row;
  475. justify-content: center;
  476. align-items: center;
  477. margin-top: 10px;
  478. }
  479. .llq_text{
  480. margin-left: 4px;
  481. text-decoration: none;
  482. font-size: 14px;
  483. }
  484. }
  485. .login > p{
  486. font-size: 28px;
  487. color: #333;
  488. text-align: center;
  489. margin-top: 22vh;
  490. letter-spacing: 5px;
  491. }
  492. .login .login_content{
  493. width: 860px;
  494. margin: 40px auto;
  495. margin-top:20vh;
  496. color: #333;
  497. background-color: rgba(255, 255, 255, 0.85);
  498. padding: 50px 30px;
  499. border-radius: 10px;
  500. overflow: hidden;
  501. box-sizing: border-box;
  502. .login_content_left{
  503. width: 35%;
  504. float: left;
  505. text-align: center;
  506. border-right: dashed 1px #B2B2B2;
  507. padding: 10px 10px 10px 0;
  508. .left_hr{
  509. display: block;
  510. height: 1px;
  511. margin: 0 10px 20px;
  512. background-color: #B2B2B2;
  513. }
  514. .province_logo{
  515. margin-bottom: 20px;
  516. font-size: 20px;
  517. font-weight: bold;
  518. img{
  519. width: 130px;
  520. }
  521. }
  522. .download_app{
  523. font-size: 14px;
  524. }
  525. .download_app img{
  526. width: 110px;
  527. }
  528. }
  529. .login_content_right{
  530. width: 52%;
  531. float: right;
  532. padding: 10px 30px;
  533. text-align: center;
  534. .system_type_tab{
  535. width: 100%;
  536. border: solid 1px #D7D7D7;
  537. border-radius: 8px;
  538. padding: 8px 20px;
  539. font-size: 18px;
  540. color: #999;
  541. box-sizing: border-box;
  542. margin-bottom: 20px;
  543. span{
  544. display: inline-block;
  545. width: 48%;
  546. &:first-child{
  547. /*border-right: solid 1px #D6D3D6;*/
  548. }
  549. }
  550. span{
  551. cursor: pointer;
  552. }
  553. .tabActived{
  554. color: #3D9AFE;
  555. font-weight: bold;
  556. }
  557. }
  558. .login_types{
  559. width: 100%;
  560. height: 210px;
  561. .item{
  562. position: relative;
  563. i{
  564. position: absolute;
  565. top: 10px;
  566. left: 2px;
  567. color: #666;
  568. font-size: 18px;
  569. }
  570. }
  571. .el-input-group__append{
  572. background-color: transparent;
  573. border: none;
  574. border-bottom: 1px solid #DCDFE6;
  575. }
  576. }
  577. .item{
  578. width: 100%;
  579. }
  580. .login_text{
  581. font-size: 12px;
  582. color: #666;
  583. span{
  584. display: inline-block;
  585. width: 30%;
  586. height: 1px;
  587. margin: 0 10px;
  588. background-color: #aaa;
  589. vertical-align: middle;
  590. }
  591. }
  592. .login_item{
  593. p{
  594. font-size: 12px;
  595. color: #666;
  596. }
  597. .el-button--text{
  598. color: #666;
  599. }
  600. .item:hover{
  601. .el-button--text,p{
  602. color: #66b1ff;
  603. }
  604. }
  605. .item.active .el-button--text,.item.active p{
  606. color: #66b1ff;
  607. }
  608. }
  609. input:-webkit-autofill{
  610. -webkit-box-shadow: 0 0 0px 1000px transparent inset !important;
  611. background-color:transparent;
  612. background-image: none;
  613. transition: background-color 50000s ease-in-out 0s; //背景色透明 生效时长 过渡效果 启用时延迟的时间
  614. }
  615. .el-input__inner{
  616. padding-left: 30px;
  617. background: transparent;
  618. border-top: none;
  619. border-left: none;
  620. border-right: none;
  621. }
  622. }
  623. }
  624. .login .login_content .login_content_left p{
  625. text-align: center;
  626. margin-bottom: 10px;
  627. }
  628. .login .login_content .item{
  629. margin-bottom: 20px;
  630. width:80%;
  631. }
  632. .login .el-input{
  633. width: 100%;
  634. }
  635. .login .el-button--mini, .el-button--mini.is-round{
  636. width: 100%;
  637. padding: 10px;
  638. font-size: 16px;
  639. }
  640. .loginTypeChange:hover{
  641. color:blue;
  642. cursor: pointer;
  643. }
  644. .loginTypeButton{
  645. font-size:xx-large !important;
  646. }
  647. .authCode .el-input-group__append, .el-input-group__prepend {
  648. padding: 0 !important;
  649. }
  650. @media screen and (max-width: 1600px) {
  651. .login .login_content{
  652. width: 600px;
  653. margin: 40px auto;
  654. margin-top: 10vh;
  655. padding: 36px 20px;
  656. }
  657. .login .login_content .item{
  658. margin-bottom: 10px;
  659. }
  660. .login .el-button--mini, .el-button--mini.is-round{
  661. margin-top: 10px;
  662. }
  663. }
  664. </style>