注册页面重构
This commit is contained in:
parent
1996d90a67
commit
db6e59df25
|
@ -1,185 +0,0 @@
|
||||||
<template>
|
|
||||||
<div class="addPhoto-wrap">
|
|
||||||
<div class="main-wrap">
|
|
||||||
<!-- <div class="img-title">
|
|
||||||
<span>请上传人脸照片</span>
|
|
||||||
</div> -->
|
|
||||||
<div class="main">
|
|
||||||
<div class="img-item" >
|
|
||||||
<div class="template-wrap">
|
|
||||||
<!-- 使用背景图展示 -->
|
|
||||||
<!-- <div class="imgs" :style="{backgroundImage:`url(${photo.url})`}"></div> -->
|
|
||||||
<!-- 用image组件展示 -->
|
|
||||||
<div class="img-wrap">
|
|
||||||
<van-image
|
|
||||||
v-show="photo"
|
|
||||||
class="imgs"
|
|
||||||
fit="contain"
|
|
||||||
:src="photo"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<div class="temp" v-show="!photo" >
|
|
||||||
<!-- <img class="cameraIcon" src="@/assets/image/camera-icon.png" alt=""> -->
|
|
||||||
<svg class="cameraIcon" viewBox="0 0 24 24"><path fill="currentColor" d="M20,4H16.83L15,2H9L7.17,4H4A2,2 0 0,0 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V6A2,2 0 0,0 20,4M20,18H4V6H8.05L9.88,4H14.12L15.95,6H20V18M12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17A5,5 0 0,0 17,12A5,5 0 0,0 12,7M12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15Z" /></svg>
|
|
||||||
<span>头像上传</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<input :key="isKey" @change="onChange($event)" id="myInput" ref="myInput" type="file" accept="image/*">
|
|
||||||
<!-- <input :key="isKey" @change="onChange($event)" id="myInput" ref="myInput" type="file" accept="image/*"> -->
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- 用来放添加按钮 -->
|
|
||||||
<!-- <div class="img-item" v-show="!photo.url">
|
|
||||||
<div class="template-wrap">
|
|
||||||
<input :key="isKey" @change="onChange($event)" id="myInput" ref="myInput" type="file" accept="image/*" capture="camera">
|
|
||||||
<div class="img-wrap">
|
|
||||||
<div class="temp">
|
|
||||||
<img class="cameraIcon" src="@/assets/image/camera-icon.png" alt="">
|
|
||||||
<span>头像上传</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div> -->
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { JudgeCompress, RotateImage, CheckFile, FiletoDataURL } from '@/utils/handleImage'
|
|
||||||
import { Image } from 'vant'
|
|
||||||
|
|
||||||
|
|
||||||
export default {
|
|
||||||
name:'AddPhoto',
|
|
||||||
// props:{
|
|
||||||
// photo:Object,
|
|
||||||
// },
|
|
||||||
components:{
|
|
||||||
[Image.name]:Image,
|
|
||||||
},
|
|
||||||
data(){
|
|
||||||
return {
|
|
||||||
isKey:0,
|
|
||||||
compressSize:100,
|
|
||||||
photo:'',
|
|
||||||
}
|
|
||||||
},
|
|
||||||
methods:{
|
|
||||||
onChange(e) {
|
|
||||||
if(!e.target.files[0]){ //用户可能取消选择,此时啥都不用做
|
|
||||||
return
|
|
||||||
}
|
|
||||||
this.$emit('readyHandle') //告诉父级已经开始处理.
|
|
||||||
this.photo = ''
|
|
||||||
let file = e.target.files[0];
|
|
||||||
let _this = this
|
|
||||||
if(file){
|
|
||||||
var imageFile = CheckFile(file);
|
|
||||||
if(!imageFile){
|
|
||||||
this.$Toast.error('文件格式错误!')
|
|
||||||
return
|
|
||||||
}else{
|
|
||||||
RotateImage(imageFile).then(res =>{ //传入文件,旋转后返回文件进行压缩
|
|
||||||
JudgeCompress(res,this.compressSize,0.95).then(res => { //传入文件,压缩返回压缩后的文件
|
|
||||||
FiletoDataURL(res).then(res => { //传入文件,返回base64 DataURL
|
|
||||||
_this.photo = res
|
|
||||||
_this.$emit('changePhoto', res)
|
|
||||||
_this.isKey = (new Date()).getTime() //修改key以防止重新选择同一张图不触发change
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="stylus" scoped>
|
|
||||||
.addPhoto-wrap
|
|
||||||
width 100%
|
|
||||||
position relative
|
|
||||||
z-index 999
|
|
||||||
.main-wrap
|
|
||||||
width 100%
|
|
||||||
padding 0
|
|
||||||
box-sizing border-box
|
|
||||||
.img-title
|
|
||||||
// background rgb(64,158,255)
|
|
||||||
padding 10px
|
|
||||||
text-align center
|
|
||||||
font-size 14px
|
|
||||||
align-items center
|
|
||||||
color black
|
|
||||||
padding-left 5px
|
|
||||||
.main
|
|
||||||
width 100%
|
|
||||||
box-sizing border-box
|
|
||||||
padding 40px 5px
|
|
||||||
display flex
|
|
||||||
justify-content center
|
|
||||||
.img-item
|
|
||||||
width 50%
|
|
||||||
height 0
|
|
||||||
padding-bottom 50%
|
|
||||||
position relative
|
|
||||||
overflow hidden
|
|
||||||
box-sizing border-box
|
|
||||||
display inline-block
|
|
||||||
.template-wrap
|
|
||||||
box-sizing border-box
|
|
||||||
position absolute
|
|
||||||
overflow hidden
|
|
||||||
bottom 5px
|
|
||||||
top 5px
|
|
||||||
left 5px
|
|
||||||
overflow hidden
|
|
||||||
right 5px
|
|
||||||
// background rgba(0,133,208,0.7)
|
|
||||||
padding 5px
|
|
||||||
.img-wrap
|
|
||||||
box-sizing border-box
|
|
||||||
width 100%
|
|
||||||
height 100%
|
|
||||||
border-radius 5px
|
|
||||||
overflow hidden
|
|
||||||
.imgs
|
|
||||||
width 100%
|
|
||||||
height 100%
|
|
||||||
.temp
|
|
||||||
position absolute
|
|
||||||
top 5px
|
|
||||||
bottom 5px
|
|
||||||
left 5px
|
|
||||||
right 5px
|
|
||||||
border-radius 5px
|
|
||||||
overflow hidden
|
|
||||||
position absolute
|
|
||||||
left 50%
|
|
||||||
top 50%
|
|
||||||
transform translate(-50%, -50%)
|
|
||||||
display flex
|
|
||||||
flex-direction column
|
|
||||||
justify-content center
|
|
||||||
align-items center
|
|
||||||
span
|
|
||||||
color black
|
|
||||||
margin-top 10px
|
|
||||||
font-size 14px
|
|
||||||
.cameraIcon
|
|
||||||
width 60px
|
|
||||||
height 60px
|
|
||||||
color black
|
|
||||||
#myInput
|
|
||||||
position absolute
|
|
||||||
left 0
|
|
||||||
top 0
|
|
||||||
z-index 500
|
|
||||||
display inline-block
|
|
||||||
opacity 0
|
|
||||||
width 100%
|
|
||||||
height 100%
|
|
||||||
|
|
||||||
</style>
|
|
|
@ -3,89 +3,106 @@
|
||||||
<div class="background-wrap">
|
<div class="background-wrap">
|
||||||
<img class="background-image" src="@/assets/image/track.jpg" />
|
<img class="background-image" src="@/assets/image/track.jpg" />
|
||||||
</div>
|
</div>
|
||||||
<!-- <div class="top-bgimg-wrap">
|
<div class="top-brand-wrap">
|
||||||
<img class="top-img" src="@/assets/image/bgimg-top.png"/>
|
<h1 class="title">注册</h1>
|
||||||
<div class="logo-wrap">
|
|
||||||
<img class="yidong-img" src="@/assets/image/yidong.png"/>
|
|
||||||
<img class="fiveG-img" src="@/assets/image/5g.png"/>
|
|
||||||
</div>
|
</div>
|
||||||
</div> -->
|
<div class="card flex-container">
|
||||||
<div class="info-card flex-container">
|
<!-- <add-photo @changePhoto="changePhoto" @readyHandle='readyHandle'></add-photo> -->
|
||||||
<add-photo @changePhoto="changePhoto" @readyHandle='readyHandle'></add-photo>
|
<van-form>
|
||||||
<van-form class="form">
|
|
||||||
<van-cell-group inset>
|
<van-cell-group inset>
|
||||||
|
<van-field required name="uploader" label="照片">
|
||||||
|
<template #input>
|
||||||
|
<van-uploader v-model="photoList" :after-read="readyHandle" :max-count="1" />
|
||||||
|
</template>
|
||||||
|
</van-field>
|
||||||
<van-field required v-model="formData.Name" name="姓名" label="姓名" clearable placeholder="请输入姓名" />
|
<van-field required v-model="formData.Name" name="姓名" label="姓名" clearable placeholder="请输入姓名" />
|
||||||
<van-field required type='number' v-model="formData.Phone" name="手机号" label="手机号" clearable placeholder="请输入手机号" />
|
<van-field required type='number' v-model="formData.Phone" name="手机号" label="手机号" clearable placeholder="请输入手机号" />
|
||||||
</van-cell-group>
|
</van-cell-group>
|
||||||
|
<van-button type="primary" block round @click="onSubmit">提交</van-button>
|
||||||
</van-form>
|
</van-form>
|
||||||
<div class="button" @click="onSubmit">提交</div>
|
|
||||||
</div>
|
</div>
|
||||||
<!-- <div class="hint">
|
|
||||||
温馨提示:请使用只包含本人正面头像的清晰照片进行注册
|
|
||||||
</div> -->
|
|
||||||
<!-- <img class="bottom-img" src="@/assets/image/bgimg-bottom.png" alt=""> -->
|
|
||||||
<!-- <van-image-preview v-model="showPreview" :images="images"> </van-image-preview> -->
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import addPhoto from "./components/addPhoto"
|
import { Form, Field, CellGroup, Dialog, Toast, Button, Uploader } from 'vant'
|
||||||
import { Field, Dialog } from 'vant';
|
import { JudgeCompress, RotateImage, CheckFile, FiletoDataURL } from '@/utils/handleImage'
|
||||||
import { Runnerverify} from 'api/home'
|
import { Runnerverify } from 'api/home'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name:'Home',
|
name: 'Home',
|
||||||
components:{
|
components:{
|
||||||
addPhoto,
|
[Form.name]: Form,
|
||||||
[Field.name]:Field,
|
[Field.name]: Field,
|
||||||
[Dialog.name]:Dialog
|
[Dialog.name]: Dialog,
|
||||||
|
[Toast.name]: Toast,
|
||||||
|
[CellGroup.name]: CellGroup,
|
||||||
|
[Button.name]: Button,
|
||||||
|
[Uploader.name]: Uploader
|
||||||
},
|
},
|
||||||
activated(){
|
activated(){
|
||||||
|
|
||||||
},
|
},
|
||||||
watch:{
|
watch: {
|
||||||
Code(val){
|
Code(val){
|
||||||
sessionStorage.Code = val
|
sessionStorage.Code = val
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data(){
|
data(){
|
||||||
return {
|
return {
|
||||||
photo:'',
|
photo: '',
|
||||||
formData:{
|
formData: {
|
||||||
Name:'',
|
Name: '',
|
||||||
Phone:'',
|
Phone: '',
|
||||||
Code:''
|
Code: ''
|
||||||
},
|
},
|
||||||
Code:null, //存入本地的code
|
Code: null,
|
||||||
|
photoList: []
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods:{
|
methods: {
|
||||||
changePhoto(imgBase64){
|
readyHandle(file) {
|
||||||
this.photo = imgBase64
|
let _this = this
|
||||||
this.$Loading.hidden()
|
if (file.file){
|
||||||
},
|
var imageFile = CheckFile(file.file)
|
||||||
readyHandle(){
|
if (!imageFile){
|
||||||
this.$Loading.show('正在处理图片...')
|
Toast.fail('图片文件格式错误!')
|
||||||
|
return
|
||||||
|
} else {
|
||||||
|
RotateImage(imageFile).then(res => { //传入文件,旋转后返回文件进行压缩
|
||||||
|
JudgeCompress(res, this.compressSize,0.95).then(res => { //传入文件,压缩返回压缩后的文件
|
||||||
|
FiletoDataURL(res).then(res => { //传入文件,返回base64 DataURL
|
||||||
|
_this.photo = res
|
||||||
|
_this.photoList = [{url: res, isImage: true}]
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
Toast.success('上传成功')
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
onSubmit(){
|
onSubmit(){
|
||||||
if(this.verifyForm()){
|
if (this.verifyForm()){
|
||||||
let data = {
|
let data = {
|
||||||
Name: this.formData.Name,
|
Name: this.formData.Name,
|
||||||
facePic: this.photo,
|
facePic: this.photo,
|
||||||
Phone:this.formData.Phone
|
Phone: this.formData.Phone
|
||||||
}
|
}
|
||||||
this.$Loading.show('正在注册...')
|
Toast.loading({
|
||||||
|
message: '正在注册……',
|
||||||
|
forbidClick: true,
|
||||||
|
});
|
||||||
Runnerverify(data).then(res => {
|
Runnerverify(data).then(res => {
|
||||||
if(res.code === 0){
|
if (res.code === 0){
|
||||||
this.$Toast.success('注册成功!')
|
Toast.success('注册成功!')
|
||||||
this.$router.push('/photos')
|
this.$router.push('/photos')
|
||||||
localStorage.images = JSON.stringify(res.data)
|
localStorage.images = JSON.stringify(res.data)
|
||||||
}else if(res.code === 2004){ //号码已被使用
|
} else if (res.code === 2004){ //号码已被使用
|
||||||
Dialog.alert({
|
Dialog.alert({
|
||||||
title: '温馨提示',
|
title: '提示',
|
||||||
message: '号码已被占用,请使用新的手机号码进行注册!'
|
message: '号码已注册。请使用新的手机号码进行注册,或使用此号码登录。'
|
||||||
});
|
});
|
||||||
}else if(res.code == 2021){ //如果返回没有照片则提示用户
|
} else if (res.code === 2021){ //如果返回没有照片则提示用户
|
||||||
localStorage.images = []
|
localStorage.images = []
|
||||||
this.$router.push({
|
this.$router.push({
|
||||||
path:'/photos',
|
path:'/photos',
|
||||||
|
@ -93,29 +110,27 @@ export default {
|
||||||
type:'hintPage'
|
type:'hintPage'
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}else{
|
} else {
|
||||||
this.$Toast.error('注册失败:' + res.msg)
|
Toast.fail('注册失败:' + res.msg)
|
||||||
}
|
}
|
||||||
this.$Loading.hidden()
|
Toast.clear()
|
||||||
}).catch(err => {
|
}).catch(err => {
|
||||||
this.$Loading.hidden()
|
Toast.fail('错误:' + err)
|
||||||
|
Toast.clear()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
verifyForm(){ //表单校验
|
verifyForm(){
|
||||||
// let idcardReg = /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X|x)$/;
|
if (!this.photo){
|
||||||
// let IDcardFlag = idcardReg.test(this.formData.IDcard) ? true : false;
|
Toast.fail('请上传人脸照片!')
|
||||||
let NameFlag = this.formData.Name.length && this.formData.Name.length > 0 ? true : false
|
|
||||||
if(!this.photo){
|
|
||||||
this.$Toast.error('请上传人脸照片!')
|
|
||||||
return
|
return
|
||||||
}else if(!NameFlag){
|
} else if (!this.formData.Name.length){
|
||||||
this.$Toast.error('请填写姓名!')
|
Toast.fail('请填写姓名!')
|
||||||
return
|
return
|
||||||
}else if(this.formData.Phone.length !== 11){
|
} else if (this.formData.Phone.length !== 11){
|
||||||
this.$Toast.error('请填写正确的手机号码!')
|
Toast.fail('请填写正确的手机号码!')
|
||||||
return
|
return
|
||||||
}else{
|
} else {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue