UNPKG

ivue-material-plus

Version:

A high quality UI components Library with Vue.js

1 lines 7.99 kB
{"version":3,"file":"index.mjs","sources":["../../../../../../src/components/ivue-table/table-footer/index.ts"],"sourcesContent":["import { defineComponent, h, PropType } from 'vue';\r\nimport useStyle from './styles';\r\nimport IvueColgroup from '../colgroup';\r\n\r\n// type\r\nimport { TableFooter, Props } from './types';\r\nimport type { TableColumnCtx } from '../table-column/defaults';\r\n\r\nconst prefixCls = 'ivue-table-footer';\r\n\r\nexport default defineComponent({\r\n name: prefixCls,\r\n props: {\r\n /**\r\n * 是否带有纵向边框\r\n *\r\n * @type {Boolean}\r\n */\r\n border: {\r\n type: Boolean,\r\n },\r\n /**\r\n * store\r\n *\r\n * @type {Object}\r\n */\r\n store: {\r\n required: true,\r\n type: Object as PropType<TableFooter['store']>,\r\n },\r\n /**\r\n * 自定义的合计计算方法\r\n *\r\n * @type {Function}\r\n */\r\n summaryMethod: Function as PropType<TableFooter['summaryMethod']>,\r\n /**\r\n * 合计行第一列的文本\r\n *\r\n * @type {String}\r\n */\r\n sumText: {\r\n type: String,\r\n },\r\n /**\r\n * 默认的排序列的 prop 和顺序。\r\n *\r\n * @type {Object}\r\n */\r\n defaultSort: {\r\n type: Object as PropType<TableFooter['defaultSort']>,\r\n default: () => {\r\n return {\r\n prop: '',\r\n order: '',\r\n };\r\n },\r\n },\r\n },\r\n setup(props: Props) {\r\n const { columns, getCellClass, getCellStyle } = useStyle(props);\r\n\r\n // methods\r\n\r\n // 渲染 colgroup\r\n const renderColgroup = () => {\r\n return h(IvueColgroup, {\r\n columns: columns.value,\r\n });\r\n };\r\n\r\n // 渲染td\r\n const renderTd = () => {\r\n let sums = [];\r\n\r\n // 没行的数据\r\n const data = props.store.states.data.value;\r\n\r\n // 自定义的合计计算方法\r\n if (props.summaryMethod) {\r\n sums = props.summaryMethod({\r\n columns: columns.value,\r\n data,\r\n });\r\n }\r\n // 没有自定义的合计计算方法\r\n else {\r\n columns.value.forEach((column: TableColumnCtx, index: number) => {\r\n // 合计行第一列的文本\r\n if (index === 0) {\r\n sums[index] = props.sumText;\r\n\r\n return;\r\n }\r\n\r\n const values = data.map((item) => {\r\n return Number(item[column.property]);\r\n });\r\n\r\n const precisions: number[] = [];\r\n let notNumber = true;\r\n\r\n values.forEach((value) => {\r\n if (!Number.isNaN(+value)) {\r\n notNumber = false;\r\n\r\n const decimal = `${value}`.split('.')[1];\r\n\r\n precisions.push(decimal ? decimal.length : 0);\r\n }\r\n });\r\n\r\n const precision = Math.max.apply(null, precisions);\r\n\r\n // 是数字\r\n if (!notNumber) {\r\n sums[index] = values.reduce((prev, curr) => {\r\n const value = Number(curr);\r\n\r\n // 是数字\r\n if (!Number.isNaN(+value)) {\r\n // 保留两位小数\r\n return Number.parseFloat(\r\n (prev + curr).toFixed(Math.min(precision, 20))\r\n );\r\n } else {\r\n return prev;\r\n }\r\n }, 0);\r\n }\r\n // 不是数字\r\n else {\r\n sums[index] = '';\r\n }\r\n });\r\n }\r\n\r\n return columns.value.map((column, cellIndex) => {\r\n return h(\r\n 'td',\r\n {\r\n key: cellIndex,\r\n colspan: column.colSpan,\r\n rowspan: column.rowSpan,\r\n class: getCellClass(columns.value, cellIndex),\r\n style: getCellStyle(column, cellIndex),\r\n },\r\n [\r\n h(\r\n 'div',\r\n {\r\n class: ['cell', column.labelClassName],\r\n },\r\n [sums[cellIndex]]\r\n ),\r\n ]\r\n );\r\n });\r\n };\r\n\r\n return {\r\n renderColgroup,\r\n renderTd,\r\n };\r\n },\r\n render() {\r\n return h(\r\n 'table',\r\n {\r\n class: prefixCls,\r\n cellspacing: '0',\r\n cellpadding: '0',\r\n border: '0',\r\n },\r\n [this.renderColgroup(), h('tbody', [h('tr', {}, [this.renderTd()])])]\r\n );\r\n },\r\n});\r\n"],"names":[],"mappings":"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"}