cloud-web-corejs 1.0.280 → 1.0.282

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 (23) hide show
  1. package/package.json +1 -1
  2. package/src/components/VabUpload/image-viewer.vue +1 -1
  3. package/src/components/VabUpload/mixins.js +48 -15
  4. package/src/components/VabUpload/previewGroup.js +128 -0
  5. package/src/components/VabUpload/view.vue +1 -1
  6. package/src/components/excelExport/exportColumnMemory.js +118 -0
  7. package/src/components/excelExport/exportFieldDialog.vue +63 -40
  8. package/src/components/excelExport/exportItemConfigUtil.js +30 -0
  9. package/src/components/excelExport/index.js +30 -13
  10. package/src/components/excelExport/mixins.js +406 -68
  11. package/src/components/table/index.js +14 -1
  12. package/src/components/xform/form-designer/form-widget/field-widget/select-export-item-button-widget.vue +9 -0
  13. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/exportItemColumns-dialog.vue +7 -1
  14. package/src/components/xform/form-designer/setting-panel/property-editor/field-table-export-button/select-export-item-button-editor.vue +51 -0
  15. package/src/components/xform/form-designer/widget-panel/widgetsConfig.js +4 -0
  16. package/src/components/xform/form-render/container-item/data-table-item.vue +7 -4
  17. package/src/components/xform/form-render/container-item/data-table-mixin.js +369 -118
  18. package/src/components/xform/utils/dynamicSchemaUtil.js +24 -0
  19. package/src/components/xform/utils/textMaskUtil.js +6 -3
  20. package/src/layout/components/TagsView/index.vue +4 -2
  21. package/src/store/modules/tagsView.js +27 -3
  22. package/src/utils/pdfUtil.js +6 -1
  23. package/src/utils/request.js +17 -0
@@ -86,6 +86,7 @@ async function initVxeTable(option) {
86
86
  isQueryAllPage: true,
87
87
  exportColumns: null,
88
88
  exportItemColumns: null,
89
+ exportItemColumnsMap: null,
89
90
  };
90
91
 
91
92
  let isQueryAllPage = true;
