UNPKG

zcloud-ui

Version:

A Component Library for Vue.js.

115 lines (105 loc) 3.02 kB
'use strict'; 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 }; } };