agilebuilder-ui 1.1.52-sit2 → 1.1.52-sit4

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 (80) hide show
  1. package/lib/{401-3679cee8.js → 401-3c9006b5.js} +1 -1
  2. package/lib/{404-34bbe356.js → 404-e7bdd7c7.js} +1 -1
  3. package/lib/{_baseUniq-BXtq6_NW-8cdcdd11.js → _baseUniq-BXtq6_NW-3a7d3f17.js} +2 -2
  4. package/lib/{arc-Js_tyW10-75b7b49e.js → arc-Js_tyW10-2cb69779.js} +1 -1
  5. package/lib/architecture-O4VJ6CD3-ZoZ2IAk2-5072a223.js +11 -0
  6. package/lib/{architectureDiagram-SUXI7LT5-kyYGGrHN-81acf342.js → architectureDiagram-SUXI7LT5-kyYGGrHN-38cbd2fd.js} +8 -8
  7. package/lib/{blockDiagram-6J76NXCF-IAr4zDV3-6a17ddab.js → blockDiagram-6J76NXCF-IAr4zDV3-00466034.js} +7 -7
  8. package/lib/{c4Diagram-6F6E4RAY-Dv27rXcJ-6027dcbd.js → c4Diagram-6F6E4RAY-Dv27rXcJ-191f3252.js} +3 -3
  9. package/lib/{channel-BBZy6zOT-23dee0a1.js → channel-BBZy6zOT-7e3ef2cb.js} +1 -1
  10. package/lib/{chunk-353BL4L5-Dn_Y_Yna-59ca6e29.js → chunk-353BL4L5-Dn_Y_Yna-e718e248.js} +1 -1
  11. package/lib/{chunk-67H74DCK-Br5U8bfD-0c6a8e17.js → chunk-67H74DCK-Br5U8bfD-90fa2102.js} +1 -1
  12. package/lib/{chunk-AACKK3MU-DH_MKxca-d100258d.js → chunk-AACKK3MU-DH_MKxca-1c4bd6a2.js} +1 -1
  13. package/lib/{chunk-BFAMUDN2-DHLCoYMN-6c881a5f.js → chunk-BFAMUDN2-DHLCoYMN-ab34af38.js} +1 -1
  14. package/lib/{chunk-E2GYISFI-DQPHyyga-ec85962d.js → chunk-E2GYISFI-DQPHyyga-e0e58eaf.js} +1 -1
  15. package/lib/{chunk-OW32GOEJ-CQOSE6Bn-5c8debc2.js → chunk-OW32GOEJ-CQOSE6Bn-8525cbf5.js} +3 -3
  16. package/lib/{chunk-SKB7J2MH-BlwHRDiW-e035829f.js → chunk-SKB7J2MH-BlwHRDiW-1c032bed.js} +1 -1
  17. package/lib/{chunk-SZ463SBG-DEp8buKJ-cf0bf336.js → chunk-SZ463SBG-DEp8buKJ-0116ce78.js} +4 -4
  18. package/lib/{classDiagram-M3E45YP4-D0ySDe-v-1d2f11eb.js → classDiagram-M3E45YP4-D0ySDe-v-e46e4a08.js} +6 -6
  19. package/lib/{classDiagram-v2-YAWTLIQI-D0ySDe-v-1d2f11eb.js → classDiagram-v2-YAWTLIQI-D0ySDe-v-e46e4a08.js} +6 -6
  20. package/lib/{clone-CEJtuQzg-50b7144f.js → clone-CEJtuQzg-bda6855e.js} +1 -1
  21. package/lib/{dagre-JOIXM2OF-5zx0JY2T-fa401842.js → dagre-JOIXM2OF-5zx0JY2T-1a44ff28.js} +7 -7
  22. package/lib/{diagram-5UYTHUR4-C19nyAKc-1a5fd93d.js → diagram-5UYTHUR4-C19nyAKc-c2721ab0.js} +7 -7
  23. package/lib/{diagram-VMROVX33-DkGwo-hj-e52fc1cd.js → diagram-VMROVX33-DkGwo-hj-f0b0f791.js} +8 -8
  24. package/lib/{diagram-ZTM2IBQH-CBgHCu9L-ca602a54.js → diagram-ZTM2IBQH-CBgHCu9L-d0046301.js} +7 -7
  25. package/lib/{erDiagram-3M52JZNH-cttdAJXW-2852e10a.js → erDiagram-3M52JZNH-cttdAJXW-168c6882.js} +5 -5
  26. package/lib/{flowDiagram-KYDEHFYC-9HpsqDdB-a8271dc9.js → flowDiagram-KYDEHFYC-9HpsqDdB-0e8d608e.js} +6 -6
  27. package/lib/{ganttDiagram-EK5VF46D-8QB3ofs6-4a3222cf.js → ganttDiagram-EK5VF46D-8QB3ofs6-383a0ba7.js} +3 -3
  28. package/lib/gitGraph-ZV4HHKMB-BSmtVGRu-3890ddfa.js +11 -0
  29. package/lib/{gitGraphDiagram-GW3U2K7C-DNzc0Vx_-e2a30c6e.js → gitGraphDiagram-GW3U2K7C-DNzc0Vx_-8d58e82c.js} +8 -8
  30. package/lib/{graph-3zJxsO-i-c0afd901.js → graph-3zJxsO-i-c2926682.js} +3 -3
  31. package/lib/{iframe-page-b5d4ee39.js → iframe-page-243e0647.js} +1 -1
  32. package/lib/{index-fe3177e1.js → index-05caa4e9.js} +152 -67
  33. package/lib/info-63CPKGFF-C8sYWczU-fc4f1c77.js +11 -0
  34. package/lib/{infoDiagram-LHK5PUON-C-vFFPTf-a09c9fd4.js → infoDiagram-LHK5PUON-C-vFFPTf-cef69df2.js} +6 -6
  35. package/lib/{journeyDiagram-EWQZEKCU-BJrw4-AG-8818d955.js → journeyDiagram-EWQZEKCU-BJrw4-AG-6fc90ea2.js} +5 -5
  36. package/lib/{kanban-definition-ZSS6B67P-BptAnqU--205a85fc.js → kanban-definition-ZSS6B67P-BptAnqU--d90950db.js} +3 -3
  37. package/lib/{layout-sGZIJplX-62fc8565.js → layout-sGZIJplX-456c46ca.js} +5 -5
  38. package/lib/{linear-DqgVh5FN-e4e3259d.js → linear-DqgVh5FN-49dd3d5c.js} +1 -1
  39. package/lib/{mermaid-parser.core-CH9ryA1K-cf5fffbc.js → mermaid-parser.core-CH9ryA1K-50fe3093.js} +12 -12
  40. package/lib/{mermaid.core-CAqkCmS1-c43e83d3.js → mermaid.core-CAqkCmS1-6e78dc56.js} +30 -30
  41. package/lib/{min-BngCxx8g-6901cf44.js → min-BngCxx8g-a9c205d3.js} +3 -3
  42. package/lib/{mindmap-definition-6CBA2TL7-Cp_EeEsh-aec84d07.js → mindmap-definition-6CBA2TL7-Cp_EeEsh-b353891f.js} +2 -2
  43. package/lib/packet-HUATNLJX-bfFWFja0-0d2443ee.js +11 -0
  44. package/lib/pie-WTHONI2E-QPrWs3SR-c29ef725.js +11 -0
  45. package/lib/{pieDiagram-NIOCPIFQ-C46Y_4C6-e5ab57d1.js → pieDiagram-NIOCPIFQ-C46Y_4C6-a7d9934d.js} +8 -8
  46. package/lib/{quadrantDiagram-2OG54O6I-Dgf6d6F_-54d39a8c.js → quadrantDiagram-2OG54O6I-Dgf6d6F_-d2069009.js} +3 -3
  47. package/lib/radar-NJJJXTRR-BnUCJhQL-e78101eb.js +11 -0
  48. package/lib/{requirementDiagram-QOLK2EJ7-CSF6N7HA-e33dca67.js → requirementDiagram-QOLK2EJ7-CSF6N7HA-7f0a0f48.js} +4 -4
  49. package/lib/{sankeyDiagram-4UZDY2LN-BAHB7dMS-0818f70a.js → sankeyDiagram-4UZDY2LN-BAHB7dMS-c7aa7470.js} +2 -2
  50. package/lib/{sequenceDiagram-SKLFT4DO-10gLJ50N-9b4ad4d4.js → sequenceDiagram-SKLFT4DO-10gLJ50N-3628d078.js} +4 -4
  51. package/lib/{stateDiagram-MI5ZYTHO-D6p6nCaj-7960a6ad.js → stateDiagram-MI5ZYTHO-D6p6nCaj-d5cea83d.js} +9 -9
  52. package/lib/{stateDiagram-v2-5AN5P6BG-DaN5hC-t-059e8807.js → stateDiagram-v2-5AN5P6BG-DaN5hC-t-778c3195.js} +5 -5
  53. package/lib/super-ui.css +1 -1
  54. package/lib/super-ui.js +1 -1
  55. package/lib/super-ui.umd.cjs +4 -4
  56. package/lib/{tab-content-iframe-index-fe8e2924.js → tab-content-iframe-index-cbc40616.js} +1 -1
  57. package/lib/{tab-content-index-e275c8d3.js → tab-content-index-b816a504.js} +1 -1
  58. package/lib/{tache-subprocess-history-9f042fca.js → tache-subprocess-history-eca968b7.js} +1 -1
  59. package/lib/{timeline-definition-MYPXXCX6-gLqnWxDu-49ba37a6.js → timeline-definition-MYPXXCX6-gLqnWxDu-1a42e8b0.js} +3 -3
  60. package/lib/treemap-75Q7IDZK-B2atdfMH-5d5dbc5f.js +11 -0
  61. package/lib/{xychartDiagram-H2YORKM3-Whqa4ezL-54aebadd.js → xychartDiagram-H2YORKM3-Whqa4ezL-03b9633f.js} +3 -3
  62. package/package.json +1 -1
  63. package/packages/chat-embed/src/voice/voice.vue +11 -1
  64. package/packages/fs-preview/src/fs-preview.vue +31 -11
  65. package/packages/super-grid/src/apis.js +142 -4
  66. package/packages/super-grid/src/normal-column-content.vue +9 -2
  67. package/packages/super-grid/src/normal-column.vue +58 -19
  68. package/packages/super-grid/src/super-grid.vue +16 -2
  69. package/src/i18n/langs/cn.js +4 -2
  70. package/src/i18n/langs/en.js +3 -1
  71. package/src/styles/element-ui.scss +30 -25
  72. package/src/utils/auth.js +2 -2
  73. package/src/utils/voice-setting-cache.js +49 -3
  74. package/lib/architecture-O4VJ6CD3-ZoZ2IAk2-4770df79.js +0 -11
  75. package/lib/gitGraph-ZV4HHKMB-BSmtVGRu-dee61307.js +0 -11
  76. package/lib/info-63CPKGFF-C8sYWczU-8ba10602.js +0 -11
  77. package/lib/packet-HUATNLJX-bfFWFja0-1bb5b147.js +0 -11
  78. package/lib/pie-WTHONI2E-QPrWs3SR-71ddbf85.js +0 -11
  79. package/lib/radar-NJJJXTRR-BnUCJhQL-198f40f5.js +0 -11
  80. package/lib/treemap-75Q7IDZK-B2atdfMH-4f2a4580.js +0 -11
