var moment = window.moment;
var template = window.template;
moment.locale('zh-cn');
// var template = require("../../scripts/lib/template.js");
template.config('escape', false);
template.helper('isObject', function (data) {
function isObject(data) {
if ((typeof data === 'object') && data != null) {
return true;
}
return false;
}
return isObject(data);
});
/**
* @desc 1.将格式为'yyyy-MM-dd 00:00:00'截取为'yyyy-MM-dd';
* 2.将'yyyy-M-d'转化为'yyyy-MM-dd';
* 3.3.将'yyyy-MM-dd'原样输出;
*
* */
template.helper('spliceDate', function (value) {
if (value !== '' && typeof value === 'string' && new Date(value) != 'Invalid Date') {
var array = value.split(' ');
var dateNums = array[0].split('-');
var formatDate = dateNums[0] + '';
for (var i = 1, l = dateNums.length; i < l; i++) {
formatDate += '-';
if (Number(dateNums[i]) < 10 && dateNums[i].charAt(0) !== '0') {
formatDate += '0';
}
formatDate += dateNums[i];
}
// 如果时分秒部分,不是'00:00:00',则保留
if (array[1] && array[1] !== '00:00:00' && array[1] !== '00:00') {
formatDate += ' ' + array[1];
}
return formatDate;
}
return '--';
});
//将格式为'yyyy-MM-dd HH:MM:SS'截取为'yyyy-MM-dd';
template.helper('spliceDate2', function (value) {
if (value !== '' && typeof value === 'string' && new Date(value) != 'Invalid Date') {
var array = value.split(' ');
var dateNums = array[0].split('-');
var formatDate = dateNums[0] + '';
for (var i = 1, l = dateNums.length; i < l; i++) {
formatDate += '-';
if (Number(dateNums[i]) < 10 && dateNums[i].charAt(0) !== '0') {
formatDate += '0';
}
formatDate += dateNums[i];
}
// 如果时分秒部分,不是'00:00:00',则保留
// if (array[1] && array[1] !== '00:00:00' && array[1] !== '00:00') {
// formatDate += ' ' + array[1];
// }
return formatDate;
}
return '--';
});
//将unicode编码转成中文;
template.helper('unicode2CN', function (value) {
if (value !== '' && typeof value === 'string') {
var result = unescape(value.replace(/\\u/g, '%u'));
return result;
}
return value?value.toString():'--';
});
//将中文编码转成unicode,用以兼容ie;
template.helper('CN2unicode', function (value) {
if (value !== '' && typeof value === 'string') {
var result = encodeURI(value.replace(/\\u/g, '%u'));
return result;
}
return value?value.toString():'--';
});
template.helper('filterNullToLine', function (str) {
if (typeof (str) === 'undefined') {
return '--';
} else if (str === '') {
return '--';
}
return str;
});
//html字符串转义
template.helper('encodeHtmlStr' , function (str) {
return str.replace(/\n/g,'')
.replace(/&/g, '&')
.replace(/"/g, '"')
.replace(/'/g, ''')
.replace(/</g, '<')
.replace(/>/g, '>');
})
template.helper('isCompany', function (company) {
if (!company) {
return false;
} else {
if (company.split('/')[0] === 'Company') {
return true
} else {
return false
}
}
});
template.helper('encodeURIComponent', function (str) {
return encodeURIComponent(str);
});
template.helper('filterNullToZero', function (str) {
if (typeof (str) === 'undefined') {
return 0;
} else if (str === '') {
return 0;
}
return str;
});
template.helper('getYesNoEmpty', function (value) {
if (value === undefined) {
return '--';
}
if (value === true) {
return '是';
}
return '否';
});
template.helper('getShareholderType', function (value) {
if (!value) {
return '--';
}
if (value.indexOf('Person') > -1) {
return '自然人股东';
}
if (value.indexOf('Company') > -1) {
return '法人股东';
}
return '--';
});
/**
* @desc 将形如'注销(注销日期1993年5月11日)'的字串替换为'注销',即去掉括号及其内容
*
* */
template.helper('formatCompanyStatus', function (value) {
if (value !== null && value !== undefined) {
var reg = /\(.*\)/g;
var newValue = value.replace(reg, '');
return newValue;
}
});
/**
* @desc 数组连接
*
* */
template.helper('arrJoinWithComma', function (arr) {
if (arr instanceof Array && arr.length > 0) {
return arr.join(',');
}
return '--';
});
/**
* @desc 将'1850000000.00'格式的数据转化为'185,000.00'(转化为万元、千分位格式、保存两位小数)
*
* */
template.helper('formatMoney', function (value) {
if (value === null || value === undefined || isNaN(parseFloat(value))) {
return;
}
// 将数字进行千分位格式化
function toThousands(num) {
num = (num || 0).toString();
var parts = num.split('.');
var bigZeroPart = parts[0];
var result = '';
while (bigZeroPart.length > 3) {
result = ',' + bigZeroPart.slice(-3) + result;
bigZeroPart = bigZeroPart.slice(0, bigZeroPart.length - 3);
}
if (bigZeroPart) {
result = bigZeroPart + result;
}
if (parts.length > 1) {
result += '.' + parts[1].toString();
}
return result;
}
value = (value / 10000).toFixed(2);
value = toThousands(value);
return value;
});
/**
* @desc 将'1850000000.00'格式的数据转化为'1850000000元'
*
* */
template.helper('addMoneyUnit', function (value) {
if (value === null || value === undefined || isNaN(parseFloat(value))) {
return;
}
value = +value;
return value + '元';
});
// 千分位+万元转换 同步ejs_filter
template.helper('captital_format', function (num, unit) {
unit = unit || '';
function format(num) {
return (num.toFixed(2) + '').replace(/\d{1,3}(?=(\d{3})+(\.\d*)?$)/g, '$&,');
}
if (parseFloat(num) === 0) {
return '未公布';
}
if (isNaN(num)) {
return '--';
}
if (num) {
if (num < 10000) {
return format(parseFloat(num)) + unit;
}
return format(num / 10000) + ' 万' + unit;
}
return '--';
});
/**
*@desc 通过一个企业的状态来判断该企业是否有风险
*
* */
template.helper('isRiskComStatus', function (value) {
if (value === null || value === undefined) {
return;
}
// 拥有以下状态的企业,均认为有风险:
// 注销、内资注销、外资注销、吊销,未注销、吊销,已注销、吊销,已注销、注销企业、注吊销、吊销已注销、吊销后注销
// 吊销企业、吊销、已吊销、内资吊销、外资吊销、被吊销、吊销、吊销,未注销、吊销未注销
// 迁出、迁移异地、迁往外省市、迁移、已迁出企业、已迁出
// 清算、清算中
// 停业
// 撤销登记
if ('注销;吊销;迁出;迁往;迁移;清算;停业;撤销登记'.indexOf(value) !== -1) {
return true;
}
return false;
});
/**
*@desc 毫秒时间转换格式
*
* */
template.helper('dateFormat', function (datetime) {
if (datetime) {
return moment(datetime, 'x').format('YYYY-MM-DD HH:mm:ss');
}
return '--';
});
/**
*@desc 时间戳转日期
*
* */
template.helper('timestampToDate', function (datetime) {
if (datetime) {
return moment(datetime, 'x').format('YYYY-MM-DD');
}
return '--';
});
/**
* @desc 导出时间
*/
template.helper('timeOption', function (value) {
if (value === 0) {
return '按照数据抓取时间';
}
if (value === 1) {
return '按照内容更新时间';
}
return '--';
});
/**
* @desc 数据类型字符串解析
*/
template.helper('dataTypeResolve', function (data_type) {
if (data_type.indexOf('options') !== -1) {
var data_type_obj = JSON.parse(data_type)
if (data_type_obj.options && Array.isArray(data_type_obj.options)) {
var resolveArray = [];
data_type_obj.options.forEach(function (element) {
for (var index = 0; index < element.value.length; index++) {
if (element.value[index].checked) {
resolveArray.push(element.value[index].cname);
}
}
}, this);
return resolveArray.toString();
}
}
if (data_type) {
return data_type;
}
return '--';
});
/**
* @desc
*/
template.helper('join_with_comma', function (arr) {
if (arr.length > 0) {
return arr.join(',');
}
return '';
});
/**
* @desc
* 根据stock_code返回中文
*创业板
*创业板的代码是300打头的股票代码
*
*沪市A股
*沪市A股的代码是以600、601或603打头
*
*沪市B股
*沪市B股的代码是以900打头
*
*深市A股
*深市A股的代码是以000、001打头
*
*中小板
*中小板的代码是002打头
*
*深市B股
*深圳B股的代码是以200打头
*/
template.helper('stock_code_filter', function (str) {
var arr = str.split(',');
var result = [];
for (var i = 0; i < arr.length; i++) {
var code = arr[i];
if (/^300/.test(code)) {
result.push('创业板');
} else if (/^60[013]/.test(code)) {
result.push('沪市A股');
} else if (/^900/.test(code)) {
result.push('沪市B股');
} else if (/^00[01]/.test(code)) {
result.push('深市A股');
} else if (/^002/.test(code)) {
result.push('中小板');
} else if (/^200/.test(code)) {
result.push('深市B股');
}
}
return result.join(',');
});
// 格式化百分号为小数点后两位
template.helper('format_percent_num', function (value) {
if (!value) {
return '--';
}
value = parseFloat(value);
if (isNaN(value)) {
return '--';
}
return value.toFixed(2) + '%';
});
// 保留小数点
template.helper('fixedN', function (value,n) {
if (!value) {
return '--';
}
value = parseFloat(value);
if (isNaN(value)) {
return '--';
}
return value.toFixed(n||2) ;
});
// 小数转换为百分比
template.helper('toPercent', function (value,n) {
if (!parseFloat(value) || isNaN(parseFloat(value))) {
return '未公示'
}
value = parseFloat(value)
if (n) {
value = (value * 100).toFixed(n)
} else {
value *= 100
}
return value + '%'
});
/**
* @desc 将'1850000000.00'格式的数据转化为'185000.00 万'
*
* */
template.helper('format_money_3', function (value) {
if (value === null || value === undefined || isNaN(parseFloat(value))) {
return '';
}
value = value.toString();
var start = value.indexOf('(');
if (start === -1) {
start = value.indexOf('(');
}
var unit = value.substring(start);
// var chart = unit.substring(0, 1);
unit = ' 万';
value = (parseFloat(value) * 100) / (10000 * 100);
value = value.toFixed(2) + '' + unit;
return value;
});
/**
* @desc 将'1850000000.00'格式的数据转化为'185,000.00元'
*
* */
template.helper('moneyFormat', function (value, currency, decimals) {
if(!value || value == ''){
return '--';
}
var digitsRE = /(\d{3})(?=\d)/g;
value = parseFloat(value);
// 有可能出现1.546714415467144e+87这种科学计数法的格式,因此做转换
value = convertNum(value);
if(typeof value === 'string'){
return value+'元';
}
if (!isFinite(value) || (!value && value !== 0)) return '';
currency = currency != null ? currency : '';
decimals = decimals != null ? decimals : 2;
var stringified = Math.abs(value).toFixed(decimals);
var _int = decimals ? stringified.slice(0, -1 - decimals) :stringified;
var i = _int.length % 3;
var head = i > 0 ?(_int.slice(0, i) + (_int.length > 3 ? ',' : '')) :'';
var _float = decimals ?stringified.slice(-1 - decimals) :'';
var sign = value < 0 ? '-' : '';
return sign + currency + head + _int.slice(i).replace(digitsRE, '$1,') + _float + '元';
});
function convertNum(amount) {
// 判断是否科学计数法,是则进行转换
var strAmount = new String(amount)
if((strAmount.indexOf('E') != -1) || (strAmount.indexOf('e') != -1)) {
return new Number(amount).toLocaleString();
} else{
return amount;
}
}
// JSON.stringify
template.helper('toJSON', function (value) {
return JSON.stringify(value);
});
// 百分比大于百分之五十
template.helper('gt50percent', function (value) {
var num = parseFloat(value);
if (isNaN(num)) {
return false;
}
return num >= 50;
});
// 两个参数拼接,中间加-
template.helper('addParenthese', function (str, str2) {
if (!str && !str2) {
return '--';
}
if (str && !str2) {
return str;
}
if (!str && str2) {
return str2;
}
return '[' + str + '] ' + str2;
});
// 消息详情时间获取
template.helper('formatVals', function (key, val) {
var dateArr = ['publish_time', 'publish_date', 'filing_date', 'case_date', 'reg_date', 'court_time'];
if (dateArr.indexOf(key) > -1) {
return val.split(' ')[0];
}
if (Object.prototype.toString.call(val) === '[object Array]') {
return val.join();
}
return val;
});
// 绝对路径
template.helper('absolutePath', function (path) {
if (path[0] !== '/') {
path = '/' + path;
}
return path;
});
// 替换换行符、空格
template.helper('formatText', function (str) {
str = str.replace(/\r/g, ' ');
str = str.replace(/\t/g, ' ');
str = str.replace(/\n/g, '<br />');
return str;
});
// 分割
template.helper('split', function (str) {
return str.split(' ');
});
template.helper('datetimeToDate', function (datetime) {
if (typeof (datetime) === 'undefined') {
return '';
}
return datetime.split(' ')[0];
});
// 算年龄
template.helper('yearOld', function (str) {
var num = parseInt(str, 0);
if (isNaN(num)) {
return '--';
}
return new Date().getFullYear() - num;
});
// 处理舆情信息中,作者里面包含时间
template.helper('authorAndTime', function (author, time) {
var arr = author.match(/\d{4}.{1}\d{2}.{1}\d{2}.*/);
if (arr && arr[0]) {
author = author.replace(arr[0], '').replace(/\s/g, '');
if (!time) {
time = arr[0].replace(/[年月]/g, '-').replace(/日/g, '');
}
}
if (!time) {
time = '';
}
return author + ' ' + time;
});
// 获取身份是原告还是被告
template.helper('identity', function (company, plaintiffList, defendantList) {
if (plaintiffList && plaintiffList.join &&
plaintiffList.join(',').indexOf(company) > -1) {
return '原告';
}
if (defendantList && defendantList.join &&
defendantList.join(',').indexOf(company) > -1) {
return '被告';
}
return '--';
});
// 如果列表里面文字长度大于3,添加链接
template.helper('insertLink', function (arr, detailIndex) {
if($.type(arr) === 'array'){
for (var i = 0; i < arr.length; i++) {
arr[i] = arr[i].replace(/\s/g, '');
if (arr[i].length > 3 && arr[i].indexOf('公司') > -1) {
var uri = '/detail_v2/' + detailIndex + '?name=' + encodeURIComponent(arr[i]);
arr[i] = '<a href="' + uri + '" class="click-color" target="_blank">' + arr[i] + '</a>';
}
}
if (arr instanceof Array && arr.length > 0) {
return arr.join(',');
}
}
if($.type(arr) === 'string'){
arr = arr.replace(/\s/g, '');
if (arr.length > 3 && arr.indexOf('公司') > -1) {
var uri = '/detail_v2/profile_info' + '?name=' + encodeURIComponent(arr);
arr = '<a href="' + uri + '" class="click-color" target="_blank">' + arr + '</a>';
return arr
}
return '--';
}
return '--';
});
// 如果列表里面文字长度大于3,添加链接
template.helper('investRadio', function (amountNum, amountUnit, investedNum, investedUnit, exchange) {
// 先化成元
if (amountUnit !== '元') {
if (exchange[amountUnit]) {
amountNum = amountNum * exchange[amountUnit];
} else {
return '--';
}
}
if (investedUnit !== '元') {
if (exchange[investedUnit]) {
investedNum = investedNum * exchange[investedUnit];
} else {
return '--';
}
}
if (!$.isNumeric(amountNum) || !$.isNumeric(investedNum)) {
return '--';
}
if (parseInt(amountNum) === 0 || parseInt(investedNum) === 0) {
return '--';
}
var value = investedNum / amountNum;
return (value * 100).toFixed(2) + '%';
});
// indexOf
template.helper('indexOf', function (str, query) {
return str.indexOf(query);
});
// indexOf
template.helper('arrayIndexOf', function (array, query) {
if(!query) return false;
if(array.indexOf(query)<0) {
return false
} else {
return true
}
});
// indexOf
template.helper('arrayObjectIndexOf', function (array, query) {
if(!query) return false;
var checkResult = false;
for(var i = 0; i< array.length; i++) {
if(array[i].id == query) {
checkResult = true
}
}
return checkResult
});
// 判断是不是空对象
template.helper('ObjectNull', function (object) {
return Object.keys(object).length
});
// 不分大小写判断
template.helper('equalsIgnoreCase', function (str1, str2) {
if (str1.toUpperCase() === str2.toUpperCase()) {
return true;
}
return false;
});
// 根据数字生成数组
template.helper('getArray', function (num) {
var arr = [];
for (var i = 0; i < num; i++) {
arr.push(i);
}
return arr;
});
// 转码成json
template.helper('parseJson', function (str) {
var obj;
try {
obj = JSON.parse(str);
} catch (error) {
obj = {};
}
return obj;
});
// 截取特定后缀
template.helper('trimPostfix', function (str, regex) {
return str.replace(regex, '');
});
// 主题类型
template.helper('themeType', function (str) {
var map = {
'detail': '数据详情',
'graph': '图数据'
};
return map[str] || '--';
});
// 导出状态
template.helper('importStatus', function (str) {
var map = {
'0': '未导入',
'1': '导入中',
'2': '导入失败',
'3': '正在中止',
'4': '导入终止',
'5': '导入结束'
};
return map[str] || '--';
});
// 数据源路径
template.helper('databasePath', function (data) {
return (data.host || '--') + '/' + (data.port || '--') + '/' +
(data.database || '--') + '/' + (data.source_table || '--');
});
// 页面图谱配置0:是;1:否
template.helper('graphConfigIs', function (data) {
if (Number(data) === 0) {
return "否"
} else {
return "是"
}
});
// 页面图谱配置0:'数值筛选';1:'时间筛选',;2:'枚举筛选'
template.helper('graphConfigEnum', function (data) {
if (data === "null") {
return "无"
} else if (data === "number") {
return "数值筛选"
} else if (data === "date") {
return "时间筛选"
} else if (data === "enums") {
return "枚举筛选"
} else {
return "--"
}
});
// ArraytoString data:数组{name:,id:};mid:分割的符号
template.helper('ArraytoString', function (data, mid) {
if(!data || !mid || data.length===0) {
return '--';
}
var newData = '';
if(data instanceof Array) {
for(var i = 0; i < data.length; i++) {
if(i<data.length-1) {
newData=newData + data[i].name + mid;
} else {
newData=newData + data[i].name;
}
}
return newData;
} else {
return data
}
});
// 返回首字母
template.helper('getPingYin', function (data) {
if(!data || makePy(data).length<=0) {
return '--'
} else {
return makePy(data)[0][0]
}
});
//机会公海弹窗,configObj 数据转换
template.helper('formatVals', function (key, val) {
var datetime_to_date = function (datetime) {
if (typeof (datetime) === 'undefined') {
return '';
}
return datetime.split(' ')[0];
};
var dateArr = ['publish_time', 'publish_date', 'filing_date', 'case_date', 'reg_date', 'court_time'];
if (dateArr.indexOf(key) > -1) {
return datetime_to_date(val);
}
if(key.indexOf('list') > -1){
return String(val).replace(/"/g,'');
}
return val;
});
//截取数据前num个(关键字)
template.helper('spliceNum', function (val, num) {
var num = Number(num) || 5 ;
if(typeof val !== 'object' && typeof val !== 'string'){
return '--'
};
if(typeof val === 'string'){
var arr = val.split('、');
var str = arr.slice(0,num).join('、');
if(num < arr.length){
str += '、...'
}
return str;
}
if(typeof val === 'object'){
var arr = val;
var str = arr.slice(0,num).join('、');
if(num < arr.length){
str += '、...'
}
return str;
}
return val;
});
// 检查是否存在异常
template.helper('checkError', function (data) {
var array = ['吊销', '注销', '清算', '停业', '撤销']
var status = array.indexOf(data)
return status
});
前端常用过滤器
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 最近在做一个前后端分离的项目,前端是基于Node.js,后端是用的springboot框架,本地调试的时候,前端发...
- head 和tail命令 head基本语法: head [-n/-c lines] [-q] files 无参数...
- 2016年11月3日,一师附小全体五年级队员在中队辅导员的带领下,赴奉贤少年军校参加了为期两天的军营体验活动。 一...