Browse Source

login-bind-show

dev
xuhuajiao 3 years ago
parent
commit
a5681acc1e
  1. 119
      common/iconfont.css
  2. BIN
      common/iconfont.ttf
  3. 2
      main.js
  4. 16
      manifest.json
  5. 14
      network/base.js
  6. 32
      network/http.js
  7. 19
      network/login.js
  8. 24
      pages.json
  9. 43
      pages/bind/bind.vue
  10. 1
      pages/header.vue
  11. 4
      pages/index/index.vue
  12. 67
      pages/login/login.vue
  13. 49
      pages/show/show.vue
  14. 1
      pages/show/show2.vue
  15. 53
      utils/common.js
  16. 148
      utils/global.js
  17. 26
      utils/music.js
  18. 165
      utils/validate.js

119
common/iconfont.css

@ -1,119 +0,0 @@
@font-face {
font-family: "iconfont"; /* Project id 3202838 */
src: url('iconfont.woff2?t=1649236110191') format('woff2'),
url('iconfont.woff?t=1649236110191') format('woff'),
url('iconfont.ttf?t=1649236110191') format('truetype');
}
.iconfont {
font-family: "iconfont" !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-a-Group1:before {
content: "\e602";
}
.icon-a-xinzeng:before {
content: "\e601";
}
.icon-jigouxinxi:before {
content: "\e649";
}
.icon-quanxianguanli-fanbai:before {
content: "\e64a";
}
.icon-guanbi1:before {
content: "\e64b";
}
.icon-guanbi2:before {
content: "\e64c";
}
.icon-quanxianguanli:before {
content: "\e64d";
}
.icon-neirongguanli:before {
content: "\e64e";
}
.icon-xuanze-moren:before {
content: "\e64f";
}
.icon-wenjianjia:before {
content: "\e650";
}
.icon-xuanze:before {
content: "\e651";
}
.icon-shebeishuju:before {
content: "\e652";
}
.icon-fabuliucheng:before {
content: "\e653";
}
.icon-shouye:before {
content: "\e654";
}
.icon-xiala2:before {
content: "\e655";
}
.icon-bianji:before {
content: "\e656";
}
.icon-xuanzhong:before {
content: "\e657";
}
.icon-shouye-fanbai:before {
content: "\e658";
}
.icon-shebeiguanli:before {
content: "\e659";
}
.icon-xialaxuanze:before {
content: "\e65a";
}
.icon-xiala1:before {
content: "\e65b";
}
.icon-guanbi3:before {
content: "\e65c";
}
.icon-neirongguanli-fanbai:before {
content: "\e65d";
}
.icon-shebeiguanli-fanbai:before {
content: "\e65e";
}
.icon-bangzhu:before {
content: "\e647";
}
.icon-guanbi:before {
content: "\e648";
}

BIN
common/iconfont.ttf

2
main.js

@ -18,6 +18,6 @@ export function createApp() {
const app = createSSRApp(App)
return {
app
}
}
}
// #endif

16
manifest.json

@ -104,6 +104,22 @@
"xxhdpi" : "C:/Users/xuhua/Desktop/画屏2/画屏/切图/bg.png"
}
}
},
"nativePlugins" : {
"Fvv-AutoStart" : {
"__plugin_info__" : {
"name" : "AutoStart",
"description" : "安卓开机自启动",
"platforms" : "Android",
"url" : "",
"android_package_name" : "",
"ios_bundle_id" : "",
"isCloud" : false,
"bought" : -1,
"pid" : "",
"parameters" : {}
}
}
}
},
/* */

14
network/base.js

@ -0,0 +1,14 @@
let baseURL = '';
// 是否在控制台显示接口请求日志,本地环境启用,打包环境禁用
let showHttpLog = false;
// 测试环境
// 刘力
baseURL = 'http://192.168.99.103:7000';
// 许镇
// baseURL = 'http://192.168.99.84:7000';
// 正式环境
// baseURL = 'https://yxkadmin.aiyxlib.com';
module.exports = {
baseURL: baseURL,
showHttpLog: showHttpLog
};

