Login.vue 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776
  1. <template>
  2. <view>
  3. <view v-if="accountIsShow">
  4. <view class="title">账号密码登录</view>
  5. <view class="usernameAndPassword">
  6. <view class="usernameContent">
  7. <input type="text" v-model="username" placeholder="账号" @input="usernameInput" />
  8. </view>
  9. <view class="passwordContent">
  10. <input type="text" v-model="password" :password="passwordShow" placeholder="请输入密码" @input="passwordInput" />
  11. <sunui-password @change="showPass" />
  12. </view>
  13. </view>
  14. <view class="type" :style="{ 'margin-top': typeMarginTop }">
  15. <a @tap="changeType('phone')">手机验证码登录</a>
  16. <a style="float: right;color:#77A8E6;" @tap="goToIndex()">游客身份登录</a>
  17. </view>
  18. <button class="cu-btn bg-red lg" @tap="login" :disabled="usernameLoginDisabled" type="" :style="{ 'height': buttonHeight}">登录</button>
  19. <button class="cu-btn bg-red lg" @tap="checkIsSoterEnrolledInDeviceFingerPrint" type="" :style="{ 'height': buttonHeight}">指纹登录</button>
  20. <view class="bottomWord" :style="{ 'font-size': bottomWordFontSize,'margin-top':bottomWordMarginTop}">
  21. 点击登录,即代表已阅读并同意<a href="#">隐私政策</a>和<a href="#">用户协议</a>
  22. </view>
  23. </view>
  24. <view v-if="phoneIsShow">
  25. <view class="title">手机验证码登录</view>
  26. <view class="usernameAndPassword">
  27. <view class="phoneContent">
  28. <span>+86</span>
  29. <input type="text" v-model="phone" placeholder="请输入手机号码" @input="phoneInput" />
  30. </view>
  31. <view class="codeContent">
  32. <input type="text" v-model="code" placeholder="请输入验证码" @input="codeInput" />
  33. <span :style="{ 'color': codeColor,'width':codeWidth }" @tap="getCode">获取验证码</span>
  34. </view>
  35. </view>
  36. <view class="type" :style="{ 'margin-top': typeMarginTop }">
  37. <a @tap="changeType('account')">账号登录</a>
  38. </view>
  39. <button class="cu-btn bg-red lg" :disabled="codeLoginDisabled" type="" :style="{ 'height': buttonHeight}">登录</button>
  40. <view class="bottomWord" :style="{ 'font-size': bottomWordFontSize,'margin-top':bottomWordMarginTop}">
  41. 点击登录,即代表已阅读并同意<a href="#">隐私政策</a>和<a href="#">用户协议</a>
  42. </view>
  43. </view>
  44. <initial ref="mywebview"></initial>
  45. </view>
  46. </template>
  47. <script>
  48. export default {
  49. data: function() {
  50. return {
  51. passwordShow: true,
  52. accountIsShow: true,
  53. phoneIsShow: false,
  54. usernameLoginDisabled: true,
  55. codeLoginDisabled: true,
  56. username: '',
  57. password: '',
  58. phone: "",
  59. code: "",
  60. codeColor: "#808080",
  61. usernameFlag: false,
  62. passwordFlag: false,
  63. phoneFlag: false,
  64. codeFlag: false,
  65. getCodeFlag: false,
  66. lastUserName: '',
  67. lastPassWord: '',
  68. windowWidth: "",
  69. windowHeight: "",
  70. typeMarginTop: "",
  71. codeWidth: "",
  72. bottomWordFontSize: "",
  73. bottomWordMarginTop: "",
  74. buttonHeight: "",
  75. userid: '',
  76. };
  77. },
  78. created() {
  79. uni.setStorageSync('im_show','0');
  80. this.windowWidth = uni.getSystemInfoSync().windowWidth;
  81. this.windowHeight = uni.getSystemInfoSync().windowHeight;
  82. //console.log(this.windowWidth);
  83. if (this.windowWidth >= 768) {
  84. this.typeMarginTop = "10%";
  85. this.codeWidth = "200px";
  86. this.bottomWordFontSize = "18px";
  87. this.bottomWordMarginTop = "500px";
  88. this.buttonHeight = "50px";
  89. } else {
  90. this.typeMarginTop = "0";
  91. this.codeWidth = "100px";
  92. this.bottomWordFontSize = "13px";
  93. this.bottomWordMarginTop = "270px";
  94. this.buttonHeight = "40px";
  95. }
  96. //this.removeUsernamePassword();
  97. this.getUsernamePassword();
  98. },
  99. computed: {
  100. sisStageIp: function() {
  101. return this.$store.state.wholeSituationBackStageIp;
  102. },
  103. sisStagePort: function() {
  104. return this.$store.state.wholeSituationBackStagePort;
  105. },
  106. backStageIp: function() {
  107. return this.$store.state.wholeSituationBackStageIp;
  108. },
  109. backStagePort: function() {
  110. return this.$store.state.wholeSituationBackStagePort;
  111. },
  112. windpowerstationNameToId: function() {
  113. return this.$store.state.windpowerstationNameToId;
  114. },
  115. windpowerstationName: function() {
  116. return this.$store.state.default_wpname;
  117. },
  118. windpowerstationId: function() {
  119. return this.$store.state.default_wpid;
  120. }
  121. },
  122. methods: {
  123. showPass(e) {
  124. this.passwordShow = e;
  125. },
  126. destroyUseWebViews() {
  127. this.$refs.mywebview.destroyUseWebViews();
  128. },
  129. usernameInput(e) {
  130. if (e.detail.value != "") {
  131. this.usernameFlag = true;
  132. if (this.passwordFlag) {
  133. this.usernameLoginDisabled = false;
  134. }
  135. } else {
  136. this.usernameFlag = false;
  137. this.usernameLoginDisabled = true;
  138. }
  139. },
  140. passwordInput(e) {
  141. if (e.detail.value != "") {
  142. this.passwordFlag = true;
  143. if (this.usernameFlag) {
  144. this.usernameLoginDisabled = false;
  145. }
  146. } else {
  147. this.passwordFlag = false;
  148. this.usernameLoginDisabled = true;
  149. }
  150. },
  151. phoneInput(e) {
  152. // console.log(e.detail.value)
  153. var phoneStr = e.detail.value;
  154. if (/^1(3|4|5|6|7|8|9)\d{9}$/.test(phoneStr)) {
  155. this.codeColor = "black";
  156. this.getCodeFlag = true;
  157. this.phoneFlag = true;
  158. if (this.codeFlag) {
  159. this.codeLoginDisabled = false;
  160. }
  161. }
  162. if (!(/^1(3|4|5|6|7|8|9)\d{9}$/.test(phoneStr))) {
  163. this.codeColor = "#808080";
  164. this.getCodeFlag = false;
  165. this.phoneFlag = false;
  166. this.codeLoginDisabled = true;
  167. }
  168. },
  169. codeInput(e) {
  170. if (e.detail.value != "") {
  171. this.codeFlag = true;
  172. if (this.phoneFlag) {
  173. this.codeLoginDisabled = false;
  174. }
  175. } else {
  176. this.codeFlag = false;
  177. this.codeLoginDisabled = true;
  178. }
  179. },
  180. getCode: function() {
  181. if (this.getCodeFlag) {
  182. console.log("获取验证码")
  183. } else {
  184. console.log("不能获取验证码")
  185. }
  186. },
  187. changeType: function(type) {
  188. if (type == "account") {
  189. this.accountIsShow = true;
  190. this.phoneIsShow = false;
  191. }
  192. if (type == "phone") {
  193. this.phoneIsShow = true;
  194. this.accountIsShow = false;
  195. }
  196. },
  197. goToIndex: function() {
  198. let _this = this;
  199. _this.loginFalg = true;
  200. _this.dataprocessing.putWindPowerStationId(_this.$store.state.default_tourist_wpid);
  201. _this.dataprocessing.putWindPowerStationName(_this.$store.state.default_tourist_wpname);
  202. uni.setStorageSync('userid', _this.$store.state.default_tourist);
  203. _this.dataprocessing.viewUserid();
  204. _this.dataprocessing.monitoringAuthority();
  205. uni.switchTab({
  206. url: '/pages/index/Index'
  207. });
  208. },
  209. falseLogin: function() {
  210. if (this.username == 'admin' && this.password == 'admin') {
  211. this.setUsernamePassword();
  212. uni.switchTab({
  213. url: '/pages/index/Index'
  214. });
  215. } else {
  216. uni.showModal({
  217. content: '用户名密码输入错误,请核对'
  218. });
  219. this.username = '';
  220. this.password = '';
  221. }
  222. },
  223. setUsernamePassword: function() {
  224. uni.setStorageSync('gyeeusername', this.username);
  225. uni.setStorageSync('gyeepassword', this.password);
  226. this.setFingerPrintPassword();
  227. },
  228. setFingerPrintPassword: function() {
  229. uni.setStorageSync('fingerPrintname', this.username);
  230. uni.setStorageSync('fingerPrintpassword', this.password);
  231. },
  232. getFingerPrintPassword: function() {
  233. if (uni.getStorageSync('fingerPrintname') != '' && uni.getStorageSync('fingerPrintpassword') != '') {
  234. uni.setStorageSync('gyeeusername', uni.getStorageSync('fingerPrintname'));
  235. uni.setStorageSync('gyeepassword', uni.getStorageSync('fingerPrintpassword'));
  236. uni.setStorageSync('userid', uni.getStorageSync('fingerPrintuserid'));
  237. this.dataprocessing.viewUserid();
  238. this.dataprocessing.monitoringAuthority();
  239. //let plusDrawerList = uni.getStorageSync('plusList');
  240. //this.dataprocessing.putWindPowerStationId(plusDrawerList[0].windId);
  241. //this.dataprocessing.putWindPowerStationName(plusDrawerList[0].name);
  242. uni.switchTab({
  243. url: '/pages/index/Index'
  244. });
  245. } else {
  246. uni.showToast({
  247. title: "请先用密码登录!"
  248. });
  249. }
  250. },getFingerPrintPassword: function() {
  251. let _this = this;
  252. if (uni.getStorageSync('fingerPrintname') != '' && uni.getStorageSync('fingerPrintpassword') != '') {
  253. uni.setStorageSync('gyeeusername', uni.getStorageSync('fingerPrintname'));
  254. uni.setStorageSync('gyeepassword', uni.getStorageSync('fingerPrintpassword'));
  255. uni.setStorageSync('userid', uni.getStorageSync('fingerPrintuserid'));
  256. this.username = uni.getStorageSync('gyeeusername');
  257. this.password = uni.getStorageSync('gyeepassword');
  258. uni.request({
  259. url: 'http://' + this.backStageIp + ':' + this.backStagePort + '/GyeeuserController/login?username=' + this.username +
  260. '&password=' + this.password,
  261. data: {},
  262. method: 'GET',
  263. success: function(res) {
  264. //console.log(res.data);
  265. _this.userid = res.data.data;
  266. uni.setStorageSync('userid', _this.userid);
  267. uni.setStorageSync('fingerPrintuserid', _this.userid);
  268. //sessionStorage.setItem('userid',_this.userid);
  269. if (res.data.code == 200) {
  270. _this.dataprocessing.viewUserid();
  271. _this.dataprocessing.monitoringAuthority();
  272. _this.createUserOnline();
  273. _this.setUsernamePassword();
  274. _this.loginFalg = true;
  275. _this.lastUserName = _this.username;
  276. _this.lastPassWord = _this.password;
  277. uni.switchTab({
  278. url: '/pages/index/Index'
  279. });
  280. } else {
  281. uni.showModal({
  282. content: '用户名密码输入错误,请核对'
  283. });
  284. _this.username = '';
  285. _this.password = '';
  286. }
  287. },
  288. fail: () => {
  289. _this.tips = '网络错误,小程序端请检查合法域名';
  290. }
  291. });
  292. }
  293. },
  294. // getUsernamePassword: function() {
  295. // this.lastUserName = uni.getStorageSync('gyeeusername');
  296. // this.lastPassWord = uni.getStorageSync('gyeepassword');
  297. // this.createUserOnline();
  298. // if (this.lastUserName != '' && this.lastPassWord != '') {
  299. // uni.switchTab({
  300. // url: '/pages/index/Index'
  301. // });
  302. // }
  303. // },
  304. removeUsernamePassword: function() {
  305. uni.removeStorageSync('gyeeusername');
  306. uni.removeStorageSync('gyeepassword');
  307. //uni.removeStorageSync('userid');
  308. },getUsernamePassword: function() {
  309. let _this = this;
  310. this.username = uni.getStorageSync('gyeeusername');
  311. this.password = uni.getStorageSync('gyeepassword');
  312. if(this.username!="" && this.password!="")
  313. {
  314. uni.request({
  315. url: 'http://' + this.backStageIp + ':' + this.backStagePort + '/GyeeuserController/login?username=' + this.username +
  316. '&password=' + this.password,
  317. data: {},
  318. method: 'GET',
  319. success: function(res) {
  320. //console.log(res.data);
  321. _this.userid = res.data.data;
  322. uni.setStorageSync('userid', _this.userid);
  323. uni.setStorageSync('fingerPrintuserid', _this.userid);
  324. //sessionStorage.setItem('userid',_this.userid);
  325. if (res.data.code == 200) {
  326. _this.dataprocessing.viewUserid();
  327. _this.dataprocessing.monitoringAuthority();
  328. // let plusDrawerList = uni.getStorageSync('plusList');
  329. // _this.dataprocessing.putWindPowerStationId(plusDrawerList[0].windId);
  330. // _this.dataprocessing.putWindPowerStationName(plusDrawerList[0].name);
  331. // if(_this.dataprocessing.getWindPowerStationId()=='')
  332. // {
  333. // //debugger
  334. // _this.dataprocessing.putWindPowerStationId(_this.$store.state.default_wpid);
  335. // }
  336. // if(_this.dataprocessing.getWindPowerStationName()=='')
  337. // {
  338. // //debugger
  339. // _this.dataprocessing.putWindPowerStationName(_this.$store.state.default_wpname);
  340. // }
  341. _this.createUserOnline();
  342. _this.setUsernamePassword();
  343. _this.loginFalg = true;
  344. _this.lastUserName = _this.username;
  345. _this.lastPassWord = _this.password;
  346. uni.switchTab({
  347. url: '/pages/index/Index'
  348. });
  349. } else {
  350. uni.showModal({
  351. content: '用户名密码输入错误,请核对'
  352. });
  353. _this.username = '';
  354. _this.password = '';
  355. }
  356. },
  357. fail: () => {
  358. _this.tips = '网络错误,小程序端请检查合法域名';
  359. },
  360. });
  361. }
  362. },
  363. login: function() {
  364. let _this = this;
  365. if(this.username!="" && this.password!="")
  366. {
  367. uni.request({
  368. url: 'http://' + this.backStageIp + ':' + this.backStagePort + '/GyeeuserController/login?username=' + this.username +
  369. '&password=' + this.password,
  370. data: {},
  371. method: 'GET',
  372. success: function(res) {
  373. //console.log(res.data);
  374. _this.userid = res.data.data;
  375. uni.setStorageSync('userid', _this.userid);
  376. uni.setStorageSync('fingerPrintuserid', _this.userid);
  377. //sessionStorage.setItem('userid',_this.userid);
  378. if (res.data.code == 200) {
  379. _this.dataprocessing.viewUserid();
  380. _this.dataprocessing.monitoringAuthority();
  381. // let plusDrawerList = uni.getStorageSync('plusList');
  382. // _this.dataprocessing.putWindPowerStationId(plusDrawerList[0].windId);
  383. // _this.dataprocessing.putWindPowerStationName(plusDrawerList[0].name);
  384. // if(_this.dataprocessing.getWindPowerStationId()=='')
  385. // {
  386. // //debugger
  387. // _this.dataprocessing.putWindPowerStationId(_this.$store.state.default_wpid);
  388. // }
  389. // if(_this.dataprocessing.getWindPowerStationName()=='')
  390. // {
  391. // //debugger
  392. // _this.dataprocessing.putWindPowerStationName(_this.$store.state.default_wpname);
  393. // }
  394. _this.createUserOnline();
  395. _this.setUsernamePassword();
  396. _this.loginFalg = true;
  397. _this.lastUserName = _this.username;
  398. _this.lastPassWord = _this.password;
  399. uni.switchTab({
  400. url: '/pages/index/Index'
  401. });
  402. } else {
  403. uni.showModal({
  404. content: '用户名密码输入错误,请核对'
  405. });
  406. _this.username = '';
  407. _this.password = '';
  408. }
  409. },
  410. fail: () => {
  411. _this.tips = '网络错误,小程序端请检查合法域名';
  412. },
  413. });
  414. }else
  415. {
  416. uni.showToast({
  417. title: "用户名和密码不能为空!",
  418. icon: "none"
  419. })
  420. }
  421. },
  422. async createUserOnline() {
  423. let _this = this;
  424. let userid=uni.getStorageSync('userid');
  425. // 创建一个this.socketTask对象【发送、接收、关闭socket都由这个对象操作】
  426. _this.socketTask_getUserList = uni.connectSocket({
  427. // 【非常重要】必须确保你的服务器是成功的,如果是手机测试千万别使用ws://127.0.0.1:9099【特别容易犯的错误】
  428. url: 'ws://' + _this.sisStageIp + ':' + _this.sisStagePort + '/websocket/pageNumber_4/functionNumber_5/'+userid,
  429. success(data) {
  430. console.log(data);
  431. }
  432. });
  433. /* let windpowerstationid = uni.getStorageSync('windpowerstationName'); */
  434. // 消息的发送和接收必须在正常连接打开中,才能发送或接收【否则会失败】
  435. _this.socketTask_getUserList.onOpen(res => {
  436. console.log('WebSocket连接正常打开中...!');
  437. _this.is_open_socket = true;
  438. // 注:只有连接正常打开中 ,才能正常收到消息
  439. _this.socketTask_getUserList.onMessage(res => {
  440. /* _this.windpowerstationdetail.getUserList = JSON.parse(res.data); */
  441. _this.lastUserName = uni.getStorageSync('gyeeusername');
  442. _this.userid = uni.getStorageSync('userid');
  443. let templist=JSON.parse(res.data);
  444. if(templist!=null && templist!=undefined)
  445. {
  446. uni.showToast({
  447. title: "同名用户登录,当前用户下线!",
  448. icon: "none"
  449. })
  450. //plus.runtime.quit();
  451. //#ifdef H5
  452. _this.destroyUseWebViews();
  453. uni.navigateTo({
  454. url: '/components/login/Login'
  455. });
  456. //#endif
  457. //#ifdef APP-PLUS
  458. setTimeout(function() {
  459. plus.runtime.quit()
  460. }, 1000);//如果是首页的onload调用时需要延时一下,二级页面无需延时,可直接获取
  461. //#endif
  462. }
  463. //_this.userList = JSON.parse(res.data);
  464. });
  465. });
  466. },
  467. checkIsSoterEnrolledInDeviceFingerPrint() {
  468. let _this = this;
  469. uni.checkIsSoterEnrolledInDevice({
  470. checkAuthMode: 'fingerPrint',
  471. success(res) {
  472. uni.startSoterAuthentication({
  473. requestAuthModes: ['fingerPrint'],
  474. challenge: '123456',
  475. authContent: '请用指纹解锁',
  476. success(result) {
  477. if (result.errMsg == "startSoterAuthentication:ok") {
  478. //_this.setUsernamePassword();
  479. //_this.loginFalg = true;
  480. //_this.getUser()
  481. _this.createUserOnline();
  482. _this.getFingerPrintPassword();
  483. } else {
  484. uni.showToast({
  485. title: "指纹登录失败!"
  486. });
  487. _this.username = '';
  488. _this.password = '';
  489. }
  490. },
  491. fail(err) {
  492. console.log(err);
  493. },
  494. complete(res) {
  495. console.log(res);
  496. }
  497. })
  498. },
  499. fail(err) {
  500. uni.showToast({
  501. title: "请用手机指纹管理功能新建指纹录!"
  502. });
  503. },
  504. complete(res) {
  505. console.log(res);
  506. }
  507. })
  508. }
  509. }
  510. };
  511. </script>
  512. <style>
  513. page {
  514. background-color: #FFFFFF;
  515. height: 100%;
  516. /* background: -webkit-gradient(linear, 0% 100%, 0% 0%, from(#2f698e), color-stop(0.15, #5c757c), to(#004c90)); */
  517. }
  518. .title {
  519. width: 90%;
  520. height: 100px;
  521. font-size: 25px;
  522. font-weight: bold;
  523. padding-top: 50px;
  524. /* margin-top: 80px; */
  525. margin-left: 10%;
  526. }
  527. .usernameAndPassword {
  528. width: 100%;
  529. height: 100px;
  530. margin-top: 50px;
  531. }
  532. .usernameContent {
  533. width: 80%;
  534. margin-left: 10%;
  535. border-bottom: 2upx solid #D3D3D3;
  536. }
  537. .passwordContent {
  538. width: 80%;
  539. display: flex;
  540. align-items: center;
  541. justify-content: space-between;
  542. border-bottom: 2upx solid #D3D3D3;
  543. margin-top: 20px;
  544. margin-left: 10%;
  545. }
  546. input {
  547. width: 100%;
  548. height: 30px;
  549. }
  550. .type {
  551. width: 80%;
  552. height: 20px;
  553. line-height: 20px;
  554. margin-left: 10%;
  555. }
  556. .cu-btn {
  557. width: 80%;
  558. height: 40px;
  559. margin-left: 10%;
  560. margin-top: 25px;
  561. }
  562. .phoneContent {
  563. width: 80%;
  564. margin-left: 10%;
  565. border-bottom: 2upx solid #D3D3D3;
  566. display: flex;
  567. }
  568. .phoneContent span {
  569. line-height: 30px;
  570. margin-right: 5px;
  571. }
  572. .codeContent {
  573. width: 80%;
  574. margin-left: 10%;
  575. border-bottom: 2upx solid #D3D3D3;
  576. display: flex;
  577. margin-top: 20px;
  578. }
  579. .codeContent span {
  580. width: 100px;
  581. }
  582. .bottomWord {
  583. width: 80%;
  584. margin-left: 10%;
  585. color: #808080;
  586. font-size: 13px;
  587. margin-top: 270px;
  588. text-align: center;
  589. }
  590. a {
  591. text-decoration: none;
  592. }
  593. .bottomWord a:link {
  594. color: #5C97E4;
  595. }
  596. .bottomWord a:hover {
  597. color: #5C97E4;
  598. }
  599. .bottomWord a:visited {
  600. color: #5C97E4;
  601. }
  602. .bottomWord a:active {
  603. color: #5C97E4;
  604. }
  605. /* .container {
  606. border-radius: 20px;
  607. width: 90%;
  608. height: 700upx;
  609. margin: 0px auto;
  610. position: absolute;
  611. top: 20%;
  612. left: 5%;
  613. background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#024f93), color-stop(1.5, #cccccc), to(#437193));
  614. background: rgba(0, 0, 0, 0.1);
  615. }
  616. .title {
  617. width: 100%;
  618. height: 50px;
  619. color: white;
  620. line-height: 50px;
  621. text-align: center;
  622. margin-top: 5%;
  623. }
  624. .usernameContainer {
  625. width: 100%;
  626. height: 40px;
  627. line-height: 40px;
  628. margin-top: 10%;
  629. }
  630. .usernameContainer span {
  631. float: left;
  632. font-size: 18px;
  633. color: white;
  634. margin-left: 10px;
  635. }
  636. .username {
  637. width: 70%;
  638. height: 40px;
  639. border: 1px solid white;
  640. float: left;
  641. border-radius: 5px;
  642. }
  643. .passwordContainer {
  644. width: 100%;
  645. height: 40px;
  646. line-height: 40px;
  647. margin-top: 10%;
  648. }
  649. .passwordContainer span {
  650. float: left;
  651. font-size: 18px;
  652. color: white;
  653. margin-left: 10px;
  654. }
  655. .password {
  656. width: 70%;
  657. height: 40px;
  658. border: 1px solid white;
  659. float: left;
  660. border-radius: 5px;
  661. }
  662. .noLogin {
  663. width: calc(70% + 84px);
  664. height: 40px;
  665. text-align: right;
  666. color: white;
  667. //margin-left:15% ;
  668. //margin-right: 10px;
  669. line-height: 40px;
  670. }
  671. .noLogin a:link {
  672. color: white;
  673. }
  674. .noLogin a:hover {
  675. color: white;
  676. }
  677. .noLogin a:visited {
  678. color: white;
  679. }
  680. .noLogin a:active {
  681. color: white;
  682. }
  683. .cu-btn {
  684. width: 80%;
  685. height: 50px;
  686. margin-left: 10%;
  687. //margin-top: 10%;
  688. } */
  689. </style>