Browse Source

登录页修改

master
yuanshun 1 year ago
parent
commit
2efb73bd44
  1. BIN
      src/assets/img/icon/icon-add.png
  2. BIN
      src/assets/img/icon/icon-code.png
  3. BIN
      src/assets/img/icon/icon-delete.png
  4. BIN
      src/assets/img/icon/icon-edit.png
  5. 108
      src/components/list/ContractList.vue
  6. 128
      src/components/list/TalentList.vue
  7. 81
      src/components/list/message.vue
  8. 23
      src/view/contract/index.vue
  9. 91
      src/view/login/index.vue
  10. 16
      src/view/message/index.vue
  11. 27
      src/view/talent/index.vue
  12. 2
      tsconfig.json

BIN
src/assets/img/icon/icon-add.png

Binary file not shown.

After

Width: 68  |  Height: 68  |  Size: 2.3 KiB

BIN
src/assets/img/icon/icon-code.png

Binary file not shown.

After

Width: 76  |  Height: 76  |  Size: 3.0 KiB

BIN
src/assets/img/icon/icon-delete.png

Binary file not shown.

After

Width: 140  |  Height: 140  |  Size: 4.5 KiB

BIN
src/assets/img/icon/icon-edit.png

Binary file not shown.

After

Width: 68  |  Height: 68  |  Size: 1.8 KiB

108
src/components/list/ContractList.vue

@ -0,0 +1,108 @@
<script setup lang="ts">
import { useRouter } from "vue-router";
const props=defineProps({
contractList:{
type:Array,
default:()=>[]
}
})
const router=useRouter()
const gotoDetail=(id:any):void=>{
router.push('/task/details/'+id)
}
</script>
<template>
<dl v-for="(item,index) in contractList" :key="index" @click="gotoDetail(item.id)">
<dd>
<h3>移动端小程序前端开发前端工程师</h3>
<span>履约中</span>
<van-icon name="arrow" />
</dd>
<dt>
<label>公司名称</label>
<span>北京驻场无忧科技有限公司</span>
</dt>
<dt>
<label>合约类型</label>
<span>技术服务</span>
</dt>
<dt>
<label>合约时间</label>
<span></span>
</dt>
<dt>
<label>签约时间</label>
<span></span>
</dt>
<dt>
<label>合约进度</label>
<span></span>
</dt>
<dt class="contract-progress">
<i></i>
<i></i>
<i></i>
<i></i>
</dt>
</dl>
</template>
<style scoped>
dl{
font-size: 0.64rem;
color: #666666;
padding: 1rem 0.7rem;
border-bottom: 1px solid #eeeeee;
}
dl dd{
display: flex;
margin-bottom: 0.9rem;
align-items: center;
}
dl dd h3{
font-size: 0.8rem;
font-weight: 500;
color: #333333;
flex: 1;
}
dl dd span{
text-align: right;
font-size: 0.75rem;
color: #FF9415;
}
dl dd i{
font-size: 0.75rem;
}
dl dt{
display: flex;
margin-bottom: 0.72rem;
}
dl dt:last-child{
margin-bottom: 0;
}
dl dt label{
flex: 1;
}
dl dt span{
text-align: right;
}
.contract-progress{
display: flex;
height: 0.5rem;
width: 100%;
}
.contract-progress i{
flex: 1;
background: #f3f3f3;
margin: 0 1px;
}
.contract-progress i.green{
background: #50D400;
}
.contract-progress i.orange{
background: #FE9215;
}
.contract-progress i.red{
background: #FF4800;
}
</style>

128
src/components/list/TalentList.vue

