cloud-web-corejs 1.0.283 → 1.0.284

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.
Files changed (19) hide show
  1. package/package.json +1 -1
  2. package/src/components/excelExport/conditionExportConfig.js +112 -0
  3. package/src/components/excelExport/exportType.js +8 -0
  4. package/src/components/excelExport/index.vue +7 -1
  5. package/src/components/excelExport/mixins.js +410 -259
  6. package/src/components/xform/form-designer/form-widget/dialog/importDialog.vue +190 -185
  7. package/src/components/xform/form-designer/form-widget/dialog/importDialogMixin.js +2641 -1833
  8. package/src/components/xform/form-designer/form-widget/field-widget/import-button-widget.vue +18 -5
  9. package/src/components/xform/form-designer/form-widget/field-widget/select-export-item-button-widget.vue +2 -1
  10. package/src/components/xform/form-designer/form-widget/field-widget/table-export-button-widget.vue +2 -1
  11. package/src/components/xform/form-designer/setting-panel/property-editor/field-import-button/import-button-editor.vue +62 -1
  12. package/src/components/xform/form-designer/setting-panel/property-editor/field-import-button/import2-button-editor.vue +236 -96
  13. package/src/components/xform/form-designer/setting-panel/property-editor/field-table-export-button/empty-number-input.vue +51 -0
  14. package/src/components/xform/form-designer/setting-panel/property-editor/field-table-export-button/select-export-item-button-editor.vue +27 -2
  15. package/src/components/xform/form-designer/setting-panel/property-editor/field-table-export-button/table-export-button-editor.vue +33 -3
  16. package/src/components/xform/form-designer/widget-panel/widgetsConfig.js +31 -0
  17. package/src/components/xform/form-render/container-item/data-table-mixin.js +3 -1
  18. package/src/components/xform/docs/2026-09 /346/235/241/344/273/266/345/257/274/345/207/272/345/244/247/346/225/260/346/215/256/351/207/217/345/264/251/346/272/203/346/216/222/346/237/245.md" +0 -389
  19. package/src/components/xform/docs/2026-09 /347/274/226/350/276/221/350/241/250/350/241/214/345/206/205/344/277/235/345/255/230/346/240/241/351/252/214/350/214/203/345/233/264/344/270/216/345/210/227/345/277/205/345/241/253/350/247/243/346/236/220/344/277/256/345/244/215.md" +0 -233
