cloud-web-corejs 1.0.54-dev.786 → 1.0.54-dev.788
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 +2 -1
- package/src/components/VabUpload/index.vue +1 -1
- package/src/components/baseInputExport/mixins.js +13 -2
- package/src/components/code-editor/async.js +29 -0
- package/src/components/code-editor/index.vue +65 -6
- package/src/components/excelImport/index.js +69 -7
- package/src/components/excelImport/mixins.js +841 -9
- package/src/components/fileLibrary/fileHistoryDialog.vue +1 -1
- package/src/components/fileLibrary/fileObjAuthEdit.vue +1 -1
- package/src/components/fileLibrary/filterDialog.vue +1 -1
- package/src/components/formDialog/README.md +324 -241
- package/src/components/formDialog/actionButtons.js +90 -0
- package/src/components/formDialog/index.js +48 -35
- package/src/components/formDialog/index.vue +802 -724
- package/src/components/formDrawer/drawer.vue +719 -0
- package/src/components/formDrawer/index.js +50 -0
- package/src/components/onlineTalk/talkUserDialog.vue +1 -1
- package/src/components/table/index.js +4 -0
- package/src/components/tempStorage/tempStorageDialog.vue +1 -1
- package/src/components/wf/addTaskUserdialog.vue +1 -1
- package/src/components/xform/docs/2026-08 /345/210/227/350/241/250/345/257/274/345/207/272/350/204/261/346/225/217/345/210/227/345/211/224/351/231/244/350/220/275/345/234/260/346/226/207/346/241/243.md" +165 -0
- package/src/components/xform/form-designer/form-widget/container-widget/data-table-widget.vue +1 -1
- package/src/components/xform/form-designer/form-widget/dialog/formDialog.vue +115 -4
- package/src/components/xform/form-designer/form-widget/dialog/formDrawer.vue +102 -5
- package/src/components/xform/form-designer/form-widget/dialog/formFieldDialog.vue +1 -1
- package/src/components/xform/form-designer/form-widget/dialog/vabSearchDialog.vue +1 -1
- package/src/components/xform/form-designer/form-widget/field-widget/form-item-wrapper.vue +18 -73
- package/src/components/xform/form-designer/form-widget/field-widget/script-input-widget.vue +3 -0
- package/src/components/xform/form-designer/setting-panel/action-button-config-dialog.vue +241 -0
- package/src/components/xform/form-designer/setting-panel/form-setting.vue +116 -0
- package/src/components/xform/form-designer/setting-panel/property-editor/container-detail/detail-editor.vue +6 -0
- package/src/components/xform/form-designer/widget-panel/widgetsConfig.js +1 -0
- package/src/components/xform/form-render/container-item/data-table-mixin.js +1480 -1460
- package/src/components/xform/form-render/container-item/detail-item.vue +11 -2
- package/src/components/xform/form-render/container-item/list-h5-item.vue +12 -0
- package/src/components/xform/form-render/indexMixin.js +5 -0
- package/src/components/xform/utils/textMaskUtil.js +186 -0
- package/src/index.js +505 -472
- package/src/store/config/index.js +224 -0
- package/src/store/modules/tagsView.js +4 -2
- package/src/utils/lazyPlugin.js +66 -0
- 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 +22 -0
- package/src/views/bd/project/branch/form_template/list.vue +21 -0
- package/src/views/bd/project/branch/menu_kind/list.vue +21 -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 +216 -0
- package/src/views/bd/project/core/branchScope.js +44 -0
- package/src/views/bd/project/core/branchSelect.vue +106 -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_attach_setting/dialog.vue +1 -1
- package/src/views/bd/setting/bd_attach_setting/list.vue +1 -1
- package/src/views/bd/setting/bd_company_env/dialog.vue +1 -1
- package/src/views/bd/setting/bd_company_env/list.vue +1 -1
- package/src/views/bd/setting/formVersion/ftHistoryDialog.vue +1 -1
- package/src/views/bd/setting/form_import_log/list.vue +1 -1
- package/src/views/bd/setting/form_script/dialog.vue +1 -1
- package/src/views/bd/setting/form_script/form_list.vue +1 -1
- package/src/views/bd/setting/form_script/list.vue +1 -1
- package/src/views/bd/setting/form_script/list1.vue +1 -1
- package/src/views/bd/setting/form_template/dialog.vue +1 -1
- package/src/views/bd/setting/form_template/formDesignerDialog.vue +1 -0
- package/src/views/bd/setting/form_template/ftHistoryDialog.vue +1 -1
- package/src/views/bd/setting/form_template/itemList.vue +1 -1
- package/src/views/bd/setting/form_template/list.vue +3 -3
- package/src/views/bd/setting/form_template/mixins/edit.js +3 -3
- package/src/views/bd/setting/form_template/mixins/list.js +3 -3
- package/src/views/bd/setting/form_template/mixins/list2.js +3 -3
- package/src/views/bd/setting/form_template/mixins/wf_list.js +3 -3
- package/src/views/bd/setting/form_template/wf_list.vue +3 -3
- package/src/views/bd/setting/logic_param/list.vue +1 -1
- package/src/views/bd/setting/menu_kind/dialog.vue +1 -1
- package/src/views/bd/setting/menu_kind/list.vue +1 -1
- package/src/views/bd/setting/push_data/list.vue +1 -1
- package/src/views/bd/setting/push_data_h/list.vue +1 -1
- package/src/views/bd/setting/request_async_setting/list.vue +1 -1
- package/src/views/bd/setting/request_setting/list.vue +1 -1
- package/src/views/bd/setting/table_model/dialog.vue +1 -1
- package/src/views/bd/setting/table_model/list.vue +1 -1
- package/src/views/bd/setting/table_model/zdDialog.vue +1 -1
- package/src/views/support/export_template/list.vue +1 -1
- package/src/views/user/access_log/list.vue +1 -1
- package/src/views/user/access_log/list2.vue +1 -1
- package/src/views/user/api_request/list.vue +1 -1
- package/src/views/user/area/dialog.vue +1 -1
- package/src/views/user/area/list.vue +1 -1
- package/src/views/user/bill_setting/list.vue +1 -1
- package/src/views/user/bill_setting/userDialog.vue +1 -1
- package/src/views/user/code_rules/list.vue +1 -1
- package/src/views/user/common_attribute/list.vue +1 -1
- package/src/views/user/common_script/list.vue +1 -1
- package/src/views/user/company_info/dialog.vue +1 -1
- package/src/views/user/country/dialog.vue +1 -1
- package/src/views/user/country/list.vue +1 -1
- package/src/views/user/data_type_setting/dialog.vue +1 -1
- package/src/views/user/extend_datasource/dialog.vue +1 -1
- package/src/views/user/extend_datasource/list.vue +1 -1
- package/src/views/user/fieldTranslation/list.vue +1 -1
- package/src/views/user/field_values_invisible/list.vue +1 -1
- package/src/views/user/file_type/list.vue +1 -1
- package/src/views/user/file_view_area/list.vue +1 -1
- package/src/views/user/form/form_template/dialog.vue +1 -1
- package/src/views/user/form/form_template/itemList.vue +1 -1
- package/src/views/user/form/form_template/list.vue +1 -1
- package/src/views/user/form/form_template_field/dialog.vue +1 -1
- package/src/views/user/form/form_type/dialog.vue +1 -1
- package/src/views/user/form/form_type/list.vue +1 -1
- package/src/views/user/form/report_requestaccess/dialog.vue +1 -1
- package/src/views/user/form/report_requestaccess/list.vue +1 -1
- package/src/views/user/form/vform/designer.vue +51 -22
- package/src/views/user/groups/dialog.vue +1 -1
- package/src/views/user/groups/list.vue +1 -1
- package/src/views/user/lang_tag/dialog.vue +1 -1
- package/src/views/user/lang_tag/list.vue +1 -1
- package/src/views/user/language_setting/list.vue +1 -1
- package/src/views/user/menu/list.vue +1 -1
- package/src/views/user/mobile_menu/list.vue +1 -1
- package/src/views/user/notify_message/list.vue +1 -1
- package/src/views/user/notify_template/list.vue +1 -1
- package/src/views/user/notify_template/list2.vue +1 -1
- package/src/views/user/oplog/list.vue +1 -1
- package/src/views/user/position/dialog.vue +1 -1
- package/src/views/user/position/list.vue +1 -1
- package/src/views/user/project_tag/dialog.vue +1 -1
- package/src/views/user/project_tag/list.vue +1 -1
- package/src/views/user/push_setting/list.vue +1 -1
- package/src/views/user/request_setting/list.vue +1 -1
- package/src/views/user/role/dialog.vue +1 -1
- package/src/views/user/role/list.vue +1 -1
- package/src/views/user/sale_org/dialog.vue +1 -1
- package/src/views/user/sale_org/list.vue +1 -1
- package/src/views/user/system_notice/list.vue +1 -1
- package/src/views/user/system_parameter/list.vue +1 -1
- package/src/views/user/user/dialog.vue +1 -1
- package/src/views/user/user/form_dialog.vue +1 -1
- package/src/views/user/user/form_list.vue +1 -1
- package/src/views/user/user/list.vue +2 -2
- package/src/views/user/user_log_classify/list.vue +1 -1
- package/src/views/user/wf/wfReport/index.vue +2 -2
- package/src/views/user/wf/wf_auto_submit_data/list.vue +2 -2
- package/src/views/user/wf/wf_manage/list.vue +2 -2
- package/src/views/user/wf/wf_manage/list2.vue +2 -2
- package/src/views/user/wf/wf_obj_config/dialog.vue +1 -1
- package/src/views/user/wf/wf_obj_config/list.vue +1 -1
- package/src/views/user/wf/wf_obj_config/list_form.vue +1 -1
- package/src/views/user/wf/wf_transfer_setting/list.vue +1 -1
- package/src/views/user/workbench_menu/list.vue +1 -1
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
:class="[customClass]"
|
|
16
16
|
:ref="widget.id"
|
|
17
17
|
>
|
|
18
|
-
<div class="d-header clearfix">
|
|
18
|
+
<div class="d-header clearfix" v-if="showHeader">
|
|
19
19
|
<div class="fl">
|
|
20
20
|
<i class="el-icon-info" />
|
|
21
21
|
{{ getI18nLabel(widget.options.label) }}
|
|
@@ -93,7 +93,7 @@
|
|
|
93
93
|
</template>
|
|
94
94
|
</div>
|
|
95
95
|
</div>
|
|
96
|
-
<baseTabs :showNav="!widget.options.hideNav">
|
|
96
|
+
<baseTabs :showNav="!widget.options.hideNav && !plainMode">
|
|
97
97
|
<detail-pane-widget
|
|
98
98
|
v-for="(paneWidget, index) in widget.panes"
|
|
99
99
|
:key="index"
|
|
@@ -158,6 +158,15 @@ export default {
|
|
|
158
158
|
};
|
|
159
159
|
},
|
|
160
160
|
computed: {
|
|
161
|
+
// 素身详情模式(宿主 VFormRender 传 plainDetailMode):去标题栏、去模块导航,只留模块
|
|
162
|
+
plainMode() {
|
|
163
|
+
let formRef = this.getFormRef && this.getFormRef();
|
|
164
|
+
return !!(formRef && formRef.plainDetailMode);
|
|
165
|
+
},
|
|
166
|
+
// 标题栏:模板配 hideHeader 或宿主素身模式,两者任一命中即不渲染
|
|
167
|
+
showHeader() {
|
|
168
|
+
return !this.plainMode && !this.widget.options.hideHeader;
|
|
169
|
+
},
|
|
161
170
|
wfStartButtonName() {
|
|
162
171
|
return (
|
|
163
172
|
settingConfig.wfStartButtonName ||
|
|
@@ -749,6 +749,10 @@ import {
|
|
|
749
749
|
isVabsearchMultiWidget,
|
|
750
750
|
} from "../../../../components/xform/utils/util";
|
|
751
751
|
import * as formatUtil from "../../../../components/xform/utils/format";
|
|
752
|
+
import {
|
|
753
|
+
buildTextMaskContext,
|
|
754
|
+
markMaskedExportColumns,
|
|
755
|
+
} from "../../../../components/xform/utils/textMaskUtil";
|
|
752
756
|
import { extendDeeply } from "../../../../utils/index.js";
|
|
753
757
|
import render from "../../../../views/user/bill_setting/render.vue";
|
|
754
758
|
|
|
@@ -1656,7 +1660,15 @@ export default {
|
|
|
1656
1660
|
current: currentPage + "",
|
|
1657
1661
|
});
|
|
1658
1662
|
},
|
|
1663
|
+
/** 导出前按脱敏规则剔除列,实现见 textMaskUtil.markMaskedExportColumns。 */
|
|
1664
|
+
markMaskedColumnsForExport() {
|
|
1665
|
+
markMaskedExportColumns(
|
|
1666
|
+
this.getGridTable(),
|
|
1667
|
+
buildTextMaskContext(this.getFormRef(), this.$store.getters.companyCode)
|
|
1668
|
+
);
|
|
1669
|
+
},
|
|
1659
1670
|
exportData(option) {
|
|
1671
|
+
this.markMaskedColumnsForExport();
|
|
1660
1672
|
let tableRef = this.getTableRef();
|
|
1661
1673
|
let serverName = this.getFormRef().reportTemplate.serverName;
|
|
1662
1674
|
option.prefix = option.prefix || serverName;
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 字段脱敏("密文文本")判定。
|
|
3
|
+
*
|
|
4
|
+
* 规则在组件属性面板 textFlag-editor 维护:
|
|
5
|
+
* - options.userTextRuleEnabled 总开关
|
|
6
|
+
* - options.userTextRuleConfig 规则列表,单条为
|
|
7
|
+
* { serveName, companyCodes, roleCodes, type, encryptFormula }
|
|
8
|
+
* - serveName / companyCodes 为空表示不限;companyCodes、roleCodes 为逗号分隔串
|
|
9
|
+
* - type=1:角色不匹配时脱敏;type=2:角色匹配时脱敏
|
|
10
|
+
* - encryptFormula 形如 "3*3" / "3*" / "*3" / "*" / "-"
|
|
11
|
+
* - 规则列表是全遍历而非命中即止,后置规则会覆盖前置规则的结论
|
|
12
|
+
* - 规则里的 loginAccounts / saleOrgCodes 两个维度目前不参与匹配(历史遗留字段)
|
|
13
|
+
*
|
|
14
|
+
* 本文件是该判定的唯一实现:渲染侧(form-item-wrapper 的只读文本)与导出侧
|
|
15
|
+
* (数据表格按列剔除)必须共用,否则会出现界面打码、导出放行的漂移。
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
/** 列 params 上的私有标记:记录 exportDisabled 是脱敏判定打的,撤销时才敢删 */
|
|
19
|
+
const MASK_MARK_KEY = "exportDisabledByTextMask";
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* @param {Array} list1 规则侧编码列表。为空表示不限。
|
|
23
|
+
* @param {Array} list2 当前用户编码列表。
|
|
24
|
+
* @returns {Boolean} 是否匹配。
|
|
25
|
+
*/
|
|
26
|
+
export function compareToList(list1, list2) {
|
|
27
|
+
if (!list1.length) {
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
if (!list2.length) {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
return list1.some((item) => {
|
|
34
|
+
return list2.some((item2) => item == item2);
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* @param {Object} widgetOptions 组件 options。
|
|
40
|
+
* @returns {Boolean} 是否配置了脱敏规则(不代表当前用户命中)。
|
|
41
|
+
*/
|
|
42
|
+
export function hasTextMaskRule(widgetOptions) {
|
|
43
|
+
if (!widgetOptions || !widgetOptions.userTextRuleEnabled) return false;
|
|
44
|
+
let ruleList = widgetOptions.userTextRuleConfig || [];
|
|
45
|
+
return ruleList.some((item) => {
|
|
46
|
+
let type = item.type ?? null;
|
|
47
|
+
return type !== null && type !== "";
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* @param {Object} formRef 表单实例(form-render)。
|
|
53
|
+
* @param {String} companyCode 当前公司编码(store.getters.companyCode)。
|
|
54
|
+
* @returns {Object} 判定上下文 { bdService, companyCode, roleCodeList }。
|
|
55
|
+
*/
|
|
56
|
+
export function buildTextMaskContext(formRef, companyCode) {
|
|
57
|
+
let roleCodeList = (formRef?.userRoleDTOs || []).map((item) => item.roleCode);
|
|
58
|
+
return {
|
|
59
|
+
bdService: formRef?.bdService,
|
|
60
|
+
companyCode,
|
|
61
|
+
roleCodeList,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* @param {Object} ctx 判定上下文。
|
|
67
|
+
* @returns {Boolean} 用户上下文是否已就绪(bdService / 角色均由异步接口填充)。
|
|
68
|
+
*/
|
|
69
|
+
export function isTextMaskContextReady(ctx) {
|
|
70
|
+
return !!ctx?.bdService && !!(ctx?.roleCodeList || []).length;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* @param {Object} widgetOptions 组件 options。
|
|
75
|
+
* @param {Object} ctx 用户上下文 { bdService, companyCode, roleCodeList }。
|
|
76
|
+
* @returns {{masked: Boolean, encryptFormula: String}} 是否脱敏及命中的加密规则。
|
|
77
|
+
*/
|
|
78
|
+
export function resolveTextMaskFlag(widgetOptions, ctx) {
|
|
79
|
+
let result = { masked: false, encryptFormula: null };
|
|
80
|
+
if (!widgetOptions || !widgetOptions.userTextRuleEnabled) return result;
|
|
81
|
+
|
|
82
|
+
let bdService = ctx?.bdService;
|
|
83
|
+
let companyCode = ctx?.companyCode;
|
|
84
|
+
let roleCodeList = ctx?.roleCodeList || [];
|
|
85
|
+
|
|
86
|
+
let userTextRuleConfig = widgetOptions.userTextRuleConfig || [];
|
|
87
|
+
userTextRuleConfig.forEach((item) => {
|
|
88
|
+
let type = item.type ?? null;
|
|
89
|
+
if (type === null || type === "") return;
|
|
90
|
+
|
|
91
|
+
let companyCodeStr = item.companyCodes;
|
|
92
|
+
let companyCodes = companyCodeStr
|
|
93
|
+
? companyCodeStr.split(",").filter((code) => !!code)
|
|
94
|
+
: [];
|
|
95
|
+
let roleCodeStr = item.roleCodes;
|
|
96
|
+
let roleCodes = roleCodeStr
|
|
97
|
+
? roleCodeStr.split(",").filter((code) => !!code)
|
|
98
|
+
: [];
|
|
99
|
+
|
|
100
|
+
let flag1 = !item.serveName || item.serveName == bdService;
|
|
101
|
+
let flag2 = !companyCodes.length || companyCodes.includes(companyCode);
|
|
102
|
+
if (!flag1 || !flag2) return;
|
|
103
|
+
|
|
104
|
+
result.encryptFormula = item.encryptFormula;
|
|
105
|
+
let flag5 = compareToList(roleCodes, roleCodeList);
|
|
106
|
+
if (flag5) {
|
|
107
|
+
//匹配角色
|
|
108
|
+
if (type == 2) result.masked = true; //type=2时加密
|
|
109
|
+
} else {
|
|
110
|
+
//角色不匹配
|
|
111
|
+
if (type == 1) result.masked = true;
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
return result;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* 导出前按脱敏规则给命中列打 params.exportDisabled,由 excelExport 的三处过滤
|
|
120
|
+
* (字段选择树、表头 JSON、取数)统一剔除整列。
|
|
121
|
+
*
|
|
122
|
+
* 之所以要按列剔除:命中脱敏规则的字段在界面上只渲染掩码文本,但导出取值走
|
|
123
|
+
* filterVal / 原始字段快路径,不经过渲染层,会把明文写进文件。
|
|
124
|
+
*
|
|
125
|
+
* bdService / userRoleDTOs 由异步接口填充,上下文缺失时按 fail-closed 处理——配了
|
|
126
|
+
* 规则的列一律剔除,因为角色列表为空会被判成"角色不匹配",type=2 的规则会误判为
|
|
127
|
+
* 不脱敏。本函数幂等且可自愈:上下文就绪后重复调用会撤销自己此前多打的标记
|
|
128
|
+
* (靠私有键区分,不碰 isNonDataExportColumn 打的标记)。
|
|
129
|
+
*
|
|
130
|
+
* @param {Object} $grid vxe-grid 实例。
|
|
131
|
+
* @param {Object} ctx 判定上下文,由 buildTextMaskContext 生成。
|
|
132
|
+
*/
|
|
133
|
+
export function markMaskedExportColumns($grid, ctx) {
|
|
134
|
+
if (!$grid || typeof $grid.getTableColumn !== "function") return;
|
|
135
|
+
|
|
136
|
+
let contextReady = isTextMaskContextReady(ctx);
|
|
137
|
+
|
|
138
|
+
/** 打标记。列本就被其它规则(isNonDataExportColumn)剔除时不接管,避免撤销时误删。 */
|
|
139
|
+
let disable = (params) => {
|
|
140
|
+
if (params.exportDisabled && !params[MASK_MARK_KEY]) return;
|
|
141
|
+
params.exportDisabled = true;
|
|
142
|
+
params[MASK_MARK_KEY] = true;
|
|
143
|
+
};
|
|
144
|
+
/** 撤销本函数此前打的标记(上下文未就绪时的 fail-closed 结论)。 */
|
|
145
|
+
let restore = (params) => {
|
|
146
|
+
if (!params[MASK_MARK_KEY]) return;
|
|
147
|
+
delete params[MASK_MARK_KEY];
|
|
148
|
+
delete params.exportDisabled;
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
let maskedFields = new Set();
|
|
152
|
+
let markColumn = (column) => {
|
|
153
|
+
if (column.children && column.children.length) {
|
|
154
|
+
column.children.forEach(markColumn);
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
let widgetOptions = column.params?.widget?.options;
|
|
158
|
+
if (!hasTextMaskRule(widgetOptions)) return;
|
|
159
|
+
if (contextReady && !resolveTextMaskFlag(widgetOptions, ctx).masked) {
|
|
160
|
+
restore(column.params);
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
disable(column.params);
|
|
164
|
+
if (column.field) maskedFields.add(column.field);
|
|
165
|
+
};
|
|
166
|
+
let { collectColumn } = $grid.getTableColumn();
|
|
167
|
+
(collectColumn || []).forEach(markColumn);
|
|
168
|
+
|
|
169
|
+
// 明细导出列是独立配置(只有 field/title,没有组件),按字段名对齐主表脱敏列
|
|
170
|
+
let markItemColumn = (column) => {
|
|
171
|
+
if (column.children && column.children.length) {
|
|
172
|
+
column.children.forEach(markItemColumn);
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
if (!column.field) return;
|
|
176
|
+
column.params = column.params || {};
|
|
177
|
+
if (maskedFields.has(column.field)) {
|
|
178
|
+
disable(column.params);
|
|
179
|
+
} else {
|
|
180
|
+
restore(column.params);
|
|
181
|
+
}
|
|
182
|
+
};
|
|
183
|
+
let originOption = $grid.params?.originOption;
|
|
184
|
+
let exportItemColumns = originOption?.exportItemConfig?.columns || [];
|
|
185
|
+
exportItemColumns.forEach(markItemColumn);
|
|
186
|
+
}
|