1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
| import { h } from 'vue';
| import {
| FormItemContentRenderParams,
| FormItemRenderOptions,
| VxeGlobalRendererHandles,
| } from 'vxe-table';
| import XEUtils from 'xe-utils';
| import { cellText, createEvents, createProps, getComponent } from './common';
|
| const COMPONENT_NAME = 'AButton';
|
| export function createEditRender() {
| return function (
| renderOpts: VxeGlobalRendererHandles.RenderEditOptions,
| params: VxeGlobalRendererHandles.RenderEditParams,
| ) {
| const { attrs } = renderOpts;
| const Component = getComponent(COMPONENT_NAME);
|
| return [
| h(Component, {
| ...attrs,
| ...createProps(renderOpts, null),
| ...createEvents(renderOpts, params),
| }),
| ];
| };
| }
|
| export function createDefaultRender() {
| return function (
| renderOpts: VxeGlobalRendererHandles.RenderEditOptions,
| params: VxeGlobalRendererHandles.RenderEditParams,
| ) {
| const { attrs } = renderOpts;
| const Component = getComponent(COMPONENT_NAME);
|
| return [
| h(
| Component,
| {
| ...attrs,
| ...createProps(renderOpts, null),
| ...createEvents(renderOpts, params),
| },
| cellText(renderOpts.content),
| ),
| ];
| };
| }
|
| export function createFormItemRender() {
| return function (renderOpts: FormItemRenderOptions, params: FormItemContentRenderParams) {
| const { attrs, content } = renderOpts;
| const { property, $form, data } = params;
| const props = createProps(renderOpts, null);
| const Component = getComponent(COMPONENT_NAME);
|
| return [
| h(
| Component,
| {
| ...attrs,
| ...props,
| ...createEvents(
| renderOpts,
| params,
| (value: any) => {
| // 处理 model 值双向绑定
| XEUtils.set(data, property, value);
| },
| () => {
| // 处理 change 事件相关逻辑
| $form.updateStatus({
| ...params,
| field: property,
| });
| },
| ),
| },
| {
| default: () => cellText(content || props.content),
| },
| ),
| ];
| };
| }
|
| function createToolbarButtonRender() {
| return function (
| renderOpts: VxeGlobalRendererHandles.RenderToolOptions,
| params: VxeGlobalRendererHandles.RenderButtonParams,
| ) {
| const { attrs } = renderOpts;
| const { button } = params;
| const props = createProps(renderOpts, null);
| const Component = getComponent(COMPONENT_NAME);
|
| return [
| h(
| Component,
| {
| ...attrs,
| ...props,
| ...createEvents(renderOpts, params),
| },
| {
| default: () => cellText(button?.content || props.content),
| },
| ),
| ];
| };
| }
|
| export default {
| renderEdit: createEditRender(),
| renderDefault: createDefaultRender(),
| renderItemContent: createFormItemRender(),
| renderToolbarButton: createToolbarButtonRender(),
| };
|
|