Przeglądaj źródła

基础框架升级

cuiwei 1 miesiąc temu
rodzic
commit
5357211625

+ 376 - 0
src/common/js/validate.js

@@ -0,0 +1,376 @@
+/**
+ * Created by PanJiaChen on 16/11/18.
+ */
+
+/**
+ * @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
+    return true
+}
+
+/* 是否合法IP地址*/
+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 notZero(value, callback) {
+    if (value === '4') {
+        if (value === '' || value === 0 || value === '0') {
+            callback()
+        } else {
+            callback(new Error('金额和数量不得为0'))
+        }
+    } else {
+        callback()
+    }
+}
+/* 是否固话*/
+export function validateTelphone(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()
+        }
+    }
+}
+/* 是否邮箱*/
+export function validateEMail(rule, value, callback) {
+    const reg = /^([a-zA-Z0-9]+[-_\.]?)+@[a-zA-Z0-9]+\.[a-z]+$/
+    if (value === '' || value === undefined || value === null) {
+        callback()
+    } else {
+        if (!reg.test(value)) {
+            callback(new Error('请输入正确的邮箱地址'))
+        } else {
+            callback()
+        }
+    }
+}
+/* 合法uri*/
+export function validateURL(textval) {
+    const urlregex = /^(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 urlregex.test(textval)
+}
+
+/* 验证内容是否英文数字以及下划线*/
+export function isPassword(rule, value, callback) {
+    // const reg = /^(?=.*[0-9].*)(?=.*[A-Z].*)(?=.*[a-z].*).{8,}$/
+    const reg = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*])(?!.*\s).{8,}$/
+
+    if (value.length < 8) {
+        callback(new Error('密码不可小于8位'))
+    } else if (!reg.test(value)) {
+        callback(new Error('密码需由至少8位大小写字母、数字及符号组成'))
+    } else if (checkPasswordContain(value)) {
+        callback(new Error('密码不可包含常用复数数字或指定简易密码'))
+    } else {
+        callback()
+    }
+}
+
+export function checkPassword(value) {
+    const reg = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*])(?!.*\s).{8,}$/
+
+    if (value.length < 8) {
+        return '密码不可小于8位';
+    } else if (!reg.test(value)) {
+        return '密码需由至少8位大小写字母、数字及符号组成';
+    } else if (checkPasswordContain(value)) {
+        return '密码不可包含常用复数数字或指定简易密码';
+    } else {
+        return "0";
+    }
+}
+
+function checkPasswordContain(value) {
+    const blackList = ['123456', '654321', '123456!', '654321!', 'Xiaoai@2024', 'idea@',
+        '000', '111', '222', '333', '444', '555', '666', '777', '888', '999']
+
+    for (let i = 0; i < blackList.length; i++) {
+        if (value.indexOf(blackList[i]) > -1) return true
+    }
+
+    return false
+}
+
+/* 自动检验数值的范围*/
+export function checkMax20000(rule, value, callback) {
+    if (value === '' || value === undefined || value === null) {
+        callback()
+    } else if (!Number(value)) {
+        callback(new Error('请输入[1,20000]之间的数字'))
+    } else if (value < 1 || value > 20000) {
+        callback(new Error('请输入[1,20000]之间的数字'))
+    } else {
+        callback()
+    }
+}
+
+// 验证数字输入框最大数值,32767
+export function checkMaxVal(rule, value, callback) {
+    if (value < 0 || value > 32767) {
+        callback(new Error('请输入[0,32767]之间的数字'))
+    } else {
+        callback()
+    }
+}
+// 验证是否1-99之间
+export function isOneToNinetyNine(rule, value, callback) {
+    if (!value) {
+        return callback(new Error('输入不可以为空'))
+    }
+    setTimeout(() => {
+        if (!Number(value)) {
+            callback(new Error('请输入正整数'))
+        } else {
+            const re = /^[1-9][0-9]{0,1}$/
+            const rsCheck = re.test(value)
+            if (!rsCheck) {
+                callback(new Error('请输入正整数,值为【1,99】'))
+            } else {
+                callback()
+            }
+        }
+    }, 0)
+}
+
+// 验证是否整数
+export function isInteger(rule, value, callback) {
+    if (!value) {
+        return callback(new Error('输入不可以为空'))
+    }
+    setTimeout(() => {
+        if (!Number(value)) {
+            callback(new Error('请输入正整数'))
+        } else {
+            const re = /^[0-9]*[1-9][0-9]*$/
+            const rsCheck = re.test(value)
+            if (!rsCheck) {
+                callback(new Error('请输入正整数'))
+            } else {
+                callback()
+            }
+        }
+    }, 0)
+}
+// 验证是否整数,非必填
+export function isIntegerNotMust(rule, value, callback) {
+    if (!value) {
+        callback()
+    }
+    setTimeout(() => {
+        if (!Number(value)) {
+            callback(new Error('请输入正整数'))
+        } else {
+            const re = /^[0-9]*[1-9][0-9]*$/
+            const rsCheck = re.test(value)
+            if (!rsCheck) {
+                callback(new Error('请输入正整数'))
+            } else {
+                callback()
+            }
+        }
+    }, 1000)
+}
+
+// 验证是否是[0-1]的小数
+export function isDecimal(rule, value, callback) {
+    if (!value) {
+        return callback(new Error('输入不可以为空'))
+    }
+    setTimeout(() => {
+        if (!Number(value)) {
+            callback(new Error('请输入[0,1]之间的数字'))
+        } else {
+            if (value < 0 || value > 1) {
+                callback(new Error('请输入[0,1]之间的数字'))
+            } else {
+                callback()
+            }
+        }
+    }, 100)
+}
+
+// 验证是否是[1-10]的小数,即不可以等于0
+export function isBtnOneToTen(rule, value, callback) {
+    if (typeof value === 'undefined') {
+        return callback(new Error('输入不可以为空'))
+    }
+    setTimeout(() => {
+        if (!Number(value)) {
+            callback(new Error('请输入正整数,值为[1,10]'))
+        } else {
+            if (!(value === '1' || value === '2' || value === '3' || value === '4' || value === '5' || value === '6' || value === '7' || value === '8' || value === '9' || value === '10')) {
+                callback(new Error('请输入正整数,值为[1,10]'))
+            } else {
+                callback()
+            }
+        }
+    }, 100)
+}
+// 验证是否是[1-100]的小数,即不可以等于0
+export function isBtnOneToHundred(rule, value, callback) {
+    if (!value) {
+        return callback(new Error('输入不可以为空'))
+    }
+    setTimeout(() => {
+        if (!Number(value)) {
+            callback(new Error('请输入整数,值为[1,100]'))
+        } else {
+            if (value < 1 || value > 100) {
+                callback(new Error('请输入整数,值为[1,100]'))
+            } else {
+                callback()
+            }
+        }
+    }, 100)
+}
+// 验证是否是[0-100]的小数
+export function isBtnZeroToHundred(rule, value, callback) {
+    if (!value) {
+        return callback(new Error('输入不可以为空'))
+    }
+    setTimeout(() => {
+        if (!Number(value)) {
+            callback(new Error('请输入[1,100]之间的数字'))
+        } else {
+            if (value < 0 || value > 100) {
+                callback(new Error('请输入[1,100]之间的数字'))
+            } else {
+                callback()
+            }
+        }
+    }, 100)
+}
+
+// 验证端口是否在[0,65535]之间
+export function isPort(rule, value, callback) {
+    if (!value) {
+        return callback(new Error('输入不可以为空'))
+    }
+    setTimeout(() => {
+        if (value === '' || typeof (value) === undefined) {
+            callback(new Error('请输入端口值'))
+        } else {
+            const re = /^([0-9]|[1-9]\d|[1-9]\d{2}|[1-9]\d{3}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$/
+            const rsCheck = re.test(value)
+            if (!rsCheck) {
+                callback(new Error('请输入在[0-65535]之间的端口值'))
+            } else {
+                callback()
+            }
+        }
+    }, 100)
+}
+// 验证端口是否在[0,65535]之间,非必填,isMust表示是否必填
+export function isCheckPort(rule, value, callback) {
+    if (!value) {
+        callback()
+    }
+    setTimeout(() => {
+        if (value === '' || typeof (value) === undefined) {
+            // callback(new Error('请输入端口值'));
+        } else {
+            const re = /^([0-9]|[1-9]\d|[1-9]\d{2}|[1-9]\d{3}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$/
+            const rsCheck = re.test(value)
+            if (!rsCheck) {
+                callback(new Error('请输入在[0-65535]之间的端口值'))
+            } else {
+                callback()
+            }
+        }
+    }, 100)
+}
+
+/* 小写字母*/
+export function validateLowerCase(str) {
+    const reg = /^[a-z]+$/
+    return reg.test(str)
+}
+/* 保留2为小数*/
+export function validatetoFixedNew(str) {
+    return str
+}
+/* 验证key*/
+// export function validateKey(str) {
+//     var reg = /^[a-z_\-:]+$/;
+//     return reg.test(str);
+// }
+
+/* 大写字母*/
+export function validateUpperCase(str) {
+    const reg = /^[A-Z]+$/
+    return reg.test(str)
+}
+
+/* 大小写字母*/
+export function validatAlphabets(str) {
+    const reg = /^[A-Za-z]+$/
+    return reg.test(str)
+}

+ 13 - 4
src/pages/forgetPassword.vue

@@ -25,7 +25,7 @@
 			<div class="form-input">
 				<input
 				 type="password"
-				 placeholder="请设置 8-12位字母数字组合密码"
+				 placeholder="请设置 8-12位大小写字母、数字及符号组成密码"
 				 v-model="password"
 				/>
 			</div>
@@ -57,6 +57,7 @@
 </template>
 
 <script>
+import { checkPassword } from '@/common/js/validate'
 import { send, register_by_account, checkAccount } from '../service/api_user.js'
 import { mapActions } from 'vuex'
 import { Toast } from 'vant'
@@ -175,11 +176,19 @@ export default {
 				Toast('请填写密码')
 				return false
 			}
-			const ab = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,12}$/
-			if (ab.test(this.password) === false) {
-				Toast('请填写正确格式的密码')
+			// const ab = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,12}$/
+			// if (ab.test(this.password) === false) {
+			// 	Toast('请填写正确格式的密码')
+			// 	return false
+			// }
+
+			// 验证密码
+			let passMsg = checkPassword(this.password)
+			if(passMsg != "0"){
+				Toast(passMsg)
 				return false
 			}
+
 			if (this.password !== this.checkPassword) {
 				Toast('确认密码与密码不一致')
 				return false

+ 14 - 5
src/pages/mine/update-password.vue

@@ -35,7 +35,7 @@
             @mouseleave="blurText"
             type="password"
             ref="passwordText"
-            placeholder="6-20位数字 / 字母 / 字符组合"
+            placeholder="8-20位数字 / 字母 / 字符组合"
             class="new-password"
             v-model="newPassword"
           />
@@ -72,6 +72,7 @@
 
 <script>
 import { mapActions } from "vuex";
+import { checkPassword } from '@/common/js/validate'
 import message from "../../components/message";
 import { removeSpace } from "../../common/js/util";
 import auth from "../../service/auth";
@@ -126,10 +127,18 @@ export default {
       if (!removeSpace(this.oldPassword) || !removeSpace(this.newPassword)) {
         return;
       }
-      if (!/^[a-zA-Z0-9\x21-\x7e]{6,20}$/.test(this.newPassword)) {
-        this.errMsg = "密码格式不对";
-        return;
-      }
+      // if (!/^[a-zA-Z0-9\x21-\x7e]{6,20}$/.test(this.newPassword)) {
+      //   this.errMsg = "密码格式不对";
+      //   return;
+      // }
+
+      // 验证密码
+			let passMsg = checkPassword(this.newPassword)
+			if(passMsg != "0"){
+				this.errMsg = passMsg;
+				return;
+			}
+
       this.errMsg = "";
 
       this.submitUpdate();

+ 13 - 4
src/pages/password.vue

@@ -57,6 +57,7 @@
 
 <script>
 import { changePassword } from '@/service/api_user'
+import { checkPassword } from '@/common/js/validate'
 import { Toast } from 'vant'
 import auth from '@/service/auth'
 
@@ -101,10 +102,18 @@ export default {
 			//   Toast('密码格式不对!')
 			//   return false
 			// }
-			var pwdRegex = new RegExp('(?=.*[0-9])(?=.*[a-zA-Z]).{8,30}')
-			if (!pwdRegex.test(this.password)) {
-				// alert("您的密码复杂度太低(密码中必须包含字母、数字),请及时修改密码!");
-				Toast('您的密码复杂度太低(密码中必须包含字母、数字),请及时修改密码!')
+
+			// var pwdRegex = new RegExp('(?=.*[0-9])(?=.*[a-zA-Z]).{8,30}')
+			// if (!pwdRegex.test(this.password)) {
+			// 	// alert("您的密码复杂度太低(密码中必须包含字母、数字),请及时修改密码!");
+			// 	Toast('您的密码复杂度太低(密码中必须包含字母、数字),请及时修改密码!')
+			// 	return false
+			// }
+
+			// 验证密码
+			let passMsg = checkPassword(this.password)
+			if(passMsg != "0"){
+				Toast(passMsg)
 				return false
 			}
 

+ 13 - 4
src/pages/register.vue

@@ -24,7 +24,7 @@
 			<div class="form-input">
 				<input
 				 type="password"
-				 placeholder="请设置 8-12位字母数字组合密码"
+				 placeholder="请设置 8-12位大小写字母、数字及符号组成密码"
 				 v-model="password"
 				/>
 			</div>
@@ -67,6 +67,7 @@
 </template>
 
 <script>
+import { checkPassword } from '@/common/js/validate'
 import { send, register_by_account } from '../service/api_user.js'
 import { mapActions } from 'vuex'
 import { Toast } from 'vant'
@@ -167,11 +168,19 @@ export default {
 				Toast('请填写密码')
 				return false
 			}
-			const ab = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,12}$/
-			if (ab.test(this.password) === false) {
-				Toast('请填写正确格式的密码')
+			// const ab = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,12}$/
+			// if (ab.test(this.password) === false) {
+			// 	Toast('请填写正确格式的密码')
+			// 	return false
+			// }
+
+			// 验证密码
+			let passMsg = checkPassword(this.password)
+			if(passMsg != "0"){
+				Toast(passMsg)
 				return false
 			}
+
 			if (this.password !== this.checkPassword) {
 				Toast('确认密码与密码不一致')
 				return false

+ 1 - 1
src/service/api_user.js

@@ -1,5 +1,5 @@
 import { request } from './request'
-
+1
 const baseUri = '/industryParkApi'
 const auth = '/wx/auth'
 const user = '/wx/user'

+ 1 - 0
src/service/request.js

@@ -15,6 +15,7 @@ export function request(request, isFile) {
     if (request.headers && auth.getToken()) {
         // ['RC-Token'] is a custom headers key
         request.headers['RC-Token'] = auth.getToken()
+        request.headers['Authorization'] = "Bearer " + auth.getToken()
     }
     const requestBody = {
         method: request.method,

+ 3 - 3
vue.config.js

@@ -8,7 +8,7 @@ function resolve(dir) {
 const name = '家园H5' // page title
 
 const ip = '0.0.0.0' // dev port
-const port = 9528 // dev port
+const port = 9526 // dev port
 
 const Webpack = require('webpack')
 const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
@@ -34,9 +34,9 @@ module.exports = {
         // 以上的ip和端口是我们本机的;下面为需要跨域的
         proxy: { // 配置跨域
             '/industryParkApi': {
-                // target: 'http://localhost:9001',
+                target: 'http://localhost:9111',
                 // target: 'http://123.207.115.14:9091',
-                target: process.env.VUE_APP_API_URL,
+                // target: process.env.VUE_APP_API_URL,
                 // https://www.idea-sf.com/industryParkApi
                 ws: true,
                 changOrigin: true, // 允许跨域