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.
234 lines
7.9 KiB
234 lines
7.9 KiB
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 |
|
} |
|
}
|
|
|