引导页、验证码登录、账号登录、注册页面、找回密码、首页(业务员、工程师、客服、客户)

master
chen 2022-03-16 19:40:58 +08:00
parent 3690f2da3b
commit 511ca20faf
53 changed files with 1003 additions and 46 deletions

View File

@ -64,9 +64,10 @@
button:after{content: none!important;}
.borbot{border-bottom: 2rpx solid #E6E6E6;}
.borbot:last-child{border-bottom: none;}
.bbot{border-bottom: 2rpx solid #E6E6E6;}
.bbot{border-bottom: 2rpx solid #EEEEEE;}
.borbot-df{border: 2rpx solid #DFDFDF;}
.borbot-cc{border: 2rpx solid #CCCCCC;}
.bleft {border-left: 1rpx solid #EEEEEE;}
/* 行高 */
.line-h30{line-height: 30rpx;}

View File

@ -23,12 +23,18 @@
flex-shrink: 0;
border: 1rpx solid #03affb;
color: #03affb;
width: 170rpx;
height: 45rpx;
line-height: 45rpx;
border-radius: 24rpx;
padding: 4rpx 20rpx;
padding: 4rpx 0rpx;
text-align: center;
margin-left: 20rpx;
}
.obtainIng {
background-color: #03affb;
color: #FFFFFF;
}
.placeholderColor {color: #bfbfbf;}
.register-radio {transform: scale(0.5);margin-left: -10rpx;margin-right: -10rpx;}
uni-radio .uni-radio-input {border: 1rpx solid #444444;}
@ -38,6 +44,7 @@ uni-radio .uni-radio-input {border: 1rpx solid #444444;}
position: absolute;right: 0;
top: 50%;
transform: translateY(-50%);
z-index: 1;
}
.clear-close {
position: relative;
@ -56,3 +63,145 @@ uni-radio .uni-radio-input {border: 1rpx solid #444444;}
.clear-close span:first-child {transform: rotate(45deg);}
.clear-close span:last-child {transform: rotate(-45deg);}
/* 登录 */
.login-img {
width: 100%;
}
.login-box {
position: absolute;
left: 0;
right: 0;
top: 46%;
padding: 0 50rpx;
}
.login-input-box {
position: relative;
display: flex;
align-items: center;
border: 1rpx solid #cbcccb;
border-radius: 10rpx;
padding: 20rpx;
margin-bottom: 40rpx;
}
.login-code-btn {
position: absolute;
right: 20rpx;
top: 50%;
transform: translateY(-50%);
background-color: #03affb;
color: #FFFFFF;
padding: 10rpx 20rpx;
border-radius: 10rpx;
}
.login-input-box input {
border-left: 1rpx solid #EEEEEE;
margin-left: 20rpx;
padding-left: 20rpx;
}
.login-btn {
height: 80rpx;
line-height: 80rpx;
text-align: center;
background-color: #03affb;
border-radius: 10rpx;
color: #FFFFFF;
}
/* 忘记密码 */
.forget-title{color: #787a81;}
.forget-input-box{
border-bottom: 1rpx solid #EEEEEE;
padding: 20rpx 0;
margin-bottom: 30rpx;
}
.forget-obtain-code {
position: absolute;
right: 0rpx;
top: 0rpx;
background-color: #03affb;
color: #FFFFFF;
padding: 10rpx 20rpx;
border-radius: 10rpx;
}
.forget-btn {
width: 422rpx;
height: 75rpx;
line-height: 75rpx;
text-align: center;
background-color: #03affb;
color: #FFFFFF;
border-radius: 75rpx;
margin: 0 auto;
box-shadow: 0rpx 10rpx 30rpx rgba(3, 175, 251,0.3);
margin-top: 80rpx;
}
/* 首页 */
.home-message-box {line-height: 60rpx;}
.home-message-box image {
width: 30rpx;
height: 35rpx;
}
.home-message-box view {
position: absolute;
left: 14rpx;
top: -16rpx;
width: 40rpx;
height: 40rpx;
line-height: 40rpx;
text-align: center;
border-radius: 100%;
font-size: 22rpx;
background-color: #e93030;
color: #FFFFFF;
transform: scale(.8);
}
.project-notice-box {
position: relative;
z-index: 1;
background-color: #FFFFFF;
margin: 20rpx 0;
border-radius: 10rpx;
box-shadow: 6rpx 6rpx 20rpx rgba(0, 162, 234, 0.3);
margin-top: -70rpx;
padding: 20rpx 0;
}
.home-fun-box {
background-color: #FFFFFF;
padding: 30rpx;
margin-bottom: 20rpx;
}
.fun-title::before {
content: '';
display: block;
width: 7rpx;
height: 30rpx;
background: linear-gradient(to top, #FFFFFF 0%, #03affb 40%, #03affb 100%);
border-radius: 26%;
margin-right: 10rpx;
}
.home-solution {
background-color: #FFFFFF;
}
.solution-title {
bottom: 6rpx;
left: -40rpx;
right: -40rpx;
padding: 6rpx;
background-color: rgba(255,255,255,0.6);
transform: scale(.6);
text-align: center;
}
.engineer-num {
position: absolute;
top: -16rpx;
right: -12rpx;
font-size: 24rpx;
background-color: #f03232;
width: 36rpx;
height: 36rpx;
line-height: 36rpx;
text-align: center;
border-radius: 100%;
color: #FFFFFF;
transform: scale(.8);
}

View File

@ -60,7 +60,7 @@ moreColor:显示更多的颜色
},
height: {
type: Number,
default: 80
default: 40
},
showScale: {
type: Boolean,

View File

@ -8,10 +8,11 @@
<view class="status-nav"
:style="{background: backgroudColor,height: navBarHeight+'px'}">
<!-- 返回键 -->
<slot name="leftContent">
<view class="return-box" @tap="backEv" v-if="ifReturn"
:style="{height: navBarHeight+'px'}">
<slot name="leftContent"></slot>
</view>
</slot>
<!-- 标题 -->
<view class="tab-title" v-if="ifTitle && ifNet"
:style="{

View File

@ -15,7 +15,8 @@
,{
"path" : "pages/login/login",
"style" :{
"navigationBarTitleText":""
"navigationBarTitleText":"",
"navigationStyle": "custom"//
}
}
,{
@ -76,6 +77,15 @@
}
}
,{
"path" : "pages/forget/forget",
"style" :
{
"navigationBarTitleText": "找回密码",
"enablePullDownRefresh": false
}
}
],
"subPackages": [
{//A

206
pages/forget/forget.vue Normal file
View File

@ -0,0 +1,206 @@
<template>
<view class="pad-zy30">
<view class="fon52 bold mar-sx50">忘记密码</view>
<view class="fon28">
<view class="forget-title mar-x10">手机号码</view>
<view class="forget-input-box posir">
<input @blur="inputBlurEv(0)" @focus="inputFocusEv(0)" @input="inputFocusEv(0)" class="fon24" type="number" maxlength="11" v-model="forget_phone" placeholder="请输入您的手机号码" placeholder-style="color:#c8c8c8;" />
<!-- 清除按钮 -->
<view class="clear-box" v-show="ifPhone" @tap="clearInput(0)"><view class="clear-close"><span></span><span></span></view></view>
</view>
<view class="forget-title mar-x10">手机验证码</view>
<view class="forget-input-box posir">
<input @blur="inputBlurEv(1)" @focus="inputFocusEv(1)" @input="inputFocusEv(1)" class="fon24" type="number" maxlength="6" v-model="forget_code" placeholder="请输入手机验证码" placeholder-style="color:#c8c8c8;" />
<view class="forget-obtain-code" @tap="getCode">{{codeText}}</view>
<!-- 清除按钮 -->
<view class="clear-box" v-show="ifCode" @tap="clearInput(1)" style="right: 260rpx;"><view class="clear-close"><span></span><span></span></view></view>
</view>
<view class="forget-title mar-x10">新密码</view>
<view class="forget-input-box posir">
<input @blur="inputBlurEv(2)" @focus="inputFocusEv(2)" @input="inputFocusEv(2)" class="fon24" type="text" password v-model="forget_password" placeholder="请输入新密码" placeholder-style="color:#c8c8c8;" />
<!-- 清除按钮 -->
<view class="clear-box" v-show="ifPassword" @tap="clearInput(2)"><view class="clear-close"><span></span><span></span></view></view>
</view>
<view class="forget-title mar-x10">确认密码</view>
<view class="forget-input-box posir">
<input @blur="inputBlurEv(3)" @focus="inputFocusEv(3)" @input="inputFocusEv(3)" class="fon24" type="text" password v-model="forget_qpassword" placeholder="请再次确认密码" placeholder-style="color:#c8c8c8;" />
<!-- 清除按钮 -->
<view class="clear-box" v-show="ifqpassword" @tap="clearInput(3)"><view class="clear-close"><span></span><span></span></view></view>
</view>
<view class="forget-title mar-x10">单位名称</view>
<view class="forget-input-box posir">
<input @blur="inputBlurEv(4)" @focus="inputFocusEv(4)" @input="inputFocusEv(4)" class="fon24" type="text" v-model="forget_unitname" placeholder="请输入单位名称" placeholder-style="color:#c8c8c8;" />
<!-- 清除按钮 -->
<view class="clear-box" v-show="ifUnitname" @tap="clearInput(4)"><view class="clear-close"><span></span><span></span></view></view>
</view>
</view>
<!-- 立即修改 -->
<view class="forget-btn" @tap="submitEv"></view>
</view>
</template>
<script>
export default {
data() {
return {
ifPhone:false,
forget_phone:'',
ifCode:false,
forget_code:'',
ifPassword:false,
forget_password:'',
ifqpassword:false,
forget_qpassword:'',
ifUnitname:false,
forget_unitname:'',
codeText:'获取验证码' ,//
flagCode:true //
}
},
methods: {
//
submitEv(){
if(this.checkEmpty()){
let params = {
phone: this.forget_phone, //
sms_code:this.forget_code, //
password: this.forget_password, //
confirm_password: this.forget_qpassword, //
affiliation: this.forget_unitname ,//
}
this.$requst.post('/universal/api.login/password_find',params).then(res=>{
this.$toolAll.tools.showToast('找回成功');
})
}
},
//
getCode(){
if(this.$toolAll.tools.isPhone(this.forget_phone)) {
this.$toolAll.tools.showToast('请输入正确的手机号');
} else {
if(this.flagCode) {
this.flagCode = false;
let count = 60;
this.codeText = `${count}S重新获取`
let countDown = setInterval(()=>{
count--;
count < 10 ? this.codeText = `0${count}S重新获取` : this.codeText = `${count}S重新获取`;
if(count==0) {
this.codeText = `重新获取`;
clearInterval(countDown);
this.flagCode = true;
}
},1000)
//
this.getMessage(this.forget_phone);
}
}
},
//
getMessage(phone){
this.$requst.post('/universal/api.login/send_sms',{phone}).then(res=>{
this.$toolAll.tools.showToast(res.msg);
})
},
//
checkEmpty(){
let ifEmpty = true;
if(this.$toolAll.tools.isPhone(this.forget_phone)) {
this.$toolAll.tools.showToast('手机号格式不正确');
ifEmpty = false;
return;
}
if(!this.forget_code) {
this.$toolAll.tools.showToast('请输入验证码');
ifEmpty = false;
return;
}
if(!this.forget_password) {
this.$toolAll.tools.showToast('密码不能为空');
ifEmpty = false;
return;
}
if(!this.forget_qpassword) {
this.$toolAll.tools.showToast('确认密码不能为空');
ifEmpty = false;
return;
}
if(this.forget_password != this.forget_qpassword) {
this.$toolAll.tools.showToast('两次输入的密码必须相同');
ifEmpty = false;
return;
}
if(!this.forget_unitname) {
this.$toolAll.tools.showToast('请输入单位名称');
ifEmpty = false;
return;
}
return ifEmpty;
},
//
inputFocusEv(index){
switch (index){
case 0:
this.forget_phone ? this.ifPhone = true : this.ifPhone = false;
break;
case 1:
this.forget_code ? this.ifCode = true : this.ifCode = false;
break;
case 2:
this.forget_password ? this.ifPassword = true : this.ifPassword = false;
break;
case 3:
this.forget_qpassword ? this.ifqpassword = true : this.ifqpassword = false;
break;
case 4:
this.forget_unitname ? this.ifUnitname = true : this.ifUnitname = false;
break;
}
},
//
inputBlurEv(index){
switch (index){
case 0:
setTimeout(()=>{this.ifPhone = false;},100)
break;
case 1:
setTimeout(()=>{this.ifCode = false;},100)
break;
case 2:
setTimeout(()=>{this.ifPassword = false;},100)
break;
case 3:
setTimeout(()=>{this.ifqpassword = false;},100)
break;
case 4:
setTimeout(()=>{this.ifUnitname = false;},100)
break;
}
},
//
clearInput(index){
switch (index){
case 0:
this.forget_phone = '';
break;
case 1:
this.forget_code = '';
break;
case 2:
this.forget_password = '';
break;
case 3:
this.forget_qpassword = '';
break;
case 4:
this.forget_unitname = '';
break;
}
},
}
}
</script>
<style>
</style>

View File

@ -1,6 +1,6 @@
<template>
<view style="display: flex;justify-content: center;align-items: center;height: 100vh;">
引导页
<view :style="{height: windowHeight+'px'}" style="overflow: hidden;">
<image src="/static/public/icon-guide.png" mode="widthFix" style="width: 100%;"></image>
</view>
</template>
@ -8,21 +8,11 @@
export default {
data() {
return {
windowHeight:uni.getSystemInfoSync().windowHeight
}
},
onLoad() {
console.log(16);
this.checkContext();
// this.$requst.post('/universal/api.login/register',{
// phone:'18888888888',
// sms_code:'123456',
// password:'123456',
// confirm_password:'123456',
// affiliation:''
// }).then(res=>{
// console.log(res,25);
// })
},
methods: {
//
@ -31,7 +21,6 @@
if(uni.getSystemInfoSync().platform != "devtools"){//devtools iosandroidmac3.1.10+windows3.1.10+linux3.1.10+
console.log = () =>{}
}
console.log(35);
setTimeout(()=>{
uni.reLaunch({
url:'/pages/login/login'
@ -42,7 +31,6 @@
if(uni.getSystemInfoSync().platform != "development"){//devtools iosandroidmac3.1.10+windows3.1.10+linux3.1.10+
console.log = () =>{}
}
console.log(46);
setTimeout(()=>{
uni.reLaunch({
url:'/pages/login/login'
@ -62,7 +50,6 @@
// -
// uni.setStorageSync('hostapi','https://hm.hmzfyy.cn/api/');
}
console.log(66);
setTimeout(()=>{
uni.reLaunch({
url:'/pages/tabbar/pagehome/pagehome'

View File

@ -1,23 +1,240 @@
<template>
<view @tap="gohome" style="display: flex;align-items: center;justify-content: center;height: 100vh;">
登录页
<view>
<view style="overflow: hidden;position: relative;" :style="{height: windowHeight + 'px'}">
<image class="login-img" src="/static/public/icon-login.png" mode="widthFix"></image>
<view class="login-box fon28">
<!-- 手机号 -->
<view class="login-input-box">
<view style="width: 30rpx;">
<image style="width: 30rpx;height: 28rpx;" src="/static/public/icon-people.png" mode=""></image>
</view>
<input type="number" @blur="inputBlurEv(0)" @focus="inputFocusEv(0)" @input="inputFocusEv(0)" v-model="login_phone" maxlength="11" placeholder="请输入手机号" placeholder-class="col9" />
<!-- 清除按钮 -->
<view class="clear-box" v-show="ifPhone" @tap="clearInput(0)" style="right: 20rpx;"><view class="clear-close"><span></span><span></span></view></view>
</view>
<!-- 验证码 -->
<view class="login-input-box" v-show="login_type=='mobile'">
<view style="width: 30rpx;">
<image style="width: 22rpx;height: 26rpx;" src="/static/public/icon-password.png" mode=""></image>
</view>
<input type="number" v-model="login_code" maxlength="6" @blur="inputBlurEv(1)" @focus="inputFocusEv(1)" @input="inputFocusEv(1)" placeholder="请输入验证码" placeholder-class="col9" />
<view class="login-code-btn" @tap="getCode">{{codeText}}</view>
<!-- 清除按钮 -->
<view class="clear-box" v-show="ifCode" @tap="clearInput(1)" style="right: 260rpx;"><view class="clear-close"><span></span><span></span></view></view>
</view>
<!-- 密码登录 -->
<view class="login-input-box" v-show="login_type!='mobile'">
<view style="width: 30rpx;">
<image style="width: 22rpx;height: 26rpx;" src="/static/public/icon-password.png" mode=""></image>
</view>
<input type="text" password v-model="login_password" @blur="inputBlurEv(3)" @focus="inputFocusEv(3)" @input="inputFocusEv(3)" placeholder="请输入密码" placeholder-class="col9" />
<view class="clear-box" v-show="ifPassword" @tap="clearInput(3)" style="right: 20rpx;"><view class="clear-close"><span></span><span></span></view></view>
</view>
<!-- 单位名称 -->
<view class="login-input-box">
<view style="width: 30rpx;">
<image style="width: 26rpx;height: 26rpx;" src="/static/public/icon-unit.png" mode=""></image>
</view>
<input type="text" v-model="login_unitName" @blur="inputBlurEv(2)" @focus="inputFocusEv(2)" @input="inputFocusEv(2)" placeholder="请输入单位名称" placeholder-class="col9" />
<!-- 清除按钮 -->
<view class="clear-box" v-show="ifunitName" @tap="clearInput(2)" style="right: 20rpx;"><view class="clear-close"><span></span><span></span></view></view>
</view>
<!-- 登入 -->
<view class="login-btn fon32" @tap="submitEv"></view>
<!-- 使用账号密码登录忘记密码 -->
<view class="fon24 disjbac mar-s20">
<view @tap="switchType">使{{login_type_text}}</view>
<view class="col9" @tap="goForget">?</view>
</view>
<!-- 注册工程师 -->
<view @tap="goRegister" class="login-btn fon24 mar-s70" style="background-color: #f0f0f0;color: #333333;">注册工程师</view>
</view>
</view>
</view>
</template>
<script>
import containerSubgroupTwo from '@/components/containers/container-subgroup-two.vue';
export default {
components:{
containerSubgroupTwo
},
data() {
return {
windowHeight: uni.getSystemInfoSync().windowHeight,
ifPhone:false,
login_phone:'',//
ifCode:false,
login_code:'',//
ifunitName:false,
login_unitName:'',//
ifPassword:false,
login_password:'',//
codeText:'获取验证码' ,//
flagCode:true ,//
countDown:null,
login_type:'mobile',// account
login_type_text:'账号密码'
};
},
onLoad() {
},
methods: {
gohome(){
//
submitEv(){
// if(this.checkEmpty()){
// let params = {
// login_type: this.login_type, // mobileaccount
// phone: this.login_type == 'mobile' ? this.login_phone : '', // login_type mobile
// password: this.login_password, // login_type account
// sms_code: this.login_code, // login_type mobile
// username: this.login_type == 'account' ? this.login_phone : '', //login_type account
// affiliation: this.login_unitName //
// }
// this.$requst.post('/universal/api.login/login',params).then(res=>{
// this.$toolAll.tools.showToast('');
// })
// }
uni.reLaunch({
url:'/pages/tabbar/pagehome/pagehome'
})
},
//
getCode(){
if(this.$toolAll.tools.isPhone(this.login_phone)) {
this.$toolAll.tools.showToast('请输入正确的手机号');
} else {
if(this.flagCode) {
this.flagCode = false;
let count = 60;
this.codeText = `${count}S重新获取`
this.countDown = setInterval(()=>{
count--;
count < 10 ? this.codeText = `0${count}S重新获取` : this.codeText = `${count}S重新获取`;
if(count==0) {
this.codeText = `重新获取`;
clearInterval(this.countDown);
this.flagCode = true;
}
},1000)
//
this.getMessage(this.login_phone);
}
}
},
//
getMessage(phone){
this.$requst.post('/universal/api.login/send_sms',{phone}).then(res=>{
this.$toolAll.tools.showToast(res.msg);
if(res.data.length==0) {
this.codeText = '获取验证码';
clearInterval(this.countDown);
}
})
},
//
checkEmpty(){
let ifEmpty = true;
if(this.$toolAll.tools.isPhone(this.login_phone)) {
this.$toolAll.tools.showToast('手机号格式不正确');
ifEmpty = false;
return;
}
if(this.login_type_text=='账号密码') {
if(!this.login_code) {
this.$toolAll.tools.showToast('请输入验证码');
ifEmpty = false;
return;
}
} else {
if(!this.login_password) {
this.$toolAll.tools.showToast('请输入密码');
ifEmpty = false;
return;
}
}
if(!this.login_unitName) {
this.$toolAll.tools.showToast('请输入单位名称');
ifEmpty = false;
return;
}
return ifEmpty;
},
//
inputFocusEv(index){
switch (index){
case 0:
this.login_phone ? this.ifPhone = true : this.ifPhone = false;
break;
case 1:
this.login_code ? this.ifCode = true : this.ifCode = false;
break;
case 2:
this.login_unitName ? this.ifunitName = true : this.ifunitName = false;
break;
case 3:
this.login_password ? this.ifPassword = true : this.ifPassword = false;
break;
}
},
//
inputBlurEv(index){
switch (index){
case 0:
setTimeout(()=>{this.ifPhone = false;},100)
break;
case 1:
setTimeout(()=>{this.ifCode = false;},100)
break;
case 2:
setTimeout(()=>{this.ifunitName = false;},100)
break;
case 3:
setTimeout(()=>{this.ifPassword = false;},100)
break;
}
},
//
clearInput(index){
switch (index){
case 0:
this.login_phone = '';
break;
case 1:
this.login_code = '';
break;
case 2:
this.login_unitName = '';
break;
case 3:
this.login_password = '';
break;
}
},
//
switchType(){
if(this.login_type_text=="账号密码") {
this.login_type = 'account';
this.login_type_text = '验证码';
this.login_code = '';
} else {
this.login_type = 'mobile';
this.login_type_text = '账号密码';
this.login_password = '';
}
},
//
goRegister(){
uni.navigateTo({
url:'/pages/register/register'
})
},
//
goForget(){
uni.navigateTo({
url:'/pages/forget/forget'
})
}
}
}

View File

@ -18,42 +18,43 @@
<view class="disac mar-s30">
<view class="disac fon30">+86 <view class="register-phone-img"></view></view>
<view class="posir width100">
<input class="clear-input" type="number" maxlength="11" v-model="register_phone" placeholder="请输入手机号" placeholder-class="placeholderColor" />
<input @blur="inputBlurEv(0)" @focus="inputFocusEv(0)" @input="inputFocusEv(0)" class="clear-input" type="number" maxlength="11" v-model="register_phone" placeholder="请输入手机号" placeholder-class="placeholderColor" />
<!-- 清除按钮 -->
<view class="clear-box" v-show="register_phone!=''" @tap="clearInput(0)"><view class="clear-close"><span></span><span></span></view></view>
<view class="clear-box" v-show="ifPhone" @tap="clearInput(0)"><view class="clear-close"><span></span><span></span></view></view>
</view>
</view>
<!-- 验证码 -->
<view class="disjbac mar-s50">
<view class="posir width100">
<input class="clear-input" type="number" maxlength="4" v-model="register_code" placeholder="请输入验证码" placeholder-class="placeholderColor" />
<input @blur="inputBlurEv(1)" @focus="inputFocusEv(1)" @input="inputFocusEv(1)" class="clear-input" type="number" maxlength="6" v-model="register_code" placeholder="请输入验证码" placeholder-class="placeholderColor" />
<!-- 清除按钮 -->
<view class="clear-box" v-show="register_code!=''" @tap="clearInput(1)"><view class="clear-close"><span></span><span></span></view></view>
<view class="clear-box" v-show="ifCode" @tap="clearInput(1)"><view class="clear-close"><span></span><span></span></view></view>
</view>
<view class="obtain-code">获取验证码</view>
<!-- 获取验证码按钮 -->
<view class="obtain-code" :class="!flagCode ? 'obtainIng' : ''" @tap="getCode">{{codeText}}</view>
</view>
<!-- 密码 -->
<view class="disjbac mar-s50">
<view class="posir width100">
<input class="clear-input" type="text" maxlength="16" v-model="register_password" placeholder="请输入密码" placeholder-class="placeholderColor" />
<input @blur="inputBlurEv(2)" @focus="inputFocusEv(2)" @input="inputFocusEv(2)" class="clear-input" type="text" password maxlength="16" v-model="register_password" placeholder="请输入密码" placeholder-class="placeholderColor" />
<!-- 清除按钮 -->
<view class="clear-box" v-show="register_password!=''" @tap="clearInput(2)"><view class="clear-close"><span></span><span></span></view></view>
<view class="clear-box" v-show="ifPassword" @tap="clearInput(2)"><view class="clear-close"><span></span><span></span></view></view>
</view>
</view>
<!-- 确认密码 -->
<view class="disjbac mar-s50">
<view class="posir width100">
<input class="clear-input" type="text" maxlength="16" v-model="register_qpassword" placeholder="请再次确认密码" placeholder-class="placeholderColor" />
<input @blur="inputBlurEv(3)" @focus="inputFocusEv(3)" @input="inputFocusEv(3)" class="clear-input" type="text" password maxlength="16" v-model="register_qpassword" placeholder="请再次确认密码" placeholder-class="placeholderColor" />
<!-- 清除按钮 -->
<view class="clear-box" v-show="register_qpassword!=''" @tap="clearInput(3)"><view class="clear-close"><span></span><span></span></view></view>
<view class="clear-box" v-show="ifqpssword" @tap="clearInput(3)"><view class="clear-close"><span></span><span></span></view></view>
</view>
</view>
<!-- 单位名称 -->
<view class="disjbac mar-s50">
<view class="posir width100">
<input class="clear-input" type="text" v-model="register_unitName" placeholder="请输入单位名称" placeholder-class="placeholderColor" />
<input @blur="inputBlurEv(4)" @focus="inputFocusEv(4)" @input="inputFocusEv(4)" class="clear-input" type="text" v-model="register_unitName" placeholder="请输入单位名称" placeholder-class="placeholderColor" />
<!-- 清除按钮 -->
<view class="clear-box" v-show="register_unitName!=''" @tap="clearInput(4)"><view class="clear-close"><span></span><span></span></view></view>
<view class="clear-box" v-show="ifunitName" @tap="clearInput(4)"><view class="clear-close"><span></span><span></span></view></view>
</view>
</view>
<!-- 协议政策 -->
@ -80,20 +81,67 @@
},
data() {
return {
ifPhone:false, //
register_phone:'', //
ifCode:false,
register_code:'', //
ifPassword:false,
register_password:'', //
ifqpssword:false,
register_qpassword:'', //
ifunitName:false,
register_unitName:'', //
ifAgreen:false //
ifAgreen:false ,//
codeText:'获取验证码' ,//
flagCode:true //
}
},
methods: {
//
submitEv(){
if(this.checkEmpty()){
console.log('执行事件');
let params = {
phone: this.register_phone, //
sms_code:this.register_code, //
password: this.register_password, //
confirm_password: this.register_qpassword, //
affiliation: this.register_unitName //
}
this.$requst.post('/universal/api.login/register',params).then(res=>{
this.$toolAll.tools.showToast('注册成功');
//
this.goLogin();
})
}
},
//
getCode(){
if(this.$toolAll.tools.isPhone(this.register_phone)) {
this.$toolAll.tools.showToast('请输入正确的手机号');
} else {
if(this.flagCode) {
this.flagCode = false;
let count = 60;
this.codeText = `${count}S重新获取`
let countDown = setInterval(()=>{
count--;
count < 10 ? this.codeText = `0${count}S重新获取` : this.codeText = `${count}S重新获取`;
if(count==0) {
this.codeText = `重新获取`;
clearInterval(countDown);
this.flagCode = true;
}
},1000)
//
this.getMessage(this.register_phone);
}
}
},
//
getMessage(phone){
this.$requst.post('/universal/api.login/send_sms',{phone}).then(res=>{
this.$toolAll.tools.showToast(res.msg);
})
},
//
checkEmpty(){
@ -139,11 +187,52 @@
goLogin(){
uni.navigateBack({delta:1})
},
//
inputFocusEv(index){
switch (index){
case 0:
this.register_phone ? this.ifPhone = true : this.ifPhone = false;
break;
case 1:
this.register_code ? this.ifCode = true : this.ifCode = false;
break;
case 2:
this.register_password ? this.ifPassword = true : this.ifPassword = false;
break;
case 3:
this.register_qpassword ? this.ifqpssword = true : this.ifqpssword = false;
break;
case 4:
this.register_unitName ? this.ifunitName = true : this.ifunitName = false;
break;
}
},
//
inputBlurEv(index){
switch (index){
case 0:
setTimeout(()=>{this.ifPhone = false;},100)
break;
case 1:
setTimeout(()=>{this.ifCode = false;},100)
break;
case 2:
setTimeout(()=>{this.ifPassword = false;},100)
break;
case 3:
setTimeout(()=>{this.ifqpssword = false;},100)
break;
case 4:
setTimeout(()=>{this.ifunitName = false;},100)
break;
}
},
//
clearInput(index){
switch (index){
case 0:
this.register_phone = '';
console.log(this.register_phone);
break;
case 1:
this.register_code = '';

View File

@ -1,20 +1,315 @@
<template>
<view class="pad-x160">
<status-nav-slot>
<view slot="leftContent" style="width: 70px;">
<view class="home-message-box posir disac">
<image src="/static/public/icon-home-message.png" mode=""></image>
<view v-if="messageNumber!=0">{{messageNumber}}</view>
</view>
</view>
<view slot="centerContent" class="disjcac">
<image style="width: 156rpx;height: 38rpx;" src="/static/public/icom-home-logo.png" mode="widthFix"></image>
</view>
<view slot="rightContent" class="disac">
<image class="mar-y10" style="width: 26rpx;height: 26rpx;" src="/static/public/icon-home-phone.png" mode=""></image>
<view class="fon26 col3">拨打电话</view>
</view>
</status-nav-slot>
<!-- <view :style="{paddingTop: statusHeight +'px'}"> -->
<!-- banner图 -->
<image class="width100" src="/static/public/icon-home-banner.png" mode="widthFix"></image>
<view class="pad-zy20">
<!-- 项目总数实时故障公告 -->
<view class="project-notice-box">
<view class="disjcac pad-sx20 bbot">
<view class="disjcac fc width50">
<view class="fon26 col9">项目总数</view>
<view class="fon60 bold">126</view>
</view>
<view class="bleft" style="height: 90rpx;"></view>
<view class="disjcac fc width50">
<view class="fon26 col9">实时故障</view>
<view class="fon60 bold">116</view>
</view>
</view>
<view class="disac pad-s30 pad-x10">
<image class="mar-zy20" style="width: 64rpx;height: 27rpx;" src="/static/public/icon-home-notice.png" mode=""></image>
<view class="fon24 color6 mar-y20 width100 bleft pad-z20">
<lwNotice @dangGao="goNoticeDetail" :list="noticeList" :backgroundColor="'#FFFFFF'"></lwNotice>
</view>
<!-- <view class="clips1 col3 fon24 pad-z20 bleft">2021年11月06日公司团建维修服务暂停一天</view> -->
</view>
</view>
<!-- 客户可见 -->
<view v-if="role==0 || role==3">
<!-- 故障报修 -->
<view class="home-fun-box">
<view class="fun-title col3 fon28 disac bold">故障报修</view>
<view class="disac mar-s30">
<view class="disjcac fc width25" v-for="(item,index) in repairList" :key="index">
<image :style="{width: [58,58,50][index]+'rpx',height:[53,56,58][index] + 'rpx'}" style="width: 58rpx;height: 53rpx;" :src="item.imgsrc" mode="widthFix"></image>
<view class="fon24 col3 mar-s10">{{item.title}}</view>
</view>
</view>
</view>
<!-- 数据查询 -->
<view class="home-fun-box" v-if="role==3">
<view class="fun-title col3 fon28 disac bold">数据查询</view>
<view class="disac mar-s30">
<view class="disjcac fc width25" v-for="(item,index) in dataQueryList" :key="index">
<view class="posir">
<image :style="{width: [58,58,58][index]+'rpx',height:[46,56,50][index] + 'rpx'}" style="width: 58rpx;height: 53rpx;" :src="item.imgsrc" mode="widthFix"></image>
<view class="engineer-num" v-if="item.num!=0">{{item.num}}</view>
</view>
<view class="fon24 col3 mar-s10">{{item.title}}</view>
</view>
</view>
</view>
<!-- 增值服务 -->
<view class="home-fun-box">
<view class="fun-title col3 fon28 disac bold">增值服务</view>
<view class="disac mar-s30">
<view class="disjcac fc width25" v-for="(item,index) in incrementList" :key="index">
<image :style="{width: [57,52,58,51][index]+'rpx',height:[56,56,50,56][index] + 'rpx'}" style="width: 58rpx;height: 53rpx;" :src="item.imgsrc" mode="widthFix"></image>
<view class="fon24 col3 mar-s10">{{item.title}}</view>
</view>
</view>
</view>
</view>
<!-- 工程师可见 -->
<view v-if="role==1 || role==2">
<!-- 项目维修 -->
<view class="home-fun-box" v-if="role==1">
<view class="fun-title col3 fon28 disac bold">项目维修</view>
<view class="disac mar-s30">
<view class="disjcac fc width25" v-for="(item,index) in projectRepairList" :key="index">
<view class="posir">
<image :style="{width: [53,52,51][index]+'rpx',height:[58,58,58][index] + 'rpx'}" style="width: 58rpx;height: 53rpx;" :src="item.imgsrc" mode="widthFix"></image>
<view class="engineer-num" v-if="item.num!=0">{{item.num}}</view>
</view>
<view class="fon24 col3 mar-s10">{{item.title}}</view>
</view>
</view>
</view>
<view v-if="role==2">
<!-- 待办工单 -->
<view class="home-fun-box">
<view class="fun-title col3 fon28 disac bold">待办工单</view>
<view class="disac mar-s30">
<view class="disjcac fc width25" v-for="(item,index) in stayWorkOrderList" :key="index">
<view class="posir">
<image :style="{width: [53,48,51,58][index]+'rpx',height:[58,58,58,53][index] + 'rpx'}" style="width: 58rpx;height: 53rpx;" :src="item.imgsrc" mode="widthFix"></image>
<view class="engineer-num" v-if="item.num!=0">{{item.num}}</view>
</view>
<view class="fon24 col3 mar-s10">{{item.title}}</view>
</view>
</view>
</view>
<!-- 待办事件 -->
<view class="home-fun-box">
<view class="fun-title col3 fon28 disac bold">待办事件</view>
<view class="disac mar-s30">
<view class="disjcac fc width25" v-for="(item,index) in stayEventList" :key="index">
<view class="posir">
<image :style="{width: [58,58,50][index]+'rpx',height:[58,54,58][index] + 'rpx'}" style="width: 58rpx;height: 53rpx;" :src="item.imgsrc" mode="widthFix"></image>
<view class="engineer-num" v-if="item.num!=0">{{item.num}}</view>
</view>
<view class="fon24 col3 mar-s10">{{item.title}}</view>
</view>
</view>
</view>
</view>
<!-- 工单数据 -->
<view class="home-fun-box">
<view class="fun-title col3 fon28 disac bold">工单数据</view>
<view class="disac mar-s30">
<view class="disjcac fc width25" v-for="(item,index) in workOrderList" :key="index">
<view class="posir">
<image :style="{width: [59,56,58,58][index]+'rpx',height:[49,58,58,60][index] + 'rpx'}" style="width: 58rpx;height: 53rpx;" :src="item.imgsrc" mode="widthFix"></image>
<view class="engineer-num" v-if="item.num!=0">{{item.num}}</view>
</view>
<view class="fon24 col3 mar-s10">{{item.title}}</view>
</view>
</view>
</view>
<!-- 数据查询 -->
<view class="home-fun-box" v-if="role==2">
<view class="fun-title col3 fon28 disac bold">数据查询</view>
<view class="disac mar-s30">
<view class="disjcac fc width25" v-for="(item,index) in dataQueryList" :key="index">
<view class="posir">
<image :style="{width: [58,58,58][index]+'rpx',height:[46,56,50][index] + 'rpx'}" style="width: 58rpx;height: 53rpx;" :src="item.imgsrc" mode="widthFix"></image>
<view class="engineer-num" v-if="item.num!=0">{{item.num}}</view>
</view>
<view class="fon24 col3 mar-s10">{{item.title}}</view>
</view>
</view>
</view>
<!-- 结算情况 -->
<view class="home-fun-box" v-if="role==1">
<view class="fun-title col3 fon28 disac bold">结算情况</view>
<view class="disac mar-s30">
<view class="disjcac fc width25" v-for="(item,index) in settlementList" :key="index">
<view class="posir">
<image :style="{width: [58,50,58][index]+'rpx',height:[54,58,58][index] + 'rpx'}" style="width: 58rpx;height: 53rpx;" :src="item.imgsrc" mode="widthFix"></image>
<view class="engineer-num" v-if="item.num!=0">{{item.num}}</view>
</view>
<view class="fon24 col3 mar-s10">{{item.title}}</view>
</view>
</view>
</view>
</view>
<!-- 其他 -->
<view class="home-fun-box">
<view class="fun-title col3 fon28 disac bold">其他</view>
<view class="disac mar-s30">
<view class="disjcac fc width25" v-for="(item,index) in otherList" :key="index">
<image :style="{width: [58,49,58][index]+'rpx',height:[51,58,55][index] + 'rpx'}" style="width: 58rpx;height: 53rpx;" :src="item.imgsrc" mode="widthFix"></image>
<view class="fon24 col3 mar-s10">{{item.title}}</view>
</view>
</view>
</view>
</view>
<!-- 解决方案 -->
<view class="home-solution mar-x20 pad30">
<view class="disjbac">
<view>
<view class="fon30 bold" style="color: #00a2e9;">畅想智能-场景化设计</view>
<view class="fon34 bold col3 mar-s10">解决方案<text class="col9 mar-z10">Solution</text></view>
</view>
<image style="width: 50rpx;height: 50rpx;" src="/static/public/icon-home-solution.png" mode=""></image>
</view>
<view class="mar-s30">
<scroll-view scroll-x>
<view :class="solutionList.length <= 4 ? 'disjbac' : 'disac'">
<view class="posir flexs" v-for="(item,index) in solutionList" :key="index" style="width: 23%;" :style="{marginRight: solutionList.length > 4 ? '20rpx' : ''}">
<image style="width: 100%;" class="radius10 " :src="item.imgsrc" mode="widthFix"></image>
<view class="posia solution-title">{{item.title}}</view>
</view>
</view>
</scroll-view>
</view>
</view>
<!-- 常见故障 -->
<view class="bacf mar-zy20 pad-sx30 pad-zy10 radius10">
<view class="fon34 bold col3">常见故障<text class="col9 mar-z10">Common faults</text></view>
<view class="pad-sx20 bbot disjb" v-for="(item,index) in faultsList" :key="index">
<view class="fon28 line-h38">
<view class="col3 clips1">{{item.title}}</view>
<view class="fon22 col6 clips3 mar-sx10">{{item.content}}</view>
<view class="col9">{{item.views}}人看过</view>
</view>
<image class="flexs mar-z20" :src="item.imgsrc" style="width: 280rpx;height: 112rpx;" mode="widthFix" lazy-load></image>
</view>
</view>
<!-- 底部tab -->
<foot-tab></foot-tab>
</view>
</template>
<script>
import statusNavSlot from '@/components/status-navs/status-nav-slot.vue';
//
import pitera from '@/components/nothing/pitera.vue';
//
import lwNotice from '@/components/lw-notice/lw-notice.vue';
export default {
components:{
pitera,
statusNavSlot,
lwNotice
},
data() {
return {
role: 3, // 0: 1 2: 3
statusHeight: uni.getSystemInfoSync().statusBarHeight + 50,
messageNumber: 16 ,//
noticeList:['2021年11月06日公司团建维修服务暂停一天服务暂停一天服务暂停一天。','51akslfj;dkpiojasdjf;j1ij'],//
//
repairList:[
{imgsrc:'/static/public/icon-home-repair.png',title:'报修'},
{imgsrc:'/static/public/icon-home-dealt.png',title:'待办'},
{imgsrc:'/static/public/icon-home-urge.png',title:'催一催'},
],
//
incrementList:[
{imgsrc:'/static/public/icon-home-patrol.png',title:'巡检'},
{imgsrc:'/static/public/icon-home-maintain.png',title:'保养'},
{imgsrc:'/static/public/icon-home-movingScreen.png',title:'移屏'},
{imgsrc:'/static/public/icon-home-screeRemoval.png',title:'拆屏'},
],
//
otherList:[
{imgsrc:'/static/public/icon-home-largeScreen.png',title:'故障统计'},
{imgsrc:'/static/public/icon-home-reportForm.png',title:'数据看板'},
{imgsrc:'/static/public/icon-home-product.png',title:'新产品'},
],
//
solutionList:[
{imgsrc:'/static/deleteImg/flying-img01.png',title:'控制室解决方案'},
{imgsrc:'/static/deleteImg/flying-img02.png',title:'户外屏解决方案'},
{imgsrc:'/static/deleteImg/flying-img03.png',title:'会议室解决方案'},
{imgsrc:'/static/deleteImg/flying-img04.png',title:'实体店解决方案'},
],
//
projectRepairList:[
{imgsrc:'/static/public/icon-home-staySingle.png',title:'待接单',num:0},
{imgsrc:'/static/public/icon-home-stayImplement.png',title:'待执行',num:99},
{imgsrc:'/static/public/icon-home-repairIng.png',title:'维修中',num:6},
],
//
workOrderList:[
{imgsrc:'/static/public/icon-home-abnormalSingle.png',title:'异常单',num:0},
{imgsrc:'/static/public/icon-home-overdueSingle.png',title:'逾期单',num:0},
{imgsrc:'/static/public/icon-home-overtime.png',title:'超时单 ',num:0},
{imgsrc:'/static/public/icon-home-workOrderPool.png',title:'工单池',num:6},
],
//
settlementList:[
{imgsrc:'/static/public/icon-home-stayCollection.png',title:'待收款',num:0},
{imgsrc:'/static/public/icon-home-received.png',title:'已收款',num:6},
{imgsrc:'/static/public/icon-home-commission.png',title:'佣金',num:0},
],
//
stayWorkOrderList:[
{imgsrc:'/static/public/icon-home-stayImplement.png',title:'待受理',num:0},
{imgsrc:'/static/public/icon-home-stayAssign.png',title:'待指派',num:6},
{imgsrc:'/static/public/icon-home-stayRepair.png',title:'待维修',num:6},
{imgsrc:'/static/public/icon-home-returnVisit.png',title:'待回访',num:0},
],
//
stayEventList:[
{imgsrc:'/static/public/icon-home-stayBatch.png',title:'待审批',num:0},
{imgsrc:'/static/public/icon-home-stayCollection.png',title:'待收款',num:0},
{imgsrc:'/static/public/icon-home-received.png',title:'已收款',num:0},
],
//
dataQueryList:[
{imgsrc:'/static/public/icon-home-checkCustomer.png',title:'查客户',num:0},
{imgsrc:'/static/public/icon-home-checkProject.png',title:'查项目',num:0},
{imgsrc:'/static/public/icon-home-checkSparePart.png',title:'查备件',num:0},
],
//
faultsList:[
{
imgsrc:'/static/deleteImg/flying-img05.png',
title:'1.启动时提示“大屏幕系统没有找到”',
content:'故障原因串口线或者USB线与发送卡没连接;电脑 COM或者USB口坏;串口线或者USB线坏;发送卡坏;没 有安装USB驱动。',
views:4399
},
{
imgsrc:'/static/deleteImg/flying-img05.png',
title:'1.启动时提示“大屏幕系统没有找到”',
content:'故障原因串口线或者USB线与发送卡没连接;电脑 COM或者USB口坏;串口线或者USB线坏;发送卡坏;没 有安装USB驱动。',
views:4399
},
{
imgsrc:'/static/deleteImg/flying-img05.png',
title:'1.启动时提示“大屏幕系统没有找到”',
content:'故障原因串口线或者USB线与发送卡没连接;电脑 COM或者USB口坏;串口线或者USB线坏;发送卡坏;没 有安装USB驱动。',
views:4399
},
],
}
},
onLoad(options) {
@ -22,11 +317,13 @@
this.$toolAll.tools.obtainUrl();
},
methods: {
goNoticeDetail(){
}
}
}
</script>
<style>
page{background-color: #f7f7f7;}
</style>

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 794 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 827 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 868 B

BIN
static/public/icon-unit.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 981 B