@@ -1,5 +1,5 @@
1
1
  import { openBlock as r, createElementBlock as t, createCommentVNode as o } from "vue";
2
- import { a8 as s } from "./index-fe3177e1.js";
2
+ import { a8 as s } from "./index-05caa4e9.js";
3
3
  const a = ["src"], f = s({ data: () => ({ src: null }), watch: { $route(n, c) {
4
4
  this.src = this.$route.query.src;
5
5
  } }, mounted() {
@@ -1,4 +1,4 @@
1
- import { a8 as f, aa as x, ab as _, ac as P, ad as h, ae as O, af as I, ag as M } from "./index-fe3177e1.js";
1
+ import { a8 as f, aa as x, ab as _, ac as P, ad as h, ae as O, af as I, ag as M } from "./index-05caa4e9.js";
2
2
  import { resolveComponent as u, openBlock as d, createBlock as b, withCtx as g, createVNode as v, TransitionGroup as L, createElementBlock as p, Fragment as T, renderList as C, createElementVNode as m, toDisplayString as w, normalizeClass as S, createCommentVNode as y } from "vue";
3
3
  const k = { class: "no-redirect" }, A = f({ name: "Breadcrumb", data: () => ({ levelList: null }), computed: { levelListWithTitle() {
4
4
  return this.levelList.filter((e) => e.meta.title !== void 0 && e.meta.title !== null);
@@ -1,5 +1,5 @@
1
1
  import { resolveComponent as t, openBlock as l, createElementBlock as s, createElementVNode as y, createVNode as a, withCtx as r, createTextVNode as n, toDisplayString as p, createCommentVNode as c, createBlock as h } from "vue";
2
- import { a8 as I } from "./index-fe3177e1.js";
2
+ import { a8 as I } from "./index-05caa4e9.js";
3
3
  const g = { style: { "padding-bottom": "10px" } }, k = { key: 0, class: "graphDiv" }, N = I({ name: "TacheSubprocessHistory", data: () => ({ type: "graph", workflowId: null }), created() {
4
4
  const o = this.$route.query.workflowId;
5
5
  o && (this.workflowId = parseInt(o));
@@ -1,6 +1,6 @@
1
- import { _ as a, D as yt, ag as gt, z as ft, d as G, c as mt, l as S, ac as xt, ad as bt, ae as _t, af as kt } from "./mermaid.core-CAqkCmS1-c43e83d3.js";
2
- import { d as K } from "./arc-Js_tyW10-75b7b49e.js";
3
- import "./index-fe3177e1.js";
1
+ import { _ as a, D as yt, ag as gt, z as ft, d as G, c as mt, l as S, ac as xt, ad as bt, ae as _t, af as kt } from "./mermaid.core-CAqkCmS1-6e78dc56.js";
2
+ import { d as K } from "./arc-Js_tyW10-2cb69779.js";
3
+ import "./index-05caa4e9.js";
4
4
  import "vue";
5
5
  var q = function() {
6
6
  var n = a(function(s, d, l, h) {
@@ -0,0 +1,11 @@
1
+ import { T as s, h as T } from "./mermaid-parser.core-CH9ryA1K-50fe3093.js";
2
+ import "./index-05caa4e9.js";
3
+ import "vue";
4
+ import "./mermaid.core-CAqkCmS1-6e78dc56.js";
5
+ import "./_baseUniq-BXtq6_NW-3a7d3f17.js";
6
+ import "./min-BngCxx8g-a9c205d3.js";
7
+ import "./clone-CEJtuQzg-bda6855e.js";
8
+ export {
9
+ s as TreemapModule,
10
+ T as createTreemapServices
11
+ };
@@ -1,8 +1,8 @@
1
- import { _ as n, a1 as hi, G as gt, F as Bt, H as oi, aD as ri, l as zt, a9 as kt, i as li, t as Ot, b as ci, a as gi, q as ui, g as xi, s as di, z as pi, K as fi, e as mi } from "./mermaid.core-CAqkCmS1-c43e83d3.js";
1
+ import { _ as n, a1 as hi, G as gt, F as Bt, H as oi, aD as ri, l as zt, a9 as kt, i as li, t as Ot, b as ci, a as gi, q as ui, g as xi, s as di, z as pi, K as fi, e as mi } from "./mermaid.core-CAqkCmS1-6e78dc56.js";
2
2
  import { i as yi } from "./init-ZxktEp_H-731b6c9b.js";
3
3
  import { o as bi } from "./ordinal-DSZU4PqD-57a34423.js";
4
- import { l as _t } from "./linear-DqgVh5FN-e4e3259d.js";
5
- import "./index-fe3177e1.js";
4
+ import { l as _t } from "./linear-DqgVh5FN-49dd3d5c.js";
5
+ import "./index-05caa4e9.js";
6
6
  import "vue";
7
7
  import "./defaultLocale-DVr69WTU-dbb4acef.js";
8
8
  var Tt, Rt, Dt, Lt, Pt, vt, Et, Mt, It, $t;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agilebuilder-ui",
3
- "version": "1.1.52-sit2",
3
+ "version": "1.1.52-sit4",
4
4
  "type": "module",
5
5
  "private": false,
6
6
  "main": "./lib/super-ui.js",
@@ -15,7 +15,7 @@ import './js/processor/index.umd.js'
15
15
  import { startTimer, stopTimer } from './js/timer.js'
16
16
 
17
17
  import { executeAi } from './js/ai.js'
18
- import { cacheVoiceSetting } from '../../../../src/utils/voice-setting-cache'
18
+ import { cacheVoiceSetting, cacheVoiceLeafMenu } from '../../../../src/utils/voice-setting-cache'
19
19
  import { getUsername } from '../../../../src/utils/auth'
20
20
  import { Microphone, Mute } from '@element-plus/icons-vue'
21
21
  import { getRelativeBaseUrl } from '../../../../src/utils/common-util.js'
@@ -42,6 +42,16 @@ window.$http
42
42
  console.error('获取语音命令失败', error)
43
43
  })
44
44
 
45
+ window.$http
46
+ .get(window.$vueApp.config.globalProperties.baseAPI + '/bs/ai-voice-command/command/leaf-menu')
47
+ .then((res) => {
48
+ cacheVoiceLeafMenu(JSON.stringify(res))
49
+ })
50
+ .catch((error) => {
51
+ cacheVoiceLeafMenu(JSON.stringify([]))
52
+ console.error('获取语音命令所需叶子菜单失败', error)
53
+ })
54
+
45
55
  let btnStatus = ref('UNDEFINED') // "UNDEFINED" "CONNECTING" "OPEN" "CLOSING" "CLOSED"
46
56
  let btnControl = ref('开始录音')
47
57
  let result = ref('')
@@ -84,13 +84,16 @@
84
84
  // import { Image } from 'antd';
85
85
  import { Paperclip as ElIconPaperclip, View as ElIconView, Download as ElIconDownload } from '@element-plus/icons-vue'
86
86
  import * as Vue from 'vue'
87
- import { isPlateSys, getSystemFrontendUrl, getRelativeBaseUrl, getKkFilePreviewUrl } from '../../../src/utils/common-util'
88
- import { isImage, getEntityFieldValue } from '../../../src/utils/util'
87
+ import {
88
+ isPlateSys,
89
+ getSystemFrontendUrl,
90
+ getRelativeBaseUrl,
91
+ getKkFilePreviewUrl
92
+ } from '../../../src/utils/common-util'
93
+ import { isImage, getEntityFieldValue, getI18n } from '../../../src/utils/util'
89
94
  import { packageFile } from '../../super-grid/src/utils'
90
95
  import { getToken } from '../../../src/utils/auth'
91
96
  import { getFileIconByName } from '../../../src/utils/file-util'
92
- import { Base64 } from 'js-base64'
93
- import { ElMessage } from 'element-plus'
94
97
  export default {
95
98
  components: {
96
99
  ElIconPaperclip,
@@ -136,7 +139,7 @@ export default {
136
139
  default: false
137
140
  },
138
141
  // 水印配置{isShowWatermark:true/false,content:'xxxxx'}
139
- watermark:{
142
+ watermark: {
140
143
  type: Object,
141
144
  default: () => ({})
142
145
  }
@@ -298,9 +301,9 @@ export default {
298
301
  const myPreviewUrl = originUrl + '&fullfilename=' + showName
299
302
  console.log('myPreviewUrl====', myPreviewUrl)
300
303
  // http://127.0.0.1:8012/onlinePreview
301
- getKkFilePreviewUrl(myPreviewUrl).then(url=>{
304
+ getKkFilePreviewUrl(myPreviewUrl).then((url) => {
302
305
  window.open(url, showName)
303
- })
306
+ }) /
304
307
  // window.$vueApp.config.globalProperties.kkFileViewUrl +
305
308
  // '?url=' +
306
309
  // encodeURIComponent(Base64.encode(myPreviewUrl))
@@ -327,7 +330,7 @@ export default {
327
330
  const token = getToken()
328
331
  const isShowWatermark = this.watermark.isShowWatermark
329
332
  let watermarkContent = this.watermark?.content
330
- if(!watermarkContent){
333
+ if (!watermarkContent) {
331
334
  watermarkContent = ''
332
335
  }
333
336
  let url = window.$vueApp.config.globalProperties.baseURL + '/common/super-form/downloads?jwt=' + token
@@ -335,7 +338,16 @@ export default {
335
338
  url = window.$vueApp.config.globalProperties.baseAPI + '/component/super-form/downloads?jwt=' + token
336
339
  }
337
340
  url = getRelativeBaseUrl(url)
338
- const src = url + '&showName=' + encodeURI(showName) + '&serverPath=' + serverPath+'&isShowWatermark='+isShowWatermark+'&watermark='+watermarkContent
341
+ const src =
342
+ url +
343
+ '&showName=' +
344
+ encodeURI(showName) +
345
+ '&serverPath=' +
346
+ serverPath +
347
+ '&isShowWatermark=' +
348
+ isShowWatermark +
349
+ '&watermark=' +
350
+ watermarkContent
339
351
  window.open(src)
340
352
  },
341
353
  analysisFileSetObj(fileSetObj, isSql) {
@@ -402,12 +414,20 @@ export default {
402
414
  const fileInfo = this.getFirstFile()
403
415
  this.$emit('delete-file', fileInfo)
404
416
  this.fileList = this.fileList.filter((item) => item.serverPath !== fileInfo.serverPath)
405
- ElMessage.success('文件已删除')
417
+ this.$message({
418
+ showClose: true,
419
+ type: 'success',
420
+ message: getI18n().t('fsUpload.deleteSuccessful')
421
+ })
406
422
  },
407
423
  deleteFile(fileInfo) {
408
424
  this.$emit('delete-file', fileInfo)
409
425
  this.fileList = this.fileList.filter((item) => item.serverPath !== fileInfo.serverPath)
410
- ElMessage.success('文件已删除')
426
+ this.$message({
427
+ showClose: true,
428
+ type: 'success',
429
+ message: getI18n().t('fsUpload.deleteSuccessful')
430
+ })
411
431
  }
412
432
  },
413
433
  emits: ['close', 'delete-file']
@@ -1125,6 +1125,144 @@ const apis = {
1125
1125
  resolve()
1126
1126
  })
1127
1127
  },
1128
+ getDeleteIndexes(dataArr, deleteRows, rowKey) {
1129
+ const indexes = []
1130
+ dataArr.forEach((row, index) => {
1131
+ if (indexes.length === deleteRows.length) return
1132
+ for (const delRow of deleteRows) {
1133
+ if (row[rowKey] === delRow[rowKey]) {
1134
+ indexes.push(index)
1135
+ break
1136
+ }
1137
+ }
1138
+ })
1139
+ return indexes.sort((a, b) => b - a)
1140
+ },
1141
+ batchDeleteSubTableRowApi(listCode, deleteRows, rowKey) {
1142
+ return new Promise((resolve, reject) => {
1143
+ deleteRows = deleteRows || []
1144
+ if (!deleteRows.length) {
1145
+ window.$vueApp.config.globalProperties.$message({
1146
+ showClose: true,
1147
+ message: getI18n().t('imatrixUIMessage.pleaseSelectDeleteData'),
1148
+ type: 'warning'
1149
+ })
1150
+ resolve()
1151
+ return
1152
+ }
1153
+ listCode = listCode || store.get('_list_code')
1154
+ const gridParams = store.get(listCode)
1155
+ let canDelete = true
1156
+ // 删除行记录前的回调
1157
+ if (isEditOptionFunction('beforeDelete', listCode)) {
1158
+ const isSubTableShowPage = gridParams.isSubTableShowPage
1159
+ // 每页显示多少条
1160
+ const pageSize = gridParams.pagination && gridParams.pagination.pageSize
1161
+ const gridData = isSubTableShowPage ? gridParams.subTableData : gridParams.gridData
1162
+ const isMobile = this.isMobile
1163
+ if (gridParams.pageContext) {
1164
+ canDelete = gridParams.options.lineEditOptions.beforeDelete.call(this, {
1165
+ deleteRows: deleteRows,
1166
+ gridData,
1167
+ isMobile,
1168
+ baseURL: this.baseURL,
1169
+ totalData: isSubTableShowPage ? gridParams.gridData : null,
1170
+ pageSize,
1171
+ additionalParamMap: gridParams.additionalParamMap,
1172
+ pageContext: gridParams.pageContext,
1173
+ configureObj: gridParams.configureObj
1174
+ })
1175
+ } else {
1176
+ canDelete = gridParams.options.lineEditOptions.beforeDelete.call(
1177
+ this,
1178
+ deleteRows,
1179
+ gridData,
1180
+ isMobile,
1181
+ this.baseURL,
1182
+ isSubTableShowPage ? gridParams.gridData : null,
1183
+ pageSize,
1184
+ gridParams.additionalParamMap
1185
+ )
1186
+ }
1187
+ }
1188
+ if (canDelete === undefined || canDelete === true) {
1189
+ const deleteIndexs = []
1190
+ if (gridParams.isSubTableShowPage !== undefined && gridParams.isSubTableShowPage === true) {
1191
+ // 子表集合添加该新建的行。会触发watch subTableData的监控
1192
+ gridParams.isChangePage = true
1193
+ const indexes = this.getDeleteIndexes(gridParams.subTableData, deleteRows, rowKey)
1194
+ for (const idx of indexes) {
1195
+ gridParams.subTableData.splice(idx, 1)
1196
+ }
1197
+ } else {
1198
+ const indexes = this.getDeleteIndexes(gridParams.gridData, deleteRows, rowKey)
1199
+ for (const idx of indexes) {
1200
+ gridParams.gridData.splice(idx, 1)
1201
+ gridParams.orgGridData.splice(idx, 1)
1202
+ }
1203
+ }
1204
+ // TODO 注释下面的代码,是因为表单子表删除记录时会造成未保存新增的记录的字段被清空的问题,不知道当时为什么要加这个代码
1205
+ // Object.assign(gridParams.gridData, gridParams.orgGridData)
1206
+ gridParams.$lastSaveRowIndex = null
1207
+ gridParams.$rowIndex = null
1208
+ gridParams.isEditRow = false
1209
+ window.$vueApp.config.globalProperties.$message({
1210
+ showClose: true,
1211
+ message: getI18n().t('superGrid.deleteSuccessful'),
1212
+ type: 'success'
1213
+ })
1214
+ if (gridParams.gridData.length === 0) {
1215
+ if (
1216
+ gridParams.options &&
1217
+ gridParams.options.isDefaultShowEdit !== null &&
1218
+ gridParams.options.isDefaultShowEdit !== undefined &&
1219
+ gridParams.options.isDefaultShowEdit === true
1220
+ ) {
1221
+ // 表示没有记录时,需要创建新行
1222
+ this.createRow(listCode)
1223
+ }
1224
+ }
1225
+ if (gridParams.isMulitiSelect) {
1226
+ gridParams.superGrid?.clearSelection?.()
1227
+ }
1228
+ gridParams.isCreateRow = false
1229
+ if (isRestore === undefined || !isRestore) {
1230
+ // 表示是删除操作,执行删除记录后回调
1231
+ if (isEditOptionFunction('afterDelete', listCode)) {
1232
+ const isSubTableShowPage = gridParams.isSubTableShowPage
1233
+ // 每页显示多少条
1234
+ const pageSize = gridParams.pagination && gridParams.pagination.pageSize
1235
+ const isMobile = this.isMobile
1236
+ if (gridParams.pageContext) {
1237
+ gridParams.options.lineEditOptions.afterDelete.call(this, {
1238
+ deleteRows: deleteRows,
1239
+ gridData: isSubTableShowPage ? gridParams.subTableData : gridParams.gridData,
1240
+ isMobile,
1241
+ baseURL: this.baseURL,
1242
+ totalData: isSubTableShowPage ? gridParams.gridData : null,
1243
+ pageSize,
1244
+ additionalParamMap: gridParams.additionalParamMap,
1245
+ pageContext: gridParams.pageContext,
1246
+ configureObj: gridParams.configureObj
1247
+ })
1248
+ } else {
1249
+ gridParams.options.lineEditOptions.afterDelete.call(
1250
+ this,
1251
+ deleteRows,
1252
+ isSubTableShowPage ? gridParams.subTableData : gridParams.gridData,
1253
+ isMobile,
1254
+ this.baseURL,
1255
+ isSubTableShowPage ? gridParams.gridData : null,
1256
+ pageSize,
1257
+ gridParams.additionalParamMap
1258
+ )
1259
+ }
1260
+ }
1261
+ }
1262
+ }
1263
+ resolve()
1264
+ })
1265
+ },
1128
1266
  // 行编辑时,点击自定义组件时,使当前行获得焦点
1129
1267
  focus(rowIndex, listCode) {
1130
1268
  setCurrentRow(rowIndex, listCode)
@@ -1461,11 +1599,11 @@ const apis = {
1461
1599
  getCustomFunc(funcName) {
1462
1600
  window.$PageUtil.getCustomFunc(this.pageContext, funcName)
1463
1601
  },
1464
- addRequiredClass(fieldName,listCode, rowIndex, pageNum) {
1602
+ addRequiredClass(fieldName, listCode, rowIndex, pageNum) {
1465
1603
  const gridParams = store.get(listCode)
1466
- if (this.isFormSubTable && this.isSubTableShowPage){
1604
+ if (this.isFormSubTable && this.isSubTableShowPage) {
1467
1605
  rowIndex = rowIndex - 1
1468
- if(pageNum !== this.currentPage){
1606
+ if (pageNum !== this.currentPage) {
1469
1607
  this.currentPage = pageNum
1470
1608
  this.changePage(pageNum)
1471
1609
  }
@@ -1477,7 +1615,7 @@ const apis = {
1477
1615
  * @param {Array} searchableColumns 查询字段集合
1478
1616
  * @param {object} searchData 查询值对象。例如:{'DEPT_CODE':'xxx','DEPT_NAME':'xxxx'}
1479
1617
  */
1480
- handleSearch(searchableColumns, searchData){
1618
+ handleSearch(searchableColumns, searchData) {
1481
1619
  const searchForm = this.packageSearchParamNormalType(searchableColumns, searchData)
1482
1620
  this.doSearch(searchForm)
1483
1621
  }
@@ -34,7 +34,7 @@
34
34
  @change-required="changeRequired"
35
35
  @open-page="openPageEvent"
36
36
  />
37
- <div v-else :class=" (options?.configureObj?.props?.base?.columnEditable ?? false) ? 'column-text-main' : ''">
37
+ <div v-else :class="options?.configureObj?.props?.base?.columnEditable ?? false ? 'column-text-main' : ''">
38
38
  <div
39
39
  v-if="
40
40
  lineEdit.editable &&
@@ -1275,7 +1275,14 @@ export default {
1275
1275
  }
1276
1276
  }
1277
1277
  },
1278
- emits: ['refresData', 'refresPortData', 'refresPortsData', 'refresMainTableFields', 'prohibitToEdit']
1278
+ emits: [
1279
+ 'refresData',
1280
+ 'refresPortData',
1281
+ 'refresPortsData',
1282
+ 'refresMainTableFields',
1283
+ 'prohibitToEdit',
1284
+ 'deleteFormSubTableRow'
1285
+ ]
1279
1286
  }
1280
1287
  </script>
1281
1288
 
@@ -12,7 +12,7 @@
12
12
  :min-width="getColumnWidth()"
13
13
  >
14
14
  <template v-slot:header>
15
- <span v-if="!column.customHeader" :class="{ is_req: isFieldRequired() }">
15
+ <span v-if="!column.customHeader" :class="{ is_req: isFieldRequired() }" class="normal-column-header">
16
16
  <span :title="$escapeHtml(label)" class="cell--span required__label" v-html="$escapeHtml(label)" />
17
17
  </span>
18
18
  <component
@@ -23,9 +23,18 @@
23
23
  :grid-data="gridData"
24
24
  :current-page="currentPage"
25
25
  />
26
- <el-icon v-if="isShowAdd" style="font-size: 20px; color: #409eff" @click="createFormSubTableRow">
27
- <CirclePlus />
28
- </el-icon>
26
+ <span style="margin-left: 5px">
27
+ <el-icon v-if="isShowAdd" class="normal-column-header normal-column-header-icon" @click="createFormSubTableRow">
28
+ <CirclePlus />
29
+ </el-icon>
30
+ <el-icon
31
+ v-if="isShowDelete"
32
+ class="normal-column-header normal-column-header-icon"
33
+ @click="deleteFormSubTableRow"
34
+ >
35
+ <Remove />
36
+ </el-icon>
37
+ </span>
29
38
  </template>
30
39
  <template v-slot="scope">
31
40
  <!-- :pagination="pagination" -->
@@ -49,8 +58,8 @@
49
58
  :row-index="scope.$index"
50
59
  :line-edit="lineEdit"
51
60
  :custom-format="customFormat"
52
- :class="isValidateError(scope.row,scope.$index)?'required_bg required-corner':''"
53
- :style="isValidateError(scope.row,scope.$index)?'display:block;':''"
61
+ :class="isValidateError(scope.row, scope.$index) ? 'required_bg required-corner' : ''"
62
+ :style="isValidateError(scope.row, scope.$index) ? 'display:block;' : ''"
54
63
  @open-page="openPageEvent"
55
64
  @refresData="refresData"
56
65
  @refresh-list="refreshList"
@@ -63,7 +72,7 @@
63
72
  </el-table-column>
64
73
  </template>
65
74
  <script>
66
- import { CirclePlus, ZoomIn as ElIconZoomIn } from '@element-plus/icons-vue'
75
+ import { CirclePlus, ZoomIn as ElIconZoomIn, Remove } from '@element-plus/icons-vue'
67
76
  import { $emit, $off, $on } from '../../utils/gogocodeTransfer'
68
77
  import { getColumnValues, isRequiredEdit, getContentAlign, getHeaderAlign, getHeaderLable } from './utils'
69
78
  import DynamicInput from './dynamic-input.vue'
@@ -78,7 +87,7 @@ import RichEditorViewer from '../../rich-editor/viewer.vue'
78
87
  import GridIcon from './components/grid-icon.vue'
79
88
  import NormalColumnContent from './normal-column-content.vue'
80
89
  import eventBus from './eventBus'
81
- // border:1px solid red;padding: 10px;
90
+ // border:1px solid red;padding: 10px;
82
91
  export default {
83
92
  components: {
84
93
  DynamicInput,
@@ -164,7 +173,9 @@ export default {
164
173
  headerAlign: 'left', // 表头对齐方式
165
174
  isFormSubTable: false, // 是否是表单子表
166
175
  subTableCanAdd: true, // 表单子表时是否有新增权限
176
+ subTableCanDelete: true, // 表单子表时是否有删除权限
167
177
  isShowAdd: false, // 是否显示表头的新增按钮
178
+ isShowDelete: false, // 是否显示表头的删除按钮
168
179
  cellWidth: null,
169
180
  parentFormData,
170
181
  options,
@@ -267,13 +278,13 @@ export default {
267
278
  if (gridParams && gridParams.options && gridParams.options.isFormSubTable) {
268
279
  this.isFormSubTable = gridParams.options.isFormSubTable
269
280
  }
270
- if (
271
- gridParams &&
272
- gridParams.options &&
273
- gridParams.options.subTableCanAdd !== undefined &&
274
- gridParams.options.subTableCanAdd !== null
275
- ) {
276
- this.subTableCanAdd = gridParams.options.subTableCanAdd
281
+ if (gridParams && gridParams.options) {
282
+ if (gridParams.options.subTableCanAdd !== undefined && gridParams.options.subTableCanAdd !== null) {
283
+ this.subTableCanAdd = gridParams.options.subTableCanAdd
284
+ }
285
+ if (gridParams.options.subTableCanDelete !== undefined && gridParams.options.subTableCanDelete !== null) {
286
+ this.subTableCanDelete = gridParams.options.subTableCanDelete
287
+ }
277
288
  }
278
289
  const align = getContentAlign(this.column, gridParams)
279
290
  if (align) {
@@ -294,6 +305,13 @@ export default {
294
305
  this.subTableCanAdd &&
295
306
  gridParams.options &&
296
307
  gridParams.options.showOperationButton
308
+
309
+ this.isShowDelete =
310
+ this.isFormSubTable &&
311
+ this.column.prop === 'operation' &&
312
+ this.subTableCanDelete &&
313
+ gridParams.options &&
314
+ gridParams.options.showOperationButton
297
315
  },
298
316
  mounted() {
299
317
  if (this.column.prop === 'operation') {
@@ -336,6 +354,10 @@ export default {
336
354
  console.log('触发了行新建')
337
355
  this.createRow(this.listCode)
338
356
  },
357
+ deleteFormSubTableRow() {
358
+ console.log('触发了行批量删除')
359
+ $emit(this, 'batchDeleteSubTableRow')
360
+ },
339
361
  getColumnWidth() {
340
362
  if (this.column && this.column.prop === 'operation' && !this.column.width) {
341
363
  // 表示操作列,宽度固定
@@ -362,14 +384,31 @@ export default {
362
384
  console.log('normalColumn----openPageEvent----', openPageParams)
363
385
  this.$emit('open-page', openPageParams)
364
386
  },
365
- isValidateError(row,rowIndex) {
387
+ isValidateError(row, rowIndex) {
366
388
  // const gridParams = store.get(this.listCode)
367
- console.log('row.validateErrorField-----',row)
389
+ console.log('row.validateErrorField-----', row)
368
390
  return this.isFormSubTable && row && row['validateErrorField'] && row['validateErrorField'] === this.column.prop
369
391
  }
370
392
  },
371
- emits: ['refresData', 'refresPortData', 'refresPortsData', 'refresMainTableFields', 'prohibitToEdit']
393
+ emits: [
394
+ 'refresData',
395
+ 'refresPortData',
396
+ 'refresPortsData',
397
+ 'refresMainTableFields',
398
+ 'prohibitToEdit',
399
+ 'deleteFormSubTableRow'
400
+ ]
372
401
  }
373
402
  </script>
403
+ <style lang="scss" scoped>
404
+ .normal-column-header {
405
+ display: inline-flex;
406
+ vertical-align: middle;
407
+ }
374
408
 
375
- <style lang="scss" scoped></style>
409
+ .normal-column-header-icon {
410
+ font-size: 20px;
411
+ color: #409eff;
412
+ cursor: pointer;
413
+ }
414
+ </style>
@@ -944,7 +944,7 @@ export default {
944
944
  ...events,
945
945
  ...publicMethods,
946
946
  ...superGridService,
947
- ...searchMethods,
947
+ ...searchMethods,
948
948
  ...apis,
949
949
  onResize(entry) {
950
950
  this.resizeTableHeight()
@@ -1639,6 +1639,7 @@ export default {
1639
1639
  gridParams.subTableData = this.subTableData
1640
1640
  this.gridData = this.getSubTableGridData(this.subTableData)
1641
1641
  } else {
1642
+ this.subTableAddGuId(subTableData)
1642
1643
  this.gridData = subTableData
1643
1644
  }
1644
1645
  gridParams.gridData = this.gridData
@@ -1698,8 +1699,16 @@ export default {
1698
1699
  if (gridData === undefined || gridData === null) {
1699
1700
  gridData = []
1700
1701
  }
1702
+ this.subTableAddGuId(gridData)
1701
1703
  return gridData
1702
1704
  },
1705
+ subTableAddGuId(data) {
1706
+ data.forEach((item) => {
1707
+ if (!item.$rowDataGuId) {
1708
+ item.$rowDataGuId = getGuId()
1709
+ }
1710
+ })
1711
+ },
1703
1712
  fetchListData(searchParam, isSearch, parentRowIds, resove) {
1704
1713
  this.isLoading = true
1705
1714
  this.hasLoadData = false
@@ -3381,7 +3390,8 @@ export default {
3381
3390
  refresPortData: this.refresPortData,
3382
3391
  refresPortsData: this.refresPortsData,
3383
3392
  refresMainTableFields: this.refresMainTableFields,
3384
- prohibitToEdit: this.prohibitToEdit
3393
+ prohibitToEdit: this.prohibitToEdit,
3394
+ batchDeleteSubTableRow: this.batchDeleteSubTableRow
3385
3395
  }
3386
3396
  }
3387
3397
  } catch (error) {
@@ -3448,6 +3458,10 @@ export default {
3448
3458
  }
3449
3459
  return newRow
3450
3460
  }
3461
+ },
3462
+ batchDeleteSubTableRow() {
3463
+ const selectRows = this.$refs.superGrid.getSelectionRows()
3464
+ this.batchDeleteSubTableRowApi(this.code, selectRows, this.getRowKeyProp)
3451
3465
  }
3452
3466
  },
3453
3467
  emits: [
@@ -85,7 +85,8 @@ const cn = {
85
85
  uploadFileTip: '上传的文件不超过{fileSize}M',
86
86
  asyncExportJumpMsg: '或点击我跳转到下载页面',
87
87
  mustFill: '{label} 必须填写',
88
- filePathNotFound: '文件UUID未找到,请检查配置'
88
+ filePathNotFound: '文件UUID未找到,请检查配置',
89
+ pleaseSelectDeleteData: '请选择要删除的数据'
89
90
  },
90
91
  // 列表组件
91
92
  superGrid: {
@@ -276,7 +277,8 @@ const cn = {
276
277
  fsUpload: {
277
278
  upload: '上传',
278
279
  download: '下载',
279
- delete: '删除',
280
+ delete: '删除',
281
+ deleteSuccessful: '删除成功',
280
282
  preview: '预览',
281
283
  name: '名称',
282
284
  picture: '图片',
@@ -86,7 +86,8 @@ const en = {
86
86
  uploadFileTip: 'The file size should lower {fileSize}M',
87
87
  asyncExportJumpMsg: 'Or click me to jump to download page.',
88
88
  mustFill: '{label} must fill',
89
- filePathNotFound: 'File UUID not found, please check the configuration'
89
+ filePathNotFound: 'File UUID not found, please check the configuration',
90
+ pleaseSelectDeleteData: 'Please select the data to delete'
90
91
  },
91
92
  superGrid: {
92
93
  editablePlaceholder: 'Please click to input',
@@ -276,6 +277,7 @@ const en = {
276
277
  upload: 'Upload',
277
278
  download: 'Download',
278
279
  delete: 'Delete',
280
+ deleteSuccessful: 'Delete successful',
279
281
  preview: 'Preview',
280
282
  name: 'Name',
281
283
  picture: 'Picture',