货币类型
This commit is contained in:
parent
90e108c735
commit
aaa2a6e5f9
|
@ -3,6 +3,7 @@ import PropTypes from 'prop-types';
|
|||
import objectPath from 'object-path';
|
||||
import i18n from './lib/i18n';
|
||||
import { getComponentLocale } from 'bee-locale/build/tool';
|
||||
import { formatMoney } from './lib/utils';
|
||||
const propTypes = {
|
||||
record: PropTypes.object,
|
||||
clsPrefix: PropTypes.string,
|
||||
|
@ -70,7 +71,8 @@ class TableCell extends Component{
|
|||
return data;
|
||||
}
|
||||
|
||||
renderBoolType = ( data, record, index, config ) => {
|
||||
// 渲染布尔类型
|
||||
renderBoolType = ( data, record, index, config={} ) => {
|
||||
let locale = getComponentLocale(this.props, this.context, 'Table', () => i18n);
|
||||
let boolConfig = {...{ trueText: locale['bool_true'], falseText: locale['bool_false']},...config};
|
||||
if(typeof data === 'string'){
|
||||
|
@ -84,6 +86,22 @@ class TableCell extends Component{
|
|||
return boolConfig.trueText;
|
||||
}
|
||||
|
||||
// 渲染货币类型
|
||||
renderCurrency = (data, record, index, config={}) => {
|
||||
let number = formatMoney(data, config.precision || 2, config.thousand || true);
|
||||
if(config.makeUp === false && number !== '0') {
|
||||
number = number.replace(/0*$/,'').replace(/\.$/,'');
|
||||
}
|
||||
let res = <span className='u-table-currency-number'>{number}</span>;
|
||||
let pre = config.preSymbol ? <span className='u-table-currency-pre'>{config.preSymbol}</span> : null;
|
||||
let next = config.nextSymbol ? <span className='u-table-currency-next'>{config.nextSymbol}</span> : null;
|
||||
return <span className='u-table-currency'>
|
||||
{pre}
|
||||
{res}
|
||||
{next}
|
||||
</span>;
|
||||
}
|
||||
|
||||
render() {
|
||||
const { record, indentSize, clsPrefix, indent,
|
||||
index, expandIcon, column ,fixed,showSum, bodyDisplayInRow,lazyStartIndex,lazyEndIndex} = this.props;
|
||||
|
@ -116,6 +134,10 @@ class TableCell extends Component{
|
|||
text = this.renderBoolType(text, record, index, column.boolConfig);
|
||||
break;
|
||||
}
|
||||
case 'currency':{
|
||||
text = this.renderCurrency(text, record, indent, column.currencyConfig);
|
||||
break;
|
||||
}
|
||||
default : {
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -293,6 +293,23 @@ export function checkDicimalInvalid(value, precision) {
|
|||
return result;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* 将数值转化为货币类型
|
||||
* @param {*} number 数值
|
||||
* @param {*} places 精度
|
||||
* @param {*} thousand 是否展示千分位
|
||||
*/
|
||||
export function formatMoney(number, places, thousand) {
|
||||
number = number || 0;
|
||||
places = !isNaN(places = Math.abs(places)) ? places : 2;
|
||||
let thousandSymbol = thousand ? "," : '';
|
||||
let negative = number < 0 ? "-" : "";
|
||||
let i = parseInt(number = Math.abs(+number || 0).toFixed(places), 10) + "";
|
||||
let j = (j = i.length) > 3 ? j % 3 : 0;
|
||||
return negative + (j ? i.substr(0, j) + thousandSymbol : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + thousandSymbol) + (places ? '.' + Math.abs(number - i).toFixed(places).slice(2) : "");
|
||||
}
|
||||
|
||||
export const Event = {
|
||||
addHandler,
|
||||
removeHandler,
|
||||
|
|
Loading…
Reference in New Issue