You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

235 lines
7.9 KiB

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