|
|
|
import utils from '@/utils/encode'
|
|
|
|
export default {
|
|
|
|
//调起上传图片
|
|
|
|
chooseImage(clickfn) {
|
|
|
|
|
|
|
|
const JSESSIONID = utils.uuid()
|
|
|
|
let chooseImageUrl = ''
|
|
|
|
uni.chooseImage({
|
|
|
|
success: (chooseImageRes) => {
|
|
|
|
uni.showLoading({
|
|
|
|
title:'加载中'
|
|
|
|
})
|
|
|
|
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) => {
|
|
|
|
uni.hideLoading()
|
|
|
|
chooseImageUrl = JSON.parse(uploadFileRes.data).data.publicUrl
|
|
|
|
clickfn(chooseImageUrl)
|
|
|
|
},
|
|
|
|
fail:()=>{
|
|
|
|
uni.hideLoading()
|
|
|
|
}
|
|
|
|
});
|
|
|
|
},
|
|
|
|
fail:()=>{
|
|
|
|
uni.hideLoading()
|
|
|
|
}
|
|
|
|
});
|
|
|
|
},
|
|
|
|
//数据转为两位小数
|
|
|
|
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
|
|
|
|
}
|
|
|
|
}
|