oms
This commit is contained in:
223
utils/tool.js
Normal file
223
utils/tool.js
Normal file
@@ -0,0 +1,223 @@
|
||||
import utils from '@/utils/encode'
|
||||
export default {
|
||||
//调起上传图片
|
||||
chooseImage(clickfn) {
|
||||
const JSESSIONID = utils.uuid()
|
||||
let chooseImageUrl = ''
|
||||
uni.chooseImage({
|
||||
success: (chooseImageRes) => {
|
||||
const tempFilePaths = chooseImageRes.tempFilePaths;
|
||||
uni.uploadFile({
|
||||
url: 'https://www.xingoil.com/adminapi/oil-oss/obejct/uploadFile',
|
||||
filePath: tempFilePaths[0],
|
||||
name: 'file',
|
||||
formData: {
|
||||
ossKey: 'xingyou',
|
||||
pathKey: 'publicxingyou',
|
||||
encrypt: 'PUBLIC',
|
||||
},
|
||||
header: {
|
||||
"Content-Type": "multipart/form-data",
|
||||
"Authorization": uni.getStorageSync('Authorization'),
|
||||
'dataSources': 'MP',
|
||||
"imei": uni.getStorageSync('unionid'),
|
||||
"openId": uni.getStorageSync('openid'),
|
||||
'JSESSIONID': JSESSIONID,
|
||||
'token': utils.md5Salt(JSESSIONID)
|
||||
},
|
||||
success: (uploadFileRes) => {
|
||||
chooseImageUrl = JSON.parse(uploadFileRes.data).data.publicUrl
|
||||
clickfn(chooseImageUrl)
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
//数据转为两位小数
|
||||
numberSetting(obj, key, nm=2) {
|
||||
if (arguments.length < 2) throw new Error('请检查函数配置参数,最少传递两个必填参数');
|
||||
if (!Array.isArray(key)) throw new Error('参数2必须为Array');
|
||||
// if (obj.constructor.toString().indexOf('Object') == -1) throw new Error('参数1必须为Object');
|
||||
if (Array.isArray(obj)) {
|
||||
obj.forEach((item, index) => {
|
||||
if (Array.isArray(item)) {
|
||||
this.numberSetting(item, key, nm)
|
||||
}
|
||||
let keyArray = Object.keys(item)
|
||||
keyArray.forEach(i => {
|
||||
if (key.includes(i)) {
|
||||
item[i] = isNaN(Number(item[i]))? 0.00: Number(item[i]).toFixed(nm)
|
||||
}
|
||||
})
|
||||
})
|
||||
} else {
|
||||
Object.keys(obj).forEach(keys => {
|
||||
if (key.includes(keys)) {
|
||||
// if (isNaN(Number(obj[keys]))) throw new Error(keys + '值不是数字')
|
||||
// obj[keys] = Number(obj[keys]).toFixed(nm);
|
||||
obj[keys] = isNaN(Number(obj[keys]))? 0.00: Number(obj[keys]).toFixed(nm)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
},
|
||||
/*
|
||||
校验数据规范
|
||||
data:校验源数据,
|
||||
options:校验配置,
|
||||
correct:是否修正
|
||||
*/
|
||||
checkData(data, options, correct = false) {
|
||||
// 校验对象
|
||||
let checkData = {
|
||||
typeFn(data, type) {
|
||||
return typeof data == type
|
||||
},
|
||||
correctFn(item) {
|
||||
console.log('校验失败',item)
|
||||
//查看是否修正
|
||||
if (correct) {
|
||||
//修正
|
||||
switch (item.type) {
|
||||
case 'number':
|
||||
data[item.field] = data[item.field]==null?item.defaultValue:data[item.field]==='' || isNaN(Number(data[item.field])) ? item.defaultValue : Number(data[item.field])
|
||||
break;
|
||||
case 'string':
|
||||
data[item.field] = data[item.field]==null?item.defaultValue:String(data[item.field])
|
||||
break;
|
||||
case 'null':
|
||||
data[item.field] = null
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
//无需直接退出
|
||||
wx.exitMiniProgram({
|
||||
success: function () {
|
||||
console.log('拜拜')
|
||||
}
|
||||
})
|
||||
// throw new Error('错误!!!');
|
||||
}
|
||||
},
|
||||
}
|
||||
//参数校验
|
||||
if (arguments.length < 2) throw new Error('请检查函数配置参数,最少传递两个必填参数');
|
||||
if (!Array.isArray(options)) throw new Error('参数2必须为Array');
|
||||
//获取对象的key
|
||||
let dataKeys = Object.keys(data);
|
||||
//开始通过 options 校验
|
||||
options.forEach(item => {
|
||||
//判断是否有该字段
|
||||
if (typeof data[item.field] !== 'undefined') {
|
||||
//校验数据类型
|
||||
if (!checkData.typeFn(data[item.field],item.type)) {
|
||||
//类型校验失败
|
||||
checkData.correctFn(item);
|
||||
}
|
||||
} else {
|
||||
console.log(`%c ${item.field} ← 错误值,请检查源数据中该字段`, 'font-size:50px;color:red');
|
||||
checkData.correctFn(item);
|
||||
}
|
||||
})
|
||||
},
|
||||
//表单校验
|
||||
checkFn(obj, whiteList, configure = {}) {
|
||||
//校验状态 con
|
||||
let con = {
|
||||
result: true,
|
||||
field: '',
|
||||
WrongText: '',
|
||||
errCheckField: ''
|
||||
}
|
||||
//校验参数
|
||||
if (arguments.length < 1) throw new Error('请检查函数配置参数,最少传递1个必填参数');
|
||||
if (obj.constructor.toString().indexOf('Object') == -1) throw new Error('参数1必须为Object');
|
||||
if (whiteList && !Array.isArray(whiteList)) throw new Error('参数2必须为Array');
|
||||
|
||||
let configurationTable = Object.keys(configure)
|
||||
// console.log(configurationTable, obj, '需要校验的字段数组')
|
||||
// 循环需要校验的对象
|
||||
Object.keys(obj).forEach(keys => {
|
||||
// console.log(keys, '当前循环的校验对象')
|
||||
//如果循环的当前字段在白名单内跳过
|
||||
// console.log(whiteList, '白名单')
|
||||
if (whiteList.includes(keys)) return
|
||||
//校验状态改变跳过
|
||||
// console.log(con.result, '校验状态')
|
||||
if (!con.result) return
|
||||
if (configurationTable.includes(keys)) {
|
||||
//当前需要匹配的字段 obj[keys] configure[keys]
|
||||
//循环配置参数 拿到校验配置
|
||||
// console.log('key:', keys, '源对象:', obj[keys], '校验配置', configure[keys], '匹配到的需要校验的数据')
|
||||
Object.keys(configure[keys]).forEach(pages => {
|
||||
if (!con.result) return
|
||||
// console.log('字段:', keys, '开始校验', pages, )
|
||||
// configure[keys][pages]
|
||||
switch (pages) {
|
||||
case 'type':
|
||||
con.result = typeof obj[keys] == configure[keys][pages]
|
||||
if (!con.result) {
|
||||
con.field = keys
|
||||
con.WrongText = configure[keys].WrongText ? configure[keys].WrongText :
|
||||
'字段:' + con.field + '校验出错'
|
||||
con.errCheckField = pages
|
||||
}
|
||||
break;
|
||||
case 'length':
|
||||
con.result = obj[keys].toString().length == configure[keys][pages]
|
||||
if (!con.result) {
|
||||
con.field = keys
|
||||
con.WrongText = configure[keys].WrongText ? configure[keys].WrongText :
|
||||
'字段:' + con.field + '校验出错'
|
||||
con.errCheckField = pages
|
||||
}
|
||||
break;
|
||||
case 'minLength':
|
||||
con.result = obj[keys].toString().length >= configure[keys][pages]
|
||||
if (!con.result) {
|
||||
con.field = keys
|
||||
con.WrongText = configure[keys].WrongText ? configure[keys].WrongText :
|
||||
'字段:' + con.field + '校验出错'
|
||||
con.errCheckField = pages
|
||||
}
|
||||
break;
|
||||
case 'maxLength':
|
||||
con.result = obj[keys].toString().length <= configure[keys][pages]
|
||||
if (!con.result) {
|
||||
con.field = keys
|
||||
con.WrongText = configure[keys].WrongText ? configure[keys].WrongText :
|
||||
'字段:' + con.field + '校验出错'
|
||||
con.errCheckField = pages
|
||||
}
|
||||
break;
|
||||
case 'custom':
|
||||
con.result = configure[keys][pages].test(obj[keys])
|
||||
if (!con.result) {
|
||||
con.field = keys
|
||||
con.WrongText = configure[keys].WrongText ? configure[keys].WrongText :
|
||||
'字段:' + con.field + '校验出错'
|
||||
con.errCheckField = pages
|
||||
}
|
||||
// console.log('自定义类型校验', configure[keys][pages], '值', obj[keys])
|
||||
break;
|
||||
case 'tacitly':
|
||||
con.result = Boolean(obj[keys])
|
||||
if (!con.result) {
|
||||
con.field = keys
|
||||
con.WrongText = configure[keys].WrongText ? configure[keys].WrongText :
|
||||
'字段:' + con.field + ',' + pages + '校验出错'
|
||||
con.errCheckField = pages
|
||||
}
|
||||
// console.log('自定义类型校验', configure[keys][pages], '值', obj[keys])
|
||||
break;
|
||||
default:
|
||||
// console.log(pages, '其他')
|
||||
break;
|
||||
}
|
||||
})
|
||||
}
|
||||
});
|
||||
// console.log(con, '校验结果')
|
||||
return con
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user