fourteendp
2024-07-04 64a4992a84dadb33614e937f5d7464dcd312a1bd
提交 | 用户 | age
64a499 1 import { VxeGlobalRendererHandles, VxeGlobalRendererOptions } from 'vxe-table';
6753e2 2 import XEUtils from 'xe-utils';
L 3 import {
4   createEditRender,
5   createCellRender,
6   createFormItemRender,
7   createExportMethod,
8 } from './common';
9
10 function matchCascaderData(index: number, list: any[], values: any[], labels: any[]) {
11   const val = values[index];
12   if (list && values.length > index) {
13     XEUtils.each(list, (item) => {
14       if (item.value === val) {
15         labels.push(item.label);
16         matchCascaderData(++index, item.children, values, labels);
17       }
18     });
19   }
20 }
21
22 function getCascaderCellValue(
23   renderOpts: VxeGlobalRendererHandles.RenderOptions,
64a499 24   params: VxeGlobalRendererHandles.RenderTableCellParams,
6753e2 25 ) {
L 26   const { props = {} } = renderOpts;
27   const { row, column } = params;
28   const cellValue = XEUtils.get(row, column.field as string);
29   const values = cellValue || [];
30   const labels: Array<any> = [];
31   matchCascaderData(0, props.options, values, labels);
32   return (
33     props.showAllLevels === false ? labels.slice(labels.length - 1, labels.length) : labels
34   ).join(` ${props.separator || '/'} `);
35 }
36
37 export default {
64a499 38   renderTableEdit: createEditRender(),
F 39   renderTableCell: createCellRender(getCascaderCellValue),
40   renderFormItemContent: createFormItemRender(),
41   tableExportMethod: createExportMethod(getCascaderCellValue),
42 } as VxeGlobalRendererOptions;