cloud-web-corejs 1.0.54-dev.810 → 1.0.54-dev.811

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 (83) hide show
  1. package/package.json +1 -1
  2. package/src/components/VabUpload/image-viewer.vue +442 -442
  3. package/src/components/VabUpload/index.vue +44 -2
  4. package/src/components/VabUpload/mixins.js +126 -19
  5. package/src/components/VabUpload/view.vue +247 -209
  6. package/src/components/baseTabs/mixins.js +181 -181
  7. package/src/components/mobile/wf/content.vue +1665 -1556
  8. package/src/components/table/config.js +78 -78
  9. package/src/components/table/index.js +1276 -1276
  10. package/src/components/table/tableForm.vue +330 -330
  11. package/src/components/table/tableFormMixin.js +318 -318
  12. package/src/components/table/vxeFilter/index.js +163 -163
  13. package/src/components/table/vxeFilter/mixin.js +316 -316
  14. package/src/components/wf/content.vue +1188 -1188
  15. package/src/components/wf/wf.js +29 -12
  16. package/src/components/wf/wfActionDropdown.vue +1 -1
  17. package/src/components/wf/wfActionItems.js +1 -1
  18. 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
  19. 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
  20. 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
  21. 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
  22. package/src/components/xform/form-designer/designer.js +15 -0
  23. package/src/components/xform/form-designer/form-widget/container-widget/data-table-widget.vue +269 -269
  24. package/src/components/xform/form-designer/form-widget/container-widget/detail-temp-widget.vue +132 -0
  25. package/src/components/xform/form-designer/form-widget/container-widget/detail-widget.vue +250 -250
  26. package/src/components/xform/form-designer/form-widget/dialog/fileReferenceDialog.vue +319 -320
  27. package/src/components/xform/form-designer/form-widget/dialog/formDialog.vue +365 -365
  28. package/src/components/xform/form-designer/form-widget/dialog/searchFormDialog.vue +554 -555
  29. package/src/components/xform/form-designer/form-widget/dialog/vabSearchDialog.vue +409 -409
  30. package/src/components/xform/form-designer/form-widget/field-widget/a-link-widget.vue +150 -132
  31. package/src/components/xform/form-designer/form-widget/field-widget/date-range-widget.vue +114 -114
  32. package/src/components/xform/form-designer/form-widget/field-widget/date-widget.vue +154 -154
  33. package/src/components/xform/form-designer/form-widget/field-widget/form-item-wrapper.vue +29 -1
  34. package/src/components/xform/form-designer/form-widget/field-widget/mixins/date-limit-mixin.js +178 -178
  35. package/src/components/xform/form-designer/form-widget/field-widget/mixins/time-limit-mixin.js +77 -77
  36. package/src/components/xform/form-designer/form-widget/field-widget/select-widget.vue +139 -139
  37. package/src/components/xform/form-designer/form-widget/field-widget/time-range-widget.vue +106 -106
  38. package/src/components/xform/form-designer/form-widget/field-widget/time-widget.vue +134 -134
  39. package/src/components/xform/form-designer/form-widget/field-widget/vabUpload-widget.vue +1 -0
  40. package/src/components/xform/form-designer/setting-panel/form-setting.vue +39 -39
  41. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/exportItemColumns-dialog.vue +438 -438
  42. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/table-column-dialog.vue +2103 -2103
  43. package/src/components/xform/form-designer/setting-panel/property-editor/container-detail/detail-temp-edito.vue +90 -0
  44. package/src/components/xform/form-designer/setting-panel/property-editor/container-grid/gutter-editor.vue +82 -82
  45. package/src/components/xform/form-designer/setting-panel/property-editor/container-table/table-dynamicField-editor.vue +8 -8
  46. package/src/components/xform/form-designer/setting-panel/property-editor/dropdownFlag-editor.vue +137 -137
  47. package/src/components/xform/form-designer/setting-panel/property-editor/field-button/search-dialog-event-editor.vue +237 -237
  48. package/src/components/xform/form-designer/setting-panel/property-editor/field-date/date-defaultValue-editor.vue +43 -43
  49. package/src/components/xform/form-designer/setting-panel/property-editor/field-date-range/date-range-defaultValue-editor.vue +43 -43
  50. package/src/components/xform/form-designer/setting-panel/property-editor/field-import-button/import2-button-editor.vue +96 -96
  51. package/src/components/xform/form-designer/setting-panel/property-editor/field-time/time-defaultValue-editor.vue +42 -42
  52. package/src/components/xform/form-designer/setting-panel/property-editor/field-time-range/time-range-defaultValue-editor.vue +43 -43
  53. package/src/components/xform/form-designer/setting-panel/property-editor/formScriptEnabled-editor.vue +158 -158
  54. package/src/components/xform/form-designer/setting-panel/property-editor/h5Span-editor.vue +51 -0
  55. package/src/components/xform/form-designer/setting-panel/property-editor/itemStyle-editor.vue +39 -0
  56. package/src/components/xform/form-designer/setting-panel/property-editor/name-editor.vue +188 -188
  57. package/src/components/xform/form-designer/setting-panel/property-editor/styleTempClass-editor.vue +51 -0
  58. package/src/components/xform/form-designer/setting-panel/property-editor/textFlag-editor.vue +347 -347
  59. package/src/components/xform/form-designer/setting-panel/propertyRegister.js +4 -0
  60. package/src/components/xform/form-designer/widget-panel/widgetsConfig.js +55 -3
  61. package/src/components/xform/form-render/container-item/data-table-mixin.js +33 -12
  62. package/src/components/xform/form-render/container-item/detail-h5-item.vue +183 -32
  63. package/src/components/xform/form-render/container-item/detail-temp-item.vue +110 -0
  64. package/src/components/xform/form-render/container-item/h5-card-pane-item.vue +160 -140
  65. package/src/components/xform/form-render/container-item/list-h5-item.vue +1642 -1700
  66. package/src/components/xform/form-render/index.vue +153 -147
  67. package/src/components/xform/form-render/indexMixin.js +12 -0
  68. package/src/components/xform/lang/en-US.js +10 -0
  69. package/src/components/xform/lang/zh-CN.js +12 -0
  70. package/src/components/xform/mixins/defaultHandle.js +707 -707
  71. package/src/components/xform/styles/h5.scss +1633 -0
  72. package/src/components/xform/utils/textMaskUtil.js +182 -182
  73. package/src/components/xform/utils/treeTableUtil.js +1292 -1265
  74. package/src/components/xform/utils/util.js +56 -11
  75. package/src/utils/pdfUtil.js +429 -429
  76. package/src/views/bd/setting/bd_company_env/dialog.vue +174 -174
  77. package/src/views/bd/setting/table_model/edit.vue +1066 -1066
  78. package/src/views/bd/setting/table_model/mixins/edit.js +1455 -1455
  79. package/src/views/bd/setting/table_model/mixins/zdDialog.js +148 -148
  80. package/src/views/user/home/wjl/content.vue +394 -31
  81. package/src/views/user/role/edit.vue +632 -632
  82. package/src/views/user/role/list.vue +260 -260
  83. package/src/views/user/wf/wf_manage/list.vue +1116 -1116