@@ -168,7 +169,8 @@ async function initVxeTable(option) {
168
169
  // nOption.getCellValue = getCellValue;
169
170
  // nOption.createParams = createParams;
170
171
  // nOption.searchColumns = searchColumns;
171
- // 运行时可变状态(tableName / isQueryAllPage / exportColumns / exportItemColumns
172
+ // 运行时可变状态(tableName / isQueryAllPage / exportColumns / exportItemColumns /
173
+ // exportItemColumnsMap)
172
174
  // 一并放进 params:params 随 vxeOption 由页面持有,grid 被 v-if 销毁重建后依然带着这些值
173
175
  let params = {
174
176
  originOption,
@@ -978,12 +980,18 @@ function addTableJson(that, $grid, tableName, columns, success) {
978
980
  };
979
981
  let exportColumns = getTableStateValue($grid, "exportColumns");
980
982
  let exportItemColumns = getTableStateValue($grid, "exportItemColumns");
983
+ // 明细导出的勾选记忆按导出按钮分组(见 excelExport/exportColumnMemory.js);
984
+ // exportItemColumns 是分组之前的扁平表,旧记录里还有,只读不再写,故一并原样存回。
985
+ let exportItemColumnsMap = getTableStateValue($grid, "exportItemColumnsMap");
981
986
  if (exportColumns && exportColumns.length) {
982
987
  jsonData.exportColumns = exportColumns;
983
988
  }
984
989
  if (exportItemColumns && exportItemColumns.length) {
985
990
  jsonData.exportItemColumns = exportItemColumns;
986
991
  }
992
+ if (exportItemColumnsMap && Object.keys(exportItemColumnsMap).length) {
993
+ jsonData.exportItemColumnsMap = exportItemColumnsMap;
994
+ }
987
995
  let json = encodeURIComponent(JSON.stringify(jsonData));
988
996
 
989
997
  let url = USER_PREFIX + "/table_column/addTableJson";
@@ -1081,6 +1089,11 @@ function initExportColumns($grid, tableState, json) {
1081
1089
  tableState.exportItemColumns = json.exportItemColumns;
1082
1090
  setTableState($grid, "exportItemColumns", json.exportItemColumns);
1083
1091
  }
1092
+ let itemMap = json?.exportItemColumnsMap;
1093
+ if (itemMap && Object.keys(itemMap).length) {
1094
+ tableState.exportItemColumnsMap = itemMap;
1095
+ setTableState($grid, "exportItemColumnsMap", itemMap);
1096
+ }
1084
1097
  }
1085
1098
 
1086
1099
  function initSearchColumns(oriColumns, syncColumns) {
@@ -103,6 +103,15 @@ export default {
103
103
  targetRef: this.field.options.tableRef || null,
104
104
  pageSize: this.field.options.exportPageSize || null,
105
105
  showImageAtTable: this.field.options.showImageAtTable || null,
106
+ // 明细导出的列 / 脚本编码 / 取数参数三项各自独立:按钮上维护了哪项就以哪项为准,
107
+ // 留空的那项沿用数据表格属性上那套。参数脚本原样下发,由数据表格求值(this 是
108
+ // 表格组件,与配在表格属性上时同义)
109
+ exportItemColumns: this.field.options.exportItemColumns || null,
110
+ exportItemScriptCode: this.field.options.exportItemScriptCode || null,
111
+ exportItemParam: this.field.options.exportItemParam || null,
112
+ // 字段勾选记忆按按钮分组存放,组件名是唯一且稳定的分组标识(见 exportColumnMemory.js)。
113
+ // 同一张表挂多个明细导出按钮时,各按钮的勾选互不覆盖。
114
+ exportButtonName: this.field.options.name || null,
106
115
  };
107
116
  let tableExportParam = this.handleCustomEvent(this.field.options.tableExportParam);
108
117
  let options = { ...opt, ...tableExportParam, type: type };
@@ -353,7 +353,13 @@ export default {
353
353
  return;
354
354
  }
355
355
  }
356
- this.optionModel.exportItemColumns = this.$baseLodash.cloneDeep(this.tableData);
356
+ // 用 $set:导出按钮是后加的宿主,历史表单 JSON 里没有 exportItemColumns 这个键,
357
+ // 直接赋值不会触发「已维护」文案更新
358
+ this.$set(
359
+ this.optionModel,
360
+ "exportItemColumns",
361
+ this.$baseLodash.cloneDeep(this.tableData)
362
+ );
357
363
  this.closeHandle();
358
364
  },
