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.
@@ -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.fields().filter(f => f.groupAble());
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 res = this.fieldsControlsMap()[f.field()]?.sortFn(a, b);
200
- if (res != 0) {
201
- return res * (f.sortOrder() == "descend" ? -1 : 1);
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(f => f.field() == f.field()) + 1).map(f => row[f.field()]).join("@");
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);