-
checkBox组件编码
使用场景:前端复选框(三个)前两个被勾选,应将’1, 2’编码成’110’的格式传给后台;
举例:将字符串(‘1, 2’或‘2, 4, 5, 7’)编码成(‘110’或‘0101101’)的格式;
inParams: inputStr, length
function checkBoxEncode(inputStr, length){
var defualtArr = new Array(length);
var checkBoxArr = inputStr.split(’,’);
for(var i = 0; i < checkBoxArr.length; i++){
defualtArr[i] = 0;
}
if(!!checkBoxArr.length){
defualtArr[checkBoxArr[j]-1] = 1;
}
return defualtArr.join(‘,’);
} -
checkBox组件解码
使用场景:后台返回’1, 2’, 前台解码成’1, 2’, 使checkBox组件回显勾选项;
举例:将字符串(‘1, 2’或‘2, 4, 5, 7’)编码成(‘110’或‘0101101’)的格式;
inParams: resultStr
function checkBoxEncode(resultStr){
var parseArr = [ ];
if(resultStr){
for(var i = 0; i < resultStr.length; i++){
if(resultStr.charAt(i) == ‘1’){
parseArr.push(i + 1);
}
}
}
return parseArr.join(’,’);
} -
删除Json中的某些元素
inParams: resJson, delEleArr
function deleteEleFromJson(resJson, delEleArr){
for(var i = 0; i < delEleArr.length; i++){
if(delEleArr[i] in resJson){
delete resJson[delEleArr[i]];
}
}
return resJson;
} -
前端回显楼层号(适用于1 - 99层)
使用场景:后台返回’22’, 前台展示成’第二十二层’;
举例:将字符串数组([‘9’, ‘10’, ‘20’, ‘28’])回显成([‘第九层’, ‘第十层’, '第二十层’, ‘第二十八层’])的格式
function getFloorName(numStrArr) {
var newStrArr = new Array(100)
for (var i = 0; i < numStrArr.length; i++) {
var temp = numStrArr[i]
var arr = [‘十’, ‘一’, ‘二’, ‘三’, ‘四’, ‘五’, ‘六’, ‘七’, ‘八’, ‘九’]
var num = Number(temp)
var str = ‘’
if (num < 10) {
str += arr[num]
} else if (num === 10) {
str = arr[0]
} else {
if (temp[0] === ‘1’) {
str = arr[0] + arr[temp[1]]
} else if (temp[1] === ‘0’) {
str = arr[temp[0]] + arr[0]
} else if (temp[0] > 1) {
str = arr[temp[0]] + arr[0] + arr[temp[1]]
}
}
str = ‘第’ + str + ‘层’
newStrArr[num] = str
}
return newStrArr
} -
时间差(今天距离目标日期00:00时间的天数)
使用场景:后台返回’1569671608999’时间戳, 前台计算距离(传入未来时间戳)未来某天剩余的天数;
同理,可以计算当前时间距离过去时间(传入过去时间戳)走过的天数
inParams: targetDateTimeStamp(目标日期的时间戳)
function getDiffDate(targetDateTimeStamp) {
let diff, diffDay;
let date1 = new Date(targetDateTimeStamp)
let date2 = new Date()
date1 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate())
date2 = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate())
diff = date1 < date2 ? date2.getTime() - date1.getTime() : date1.getTime() - date2.getTime()
diffDay = diff / (24 * 60 * 60 * 1000)
return diffDay
}
6.两个联动字段的非空校验
使用场景:主要身份证明文件类别(字典项)与主要身份证明文件代码的非空校验;
校验规则:两者必须同时为空或不为空;若其中一个为空,则此控件提示:此处不能为空
inParams: firstField, secondField(传入两个控件)
function twoLinkFieldsIsNullTip(firstField, secondField){
var resFlag = { flag: true };
var firstFieldVal = typeof(firstField.getValue()) === ‘string’ ? firstField.getValue().trim() : firstField.getValue();
var secondFieldVal = typeof(secondField.getValue()) === ‘string’ ? secondField.getValue().trim() : secondField.getValue();
if(firstFieldVal && !secondFieldVal){
resFlag.flag = false;
prompt(‘此处不能为空!’);
return resFlag;
}
if(secondFieldVal && !firstFieldVal){
resFlag.flag = false;
prompt(‘此处不能为空!’);
return resFlag;
}
return resFlag;
}
调用方式:
var firstField = form.getChild(“ID_TYPE”), secondField = form.getChild(“ID_Number”);
var result = twoLinkFieldsIsNullTip(firstField, secondField);
if(!result.flag){
return;
}
7. JSON对象转化换行格式
原格式:
“{
“997000000000606“:{system:1071121071163 , custom"edb”}
"997000000000606”:{system’:“1071162|1071163”,“custom”:“edb”}
}”
转化格式:
“997000000000606“:
system:1071121071163
custom"edb”
"997000000000808”:
system’:“1071162|1071163”
“custom”:"edb”
代码实现:
a = JSON.parse(‘{
“997000000000606”: {
“system”: “1071121071163”,
“custom”: “edb”
},
“997000000000808”: {
“system”: “1071162|1071163”,
“custom”: “edb”
}
}’)
var strRes = “”
for(var key in a){
var keyStr = key + “\n”
var itemStr = JSON.stringify(a[key])
itemStr = itemStr.substring(1, itemstr.length - 1)
itemStr = itemStr.replace(/[,,]/g, “\n”)itemStr = keyStr+itemStr
itemStr += “n”
strRes += itemStr
}
console.log(‘strRes’, strRes)
JS实战之函数封装
于 2019-09-21 14:28:31 首次发布