login.vue 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. <template>
  2. <div class="page">
  3. <div class="info">
  4. <div class="info-header">
  5. <span class="complan-title">九方软件</span>
  6. <!-- <span class="up">--家装版</span> -->
  7. </div>
  8. <div>
  9. <div class="info-text">
  10. <img src="../assets/imgs/home-text.png" alt="">
  11. </div>
  12. <div class="log-text">
  13. 九方软件实现了以家具生产企业为核心,充分覆盖经销商、生产企业、原材料供应商等三方从订单生成到订单生产到订单交付的全流程可视化掌控
  14. </div>
  15. <div class="b-an">浙ICP备18050597号-2</div>
  16. </div>
  17. </div>
  18. <div class="login-form">
  19. <p>登录</p>
  20. <Form ref='userInfo' :model="userInfo" :rules='rulesInfo'>
  21. <FormItem label='账号' prop='name'>
  22. <Input size="large" placeholder="请输入您的账号" v-model="userInfo.name" />
  23. </FormItem>
  24. <FormItem label='密码' prop='password'>
  25. <Input type="password" size="large" placeholder="请输入您的密码" v-model="userInfo.password" />
  26. </FormItem>
  27. <div class="auto-login">
  28. <Checkbox @on-change="storageUserInfo" v-model="autoLogin">自动登录</Checkbox>
  29. </div>
  30. <Button :loading="loading" @click="handleSubmit('userInfo')" size='large' long type="primary">登录</Button>
  31. </Form>
  32. </div>
  33. </div>
  34. </template>
  35. <script>
  36. export default {
  37. data(){
  38. return {
  39. userInfo:{
  40. name:'',
  41. password:'',
  42. },
  43. rulesInfo:{
  44. name:[
  45. {required: true,message:'请输入账号',trigger:'blur'}
  46. ],
  47. password:[
  48. {required: true,message:'请输入密码',trigger:'blur'}
  49. ],
  50. },
  51. autoLogin:false,
  52. loading:false,
  53. }
  54. },
  55. mounted(){
  56. let flag = JSON.parse(localStorage.getItem('autoLogin'));
  57. this.autoLogin = flag||false
  58. if(this.autoLogin){
  59. let user = JSON.parse(localStorage.getItem('loginInfo'))
  60. this.userInfo = user;
  61. setTimeout(()=>{
  62. this.handleSubmit('userInfo')
  63. })
  64. }
  65. },
  66. methods:{
  67. submit(){
  68. let userInfo = JSON.stringify(this.userInfo)
  69. localStorage.setItem('loginInfo',userInfo)
  70. this.loading = true
  71. this.axios.post('/api/login',this.userInfo).then(res=>{
  72. this.loading = false
  73. if(res.code == 200){
  74. this.$Message.success(res.msg||'登陆成功')
  75. if(res.data.token){
  76. localStorage.setItem('token',res.data.token)
  77. let user = JSON.stringify(res.data.user_info);
  78. localStorage.setItem('user_info',user)
  79. this.$router.push({path:'/cms/home',query:{title:'首页'}})
  80. }
  81. }
  82. })
  83. },
  84. handleSubmit(name) {
  85. this.$refs[name].validate((valid) => {
  86. if(valid){
  87. this.submit()
  88. }
  89. })
  90. },
  91. storageUserInfo(){
  92. localStorage.setItem('autoLogin',this.autoLogin)
  93. }
  94. }
  95. }
  96. </script>
  97. <style lang='scss' scoped>
  98. .page{width:100%;height:100%;background:url('http://121.37.173.82:82/api/pic/16003345619022');background-size:100% 100%;
  99. .login-form{width:500px;height:498;padding:56px 75px;position:absolute;left:50%;top:50%;transform: translate(10%,-50%);background: #fff;border-radius:5px;
  100. box-shadow: 0 2px 7px rgba(0,0,0,.15);border-color: transparent;
  101. p{text-align: center;font-size:30px;color:#333333;font-family: '苹方-简 中黑体';}
  102. .auto-login{padding:30px 0 50px 0;}
  103. }
  104. .info{position:absolute;top:20%;left:20%;transform: translate(-30%,10%);width:516px;
  105. .info-header{
  106. .complan-title{font-size:34px;color:#3764FF;font-family:'PingFangSC-Semibold, PingFang SC';font-weight: 400;}
  107. .up{font-size:24px;color:#3764FF;font-family:'PingFangSC-Semibold, PingFang SC';font-weight: 300;}
  108. }
  109. .info-text{font-size: 90px;font-family: 'YouSheBiaoTiHei';color: #3764FF;line-height:120px;letter-spacing: 2px;font-weight:bold;}
  110. .log-text{color:#666666;font-size:18px;padding-top:10px;font-family:'PingFangSC-Regular, PingFang SC';}
  111. .b-an{padding-top:100px;}
  112. }
  113. }
  114. </style>