359
365
  generateRow() {
@@ -34,16 +34,59 @@
34
34
  <i class="el-icon-edit"></i>
35
35
  </a>
36
36
  </el-form-item>
37
+ <el-form-item label="明细导出脚本编码" class="form-item-label-top">
38
+ <el-input v-model="optionModel.exportItemScriptCode"></el-input>
39
+ </el-form-item>
40
+ <el-form-item label="明细导出查询参数">
41
+ <a
42
+ href="javascript:void(0);"
43
+ class="a-link link-oneLind"
44
+ @click="editEventHandler('exportItemParam', tableConfigParams)"
45
+ >
46
+ <span>{{ optionModel.exportItemParam }}</span>
47
+ <i class="el-icon-edit"></i>
48
+ </a>
49
+ </el-form-item>
50
+ <el-form-item label="明细导出列维护">
51
+ <a
52
+ href="javascript:void(0);"
53
+ class="a-link link-oneLind"
54
+ @click="showExportItemColumnsDialog = true"
55
+ >
56
+ <span>{{
57
+ optionModel.exportItemColumns && optionModel.exportItemColumns.length
58
+ ? "已维护"
59
+ : null
60
+ }}</span>
61
+ <i class="el-icon-edit"></i>
62
+ </a>
63
+ </el-form-item>
64
+ <el-form-item label-width="0">
65
+ <div class="export-item-columns-tip">
66
+ 脚本编码、查询参数、导出列三项各自独立:留空的那项沿用数据表格属性上配的,维护了就以本按钮为准。
67
+ </div>
68
+ </el-form-item>
69
+ <exportItemColumnsDialog
70
+ v-if="showExportItemColumnsDialog"
71
+ :visiable.sync="showExportItemColumnsDialog"
72
+ :designer="designer"
73
+ :selectedWidget="selectedWidget"
74
+ :optionModel="optionModel"
75
+ />
37
76
  </div>
38
77
  </template>
39
78
 
40
79
  <script>
41
80
  import i18n from "../../../../utils/i18n";
42
81
  import eventMixin from "../event-handler/eventMixin";
82
+ import exportItemColumnsDialog from "../container-data-table/exportItemColumns-dialog.vue";
43
83
 
44
84
  export default {
45
85
  name: "select-export-item-button-editor",
46
86
  mixins: [i18n, eventMixin],
87
+ components: {
88
+ exportItemColumnsDialog,
89
+ },
47
90
  props: {
48
91
  designer: Object,
49
92
  selectedWidget: Object,
@@ -52,6 +95,9 @@ export default {
52
95
  data() {
53
96
  return {
54
97
  eventParams: [],
98
+ // 与数据表格属性面板同一套:脚本里可直接用 dataId / formCode
99
+ tableConfigParams: ["dataId", "formCode"],
100
+ showExportItemColumnsDialog: false,
55
101
  };
56
102
  },
57
103
  methods: {
@@ -71,4 +117,9 @@ export default {
71
117
  ::v-deep.export-divider .el-divider__text.is-center {
72
118
  width: 162px;
73
119
  }
120
+ .export-item-columns-tip {
121
+ line-height: 18px;
122
+ color: #909399;
123
+ font-size: 12px;
124
+ }
74
125
  </style>
@@ -3318,6 +3318,10 @@ export const advancedFields = [
3318
3318
  showImageAtTable: false,
3319
3319
  selectExportItemFlag: 1,
3320
3320
  exportItemConditionEnabled: !1,
3321
+ // 按钮级明细导出配置:三项各自独立,留空的那项沿用数据表格属性上维护的
3322
+ exportItemColumns: [],
3323
+ exportItemScriptCode: null,
3324
+ exportItemParam: "",
3321
3325
 
3322
3326
  onCreated: "",
3323
3327
  onMounted: "",
@@ -183,7 +183,10 @@
183
183
  <div>
184
184
  <template v-for="(fieldWidget, index) in obj.column.params.widgetList">
185
185
  <component
186
- v-if="!!fieldSchemaMap[obj.row._X_ROW_KEY] && !!obj.row._X_ROW_KEY"
186
+ v-if="
187
+ !!obj.row._X_ROW_KEY &&
188
+ (!!getRowFieldSchema(obj.row) || !!obj.row._X_EXPORT_ROW)
189
+ "
187
190
  :is="getColumnWidgetName(fieldWidget)"
188
191
  v-bind="getRowWidgetOption(obj, fieldWidget)"
189
192
  :form-model="globalModel.formModel"
@@ -205,15 +208,15 @@
205
208
  </template>
206
209
  <template #editWidget="obj">
207
210
  <component
208
- v-if="!!fieldSchemaMap[obj.row._X_ROW_KEY]"
211
+ v-if="!!getRowFieldSchema(obj.row)"
209
212
  :is="getColumnWidgetName(obj.column.params.editWidget)"
210
- :field="fieldSchemaMap[obj.row._X_ROW_KEY][obj.column.params.editWidget.id]"
213
+ :field="getRowFieldSchema(obj.row)[obj.column.params.editWidget.id]"
211
214
  :form-model="globalModel.formModel"
212
215
  :designer="null"
213
216
  :key="
214
217
  obj.rowIndex +
215
218
  '-' +
216
- fieldSchemaMap[obj.row._X_ROW_KEY][obj.column.params.editWidget.id].id
219
+ getRowFieldSchema(obj.row)[obj.column.params.editWidget.id].id
217
220
  "
218
221
  :parent-widget="widget"
219
222
  :columnConfig="obj.column.params.columnConfig"