zcloud-ui
Version:
A Component Library for Vue.js.
115 lines (105 loc) • 3.02 kB
JavaScript
;
exports.__esModule = true;
exports.tableSpanMethod = exports.getSpanArr = exports.summaries = undefined;
var _global = require('zcloud-ui/lib/utils/global');
var _double = require('zcloud-ui/lib/utils/double');
var _double2 = _interopRequireDefault(_double);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* element表单合计
* summaries(param, '合计', ['advancePaymentAmount', 'orderAdvancePayment', 'contractAdvancePayment']);
*
* @param{param 表格内置参数 }
* @param{name 表格显示的名称,'合计' }
* @param{arr 表格需要合计的字段,数组模式传参 }
*/
var summaries = exports.summaries = function summaries(param, name, arr) {
var columns = param.columns,
data = param.data;
var sums = [];
columns.forEach(function (column, index) {
if (index === 0) {
sums[index] = name;
return;
}
if (arr.includes(column.property)) {
var values = data.map(function (item) {
return Number(item[column.property]);
});
if (!values.every(function (value) {
return isNaN(value);
})) {
sums[index] = values.reduce(function (prev, curr) {
var value = Number(curr);
if (!isNaN(value)) {
return _double2.default.add(prev, curr);
} else {
return prev;
}
}, 0);
sums[index] = (0, _global.parseMoneyPM)(sums[index], 0);
}
}
});
return sums;
};
/**
* 获取合计arr
* 使用配合 vue watch
* 'list': function (val) {
* this.spanArr = this.getSpanArr();
* }
* @param {* Array 表格list} data
* @param {* 唯一标识值} id
* @param {* 是否显示num} isShowNum
*/
var getSpanArr = exports.getSpanArr = function getSpanArr(data, id, isShowNum) {
var spanArr = [],
pos = 0,
prevId = '',
numArr = [],
num = 0;
for (var i = 0; i < data.length; i++) {
if (data[i][id] === prevId) {
spanArr[pos] += 1;
spanArr.push(0);
numArr.push(0);
} else {
spanArr.push(1);
pos = i;
numArr.push(num += 1);
}
prevId = data[i][id];
}
if (isShowNum) {
return [spanArr, numArr];
} else {
return spanArr;
}
};
/**
* 表格合并使用
* :span-method="objectSpanMethod"
* @param {* 默认四个参数} param0 当前行row、当前列column、当前行号rowIndex、当前列号columnIndex四个属性
* @param {* 计算返回的合计arr} spanArr
* @param {* 第几列开始计算合计} spanRow
*/
var tableSpanMethod = exports.tableSpanMethod = function tableSpanMethod(_ref, spanArr, spanRow) {
var row = _ref.row,
column = _ref.column,
rowIndex = _ref.rowIndex,
columnIndex = _ref.columnIndex;
if (columnIndex < spanRow) {
var _row = spanArr[rowIndex] || 0;
var _col = _row > 0 ? 1 : 0;
return {
rowspan: _row,
colspan: _col
};
} else {
return {
rowspan: 1,
colspan: 1
};
}
};