@@ -62,18 +62,31 @@ export default {
62
62
  methods: {
63
63
  importHandle() {
64
64
  const done = () => {
65
- let multi = this.field.options.importMultiple || false;
66
- let multiSize = this.field.options.importMultiSize || 1;
67
- this.getFormRef().openImportDialog({
65
+ let options = this.field.options;
66
+ let multi = options.importMultiple || false;
67
+ let multiSize = options.importMultiSize || 1;
68
+ let dialogOption = {
68
69
  target: this,
69
- importOption: this.field.options,
70
+ importOption: options,
70
71
  importFrontOnly: false,
71
72
  multi,
72
73
  multiSize,
73
74
  callback: (resultData, file, done) => {
74
75
 
75
76
  }
76
- });
77
+ };
78
+ // 逐行补默认值:弹框侧读的是 option.defaultValue(此前只有手写页能传,
79
+ // 表单里配不了),这里把设计器上的脚本包成同一形状交过去
80
+ if (options.importDefaultValue) {
81
+ dialogOption.defaultValue = (row) => {
82
+ return this.handleCustomEvent(
83
+ options.importDefaultValue,
84
+ ["row"],
85
+ [row]
86
+ ) || {};
87
+ };
88
+ }
89
+ this.getFormRef().openImportDialog(dialogOption);
77
90
  }
78
91
  if (this.field.options.onBeforeClickButton) {
79
92
  if (this.handleCustomEvent(this.field.options.onBeforeClickButton, ["done"], [done]) !== false) {
@@ -44,6 +44,7 @@ import i18n from "../../../utils/i18n";
44
44
  import fieldMixin from "./fieldMixin";
45
45
  import StaticContentWrapper from "./static-content-wrapper.vue";
46
46
  import { EXPORT_TYPE } from "../../../../excelExport/exportType";
47
+ import { pickConditionExportOverrides } from "@base/components/excelExport/conditionExportConfig";
47
48
 
48
49
  export default {
49
50
  name: "select-export-item-button-widget",
@@ -101,8 +102,8 @@ export default {
101
102
  let opt = {
102
103
  title: this.field.options.exportFileName || null,
103
104
  targetRef: this.field.options.tableRef || null,
104
- pageSize: this.field.options.exportPageSize || null,
105
105
  showImageAtTable: this.field.options.showImageAtTable || null,
106
+ ...pickConditionExportOverrides(this.field.options),
106
107
  // 明细导出的列 / 脚本编码 / 取数参数三项各自独立:按钮上维护了哪项就以哪项为准,
107
108
  // 留空的那项沿用数据表格属性上那套。参数脚本原样下发,由数据表格求值(this 是
108
109
  // 表格组件,与配在表格属性上时同义)
@@ -32,6 +32,7 @@ import emitter from "../../../../../components/xform/utils/emitter";
32
32
  import i18n from "../../../../../components/xform/utils/i18n";
33
33
  import fieldMixin from "../../../../../components/xform/form-designer/form-widget/field-widget/fieldMixin";
34
34
  import StaticContentWrapper from "../../../../../components/xform/form-designer/form-widget/field-widget/static-content-wrapper.vue";
35
+ import { pickConditionExportOverrides } from "@base/components/excelExport/conditionExportConfig";
35
36
 
36
37
  export default {
37
38
  name: "table-export-button-widget",
@@ -81,8 +82,8 @@ export default {
81
82
  let opt = {
82
83
  title: this.field.options.exportFileName || null,
83
84
  targetRef: this.field.options.tableRef || null,
84
- pageSize: this.field.options.exportPageSize || null,
85
85
  showImageAtTable: this.field.options.showImageAtTable || null,
86
+ ...pickConditionExportOverrides(this.field.options),
86
87
  };
87
88
  let tableExportParam = this.handleCustomEvent(this.field.options.tableExportParam);
88
89
  let options = { ...opt, ...tableExportParam, type: type };
@@ -51,6 +51,18 @@
51
51
  :max="200"
52
52
  ></base-input-number>
53
53
  </el-form-item>
54
+ <el-form-item label="批量报文带附件信封">
55
+ <el-switch v-model="optionModel.importMultiAttachEnvelope"></el-switch>
56
+ <el-tooltip effect="dark" placement="top">
57
+ <div slot="content">
58
+ 只在「批量导入」打开时生效。<br/>
59
+ 关(默认):报文里 data 是裸行数组,附件列原样留在行里。<br/>
60
+ 打开:每行包成 { 表名: {...行}, attachments_x: [...] },附件从实体里提到信封层,<br/>
61
+ 与单行导入同构 —— <b>后端脚本需配套改</b>,不要在存量表单上随手打开。
62
+ </div>
63
+ <i class="el-icon-question label-tip-icon"></i>
64
+ </el-tooltip>
65
+ </el-form-item>
54
66
  <el-form-item label="点击前置事件" label-width="150px">
55
67
  <a href="javascript:void(0);" class="a-link link-oneLind"
56
68
  @click="editEventHandler('onBeforeClickButton', eventParams)">
@@ -72,6 +84,45 @@
72
84
  </a>
73
85
  </el-form-item>
74
86
 
87
+ <el-form-item label="必填校验方式" class="form-item-label-top">
88
+ <el-select v-model="optionModel.requiredCheckMode" style="width: 100%">
89
+ <el-option label="默认(逐行标记失败,其余照常导入)" value=""></el-option>
90
+ <el-option label="整批硬拦(一处不合规就整份不导)" value="strict"></el-option>
91
+ <el-option label="不校验(只信业务脚本与后端)" value="off"></el-option>
92
+ </el-select>
93
+ </el-form-item>
94
+ <el-form-item label="逐行校验脚本" label-width="150px">
95
+ <a
96
+ href="javascript:void(0);"
97
+ class="a-link link-oneLind"
98
+ @click="editEventHandler('onValidateRow', onValidateRowParams)"
99
+ >
100
+ <span>{{ optionModel.onValidateRow }}</span>
101
+ <i class="el-icon-edit"></i>
102
+ </a>
103
+ <el-tooltip effect="dark" placement="top">
104
+ <div slot="content">返回 true 或不返回=通过;返回字符串=该行的错误文案。</div>
105
+ <i class="el-icon-question label-tip-icon"></i>
106
+ </el-tooltip>
107
+ </el-form-item>
108
+ <el-form-item label="逐行补默认值" label-width="150px">
109
+ <a
110
+ href="javascript:void(0);"
111
+ class="a-link link-oneLind"
112
+ @click="editEventHandler('importDefaultValue', importDefaultValueParams)"
113
+ >
114
+ <span>{{ optionModel.importDefaultValue }}</span>
115
+ <i class="el-icon-edit"></i>
116
+ </a>
117
+ <el-tooltip effect="dark" placement="top">
118
+ <div slot="content">
119
+ 返回一个对象,发包前合并进该行(补组织、单据类型等固定字段)。<br/>
120
+ 与"导入前数据处理"的区别:那个是整批一次,这个是逐行。
121
+ </div>
122
+ <i class="el-icon-question label-tip-icon"></i>
123
+ </el-tooltip>
124
+ </el-form-item>
125
+
75
126
  <el-form-item label="导入完成回调" label-width="150px">
76
127
  <a
77
128
  href="javascript:void(0);"
@@ -116,6 +167,8 @@ export default {
116
167
  onBeforeImportParams: ["dataId", "formCode", "file", "resultData", "done"],
117
168
  onConfirmImportParams: ["dataId", "formCode", "resultData", "file", "done", "close"],
118
169
  onSuccessImportParams: ["dataId", "formCode", "resultData", "file"],
170
+ onValidateRowParams: ["dataId", "formCode", "row", "index"],
171
+ importDefaultValueParams: ["dataId", "formCode", "row"],
119
172
  };
120
173
  },
121
174
  methods: {
@@ -130,4 +183,12 @@ export default {
130
183
  };
131
184
  </script>
132
185
 
133
- <style scoped></style>
186
+ <style scoped>
187
+ .label-tip-icon {
188
+ margin-left: 4px;
189
+ color: #909399;
190
+ cursor: pointer;
191
+ font-size: 14px;
192
+ vertical-align: middle;
193
+ }
194
+ </style>
@@ -1,96 +1,236 @@
1
- <template>
2
- <div>
3
- <el-form-item label-width="0">
4
- <el-divider class="custom-divider">前端导入设置</el-divider>
5
- </el-form-item>
6
- <el-form-item label="文件大小限制(M)" class="form-item-label-top">
7
- <base-input-number v-model="optionModel.importFileLimitSize" :max="200"></base-input-number>
8
- </el-form-item>
9
- <el-form-item label="导入模板文件编码" class="form-item-label-top">
10
- <el-input
11
- class="search-input"
12
- max="200"
13
- :value="optionModel.importAttachCode"
14
- clearable
15
- @clear="optionModel.importAttachCode=null;optionModel.importAttachName=null;"
16
- >
17
- <i slot="suffix" class="el-input__icon el-icon-search" @click="showBdAttachSettingDialog = true"></i>
18
- </el-input>
19
- </el-form-item>
20
- <el-form-item label="导入模板文件名称">
21
- <span>{{ optionModel.importAttachName }}</span>
22
- </el-form-item>
23
-
24
- <el-form-item label="关联表格唯一名称" class="form-item-label-top">
25
- <el-input v-model="optionModel.tableRef"></el-input>
26
- </el-form-item>
27
- <el-form-item label="点击前置事件" label-width="150px">
28
- <a href="javascript:void(0);" class="a-link link-oneLind"
29
- @click="editEventHandler('onBeforeClickButton', eventParams)">
30
- <span>{{ optionModel.onBeforeClickButton }}</span>
31
- <i class="el-icon-edit"></i>
32
- </a>
33
- </el-form-item>
34
- <el-form-item label="启用确认回调">
35
- <el-switch v-model="optionModel.onConfirmImportEnabled"></el-switch>
36
- </el-form-item>
37
- <el-form-item label="确认回调" label-width="150px" v-if="optionModel.onConfirmImportEnabled" class="el-form-item-second">
38
- <a href="javascript:void(0);" class="a-link link-oneLind"
39
- @click="editEventHandler('onConfirmImport', onConfirmImportParams)">
40
- <span>{{ optionModel.onConfirmImport }}</span>
41
- <i class="el-icon-edit"></i>
42
- </a>
43
- </el-form-item>
44
- <el-form-item label="导入完成回调" label-width="150px">
45
- <a href="javascript:void(0);" class="a-link link-oneLind"
46
- @click="editEventHandler('onSuccessImport', onSuccessImportParams)">
47
- <span>{{ optionModel.onSuccessImport }}</span>
48
- <i class="el-icon-edit"></i>
49
- </a>
50
- </el-form-item>
51
- <el-form-item label="隐藏取消按钮" label-width="150px">
52
- <el-switch v-model="optionModel.hideCancelButton"></el-switch>
53
- </el-form-item>
54
-
55
- <bdAttachSettingDialog v-if="showBdAttachSettingDialog" :visiable.sync="showBdAttachSettingDialog" :multi="false"
56
- @confirm="confirmBdAttachSettingDialog"></bdAttachSettingDialog>
57
- </div>
58
- </template>
59
-
60
- <script>
61
- import i18n from "../../../../../../components/xform/utils/i18n";
62
- import eventMixin
63
- from "../../../../../../components/xform/form-designer/setting-panel/property-editor/event-handler/eventMixin";
64
- import bdAttachSettingDialog from "../../../../../../views/bd/setting/bd_attach_setting/dialog.vue";
65
-
66
- export default {
67
- name: "import2-button-editor",
68
- components: {bdAttachSettingDialog},
69
- mixins: [i18n, eventMixin],
70
- props: {
71
- designer: Object,
72
- selectedWidget: Object,
73
- optionModel: Object,
74
- },
75
- data() {
76
- return {
77
- eventParams: ["dataId", "formCode", "done"],
78
- showBdAttachSettingDialog: false,
79
- onBeforeImportParams: ["dataId", "formCode", 'file', 'resultData', 'done'],
80
- onConfirmImportParams: ["dataId", "formCode", 'resultData', 'file', 'done', "close"],
81
- onSuccessImportParams: ["dataId", "formCode", 'resultData', 'file']
82
- };
83
- },
84
- methods: {
85
- confirmBdAttachSettingDialog(rows) {
86
- if (rows.length) {
87
- let row = rows[0];
88
- this.optionModel.importAttachName = row.name;
89
- this.optionModel.importAttachCode = row.code;
90
- }
91
- }
92
- }
93
- };
94
- </script>
95
-
96
- <style scoped></style>
1
+ <template>
2
+ <div>
3
+ <el-form-item label-width="0">
4
+ <el-divider class="custom-divider">前端导入设置</el-divider>
5
+ </el-form-item>
6
+ <el-form-item label="文件大小限制(M)" class="form-item-label-top">
7
+ <base-input-number v-model="optionModel.importFileLimitSize" :max="200"></base-input-number>
8
+ </el-form-item>
9
+ <el-form-item label="导入模板文件编码" class="form-item-label-top">
10
+ <el-input
11
+ class="search-input"
12
+ max="200"
13
+ :value="optionModel.importAttachCode"
14
+ clearable
15
+ @clear="optionModel.importAttachCode=null;optionModel.importAttachName=null;"
16
+ >
17
+ <i slot="suffix" class="el-input__icon el-icon-search" @click="showBdAttachSettingDialog = true"></i>
18
+ </el-input>
19
+ </el-form-item>
20
+ <el-form-item label="导入模板文件名称">
21
+ <span>{{ optionModel.importAttachName }}</span>
22
+ </el-form-item>
23
+
24
+ <el-form-item label="关联表格唯一名称" class="form-item-label-top">
25
+ <el-input v-model="optionModel.tableRef"></el-input>
26
+ </el-form-item>
27
+ <el-form-item label="入表去重字段" class="form-item-label-top">
28
+ <el-input v-model="optionModel.dedupField" placeholder="留空则不去重"></el-input>
29
+ </el-form-item>
30
+ <el-form-item label="必填校验方式" class="form-item-label-top">
31
+ <el-select v-model="optionModel.requiredCheckMode" style="width: 100%">
32
+ <el-option label="默认(有进度框逐行标记,否则整批拦)" value=""></el-option>
33
+ <el-option label="整批硬拦(一处不合规就整份不导)" value="strict"></el-option>
34
+ <el-option label="不校验(只信业务脚本)" value="off"></el-option>
35
+ </el-select>
36
+ </el-form-item>
37
+ <el-form-item label="显示导入进度">
38
+ <el-switch v-model="optionModel.showProgressDialog"></el-switch>
39
+ <el-tooltip effect="dark" placement="top">
40
+ <div slot="content">
41
+ 打开后走进度弹框:逐行校验,成功/失败可点开看明细并导出,<br/>
42
+ 校验通过的行才进表格。关闭则沿用整批导入(缺必填直接中止)。
43
+ </div>
44
+ <i class="el-icon-question label-tip-icon"></i>
45
+ </el-tooltip>
46
+ </el-form-item>
47
+ <el-form-item
48
+ label="每行处理方式"
49
+ class="form-item-label-top el-form-item-second"
50
+ v-if="optionModel.showProgressDialog"
51
+ >
52
+ <el-select v-model="optionModel.importMode" style="width: 100%">
53
+ <el-option label="塞入关联表格" value="table"></el-option>
54
+ <el-option label="逐行脚本处理" value="script"></el-option>
55
+ </el-select>
56
+ </el-form-item>
57
+ <el-form-item
58
+ label="启用后台校验"
59
+ class="el-form-item-second"
60
+ v-if="optionModel.showProgressDialog"
61
+ >
62
+ <el-switch v-model="optionModel.backendValidateEnabled"></el-switch>
63
+ <el-tooltip effect="dark" placement="top">
64
+ <div slot="content">
65
+ 打开后,前台校验通过的行整批一次送给后台脚本:校验并补字段。<br/>
66
+ 通过的行再按「每行处理方式」入表或走逐行脚本。<br/>
67
+ 失败行进结果表,不入表格。
68
+ </div>
69
+ <i class="el-icon-question label-tip-icon"></i>
70
+ </el-tooltip>
71
+ </el-form-item>
72
+ <el-form-item
73
+ label="执行后台脚本编码"
74
+ class="form-item-label-top el-form-item-second"
75
+ v-if="optionModel.showProgressDialog && optionModel.backendValidateEnabled"
76
+ >
77
+ <el-input v-model="optionModel.importScriptCode"></el-input>
78
+ </el-form-item>
79
+ <el-form-item
80
+ label="请求额外参数脚本"
81
+ label-width="150px"
82
+ class="el-form-item-second"
83
+ v-if="optionModel.showProgressDialog && optionModel.backendValidateEnabled"
84
+ >
85
+ <a href="javascript:void(0);" class="a-link link-oneLind"
86
+ @click="editEventHandler('onImportParams', onImportParamsParams)">
87
+ <span>{{ optionModel.onImportParams }}</span>
88
+ <i class="el-icon-edit"></i>
89
+ </a>
90
+ <el-tooltip effect="dark" placement="top">
91
+ <div slot="content">
92
+ 发请求前整批跑一次,返回对象作为 params。<br/>
93
+ 不要在脚本里自己发请求。
94
+ </div>
95
+ <i class="el-icon-question label-tip-icon"></i>
96
+ </el-tooltip>
97
+ </el-form-item>
98
+ <el-form-item
99
+ label="启用图片处理"
100
+ class="el-form-item-second"
101
+ v-if="optionModel.showProgressDialog"
102
+ >
103
+ <el-switch v-model="optionModel.enabledImportPreHandle"></el-switch>
104
+ <el-tooltip effect="dark" placement="top">
105
+ <div slot="content">
106
+ 模板里 <b>attachments_</b> 开头的列用于承载附件。<br/>
107
+ 不开:只认单元格里的 URL 文本(支持逗号/换行分隔多个)。<br/>
108
+ 打开:Excel 里贴的内嵌图片也会被取回并填进该列 —— 需先上传整个文件,<br/>
109
+ 导入前多出「上传/校验/存储图片」三段进度。<br/>
110
+ 仅在「显示导入进度」打开时可用。
111
+ </div>
112
+ <i class="el-icon-question label-tip-icon"></i>
113
+ </el-tooltip>
114
+ </el-form-item>
115
+ <el-form-item
116
+ label="逐行处理脚本"
117
+ label-width="150px"
118
+ class="el-form-item-second"
119
+ v-if="optionModel.showProgressDialog && optionModel.importMode === 'script'"
120
+ >
121
+ <a href="javascript:void(0);" class="a-link link-oneLind"
122
+ @click="editEventHandler('onImportRow', onImportRowParams)">
123
+ <span>{{ optionModel.onImportRow }}</span>
124
+ <i class="el-icon-edit"></i>
125
+ </a>
126
+ <el-tooltip effect="dark" placement="top">
127
+ <div slot="content">
128
+ 每行调一次,必须调 done:done() 表示成功;<br/>
129
+ done({success:false, message:"未匹配到编码"}) 表示失败。<br/>
130
+ 若启用了后台校验,row 已含后台补数字段。<br/>
131
+ 更新:this.getWidgetRef(表格名) 比对后改现有行;插入可 addTableData([row])。<br/>
132
+ 循环、让步与进度由组件负责,脚本里不要自己写整趟 for。
133
+ </div>
134
+ <i class="el-icon-question label-tip-icon"></i>
135
+ </el-tooltip>
136
+ </el-form-item>
137
+ <el-form-item label="逐行校验脚本" label-width="150px">
138
+ <a href="javascript:void(0);" class="a-link link-oneLind"
139
+ @click="editEventHandler('onValidateRow', onValidateRowParams)">
140
+ <span>{{ optionModel.onValidateRow }}</span>
141
+ <i class="el-icon-edit"></i>
142
+ </a>
143
+ <el-tooltip effect="dark" placement="top">
144
+ <div slot="content">返回 true 或不返回=通过;返回字符串=该行的错误文案。</div>
145
+ <i class="el-icon-question label-tip-icon"></i>
146
+ </el-tooltip>
147
+ </el-form-item>
148
+ <el-form-item label="点击前置事件" label-width="150px">
149
+ <a href="javascript:void(0);" class="a-link link-oneLind"
150
+ @click="editEventHandler('onBeforeClickButton', eventParams)">
151
+ <span>{{ optionModel.onBeforeClickButton }}</span>
152
+ <i class="el-icon-edit"></i>
153
+ </a>
154
+ </el-form-item>
155
+ <el-form-item label="启用确认回调">
156
+ <el-switch v-model="optionModel.onConfirmImportEnabled"></el-switch>
157
+ <el-tooltip effect="dark" placement="top">
158
+ <div slot="content">
159
+ 选完文件点确定、Excel 解析完后立刻执行。<br/>
160
+ 进度框开:前置钩子,done() 继续导入,close() 中止;不返回 false 则自动继续。<br/>
161
+ 进度框关:由脚本接管整批导入,done() 结束并触发导入完成回调。
162
+ </div>
163
+ <i class="el-icon-question label-tip-icon"></i>
164
+ </el-tooltip>
165
+ </el-form-item>
166
+ <el-form-item label="确认回调" label-width="150px" v-if="optionModel.onConfirmImportEnabled" class="el-form-item-second">
167
+ <a href="javascript:void(0);" class="a-link link-oneLind"
168
+ @click="editEventHandler('onConfirmImport', onConfirmImportParams)">
169
+ <span>{{ optionModel.onConfirmImport }}</span>
170
+ <i class="el-icon-edit"></i>
171
+ </a>
172
+ </el-form-item>
173
+ <el-form-item label="导入完成回调" label-width="150px">
174
+ <a href="javascript:void(0);" class="a-link link-oneLind"
175
+ @click="editEventHandler('onSuccessImport', onSuccessImportParams)">
176
+ <span>{{ optionModel.onSuccessImport }}</span>
177
+ <i class="el-icon-edit"></i>
178
+ </a>
179
+ </el-form-item>
180
+ <el-form-item label="隐藏取消按钮" label-width="150px">
181
+ <el-switch v-model="optionModel.hideCancelButton"></el-switch>
182
+ </el-form-item>
183
+
184
+ <bdAttachSettingDialog v-if="showBdAttachSettingDialog" :visiable.sync="showBdAttachSettingDialog" :multi="false"
185
+ @confirm="confirmBdAttachSettingDialog"></bdAttachSettingDialog>
186
+ </div>
187
+ </template>
188
+
189
+ <script>
190
+ import i18n from "../../../../../../components/xform/utils/i18n";
191
+ import eventMixin
192
+ from "../../../../../../components/xform/form-designer/setting-panel/property-editor/event-handler/eventMixin";
193
+ import bdAttachSettingDialog from "../../../../../../views/bd/setting/bd_attach_setting/dialog.vue";
194
+
195
+ export default {
196
+ name: "import2-button-editor",
197
+ components: {bdAttachSettingDialog},
198
+ mixins: [i18n, eventMixin],
199
+ props: {
200
+ designer: Object,
201
+ selectedWidget: Object,
202
+ optionModel: Object,
203
+ },
204
+ data() {
205
+ return {
206
+ eventParams: ["dataId", "formCode", "done"],
207
+ showBdAttachSettingDialog: false,
208
+ onBeforeImportParams: ["dataId", "formCode", 'file', 'resultData', 'done'],
209
+ onConfirmImportParams: ["dataId", "formCode", 'resultData', 'file', 'done', "close"],
210
+ onSuccessImportParams: ["dataId", "formCode", 'resultData', 'file'],
211
+ onImportRowParams: ["dataId", "formCode", "row", "index", "done"],
212
+ onValidateRowParams: ["dataId", "formCode", "row", "index"],
213
+ onImportParamsParams: ["dataId", "formCode", "resultData", "file"]
214
+ };
215
+ },
216
+ methods: {
217
+ confirmBdAttachSettingDialog(rows) {
218
+ if (rows.length) {
219
+ let row = rows[0];
220
+ this.optionModel.importAttachName = row.name;
221
+ this.optionModel.importAttachCode = row.code;
222
+ }
223
+ }
224
+ }
225
+ };
226
+ </script>
227
+
228
+ <style scoped>
229
+ .label-tip-icon {
230
+ margin-left: 4px;
231
+ color: #909399;
232
+ cursor: pointer;
233
+ font-size: 14px;
234
+ vertical-align: middle;
235
+ }
236
+ </style>
@@ -0,0 +1,51 @@
1
+ <template>
2
+ <base-input-number
3
+ :value="innerValue"
4
+ v-bind="$attrs"
5
+ v-on="listeners"
6
+ @input="onInput"
7
+ />
8
+ </template>
9
+
10
+ <script>
11
+ /**
12
+ * 未配置(null / undefined / 非正数)时显示空白,而不是 el-input-number 默认的 0。
13
+ * 清空后回写 null,运行时会回落到全局逻辑参数。
14
+ */
15
+ function toDisplayNumber(value) {
16
+ if (value == null || value === "") return undefined;
17
+ let num = Number(value);
18
+ if (!Number.isFinite(num) || num <= 0) return undefined;
19
+ return num;
20
+ }
21
+
22
+ function toStoredNumber(value) {
23
+ if (value == null || value === "") return null;
24
+ let num = Number(value);
25
+ if (!Number.isFinite(num) || num <= 0) return null;
26
+ return num;
27
+ }
28
+
29
+ export default {
30
+ name: "empty-number-input",
31
+ inheritAttrs: false,
32
+ props: {
33
+ value: {},
34
+ },
35
+ computed: {
36
+ innerValue() {
37
+ return toDisplayNumber(this.value);
38
+ },
39
+ listeners() {
40
+ let listeners = Object.assign({}, this.$listeners);
41
+ delete listeners.input;
42
+ return listeners;
43
+ },
44
+ },
45
+ methods: {
46
+ onInput(val) {
47
+ this.$emit("input", toStoredNumber(val));
48
+ },
49
+ },
50
+ };
51
+ </script>
@@ -19,10 +19,29 @@
19
19
  ></el-switch>
20
20
  </el-form-item>
21
21
  <el-form-item label="导出每页查询数量" class="form-item-label-top">
22
- <base-input-number
22
+ <empty-number-input
23
23
  v-model="optionModel.exportPageSize"
24
24
  :max="optionModel.showImageAtTable ? 150 : 1000"
25
- ></base-input-number>
25
+ :placeholder="'默认 ' + defaultPageSize"
26
+ ></empty-number-input>
27
+ </el-form-item>
28
+ <el-form-item label="最大查询总数" class="form-item-label-top">
29
+ <empty-number-input
30
+ v-model="optionModel.maxQueryTotal"
31
+ :placeholder="'默认 ' + defaultMaxQueryTotal"
32
+ ></empty-number-input>
33
+ <div class="export-item-columns-tip">
34
+ 条件导出最多拉取的行数。留空则使用全局逻辑参数(默认 {{ defaultMaxQueryTotal }})
35
+ </div>
36
+ </el-form-item>
37
+ <el-form-item label="每个文件最大数据量" class="form-item-label-top">
38
+ <empty-number-input
39
+ v-model="optionModel.limitFileSize"
40
+ :placeholder="'默认 ' + defaultLimitFileSize"
41
+ ></empty-number-input>
42
+ <div class="export-item-columns-tip">
43
+ 单个 Excel 最多行数,超出则分多个文件。留空则使用全局逻辑参数(默认 {{ defaultLimitFileSize }})
44
+ </div>
26
45
  </el-form-item>
27
46
  <el-form-item label="导出参数" label-width="150px">
28
47
  <a
@@ -80,12 +99,15 @@
80
99
  import i18n from "../../../../utils/i18n";
81
100
  import eventMixin from "../event-handler/eventMixin";
82
101
  import exportItemColumnsDialog from "../container-data-table/exportItemColumns-dialog.vue";
102
+ import { DEFAULT_CONDITION_EXPORT_CONFIG } from "@base/components/excelExport/conditionExportConfig";
103
+ import emptyNumberInput from "./empty-number-input.vue";
83
104
 
84
105
  export default {
85
106
  name: "select-export-item-button-editor",
86
107
  mixins: [i18n, eventMixin],
87
108
  components: {
88
109
  exportItemColumnsDialog,
110
+ emptyNumberInput,
89
111
  },
90
112
  props: {
91
113
  designer: Object,
@@ -98,6 +120,9 @@ export default {
98
120
  // 与数据表格属性面板同一套:脚本里可直接用 dataId / formCode
99
121
  tableConfigParams: ["dataId", "formCode"],
100
122
  showExportItemColumnsDialog: false,
123
+ defaultPageSize: DEFAULT_CONDITION_EXPORT_CONFIG.pageSize,
124
+ defaultMaxQueryTotal: DEFAULT_CONDITION_EXPORT_CONFIG.maxQueryTotal,
125
+ defaultLimitFileSize: DEFAULT_CONDITION_EXPORT_CONFIG.limitFileSize,
101
126
  };
102
127
  },
103
128
  methods: {