32
network/http.js

@ -0,0 +1,32 @@
import {
baseURL
} from './base.js'; //导入接口的前缀地址
export const myRequest = (options) => {
return new Promise((resolve, reject) => {
uni.request({
url: baseURL + options.url, //接口地址:前缀+方法中传入的地址
method: options.method || 'GET', //请求方法:传入的方法或者默认是“GET”
data: options.data || {}, //传递参数:传入的参数或者默认传递空集合
headers: {
'Authorization ': window.localStorage.getItem('token') //自定义请求头信息
},
success: (res) => {
//返回的数据(不固定,看后端接口,这里是做了一个判断,如果不为true,用uni.showToast方法提示获取数据失败)
// if (res.data.success != true) {
// return uni.showToast({
// title: '获取数据失败',
// icon: 'none'
// })
// }
// 如果不满足上述判断就输出数据
resolve(res);
},
// 这里的接口请求,如果出现问题就输出接口请求失败
fail: (err) => {
console.log(err);
reject(err);
}
});
});
};

19
network/login.js

@ -0,0 +1,19 @@
import {myRequest} from './http.js';
// 登录
export function login (config) {
return myRequest({
url:'/login',
method:'post',
data:config
});
}
// 授权绑定
export function deviceBind (config) {
return myRequest({
url:'/deviceBind',
method:'post',
data:config
});
}

24
pages.json