@@ -14,9 +14,17 @@
14
14
  >
15
15
  <div class="upload-box" style="margin-left:-20px;margin-right:-20px;">
16
16
  <div class="upload-b_left" @click="choosePasteArea" :class="{on:pasteAreaStatus}"
17
- v-show="option.hidePasteArea!==true">
17
+ v-show="option.hidePasteArea!==true"
18
+ @dragenter="handlePasteAreaDragEnter"
19
+ @dragover="handlePasteAreaDragOver"
20
+ @dragleave="handlePasteAreaDragLeave"
21
+ @drop="handlePasteAreaDrop">
18
22
  <div class="t"><i
19
- class="el-icon-warning-outline"></i>{{ $t2('选择此处,可粘贴文件', 'components.VabUpload.tip') }}(Ctrl+V)
23
+ class="el-icon-warning-outline"></i>{{ $t2('选择此处,可粘贴文件', 'components.VabUpload.tip') }}(Ctrl+V){{ $t1(',或将文件拖拽到此处') }}
24
+ </div>
25
+ <div class="drag-mask" v-show="pasteAreaDragging">
26
+ <i class="el-icon-upload"></i>
27
+ <p>{{ $t1('松开鼠标,添加文件') }}</p>
20
28
  </div>
21
29
  <ul class="el-upload-list el-upload-list--picture">
22
30
  <div class="nodata" v-if="pasteList.length == 0">
