ngx-axis-appforge 0.0.82 → 0.0.84
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/axis-components/table/index.d.ts +2 -0
- package/axis-components/tree-selector/index.d.ts +1 -0
- package/fesm2022/ngx-axis-appforge-axis-components-table-design.mjs +9 -1
- package/fesm2022/ngx-axis-appforge-axis-components-table-design.mjs.map +1 -1
- package/fesm2022/ngx-axis-appforge-axis-components-table-helper.mjs +10 -14
- package/fesm2022/ngx-axis-appforge-axis-components-table-helper.mjs.map +1 -1
- package/fesm2022/ngx-axis-appforge-axis-components-table.mjs +22 -14
- package/fesm2022/ngx-axis-appforge-axis-components-table.mjs.map +1 -1
- package/fesm2022/ngx-axis-appforge-axis-components-tree-selector-design.mjs +3 -2
- package/fesm2022/ngx-axis-appforge-axis-components-tree-selector-design.mjs.map +1 -1
- package/fesm2022/ngx-axis-appforge-axis-components-tree-selector.mjs +20 -2
- package/fesm2022/ngx-axis-appforge-axis-components-tree-selector.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -121,6 +121,7 @@ declare class Table extends Base<TableOptions> {
|
|
|
121
121
|
x: string;
|
|
122
122
|
y: string;
|
|
123
123
|
}>;
|
|
124
|
+
readonly oriFields: _angular_core.Signal<TableFieldOptions[]>;
|
|
124
125
|
readonly fields: _angular_core.Signal<TableFieldOptions[]>;
|
|
125
126
|
readonly rowActions: _angular_core.Signal<any[]>;
|
|
126
127
|
readonly actionsFieldWidth: _angular_core.Signal<number>;
|
|
@@ -134,6 +135,7 @@ declare class Table extends Base<TableOptions> {
|
|
|
134
135
|
resizeHandleOffsetX(field: TableFieldOptions): number;
|
|
135
136
|
tableSetter?: TableSetter;
|
|
136
137
|
trackByKeyField: (i: number, data: any) => any;
|
|
138
|
+
private buildOriFields;
|
|
137
139
|
private buildFields;
|
|
138
140
|
private buildActionsFieldWidth;
|
|
139
141
|
private refreshScoll;
|
|
@@ -20,6 +20,7 @@ declare class TreeSelectorOptions extends ValueAccessOptions {
|
|
|
20
20
|
readonly maxSelectCount: _angular_core.WritableSignal<number | null>;
|
|
21
21
|
readonly defaultFirst: _angular_core.WritableSignal<boolean>;
|
|
22
22
|
readonly allowClear: _angular_core.WritableSignal<boolean>;
|
|
23
|
+
readonly outputLeafValue: _angular_core.WritableSignal<boolean>;
|
|
23
24
|
readonly type: _angular_core.WritableSignal<"tree" | "input-tree" | "cascader">;
|
|
24
25
|
readonly showSearch: _angular_core.WritableSignal<boolean>;
|
|
25
26
|
readonly hideUnMatched: _angular_core.WritableSignal<boolean>;
|
|
@@ -350,7 +350,15 @@ class TableSetting extends FunFieldValueBase {
|
|
|
350
350
|
}
|
|
351
351
|
}], ...(ngDevMode ? [{ debugName: "rowScopes" }] : []));
|
|
352
352
|
eventDesc = computed(() => {
|
|
353
|
-
const res = [
|
|
353
|
+
const res = [
|
|
354
|
+
{
|
|
355
|
+
name: 'tableDataChange',
|
|
356
|
+
title: '表格数据改变',
|
|
357
|
+
ds: {
|
|
358
|
+
tableData: this.dataFunField.computeResult()
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
];
|
|
354
362
|
if (this.formValue()?.showCheckbox.funMode || this.formValue()?.showCheckbox.originValue) {
|
|
355
363
|
res.push({
|
|
356
364
|
name: 'onSelectedChange',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-axis-appforge-axis-components-table-design.mjs","sources":["../../../axis-components/table/design/table-field-setting/table-field-setting.ts","../../../axis-components/table/design/table-field-setting/table-field-setting.html","../../../axis-components/table/design/table-fields-menu/table-fields-menu.ts","../../../axis-components/table/design/table-fields-menu/table-fields-menu.html","../../../axis-components/table/design/table-setting/table-setting.ts","../../../axis-components/table/design/table-setting/table-setting.html","../../../axis-components/table/design/config.ts","../../../axis-components/table/design/ngx-axis-appforge-axis-components-table-design.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, inject, Signal, signal, ViewChild } from '@angular/core';\nimport { AbstractControl, FormsModule, ReactiveFormsModule, UntypedFormGroup, ValidationErrors } from '@angular/forms';\nimport { NzAutocompleteModule } from 'ng-zorro-antd/auto-complete';\nimport { NzCollapseModule } from 'ng-zorro-antd/collapse';\nimport { NzFormModule } from 'ng-zorro-antd/form';\nimport { NzInputModule } from 'ng-zorro-antd/input';\nimport { NzInputNumberModule } from 'ng-zorro-antd/input-number';\nimport { NzRadioModule } from 'ng-zorro-antd/radio';\nimport { NzSelectModule } from 'ng-zorro-antd/select';\nimport { NzSwitchModule } from 'ng-zorro-antd/switch';\nimport { FormValidators, FunFieldValueBase, FunFieldOptions, FunField, AXIS_DESIGN_COMPONENT_REF_FOR_SETTING_TOKEN, ScopeInfo, DynamicDirective } from 'ngx-axis-appforge/core';\n\n@Component({\n selector: 'axis-design-table-field-setting',\n imports: [FormsModule, NzFormModule, ReactiveFormsModule, NzCollapseModule, NzInputModule, FunField, NzRadioModule, NzSelectModule, NzInputNumberModule, NzSwitchModule, NzAutocompleteModule, DynamicDirective],\n templateUrl: './table-field-setting.html',\n styleUrl: './table-field-setting.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TableFieldSetting extends FunFieldValueBase {\n\n override fg: UntypedFormGroup = this.fb.group({\n loop: [false, [FormValidators.required]],\n loopTarget: [],\n fieldFunForLoop: [],\n inuse: [undefined, FormValidators.requiredFun],\n field: [\"unknown\", FormValidators.required],\n title: [undefined, FormValidators.requiredFun],\n export: [undefined, FormValidators.requiredFun],\n exportFlowChild: [undefined, FormValidators.requiredFun],\n exportFn: [],\n import: [undefined, FormValidators.requiredFun],\n importRequired: [undefined, FormValidators.requiredFun],\n importCellType: [undefined, FormValidators.requiredFun],\n importHelp: [],\n sortAble: [undefined, FormValidators.requiredFun],\n sortOrder: [undefined, (ctrl: AbstractControl): ValidationErrors | null => {\n if (this.formValue()?.groupAble) {\n return FormValidators.requiredFun(ctrl);\n }\n return null;\n }],\n sortPriority: [],\n filterAble: [undefined, FormValidators.requiredFun],\n filterMultiple: [undefined, FormValidators.requiredFun],\n width: [],\n align: [undefined, FormValidators.requiredFun],\n freezeMode: [undefined, FormValidators.requiredFun],\n groupAble: [false, FormValidators.required],\n groupLevel: [],\n statisticAble: [false, FormValidators.required],\n statisticType: [\"sum\", FormValidators.required],\n statisticFn: [],\n titleGroup: [],\n });\n\n protected override funFields: FunFieldOptions = {\n loopTarget: {\n defaultValue: []\n },\n inuse: {\n defaultValue: true\n },\n title: {\n defaultValue: \"未命名\"\n },\n export: {\n defaultValue: true\n },\n exportFlowChild: {\n defaultValue: true\n },\n import: {\n defaultValue: false\n },\n importRequired: {\n defaultValue: false\n },\n importCellType: {\n defaultValue: \"text\"\n },\n importHelp: {\n defaultValue: undefined\n },\n sortAble: {\n defaultValue: false\n },\n sortOrder: {\n defaultValue: null\n },\n sortPriority: {\n defaultValue: null\n },\n filterAble: {\n defaultValue: false\n },\n filterMultiple: {\n defaultValue: false\n },\n width: {\n defaultValue: null\n },\n align: {\n defaultValue: \"left\"\n },\n freezeMode: {\n defaultValue: \"none\"\n },\n };\n\n readonly elementRef = inject(AXIS_DESIGN_COMPONENT_REF_FOR_SETTING_TOKEN);\n\n readonly useBackEndPaging = computed(() => {\n const opt: any = this.elementRef.ref?.instance.options;\n if (opt) {\n return opt.showPagination() && opt.useBackEndPaging();\n } else {\n this.elementRef.options.showPagination && this.elementRef.options.useBackEndPaging;\n }\n });\n\n readonly data = computed(() => {\n const opt: any = this.elementRef.ref?.instance.options;\n if (opt) {\n return opt.data();\n } else {\n this.elementRef.options.showPagination && this.elementRef.options.useBackEndPaging;\n }\n });\n\n readonly tableRows = computed(() => {\n const data = (this.elementRef.ref?.instance.options as any)?.data();\n if (data) {\n if (this.useBackEndPaging()) {\n return data.rows;\n }\n }\n return data;\n })\n\n loopTargetResult = signal<Signal<any> | undefined>(undefined);\n\n @ViewChild(\"loopTargetFunField\")\n set loopTargetFunField(v: FunField | undefined) {\n this.loopTargetResult.set(v?.computeResult);\n }\n\n readonly loopRowScope = computed<ScopeInfo[]>(() => {\n if (!this.formValue()?.loop) {\n return [];\n }\n return [{\n scopeId: this.elementRef.options.id + '.fields.' + this.formValue().field + \".loop\",\n scopeName: \"列循环\",\n ds: {\n loopRow: this.loopTargetResult()?.()?.[0],\n }\n }];\n });\n\n readonly exportFnScopes = computed<ScopeInfo[]>(() => {\n let data = this.tableRows();\n return [\n ...this.loopRowScope(),\n {\n scopeId: this.elementRef.options.id + '.export.' + this.formValue().field,\n scopeName: \"导出\",\n ds: {\n row: data?.[0] ?? {},\n }\n }];\n });\n\n readonly statisticFnScopes = computed<ScopeInfo[]>(() => {\n let data = this.tableRows();\n return [\n ...this.loopRowScope(),\n {\n scopeId: this.elementRef.options.id + '.statistic.' + this.formValue().field,\n scopeName: \"统计\",\n ds: {\n result: null,\n index: 0,\n row: data?.[0] ?? {},\n value: data?.[0]?.[this.formValue().field] ?? null\n }\n }];\n });\n\n readonly fields = computed(() => {\n let data = this.tableRows();\n return Object.keys(data?.[0] ?? {});\n });\n\n\n}\n","<form [formGroup]=\"fg\" nz-form>\n <nz-collapse [nzBordered]=\"false\">\n <nz-collapse-panel nzHeader=\"基本设置\" nzActive>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 字段名\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <input nz-input formControlName=\"field\" [nzAutocomplete]=\"fieldAuto\" />\n </nz-form-control>\n </nz-form-item>\n <nz-autocomplete #fieldAuto nzBackfill>\n @for (f of fields(); track f) {\n <nz-auto-option [nzLabel]=\"f\" [nzValue]=\"f\">\n {{f}}\n </nz-auto-option>\n }\n </nz-autocomplete>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 字段标题\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"title\" [scopes]=\"loopRowScope()\">\n <input nz-input ngModel [ngModelOptions]=\"{standalone:true}\" />\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 是否可用\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"inuse\" [scopes]=\"loopRowScope()\">\n <nz-switch ngModel [ngModelOptions]=\"{standalone:true}\"></nz-switch>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 启用循环\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <nz-switch formControlName=\"loop\"></nz-switch>\n </nz-form-control>\n </nz-form-item>\n @if (formValue().loop) {\n <nz-form-item>\n <nz-form-label nzSpan=\"10\">\n 循环目标\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"loopTarget\" #loopTargetFunField>\n <ng-container [axisDynamic]=\"{component:'axis-components/input-json',inuse:true}\"\n [standalone]=\"true\" ngModel [ngModelOptions]=\"{standalone:true}\"></ng-container>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzTooltipTitle=\"此函数返回的字段名将覆盖默认的字段名\">\n 字段名函数\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"fieldFunForLoop\" [onlyFun]=\"true\" [noListen]=\"true\" editTip=\"返回字段名\"\n [scopes]=\"loopRowScope()\">\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n }\n </nz-collapse-panel>\n <nz-collapse-panel nzHeader=\"外观设置\">\n <nz-form-item>\n <nz-form-label nzSpan=\"10\">\n 宽度\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"width\" [scopes]=\"loopRowScope()\">\n <nz-input-number ngModel [ngModelOptions]=\"{standalone:true}\" style=\"width: 100%;\" [nzMin]=\"0\">\n <span nzInputAddonAfter>px</span>\n </nz-input-number>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 对齐方式\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"align\" [scopes]=\"loopRowScope()\">\n <nz-select ngModel [ngModelOptions]=\"{standalone:true}\">\n <nz-option nzValue=\"left\" nzLabel=\"左对齐\"></nz-option>\n <nz-option nzValue=\"center\" nzLabel=\"居中\"></nz-option>\n <nz-option nzValue=\"right\" nzLabel=\"右对齐\"></nz-option>\n </nz-select>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 固定方式\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"freezeMode\" [scopes]=\"loopRowScope()\">\n <nz-select ngModel [ngModelOptions]=\"{standalone:true}\">\n <nz-option nzValue=\"none\" nzLabel=\"不固定\"></nz-option>\n <nz-option nzValue=\"left\" nzLabel=\"固定在左\"></nz-option>\n <nz-option nzValue=\"right\" nzLabel=\"固定在右\"></nz-option>\n </nz-select>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 启用分组\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <nz-switch formControlName=\"groupAble\"></nz-switch>\n </nz-form-control>\n </nz-form-item>\n @if (formValue().groupAble) {\n <nz-form-item>\n <nz-form-label nzSpan=\"10\">\n 分组级别\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <nz-input-number formControlName=\"groupLevel\" style=\"width: 100%;\" [nzMin]=\"1\">\n </nz-input-number>\n </nz-form-control>\n </nz-form-item>\n }\n </nz-collapse-panel>\n <nz-collapse-panel nzHeader=\"排序过滤\">\n @if (!formValue().groupAble) {\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 是否排序\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"sortAble\" [scopes]=\"loopRowScope()\">\n <nz-switch ngModel [ngModelOptions]=\"{standalone:true}\"></nz-switch>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n }\n @if (formValue().groupAble || formValue().sortAble?.funMode || formValue()?.sortAble?.originValue) {\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" [nzRequired]=\"formValue().groupAble\">\n 默认排序方式\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"sortOrder\" [scopes]=\"loopRowScope()\">\n <nz-select ngModel [ngModelOptions]=\"{standalone:true}\" [nzAllowClear]=\"!formValue().groupAble\">\n <nz-option nzValue=\"ascend\" nzLabel=\"升序\"></nz-option>\n <nz-option nzValue=\"descend\" nzLabel=\"降序\"></nz-option>\n </nz-select>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n @if(!formValue().groupAble){\n <nz-form-item>\n <nz-form-label nzSpan=\"10\">\n 排序优先级\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"sortPriority\" [scopes]=\"loopRowScope()\">\n <nz-input-number style=\"width: 100%;\" ngModel\n [ngModelOptions]=\"{standalone:true}\"></nz-input-number>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n }\n }\n @if(!useBackEndPaging()){\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 是否过滤\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"filterAble\" [scopes]=\"loopRowScope()\">\n <nz-switch ngModel [ngModelOptions]=\"{standalone:true}\"></nz-switch>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n @if (formValue().filterAble?.funMode || formValue()?.filterAble?.originValue) {\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 多个过滤条件\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"filterMultiple\" [scopes]=\"loopRowScope()\">\n <nz-switch ngModel [ngModelOptions]=\"{standalone:true}\"></nz-switch>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n }\n }\n </nz-collapse-panel>\n <nz-collapse-panel nzHeader=\"统计设置\">\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 是否统计\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <nz-switch formControlName=\"statisticAble\"></nz-switch>\n </nz-form-control>\n </nz-form-item>\n @if (formValue().statisticAble) {\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 统计方式\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <nz-select formControlName=\"statisticType\">\n <nz-option nzValue=\"sum\" nzLabel=\"合计\"></nz-option>\n <nz-option nzValue=\"average\" nzLabel=\"平均\"></nz-option>\n <nz-option nzValue=\"max\" nzLabel=\"最大值\"></nz-option>\n <nz-option nzValue=\"min\" nzLabel=\"最小值\"></nz-option>\n @if (!useBackEndPaging()) {\n <nz-option nzValue=\"custom\" nzLabel=\"自定义\"></nz-option>\n }\n </nz-select>\n </nz-form-control>\n </nz-form-item>\n @if (!useBackEndPaging() && formValue().statisticType == \"custom\") {\n <nz-form-item>\n <nz-form-label nzSpan=\"10\">\n 统计函数\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"statisticFn\" [scopes]=\"statisticFnScopes()\" [onlyFun]=\"true\"\n [noListen]=\"true\">\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n }\n }\n </nz-collapse-panel>\n <nz-collapse-panel nzHeader=\"导出\">\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 是否导出\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"export\" [scopes]=\"loopRowScope()\">\n <nz-switch ngModel [ngModelOptions]=\"{standalone:true}\"></nz-switch>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n @if (formValue().export?.funMode || formValue()?.export?.originValue) {\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 导出内容跟随\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"exportFlowChild\" [scopes]=\"loopRowScope()\">\n <nz-switch ngModel [ngModelOptions]=\"{standalone:true}\"></nz-switch>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n @if (formValue().exportFlowChild?.funMode || !formValue()?.exportFlowChild?.originValue) {\n <nz-form-item>\n <nz-form-label nzSpan=\"10\">\n 导出函数\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"exportFn\" [scopes]=\"exportFnScopes()\" [onlyFun]=\"true\"\n [noListen]=\"true\">\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n }\n }\n <!-- <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 是否导入\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"import\">\n <nz-switch ngModel [ngModelOptions]=\"{standalone:true}\"></nz-switch>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n @if (formValue().import?.funMode || formValue()?.import?.originValue) {\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 必填标志\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"importRequired\">\n <nz-switch ngModel [ngModelOptions]=\"{standalone:true}\"></nz-switch>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 单元格类型\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"importCellType\">\n <nz-select ngModel [ngModelOptions]=\"{standalone:true}\" [nzAllowClear]=\"false\">\n <nz-option nzValue=\"text\" nzLabel=\"文本\"></nz-option>\n <nz-option nzValue=\"number\" nzLabel=\"数字\"></nz-option>\n </nz-select>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\">\n 导入帮助\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"importHelp\">\n <textarea nz-input ngModel [ngModelOptions]=\"{standalone:true}\"></textarea>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n } -->\n </nz-collapse-panel>\n </nz-collapse>\n</form>","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { NzDividerModule } from 'ng-zorro-antd/divider';\nimport { NzDropDownModule } from 'ng-zorro-antd/dropdown';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { BaseMenu } from 'ngx-axis-appforge/core';\n\n@Component({\n selector: 'axis-design-table-fields-menu',\n imports: [NzDropDownModule, NzDividerModule, NzIconModule],\n templateUrl: './table-fields-menu.html',\n styleUrl: './table-fields-menu.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TableFieldsMenu extends BaseMenu {\n\n addField() {\n const field = `unnamed#${this.optionsNodes.current.options.length + 1}`;\n this.optionsNodes.current.options.push({\n field: field,\n title: \"未命名\",\n inuse: true,\n });\n this.onChange?.({ nextNodeId: `${this.optionsNodes.parent?.id}.${field}`, historyDesc: \"添加表格字段\" });\n }\n}\n","<nz-dropdown-menu #menu=\"nzDropdownMenu\">\n <ul nz-menu>\n <li nz-menu-item (click)=\"addField()\">\n <i nz-icon nzType=\"plus\" nzTheme=\"outline\"></i>\n <nz-divider nzType=\"vertical\"></nz-divider>\n <span>添加字段</span>\n </li>\n </ul>\n</nz-dropdown-menu>","import { ChangeDetectionStrategy, Component, computed, ViewChild } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule, UntypedFormGroup } from '@angular/forms';\nimport { NzFormModule } from 'ng-zorro-antd/form';\nimport { NzGridModule } from 'ng-zorro-antd/grid';\nimport { NzCollapseModule } from 'ng-zorro-antd/collapse';\nimport { InputTrigger, FunFieldValueBase, FunField, BaseDesignSetting, baseFbConfig, baseFunField, FunFieldOptions, FormValidators, DynamicDirective, ScopeInfo, EventDesc } from 'ngx-axis-appforge/core';\nimport { NzInputNumberModule } from 'ng-zorro-antd/input-number';\nimport { NzInputModule } from 'ng-zorro-antd/input';\nimport { NzSwitchModule } from 'ng-zorro-antd/switch';\nimport { NzSelectModule } from 'ng-zorro-antd/select';\nimport { NzRadioModule } from 'ng-zorro-antd/radio';\nimport { NzAutocompleteModule } from 'ng-zorro-antd/auto-complete';\n\n@Component({\n selector: 'axis-design-table-setting',\n imports: [NzFormModule, FormsModule, ReactiveFormsModule, FunField, NzGridModule, NzCollapseModule, BaseDesignSetting, InputTrigger, NzInputNumberModule, NzInputModule, NzSwitchModule, NzSelectModule, DynamicDirective, NzRadioModule, NzAutocompleteModule],\n templateUrl: './table-setting.html',\n styleUrl: './table-setting.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TableSetting extends FunFieldValueBase {\n\n override fg: UntypedFormGroup = this.fb.group({\n ...baseFbConfig,\n keyField: [],\n showExpand: [undefined, FormValidators.requiredFun],\n expandMode: [\"custom\", FormValidators.required],\n treeChildrenFun: [],\n showTableTitleSet: [undefined, FormValidators.requiredFun],\n tableSetCacheKey: [],\n data: [],\n customExportData: [undefined, FormValidators.requiredFun],\n size: [undefined, FormValidators.requiredFun],\n showOrder: [undefined, FormValidators.requiredFun],\n heightExpanded: [undefined, FormValidators.requiredFun],\n showDataSize: [undefined, FormValidators.requiredFun],\n bordered: [undefined, FormValidators.requiredFun],\n outerBordered: [undefined, FormValidators.requiredFun],\n width: [],\n actionsFieldWidth: [],\n showCheckbox: [undefined, FormValidators.requiredFun],\n checkeOnRowClick: [undefined, FormValidators.requiredFun],\n singleCheck: [undefined, FormValidators.requiredFun],\n checkboxLinkageForExpand: [false, FormValidators.required],\n checkedKeys: [],\n disableCheckboxFn: [],\n showStatistic: [undefined, FormValidators.requiredFun],\n statisticTitle: [],\n showPagination: [true, FormValidators.required],\n virtualScroll: [false, FormValidators.required],\n virtualItemSize: [32, FormValidators.required],\n pageSize: [undefined, FormValidators.requiredFun],\n showSizeChanger: [undefined, FormValidators.requiredFun],\n pageSizeOptions: [\"10,20,50,100\", [FormValidators.required, FormValidators.pattern(/^\\d+(?:,\\d+)*$/)]],\n useBackEndPaging: [false, FormValidators.required],\n importLimitLength: [],\n importStartLine: [undefined, FormValidators.requiredFun],\n importTemplateFileName: [],\n importExampleData: [],\n });\n\n protected override funFields: FunFieldOptions = {\n ...baseFunField,\n showExpand: {\n defaultValue: false\n },\n showTableTitleSet: {\n defaultValue: false\n },\n tableSetCacheKey: {\n defaultValue: undefined\n },\n data: {\n defaultValue: undefined,\n },\n customExportData: {\n defaultValue: false,\n },\n size: {\n defaultValue: \"middle\"\n },\n showOrder: {\n defaultValue: true\n },\n heightExpanded: {\n defaultValue: false\n },\n showDataSize: {\n defaultValue: true\n },\n bordered: {\n defaultValue: false\n },\n outerBordered: {\n defaultValue: false\n },\n width: {\n defaultValue: null\n },\n actionsFieldWidth: {\n defaultValue: null\n },\n showCheckbox: {\n defaultValue: false\n },\n checkeOnRowClick: {\n defaultValue: false\n },\n singleCheck: {\n defaultValue: false\n },\n checkedKeys: {\n defaultValue: undefined\n },\n showStatistic: {\n defaultValue: false\n },\n statisticTitle: {\n defaultValue: \"合计\"\n },\n pageSize: {\n defaultValue: 10\n },\n showSizeChanger: {\n defaultValue: true\n },\n importLimitLength: {\n defaultValue: null\n },\n importStartLine: {\n defaultValue: 2\n },\n importTemplateFileName: {\n defaultValue: \"数据导入模版\"\n },\n importExampleData: {\n defaultValue: []\n },\n };\n\n @ViewChild(\"dataFunField\", { static: true })\n dataFunField!: FunField;\n\n readonly useBackEndPaging = computed(() => this.formValue()?.showPagination && this.formValue()?.useBackEndPaging);\n\n readonly rowScopes = computed<ScopeInfo[]>(() => [{\n scopeId: this.formValue()?.id + '.row',\n scopeName: \"表格行\",\n ds: {\n row: (this.useBackEndPaging() ? this.dataFunField.computeResult()?.rows : this.dataFunField.computeResult())?.[0] ?? {}\n }\n }]);\n\n readonly eventDesc = computed(() => {\n const res: EventDesc[] = [];\n if (this.formValue()?.showCheckbox.funMode || this.formValue()?.showCheckbox.originValue) {\n res.push({\n name: 'onSelectedChange',\n title: '行选择改变',\n ds: {\n selectedRows: \"示例数据\"\n }\n });\n }\n if (this.formValue()?.showPagination && this.formValue()?.useBackEndPaging) {\n res.push({\n name: 'backendPageParamsChange',\n title: '后端分页参数改变',\n ds: {\n pageParams: {\n use_page: true,\n page_index: 1,\n page_size: 10\n }\n }\n });\n res.push({\n name: 'loadCustomExportData',\n title: '加载自定义导出数据',\n });\n }\n return res;\n });\n\n readonly fields = computed(() => {\n return Object.keys((this.useBackEndPaging() ? this.dataFunField.computeResult()?.rows : this.dataFunField.computeResult())?.[0] ?? {});\n });\n}\n","<form [formGroup]=\"fg\" nz-form>\n <nz-collapse [nzBordered]=\"false\">\n <nz-collapse-panel nzHeader=\"基本设置\" nzActive>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\">\n 主键字段\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <input nz-input formControlName=\"keyField\" placeholder=\"数据的主键字段\" [nzAutocomplete]=\"fieldAuto\" />\n </nz-form-control>\n </nz-form-item>\n <nz-autocomplete #fieldAuto nzBackfill>\n @for (f of fields(); track f) {\n <nz-auto-option [nzLabel]=\"f\" [nzValue]=\"f\">\n {{f}}\n </nz-auto-option>\n }\n </nz-autocomplete>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 扩展行\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"showExpand\">\n <nz-switch ngModel [ngModelOptions]=\"{standalone:true}\"></nz-switch>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n @if (formValue()?.showExpand.funMode || formValue()?.showExpand.originValue) {\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 扩展模式\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <nz-radio-group formControlName=\"expandMode\">\n <label nz-radio-button nzValue=\"custom\">自定义</label>\n <label nz-radio-button nzValue=\"tree\">树</label>\n </nz-radio-group>\n </nz-form-control>\n </nz-form-item>\n @if (formValue().expandMode == \"tree\") {\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzTooltipTitle=\"默认取children字段,若不是请编写函数返回子节点\">\n 子节点函数\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"treeChildrenFun\" [onlyFun]=\"true\" [noListen]=\"true\"\n [scopes]=\"rowScopes()\">\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n }\n }\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired nzTooltipTitle=\"用户可以自定义列的显示、顺序和列宽(不支持动态宽度的列)\">\n 表头设置\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"showTableTitleSet\">\n <nz-switch ngModel [ngModelOptions]=\"{standalone:true}\"></nz-switch>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzTooltipTitle=\"设置后才会缓存用户的表头设置\">\n 设置缓存Key\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"tableSetCacheKey\">\n <input nz-input placeholder=\"为空时不缓存\" ngModel [ngModelOptions]=\"{standalone:true}\" />\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 表格数据\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"data\" #dataFunField>\n <ng-container [axisDynamic]=\"{component:'axis-components/input-json',inuse:true}\"\n [standalone]=\"true\" ngModel [ngModelOptions]=\"{standalone:true}\"></ng-container>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 自定义数据导出\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"customExportData\">\n <nz-switch ngModel [ngModelOptions]=\"{standalone:true}\"></nz-switch>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n </nz-collapse-panel>\n <nz-collapse-panel nzHeader=\"外观设置\">\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 表格大小\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"size\">\n <nz-radio-group ngModel [ngModelOptions]=\"{standalone:true}\" nzSize=\"small\">\n <label nz-radio-button nzValue=\"small\">小</label>\n <label nz-radio-button nzValue=\"middle\">中</label>\n <label nz-radio-button nzValue=\"default\">大</label>\n </nz-radio-group>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 显示序号\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"showOrder\">\n <nz-switch ngModel [ngModelOptions]=\"{standalone:true}\"></nz-switch>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired nzTooltipTitle=\"开启后表格底部不会超出视窗底部\">\n 高度扩展\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"heightExpanded\">\n <nz-switch ngModel [ngModelOptions]=\"{standalone:true}\"></nz-switch>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 显示数据条数\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"showDataSize\">\n <nz-switch ngModel [ngModelOptions]=\"{standalone:true}\"></nz-switch>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 显示边框\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"bordered\">\n <nz-switch ngModel [ngModelOptions]=\"{standalone:true}\"></nz-switch>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 显示外边框\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"outerBordered\">\n <nz-switch ngModel [ngModelOptions]=\"{standalone:true}\"></nz-switch>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzTooltipTitle=\"不设置时,自动计算滚动宽度,自动计算不合理时手动设置\">\n 表格滚动宽度\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"width\">\n <nz-input-number ngModel [ngModelOptions]=\"{standalone:true}\" style=\"width: 100%;\" [nzMin]=\"0\">\n <span nzInputAddonAfter>px</span>\n </nz-input-number>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzTooltipTitle=\"不设置时,自动计算宽度,自动计算不合理时手动设置\">\n 操作列宽度\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"actionsFieldWidth\">\n <nz-input-number ngModel [ngModelOptions]=\"{standalone:true}\" style=\"width: 100%;\" [nzMin]=\"0\">\n <span nzInputAddonAfter>px</span>\n </nz-input-number>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n </nz-collapse-panel>\n <nz-collapse-panel nzHeader=\"选择器设置\">\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 行选择器\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"showCheckbox\">\n <nz-switch ngModel [ngModelOptions]=\"{standalone:true}\"></nz-switch>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n @if (formValue().showCheckbox?.funMode || formValue()?.showCheckbox?.originValue) {\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 行点击\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"checkeOnRowClick\">\n <nz-switch ngModel [ngModelOptions]=\"{standalone:true}\"></nz-switch>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 单选\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"singleCheck\">\n <nz-switch ngModel [ngModelOptions]=\"{standalone:true}\"></nz-switch>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n @if (formValue().singleCheck?.funMode || !formValue()?.singleCheck?.originValue) {\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired nzTooltipTitle=\"若当前表格在其他父表格的扩展行中,可联动父表格的勾选状态\">\n 联动勾选\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <nz-switch formControlName=\"checkboxLinkageForExpand\"></nz-switch>\n </nz-form-control>\n </nz-form-item>\n }\n <nz-form-item>\n <nz-form-label nzSpan=\"10\">\n 选中行\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"checkedKeys\" editTip=\"返回选中行的主键字段列表\">\n <ng-container [axisDynamic]=\"{component:'axis-components/input-json',inuse:true}\"\n [standalone]=\"true\" ngModel [ngModelOptions]=\"{standalone:true}\"></ng-container>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\">\n 选择器禁用脚本\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"disableCheckboxFn\" [onlyFun]=\"true\" [noListen]=\"true\"\n [scopes]=\"rowScopes()\">\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n }\n </nz-collapse-panel>\n <nz-collapse-panel nzHeader=\"数据统计\">\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 启用统计\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"showStatistic\">\n <nz-switch ngModel [ngModelOptions]=\"{standalone:true}\"></nz-switch>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n @if (formValue().showStatistic?.funMode || formValue()?.showStatistic?.originValue) {\n <nz-form-item>\n <nz-form-label nzSpan=\"10\">\n 统计标题\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"statisticTitle\">\n <input nz-input ngModel [ngModelOptions]=\"{standalone:true}\" />\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n }\n <!-- @if (!fg.value.useBackEndPaging) {\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 启用小计\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"showSubTotal\">\n <nz-switch ngModel [ngModelOptions]=\"{standalone:true}\"></nz-switch>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n @if (formValue().showSubTotal?.funMode || formValue()?.showSubTotal?.originValue) {\n <nz-form-item>\n <nz-form-label nzSpan=\"10\">\n 小计标题\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"subTotalTitle\">\n <input nz-input ngModel [ngModelOptions]=\"{standalone:true}\" />\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 小计分组级别\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"subTotalGroupLevel\">\n <nz-input-number style=\"width: 100%;\" ngModel [ngModelOptions]=\"{standalone:true}\" [nzMin]=\"1\">\n </nz-input-number>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n }\n } -->\n </nz-collapse-panel>\n <nz-collapse-panel nzHeader=\"分页设置\">\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 是否分页\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <nz-switch formControlName=\"showPagination\"></nz-switch>\n </nz-form-control>\n </nz-form-item>\n @if (!formValue()?.showPagination) {\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired nzTooltipTitle=\"不分页时,用于加载大量的数据\">\n 虚拟滚动\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <nz-switch formControlName=\"virtualScroll\"></nz-switch>\n (未实现)\n </nz-form-control>\n </nz-form-item>\n @if (formValue()?.virtualScroll) {\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired nzTooltipTitle=\"每一行的高度\">\n 计算行高\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <nz-input-number formControlName=\"virtualItemSize\"></nz-input-number>\n </nz-form-control>\n </nz-form-item>\n }\n }@else {\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 默认行数\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"pageSize\">\n <nz-input-number style=\"width: 100%;\" ngModel [ngModelOptions]=\"{standalone:true}\" [nzMin]=\"1\">\n </nz-input-number>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 行数修改器\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"showSizeChanger\">\n <nz-switch ngModel [ngModelOptions]=\"{standalone:true}\"></nz-switch>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n @if (formValue().showSizeChanger?.funMode || formValue()?.showSizeChanger?.originValue) {\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired nzTooltipTitle=\"用逗号分隔,例:10,20,50,100\">\n 页数可选值\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <input nz-input formControlName=\"pageSizeOptions\" placeholder=\"例:10,20,50,100\" />\n </nz-form-control>\n </nz-form-item>\n }\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 是否后端分页\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <nz-switch formControlName=\"useBackEndPaging\"></nz-switch>\n </nz-form-control>\n </nz-form-item>\n }\n </nz-collapse-panel>\n <!-- <nz-collapse-panel nzHeader=\"导入导出(未实现)\">\n <nz-form-item>\n <nz-form-label nzSpan=\"10\">\n 导出文件名\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"exportFileName\">\n <nz-input-group [nzSuffix]=\"'.'+formValue().exportBookType?.originValue\">\n <input nz-input ngModel [ngModelOptions]=\"{standalone:true}\" />\n </nz-input-group>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 文件类型\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field [noListen]=\"true\" formControlName=\"exportBookType\">\n <nz-select ngModel [ngModelOptions]=\"{standalone:true}\">\n <nz-option nzValue=\"xlsx\" nzLabel=\"xlsx\"></nz-option>\n <nz-option nzValue=\"xls\" nzLabel=\"xls\"></nz-option>\n </nz-select>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\">\n 分批导入限制\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"importLimitLength\">\n <nz-input-number style=\"width: 100%;\" ngModel [ngModelOptions]=\"{standalone:true}\"\n nzPlaceHolder=\"默认不限\"></nz-input-number>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 导入起始行\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"importStartLine\">\n <nz-input-number style=\"width: 100%;\" ngModel\n [ngModelOptions]=\"{standalone:true}\"></nz-input-number>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\">\n 导入模版文件名\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"importTemplateFileName\">\n <nz-input-group nzSuffix=\".xlsx\">\n <input nz-input ngModel [ngModelOptions]=\"{standalone:true}\" />\n </nz-input-group>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\">\n 示例数据\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"importExampleData\">\n <ng-container ngModel [ngModelOptions]=\"{standalone:true}\"\n [axisDynamic]=\"{component:'axis-components/input-json',inuse:true}\"\n [standalone]=\"true\"></ng-container>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n </nz-collapse-panel> -->\n <axis-base-design-setting [fg]=\"fg\"></axis-base-design-setting>\n <axis-input-trigger formControlName=\"triggeEvents\" [eventDesc]=\"eventDesc()\"></axis-input-trigger>\n </nz-collapse>\n</form>","import { TableFieldSetting } from \"./table-field-setting/table-field-setting\";\nimport { TableFieldsMenu } from \"./table-fields-menu/table-fields-menu\";\nimport { TableSetting } from \"./table-setting/table-setting\";\nimport { DesignConfig, NextInfo, DesignBuildResult, OptionsNode, DesignBindElementsResult, SimpleMenu, copy, DataHandler, ScopeInfo } from 'ngx-axis-appforge/core';\n\nexport const Config: DesignConfig = {\n\n componentName: \"表格\",\n eventHandlerDescs: {\n setCustomExportData: {\n name: \"setCustomExportData\",\n title: \"设置自定义导出数据\",\n dataComponent: DataHandler,\n icon: \"export\",\n target: \"component\",\n targetComponent: \"axis-components/table\",\n },\n },\n buildOptionsNodes(nextInfo: NextInfo): DesignBuildResult {\n const newScopes: ScopeInfo[] = [\n {\n scopeId: nextInfo.currentObject.id + \".row\",\n parentScopeId: nextInfo.scopeId,\n scopeName: \"表格行\",\n ds: {\n row: nextInfo.currentObject.data?.[0] ?? \"示例数据\"\n }\n },\n ];\n const next: NextInfo[] = [];\n const fieldsChildren: OptionsNode[] = [];\n const fieldsNode = new OptionsNode({\n id: nextInfo.currentObject.id + \".fields\",\n parentId: nextInfo.currentObject.id,\n parentObj: nextInfo.currentObject,\n indexOfParentObj: \"fields\",\n scopeId: nextInfo.scopeId,\n rootOptions: nextInfo.currentObject.fields,\n contextMenu: TableFieldsMenu,\n name: `表格列[${nextInfo.currentObject.fields?.length ?? 0}]`,\n canDrop: true,\n dropType: \"axis-components/table/table-field\",\n dropObj: nextInfo.currentObject.fields,\n defaultDropIndex: nextInfo.currentObject.fields?.length ?? 0,\n childDirection: 'horizontal',\n icon: \"project\",\n onPaste: (node, replaceIdFun) => {\n let options = node.options;\n if (options.field) {\n options = copy(options, true);\n do {\n options.field = options.field + \"(copy)\";\n } while (fieldsNode.options.some((f: any) => f.field === options.field));\n if (options.child) {\n options.child = replaceIdFun(options.child);\n }\n fieldsNode.options.push(options);\n }\n },\n children: fieldsChildren\n });\n nextInfo.currentObject.fields?.forEach((f: any, i: number) => {\n let loopChildScope: ScopeInfo | undefined;\n if (f.loop) {\n loopChildScope = {\n scopeId: fieldsNode.id + \".\" + f.field + \".row.loop\",\n scopeName: \"列循环\",\n parentScopeId: nextInfo.currentObject.id + \".row\",\n ds: {\n loopRow: f.loopTarget?.[0] ?? \"示例数据\"\n },\n };\n newScopes.push(loopChildScope);\n }\n next.push({\n parentId: fieldsNode.id + \".\" + f.field,\n parentObject: f,\n indexOfParent: \"child\",\n scopeId: loopChildScope?.scopeId ?? nextInfo.currentObject.id + \".row\"\n });\n fieldsChildren.push(new OptionsNode({\n id: fieldsNode.id + \".\" + f.field,\n updateId: (options) => fieldsNode.id + \".\" + options.field,\n scopeId: fieldsNode.scopeId,\n parentId: fieldsNode.id,\n parentObj: fieldsNode.options,\n indexOfParentObj: i,\n rootOptions: f,\n name: `字段[${f.field}]`,\n icon: \"profile\",\n canSetting: true,\n settingType: TableFieldSetting,\n contextMenu: SimpleMenu,\n canDrag: true,\n dragType: \"axis-components/table/table-field\",\n canDrop: true,\n dropType: \"component\",\n dropObj: f,\n defaultDropIndex: \"child\",\n children: []\n }));\n });\n const rowActionsNode = new OptionsNode({\n id: nextInfo.currentObject.id + \".rowActions\",\n parentId: nextInfo.currentObject.id,\n parentObj: nextInfo.currentObject,\n indexOfParentObj: \"rowActions\",\n scopeId: nextInfo.scopeId,\n rootOptions: nextInfo.currentObject.rowActions,\n name: `操作列[${nextInfo.currentObject.rowActions?.length ?? 0}]`,\n contextMenu: SimpleMenu,\n canDrop: true,\n dropType: \"component\",\n dropObj: nextInfo.currentObject.rowActions,\n defaultDropIndex: nextInfo.currentObject.rowActions?.length ?? 0,\n childDirection: 'horizontal',\n icon: \"control\",\n children: []\n });\n next.push({\n parentId: rowActionsNode.id,\n parentObject: rowActionsNode.options,\n scopeId: nextInfo.currentObject.id + \".row\"\n });\n const expandNode = new OptionsNode({\n id: nextInfo.currentObject.id + \".expandRow\",\n parentId: nextInfo.currentObject.id,\n parentObj: nextInfo.currentObject,\n indexOfParentObj: \"expandRow\",\n scopeId: nextInfo.scopeId,\n rootOptions: nextInfo.currentObject,\n name: \"扩展行\",\n contextMenu: SimpleMenu,\n canDrop: true,\n dropType: \"component\",\n dropObj: nextInfo.currentObject,\n defaultDropIndex: \"expandRow\",\n icon: \"control\",\n children: []\n });\n next.push({\n parentId: expandNode.id,\n parentObject: nextInfo.currentObject,\n indexOfParent: \"expandRow\",\n scopeId: nextInfo.currentObject.id + \".row\"\n });\n return {\n treeNode: new OptionsNode({\n parentId: nextInfo.parentId,\n scopeId: nextInfo.scopeId,\n name: \"表格\",\n canSetting: true,\n canDrag: true,\n dragType: \"component\",\n parentObj: nextInfo.parentObject,\n indexOfParentObj: nextInfo.indexOfParent,\n rootOptions: nextInfo.currentObject,\n settingType: TableSetting,\n contextMenu: SimpleMenu,\n icon: \"table\",\n children: [\n fieldsNode,\n rowActionsNode,\n expandNode\n ],\n }),\n next: next,\n newScopes\n };\n },\n bindElementsOptionsNode(element: HTMLElement, options: any): DesignBindElementsResult {\n const fieldsParent = element.querySelector(\"thead>.ant-table-row\") as HTMLElement | undefined;\n const res: DesignBindElementsResult = {\n [options.id]: { element },\n [`${options.id}.fields`]: { element: fieldsParent, dropElement: fieldsParent },\n };\n (options.fields as any[] | undefined)?.forEach((f) => {\n const fieldElement = fieldsParent?.querySelector(`th[data-field=\"${f.field}\"]`) as HTMLElement | undefined;\n const fieldChildElement = element?.querySelector(`td[data-field=\"${f.field}\"]`) as HTMLElement | undefined;\n res[`${options.id}.fields.${f.field}`] = { element: fieldElement, dropElement: fieldChildElement }\n });\n const rowActionsElement = fieldsParent?.querySelector(\"th[data-rowactions]\") as HTMLElement | undefined;\n const rowActionsChildElement = element.querySelector(\"td>div[data-rowactions]\") as HTMLElement | undefined;\n res[`${options.id}.rowActions`] = { element: rowActionsElement, dropElement: rowActionsChildElement };\n const expandRowElement = element.querySelector(\"tr[data-expandrow]\") as HTMLElement | undefined;\n res[`${options.id}.expandRow`] = { element: expandRowElement, dropElement: expandRowElement };\n return res;\n },\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './config';\n"],"names":["i1","i2","i4","i3","i5","i6","i7"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-axis-appforge-axis-components-table-design.mjs","sources":["../../../axis-components/table/design/table-field-setting/table-field-setting.ts","../../../axis-components/table/design/table-field-setting/table-field-setting.html","../../../axis-components/table/design/table-fields-menu/table-fields-menu.ts","../../../axis-components/table/design/table-fields-menu/table-fields-menu.html","../../../axis-components/table/design/table-setting/table-setting.ts","../../../axis-components/table/design/table-setting/table-setting.html","../../../axis-components/table/design/config.ts","../../../axis-components/table/design/ngx-axis-appforge-axis-components-table-design.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, inject, Signal, signal, ViewChild } from '@angular/core';\nimport { AbstractControl, FormsModule, ReactiveFormsModule, UntypedFormGroup, ValidationErrors } from '@angular/forms';\nimport { NzAutocompleteModule } from 'ng-zorro-antd/auto-complete';\nimport { NzCollapseModule } from 'ng-zorro-antd/collapse';\nimport { NzFormModule } from 'ng-zorro-antd/form';\nimport { NzInputModule } from 'ng-zorro-antd/input';\nimport { NzInputNumberModule } from 'ng-zorro-antd/input-number';\nimport { NzRadioModule } from 'ng-zorro-antd/radio';\nimport { NzSelectModule } from 'ng-zorro-antd/select';\nimport { NzSwitchModule } from 'ng-zorro-antd/switch';\nimport { FormValidators, FunFieldValueBase, FunFieldOptions, FunField, AXIS_DESIGN_COMPONENT_REF_FOR_SETTING_TOKEN, ScopeInfo, DynamicDirective } from 'ngx-axis-appforge/core';\n\n@Component({\n selector: 'axis-design-table-field-setting',\n imports: [FormsModule, NzFormModule, ReactiveFormsModule, NzCollapseModule, NzInputModule, FunField, NzRadioModule, NzSelectModule, NzInputNumberModule, NzSwitchModule, NzAutocompleteModule, DynamicDirective],\n templateUrl: './table-field-setting.html',\n styleUrl: './table-field-setting.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TableFieldSetting extends FunFieldValueBase {\n\n override fg: UntypedFormGroup = this.fb.group({\n loop: [false, [FormValidators.required]],\n loopTarget: [],\n fieldFunForLoop: [],\n inuse: [undefined, FormValidators.requiredFun],\n field: [\"unknown\", FormValidators.required],\n title: [undefined, FormValidators.requiredFun],\n export: [undefined, FormValidators.requiredFun],\n exportFlowChild: [undefined, FormValidators.requiredFun],\n exportFn: [],\n import: [undefined, FormValidators.requiredFun],\n importRequired: [undefined, FormValidators.requiredFun],\n importCellType: [undefined, FormValidators.requiredFun],\n importHelp: [],\n sortAble: [undefined, FormValidators.requiredFun],\n sortOrder: [undefined, (ctrl: AbstractControl): ValidationErrors | null => {\n if (this.formValue()?.groupAble) {\n return FormValidators.requiredFun(ctrl);\n }\n return null;\n }],\n sortPriority: [],\n filterAble: [undefined, FormValidators.requiredFun],\n filterMultiple: [undefined, FormValidators.requiredFun],\n width: [],\n align: [undefined, FormValidators.requiredFun],\n freezeMode: [undefined, FormValidators.requiredFun],\n groupAble: [false, FormValidators.required],\n groupLevel: [],\n statisticAble: [false, FormValidators.required],\n statisticType: [\"sum\", FormValidators.required],\n statisticFn: [],\n titleGroup: [],\n });\n\n protected override funFields: FunFieldOptions = {\n loopTarget: {\n defaultValue: []\n },\n inuse: {\n defaultValue: true\n },\n title: {\n defaultValue: \"未命名\"\n },\n export: {\n defaultValue: true\n },\n exportFlowChild: {\n defaultValue: true\n },\n import: {\n defaultValue: false\n },\n importRequired: {\n defaultValue: false\n },\n importCellType: {\n defaultValue: \"text\"\n },\n importHelp: {\n defaultValue: undefined\n },\n sortAble: {\n defaultValue: false\n },\n sortOrder: {\n defaultValue: null\n },\n sortPriority: {\n defaultValue: null\n },\n filterAble: {\n defaultValue: false\n },\n filterMultiple: {\n defaultValue: false\n },\n width: {\n defaultValue: null\n },\n align: {\n defaultValue: \"left\"\n },\n freezeMode: {\n defaultValue: \"none\"\n },\n };\n\n readonly elementRef = inject(AXIS_DESIGN_COMPONENT_REF_FOR_SETTING_TOKEN);\n\n readonly useBackEndPaging = computed(() => {\n const opt: any = this.elementRef.ref?.instance.options;\n if (opt) {\n return opt.showPagination() && opt.useBackEndPaging();\n } else {\n this.elementRef.options.showPagination && this.elementRef.options.useBackEndPaging;\n }\n });\n\n readonly data = computed(() => {\n const opt: any = this.elementRef.ref?.instance.options;\n if (opt) {\n return opt.data();\n } else {\n this.elementRef.options.showPagination && this.elementRef.options.useBackEndPaging;\n }\n });\n\n readonly tableRows = computed(() => {\n const data = (this.elementRef.ref?.instance.options as any)?.data();\n if (data) {\n if (this.useBackEndPaging()) {\n return data.rows;\n }\n }\n return data;\n })\n\n loopTargetResult = signal<Signal<any> | undefined>(undefined);\n\n @ViewChild(\"loopTargetFunField\")\n set loopTargetFunField(v: FunField | undefined) {\n this.loopTargetResult.set(v?.computeResult);\n }\n\n readonly loopRowScope = computed<ScopeInfo[]>(() => {\n if (!this.formValue()?.loop) {\n return [];\n }\n return [{\n scopeId: this.elementRef.options.id + '.fields.' + this.formValue().field + \".loop\",\n scopeName: \"列循环\",\n ds: {\n loopRow: this.loopTargetResult()?.()?.[0],\n }\n }];\n });\n\n readonly exportFnScopes = computed<ScopeInfo[]>(() => {\n let data = this.tableRows();\n return [\n ...this.loopRowScope(),\n {\n scopeId: this.elementRef.options.id + '.export.' + this.formValue().field,\n scopeName: \"导出\",\n ds: {\n row: data?.[0] ?? {},\n }\n }];\n });\n\n readonly statisticFnScopes = computed<ScopeInfo[]>(() => {\n let data = this.tableRows();\n return [\n ...this.loopRowScope(),\n {\n scopeId: this.elementRef.options.id + '.statistic.' + this.formValue().field,\n scopeName: \"统计\",\n ds: {\n result: null,\n index: 0,\n row: data?.[0] ?? {},\n value: data?.[0]?.[this.formValue().field] ?? null\n }\n }];\n });\n\n readonly fields = computed(() => {\n let data = this.tableRows();\n return Object.keys(data?.[0] ?? {});\n });\n\n\n}\n","<form [formGroup]=\"fg\" nz-form>\n <nz-collapse [nzBordered]=\"false\">\n <nz-collapse-panel nzHeader=\"基本设置\" nzActive>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 字段名\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <input nz-input formControlName=\"field\" [nzAutocomplete]=\"fieldAuto\" />\n </nz-form-control>\n </nz-form-item>\n <nz-autocomplete #fieldAuto nzBackfill>\n @for (f of fields(); track f) {\n <nz-auto-option [nzLabel]=\"f\" [nzValue]=\"f\">\n {{f}}\n </nz-auto-option>\n }\n </nz-autocomplete>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 字段标题\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"title\" [scopes]=\"loopRowScope()\">\n <input nz-input ngModel [ngModelOptions]=\"{standalone:true}\" />\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 是否可用\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"inuse\" [scopes]=\"loopRowScope()\">\n <nz-switch ngModel [ngModelOptions]=\"{standalone:true}\"></nz-switch>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 启用循环\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <nz-switch formControlName=\"loop\"></nz-switch>\n </nz-form-control>\n </nz-form-item>\n @if (formValue().loop) {\n <nz-form-item>\n <nz-form-label nzSpan=\"10\">\n 循环目标\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"loopTarget\" #loopTargetFunField>\n <ng-container [axisDynamic]=\"{component:'axis-components/input-json',inuse:true}\"\n [standalone]=\"true\" ngModel [ngModelOptions]=\"{standalone:true}\"></ng-container>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzTooltipTitle=\"此函数返回的字段名将覆盖默认的字段名\">\n 字段名函数\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"fieldFunForLoop\" [onlyFun]=\"true\" [noListen]=\"true\" editTip=\"返回字段名\"\n [scopes]=\"loopRowScope()\">\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n }\n </nz-collapse-panel>\n <nz-collapse-panel nzHeader=\"外观设置\">\n <nz-form-item>\n <nz-form-label nzSpan=\"10\">\n 宽度\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"width\" [scopes]=\"loopRowScope()\">\n <nz-input-number ngModel [ngModelOptions]=\"{standalone:true}\" style=\"width: 100%;\" [nzMin]=\"0\">\n <span nzInputAddonAfter>px</span>\n </nz-input-number>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 对齐方式\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"align\" [scopes]=\"loopRowScope()\">\n <nz-select ngModel [ngModelOptions]=\"{standalone:true}\">\n <nz-option nzValue=\"left\" nzLabel=\"左对齐\"></nz-option>\n <nz-option nzValue=\"center\" nzLabel=\"居中\"></nz-option>\n <nz-option nzValue=\"right\" nzLabel=\"右对齐\"></nz-option>\n </nz-select>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 固定方式\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"freezeMode\" [scopes]=\"loopRowScope()\">\n <nz-select ngModel [ngModelOptions]=\"{standalone:true}\">\n <nz-option nzValue=\"none\" nzLabel=\"不固定\"></nz-option>\n <nz-option nzValue=\"left\" nzLabel=\"固定在左\"></nz-option>\n <nz-option nzValue=\"right\" nzLabel=\"固定在右\"></nz-option>\n </nz-select>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 启用分组\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <nz-switch formControlName=\"groupAble\"></nz-switch>\n </nz-form-control>\n </nz-form-item>\n @if (formValue().groupAble) {\n <nz-form-item>\n <nz-form-label nzSpan=\"10\">\n 分组级别\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <nz-input-number formControlName=\"groupLevel\" style=\"width: 100%;\" [nzMin]=\"1\">\n </nz-input-number>\n </nz-form-control>\n </nz-form-item>\n }\n </nz-collapse-panel>\n <nz-collapse-panel nzHeader=\"排序过滤\">\n @if (!formValue().groupAble) {\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 是否排序\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"sortAble\" [scopes]=\"loopRowScope()\">\n <nz-switch ngModel [ngModelOptions]=\"{standalone:true}\"></nz-switch>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n }\n @if (formValue().groupAble || formValue().sortAble?.funMode || formValue()?.sortAble?.originValue) {\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" [nzRequired]=\"formValue().groupAble\">\n 默认排序方式\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"sortOrder\" [scopes]=\"loopRowScope()\">\n <nz-select ngModel [ngModelOptions]=\"{standalone:true}\" [nzAllowClear]=\"!formValue().groupAble\">\n <nz-option nzValue=\"ascend\" nzLabel=\"升序\"></nz-option>\n <nz-option nzValue=\"descend\" nzLabel=\"降序\"></nz-option>\n </nz-select>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n @if(!formValue().groupAble){\n <nz-form-item>\n <nz-form-label nzSpan=\"10\">\n 排序优先级\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"sortPriority\" [scopes]=\"loopRowScope()\">\n <nz-input-number style=\"width: 100%;\" ngModel\n [ngModelOptions]=\"{standalone:true}\"></nz-input-number>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n }\n }\n @if(!useBackEndPaging()){\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 是否过滤\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"filterAble\" [scopes]=\"loopRowScope()\">\n <nz-switch ngModel [ngModelOptions]=\"{standalone:true}\"></nz-switch>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n @if (formValue().filterAble?.funMode || formValue()?.filterAble?.originValue) {\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 多个过滤条件\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"filterMultiple\" [scopes]=\"loopRowScope()\">\n <nz-switch ngModel [ngModelOptions]=\"{standalone:true}\"></nz-switch>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n }\n }\n </nz-collapse-panel>\n <nz-collapse-panel nzHeader=\"统计设置\">\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 是否统计\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <nz-switch formControlName=\"statisticAble\"></nz-switch>\n </nz-form-control>\n </nz-form-item>\n @if (formValue().statisticAble) {\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 统计方式\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <nz-select formControlName=\"statisticType\">\n <nz-option nzValue=\"sum\" nzLabel=\"合计\"></nz-option>\n <nz-option nzValue=\"average\" nzLabel=\"平均\"></nz-option>\n <nz-option nzValue=\"max\" nzLabel=\"最大值\"></nz-option>\n <nz-option nzValue=\"min\" nzLabel=\"最小值\"></nz-option>\n @if (!useBackEndPaging()) {\n <nz-option nzValue=\"custom\" nzLabel=\"自定义\"></nz-option>\n }\n </nz-select>\n </nz-form-control>\n </nz-form-item>\n @if (!useBackEndPaging() && formValue().statisticType == \"custom\") {\n <nz-form-item>\n <nz-form-label nzSpan=\"10\">\n 统计函数\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"statisticFn\" [scopes]=\"statisticFnScopes()\" [onlyFun]=\"true\"\n [noListen]=\"true\">\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n }\n }\n </nz-collapse-panel>\n <nz-collapse-panel nzHeader=\"导出\">\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 是否导出\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"export\" [scopes]=\"loopRowScope()\">\n <nz-switch ngModel [ngModelOptions]=\"{standalone:true}\"></nz-switch>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n @if (formValue().export?.funMode || formValue()?.export?.originValue) {\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 导出内容跟随\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"exportFlowChild\" [scopes]=\"loopRowScope()\">\n <nz-switch ngModel [ngModelOptions]=\"{standalone:true}\"></nz-switch>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n @if (formValue().exportFlowChild?.funMode || !formValue()?.exportFlowChild?.originValue) {\n <nz-form-item>\n <nz-form-label nzSpan=\"10\">\n 导出函数\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"exportFn\" [scopes]=\"exportFnScopes()\" [onlyFun]=\"true\"\n [noListen]=\"true\">\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n }\n }\n <!-- <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 是否导入\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"import\">\n <nz-switch ngModel [ngModelOptions]=\"{standalone:true}\"></nz-switch>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n @if (formValue().import?.funMode || formValue()?.import?.originValue) {\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 必填标志\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"importRequired\">\n <nz-switch ngModel [ngModelOptions]=\"{standalone:true}\"></nz-switch>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 单元格类型\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"importCellType\">\n <nz-select ngModel [ngModelOptions]=\"{standalone:true}\" [nzAllowClear]=\"false\">\n <nz-option nzValue=\"text\" nzLabel=\"文本\"></nz-option>\n <nz-option nzValue=\"number\" nzLabel=\"数字\"></nz-option>\n </nz-select>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\">\n 导入帮助\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"importHelp\">\n <textarea nz-input ngModel [ngModelOptions]=\"{standalone:true}\"></textarea>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n } -->\n </nz-collapse-panel>\n </nz-collapse>\n</form>","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { NzDividerModule } from 'ng-zorro-antd/divider';\nimport { NzDropDownModule } from 'ng-zorro-antd/dropdown';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { BaseMenu } from 'ngx-axis-appforge/core';\n\n@Component({\n selector: 'axis-design-table-fields-menu',\n imports: [NzDropDownModule, NzDividerModule, NzIconModule],\n templateUrl: './table-fields-menu.html',\n styleUrl: './table-fields-menu.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TableFieldsMenu extends BaseMenu {\n\n addField() {\n const field = `unnamed#${this.optionsNodes.current.options.length + 1}`;\n this.optionsNodes.current.options.push({\n field: field,\n title: \"未命名\",\n inuse: true,\n });\n this.onChange?.({ nextNodeId: `${this.optionsNodes.parent?.id}.${field}`, historyDesc: \"添加表格字段\" });\n }\n}\n","<nz-dropdown-menu #menu=\"nzDropdownMenu\">\n <ul nz-menu>\n <li nz-menu-item (click)=\"addField()\">\n <i nz-icon nzType=\"plus\" nzTheme=\"outline\"></i>\n <nz-divider nzType=\"vertical\"></nz-divider>\n <span>添加字段</span>\n </li>\n </ul>\n</nz-dropdown-menu>","import { ChangeDetectionStrategy, Component, computed, ViewChild } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule, UntypedFormGroup } from '@angular/forms';\nimport { NzFormModule } from 'ng-zorro-antd/form';\nimport { NzGridModule } from 'ng-zorro-antd/grid';\nimport { NzCollapseModule } from 'ng-zorro-antd/collapse';\nimport { InputTrigger, FunFieldValueBase, FunField, BaseDesignSetting, baseFbConfig, baseFunField, FunFieldOptions, FormValidators, DynamicDirective, ScopeInfo, EventDesc } from 'ngx-axis-appforge/core';\nimport { NzInputNumberModule } from 'ng-zorro-antd/input-number';\nimport { NzInputModule } from 'ng-zorro-antd/input';\nimport { NzSwitchModule } from 'ng-zorro-antd/switch';\nimport { NzSelectModule } from 'ng-zorro-antd/select';\nimport { NzRadioModule } from 'ng-zorro-antd/radio';\nimport { NzAutocompleteModule } from 'ng-zorro-antd/auto-complete';\n\n@Component({\n selector: 'axis-design-table-setting',\n imports: [NzFormModule, FormsModule, ReactiveFormsModule, FunField, NzGridModule, NzCollapseModule, BaseDesignSetting, InputTrigger, NzInputNumberModule, NzInputModule, NzSwitchModule, NzSelectModule, DynamicDirective, NzRadioModule, NzAutocompleteModule],\n templateUrl: './table-setting.html',\n styleUrl: './table-setting.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TableSetting extends FunFieldValueBase {\n\n override fg: UntypedFormGroup = this.fb.group({\n ...baseFbConfig,\n keyField: [],\n showExpand: [undefined, FormValidators.requiredFun],\n expandMode: [\"custom\", FormValidators.required],\n treeChildrenFun: [],\n showTableTitleSet: [undefined, FormValidators.requiredFun],\n tableSetCacheKey: [],\n data: [],\n customExportData: [undefined, FormValidators.requiredFun],\n size: [undefined, FormValidators.requiredFun],\n showOrder: [undefined, FormValidators.requiredFun],\n heightExpanded: [undefined, FormValidators.requiredFun],\n showDataSize: [undefined, FormValidators.requiredFun],\n bordered: [undefined, FormValidators.requiredFun],\n outerBordered: [undefined, FormValidators.requiredFun],\n width: [],\n actionsFieldWidth: [],\n showCheckbox: [undefined, FormValidators.requiredFun],\n checkeOnRowClick: [undefined, FormValidators.requiredFun],\n singleCheck: [undefined, FormValidators.requiredFun],\n checkboxLinkageForExpand: [false, FormValidators.required],\n checkedKeys: [],\n disableCheckboxFn: [],\n showStatistic: [undefined, FormValidators.requiredFun],\n statisticTitle: [],\n showPagination: [true, FormValidators.required],\n virtualScroll: [false, FormValidators.required],\n virtualItemSize: [32, FormValidators.required],\n pageSize: [undefined, FormValidators.requiredFun],\n showSizeChanger: [undefined, FormValidators.requiredFun],\n pageSizeOptions: [\"10,20,50,100\", [FormValidators.required, FormValidators.pattern(/^\\d+(?:,\\d+)*$/)]],\n useBackEndPaging: [false, FormValidators.required],\n importLimitLength: [],\n importStartLine: [undefined, FormValidators.requiredFun],\n importTemplateFileName: [],\n importExampleData: [],\n });\n\n protected override funFields: FunFieldOptions = {\n ...baseFunField,\n showExpand: {\n defaultValue: false\n },\n showTableTitleSet: {\n defaultValue: false\n },\n tableSetCacheKey: {\n defaultValue: undefined\n },\n data: {\n defaultValue: undefined,\n },\n customExportData: {\n defaultValue: false,\n },\n size: {\n defaultValue: \"middle\"\n },\n showOrder: {\n defaultValue: true\n },\n heightExpanded: {\n defaultValue: false\n },\n showDataSize: {\n defaultValue: true\n },\n bordered: {\n defaultValue: false\n },\n outerBordered: {\n defaultValue: false\n },\n width: {\n defaultValue: null\n },\n actionsFieldWidth: {\n defaultValue: null\n },\n showCheckbox: {\n defaultValue: false\n },\n checkeOnRowClick: {\n defaultValue: false\n },\n singleCheck: {\n defaultValue: false\n },\n checkedKeys: {\n defaultValue: undefined\n },\n showStatistic: {\n defaultValue: false\n },\n statisticTitle: {\n defaultValue: \"合计\"\n },\n pageSize: {\n defaultValue: 10\n },\n showSizeChanger: {\n defaultValue: true\n },\n importLimitLength: {\n defaultValue: null\n },\n importStartLine: {\n defaultValue: 2\n },\n importTemplateFileName: {\n defaultValue: \"数据导入模版\"\n },\n importExampleData: {\n defaultValue: []\n },\n };\n\n @ViewChild(\"dataFunField\", { static: true })\n dataFunField!: FunField;\n\n readonly useBackEndPaging = computed(() => this.formValue()?.showPagination && this.formValue()?.useBackEndPaging);\n\n readonly rowScopes = computed<ScopeInfo[]>(() => [{\n scopeId: this.formValue()?.id + '.row',\n scopeName: \"表格行\",\n ds: {\n row: (this.useBackEndPaging() ? this.dataFunField.computeResult()?.rows : this.dataFunField.computeResult())?.[0] ?? {}\n }\n }]);\n\n readonly eventDesc = computed(() => {\n const res: EventDesc[] = [\n {\n name: 'tableDataChange',\n title: '表格数据改变',\n ds: {\n tableData: this.dataFunField.computeResult()\n }\n }\n ];\n if (this.formValue()?.showCheckbox.funMode || this.formValue()?.showCheckbox.originValue) {\n res.push({\n name: 'onSelectedChange',\n title: '行选择改变',\n ds: {\n selectedRows: \"示例数据\"\n }\n });\n }\n if (this.formValue()?.showPagination && this.formValue()?.useBackEndPaging) {\n res.push({\n name: 'backendPageParamsChange',\n title: '后端分页参数改变',\n ds: {\n pageParams: {\n use_page: true,\n page_index: 1,\n page_size: 10\n }\n }\n });\n res.push({\n name: 'loadCustomExportData',\n title: '加载自定义导出数据',\n });\n }\n return res;\n });\n\n readonly fields = computed(() => {\n return Object.keys((this.useBackEndPaging() ? this.dataFunField.computeResult()?.rows : this.dataFunField.computeResult())?.[0] ?? {});\n });\n}\n","<form [formGroup]=\"fg\" nz-form>\n <nz-collapse [nzBordered]=\"false\">\n <nz-collapse-panel nzHeader=\"基本设置\" nzActive>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\">\n 主键字段\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <input nz-input formControlName=\"keyField\" placeholder=\"数据的主键字段\" [nzAutocomplete]=\"fieldAuto\" />\n </nz-form-control>\n </nz-form-item>\n <nz-autocomplete #fieldAuto nzBackfill>\n @for (f of fields(); track f) {\n <nz-auto-option [nzLabel]=\"f\" [nzValue]=\"f\">\n {{f}}\n </nz-auto-option>\n }\n </nz-autocomplete>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 扩展行\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"showExpand\">\n <nz-switch ngModel [ngModelOptions]=\"{standalone:true}\"></nz-switch>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n @if (formValue()?.showExpand.funMode || formValue()?.showExpand.originValue) {\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 扩展模式\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <nz-radio-group formControlName=\"expandMode\">\n <label nz-radio-button nzValue=\"custom\">自定义</label>\n <label nz-radio-button nzValue=\"tree\">树</label>\n </nz-radio-group>\n </nz-form-control>\n </nz-form-item>\n @if (formValue().expandMode == \"tree\") {\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzTooltipTitle=\"默认取children字段,若不是请编写函数返回子节点\">\n 子节点函数\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"treeChildrenFun\" [onlyFun]=\"true\" [noListen]=\"true\"\n [scopes]=\"rowScopes()\">\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n }\n }\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired nzTooltipTitle=\"用户可以自定义列的显示、顺序和列宽(不支持动态宽度的列)\">\n 表头设置\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"showTableTitleSet\">\n <nz-switch ngModel [ngModelOptions]=\"{standalone:true}\"></nz-switch>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzTooltipTitle=\"设置后才会缓存用户的表头设置\">\n 设置缓存Key\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"tableSetCacheKey\">\n <input nz-input placeholder=\"为空时不缓存\" ngModel [ngModelOptions]=\"{standalone:true}\" />\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 表格数据\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"data\" #dataFunField>\n <ng-container [axisDynamic]=\"{component:'axis-components/input-json',inuse:true}\"\n [standalone]=\"true\" ngModel [ngModelOptions]=\"{standalone:true}\"></ng-container>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 自定义数据导出\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"customExportData\">\n <nz-switch ngModel [ngModelOptions]=\"{standalone:true}\"></nz-switch>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n </nz-collapse-panel>\n <nz-collapse-panel nzHeader=\"外观设置\">\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 表格大小\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"size\">\n <nz-radio-group ngModel [ngModelOptions]=\"{standalone:true}\" nzSize=\"small\">\n <label nz-radio-button nzValue=\"small\">小</label>\n <label nz-radio-button nzValue=\"middle\">中</label>\n <label nz-radio-button nzValue=\"default\">大</label>\n </nz-radio-group>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 显示序号\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"showOrder\">\n <nz-switch ngModel [ngModelOptions]=\"{standalone:true}\"></nz-switch>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired nzTooltipTitle=\"开启后表格底部不会超出视窗底部\">\n 高度扩展\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"heightExpanded\">\n <nz-switch ngModel [ngModelOptions]=\"{standalone:true}\"></nz-switch>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 显示数据条数\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"showDataSize\">\n <nz-switch ngModel [ngModelOptions]=\"{standalone:true}\"></nz-switch>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 显示边框\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"bordered\">\n <nz-switch ngModel [ngModelOptions]=\"{standalone:true}\"></nz-switch>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 显示外边框\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"outerBordered\">\n <nz-switch ngModel [ngModelOptions]=\"{standalone:true}\"></nz-switch>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzTooltipTitle=\"不设置时,自动计算滚动宽度,自动计算不合理时手动设置\">\n 表格滚动宽度\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"width\">\n <nz-input-number ngModel [ngModelOptions]=\"{standalone:true}\" style=\"width: 100%;\" [nzMin]=\"0\">\n <span nzInputAddonAfter>px</span>\n </nz-input-number>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzTooltipTitle=\"不设置时,自动计算宽度,自动计算不合理时手动设置\">\n 操作列宽度\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"actionsFieldWidth\">\n <nz-input-number ngModel [ngModelOptions]=\"{standalone:true}\" style=\"width: 100%;\" [nzMin]=\"0\">\n <span nzInputAddonAfter>px</span>\n </nz-input-number>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n </nz-collapse-panel>\n <nz-collapse-panel nzHeader=\"选择器设置\">\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 行选择器\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"showCheckbox\">\n <nz-switch ngModel [ngModelOptions]=\"{standalone:true}\"></nz-switch>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n @if (formValue().showCheckbox?.funMode || formValue()?.showCheckbox?.originValue) {\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 行点击\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"checkeOnRowClick\">\n <nz-switch ngModel [ngModelOptions]=\"{standalone:true}\"></nz-switch>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 单选\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"singleCheck\">\n <nz-switch ngModel [ngModelOptions]=\"{standalone:true}\"></nz-switch>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n @if (formValue().singleCheck?.funMode || !formValue()?.singleCheck?.originValue) {\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired nzTooltipTitle=\"若当前表格在其他父表格的扩展行中,可联动父表格的勾选状态\">\n 联动勾选\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <nz-switch formControlName=\"checkboxLinkageForExpand\"></nz-switch>\n </nz-form-control>\n </nz-form-item>\n }\n <nz-form-item>\n <nz-form-label nzSpan=\"10\">\n 选中行\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"checkedKeys\" editTip=\"返回选中行的主键字段列表\">\n <ng-container [axisDynamic]=\"{component:'axis-components/input-json',inuse:true}\"\n [standalone]=\"true\" ngModel [ngModelOptions]=\"{standalone:true}\"></ng-container>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\">\n 选择器禁用脚本\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"disableCheckboxFn\" [onlyFun]=\"true\" [noListen]=\"true\"\n [scopes]=\"rowScopes()\">\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n }\n </nz-collapse-panel>\n <nz-collapse-panel nzHeader=\"数据统计\">\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 启用统计\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"showStatistic\">\n <nz-switch ngModel [ngModelOptions]=\"{standalone:true}\"></nz-switch>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n @if (formValue().showStatistic?.funMode || formValue()?.showStatistic?.originValue) {\n <nz-form-item>\n <nz-form-label nzSpan=\"10\">\n 统计标题\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"statisticTitle\">\n <input nz-input ngModel [ngModelOptions]=\"{standalone:true}\" />\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n }\n <!-- @if (!fg.value.useBackEndPaging) {\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 启用小计\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"showSubTotal\">\n <nz-switch ngModel [ngModelOptions]=\"{standalone:true}\"></nz-switch>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n @if (formValue().showSubTotal?.funMode || formValue()?.showSubTotal?.originValue) {\n <nz-form-item>\n <nz-form-label nzSpan=\"10\">\n 小计标题\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"subTotalTitle\">\n <input nz-input ngModel [ngModelOptions]=\"{standalone:true}\" />\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 小计分组级别\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"subTotalGroupLevel\">\n <nz-input-number style=\"width: 100%;\" ngModel [ngModelOptions]=\"{standalone:true}\" [nzMin]=\"1\">\n </nz-input-number>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n }\n } -->\n </nz-collapse-panel>\n <nz-collapse-panel nzHeader=\"分页设置\">\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 是否分页\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <nz-switch formControlName=\"showPagination\"></nz-switch>\n </nz-form-control>\n </nz-form-item>\n @if (!formValue()?.showPagination) {\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired nzTooltipTitle=\"不分页时,用于加载大量的数据\">\n 虚拟滚动\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <nz-switch formControlName=\"virtualScroll\"></nz-switch>\n (未实现)\n </nz-form-control>\n </nz-form-item>\n @if (formValue()?.virtualScroll) {\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired nzTooltipTitle=\"每一行的高度\">\n 计算行高\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <nz-input-number formControlName=\"virtualItemSize\"></nz-input-number>\n </nz-form-control>\n </nz-form-item>\n }\n }@else {\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 默认行数\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"pageSize\">\n <nz-input-number style=\"width: 100%;\" ngModel [ngModelOptions]=\"{standalone:true}\" [nzMin]=\"1\">\n </nz-input-number>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 行数修改器\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"showSizeChanger\">\n <nz-switch ngModel [ngModelOptions]=\"{standalone:true}\"></nz-switch>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n @if (formValue().showSizeChanger?.funMode || formValue()?.showSizeChanger?.originValue) {\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired nzTooltipTitle=\"用逗号分隔,例:10,20,50,100\">\n 页数可选值\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <input nz-input formControlName=\"pageSizeOptions\" placeholder=\"例:10,20,50,100\" />\n </nz-form-control>\n </nz-form-item>\n }\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 是否后端分页\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <nz-switch formControlName=\"useBackEndPaging\"></nz-switch>\n </nz-form-control>\n </nz-form-item>\n }\n </nz-collapse-panel>\n <!-- <nz-collapse-panel nzHeader=\"导入导出(未实现)\">\n <nz-form-item>\n <nz-form-label nzSpan=\"10\">\n 导出文件名\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"exportFileName\">\n <nz-input-group [nzSuffix]=\"'.'+formValue().exportBookType?.originValue\">\n <input nz-input ngModel [ngModelOptions]=\"{standalone:true}\" />\n </nz-input-group>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 文件类型\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field [noListen]=\"true\" formControlName=\"exportBookType\">\n <nz-select ngModel [ngModelOptions]=\"{standalone:true}\">\n <nz-option nzValue=\"xlsx\" nzLabel=\"xlsx\"></nz-option>\n <nz-option nzValue=\"xls\" nzLabel=\"xls\"></nz-option>\n </nz-select>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\">\n 分批导入限制\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"importLimitLength\">\n <nz-input-number style=\"width: 100%;\" ngModel [ngModelOptions]=\"{standalone:true}\"\n nzPlaceHolder=\"默认不限\"></nz-input-number>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\" nzRequired>\n 导入起始行\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"importStartLine\">\n <nz-input-number style=\"width: 100%;\" ngModel\n [ngModelOptions]=\"{standalone:true}\"></nz-input-number>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\">\n 导入模版文件名\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"importTemplateFileName\">\n <nz-input-group nzSuffix=\".xlsx\">\n <input nz-input ngModel [ngModelOptions]=\"{standalone:true}\" />\n </nz-input-group>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label nzSpan=\"10\">\n 示例数据\n </nz-form-label>\n <nz-form-control nzSpan=\"14\">\n <axis-fun-field formControlName=\"importExampleData\">\n <ng-container ngModel [ngModelOptions]=\"{standalone:true}\"\n [axisDynamic]=\"{component:'axis-components/input-json',inuse:true}\"\n [standalone]=\"true\"></ng-container>\n </axis-fun-field>\n </nz-form-control>\n </nz-form-item>\n </nz-collapse-panel> -->\n <axis-base-design-setting [fg]=\"fg\"></axis-base-design-setting>\n <axis-input-trigger formControlName=\"triggeEvents\" [eventDesc]=\"eventDesc()\"></axis-input-trigger>\n </nz-collapse>\n</form>","import { TableFieldSetting } from \"./table-field-setting/table-field-setting\";\nimport { TableFieldsMenu } from \"./table-fields-menu/table-fields-menu\";\nimport { TableSetting } from \"./table-setting/table-setting\";\nimport { DesignConfig, NextInfo, DesignBuildResult, OptionsNode, DesignBindElementsResult, SimpleMenu, copy, DataHandler, ScopeInfo } from 'ngx-axis-appforge/core';\n\nexport const Config: DesignConfig = {\n\n componentName: \"表格\",\n eventHandlerDescs: {\n setCustomExportData: {\n name: \"setCustomExportData\",\n title: \"设置自定义导出数据\",\n dataComponent: DataHandler,\n icon: \"export\",\n target: \"component\",\n targetComponent: \"axis-components/table\",\n },\n },\n buildOptionsNodes(nextInfo: NextInfo): DesignBuildResult {\n const newScopes: ScopeInfo[] = [\n {\n scopeId: nextInfo.currentObject.id + \".row\",\n parentScopeId: nextInfo.scopeId,\n scopeName: \"表格行\",\n ds: {\n row: nextInfo.currentObject.data?.[0] ?? \"示例数据\"\n }\n },\n ];\n const next: NextInfo[] = [];\n const fieldsChildren: OptionsNode[] = [];\n const fieldsNode = new OptionsNode({\n id: nextInfo.currentObject.id + \".fields\",\n parentId: nextInfo.currentObject.id,\n parentObj: nextInfo.currentObject,\n indexOfParentObj: \"fields\",\n scopeId: nextInfo.scopeId,\n rootOptions: nextInfo.currentObject.fields,\n contextMenu: TableFieldsMenu,\n name: `表格列[${nextInfo.currentObject.fields?.length ?? 0}]`,\n canDrop: true,\n dropType: \"axis-components/table/table-field\",\n dropObj: nextInfo.currentObject.fields,\n defaultDropIndex: nextInfo.currentObject.fields?.length ?? 0,\n childDirection: 'horizontal',\n icon: \"project\",\n onPaste: (node, replaceIdFun) => {\n let options = node.options;\n if (options.field) {\n options = copy(options, true);\n do {\n options.field = options.field + \"(copy)\";\n } while (fieldsNode.options.some((f: any) => f.field === options.field));\n if (options.child) {\n options.child = replaceIdFun(options.child);\n }\n fieldsNode.options.push(options);\n }\n },\n children: fieldsChildren\n });\n nextInfo.currentObject.fields?.forEach((f: any, i: number) => {\n let loopChildScope: ScopeInfo | undefined;\n if (f.loop) {\n loopChildScope = {\n scopeId: fieldsNode.id + \".\" + f.field + \".row.loop\",\n scopeName: \"列循环\",\n parentScopeId: nextInfo.currentObject.id + \".row\",\n ds: {\n loopRow: f.loopTarget?.[0] ?? \"示例数据\"\n },\n };\n newScopes.push(loopChildScope);\n }\n next.push({\n parentId: fieldsNode.id + \".\" + f.field,\n parentObject: f,\n indexOfParent: \"child\",\n scopeId: loopChildScope?.scopeId ?? nextInfo.currentObject.id + \".row\"\n });\n fieldsChildren.push(new OptionsNode({\n id: fieldsNode.id + \".\" + f.field,\n updateId: (options) => fieldsNode.id + \".\" + options.field,\n scopeId: fieldsNode.scopeId,\n parentId: fieldsNode.id,\n parentObj: fieldsNode.options,\n indexOfParentObj: i,\n rootOptions: f,\n name: `字段[${f.field}]`,\n icon: \"profile\",\n canSetting: true,\n settingType: TableFieldSetting,\n contextMenu: SimpleMenu,\n canDrag: true,\n dragType: \"axis-components/table/table-field\",\n canDrop: true,\n dropType: \"component\",\n dropObj: f,\n defaultDropIndex: \"child\",\n children: []\n }));\n });\n const rowActionsNode = new OptionsNode({\n id: nextInfo.currentObject.id + \".rowActions\",\n parentId: nextInfo.currentObject.id,\n parentObj: nextInfo.currentObject,\n indexOfParentObj: \"rowActions\",\n scopeId: nextInfo.scopeId,\n rootOptions: nextInfo.currentObject.rowActions,\n name: `操作列[${nextInfo.currentObject.rowActions?.length ?? 0}]`,\n contextMenu: SimpleMenu,\n canDrop: true,\n dropType: \"component\",\n dropObj: nextInfo.currentObject.rowActions,\n defaultDropIndex: nextInfo.currentObject.rowActions?.length ?? 0,\n childDirection: 'horizontal',\n icon: \"control\",\n children: []\n });\n next.push({\n parentId: rowActionsNode.id,\n parentObject: rowActionsNode.options,\n scopeId: nextInfo.currentObject.id + \".row\"\n });\n const expandNode = new OptionsNode({\n id: nextInfo.currentObject.id + \".expandRow\",\n parentId: nextInfo.currentObject.id,\n parentObj: nextInfo.currentObject,\n indexOfParentObj: \"expandRow\",\n scopeId: nextInfo.scopeId,\n rootOptions: nextInfo.currentObject,\n name: \"扩展行\",\n contextMenu: SimpleMenu,\n canDrop: true,\n dropType: \"component\",\n dropObj: nextInfo.currentObject,\n defaultDropIndex: \"expandRow\",\n icon: \"control\",\n children: []\n });\n next.push({\n parentId: expandNode.id,\n parentObject: nextInfo.currentObject,\n indexOfParent: \"expandRow\",\n scopeId: nextInfo.currentObject.id + \".row\"\n });\n return {\n treeNode: new OptionsNode({\n parentId: nextInfo.parentId,\n scopeId: nextInfo.scopeId,\n name: \"表格\",\n canSetting: true,\n canDrag: true,\n dragType: \"component\",\n parentObj: nextInfo.parentObject,\n indexOfParentObj: nextInfo.indexOfParent,\n rootOptions: nextInfo.currentObject,\n settingType: TableSetting,\n contextMenu: SimpleMenu,\n icon: \"table\",\n children: [\n fieldsNode,\n rowActionsNode,\n expandNode\n ],\n }),\n next: next,\n newScopes\n };\n },\n bindElementsOptionsNode(element: HTMLElement, options: any): DesignBindElementsResult {\n const fieldsParent = element.querySelector(\"thead>.ant-table-row\") as HTMLElement | undefined;\n const res: DesignBindElementsResult = {\n [options.id]: { element },\n [`${options.id}.fields`]: { element: fieldsParent, dropElement: fieldsParent },\n };\n (options.fields as any[] | undefined)?.forEach((f) => {\n const fieldElement = fieldsParent?.querySelector(`th[data-field=\"${f.field}\"]`) as HTMLElement | undefined;\n const fieldChildElement = element?.querySelector(`td[data-field=\"${f.field}\"]`) as HTMLElement | undefined;\n res[`${options.id}.fields.${f.field}`] = { element: fieldElement, dropElement: fieldChildElement }\n });\n const rowActionsElement = fieldsParent?.querySelector(\"th[data-rowactions]\") as HTMLElement | undefined;\n const rowActionsChildElement = element.querySelector(\"td>div[data-rowactions]\") as HTMLElement | undefined;\n res[`${options.id}.rowActions`] = { element: rowActionsElement, dropElement: rowActionsChildElement };\n const expandRowElement = element.querySelector(\"tr[data-expandrow]\") as HTMLElement | undefined;\n res[`${options.id}.expandRow`] = { element: expandRowElement, dropElement: expandRowElement };\n return res;\n },\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './config';\n"],"names":["i1","i2","i4","i3","i5","i6","i7"],"mappings":"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"}
|
|
@@ -122,7 +122,7 @@ class TableService {
|
|
|
122
122
|
getRow;
|
|
123
123
|
cacheFilterItem;
|
|
124
124
|
groupAbleFields = computed(() => {
|
|
125
|
-
const fields = this.
|
|
125
|
+
const fields = this.displayFields().filter(f => f.groupAble());
|
|
126
126
|
fields.sort((a, b) => (a.groupLevel() ?? 0) - (b.groupLevel() ?? 0));
|
|
127
127
|
return fields;
|
|
128
128
|
}, ...(ngDevMode ? [{ debugName: "groupAbleFields" }] : []));
|
|
@@ -196,9 +196,12 @@ class TableService {
|
|
|
196
196
|
});
|
|
197
197
|
data.sort((a, b) => {
|
|
198
198
|
for (const f of sortFields) {
|
|
199
|
-
const
|
|
200
|
-
if (
|
|
201
|
-
|
|
199
|
+
const sortFn = this.fieldsControlsMap()[f.field()]?.sortFn;
|
|
200
|
+
if (typeof sortFn == "function") {
|
|
201
|
+
const res = sortFn(a, b);
|
|
202
|
+
if (res != 0) {
|
|
203
|
+
return res * (f.sortOrder() == "descend" ? -1 : 1);
|
|
204
|
+
}
|
|
202
205
|
}
|
|
203
206
|
}
|
|
204
207
|
return 0;
|
|
@@ -231,13 +234,6 @@ class TableService {
|
|
|
231
234
|
}
|
|
232
235
|
}
|
|
233
236
|
}
|
|
234
|
-
for (let group of rowsGroupMap.values()) {
|
|
235
|
-
for (let [value, indexes] of group) {
|
|
236
|
-
if (indexes.length == 1) {
|
|
237
|
-
group.delete(value);
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
237
|
return rowsGroupMap;
|
|
242
238
|
}
|
|
243
239
|
fieldSortAble(f) {
|
|
@@ -248,7 +244,7 @@ class TableService {
|
|
|
248
244
|
}
|
|
249
245
|
fieldSortPriority(f) {
|
|
250
246
|
if (f.groupAble()) {
|
|
251
|
-
return (f.groupLevel() ?? 0);
|
|
247
|
+
return (f.groupLevel() ?? 0) * -1;
|
|
252
248
|
}
|
|
253
249
|
if (f.sortAble()) {
|
|
254
250
|
let p = 0;
|
|
@@ -268,7 +264,7 @@ class TableService {
|
|
|
268
264
|
if (!topGroupField) {
|
|
269
265
|
return false;
|
|
270
266
|
}
|
|
271
|
-
const indexs = this.rowsGroupMap().get(topGroupField.field())?.get(row[topGroupField.field()]);
|
|
267
|
+
const indexs = this.rowsGroupMap().get(topGroupField.field())?.get(row[topGroupField.field()]?.toString());
|
|
272
268
|
if (indexs) {
|
|
273
269
|
return indexs[indexs.length - 1] == index;
|
|
274
270
|
}
|
|
@@ -276,7 +272,7 @@ class TableService {
|
|
|
276
272
|
}
|
|
277
273
|
rowspan(f, index, pageIndex, pageSize, row) {
|
|
278
274
|
if (f.groupAble()) {
|
|
279
|
-
const value = this.groupAbleFields().slice(0, this.groupAbleFields().findIndex(
|
|
275
|
+
const value = this.groupAbleFields().slice(0, this.groupAbleFields().findIndex(_f => _f.field() == f.field()) + 1).map(_f => row[_f.field()]).join("@");
|
|
280
276
|
const indexs = this.rowsGroupMap().get(f.field())?.get(value);
|
|
281
277
|
if (indexs) {
|
|
282
278
|
const i = indexs.indexOf(index + (pageIndex - 1) * pageSize);
|