Merge pull request 'zj' (#14) from zj into master
Reviewed-on: http://git.luyuan.tk/luyuan/beelink/pulls/14
This commit is contained in:
		
						commit
						2734e0cf1e
					
				@ -18,3 +18,4 @@ export function getinfo(): Promise<AxiosPromise>{
 | 
			
		||||
export function seninfo(data: object): Promise<AxiosPromise>{
 | 
			
		||||
    return post("b",data)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										48
									
								
								src/components/login/LoginTab.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								src/components/login/LoginTab.vue
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,48 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="logintab">
 | 
			
		||||
      <div :class="selected==1?'tab tab1':'tab'" @click="tabchange(1)">手机号登录</div>
 | 
			
		||||
      <div :class="selected==2?'tab tab1':'tab'" @click="tabchange(2)">账号密码登录</div>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script lang="ts">
 | 
			
		||||
import { defineComponent , ref} from "vue";
 | 
			
		||||
 | 
			
		||||
export default defineComponent({
 | 
			
		||||
  name: "LoginTab",
 | 
			
		||||
  components: {},
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
  setup(prop,context) {
 | 
			
		||||
    const selected=ref(1)
 | 
			
		||||
    function tabchange(e: number): void{
 | 
			
		||||
        selected.value=e
 | 
			
		||||
        context.emit("sel",e)
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
    return {
 | 
			
		||||
      selected,
 | 
			
		||||
      tabchange
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
});
 | 
			
		||||
</script>
 | 
			
		||||
<style lang="scss" scoped>
 | 
			
		||||
.logintab{
 | 
			
		||||
    display: flex;
 | 
			
		||||
    .tab{
 | 
			
		||||
        width: 100px;
 | 
			
		||||
        height: 29px;
 | 
			
		||||
        border-radius: 14px;
 | 
			
		||||
        cursor: pointer;
 | 
			
		||||
        font-weight: bold;
 | 
			
		||||
        text-align: center;
 | 
			
		||||
        font-size: 11px;
 | 
			
		||||
        line-height: 28px;
 | 
			
		||||
    }
 | 
			
		||||
    .tab1{
 | 
			
		||||
        background: #08AE98;
 | 
			
		||||
        color: white;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
@ -1,4 +1,6 @@
 | 
			
		||||
import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router'
 | 
			
		||||
import Home from '../views/Home.vue'
 | 
			
		||||
import Login from "../views/login/Login.vue"
 | 
			
		||||
 | 
			
		||||
const routes: Array<RouteRecordRaw> = [
 | 
			
		||||
  {
 | 
			
		||||
@ -17,19 +19,25 @@ const routes: Array<RouteRecordRaw> = [
 | 
			
		||||
    name: 'Home',
 | 
			
		||||
    component: () => import(/* webpackChunkName: "about" */ '../components/NavTop.vue')
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    path: '/about',
 | 
			
		||||
    name: 'About',
 | 
			
		||||
    // route level code-splitting
 | 
			
		||||
    // this generates a separate chunk (about.[hash].js) for this route
 | 
			
		||||
    // which is lazy-loaded when the route is visited.
 | 
			
		||||
    component: () => import(/* webpackChunkName: "about" */ '../views/About.vue')
 | 
			
		||||
  },
 | 
			
		||||
 
 | 
			
		||||
  // {
 | 
			
		||||
  //   path: '/about',
 | 
			
		||||
  //   name: 'About',
 | 
			
		||||
  //   // route level code-splitting
 | 
			
		||||
  //   // this generates a separate chunk (about.[hash].js) for this route
 | 
			
		||||
  //   // which is lazy-loaded when the route is visited.
 | 
			
		||||
  //   component: () => import(/* webpackChunkName: "about" */ '../views/About.vue')
 | 
			
		||||
  // }
 | 
			
		||||
  {
 | 
			
		||||
    path: '/archives',
 | 
			
		||||
    name: 'Archives',
 | 
			
		||||
    component: () => import('../views/mine/Archives.vue')
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    path: '/login',
 | 
			
		||||
    name: 'Login',
 | 
			
		||||
    component:Login
 | 
			
		||||
  }
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
const router = createRouter({
 | 
			
		||||
 | 
			
		||||
@ -1,5 +0,0 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="about">
 | 
			
		||||
    <h1>This is an about page</h1>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
							
								
								
									
										214
									
								
								src/views/login/Login.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										214
									
								
								src/views/login/Login.vue
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,214 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="login">
 | 
			
		||||
    <div class="box">
 | 
			
		||||
      <div class="left">
 | 
			
		||||
        <div class="title">
 | 
			
		||||
 | 
			
		||||
          您好,欢迎来到 <span class="orgname">Beelink</span>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="nosign">
 | 
			
		||||
          还没有账号? <span class="tosign"> 成为一名Beelink老师 </span>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="tab">
 | 
			
		||||
          <LoginTab @sel="Selectnum"></LoginTab>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        <div v-if="tabselected==1">
 | 
			
		||||
          <a-form :layout="formLayout">
 | 
			
		||||
            <a-form-item label="手机号" class="form-item">
 | 
			
		||||
              <a-input-group compact>
 | 
			
		||||
                <a-select default-value="Zhejiang" class="getcode">
 | 
			
		||||
                  <a-select-option value="Zhejiang">
 | 
			
		||||
                    中国+0086
 | 
			
		||||
                  </a-select-option>
 | 
			
		||||
                  <a-select-option value="Jiangsu"> Jiangsu </a-select-option>
 | 
			
		||||
                </a-select>
 | 
			
		||||
                <div class="line"></div>
 | 
			
		||||
                <a-input style="width: 50%" placeholder="请输入您的手机号" />
 | 
			
		||||
              </a-input-group>
 | 
			
		||||
            </a-form-item>
 | 
			
		||||
            <a-form-item label="验证码" class="form-item">
 | 
			
		||||
              <a-input-group compact>
 | 
			
		||||
                <div class="getcode" @click="getcode">点击获取验证码{{time==60?'':'('+time+')'}}</div>
 | 
			
		||||
                <div class="line"></div>
 | 
			
		||||
                <a-input style="width: 50%" placeholder="请输入您的验证码" />
 | 
			
		||||
              </a-input-group>
 | 
			
		||||
            </a-form-item>
 | 
			
		||||
            <div class="submit">立即登录</div>
 | 
			
		||||
          </a-form>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
           <div v-if="tabselected==2">
 | 
			
		||||
          <a-form :layout="formLayout">
 | 
			
		||||
            <a-form-item label="帐号" class="form-item">
 | 
			
		||||
              <a-input-group compact>
 | 
			
		||||
                <a-input style="width: 80%" placeholder="请输入您的邮箱或者手机号" />
 | 
			
		||||
              </a-input-group>
 | 
			
		||||
            </a-form-item>
 | 
			
		||||
            <a-form-item label="密码" class="form-item">
 | 
			
		||||
              <a-input-group compact>
 | 
			
		||||
                <a-input style="width: 70% " placeholder="请输入您的密码"  type="password" class="shuru"/>
 | 
			
		||||
                <div class="forget">忘记密码?</div>
 | 
			
		||||
              </a-input-group>
 | 
			
		||||
            </a-form-item>
 | 
			
		||||
            <div class="submit">立即登录</div>
 | 
			
		||||
          </a-form>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="right"></div>
 | 
			
		||||
    </div>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script lang="ts">
 | 
			
		||||
import { defineComponent, ref } from "vue";
 | 
			
		||||
import LoginTab from "@/components/login/LoginTab.vue";
 | 
			
		||||
export default defineComponent({
 | 
			
		||||
  name: "Login",
 | 
			
		||||
  components: {
 | 
			
		||||
    LoginTab,
 | 
			
		||||
  },
 | 
			
		||||
  setup() {
 | 
			
		||||
    const formLayout = {
 | 
			
		||||
      labelCol: 4,
 | 
			
		||||
      wrapperCol: 14,
 | 
			
		||||
    };
 | 
			
		||||
    const tabselected= ref(1)
 | 
			
		||||
    const time=ref(60)
 | 
			
		||||
     const Selectnum: (val: number) => void = (val: number) => {
 | 
			
		||||
      console.log("收到子组件事件", val)
 | 
			
		||||
 | 
			
		||||
      tabselected.value=val
 | 
			
		||||
    }
 | 
			
		||||
    const getcode: () => void=() =>{
 | 
			
		||||
      console.log(11111)
 | 
			
		||||
      const timestep=setInterval(()=>{
 | 
			
		||||
        console.log(11112)
 | 
			
		||||
        time.value=time.value-1
 | 
			
		||||
        if(time.value>0){
 | 
			
		||||
          console.log()
 | 
			
		||||
        }else{
 | 
			
		||||
          time.value=60
 | 
			
		||||
            clearInterval(timestep);
 | 
			
		||||
        }
 | 
			
		||||
      },1000)
 | 
			
		||||
    }
 | 
			
		||||
    return {
 | 
			
		||||
      formLayout,
 | 
			
		||||
      tabselected,
 | 
			
		||||
      Selectnum,
 | 
			
		||||
      getcode,
 | 
			
		||||
      time
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
});
 | 
			
		||||
</script>
 | 
			
		||||
<style lang="scss" scoped>
 | 
			
		||||
.login /deep/ .ant-select-selection {
 | 
			
		||||
  border: none;
 | 
			
		||||
}
 | 
			
		||||
.login /deep/ .ant-input {
 | 
			
		||||
  border: none;
 | 
			
		||||
}
 | 
			
		||||
.ant-input:focus {
 | 
			
		||||
  border: none;
 | 
			
		||||
  border-bottom: 1px solid white !important;
 | 
			
		||||
  box-shadow: none;
 | 
			
		||||
}
 | 
			
		||||
.login /deep/ .ant-form-item-label {
 | 
			
		||||
  line-height: 14px;
 | 
			
		||||
}
 | 
			
		||||
.login /deep/ .ant-form-item /deep/ label {
 | 
			
		||||
  color: #0dbba4;
 | 
			
		||||
  font-size: 11px;
 | 
			
		||||
  left:1px
 | 
			
		||||
}
 | 
			
		||||
.login {
 | 
			
		||||
  min-width: 100vw;
 | 
			
		||||
  height: 100vh;
 | 
			
		||||
  background: url("../../../static/loginbg.png");
 | 
			
		||||
  background-size: 100% 130%;
 | 
			
		||||
  background-repeat: no-repeat;
 | 
			
		||||
  padding-top: 145px;
 | 
			
		||||
  .box {
 | 
			
		||||
    display: flex;
 | 
			
		||||
    justify-content: space-around;
 | 
			
		||||
    .left {
 | 
			
		||||
      width: 314px;
 | 
			
		||||
      .title {
 | 
			
		||||
        font-size: 17px;
 | 
			
		||||
        font-weight: bold;
 | 
			
		||||
      }
 | 
			
		||||
      .orgname {
 | 
			
		||||
        font-size: 29px;
 | 
			
		||||
        color: #0dbba4;
 | 
			
		||||
        cursor: pointer;
 | 
			
		||||
      }
 | 
			
		||||
      .nosign {
 | 
			
		||||
        font-size: 12px;
 | 
			
		||||
        color: #666666;
 | 
			
		||||
        margin-top: 17px;
 | 
			
		||||
        margin-bottom: 35px;
 | 
			
		||||
      }
 | 
			
		||||
      .tosign {
 | 
			
		||||
        color: #0dbba4;
 | 
			
		||||
        cursor: pointer;
 | 
			
		||||
      }
 | 
			
		||||
      .tab {
 | 
			
		||||
        margin-bottom: 30px;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      .form-item {
 | 
			
		||||
        border-bottom: 1px solid #e5e5e5;
 | 
			
		||||
        font-size: 15px;
 | 
			
		||||
        .shuru{
 | 
			
		||||
          margin-right:30px
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      .line {
 | 
			
		||||
        width: 1px;
 | 
			
		||||
        height: 14px;
 | 
			
		||||
        background: #e5e5e5;
 | 
			
		||||
        margin-top: 10px;
 | 
			
		||||
        position: relative;
 | 
			
		||||
        z-index: 999;
 | 
			
		||||
      }
 | 
			
		||||
      .getcode {
 | 
			
		||||
        font-size: 15px;
 | 
			
		||||
        color: #08ae98;
 | 
			
		||||
        width: 150px;
 | 
			
		||||
        line-height: 30px;
 | 
			
		||||
        cursor: pointer;
 | 
			
		||||
      }
 | 
			
		||||
      .submit {
 | 
			
		||||
        width: 143px;
 | 
			
		||||
        height: 35px;
 | 
			
		||||
        background: linear-gradient(
 | 
			
		||||
          90deg,
 | 
			
		||||
          #00dac2,
 | 
			
		||||
          #42de9e,
 | 
			
		||||
          #88e062,
 | 
			
		||||
          #d0eb3e,
 | 
			
		||||
          #fffa18
 | 
			
		||||
        );
 | 
			
		||||
        border-radius: 18px;
 | 
			
		||||
        font-size: 15px;
 | 
			
		||||
        color: white;
 | 
			
		||||
        font-weight: 800;
 | 
			
		||||
        text-align: center;
 | 
			
		||||
        line-height: 35px;
 | 
			
		||||
        margin-top: 45px;
 | 
			
		||||
      }
 | 
			
		||||
      .forget{
 | 
			
		||||
        color: #08AE98;
 | 
			
		||||
        font-size: 12px;
 | 
			
		||||
        margin-top:8px;
 | 
			
		||||
        cursor: pointer;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    .right {
 | 
			
		||||
      width: 690px;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								static/loginbg.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								static/loginbg.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 168 KiB  | 
@ -7883,8 +7883,8 @@ sass-graph@2.2.5:
 | 
			
		||||
 | 
			
		||||
sass-loader@^10.0.2:
 | 
			
		||||
  version "10.0.2"
 | 
			
		||||
  resolved "https://registry.npm.taobao.org/sass-loader/download/sass-loader-10.0.2.tgz?cache=0&sync_timestamp=1599136698634&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsass-loader%2Fdownload%2Fsass-loader-10.0.2.tgz#c7b73010848b264792dd45372eea0b87cba4401e"
 | 
			
		||||
  integrity sha1-x7cwEISLJkeS3UU3LuoLh8ukQB4=
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.0.2.tgz#c7b73010848b264792dd45372eea0b87cba4401e"
 | 
			
		||||
  integrity sha512-wV6NDUVB8/iEYMalV/+139+vl2LaRFlZGEd5/xmdcdzQcgmis+npyco6NsDTVOlNA3y2NV9Gcz+vHyFMIT+ffg==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    klona "^2.0.3"
 | 
			
		||||
    loader-utils "^2.0.0"
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user