loginitem.vue 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966
  1. <template>
  2. <view class="page" :style="'height:'+windowHeight">
  3. <view class="loginbox">
  4. <image src="../static/img/closebtn.png" class="close" @tap='close'></image>
  5. <ul class="nav1">
  6. <li :class="{'active':type=='login'}" @tap="changetype('login')">登录</li>
  7. <li :class="{'active':type=='reg'}" @tap="changetype('reg')">注册</li>
  8. </ul>
  9. <view class="login-bg">
  10. <view class="login-card">
  11. <view v-if="type=='login'">
  12. <label class="lines" >
  13. <label class="label-2-text" >
  14. <image src="../static/img/icon_user.png" class="icons" style="width: 20px;height: 20px;" ></image>
  15. </label>
  16. <view >
  17. <input type="text" class="uni-input" placeholder="ID\用户名\手机号" v-model="form.username" />
  18. </view>
  19. </label>
  20. <label class="lines" >
  21. <label class="label-2-text" >
  22. <image src="../static/img/icon_lock.png" class="icons" style="width: 16px;"></image>
  23. </label>
  24. <view >
  25. <input class="uni-input" placeholder="请输入密码" :password="showPassword" v-model="form.password"/>
  26. </view>
  27. <uni-icons style="display: none;" class='tip-icons' type="eye-filled" :class="[showPassword ? '' : 'active']" @tap="changePassword"></uni-icons>
  28. </label>
  29. <view class="line" style="display: none;">
  30. <checkbox id="save" :checked="form.save" value="1">记住登录状态</checkbox>
  31. </view>
  32. </view>
  33. <view v-if="type=='reg'">
  34. <label class="lines" >
  35. <label class="label-2-text" >
  36. <image src="../static/img/icon_user.png" class="icons" style="width: 20px;height: 20px;" ></image>
  37. </label>
  38. <view >
  39. <input class="uni-input" maxlength="11" placeholder="请输入用户名" v-model="form.username" @blur="check_name($event.detail.value)" />
  40. </view>
  41. <uni-icons :type="usernamemsg=='ok'?'checkbox-filled':'clear'" :class="{'tip-icons':true,'ok':usernamemsg=='ok','error':usernamemsg=='error'}" ></uni-icons>
  42. </label>
  43. <label class="lines" >
  44. <label class="label-2-text" >
  45. <image src="../static/img/icon_lock.png" class="icons" style="width: 16px;"></image>
  46. </label>
  47. <view >
  48. <input class="uni-input" placeholder="请输入登录密码" :password="showPassword" v-model="form.password" @input="checkpwd($event.detail.value)" @blur="check_other($event.detail.value,'password')"/>
  49. </view>
  50. <uni-icons :type="passwordmsg=='ok'?'checkbox-filled':'clear'" :class="{'tip-icons':true,'ok':passwordmsg=='ok','error':passwordmsg=='error'}" ></uni-icons>
  51. </label>
  52. <view class="passwordtips" v-if="passwordtips">
  53. 密码强度:<view :class="passwordcolor">{{passwordtiphtml}}</view>
  54. </view>
  55. <label class="lines" >
  56. <label class="label-2-text" >
  57. <image src="../static/img/icon_lock.png" class="icons" style="width: 16px;"></image>
  58. </label>
  59. <view >
  60. <input class="uni-input" placeholder="请再次输入密码" :password="showPassword" v-model="form.password2" @blur="check_other($event.detail.value,'password1')"/>
  61. </view>
  62. <uni-icons :type="passwordmsg2=='ok'?'checkbox-filled':'clear'" :class="{'tip-icons':true,'ok':passwordmsg2=='ok','error':passwordmsg2=='error'}" ></uni-icons>
  63. </label>
  64. <label class="lines" v-if="system.inviteopen==1">
  65. <label class="label-2-text" >
  66. <image src="../static/img/icon-tip.png" class="icons" style="width: 20px;height: 20px;" ></image>
  67. </label>
  68. <view >
  69. <input class="uni-input" maxlength="6" placeholder="请输入邀请码" v-model="form.randcode" />
  70. <view class="getcode" @tap="getcode" v-if="system.invite_code!=''" >获取邀请码</view>
  71. </view>
  72. </label>
  73. <label class="lines" >
  74. <label class="label-2-text" >
  75. <image src="../static/img/icon-tip.png" class="icons" ></image>
  76. </label>
  77. <view >
  78. <input class="uni-input" style="width: 100%;" maxlength="4" placeholder="输入右侧验证码" v-model="form.captch" @blur="check_other($event.detail.value,'randcode')" />
  79. </view>
  80. <image :src="codeurl" class="captchimg" @tap="changecode()" ></image>
  81. <uni-icons :type="captchmsg=='ok'?'checkbox-filled':'clear'" :class="{'tip-icons':true,'ok':captchmsg=='ok','error':captchmsg=='error'}" ></uni-icons>
  82. </label>
  83. </view>
  84. </view>
  85. <view class="login-btn">
  86. <button v-if="type=='login'" class="landing_true" :disabled="checkIn ? false : true" type="primary" @tap="click_login">立即登录</button>
  87. <button v-else class="landing_true" :disabled="checkIn ? false : true" type="primary" @tap="click_reg">确认并注册</button>
  88. </view>
  89. <view class="line1">
  90. <view style="color:#2319DC;" v-if="type=='login'" @tap="changetype('reg')">免费注册 </view>
  91. <view style="color:#2319DC;" v-else @tap="changetype('login')">立即登录</view>
  92. <view @click="go_forget">忘记密码</view>
  93. </view>
  94. </view>
  95. <view style="text-align: center;margin-top: 30px;display: none;">
  96. <checkbox v-bind:checked="isread" @tap="isread=!isread" id="readrule" value="1">我已阅读并同意</checkbox>《<view class="rule" @tap="go_rule(0)">用户协议</view>》及《<view class="rule" @tap="go_rule(1)">隐私条款</view>》
  97. </view>
  98. </view>
  99. </view>
  100. </template>
  101. <script>
  102. var windowHeight= uni.getSystemInfoSync().windowHeight;
  103. import cache from '../library/cache.js'
  104. import api from "../library/index.js"
  105. import uniIcons from '../components/uni-icons/uni-icons.vue'
  106. import config from "../config.js";
  107. import http from '../library/http.js'
  108. var windowHeight= uni.getSystemInfoSync().windowHeight;
  109. var statusBarHeight = uni.getSystemInfoSync().statusBarHeight ;
  110. export default {
  111. components: {
  112. uniIcons,
  113. },
  114. props:{
  115. isreg:{
  116. default:true
  117. }
  118. },
  119. data() {
  120. return {
  121. windowHeight:windowHeight+'px' ,
  122. showPassword: true,
  123. type: 'login',
  124. getCodeTime:60,
  125. issend:false,
  126. timer1:'',
  127. method:'login',
  128. system:uni.getStorageSync('system'),
  129. codeurl:'',
  130. passwordcolor:'color0',
  131. passwordtiphtml:'',
  132. passwordtips:false,
  133. usernamemsg:false,
  134. passwordmsg:false,
  135. passwordmsg2:false,
  136. captchmsg:false,
  137. name_status:false,
  138. code_status:false,
  139. checkIn:true,
  140. title:'登录',
  141. isread:true,
  142. form: {
  143. username: '',
  144. password: '',
  145. password2:'',
  146. mobile:'',
  147. captch:'',
  148. nickname:'',
  149. save:true,
  150. randcode:uni.getStorageSync('invite_code')
  151. },
  152. };
  153. },
  154. methods:{
  155. close(){
  156. this.$emit('close')
  157. },
  158. getcode(){
  159. this.form.randcode=this.system.invite_code;
  160. },
  161. changecode(){
  162. this.codeurl=config.imgUri+'inc/checkcode.inc.php?rand='+Math.random()+'&agentid='+this.agentid();
  163. },
  164. changePassword() {
  165. this.showPassword = !this.showPassword;
  166. },
  167. delInputUsernameText(){
  168. this.form.username = ''
  169. },
  170. delInputPasswordText(){
  171. this.form.password = ''
  172. },
  173. delInputMobileText(){
  174. this.form.mobile='';
  175. },
  176. delInputCaptchText(){
  177. this.form.captch='';
  178. },
  179. agentid(){
  180. if(uni.getStorageSync('agentid')) return uni.getStorageSync('agentid');
  181. else{
  182. var agentid=this.randomstr(18);
  183. uni.setStorageSync('agentid',agentid);
  184. return agentid;
  185. }
  186. },
  187. randomstr(len){
  188. var chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';
  189. var maxPos = chars.length;
  190.    var pwd='';
  191. for (var i = 0; i < len; i++) {
  192.     pwd += chars.charAt(Math.floor(Math.random() * maxPos));
  193.   }
  194.   return pwd;
  195. },
  196. changetype(type){
  197. this.type=type;
  198. if(type=='login'){
  199. // uni.setNavigationBarTitle({
  200. // title: '登录'
  201. // });
  202. this.title='登录'
  203. }else{
  204. // uni.setNavigationBarTitle({
  205. // title: '注册'
  206. // });
  207. this.title='注册'
  208. }
  209. },
  210. login_success(res){
  211. console.log(res);
  212. var resdata=res.data;
  213. var id=resdata.id;
  214. uni.setStorageSync('access_token', id);
  215. uni.setStorageSync('userid', id);
  216. uni.setStorageSync(id+'_groups',res.groups);
  217. uni.setStorageSync(id+'_frienddata',res.friends);
  218. uni.setStorageSync('shownote',true);
  219. this.$socket.send({type:'otherlogin',uid:id});
  220. this.$socket.emit('no_auth');
  221. uni.setStorageSync('userInfo',resdata);
  222. // this.$store.commit('update_userinfo', resdata);
  223. // console.log(res);
  224. // api.getMyGroup({userid:id}).then(res => {
  225. // uni.setStorageSync(id+'_groups',res.data)
  226. // })
  227. // api.getMyFriend({userid:id}).then(resss => {
  228. // uni.setStorageSync(id+'_frienddata',resss.data);
  229. // })
  230. var data11 = {
  231. token:id,
  232. type:'setting'
  233. }
  234. this.$socket.send(data11);
  235. var urls= uni.getStorageSync('loginurl');
  236. if(urls){
  237. // console.log(urls);
  238. uni.reLaunch({
  239. url:urls
  240. })
  241. }
  242. else{
  243. uni.reLaunch({
  244. url: '../mine/index'
  245. })
  246. }
  247. },
  248. click_login(){
  249. let _this = this;
  250. if(this.isread==false){
  251. uni.showToast({
  252. icon:'none',
  253. title:'请阅读《用户协议》及《隐私条款》',
  254. duration:1000
  255. })
  256. return false;
  257. }
  258. if(_this.form.username==''){
  259. uni.showToast({
  260. icon:'none',
  261. title:'请输入登录账号',
  262. duration:1000
  263. })
  264. return false;
  265. }
  266. if(_this.form.password==''){
  267. uni.showToast({
  268. icon:'none',
  269. title:'请输入登录密码',
  270. duration:1000
  271. })
  272. return false;
  273. }
  274. var data ={username:_this.form.username,password:_this.form.password};
  275. this.checkIn=false;
  276. api.login(data).then(res=>{
  277. this.checkIn=true;
  278. this.login_success(res);
  279. })
  280. var that=this;
  281. setTimeout(function(){
  282. that.checkIn=true;
  283. },2000)
  284. },
  285. check_name(value) {
  286. var reg=/^[\d\w]+$/;
  287. if(reg.test(value)){
  288. if(value.length>5){
  289. http.setWait(false).post('user.php?act=checkname1',{username:value}).then(res=>{
  290. var data=res.data;
  291. if(res.status==200){
  292. this.name_status=true;
  293. this.usernamemsg='ok';
  294. }else{
  295. this.usernamemsg='error';
  296. this.name_status=false;
  297. uni.showToast({
  298. icon:'none',
  299. title:res.message,
  300. duration:1000
  301. })
  302. }
  303. })
  304. }else{
  305. this.name_status=false;
  306. this.usernamemsg='error';
  307. }
  308. }else{
  309. this.usernamemsg='error';
  310. this.name_status=false;
  311. }
  312. },
  313. checkpwd(pwd) {
  314. var p1 = (pwd.search(/[a-zA-Z]/) != -1) ? 1 : 0;
  315. var p2 = (pwd.search(/[0-9]/) != -1) ? 1 : 0;
  316. var p3 = (pwd.search(/[A-Z]/) != -1) ? 1 : 0;
  317. var pa = p1 + p2 + p3;
  318. if(pa>0){
  319. var num=pa-1;
  320. var arr=['弱','中','强'];
  321. this.passwordtiphtml=arr[num];
  322. this.passwordcolor='color'+num;
  323. this.passwordtips=true;
  324. }else{
  325. this.passwordtips=false;
  326. }
  327. },
  328. check_other(value,name) {
  329. if(name=='password'){
  330. if(value.length>0){
  331. if(value.length>5){
  332. this.passwordmsg='ok';
  333. } else{
  334. this.passwordmsg='error';
  335. }
  336. }
  337. else{
  338. this.passwordmsg=false;
  339. }
  340. }
  341. if(name=='password1'){
  342. if(value.length>0){
  343. if(value==this.form.password){
  344. this.passwordmsg2='ok';
  345. } else{
  346. this.passwordmsg2='error';
  347. }
  348. }
  349. else{
  350. this.passwordmsg2=false;
  351. }
  352. }
  353. if(name=='randcode'){
  354. if(value.length>0){
  355. if(value.length==4){
  356. http.setWait(false).post('user.php?act=checkcode1',{randcode:value}).then(res=>{
  357. var data=res.data;
  358. if(res.status==200){
  359. this.code_status=true;
  360. this.captchmsg='ok';
  361. }else{
  362. this.captchmsg='error';
  363. this.code_status=false;
  364. uni.showToast({
  365. icon:'none',
  366. title:"验证码错误",
  367. duration:1000
  368. })
  369. }
  370. })
  371. }else{
  372. this.code_status=false;
  373. this.captchmsg='error';
  374. }
  375. }else{
  376. this.code_status=false;
  377. this.captchmsg=false;
  378. }
  379. }
  380. },
  381. click_reg() {
  382. var _this=this;
  383. if(this.isread==false){
  384. uni.showToast({
  385. icon:'none',
  386. title:'请阅读《用户协议》及《隐私条款》',
  387. duration:1000
  388. })
  389. return false;
  390. }
  391. if(_this.form.username==''){
  392. uni.showToast({
  393. icon:'none',
  394. title:'请输入用户名',
  395. duration:1000
  396. })
  397. return false;
  398. }
  399. if(_this.form.username.length<6){
  400. uni.showToast({
  401. icon:'none',
  402. title:'用户长度不能小于6位',
  403. duration:1000
  404. })
  405. return false;
  406. }
  407. if(_this.form.password==''){
  408. uni.showToast({
  409. icon:'none',
  410. title:'请输入登录密码',
  411. duration:1000
  412. })
  413. return false;
  414. }
  415. if(this.form.password.length<6){
  416. uni.showToast({
  417. icon:'none',
  418. title:'密码长度不能小于6位',
  419. duration:1000
  420. })
  421. return false;
  422. }
  423. if(this.form.password!=this.form.password2){
  424. uni.showToast({
  425. icon:'none',
  426. title:'两次密码输入不一致',
  427. duration:1000
  428. })
  429. return false;
  430. }
  431. if(this.system.inviteopen==1 && this.form.randcode==''){
  432. uni.showToast({
  433. icon:'none',
  434. title:'请输入邀请码',
  435. duration:1000
  436. })
  437. return false;
  438. }
  439. if(this.form.captch==''){
  440. uni.showToast({
  441. icon:'none',
  442. title:'请输入验证码',
  443. duration:1000
  444. })
  445. return false;
  446. }
  447. if(this.form.captch.length!=4){
  448. uni.showToast({
  449. icon:'none',
  450. title:'验证码长度不正确',
  451. duration:1000
  452. })
  453. return false;
  454. }
  455. if(this.name_status==false){
  456. uni.showToast({
  457. icon:'none',
  458. title:'该账号已被注册',
  459. duration:1000
  460. })
  461. return false;
  462. }
  463. if(this.code_status==false){
  464. uni.showToast({
  465. icon:'none',
  466. title:'您输入的验证码不正确',
  467. duration:1000
  468. })
  469. this.changecode();
  470. return false;
  471. }
  472. this.checkIn=false;
  473. api.register({username:this.form.username,password:this.form.password,randcode:this.form.captch,invite_code:this.form.randcode}).then(res=>{
  474. this.checkIn=true;
  475. if(res.code==200){
  476. this.login_success(res);
  477. // var reg=res.data.reg;
  478. // var that=this;
  479. // var uid=id;
  480. // setTimeout(function(){
  481. // that.sendtips(reg,uid);
  482. // },500)
  483. }else{
  484. this.changecode();
  485. }
  486. })
  487. var that=this;
  488. setTimeout(function(){
  489. that.checkIn=true;
  490. that.changecode();
  491. },2000)
  492. },
  493. sendtips(reg,uid){
  494. if(reg.kefu && reg.kefu_tips){
  495. let data = {
  496. userid: reg.kefu,
  497. friend_uid:uid,
  498. content:reg.kefu_tips,
  499. msgtype:'text',
  500. type:'chat'
  501. }
  502. this.$socket.send(data);
  503. }
  504. if(reg.admin && reg.admin_tips){
  505. let data = {
  506. userid: reg.admin,
  507. friend_uid:uid,
  508. content:reg.admin_tips,
  509. msgtype:'text',
  510. type:'chat'
  511. }
  512. this.$socket.send(data);
  513. }
  514. },
  515. go_forget(){
  516. uni.navigateTo({
  517. url: '/pages/login/froget'
  518. })
  519. //this.$emit('forget')
  520. },
  521. go_rule(type){
  522. console.log(type)
  523. uni.navigateTo({
  524. url: 'rule?type='+type
  525. })
  526. },
  527. },
  528. mounted() {
  529. this.codeurl=config.imgUri+'inc/checkcode.inc.php?rand='+Math.random()+'&agentid='+this.agentid();
  530. if(this.isreg) this.type='reg';
  531. }
  532. }
  533. </script>
  534. <style lang="scss">
  535. @import '../static/css/uni.css';
  536. .page{
  537. position: fixed;
  538. z-index: 100;
  539. left: 0px;
  540. width: 100%;
  541. top:0px;
  542. background-color: rgba($color: #000000, $alpha: 0.3);
  543. }
  544. .getcode{
  545. position: absolute;
  546. right:10px;
  547. top:8px;
  548. height: 30px;
  549. line-height: 30px;
  550. display: inline-block;
  551. color:#666;
  552. }
  553. .loginbox{
  554. position: fixed;
  555. left: 10%;
  556. width: 80%;
  557. top: 20%;
  558. height: auto;
  559. border-radius: 10px;
  560. background-color: #fff;
  561. padding-bottom: 10px;
  562. }
  563. .loginbox .close{
  564. position: absolute;
  565. right: -12px;
  566. top:-12px;
  567. width: 30px;
  568. height:30px;
  569. }
  570. .nav1{
  571. width: 100%;
  572. display: table;
  573. height: 50px;
  574. line-height: 50px;
  575. padding: 0px !important;
  576. margin: 0px !important;
  577. border-top-right-radius: 10px;
  578. }
  579. .nav1 li{
  580. display: table-cell;
  581. color:#666;
  582. background-color: #eee;
  583. text-align: center;
  584. font-size: 16px;
  585. cursor: pointer;
  586. }
  587. .nav1 li:first-child{
  588. border-top-left-radius: 10px;
  589. }
  590. .nav1 li:last-child{
  591. border-top-right-radius: 10px;
  592. }
  593. .nav1 li i{
  594. margin-right: 0px;
  595. }
  596. .nav1 li.active{
  597. background-color: #3f6df5;
  598. color: #fff;
  599. }
  600. .lines {
  601. display: inline-block;
  602. width: calc(100% - 16px);
  603. clear: both;
  604. border-bottom: 1px solid #eee;
  605. padding: 2px 8px;
  606. margin-top: 10px;
  607. text-align: left;
  608. position: relative;
  609. }
  610. .lines> view ,.lines> label{
  611. padding: 0px 0px;
  612. margin: 0px 0px;
  613. display: inline-block;;
  614. height: 40px;
  615. line-height: 40px;;
  616. vertical-align: middle;
  617. }
  618. .lines> label{
  619. width: 40px;
  620. text-align: center;
  621. }
  622. .lines> label image{
  623. vertical-align: middle;
  624. }
  625. .lines > view {
  626. width: calc(100% - 100px) !important;
  627. }
  628. .lines .uni-input{
  629. vertical-align: bottom;
  630. padding-bottom: 0px;
  631. }
  632. .rule{
  633. color:#2319dc;
  634. display:inline-block ;
  635. }
  636. .passwordtips{
  637. width:calc(100% - 52px);
  638. padding-left: 52px;
  639. height: 16px;
  640. line-height: 16px;
  641. color:#666;
  642. text-align: left;
  643. display:block;
  644. font-size: 12px;
  645. margin-top: 5px;;
  646. }
  647. .passwordtips > view{
  648. display: inline-block;
  649. }
  650. .passwordtips .color0{
  651. color: #ff0000;
  652. }
  653. .passwordtips .color1{
  654. color: #1834ab;
  655. }
  656. .passwordtips .color2{
  657. color: #2FE30E;
  658. }
  659. .label-2-text{
  660. width: 40px;
  661. display: inline-block;
  662. text-align: center;
  663. margin: 0px 0px;
  664. }
  665. .icons{
  666. font-size: 26px !important;
  667. color: #1834AB !important;
  668. height: 23px;
  669. width: 23px;
  670. }
  671. .tip-icons {
  672. position: absolute;
  673. right:5px;
  674. top:11px;
  675. font-size: 22px !important;
  676. display: none;
  677. }
  678. .tip-icons.ok{
  679. color: #1D830D !important;
  680. display: inline-block;
  681. }
  682. .tip-icons.error{
  683. color: #e7202a !important;
  684. display: inline-block;
  685. }
  686. .tip-icons.active {
  687. color: #2319dc !important;
  688. }
  689. .captchimg{
  690. position: absolute;
  691. right: 30px;;
  692. height: 40px;top:3px;
  693. width: 80px;;
  694. border-radius: 5px;;
  695. }
  696. .line{
  697. text-align: left;display:block;
  698. margin: 0 auto;
  699. width: calc(100% - 30px);
  700. height: 30px;line-height: 30px;
  701. margin-top: 20px;;
  702. }
  703. .uni-media-image{
  704. padding: 10upx 10upx;
  705. margin-top: 10upx;
  706. text-align: center;
  707. }
  708. .uni-media-loading {
  709. width:180px;
  710. height:75px;
  711. }
  712. .landing {
  713. height: 84upx;
  714. line-height: 84upx;
  715. color: #FFFFFF;
  716. font-size: 32upx;
  717. bordor: none;
  718. border-radius: 10upx;
  719. }
  720. .placeholdertext{
  721. /* #ifdef H5 */
  722. width: 40upx;
  723. /* #endif */
  724. /*#ifdef APP-PLUS */
  725. width: 40upx;
  726. /* #endif */
  727. height:24upx;
  728. }
  729. .landing_true {
  730. }
  731. .landing_false {
  732. background-color: #d8d8d8;
  733. }
  734. .uni-button[type=primary] {
  735. }
  736. .login-btn{
  737. padding: 10upx 20upx;
  738. margin-top: 30upx;
  739. text-align: center;
  740. }
  741. .login-btn button{
  742. border-radius: 25px;
  743. background: -webkit-linear-gradient(left top, #3388ff , #2319dc);
  744. background: -o-linear-gradient(bottom right, #3388ff, #2319dc);
  745. background: -moz-linear-gradient(bottom right, #3388ff, #2319dc);
  746. background: linear-gradient(to bottom right, #3388ff , #2319dc);
  747. }
  748. .login-function{
  749. /* #ifdef H5 */
  750. margin-top:350upx;
  751. /* #endif */
  752. /*#ifdef APP-PLUS */
  753. margin-top: 260upx;
  754. /* #endif */
  755. color: #999;
  756. text-align: center;
  757. }
  758. .login-function-old{
  759. margin-top:60upx;
  760. margin-right:30upx;
  761. color: red;
  762. text-align: center;
  763. }
  764. .login-forget{
  765. float: left;
  766. font-size: 26upx;
  767. color: #999;
  768. }
  769. .textspace {
  770. padding: 10upx 10upx;
  771. }
  772. .line1{
  773. width: calc(100% - 100px);
  774. margin: 10px auto;
  775. display: block;
  776. height: 20px;
  777. line-height: 20px;
  778. text-align: center;
  779. }
  780. .line1 view{
  781. color: #666;
  782. float: text-align;
  783. font-size: 28upx;
  784. width: calc(50% - 1px);
  785. display: inline-block;
  786. border-right: 0px solid #666;
  787. height: 20px;
  788. line-height: 20px;
  789. }
  790. .line1 view:last-child{
  791. border-right: 0px;;
  792. }
  793. .login-register{
  794. color: #666;
  795. float: text-align;
  796. font-size: 26upx;
  797. width: 50%;
  798. display: inline-block;
  799. }
  800. .login-input input{
  801. background: #F2F5F6;
  802. font-size: 28upx;
  803. padding: 10upx 25upx;
  804. height: 62upx;
  805. line-height: 62upx;
  806. border-radius: 8upx;
  807. }
  808. .login-margin-b{
  809. margin-bottom: 25upx;
  810. }
  811. .login-input{
  812. padding: 20upx 20upx;
  813. }
  814. .login-head{
  815. font-size: 34upx;
  816. text-align: center;
  817. height: 30upx;
  818. }
  819. .login-card{
  820. background: #fff;
  821. border-radius: 12upx;
  822. padding: 10upx 25upx;
  823. /* box-shadow: 0 6upx 18upx rgba(0,0,0,0.12); */
  824. position: relative;
  825. }
  826. .login-bg {
  827. /* height: 260upx;
  828. padding: 25upx;
  829. background: linear-gradient(#FF978D, #FFBB69); */
  830. }
  831. .uni-form-item .with-fun .uni-icon {
  832. text-align: left;
  833. }
  834. </style>