cloud-web-corejs 1.0.281 → 1.1.0-dev.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +6 -2
- package/src/components/VabUpload/image-viewer.vue +442 -442
- package/src/components/VabUpload/index.vue +44 -2
- package/src/components/VabUpload/mixins.js +126 -19
- package/src/components/VabUpload/view.vue +247 -209
- package/src/components/baseTabs/mixins.js +181 -181
- package/src/components/bizTab/BizBillActions.vue +129 -0
- package/src/components/bizTab/BizTabListPage.vue +391 -0
- package/src/components/bizTab/README.md +378 -0
- package/src/components/bizTab/billTableUtil.js +48 -0
- package/src/components/bizTab/billValidators.js +136 -0
- package/src/components/bizTab/bizBillDetailMixin.js +705 -0
- package/src/components/bizTab/index.js +24 -0
- package/src/components/excelExport/exportFieldDialog.vue +23 -12
- package/src/components/excelExport/exportItemConfigUtil.js +30 -0
- package/src/components/excelExport/mixins.js +3 -3
- package/src/components/mobile/statusTag/mixins.js +1 -61
- package/src/components/mobile/wf/content.vue +1662 -1556
- package/src/components/mobile/wf/mixins/wfModifyDialogMixin.js +8 -6
- package/src/components/table/config.js +78 -78
- package/src/components/table/index.js +1276 -1276
- package/src/components/table/plugins/cell-area/index.js +1055 -0
- package/src/components/table/plugins/cell-area/index.scss +77 -0
- package/src/components/table/plugins/cell-area/util.js +224 -0
- package/src/components/table/tableForm.vue +330 -330
- package/src/components/table/tableFormMixin.js +318 -318
- package/src/components/table/vxeFilter/index.js +163 -163
- package/src/components/table/vxeFilter/mixin.js +316 -316
- package/src/components/wf/content.vue +1188 -1188
- package/src/components/wf/wf.js +40 -20
- package/src/components/wf/wfActionDropdown.vue +1 -1
- package/src/components/wf/wfActionItems.js +1 -1
- package/src/components/xform/docs/2026-08 xform H5 P0 /345/256/236/347/216/260/350/247/204/346/240/274.md" +528 -0
- package/src/components/xform/docs/2026-08 xform H5 P1 /345/256/236/347/216/260/350/247/204/346/240/274.md" +412 -0
- package/src/components/xform/docs/2026-08 xform H5 P2 /345/256/236/347/216/260/350/247/204/346/240/274.md" +287 -0
- package/src/components/xform/docs/2026-08 xform /347/247/273/345/212/250/347/253/257/345/270/203/345/261/200/345/257/271/351/275/220 bill_setting /346/226/271/346/241/210.md" +400 -0
- package/src/components/xform/form-designer/designer.js +15 -0
- package/src/components/xform/form-designer/form-widget/container-widget/data-table-widget.vue +269 -269
- package/src/components/xform/form-designer/form-widget/container-widget/detail-temp-widget.vue +132 -0
- package/src/components/xform/form-designer/form-widget/container-widget/detail-widget.vue +250 -250
- package/src/components/xform/form-designer/form-widget/dialog/fileReferenceDialog.vue +319 -320
- package/src/components/xform/form-designer/form-widget/dialog/formDialog.vue +365 -365
- package/src/components/xform/form-designer/form-widget/dialog/searchFormDialog.vue +554 -555
- package/src/components/xform/form-designer/form-widget/dialog/vabSearchDialog.vue +409 -409
- package/src/components/xform/form-designer/form-widget/field-widget/a-link-widget.vue +150 -132
- package/src/components/xform/form-designer/form-widget/field-widget/date-range-widget.vue +114 -114
- package/src/components/xform/form-designer/form-widget/field-widget/date-widget.vue +154 -154
- package/src/components/xform/form-designer/form-widget/field-widget/form-item-wrapper.vue +47 -1
- package/src/components/xform/form-designer/form-widget/field-widget/mixins/date-limit-mixin.js +178 -178
- package/src/components/xform/form-designer/form-widget/field-widget/mixins/time-limit-mixin.js +77 -77
- package/src/components/xform/form-designer/form-widget/field-widget/select-export-item-button-widget.vue +6 -0
- package/src/components/xform/form-designer/form-widget/field-widget/select-widget.vue +139 -139
- package/src/components/xform/form-designer/form-widget/field-widget/time-range-widget.vue +106 -106
- package/src/components/xform/form-designer/form-widget/field-widget/time-widget.vue +134 -134
- package/src/components/xform/form-designer/form-widget/field-widget/vabUpload-widget.vue +1 -0
- package/src/components/xform/form-designer/setting-panel/form-setting.vue +39 -39
- package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/data-table-editor.vue +10 -10
- package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/exportItemColumns-dialog.vue +438 -432
- package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/table-column-dialog.vue +2103 -2103
- package/src/components/xform/form-designer/setting-panel/property-editor/container-detail/detail-temp-edito.vue +90 -0
- package/src/components/xform/form-designer/setting-panel/property-editor/container-grid/gutter-editor.vue +82 -82
- package/src/components/xform/form-designer/setting-panel/property-editor/container-list-h5/list-h5-editor.vue +19 -5
- package/src/components/xform/form-designer/setting-panel/property-editor/container-table/table-dynamicField-editor.vue +8 -8
- package/src/components/xform/form-designer/setting-panel/property-editor/dropdownFlag-editor.vue +137 -137
- package/src/components/xform/form-designer/setting-panel/property-editor/field-button/search-dialog-event-editor.vue +237 -237
- package/src/components/xform/form-designer/setting-panel/property-editor/field-date/date-defaultValue-editor.vue +43 -43
- package/src/components/xform/form-designer/setting-panel/property-editor/field-date-range/date-range-defaultValue-editor.vue +43 -43
- package/src/components/xform/form-designer/setting-panel/property-editor/field-import-button/import2-button-editor.vue +96 -96
- package/src/components/xform/form-designer/setting-panel/property-editor/field-table-export-button/select-export-item-button-editor.vue +51 -0
- package/src/components/xform/form-designer/setting-panel/property-editor/field-time/time-defaultValue-editor.vue +42 -42
- package/src/components/xform/form-designer/setting-panel/property-editor/field-time-range/time-range-defaultValue-editor.vue +43 -43
- package/src/components/xform/form-designer/setting-panel/property-editor/formScriptEnabled-editor.vue +158 -158
- package/src/components/xform/form-designer/setting-panel/property-editor/h5Span-editor.vue +51 -0
- package/src/components/xform/form-designer/setting-panel/property-editor/itemStyle-editor.vue +39 -0
- package/src/components/xform/form-designer/setting-panel/property-editor/name-editor.vue +188 -188
- package/src/components/xform/form-designer/setting-panel/property-editor/styleTempClass-editor.vue +51 -0
- package/src/components/xform/form-designer/setting-panel/property-editor/textFlag-editor.vue +347 -347
- package/src/components/xform/form-designer/setting-panel/propertyRegister.js +4 -0
- package/src/components/xform/form-designer/widget-panel/widgetsConfig.js +59 -3
- package/src/components/xform/form-render/container-item/data-table-mixin.js +151 -93
- package/src/components/xform/form-render/container-item/detail-h5-item.vue +183 -32
- package/src/components/xform/form-render/container-item/detail-temp-item.vue +110 -0
- package/src/components/xform/form-render/container-item/h5-card-pane-item.vue +160 -140
- package/src/components/xform/form-render/container-item/list-h5-item.vue +1688 -1700
- package/src/components/xform/form-render/index.vue +153 -147
- package/src/components/xform/form-render/indexMixin.js +12 -0
- package/src/components/xform/lang/en-US.js +10 -0
- package/src/components/xform/lang/zh-CN.js +12 -0
- package/src/components/xform/mixins/defaultHandle.js +707 -707
- package/src/components/xform/styles/h5.scss +1992 -0
- package/src/components/xform/utils/textMaskUtil.js +182 -179
- package/src/components/xform/utils/treeTableUtil.js +1292 -1265
- package/src/components/xform/utils/util.js +56 -11
- package/src/index.js +9 -4
- package/src/layout/components/Sidebar/default.vue +1 -1
- package/src/layout/components/extractedCode/viewDialog.vue +7 -7
- package/src/router/index.js +21 -0
- package/src/router/modules/customer.js +71 -14
- package/src/store/modules/permission.js +17 -18
- package/src/utils/pdfUtil.js +429 -429
- package/src/utils/resolveViewComponent.js +142 -16
- package/src/views/bd/project/branch/bd_branch/edit.vue +145 -0
- package/src/views/bd/project/branch/bd_branch/list.vue +72 -0
- package/src/views/bd/project/branch/bd_branch/menuKindDialog.vue +106 -0
- package/src/views/bd/project/branch/bd_branch/mixins/edit.js +189 -0
- package/src/views/bd/project/branch/bd_branch/mixins/list.js +124 -0
- package/src/views/bd/project/branch/bd_branch/mixins/menuKindDialog.js +85 -0
- package/src/views/bd/project/branch/form_script/list.vue +31 -0
- package/src/views/bd/project/branch/form_template/list.vue +30 -0
- package/src/views/bd/project/branch/menu_kind/list.vue +31 -0
- package/src/views/bd/project/common/form_script/list.vue +16 -0
- package/src/views/bd/project/common/form_template/list.vue +15 -0
- package/src/views/bd/project/common/menu_kind/list.vue +15 -0
- package/src/views/bd/project/core/branchContext.js +100 -0
- package/src/views/bd/project/core/branchPage.js +78 -0
- package/src/views/bd/project/core/branchPageWrap.vue +225 -0
- package/src/views/bd/project/core/branchScope.js +44 -0
- package/src/views/bd/project/core/branchSearchPage.js +285 -0
- package/src/views/bd/project/core/branchSelect.vue +85 -0
- package/src/views/bd/project/core/branchTreeBar.vue +81 -0
- package/src/views/bd/project/core/httpBranchPatch.js +58 -0
- package/src/views/bd/project/datatable/menu_kind/list.vue +15 -0
- package/src/views/bd/project/datatable/table_model/list.vue +15 -0
- package/src/views/bd/setting/bd_company_env/dialog.vue +174 -174
- package/src/views/bd/setting/table_model/edit.vue +1066 -1066
- package/src/views/bd/setting/table_model/mixins/edit.js +1455 -1455
- package/src/views/bd/setting/table_model/mixins/zdDialog.js +148 -148
- package/src/views/demo/bizTab/bill/billConfig.js +41 -0
- package/src/views/demo/bizTab/bill/detail.vue +436 -0
- package/src/views/demo/bizTab/bill/list.vue +288 -0
- package/src/views/demo/bizTab/bill/productDialog.vue +176 -0
- package/src/views/demo/bizTab/simple/billApi.js +123 -0
- package/src/views/demo/bizTab/simple/detail.vue +407 -0
- package/src/views/demo/bizTab/simple/list.vue +217 -0
- package/src/views/demo/bizTab/standalone/index.vue +121 -0
- package/src/views/demo/bizTab/wf/billConfig.js +44 -0
- package/src/views/demo/bizTab/wf/detail.vue +661 -0
- package/src/views/demo/bizTab/wf/list.vue +242 -0
- package/src/views/support/form-dialog-demo/demoPickerDialog.vue +72 -0
- package/src/views/support/form-dialog-demo/index.vue +537 -0
- package/src/views/user/file_view_ins/list.vue +3 -3
- package/src/views/user/home/default.vue +1 -1
- package/src/views/user/home/default2.vue +1 -1
- package/src/views/user/home/index.vue +8 -6
- package/src/views/user/home/wjl/content.vue +1569 -0
- package/src/views/user/notify_message/dialog.vue +7 -5
- package/src/views/user/outLink/cc_form_view.vue +188 -0
- package/src/views/user/outLink/form_view.vue +2 -2
- package/src/views/user/outLink/index.vue +4 -4
- package/src/views/user/outLink/view.vue +3 -3
- package/src/views/user/role/edit.vue +632 -632
- package/src/views/user/role/list.vue +260 -260
- package/src/views/user/wf/iframe/index.vue +3 -3
- package/src/views/user/wf/iframe/index2.vue +3 -3
- package/src/views/user/wf/wf_manage/list.vue +1112 -1116
- package/src/views/user/wf/wf_manage/list2.vue +9 -13
- package/src/views/user/wf/wf_manage/wfContentDialog.vue +8 -5
- package/src/components/xform/form-designer/form-widget/field-widget/dropdown-menu-widget.vue +0 -106
- package/src/components/xform/form-designer/form-widget/field-widget/tableexportbuttonwidget.vue +0 -99
- package/src/components/xform/form-render/container-item/list-h5-item2.vue +0 -1340
- package/src/utils/wf.js +0 -766
|
@@ -27,6 +27,7 @@ const COMMON_PROPERTIES = {
|
|
|
27
27
|
border: "border-editor",
|
|
28
28
|
labelWidth: "labelWidth-editor",
|
|
29
29
|
labelHidden: "labelHidden-editor",
|
|
30
|
+
h5Span: "h5Span-editor",
|
|
30
31
|
rows: "rows-editor",
|
|
31
32
|
required: "required-editor",
|
|
32
33
|
// 'requiredHint': 'requiredHint-editor',
|
|
@@ -71,6 +72,7 @@ const COMMON_PROPERTIES = {
|
|
|
71
72
|
fileTypes: "fileTypes-editor",
|
|
72
73
|
customClass: "customClass-editor",
|
|
73
74
|
styleTitClass: "styleTitClass-editor",
|
|
75
|
+
styleTempClass: "styleTempClass-editor",
|
|
74
76
|
styleTableClass: "styleTableClass-editor",
|
|
75
77
|
iconClass: "iconClass-editor",
|
|
76
78
|
echartHeight: "echartHeight-editor",
|
|
@@ -108,6 +110,7 @@ const COMMON_PROPERTIES = {
|
|
|
108
110
|
pull: "pull-editor",
|
|
109
111
|
height: "height-editor",
|
|
110
112
|
detailContainer: "detail-editor",
|
|
113
|
+
detailTempContainer: "detail-temp-editor",
|
|
111
114
|
detailPlainContainer: "detail-plain-editor",
|
|
112
115
|
detailPaneContainer: "detail-pane-editor",
|
|
113
116
|
vabSearchField: "vabSearchField-editor",
|
|
@@ -121,6 +124,7 @@ const COMMON_PROPERTIES = {
|
|
|
121
124
|
detailH5Container: "detail-h5-editor",
|
|
122
125
|
h5Card: "h5-card-editor",
|
|
123
126
|
listH5: "list-h5-editor",
|
|
127
|
+
itemStyle: "itemStyle-editor",
|
|
124
128
|
formScriptEnabled: "formScriptEnabled-editor",
|
|
125
129
|
textFlag: "textFlag-editor",
|
|
126
130
|
showRuleFlag: "showRuleFlag-editor",
|
|
@@ -445,6 +445,26 @@ export const containers = [
|
|
|
445
445
|
customClass: ""
|
|
446
446
|
}
|
|
447
447
|
},*/
|
|
448
|
+
{
|
|
449
|
+
type: "detail-temp",
|
|
450
|
+
category: "container",
|
|
451
|
+
icon: "form",
|
|
452
|
+
commonFlag: !0,
|
|
453
|
+
layoutType: "PC",
|
|
454
|
+
panes: [],
|
|
455
|
+
widgetList: [],
|
|
456
|
+
options: {
|
|
457
|
+
name: "",
|
|
458
|
+
hidden: !1,
|
|
459
|
+
label: "模板模块",
|
|
460
|
+
detailTempContainer: true,
|
|
461
|
+
styleTempClass: 'd-temp-1',
|
|
462
|
+
customClass: "",
|
|
463
|
+
wfEnabled: false,
|
|
464
|
+
onCreated: "",
|
|
465
|
+
onMounted: "",
|
|
466
|
+
},
|
|
467
|
+
},
|
|
448
468
|
{
|
|
449
469
|
type: "detail",
|
|
450
470
|
category: "container",
|
|
@@ -548,6 +568,7 @@ export const containers = [
|
|
|
548
568
|
detailH5Container: true,
|
|
549
569
|
// colHeight: null,
|
|
550
570
|
customClass: "",
|
|
571
|
+
// 底栏平铺个数不做成选项,写死在 detail-h5-item 的 H5_BOTTOM_MAX_BUTTONS(=3)
|
|
551
572
|
wfEnabled: false,
|
|
552
573
|
onCreated: "",
|
|
553
574
|
onMounted: "",
|
|
@@ -573,6 +594,8 @@ export const containers = [
|
|
|
573
594
|
listH5: true,
|
|
574
595
|
// colHeight: null,
|
|
575
596
|
customClass: "",
|
|
597
|
+
// 明细行样式:'plain'=原有朴素列表(默认,保持存量表现);'card'=卡片皮肤
|
|
598
|
+
itemStyle: "plain",
|
|
576
599
|
isQueryTable: false,
|
|
577
600
|
|
|
578
601
|
accessUrl: null,
|
|
@@ -3318,6 +3341,10 @@ export const advancedFields = [
|
|
|
3318
3341
|
showImageAtTable: false,
|
|
3319
3342
|
selectExportItemFlag: 1,
|
|
3320
3343
|
exportItemConditionEnabled: !1,
|
|
3344
|
+
// 按钮级明细导出配置:三项各自独立,留空的那项沿用数据表格属性上维护的
|
|
3345
|
+
exportItemColumns: [],
|
|
3346
|
+
exportItemScriptCode: null,
|
|
3347
|
+
exportItemParam: "",
|
|
3321
3348
|
|
|
3322
3349
|
onCreated: "",
|
|
3323
3350
|
onMounted: "",
|
|
@@ -4544,6 +4571,7 @@ export const widgetPanelOrder = {
|
|
|
4544
4571
|
"detail-tabs",
|
|
4545
4572
|
"detail-plain",
|
|
4546
4573
|
"detail-pane",
|
|
4574
|
+
"detail-temp",
|
|
4547
4575
|
"tree-pane",
|
|
4548
4576
|
"tree",
|
|
4549
4577
|
"vf-dialog",
|
|
@@ -4625,18 +4653,46 @@ export const widgetPanelOrder = {
|
|
|
4625
4653
|
],
|
|
4626
4654
|
};
|
|
4627
4655
|
|
|
4656
|
+
/**
|
|
4657
|
+
* H5 版式:所有表单字段统一具备 h5Span(整宽/半宽)。
|
|
4658
|
+
*
|
|
4659
|
+
* 为什么用后处理而不是在 42 个字段定义里逐个展开 ...defaultH5Config:
|
|
4660
|
+
* 1) 一处逻辑覆盖全部字段,不会漏;
|
|
4661
|
+
* 2) 顺带覆盖 extension 通过 add*Schema 动态注册的组件;
|
|
4662
|
+
* 3) 用函数调用而非展开运算符,不踩本文件头部注释里那个 Babel TDZ 的坑。
|
|
4663
|
+
*
|
|
4664
|
+
* 属性面板显不显示「H5 占宽」由 designer.hasConfig 决定,它查的是**原型 widget
|
|
4665
|
+
* 的 options**(不是实例),所以必须在这里写进原型。
|
|
4666
|
+
* 详见 docs/2026-08 xform H5 P0 实现规格.md §3.1。
|
|
4667
|
+
*/
|
|
4668
|
+
export const defaultH5Config = {
|
|
4669
|
+
h5Span: "full", // 'full' | 'half'
|
|
4670
|
+
};
|
|
4671
|
+
|
|
4672
|
+
function applyH5FieldDefaults(schema) {
|
|
4673
|
+
if (!schema || !schema.formItemFlag || !schema.options) return schema;
|
|
4674
|
+
if (!Object.prototype.hasOwnProperty.call(schema.options, "h5Span")) {
|
|
4675
|
+
Object.assign(schema.options, defaultH5Config);
|
|
4676
|
+
}
|
|
4677
|
+
return schema;
|
|
4678
|
+
}
|
|
4679
|
+
|
|
4680
|
+
[basicFields, advancedFields, businessFields, customFields].forEach((list) =>
|
|
4681
|
+
list.forEach(applyH5FieldDefaults)
|
|
4682
|
+
);
|
|
4683
|
+
|
|
4628
4684
|
export function addContainerWidgetSchema(containerSchema) {
|
|
4629
4685
|
containers.push(containerSchema);
|
|
4630
4686
|
}
|
|
4631
4687
|
|
|
4632
4688
|
export function addBasicFieldSchema(fieldSchema) {
|
|
4633
|
-
basicFields.push(fieldSchema);
|
|
4689
|
+
basicFields.push(applyH5FieldDefaults(fieldSchema));
|
|
4634
4690
|
}
|
|
4635
4691
|
|
|
4636
4692
|
export function addAdvancedFieldSchema(fieldSchema) {
|
|
4637
|
-
advancedFields.push(fieldSchema);
|
|
4693
|
+
advancedFields.push(applyH5FieldDefaults(fieldSchema));
|
|
4638
4694
|
}
|
|
4639
4695
|
|
|
4640
4696
|
export function addCustomWidgetSchema(widgetSchema) {
|
|
4641
|
-
customFields.push(widgetSchema);
|
|
4697
|
+
customFields.push(applyH5FieldDefaults(widgetSchema));
|
|
4642
4698
|
}
|
|
@@ -68,6 +68,7 @@ import {
|
|
|
68
68
|
isTemporaryTreeKey,
|
|
69
69
|
syncTreeKeyReferences,
|
|
70
70
|
sanitizeTreeRow,
|
|
71
|
+
stripTreeContainers,
|
|
71
72
|
} from "../../utils/treeTableUtil";
|
|
72
73
|
import { tableTreeMixins } from "../../../../mixins/tableTree/index.js";
|
|
73
74
|
|
|
@@ -2442,76 +2443,7 @@ modules = {
|
|
|
2442
2443
|
};
|
|
2443
2444
|
}
|
|
2444
2445
|
|
|
2445
|
-
let exportItemConfig =
|
|
2446
|
-
if (
|
|
2447
|
-
this.widget.options.exportItemColumns &&
|
|
2448
|
-
this.widget.options.exportItemColumns.length > 0
|
|
2449
|
-
) {
|
|
2450
|
-
let formatKeys = [
|
|
2451
|
-
"d1",
|
|
2452
|
-
"d2",
|
|
2453
|
-
"d3",
|
|
2454
|
-
"d4",
|
|
2455
|
-
"d5",
|
|
2456
|
-
"n1",
|
|
2457
|
-
"n2",
|
|
2458
|
-
"n3",
|
|
2459
|
-
"n4",
|
|
2460
|
-
"n5",
|
|
2461
|
-
"n6",
|
|
2462
|
-
"n7",
|
|
2463
|
-
];
|
|
2464
|
-
let exportItemColumns = this.widget.options.exportItemColumns.map(
|
|
2465
|
-
(item) => {
|
|
2466
|
-
let columnSlots = null;
|
|
2467
|
-
let columnParams = {};
|
|
2468
|
-
if (item.formatS === "render") {
|
|
2469
|
-
let r = item.render
|
|
2470
|
-
? new Function("params", "h", item.render)
|
|
2471
|
-
: null;
|
|
2472
|
-
columnSlots = {
|
|
2473
|
-
default: (params, h) => {
|
|
2474
|
-
return r ? r.call(this, params, h) : "";
|
|
2475
|
-
},
|
|
2476
|
-
};
|
|
2477
|
-
} else if (formatKeys.includes(item.formatS)) {
|
|
2478
|
-
columnSlots = {
|
|
2479
|
-
default: (params, h) => {
|
|
2480
|
-
let cellValue = params.row[params.column.field];
|
|
2481
|
-
return this.getFormatterValue(
|
|
2482
|
-
cellValue,
|
|
2483
|
-
item.formatS,
|
|
2484
|
-
item.utcTransformEnabled
|
|
2485
|
-
);
|
|
2486
|
-
},
|
|
2487
|
-
};
|
|
2488
|
-
}
|
|
2489
|
-
if (item.exportType) {
|
|
2490
|
-
columnParams.exportType = item.exportType;
|
|
2491
|
-
}
|
|
2492
|
-
return {
|
|
2493
|
-
id: item.id,
|
|
2494
|
-
title: item.title,
|
|
2495
|
-
field: item.field,
|
|
2496
|
-
params: columnParams,
|
|
2497
|
-
slots: columnSlots,
|
|
2498
|
-
};
|
|
2499
|
-
}
|
|
2500
|
-
);
|
|
2501
|
-
exportItemConfig = {
|
|
2502
|
-
scriptCode:
|
|
2503
|
-
this.widget.options.exportItemScriptCode ||
|
|
2504
|
-
this.widget.options.formScriptCode,
|
|
2505
|
-
columns: exportItemColumns,
|
|
2506
|
-
param: () => {
|
|
2507
|
-
if (this.widget.options.exportItemParam) {
|
|
2508
|
-
return this.handleCustomParam(
|
|
2509
|
-
this.widget.options.exportItemParam
|
|
2510
|
-
);
|
|
2511
|
-
}
|
|
2512
|
-
},
|
|
2513
|
-
};
|
|
2514
|
-
}
|
|
2446
|
+
let exportItemConfig = this.buildExportItemConfig();
|
|
2515
2447
|
let rowConfig = {};
|
|
2516
2448
|
if (this.widget.options.tableRowHeight) {
|
|
2517
2449
|
rowConfig.height = this.widget.options.tableRowHeight;
|
|
@@ -3228,7 +3160,9 @@ modules = {
|
|
|
3228
3160
|
if (isItemExport(exportType)) {
|
|
3229
3161
|
let $grid = this.getGridTable();
|
|
3230
3162
|
let originOption = $grid.params.originOption;
|
|
3231
|
-
|
|
3163
|
+
// 导出按钮上单独维护了明细列时,配置随导出参数下发,优先于表格属性那套
|
|
3164
|
+
let btnConfig = customParam?.exportParam?.exportItemConfig;
|
|
3165
|
+
let exportItemConfig = btnConfig || originOption.exportItemConfig || {};
|
|
3232
3166
|
if (exportItemConfig.scriptCode) {
|
|
3233
3167
|
scriptCode = exportItemConfig.scriptCode;
|
|
3234
3168
|
}
|
|
@@ -3339,30 +3273,134 @@ modules = {
|
|
|
3339
3273
|
let tableRef = this.widget.id;
|
|
3340
3274
|
return tableRef;
|
|
3341
3275
|
},
|
|
3342
|
-
/**
|
|
3343
|
-
|
|
3276
|
+
/**
|
|
3277
|
+
* 导出前按脱敏规则剔除列,实现见 textMaskUtil.markMaskedExportColumns。
|
|
3278
|
+
* @param {Array} [exportItemColumns] 本次明细导出实际使用的列;不传则取表格属性上配的那套。
|
|
3279
|
+
*/
|
|
3280
|
+
markMaskedColumnsForExport(exportItemColumns) {
|
|
3344
3281
|
markMaskedExportColumns(
|
|
3345
3282
|
this.getGridTable(),
|
|
3346
3283
|
buildTextMaskContext(
|
|
3347
3284
|
this.getFormRef(),
|
|
3348
3285
|
this.$store.getters.companyCode
|
|
3349
|
-
)
|
|
3286
|
+
),
|
|
3287
|
+
exportItemColumns
|
|
3350
3288
|
);
|
|
3351
3289
|
},
|
|
3290
|
+
/**
|
|
3291
|
+
* 明细导出列配置 → vxe 列:formatS/render 转成渲染插槽,exportType 落到 params。
|
|
3292
|
+
* @param {Array} rawColumns 设计器维护的明细导出列。
|
|
3293
|
+
* @returns {Array} vxe 列定义。
|
|
3294
|
+
*/
|
|
3295
|
+
buildExportItemColumns(rawColumns) {
|
|
3296
|
+
let formatKeys = [
|
|
3297
|
+
"d1",
|
|
3298
|
+
"d2",
|
|
3299
|
+
"d3",
|
|
3300
|
+
"d4",
|
|
3301
|
+
"d5",
|
|
3302
|
+
"n1",
|
|
3303
|
+
"n2",
|
|
3304
|
+
"n3",
|
|
3305
|
+
"n4",
|
|
3306
|
+
"n5",
|
|
3307
|
+
"n6",
|
|
3308
|
+
"n7",
|
|
3309
|
+
];
|
|
3310
|
+
return rawColumns.map((item) => {
|
|
3311
|
+
let columnSlots = null;
|
|
3312
|
+
let columnParams = {};
|
|
3313
|
+
if (item.formatS === "render") {
|
|
3314
|
+
let r = item.render ? new Function("params", "h", item.render) : null;
|
|
3315
|
+
columnSlots = {
|
|
3316
|
+
default: (params, h) => {
|
|
3317
|
+
return r ? r.call(this, params, h) : "";
|
|
3318
|
+
},
|
|
3319
|
+
};
|
|
3320
|
+
} else if (formatKeys.includes(item.formatS)) {
|
|
3321
|
+
columnSlots = {
|
|
3322
|
+
default: (params, h) => {
|
|
3323
|
+
let cellValue = params.row[params.column.field];
|
|
3324
|
+
return this.getFormatterValue(
|
|
3325
|
+
cellValue,
|
|
3326
|
+
item.formatS,
|
|
3327
|
+
item.utcTransformEnabled
|
|
3328
|
+
);
|
|
3329
|
+
},
|
|
3330
|
+
};
|
|
3331
|
+
}
|
|
3332
|
+
if (item.exportType) {
|
|
3333
|
+
columnParams.exportType = item.exportType;
|
|
3334
|
+
}
|
|
3335
|
+
return {
|
|
3336
|
+
id: item.id,
|
|
3337
|
+
title: item.title,
|
|
3338
|
+
field: item.field,
|
|
3339
|
+
params: columnParams,
|
|
3340
|
+
slots: columnSlots,
|
|
3341
|
+
};
|
|
3342
|
+
});
|
|
3343
|
+
},
|
|
3344
|
+
/**
|
|
3345
|
+
* 组装一份明细导出配置。导出列、脚本编码、自定义导出参数三项都可以由导出按钮单独维护,
|
|
3346
|
+
* 各自独立生效:按钮留空的那一项回落到表格属性,三项都留空就是表格属性上原来那套。
|
|
3347
|
+
* @param {Object} [overrides] 按钮级配置。
|
|
3348
|
+
* @param {Array} [overrides.columns] 明细导出列。
|
|
3349
|
+
* @param {String} [overrides.scriptCode] 明细导出脚本编码。
|
|
3350
|
+
* @param {String} [overrides.paramScript] 明细导出查询参数脚本。
|
|
3351
|
+
* @returns {Object|null} 两处都没维护列时返回 null。
|
|
3352
|
+
*/
|
|
3353
|
+
buildExportItemConfig(overrides) {
|
|
3354
|
+
let options = this.widget.options;
|
|
3355
|
+
let o = overrides || {};
|
|
3356
|
+
let hasColumns = o.columns && o.columns.length;
|
|
3357
|
+
let columns = hasColumns ? o.columns : options.exportItemColumns;
|
|
3358
|
+
if (!columns || !columns.length) return null;
|
|
3359
|
+
let scriptCode = o.scriptCode || options.exportItemScriptCode;
|
|
3360
|
+
let paramScript = o.paramScript || options.exportItemParam;
|
|
3361
|
+
return {
|
|
3362
|
+
scriptCode: scriptCode || options.formScriptCode,
|
|
3363
|
+
columns: this.buildExportItemColumns(columns),
|
|
3364
|
+
// 取数参数脚本与表格上其它脚本一样走 handleCustomEvent(它负责注入 dataId /
|
|
3365
|
+
// formCode 并统一弹前端脚本异常)。原先写的 handleCustomParam 全库没有定义,
|
|
3366
|
+
// 配了「明细导出查询参数」的表格一点导出就抛 TypeError。
|
|
3367
|
+
param: () => {
|
|
3368
|
+
if (paramScript) {
|
|
3369
|
+
return this.handleCustomEvent(paramScript);
|
|
3370
|
+
}
|
|
3371
|
+
},
|
|
3372
|
+
};
|
|
3373
|
+
},
|
|
3352
3374
|
/**
|
|
3353
3375
|
* 使用统一 Excel 导出器导出当前表格。
|
|
3354
3376
|
* @param {Object} option 导出参数;prefix 为空时自动使用当前服务前缀。
|
|
3377
|
+
* option.exportItemColumns / exportItemScriptCode / exportItemParam 为按钮上维护的
|
|
3378
|
+
* 明细导出列、脚本编码与取数参数脚本,三项各自独立:传了哪项就以哪项为准(同一张表格
|
|
3379
|
+
* 可以挂多个明细导出按钮、各导各自的列、各走各自的脚本),组装成 exportItemConfig 随
|
|
3380
|
+
* 导出参数下发,下游(字段选择弹框 / 分页取数 / 脱敏剔除)一律优先读它,读不到才回落
|
|
3381
|
+
* 表格属性那套。
|
|
3355
3382
|
*/
|
|
3356
3383
|
exportData(option) {
|
|
3357
|
-
|
|
3384
|
+
let exportOption = { ...option };
|
|
3385
|
+
let itemColumns = exportOption.exportItemColumns;
|
|
3386
|
+
let itemScriptCode = exportOption.exportItemScriptCode;
|
|
3387
|
+
let itemParam = exportOption.exportItemParam;
|
|
3388
|
+
delete exportOption.exportItemColumns;
|
|
3389
|
+
delete exportOption.exportItemScriptCode;
|
|
3390
|
+
delete exportOption.exportItemParam;
|
|
3391
|
+
let hasOverride = itemColumns?.length || itemScriptCode || itemParam;
|
|
3392
|
+
if (isItemExport(exportOption.type) && hasOverride) {
|
|
3393
|
+
exportOption.exportItemConfig = this.buildExportItemConfig({
|
|
3394
|
+
columns: itemColumns,
|
|
3395
|
+
scriptCode: itemScriptCode,
|
|
3396
|
+
paramScript: itemParam,
|
|
3397
|
+
});
|
|
3398
|
+
}
|
|
3399
|
+
this.markMaskedColumnsForExport(exportOption.exportItemConfig?.columns);
|
|
3358
3400
|
let tableRef = this.getTableRef();
|
|
3359
3401
|
let serviceName = this.getFormRef().reportTemplate.serviceName;
|
|
3360
|
-
|
|
3361
|
-
|
|
3362
|
-
let getExportTableRef = () => {
|
|
3363
|
-
return exportTableTarget;
|
|
3364
|
-
};
|
|
3365
|
-
this.$excelExport({ targetRef: tableRef, ...option });
|
|
3402
|
+
exportOption.prefix = exportOption.prefix || "/" + serviceName;
|
|
3403
|
+
this.$excelExport({ targetRef: tableRef, ...exportOption });
|
|
3366
3404
|
},
|
|
3367
3405
|
async deleteRow(row, rowIndex) {
|
|
3368
3406
|
let isTreeTable = this.widget.options.isTreeTable;
|
|
@@ -3533,7 +3571,7 @@ modules = {
|
|
|
3533
3571
|
let newData = this.createNewTableData();
|
|
3534
3572
|
tableRows.push(newData);
|
|
3535
3573
|
}
|
|
3536
|
-
this.setValue(tableRows);
|
|
3574
|
+
this.setValue(this.stripTreeContainerRows(tableRows));
|
|
3537
3575
|
this.$nextTick(() => {
|
|
3538
3576
|
this.handleWbs();
|
|
3539
3577
|
});
|
|
@@ -4520,7 +4558,7 @@ modules = {
|
|
|
4520
4558
|
await reconcileGrid.clearActived();
|
|
4521
4559
|
}
|
|
4522
4560
|
if (rebuildTreeAfterSave && !responseAlreadyApplied) {
|
|
4523
|
-
this.setValue(treeTableRows);
|
|
4561
|
+
this.setValue(this.stripTreeContainerRows(treeTableRows));
|
|
4524
4562
|
treeSnapshotApplied = true;
|
|
4525
4563
|
await new Promise((resolve) => this.$nextTick(resolve));
|
|
4526
4564
|
}
|
|
@@ -4692,7 +4730,7 @@ modules = {
|
|
|
4692
4730
|
} else {
|
|
4693
4731
|
tableRows.splice(0, 0, newRow);
|
|
4694
4732
|
}
|
|
4695
|
-
this.setValue(tableRows);
|
|
4733
|
+
this.setValue(this.stripTreeContainerRows(tableRows));
|
|
4696
4734
|
this.$nextTick(() => {
|
|
4697
4735
|
this.handleWbs();
|
|
4698
4736
|
if (isEditTable) {
|
|
@@ -4714,7 +4752,7 @@ modules = {
|
|
|
4714
4752
|
} else {
|
|
4715
4753
|
tableRows.splice(0, 0, newRow);
|
|
4716
4754
|
}
|
|
4717
|
-
this.setValue(tableRows);
|
|
4755
|
+
this.setValue(this.stripTreeContainerRows(tableRows));
|
|
4718
4756
|
this.$nextTick(() => {
|
|
4719
4757
|
this.handleWbs();
|
|
4720
4758
|
// setValue 已浅克隆所有行,obj.row 是失效引用,须按 _X_ROW_KEY 找回新行
|
|
@@ -4802,7 +4840,7 @@ modules = {
|
|
|
4802
4840
|
});
|
|
4803
4841
|
this.validateNewTreeRows(newRows, treeContext);
|
|
4804
4842
|
tableRows.push(...newRows);
|
|
4805
|
-
this.setValue(tableRows);
|
|
4843
|
+
this.setValue(this.stripTreeContainerRows(tableRows));
|
|
4806
4844
|
this.$nextTick(() => {
|
|
4807
4845
|
this.handleWbs();
|
|
4808
4846
|
if (parent) {
|
|
@@ -4811,6 +4849,26 @@ modules = {
|
|
|
4811
4849
|
}
|
|
4812
4850
|
});
|
|
4813
4851
|
},
|
|
4852
|
+
/**
|
|
4853
|
+
* 去掉 VXE 建树时写回行对象的容器字段(children / mapChildren)。
|
|
4854
|
+
*
|
|
4855
|
+
* 删除、排序这类「改扁平数组再整表重载」的操作必须先剥容器:容器是上一次
|
|
4856
|
+
* 渲染的产物,已被移出数组的节点仍挂在存活父行下,setValue 里的
|
|
4857
|
+
* canonicalizeTreeInput 会顺着容器把它们收回来,删除与排序因此静默失效。
|
|
4858
|
+
*
|
|
4859
|
+
* 只对 isTreeTable(强制 transform,父子关系由 parentField 表达)生效;
|
|
4860
|
+
* 靠 children 表达层级的表原样返回,剥掉会丢层级。
|
|
4861
|
+
* @param {Array} rows 取自表单模型的扁平活动行。
|
|
4862
|
+
* @returns {Array} 可安全交给 setValue 的行数组。
|
|
4863
|
+
*/
|
|
4864
|
+
stripTreeContainerRows(rows) {
|
|
4865
|
+
if (!this.widget.options.isTreeTable) {
|
|
4866
|
+
return rows || [];
|
|
4867
|
+
}
|
|
4868
|
+
return stripTreeContainers(rows || [], {
|
|
4869
|
+
fields: this.getTreeFields(),
|
|
4870
|
+
});
|
|
4871
|
+
},
|
|
4814
4872
|
/**
|
|
4815
4873
|
* 收集节点全部后代的 _X_ROW_KEY(不含节点自身)。
|
|
4816
4874
|
* 兼容嵌套结构(children 字段)与扁平结构(parentField 关联)两种数据形态。
|
|
@@ -4890,7 +4948,7 @@ modules = {
|
|
|
4890
4948
|
});
|
|
4891
4949
|
}
|
|
4892
4950
|
let newRows = tableRows.filter((item) => !delKeys.has(item._X_ROW_KEY));
|
|
4893
|
-
this.setValue(newRows);
|
|
4951
|
+
this.setValue(this.stripTreeContainerRows(newRows));
|
|
4894
4952
|
this.$nextTick(() => {
|
|
4895
4953
|
this.handleWbs();
|
|
4896
4954
|
});
|
|
@@ -5148,7 +5206,7 @@ modules = {
|
|
|
5148
5206
|
} else {
|
|
5149
5207
|
tableRows.splice(0, 0, newRow);
|
|
5150
5208
|
}
|
|
5151
|
-
this.setValue(tableRows);
|
|
5209
|
+
this.setValue(this.stripTreeContainerRows(tableRows));
|
|
5152
5210
|
this.$nextTick(() => {
|
|
5153
5211
|
this.handleWbs();
|
|
5154
5212
|
});
|
|
@@ -5165,7 +5223,7 @@ modules = {
|
|
|
5165
5223
|
} else {
|
|
5166
5224
|
tableRows.splice(0, 0, newRow);
|
|
5167
5225
|
}
|
|
5168
|
-
this.setValue(tableRows);
|
|
5226
|
+
this.setValue(this.stripTreeContainerRows(tableRows));
|
|
5169
5227
|
this.$nextTick(() => {
|
|
5170
5228
|
this.handleWbs();
|
|
5171
5229
|
// setValue 已浅克隆所有行,obj.row 是失效引用,须按 _X_ROW_KEY 找回新行
|
|
@@ -5362,7 +5420,7 @@ modules = {
|
|
|
5362
5420
|
);
|
|
5363
5421
|
tableRows.splice(currentIndex, 1);
|
|
5364
5422
|
tableRows.splice(prevIndex, 0, row);
|
|
5365
|
-
this.setValue(tableRows);
|
|
5423
|
+
this.setValue(this.stripTreeContainerRows(tableRows));
|
|
5366
5424
|
this.$nextTick(() => {
|
|
5367
5425
|
this.handleWbs();
|
|
5368
5426
|
});
|
|
@@ -5411,7 +5469,7 @@ modules = {
|
|
|
5411
5469
|
);
|
|
5412
5470
|
tableRows.splice(currentIndex, 1);
|
|
5413
5471
|
tableRows.splice(nextIndex, 0, row);
|
|
5414
|
-
this.setValue(tableRows);
|
|
5472
|
+
this.setValue(this.stripTreeContainerRows(tableRows));
|
|
5415
5473
|
this.$nextTick(() => {
|
|
5416
5474
|
this.handleWbs();
|
|
5417
5475
|
});
|
|
@@ -5488,7 +5546,7 @@ modules = {
|
|
|
5488
5546
|
rows.forEach((row, index1) => {
|
|
5489
5547
|
items.splice(index + index1, 0, row);
|
|
5490
5548
|
});
|
|
5491
|
-
this.setValue(items);
|
|
5549
|
+
this.setValue(this.stripTreeContainerRows(items));
|
|
5492
5550
|
this.$nextTick(() => {
|
|
5493
5551
|
this.handleWbs();
|
|
5494
5552
|
});
|
|
@@ -5783,7 +5841,7 @@ modules = {
|
|
|
5783
5841
|
if (this.designState) return;
|
|
5784
5842
|
this.$on("setFormData", (o) => {
|
|
5785
5843
|
let rows = this.formModel[this.fieldKeyName] || [];
|
|
5786
|
-
this.setValue(rows);
|
|
5844
|
+
this.setValue(this.stripTreeContainerRows(rows));
|
|
5787
5845
|
});
|
|
5788
5846
|
},
|
|
5789
5847
|
/** @param {Object} widget 组件 schema。@param {Array<String>} ignoreFields 忽略字段。@returns {Boolean} 是否处理禁用状态。 */
|