@ -1,10 +1,12 @@
{
"pages": [ //pageshttps://uniapp.dcloud.io/collocation/pages
{
"path" : "pages/show/show",
"style": {
"navigationBarTitleText": "数字新视窗"
}
"path" : "pages/login/login",
"style" : {}
},
{
"path" : "pages/bind/bind",
"style" : {}
},
{
"path": "pages/index/index",
@ -13,16 +15,10 @@
}
},
{
"path" : "pages/login/login",
"style" : {}
},
{
"path" : "pages/bind/bind",
"style" : {}
},
{
"path" : "pages/show/show2",
"style" : {}
"path" : "pages/show/show",
"style": {
"navigationBarTitleText": "数字新视窗"
}
}
],
"globalStyle": {

43
pages/bind/bind.vue

@ -11,17 +11,17 @@
</view>
<view class="uni-form-item uni-column">
<view class="title">设备名称</view>
<input class="uni-input" name="name" placeholder="设备名称" />
<input class="uni-input" v-model="device_name" name="name" placeholder="设备名称" />
</view>
<view class="uni-form-item uni-column" @click.native.stop="radioDirection = !radioDirection">
<view class="uni-form-item uni-column" @tap="radioDirection = !radioDirection">
<view class="bind-radio-label" >
<view class="title" >选择设备方向</view>
<image class="select_img" src="@/static/images/bind-select.png"></image>
</view>
<view v-show="radioDirection" class="device_radio">
<radio-group name="device_direction">
<label class="radio"><radio value="0" checked="true" />竖屏</label>
<label class="radio"><radio value="1" />横屏</label>
<label class="radio"><radio value="1" checked="true" />竖屏</label>
<label class="radio"><radio value="2" />横屏</label>
</radio-group>
</view>
</view>
@ -36,22 +36,42 @@
<script>
import Header from '@/pages/header.vue';
export default {
name:'DeviceBind',
components: {
Header
},
data() {
return {
account: '1234568736',
radioDirection: false
account: '13476289682',
radioDirection: false,
device_name: ''
};
},
mounted(){
const res = uni.getSystemInfoSync();
console.log('model',res.model); //
console.log('version',res.version); //
console.log('platform',res.platform); //
console.log('deviceId',res.deviceId); // ID
this.device_name = res.model
// this.account = this.account.slice(-8)
},
methods: {
bindSubmit: function(e){
console.log(this.account.substring(this.account.length-8, this.account.length))
console.log(this.account.slice(-8))
// console.log(this.account.substring(this.account.length-8, this.account.length))
// console.log(this.account.slice(-8))
if(!this.device_name){
uni.showToast({
title: '请填写设备名称',
icon: 'none'
})
return;
}
var formdata = e.detail.value;
uni.navigateTo({
url: '../show/show'
});
console.log('bindform发生了submit事件,携带数据为:' + JSON.stringify(e.detail.value));
}
}
@ -121,9 +141,13 @@ export default {
width: 50%;
text-align: center;
}
.device_radio .radio /deep/ uni-radio{
margin-right: 20.83rpx;
}
.device_radio /deep/ uni-radio .uni-radio-input{
width: 27.77rpx;
height: 27.77rpx;
margin-top: -4.16rpx;
background: url(~@/static/images/an-wx.png) no-repeat left top;
background-size: 100% 100%;
border: none;
@ -140,4 +164,7 @@ export default {
background-size: 100% 100%;
transform: translate(-50%,-50%) scale(1);
}
.uni-input /deep/ .uni-input-input:disabled{
color: #999999;
}
</style>

1
pages/header.vue

@ -62,6 +62,7 @@ export default {
color: #fff;
}
.icon-bangzhu{
font-size: 27.77rpx;
margin-top: 1.38rpx;
margin-right: 11.11rpx;
}

4
pages/index/index.vue

@ -4,9 +4,6 @@
<view class="text-area" @tap="to()">
<text class="title">{{title}}</text>
</view>
<!-- <view class="text-area" @tap="to2()">
<text class="title">swiper</text>
</view> -->
</view>
</template>
@ -18,7 +15,6 @@
}
},
onLoad() {
},
methods: {
to(){

67
pages/login/login.vue

@ -6,10 +6,10 @@
<image class="logo" src="/static/logo.png"></image>
<form @submit="loginSubmit">
<view class="uni-form-item uni-column">
<input class="uni-input" name="phone" type="number" placeholder="登录账号" />
<input class="uni-input" v-model="phone" name="phone" type="number" placeholder="登录账号" />
</view>
<view class="uni-form-item uni-column">
<input class="uni-input" name="password" placeholder="密码" password="true" />
<input class="uni-input" v-model="password" name="password" placeholder="密码" password="true" />
</view>
<view class="uni-btn-v"><button class="uni-login-btn" form-type="submit"> </button></view>
</form>
@ -21,22 +21,74 @@
<script>
import Header from '@/pages/header.vue';
import {isvalidPhone} from '@/utils/validate.js';
import {login} from '@/network/login.js';
export default {
name:'Login',
components: {
Header
},
data() {
return {
phone:'',
password:''
};
},
methods: {
//
// login(config){
// login(config).then(res=>{
// const code = res.data.code;
// if (code === 100) {
// uni.showToast({
// title: ''
// })
// window.localStorage.setItem("token", res.data.data.token);
// uni.switchTab({
// url: '../bind/bind'
// })
// } else {
// uni.showToast({
// title: res.data.msg
// })
// }
// }).catch(err=>{
// console.log(err)
// })
// },
//
// goPath(validateForm) {
// this.$refs[validateForm].validate(valid => {
// if (!valid) {
// this.login(this.loginForm);
// }
// })
// },
//
loginSubmit: function(e) {
console.log('form发生了submit事件,携带数据为:' + JSON.stringify(e.detail.value));
// console.log('formsubmit' + JSON.stringify(e.detail.value));
if (!this.phone) {
uni.showToast({
title: '请输入登录账号',
icon: 'none'
})
return;
} else if (!isvalidPhone(this.phone)) {
uni.showToast({
title: '请输入正确的11位登录账号',
icon: 'none'
})
return;
}
if (!this.password) {
uni.showToast({
title: '请输入密码',
icon: 'none'
})
return;
}
var formdata = e.detail.value;
// uni.showModal({
// content: '' + JSON.stringify(formdata),
// showCancel: false
// });
// this.login(formdata);
uni.navigateTo({
url: '../bind/bind'
});
@ -61,6 +113,7 @@ export default {
width: 520rpx;
height: 86rpx;
margin-bottom: 41.66rpx;
font-size: 30.55rpx;
text-align: center;
border: 1px solid #cbcbcb;
border-radius: 86rpx;

49
pages/show/show.vue

@ -40,13 +40,13 @@
</view>
<!-- <view style="position:absolute; bottom:55.55rpx; left: 69.44rpx; color: #fff; z-index: 99999;">{{ infoTxt }}--{{ audioName }}</view> -->
<!-- <view v-if="!deviceInfoShow" class="local-data">
<view v-if="!deviceInfoShow" class="local-data">
<text class="title">欢迎使用数字新视窗</text>
<view class="data-info">设备ID : 123456789</view>
<view class="data-info">设备账号 : 123456789</view>
<view class="data-info">设备名称 : CVBBN2</view>
<view class="count-down" @click="deviceInfoShow=true">{{ count }}</view>
</view> -->
</view>
</view>
</template>
@ -54,6 +54,7 @@
import one from './show.js';
let innerAudioContext = uni.createInnerAudioContext();
export default {
name:'Show',
components: {},
data() {
return {
@ -104,7 +105,7 @@ export default {
this.auto();
},
mounted() {
// this.countdown();
this.countdown();
this.changeMaterial();
},
methods: {
@ -207,13 +208,6 @@ export default {
this.flagIndex = this.itemLength[this.contentIndex];
}
if (this.flagIndex == -1) {
// if(this.contentIndex == -1){
// this.contentIndex = this.itemLength.length - 1;
// }
// console.log('itemIndex',this.itemIndex)
// console.log('flagIndex',this.flagIndex)
// console.log('contentIndex',this.contentIndex)
// console.log(this.materialsCont[this.contentIndex])
this.contentIndex--;
this.flagIndex = this.itemLength[this.contentIndex];
}
@ -255,18 +249,11 @@ export default {
}
// --
innerAudioContext = uni.createInnerAudioContext();
console.log(innerAudioContext.paused)
console.log(this.isPauseAudio)
if(this.isPauseAudio){
innerAudioContext.pause();
}else{
innerAudioContext.play();
}
this.playVoice(this.audioSrc);
},
//
videoPlayEnd() {
console.log('end-video')
console.log('end-video');
this.itemIndex++;
this.flagIndex++;
this.changIndex();
@ -327,7 +314,7 @@ export default {
if(this.isPauseAudio){
innerAudioContext.pause()
}else{
innerAudioContext.play();
this.playVoice(this.audioSrc)
}
},
//
@ -337,22 +324,22 @@ export default {
innerAudioContext.stop();
}
innerAudioContext = uni.createInnerAudioContext();
// if(_this.isPauseAudio){
// innerAudioContext.pause();
// }else{
// innerAudioContext.play();
// }
innerAudioContext.stop();
innerAudioContext.src = src;
innerAudioContext.autoplay = true;
innerAudioContext.loop = true;
if(_this.isPauseAudio){
if(innerAudioContext.paused){
innerAudioContext.destroy();
innerAudioContext = uni.createInnerAudioContext();
}else{
innerAudioContext.autoplay = true;
}
}else{
innerAudioContext.autoplay = true;
}
innerAudioContext.onPlay(() => {
this.infoTxt = '音频开始播放';
console.log('开始播放');
});
innerAudioContext.onPause(function() {
console.log('onPause');
});
innerAudioContext.onStop(() => {
this.infoTxt = '音频停止';
// console.log('');
@ -432,8 +419,8 @@ export default {
animation: circle 2s linear infinite;
}
@keyframes circle {
100% {
transform: rotate(360deg);
100% {
transform: rotate(360deg);
}
}
.show-audio uni-image {

1
pages/show/show2.vue

@ -36,7 +36,6 @@
</template>
<script>
import utils from '@/utils/common.js';
import one from './show2.js';
let innerAudioContext = uni.createInnerAudioContext();
export default {

53
utils/common.js

@ -1,53 +0,0 @@
const utils = {};
var audio = uni.createInnerAudioContext()
var isPause = false //是否在暂停状态
var previousSrc = '' //上一个音频的地址,如果和现在的播放地址一样就进入暂停
utils.playAudios = function (src) {
if(isPause){ //在暂停状态
if(previousSrc == src){
audio.play()
}else{
audio.stop()
audio.src = src
previousSrc = src
audio.onCanplay(()=> {
audio.play()
})
}
}else{ //不在暂停状态
if(previousSrc == src){
audio.pause()
isPause = true
}else{
audio.stop()
audio.src = src
previousSrc = src
audio.onCanplay(()=> {
audio.play()
})
}
}
}
utils.stopAudios = function () {
audio.stop()
}
utils.pauseAudios = function () {
audio.pause()
}
audio.onPlay(() => { //播放监听事件
console.log('开始播放');
isPause = false
});
audio.onPause(() => {//暂停监听
console.log('暂停');
isPause = true
});
audio.onEnded(() => {// 自然播放结束监听也需要更改isPause 开关状态
console.log('音频自然播放结束事件');
isPause = true
});
export default utils

148
utils/global.js

@ -1,5 +1,5 @@
var LocalData = {}
var backPics = []
var LocalData = {};
var backPics = [];
var serialNum = '';
serialNum=uni.getStorageSync('serialNum');
// 获取轮播图
@ -7,125 +7,125 @@ const initBackPics = function() {
uni.getStorage({
key:'backPics',
success: (data) => {
backPics = data.data
backPics = data.data;
// console.log('轮播图', backPics)
}
})
}
});
};
function findObjByName(list, name){
list.forEach((value) => {
if(value.name == name){
return value
return value;
}
})
return null
});
return null;
}
function setListData(list, local){
let num = list.length
let num = list.length;
for(let i = 0; i < num; i ++){
let obj = list[i]
let lObj = local[i]
let obj = list[i];
let lObj = local[i];
if(!lObj){
local[i] = obj
local[i] = obj;
}else{
if(!lObj.list){
lObj.list = []
lObj.list = [];
}
lObj.list = lObj.list.concat(obj.list)
lObj.list = lObj.list.concat(obj.list);
}
}
return local
return local;
}
const setStorage = function(LocalData) {
uni.setStorageSync('localData',LocalData)
uni.setStorageSync('localData',LocalData);
// console.log('LocalData:', LocalData)
}
};
const setClass = function() {
LocalData.book = []
LocalData.doc = []
LocalData.video = []
LocalData.theme = []
LocalData.vr = []
LocalData.book = [];
LocalData.doc = [];
LocalData.video = [];
LocalData.theme = [];
LocalData.vr = [];
console.log('LocalData:', LocalData)
uni.setStorageSync('localData',LocalData)
}
console.log('LocalData:', LocalData);
uni.setStorageSync('localData',LocalData);
};
const getStorage = function() {
uni.getStorage({
key: 'localData',
success: (data) => {
LocalData = data.data
LocalData = data.data;
}
})
});
if(!LocalData.book){
LocalData.book = []
LocalData.book = [];
}
if(!LocalData.doc){
LocalData.doc = []
LocalData.doc = [];
}
if(!LocalData.video){
LocalData.video = []
LocalData.video = [];
}
if(!LocalData.theme){
LocalData.theme = []
LocalData.theme = [];
}
if(!LocalData.vr){
LocalData.vr = []
LocalData.vr = [];
}
if(!LocalData.bookClass) LocalData.bookClass = []
if(!LocalData.docClass) LocalData.docClass = []
if(!LocalData.videoClass) LocalData.videoClass = []
if(!LocalData.themeClass) LocalData.themeClass = []
if(!LocalData.vrClass) LocalData.vrClass = []
return LocalData
}
if(!LocalData.bookClass) LocalData.bookClass = [];
if(!LocalData.docClass) LocalData.docClass = [];
if(!LocalData.videoClass) LocalData.videoClass = [];
if(!LocalData.themeClass) LocalData.themeClass = [];
if(!LocalData.vrClass) LocalData.vrClass = [];
return LocalData;
};
//<<<<<<<<------------- encode/decode ------------->>>>>>>>>>>>>>>>>>//
// const CryptoJS = require('crypto-js'); //引用AES源码js
var encryptCode = null
var cryptKey = "FFFFFFFFFFFFFFFF"
var macAddress = ''
var encryptCode = null;
var cryptKey = 'FFFFFFFFFFFFFFFF';
var macAddress = '';
//解密方法
const initSn = function() {
console.log('initSn')
console.log('initSn');
uni.getStorage({
key: 'encryptCode',
success: (res) => {
encryptCode = res.data
encryptCode = res.data;
if (encryptCode == null || encryptCode.length < 1) {
console.log('err: 雷燕todo······跳到激活页面')
console.log('err: 雷燕todo······跳到激活页面');
}
serialNum=uni.getStorageSync('serialNum');
console.log('init sn:', serialNum)
console.log('init sn:', serialNum);
if(serialNum){
uni.navigateTo({
url:'../index/index'
})
});
}
},
fail: (err) => {
console.log('fail: 雷燕todo······跳到激活页面')
console.log('fail: 雷燕todo······跳到激活页面');
//雷燕todo······跳到激活页面
}
})
}
});
};
const setSerialNum = function(encode){
encryptCode = encode.toString()
serialNum=encode
console.log('setSerialNum:', serialNum, encryptCode)
encryptCode = encode.toString();
serialNum=encode;
console.log('setSerialNum:', serialNum, encryptCode);
uni.setStorageSync(
'encryptCode',
encryptCode)
}
encryptCode);
};
const initMacAddress = function() {
// console.log('initMac')
var net = plus.android.importClass("java.net.NetworkInterface")
var wl0 = net.getByName('wlan0')
var macByte = wl0.getHardwareAddress()
var str = ''
var net = plus.android.importClass('java.net.NetworkInterface');
var wl0 = net.getByName('wlan0');
var macByte = wl0.getHardwareAddress();
var str = '';
//下面这段代码来自网络
for (var i = 0; i < macByte.length; i++) {
    var tmp = '';
@ -137,31 +137,31 @@ const initMacAddress = function() {
      tmp = num.toString(16);
    }
    if (tmp.length == 1) {
      tmp = "0" + tmp;
      tmp = '0' + tmp;
    }
    str += tmp;
}
console.log('mac', str)
console.log('mac', str);
macAddress = str.toUpperCase()
macAddress = str.toUpperCase();
if(!macAddress || macAddress.length < 1 || macAddress == '02:00:00:00:00:00'){
plus.device.getInfo({
success:(res) => {
macAddress = res.uuid
macAddress = macAddress.substr(0, 16).toUpperCase()
macAddress = macAddress.length < 16 ? macAddress.concat('FFFFFFFFFFFFFFFF'.substr(0, 16 - macAddress.length)) : macAddress
cryptKey = macAddress
console.log('mac address_1:', macAddress, cryptKey)
initSn()
macAddress = res.uuid;
macAddress = macAddress.substr(0, 16).toUpperCase();
macAddress = macAddress.length < 16 ? macAddress.concat('FFFFFFFFFFFFFFFF'.substr(0, 16 - macAddress.length)) : macAddress;
cryptKey = macAddress;
console.log('mac address_1:', macAddress, cryptKey);
initSn();
}
})
});
}else{
let tmp = macAddress.replace(/-*:*/gi,'')
let tmp = macAddress.replace(/-*:*/gi,'');
cryptKey = tmp && tmp.length < 16 ? 'FF' + tmp.replace(/-*:*/gi,'') + 'FF' : tmp,
initSn()
initSn();
}
console.log('mac address:', macAddress, cryptKey)
}
console.log('mac address:', macAddress, cryptKey);
};
//<<<<<<<<------------- encode/decode ------------->>>>>>>>>>>>>>>>>>//
export {
@ -176,4 +176,4 @@ export {
backPics,
initBackPics,
setSerialNum
}
};

