// 数据类型深度检查
var typefor = function(obj, type) {
var oType = {
'[object Boolean]': 'Boolean',
'[object Number]': 'Number',
'[object String]': 'String',
'[object Function]': 'Function',
'[object Array]': 'Array',
'[object Date]': 'Date',
'[object RegExp]': 'RegExp',
'[object Object]': 'Object'
},
ret = obj == null ? String(obj) : oType[Object.prototype.toString.call(obj)] || 'Unknown';
return type ? type.test(ret) : ret;
};
// 数据兼容处理 更换JS对象索引KEY值 添加映射字段
function preDataProcessor(res){
// 添加映射字段 预处理后台数据兼容前端运行代码
// 映射对象
var transformObjConfig = {
"Live_control": {
"c": "resultcode", // 原来的字段 resultcode,新字段 c
"m": "msg", // 原来的字段 msg,新字段 m
"d": {
"s": "status", // 可以观看直播状态
"t": "status_text", // 直播状态文字 直播中
"c": "t_class", // 前端状态文案的样式,值:t-playing t_wait
"d": "curr_date", // 是否是当天,1是,0不是,只有当天将要开播的直播间才显示倒计时
"m": "dec_time", // 当前时间距直播开始时间的差,单位秒
"p": "play_url", // 直播视频播放链接
"f": "flv_url", // 直播视频播放链接(flv协议)
"a": "audio_url", // 直播音频播放链接
"af": "audio_url_flv", // audio_url_flv直播音频播放链接
"w": "switch", // 是否可以切换硬盘,1是,0反之。
"o": "options" // 点播回放防盗链参数以及点播ID,可回放时返回字段
},
"a":"Live_control" // action操作类型
}
}, transformObj = null;
// 映射赋值
function resetKey(data,config){
console.info('resetKey--->',data,config)
for(var k in config){
if(k != 'ownerProperty' && data.hasOwnProperty(k) && config.hasOwnProperty(k) ){
if(!typefor(config[k], /Object/)){
data[config[k]] = data[k];
}else{
data[config[k]['ownerProperty']] = resetKey(data[k],config[k]);
}
}
}
return data;
}
// 找配置对象
for(var k in transformObjConfig){
if(res.hasOwnProperty('a') && res['a'] === k ){
// 处理对应数据
transformObj = transformObjConfig[k];
for(var i in transformObj){
if(res.hasOwnProperty(i) && transformObj.hasOwnProperty(i) ){
if(typefor(transformObj[i], /Object/)){
res[transformObj[i]['ownerProperty']] = resetKey(res[i],transformObj[i]);
}else{
res[transformObj[i]] = res[i];
}
}
}
}
}
return res;
},
// 测试
var abc = preDataProcessor({
a: 'Live_login',
c: 0,
m: '测试',
d: {
i: 22,
j:[111,222,555],
s: {
a : 555
}
}
})
console.info(abc)
Echart 具体参考:
https://echarts.apache.org/examples/zh/editor.html?c=line-stack
https://echarts.apache.org/zh/download.html
// 替换或追加参数
// orgUrl 地址
// paramName 参数名
// replaceWith 参数值
var replaceParamVal = function(orgUrl,paramName,replaceWith){
var reg = new RegExp('('+ paramName +'=)([^&]*)','gi'),
has = orgUrl.indexOf(paramName);
if(has<=0){
// 不存在改参数
var hasQuestion = orgUrl.indexOf("?");
if(hasQuestion>0){
orgUrl = orgUrl+"&" +(paramName +'=' +replaceWith);
}else{
orgUrl = orgUrl+"?" +(paramName +'=' +replaceWith);
}
}else{
// 存在该参数
orgUrl = orgUrl.replace(reg,paramName+'='+replaceWith);
}
return orgUrl;
};
// 图片上传
$("#imghand").on('change',function(e) {
var me = $(this).parent();
var handId = $(this).attr("id");
var files = e.target.files;
files && upLoadMethod(files,handId,me)
})
function upLoadMethod(file, domId, box) {
if(!file[0]){
return false;
}
var formData = new FormData();
formData.append('file', file[0]);
t.http({
cache: false, //上传文件不需要缓存
type: "POST",
url: "",
data: formData,
dataType:"json",
timeout:1000*5,
contentType: false, //需设置为false。因为是FormData对象,且已经声明了属性enctype="multipart/form-data"
processData: false, //需设置为false。因为data值是FormData对象,不需要对数据做处理
success: function (ret) {
// 略……
},
error: function (err) {
}
});
}
使用案例代码,请在上方下载
<form>
<table>
<thead>
<tr>
<th><label><input type="checkbox" data-toggle="checkall"></label></th>
<th>First Name</th>
<th>Last Name</th>
<th>Username</th>
</tr>
</thead>
<tbody>
<tr>
<td><input type="checkbox" name="" value=""></td>
<td>Mark</td>
<td>Otto</td>
<td>@mdo</td>
</tr>
....
</tbody>
</table>
</form>