@@ -239,4 +247,38 @@ export default {
239
247
  .showPasteArea {
240
248
  margin-left:291px
241
249
  }
250
+
251
+ /* 左侧粘贴区支持拖拽文件,拖拽时铺一层提示遮罩(pointer-events:none 保证拖拽事件仍落到容器上) */
252
+ .upload-b_left {
253
+ position: relative;
254
+
255
+ .drag-mask {
256
+ position: absolute;
257
+ top: 0;
258
+ left: 0;
259
+ right: 0;
260
+ bottom: 0;
261
+ z-index: 2;
262
+ display: flex;
263
+ flex-direction: column;
264
+ align-items: center;
265
+ justify-content: center;
266
+ margin: 4px;
267
+ border: dashed 2px $--color-primary;
268
+ border-radius: 9px;
269
+ background: rgba(255, 255, 255, 0.88);
270
+ color: $--color-primary;
271
+ pointer-events: none;
272
+
273
+ i {
274
+ font-size: 46px;
275
+ margin-bottom: 8px;
276
+ }
277
+
278
+ p {
279
+ margin: 0;
280
+ font-size: 12px;
281
+ }
282
+ }
283
+ }
242
284
  </style>
@@ -114,6 +114,8 @@ tmixins = {
114
114
  showPrivateProfileDialog: false,
115
115
  pasteList: [],
116
116
  pasteAreaStatus: false,
117
+ pasteAreaDragging: false,
118
+ pasteAreaDragDepth: 0,
117
119
  option: {},
118
120
  editFileIndex: -1,
119
121
  showFileNameDialog: false,
@@ -380,6 +382,8 @@ tmixins = {
380
382
  this.clearFileInfo();
381
383
  this.initPickUploadMode();
382
384
  this.pasteAreaStatus = false;
385
+ this.pasteAreaDragging = false;
386
+ this.pasteAreaDragDepth = 0;
383
387
  this.dialogFormVisible = true;
384
388
  /*document.removeEventListener('paste', this.pasteEvent);
385
389
  document.addEventListener('paste', this.pasteEvent);*/
@@ -1212,27 +1216,93 @@ tmixins = {
1212
1216
  if (!(e.clipboardData && e.clipboardData.items)) {
1213
1217
  return;
1214
1218
  }
1215
- let files = Array.from(e.clipboardData.files);
1219
+ this.appendPasteFiles(Array.from(e.clipboardData.files));
1220
+ },
1221
+ /* 追加原始文件到左侧待确认列表(粘贴、拖拽共用) */
1222
+ appendPasteFiles(files) {
1223
+ if (!files || !files.length) {
1224
+ return;
1225
+ }
1216
1226
  let getFileSuffix = this.$commonFileUtil.getFileSuffix;
1217
- if (files.length) {
1218
- let fileList = files.map((rawFile) => {
1219
- let name = rawFile.name;
1220
- let index = name.lastIndexOf(".");
1221
- let fileSuffix = getFileSuffix(name);
1222
- let fileName =
1223
- index >= 0 ? name.substring(0, index).toString() : name.toString();
1224
- let file = {
1225
- name: rawFile.name,
1226
- size: rawFile.size,
1227
- raw: rawFile,
1228
- showUrl: URL.createObjectURL(rawFile),
1229
- fileName: fileName,
1230
- fileSuffix: fileSuffix,
1231
- };
1232
- return file;
1227
+ let fileList = files.map((rawFile) => {
1228
+ let name = rawFile.name;
1229
+ let index = name.lastIndexOf(".");
1230
+ let fileSuffix = getFileSuffix(name);
1231
+ let fileName =
1232
+ index >= 0 ? name.substring(0, index).toString() : name.toString();
1233
+ let file = {
1234
+ name: rawFile.name,
1235
+ size: rawFile.size,
1236
+ raw: rawFile,
1237
+ showUrl: URL.createObjectURL(rawFile),
1238
+ fileName: fileName,
1239
+ fileSuffix: fileSuffix,
1240
+ };
1241
+ return file;
1242
+ });
1243
+ this.pasteList.push(...fileList);
1244
+ },
1245
+ isFileDragEvent(e) {
1246
+ let dataTransfer = e.dataTransfer;
1247
+ if (!dataTransfer || !dataTransfer.types) return false;
1248
+ return Array.prototype.indexOf.call(dataTransfer.types, "Files") >= 0;
1249
+ },
1250
+ handlePasteAreaDragEnter(e) {
1251
+ if (!this.isFileDragEvent(e)) return;
1252
+ e.preventDefault();
1253
+ e.stopPropagation();
1254
+ this.pasteAreaDragDepth++;
1255
+ this.pasteAreaDragging = true;
1256
+ },
1257
+ handlePasteAreaDragOver(e) {
1258
+ if (!this.isFileDragEvent(e)) return;
1259
+ e.preventDefault();
1260
+ e.stopPropagation();
1261
+ e.dataTransfer.dropEffect = "copy";
1262
+ this.pasteAreaDragging = true;
1263
+ },
1264
+ handlePasteAreaDragLeave(e) {
1265
+ if (!this.isFileDragEvent(e)) return;
1266
+ e.preventDefault();
1267
+ e.stopPropagation();
1268
+ this.pasteAreaDragDepth--;
1269
+ if (this.pasteAreaDragDepth <= 0) {
1270
+ this.pasteAreaDragDepth = 0;
1271
+ this.pasteAreaDragging = false;
1272
+ }
1273
+ },
1274
+ handlePasteAreaDrop(e) {
1275
+ this.pasteAreaDragDepth = 0;
1276
+ this.pasteAreaDragging = false;
1277
+ if (!this.isFileDragEvent(e)) return;
1278
+ e.preventDefault();
1279
+ e.stopPropagation();
1280
+ /* 拖入即视为选中该区域,与粘贴保持一致 */
1281
+ this.pasteAreaStatus = true;
1282
+ let dataTransfer = e.dataTransfer;
1283
+ let items = dataTransfer.items ? Array.from(dataTransfer.items) : [];
1284
+ let hasDirectory = false;
1285
+ let files = Array.from(dataTransfer.files || []).filter(
1286
+ (rawFile, index) => {
1287
+ let item = items[index];
1288
+ let getAsEntry = item && item.webkitGetAsEntry;
1289
+ let entry = getAsEntry ? item.webkitGetAsEntry() : null;
1290
+ if (entry && entry.isDirectory) {
1291
+ hasDirectory = true;
1292
+ return false;
1293
+ }
1294
+ return true;
1295
+ }
1296
+ );
1297
+ if (hasDirectory) {
1298
+ this.$message({
1299
+ message: this.$t1("不支持上传文件夹,已自动忽略"),
1300
+ type: "warning",
1301
+ showClose: true,
1302
+ duration: 3000,
1233
1303
  });
1234
- this.pasteList.push(...fileList);
1235
1304
  }
1305
+ this.appendPasteFiles(files);
1236
1306
  },
1237
1307
  deletePasteFile(index) {
1238
1308
  this.pasteList.splice(index, 1);
@@ -1385,6 +1455,10 @@ tViewMixins = {
1385
1455
  chooseIndex: 0,
1386
1456
  fileServerInfo: {},
1387
1457
  model: null,
1458
+ // H5 非图片文件预览弹框,见 openFilePreviewDialog
1459
+ showFilePreviewDialog: false,
1460
+ previewFileUrl: null,
1461
+ previewFileName: null,
1388
1462
  };
1389
1463
  },
1390
1464
  computed: {
@@ -1745,8 +1819,41 @@ tViewMixins = {
1745
1819
  fileServerPreviewEnabled &&
1746
1820
  this.$commonFileUtil.isPreviewFile(url)
1747
1821
  ) {
1748
- this.$openFilePreview(url);
1822
+ /* 非图片文件:PC 走 $openFilePreview —— 它拿到预览地址后是 openInNewTab
1823
+ (见 utils/vab.js),在 H5 上等于跳出应用、返回全靠浏览器后退,体验断裂。
1824
+ H5 改成本组件内的全屏弹框套 iframe。开关由宿主传 h5Preview(xform 的
1825
+ vabUpload-widget 按 formConfig.layoutType === 'H5' 给),不传则维持原样。 */
1826
+ if (this.$attrs.h5Preview === true || this.$attrs.h5Preview === "true") {
1827
+ this.openFilePreviewDialog(url, this.getAttachmentName(attachment));
1828
+ } else {
1829
+ this.$openFilePreview(url);
1830
+ }
1831
+ }
1832
+ },
1833
+ /**
1834
+ * H5 的非图片文件预览:取预览地址后用弹框里的 iframe 承载。
1835
+ * 取址接口与 $openFilePreview 完全一致,只是不跳新标签页。
1836
+ */
1837
+ openFilePreviewDialog(url, name) {
1838
+ let fileSuffix = this.$commonFileUtil.getFileSuffix(url);
1839
+ if (!this.$commonFileUtil.isPreviewFile(url)) {
1840
+ return;
1749
1841
  }
1842
+ this.$http({
1843
+ url: USER_PREFIX + "/sf_common/getFilePreviewUrl",
1844
+ method: "post",
1845
+ data: {
1846
+ url: url,
1847
+ },
1848
+ isLoading: true,
1849
+ success: (res) => {
1850
+ if (!res.objx) return;
1851
+ this.previewFileUrl = res.objx;
1852
+ // 名字取不到就退回后缀,别让标题栏空着
1853
+ this.previewFileName = name || fileSuffix || "";
1854
+ this.showFilePreviewDialog = true;
1855
+ },
1856
+ });
1750
1857
  },
1751
1858
  getAttachmentName(attachment) {
1752
1859
  let name = null;