26
utils/music.js

@ -1,26 +0,0 @@
// const bgm = uni.createInnerAudioContext();
// bgm.src = 'https://qiniu.aiyxlib.com/yuekan-BGM20-Chinap.mp3'
// bgm.loop = true;
// var music = {
// //mute 表示是否是静音,,默认不静音
// playBgm({mute=false}){
// if (!bgm) return;
// if(mute){
// bgm.pause()
// }else{
// bgm.play()
// }
// bgm.onPause(()=>{
// console.log('暂停背景音乐');
// })
// bgm.onPlay(() => {
// console.log('开始播放音乐#######');
// })
// bgm.onError((res) => {
// console.log(res)
// })
// }
// }
// module.exports = music

165
utils/validate.js

@ -0,0 +1,165 @@
/**
* @param {string} path
* @returns {Boolean}
*/
export function isExternal(path) {
return /^(https?:|mailto:|tel:)/.test(path);
}
/**
* @param {string} str
* @returns {Boolean}
*/
export function validUsername(str) {
const valid_map = ['admin', 'editor'];
return valid_map.indexOf(str.trim()) >= 0;
}
/**
* @param {string} url
* @returns {Boolean}
*/
export function validURL(url) {
const reg = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/;
return reg.test(url);
}
/**
* @param {string} str
* @returns {Boolean}
*/
export function validLowerCase(str) {
const reg = /^[a-z]+$/;
return reg.test(str);
}
/**
* @param {string} str
* @returns {Boolean}
*/
export function validUpperCase(str) {
const reg = /^[A-Z]+$/;
return reg.test(str);
}
/**
* @param {string} str
* @returns {Boolean}
*/
export function validAlphabets(str) {
const reg = /^[A-Za-z]+$/;
return reg.test(str);
}
/**
* @param {string} email
* @returns {Boolean}
*/
export function validEmail(email) {
const reg = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return reg.test(email);
}
export function isvalidPhone(phone) {
const reg = /^1[3|4|5|7|8][0-9]\d{8}$/;
return reg.test(phone);
}
/**
* @param {string} str
* @returns {Boolean}
*/
export function isString(str) {
if (typeof str === 'string' || str instanceof String) {
return true;
}
return false;
}
/**
* @param {Array} arg
* @returns {Boolean}
*/
export function isArray(arg) {
if (typeof Array.isArray === 'undefined') {
return Object.prototype.toString.call(arg) === '[object Array]';
}
return Array.isArray(arg);
}
/**
* 是否合法IP地址
* @param rule
* @param value
* @param callback
*/
export function validateIP(rule, value, callback) {
if (value === '' || value === undefined || value == null) {
callback();
} else {
const reg = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/;
if ((!reg.test(value)) && value !== '') {
callback(new Error('请输入正确的IP地址'));
} else {
callback();
}
}
}
/* 是否手机号码或者固话*/
export function validatePhoneTwo(rule, value, callback) {
const reg = /^((0\d{2,3}-\d{7,8})|(1[34578]\d{9}))$/;
if (value === '' || value === undefined || value == null) {
callback();
} else {
if ((!reg.test(value)) && value !== '') {
callback(new Error('请输入正确的电话号码或者固话号码'));
} else {
callback();
}
}
}
/* 是否固话*/
export function validateTelephone(rule, value, callback) {
const reg = /0\d{2}-\d{7,8}/;
if (value === '' || value === undefined || value == null) {
callback();
} else {
if ((!reg.test(value)) && value !== '') {
callback(new Error('请输入正确的固话(格式:区号+号码,如010-1234567)'));
} else {
callback();
}
}
}
/* 是否手机号码*/
export function validatePhone(rule, value, callback) {
const reg = /^[1][3,4,5,7,8][0-9]{9}$/;
if (value === '' || value === undefined || value == null) {
callback();
} else {
if ((!reg.test(value)) && value !== '') {
callback(new Error('请输入正确的电话号码'));
} else {
callback();
}
}
}
/* 是否身份证号码*/
export function validateIdNo(rule, value, callback) {
const reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
if (value === '' || value === undefined || value == null) {
callback();
} else {
if ((!reg.test(value)) && value !== '') {
callback(new Error('请输入正确的身份证号码'));
} else {
callback();
}
}
}
Loading…
Cancel
Save