@ -0,0 +1,128 @@
<script setup lang="ts">
import { useRouter } from "vue-router";
const props=defineProps({
talentList:{
type:Array,
default:()=>[]
}
})
const router=useRouter()
const gotoDetail=(id:any)=>{
router.push('/talent/details/'+id)
}
</script>
<template>
<div class="talent-item" v-for="(item,index) in talentList" :key="index" @click="gotoDetail(item.id)">
<div class="talent-item-top">
<div class="talent-item-pic">
<img src="../../assets/img/icon/icon-message.png"/>
</div>
<div class="talent-item-cont">
<h3>理想<span>驻场</span><span>远程</span><span>全职</span></h3>
<p>前端工程师 | 5 | 本科 | 23</p>
<dl>
<dt>vue</dt>
<dt>node.js</dt>
<dt>react</dt>
</dl>
</div>
</div>
<div class="talent-item-bottom">
<label>已做两个项目要</label>
<span><van-icon name="location-o" />北京</span>
</div>
</div>
</template>
<style scoped>
.talent-item{
margin: 0 0rem 0.53rem;
padding: 0.77rem 0.64rem 0;
background: #FFFFFF;
border-radius: 0.53rem;
font-size: 0.69rem;
}
.talent-item-top{
display: flex;
padding-bottom: 0.75rem;
border-bottom: 1px solid #f5f5f5;
}
.talent-item-pic{
width: 4rem;
height: 4rem;
border-radius: 0.27rem;
overflow: hidden;
margin-right: 0.85rem;
}
.talent-item-pic img{
width: 100%;
height: 100%;
}
.talent-item-cont{}
.talent-item-cont h3{
font-size: 0.91rem;
font-weight: 400;
color: #333333;
display: flex;
align-items: center;
margin-bottom: 0.64rem;
}
.talent-item-cont h3 span{
width: 1.97rem;
height: 0.85rem;
line-height: 0.85rem;
border-radius: 0.53rem;
font-size: 0.59rem;
font-weight: 300;
color: #FFFFFF;
margin-left: 0.2rem;
text-align: center;
padding: 0.1rem 0;
}
.talent-item-cont h3 span:nth-child(1){
background: linear-gradient(90deg, #FEA829, #FE8F27);
}
.talent-item-cont h3 span:nth-child(2){
background: linear-gradient(90deg, #55EDB9, #52DEA4);
}
.talent-item-cont h3 span:nth-child(3){
background: linear-gradient(90deg, #42C3E8, #249AF6);
}
.talent-item-cont p{
font-size: 0.69rem;
line-height: 0.69rem;
font-weight: 100;
color: #666666;
margin-bottom: 0.56rem;
}
dl{
display: flex;
flex-flow: wrap;
}
dl dt{
padding: 0.3rem 0.5rem;
font-size: 0.59rem;
line-height: 0.59rem;
font-weight: 300;
color: #666666;
margin-right: 0.27rem;
background: #F6F7F8;
border-radius: 0.16rem;
margin-bottom: 0.3rem;
}
.talent-item-bottom{
display: flex;
padding: 0.72rem 0 0.72rem;
}
.talent-item-bottom label{
flex: 1;
}
.talent-item-bottom span{
text-align: right;
}
.talent-item-bottom i{
font-size: 0.8rem;
font-weight: 600;
margin-right: 0.1rem;
}
</style>

81
src/components/list/message.vue

@ -0,0 +1,81 @@
<script setup lang="ts">
import { useRouter } from "vue-router";
const props=defineProps({
messageList:{
type:Array,
default:()=>[]
}
})
const router=useRouter()
const gotoDetail=(id:any):void=>{
router.push('/message/talk/'+id)
}
</script>
<template>
<dl v-for="(item,index) in messageList" :key="index" @click="gotoDetail(item.id)">
<dd>
<img src="../../assets/img/icon/icon-message.png"/>
<span></span>
</dd>
<dt>
<h3>北京驻场无忧科技有限公司<span>5分钟前</span></h3>
<p>你好我们这边在招聘前端工程师看了......</p>
</dt>
</dl>
</template>
<style scoped>
dl{
font-size: 0.64rem;
color: #666666;
padding: 0.9rem 0;
margin: 0 0.67rem;
border-bottom: 1px solid #eeeeee;
display: flex;
align-items: center;
}
dl dd{
position: relative;
margin-right: 0.56rem;
}
dl dd img{
width: 2.61rem;
height: 2.61rem;
border-radius: 50%;
}
dl dd span{
position: absolute;
top: 0;
right:0;
width: 0.32rem;
height: 0.32rem;
background: #FF0000;
border-radius: 50%;
}
dl dt{
flex: 1;
}
dl dt h3{
font-size: 0.8rem;
line-height: 0.8rem;
font-weight: 500;
color: #333333;
margin-bottom: 0.43rem;
}
dl dt h3 span{
float: right;
color: #999999;
font-size: 0.64rem;
font-weight: 100;
}
dl dt p{
font-size: 0.69rem;
line-height: 0.69rem;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
}
</style>

23
src/view/contract/index.vue

@ -0,0 +1,23 @@
<script setup lang="ts">
import FooterTabbar from '@/components/FooterTabbar.vue'
import ContractList from '@/components/list/ContractList.vue'
import { reactive } from 'vue'
const contractList=reactive([
{
id:1
},
{
id:2
},
])
</script>
<template>
<div>
<ContractList :contractList="contractList"></ContractList>
<FooterTabbar></FooterTabbar>
</div>
</template>
<style scoped>
</style>

91
src/view/login/index.vue

@ -1,11 +1,90 @@
<script setup lang="ts">
import { ref } from "vue";
let checked=ref(false)
</script>
<template>
<div>
登录页
<van-icon class="icon-left" name="arrow-left" />
<div class="login-form">
<h3>验证码登录</h3>
<div class="login-form-item">
<i class="icon-phone"></i>
<input placeholder="请输入手机号" type="text"/>
</div>
<div class="login-form-item">
<i class="icon-code"></i>
<input placeholder="请输入手机号" type="text"/>
<span>获取验证码</span>
</div>
<van-button type="primary" block>块级元素</van-button>
<div class="login-form-label">
<van-checkbox v-model="checked">我已阅读</van-checkbox>
<router-link to="/login/serviceAgree">IT企业平台服务协议</router-link>
<router-link to="/login/privacyPolicy">隐私政策</router-link>
</div>
</div>
</div>
</template>
<script setup lang="ts">
</script>
<style lang="" scoped>
<style scoped>
.icon-left{
font-size: 0.8rem;
margin: 0.67rem 0 0 0.67rem;
}
.login-form{
padding: 0 1.07rem;
}
.login-form h3{
font-size: 1.39rem;
line-height: 1.39rem;
font-weight: 400;
color: #333333;
margin-top: 2.35rem;
margin-bottom: 4rem;
padding-left: 0.3rem;
}
.login-form-item{
display: flex;
font-size: 0.75rem;
font-weight: 300;
color: #9FA7AD;
margin: 0 0.18rem 2rem;
padding: 0.5rem 0;
border-bottom: 1px solid #E7E7E7;
align-items: center;
}
.icon-phone{
background: url('@/assets/img/icon/icon-phone.png') no-repeat;
background-size: 100%;
width: 1.01rem;
height: 1.01rem;
}
.icon-code{
background: url('@/assets/img/icon/icon-code.png') no-repeat;
background-size: 100%;
width: 1.01rem;
height: 1.01rem;
}
.login-form-item input{
flex: 1;
margin-left: 0.48rem;
}
.login-form-item span{
font-size: 0.75rem;
font-weight: 300;
color: #FE9527;
border-left: 1px solid #FE9527;
line-height: 0.75rem;
padding-left: 0.56rem;
}
.login-form-label{
display: flex;
justify-content: center;
align-items: center;
position: fixed;
bottom: 1.5rem;
left: 0;
width: 100%;
}
</style>

16
src/view/message/index.vue

@ -0,0 +1,16 @@
<script setup lang="ts">
import FooterTabbar from '@/components/FooterTabbar.vue'
import message from '@/components/list/message.vue'
import { reactive } from "vue";
let messageList=reactive([{id:1},{id:2}])
</script>
<template>
<div>
<message :messageList="messageList"></message>
<FooterTabbar></FooterTabbar>
</div>
</template>
<style scoped>
</style>

27
src/view/talent/index.vue

@ -0,0 +1,27 @@
<script setup lang="ts">
import FooterTabbar from '@/components/FooterTabbar.vue'
import TalentList from '@/components/list/TalentList.vue'
import { reactive } from 'vue'
const talentList=reactive([
{
id:1
},
{
id:2
},
])
</script>
<template>
<div class="talent-page">
<TalentList :talentList="talentList"></TalentList>
<FooterTabbar></FooterTabbar>
</div>
</template>
<style scoped>
.talent-page{
background: #f9f9f9;
padding: 0 0.59rem 3rem;
min-height: calc(100vh - 3rem);
}
</style>

2
tsconfig.json

@ -16,7 +16,7 @@
/* Linting */
"strict": true,
"noUnusedLocals": true,
"noUnusedLocals": false,
"noUnusedParameters": true,
"noFallthroughCasesInSwitch": true,
"paths": {

Loading…
Cancel
Save