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.
Files changed (161) hide show
  1. package/package.json +6 -2
  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/bizTab/BizBillActions.vue +129 -0
  8. package/src/components/bizTab/BizTabListPage.vue +391 -0
  9. package/src/components/bizTab/README.md +378 -0
  10. package/src/components/bizTab/billTableUtil.js +48 -0
  11. package/src/components/bizTab/billValidators.js +136 -0
  12. package/src/components/bizTab/bizBillDetailMixin.js +705 -0
  13. package/src/components/bizTab/index.js +24 -0
  14. package/src/components/excelExport/exportFieldDialog.vue +23 -12
  15. package/src/components/excelExport/exportItemConfigUtil.js +30 -0
  16. package/src/components/excelExport/mixins.js +3 -3
  17. package/src/components/mobile/statusTag/mixins.js +1 -61
  18. package/src/components/mobile/wf/content.vue +1662 -1556
  19. package/src/components/mobile/wf/mixins/wfModifyDialogMixin.js +8 -6
  20. package/src/components/table/config.js +78 -78
  21. package/src/components/table/index.js +1276 -1276
  22. package/src/components/table/plugins/cell-area/index.js +1055 -0
  23. package/src/components/table/plugins/cell-area/index.scss +77 -0
  24. package/src/components/table/plugins/cell-area/util.js +224 -0
  25. package/src/components/table/tableForm.vue +330 -330
  26. package/src/components/table/tableFormMixin.js +318 -318
  27. package/src/components/table/vxeFilter/index.js +163 -163
  28. package/src/components/table/vxeFilter/mixin.js +316 -316
  29. package/src/components/wf/content.vue +1188 -1188
  30. package/src/components/wf/wf.js +40 -20
  31. package/src/components/wf/wfActionDropdown.vue +1 -1
  32. package/src/components/wf/wfActionItems.js +1 -1
  33. 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
  34. 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
  35. 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
  36. 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
  37. package/src/components/xform/form-designer/designer.js +15 -0
  38. package/src/components/xform/form-designer/form-widget/container-widget/data-table-widget.vue +269 -269
  39. package/src/components/xform/form-designer/form-widget/container-widget/detail-temp-widget.vue +132 -0
  40. package/src/components/xform/form-designer/form-widget/container-widget/detail-widget.vue +250 -250
  41. package/src/components/xform/form-designer/form-widget/dialog/fileReferenceDialog.vue +319 -320
  42. package/src/components/xform/form-designer/form-widget/dialog/formDialog.vue +365 -365
  43. package/src/components/xform/form-designer/form-widget/dialog/searchFormDialog.vue +554 -555
  44. package/src/components/xform/form-designer/form-widget/dialog/vabSearchDialog.vue +409 -409
  45. package/src/components/xform/form-designer/form-widget/field-widget/a-link-widget.vue +150 -132
  46. package/src/components/xform/form-designer/form-widget/field-widget/date-range-widget.vue +114 -114
  47. package/src/components/xform/form-designer/form-widget/field-widget/date-widget.vue +154 -154
  48. package/src/components/xform/form-designer/form-widget/field-widget/form-item-wrapper.vue +47 -1
  49. package/src/components/xform/form-designer/form-widget/field-widget/mixins/date-limit-mixin.js +178 -178
  50. package/src/components/xform/form-designer/form-widget/field-widget/mixins/time-limit-mixin.js +77 -77
  51. package/src/components/xform/form-designer/form-widget/field-widget/select-export-item-button-widget.vue +6 -0
  52. package/src/components/xform/form-designer/form-widget/field-widget/select-widget.vue +139 -139
  53. package/src/components/xform/form-designer/form-widget/field-widget/time-range-widget.vue +106 -106
  54. package/src/components/xform/form-designer/form-widget/field-widget/time-widget.vue +134 -134
  55. package/src/components/xform/form-designer/form-widget/field-widget/vabUpload-widget.vue +1 -0
  56. package/src/components/xform/form-designer/setting-panel/form-setting.vue +39 -39
  57. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/data-table-editor.vue +10 -10
  58. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/exportItemColumns-dialog.vue +438 -432
  59. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/table-column-dialog.vue +2103 -2103
  60. package/src/components/xform/form-designer/setting-panel/property-editor/container-detail/detail-temp-edito.vue +90 -0
  61. package/src/components/xform/form-designer/setting-panel/property-editor/container-grid/gutter-editor.vue +82 -82
  62. package/src/components/xform/form-designer/setting-panel/property-editor/container-list-h5/list-h5-editor.vue +19 -5
  63. package/src/components/xform/form-designer/setting-panel/property-editor/container-table/table-dynamicField-editor.vue +8 -8
  64. package/src/components/xform/form-designer/setting-panel/property-editor/dropdownFlag-editor.vue +137 -137
  65. package/src/components/xform/form-designer/setting-panel/property-editor/field-button/search-dialog-event-editor.vue +237 -237
  66. package/src/components/xform/form-designer/setting-panel/property-editor/field-date/date-defaultValue-editor.vue +43 -43
  67. package/src/components/xform/form-designer/setting-panel/property-editor/field-date-range/date-range-defaultValue-editor.vue +43 -43
  68. package/src/components/xform/form-designer/setting-panel/property-editor/field-import-button/import2-button-editor.vue +96 -96
  69. package/src/components/xform/form-designer/setting-panel/property-editor/field-table-export-button/select-export-item-button-editor.vue +51 -0
  70. package/src/components/xform/form-designer/setting-panel/property-editor/field-time/time-defaultValue-editor.vue +42 -42
  71. package/src/components/xform/form-designer/setting-panel/property-editor/field-time-range/time-range-defaultValue-editor.vue +43 -43
  72. package/src/components/xform/form-designer/setting-panel/property-editor/formScriptEnabled-editor.vue +158 -158
  73. package/src/components/xform/form-designer/setting-panel/property-editor/h5Span-editor.vue +51 -0
  74. package/src/components/xform/form-designer/setting-panel/property-editor/itemStyle-editor.vue +39 -0
  75. package/src/components/xform/form-designer/setting-panel/property-editor/name-editor.vue +188 -188
  76. package/src/components/xform/form-designer/setting-panel/property-editor/styleTempClass-editor.vue +51 -0
  77. package/src/components/xform/form-designer/setting-panel/property-editor/textFlag-editor.vue +347 -347
  78. package/src/components/xform/form-designer/setting-panel/propertyRegister.js +4 -0
  79. package/src/components/xform/form-designer/widget-panel/widgetsConfig.js +59 -3
  80. package/src/components/xform/form-render/container-item/data-table-mixin.js +151 -93
  81. package/src/components/xform/form-render/container-item/detail-h5-item.vue +183 -32
  82. package/src/components/xform/form-render/container-item/detail-temp-item.vue +110 -0
  83. package/src/components/xform/form-render/container-item/h5-card-pane-item.vue +160 -140
  84. package/src/components/xform/form-render/container-item/list-h5-item.vue +1688 -1700
  85. package/src/components/xform/form-render/index.vue +153 -147
  86. package/src/components/xform/form-render/indexMixin.js +12 -0
  87. package/src/components/xform/lang/en-US.js +10 -0
  88. package/src/components/xform/lang/zh-CN.js +12 -0
  89. package/src/components/xform/mixins/defaultHandle.js +707 -707
  90. package/src/components/xform/styles/h5.scss +1992 -0
  91. package/src/components/xform/utils/textMaskUtil.js +182 -179
  92. package/src/components/xform/utils/treeTableUtil.js +1292 -1265
  93. package/src/components/xform/utils/util.js +56 -11
  94. package/src/index.js +9 -4
  95. package/src/layout/components/Sidebar/default.vue +1 -1
  96. package/src/layout/components/extractedCode/viewDialog.vue +7 -7
  97. package/src/router/index.js +21 -0
  98. package/src/router/modules/customer.js +71 -14
  99. package/src/store/modules/permission.js +17 -18
  100. package/src/utils/pdfUtil.js +429 -429
  101. package/src/utils/resolveViewComponent.js +142 -16
  102. package/src/views/bd/project/branch/bd_branch/edit.vue +145 -0
  103. package/src/views/bd/project/branch/bd_branch/list.vue +72 -0
  104. package/src/views/bd/project/branch/bd_branch/menuKindDialog.vue +106 -0
  105. package/src/views/bd/project/branch/bd_branch/mixins/edit.js +189 -0
  106. package/src/views/bd/project/branch/bd_branch/mixins/list.js +124 -0
  107. package/src/views/bd/project/branch/bd_branch/mixins/menuKindDialog.js +85 -0
  108. package/src/views/bd/project/branch/form_script/list.vue +31 -0
  109. package/src/views/bd/project/branch/form_template/list.vue +30 -0
  110. package/src/views/bd/project/branch/menu_kind/list.vue +31 -0
  111. package/src/views/bd/project/common/form_script/list.vue +16 -0
  112. package/src/views/bd/project/common/form_template/list.vue +15 -0
  113. package/src/views/bd/project/common/menu_kind/list.vue +15 -0
  114. package/src/views/bd/project/core/branchContext.js +100 -0
  115. package/src/views/bd/project/core/branchPage.js +78 -0
  116. package/src/views/bd/project/core/branchPageWrap.vue +225 -0
  117. package/src/views/bd/project/core/branchScope.js +44 -0
  118. package/src/views/bd/project/core/branchSearchPage.js +285 -0
  119. package/src/views/bd/project/core/branchSelect.vue +85 -0
  120. package/src/views/bd/project/core/branchTreeBar.vue +81 -0
  121. package/src/views/bd/project/core/httpBranchPatch.js +58 -0
  122. package/src/views/bd/project/datatable/menu_kind/list.vue +15 -0
  123. package/src/views/bd/project/datatable/table_model/list.vue +15 -0
  124. package/src/views/bd/setting/bd_company_env/dialog.vue +174 -174
  125. package/src/views/bd/setting/table_model/edit.vue +1066 -1066
  126. package/src/views/bd/setting/table_model/mixins/edit.js +1455 -1455
  127. package/src/views/bd/setting/table_model/mixins/zdDialog.js +148 -148
  128. package/src/views/demo/bizTab/bill/billConfig.js +41 -0
  129. package/src/views/demo/bizTab/bill/detail.vue +436 -0
  130. package/src/views/demo/bizTab/bill/list.vue +288 -0
  131. package/src/views/demo/bizTab/bill/productDialog.vue +176 -0
  132. package/src/views/demo/bizTab/simple/billApi.js +123 -0
  133. package/src/views/demo/bizTab/simple/detail.vue +407 -0
  134. package/src/views/demo/bizTab/simple/list.vue +217 -0
  135. package/src/views/demo/bizTab/standalone/index.vue +121 -0
  136. package/src/views/demo/bizTab/wf/billConfig.js +44 -0
  137. package/src/views/demo/bizTab/wf/detail.vue +661 -0
  138. package/src/views/demo/bizTab/wf/list.vue +242 -0
  139. package/src/views/support/form-dialog-demo/demoPickerDialog.vue +72 -0
  140. package/src/views/support/form-dialog-demo/index.vue +537 -0
  141. package/src/views/user/file_view_ins/list.vue +3 -3
  142. package/src/views/user/home/default.vue +1 -1
  143. package/src/views/user/home/default2.vue +1 -1
  144. package/src/views/user/home/index.vue +8 -6
  145. package/src/views/user/home/wjl/content.vue +1569 -0
  146. package/src/views/user/notify_message/dialog.vue +7 -5
  147. package/src/views/user/outLink/cc_form_view.vue +188 -0
  148. package/src/views/user/outLink/form_view.vue +2 -2
  149. package/src/views/user/outLink/index.vue +4 -4
  150. package/src/views/user/outLink/view.vue +3 -3
  151. package/src/views/user/role/edit.vue +632 -632
  152. package/src/views/user/role/list.vue +260 -260
  153. package/src/views/user/wf/iframe/index.vue +3 -3
  154. package/src/views/user/wf/iframe/index2.vue +3 -3
  155. package/src/views/user/wf/wf_manage/list.vue +1112 -1116
  156. package/src/views/user/wf/wf_manage/list2.vue +9 -13
  157. package/src/views/user/wf/wf_manage/wfContentDialog.vue +8 -5
  158. package/src/components/xform/form-designer/form-widget/field-widget/dropdown-menu-widget.vue +0 -106
  159. package/src/components/xform/form-designer/form-widget/field-widget/tableexportbuttonwidget.vue +0 -99
  160. package/src/components/xform/form-render/container-item/list-h5-item2.vue +0 -1340
  161. package/src/utils/wf.js +0 -766
@@ -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;