@epxing/business 5.3.0-beta.2 → 5.3.0-beta.3

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 (98) hide show
  1. package/API.md +8 -4
  2. package/README.md +44 -44
  3. package/dist/src/base/AiSkillEditor.js +1 -1
  4. package/dist/src/base/AiSkillEditor.vue.js +2 -0
  5. package/dist/src/base/AppConfigFormItem.js +1 -3
  6. package/dist/src/base/AppConfigFormItem.vue.js +210 -85
  7. package/dist/src/base/CommonFieldList.js +1 -1
  8. package/dist/src/base/CommonFieldList.vue.js +2 -1
  9. package/dist/src/base/ConfigModuleIndex.js +38 -1
  10. package/dist/src/base/ManageAppNav.js +1 -1
  11. package/dist/src/base/ManageMenu.js +1 -1
  12. package/dist/src/base/RoleBindTrace.js +253 -0
  13. package/dist/src/base/RoleGroupManage.js +1037 -0
  14. package/dist/src/base/ServiceMenu.js +7 -6
  15. package/dist/src/components/AiList.js +1278 -3
  16. package/dist/src/components/EntityCheckboxFind.vue.js +14 -10
  17. package/dist/src/components/EntityRightFormItem.js +1 -5
  18. package/dist/src/components/EntityRightFormItem.vue.js +3 -1
  19. package/dist/src/components/EntitySystemEr.js +492 -0
  20. package/dist/src/components/HallNav.vue.js +7 -36
  21. package/dist/src/components/IconFontLibrary.js +22 -1
  22. package/dist/src/components/IconFontList.js +21 -1
  23. package/dist/src/components/PrintFormList.js +2 -1
  24. package/dist/src/components/PrintFormList.vue.js +3 -1
  25. package/dist/src/components/WikiWorkbench.js +153 -129
  26. package/dist/src/components/authorization/AuthorizationInterface.js +3 -1
  27. package/dist/src/components/custom-bpmn/PropertiesView.js +1991 -1942
  28. package/dist/src/components/icon-gallery/IconGallery.js +193 -0
  29. package/dist/src/components/icon-gallery/mixin.js +150 -0
  30. package/dist/src/components/wiki-workbench/WikiIntake.js +86 -93
  31. package/dist/src/components/wiki-workbench/WikiIntake.vue.js +153 -73
  32. package/dist/src/index.js +26 -20
  33. package/dist/src/public-components.js +16 -14
  34. package/dist/src/route-components.js +5 -5
  35. package/dist/src/system.component.index.js +1 -1
  36. package/dist/src/system.component.js +8 -3
  37. package/dist/src/system.component.lazy.js +1 -1
  38. package/dist/src/views/Add.js +1 -1
  39. package/dist/src/views/Add.vue.js +8 -3
  40. package/dist/src/views/AiToolManager.js +792 -317
  41. package/dist/src/views/App.js +3 -45
  42. package/dist/src/views/AppRoleSelect.js +3 -230
  43. package/dist/src/views/Error.js +3 -207
  44. package/dist/src/views/ExcelDesign.js +326 -316
  45. package/dist/src/views/JvmMemoryMonitor.js +463 -0
  46. package/dist/src/views/Module.js +3 -170
  47. package/dist/src/views/WikiBinding.js +88 -25
  48. package/dist/style.css +2867 -1487
  49. package/package.json +12 -6
  50. package/src/base/AiSkillEditor.vue +2 -0
  51. package/src/base/AppConfigFormItem.vue +211 -145
  52. package/src/base/CommonFieldList.vue +9 -6
  53. package/src/base/ConfigModuleIndex.vue +37 -1
  54. package/src/base/ManageAppNav.vue +1188 -1188
  55. package/src/base/ManageMenu.vue +933 -933
  56. package/src/base/RoleBindTrace.vue +364 -0
  57. package/src/base/RoleGroupManage.vue +1160 -0
  58. package/src/base/ServiceMenu.vue +6 -5
  59. package/src/components/AiList.vue +439 -113
  60. package/src/components/EntityCheckboxFind.vue +12 -8
  61. package/src/components/EntityRightFormItem.vue +9 -10
  62. package/src/components/EntitySystemEr.vue +517 -0
  63. package/src/components/HallNav.vue +6 -33
  64. package/src/components/IconFontLibrary.vue +27 -60
  65. package/src/components/IconFontList.vue +13 -64
  66. package/src/components/PrintFormList.vue +33 -27
  67. package/src/components/WikiWorkbench.vue +90 -60
  68. package/src/components/authorization/AuthorizationInterface.vue +2 -0
  69. package/src/components/custom-bpmn/CustomPalette.js +1 -1
  70. package/src/components/custom-bpmn/CustomRenderer.js +1 -1
  71. package/src/components/custom-bpmn/PropertiesView.vue +35 -4
  72. package/src/components/custom-bpmn/index.js +1 -1
  73. package/src/components/icon-gallery/IconGallery.vue +130 -0
  74. package/src/components/icon-gallery/mixin.jsx +109 -0
  75. package/src/components/wiki-workbench/WikiIntake.vue +178 -104
  76. package/src/index.js +24 -20
  77. package/src/public-components.js +1 -0
  78. package/src/route-components.js +4 -4
  79. package/src/system.component.index.js +1 -1
  80. package/src/views/Add.vue +8 -5
  81. package/src/views/AiToolManager.vue +326 -4
  82. package/src/views/App.vue +4 -53
  83. package/src/views/AppRoleSelect.vue +4 -334
  84. package/src/views/Error.vue +4 -63
  85. package/src/views/ExcelDesign.vue +24 -7
  86. package/src/views/JvmMemoryMonitor.vue +284 -0
  87. package/src/views/Module.vue +4 -210
  88. package/src/views/WikiBinding.vue +42 -0
  89. package/types/app.d.ts +1 -0
  90. package/types/dept-find.d.ts +1 -1
  91. package/types/index.d.ts +15 -14
  92. package/types/popup.d.ts +2 -2
  93. package/types/route-components.d.ts +1 -1
  94. package/types/user-find.d.ts +1 -1
  95. package/dist/assets/role_select-DTqRlFNz.webp +0 -0
  96. package/dist/src/components/AiList.vue.js +0 -93
  97. package/dist/src/components/IconFontLibrary.vue.js +0 -67
  98. package/dist/src/components/IconFontList.vue.js +0 -79
@@ -19,34 +19,40 @@
19
19
  入库记录
20
20
  <span class="sub">共 {{ rows.length }} 条</span>
21
21
  <el-upload
22
+ ref="filePicker"
22
23
  class="r"
23
24
  action=""
24
25
  multiple
25
26
  :limit="MAX_FILES"
26
27
  :auto-upload="false"
28
+ :disabled="uploading"
29
+ :show-file-list="false"
27
30
  :file-list="picked"
28
31
  :on-change="onPick"
29
- :on-remove="onPick"
30
32
  :on-exceed="onExceed"
31
33
  accept=".doc,.docx,.pdf,.ppt,.pptx,.xls,.xlsx,.txt,.md"
32
34
  >
33
- <el-button size="small">选择文件</el-button>
35
+ <el-button type="primary" size="small" :loading="uploading">上传并 AI 生成</el-button>
34
36
  </el-upload>
35
- <!-- 手动提交而不是选完就传:一批文件要走**一个请求**才能落成一条入库记录,
36
- 而 el-upload 的自动上传是每个文件各调一次 -->
37
- <el-button
38
- type="primary"
39
- size="small"
40
- :disabled="!picked.length"
41
- :loading="uploading"
42
- @click="doUpload"
43
- >⬆ 上传{{ picked.length ? ' ' + picked.length + ' 个' : '' }}</el-button>
44
37
  </div>
45
38
 
46
39
  <el-table :data="rows" size="small" empty-text="还没有上传过原始文件">
47
40
  <el-table-column label="文件" min-width="200">
48
- <template v-slot="s">
49
- <div class="epx-wiki-intake__nm">{{ ICON[s.row.fileType] || '📄' }} {{ s.row.fileName }}</div>
41
+ <template #default="s">
42
+ <div class="epx-wiki-intake__nm">
43
+ <el-button v-if="filesOf(s.row).length === 1" type="text" class="epx-wiki-intake__file" @click="download(filesOf(s.row)[0])">
44
+ {{ ICON[s.row.fileType] || '📄' }} {{ s.row.fileName }}
45
+ </el-button>
46
+ <el-popover v-else-if="filesOf(s.row).length > 1" placement="bottom-start" trigger="click" width="360">
47
+ <div v-for="file in filesOf(s.row)" :key="file.id">
48
+ <el-button type="text" class="epx-wiki-intake__file" @click="download(file)">{{ file.fileName }}</el-button>
49
+ </div>
50
+ <template #reference><el-button type="text" class="epx-wiki-intake__file">
51
+ {{ ICON[s.row.fileType] || '📄' }} {{ s.row.fileName }} <i class="el-icon-arrow-down"></i>
52
+ </el-button></template>
53
+ </el-popover>
54
+ <span v-else>{{ ICON[s.row.fileType] || '📄' }} {{ s.row.fileName }}</span>
55
+ </div>
50
56
  <div class="epx-wiki-intake__sub">{{ size(s.row.fileSize) }}</div>
51
57
  </template>
52
58
  </el-table-column>
@@ -91,32 +97,15 @@
91
97
  </template>
92
98
  </el-table-column>
93
99
  <el-table-column label="操作" width="250">
94
- <template v-slot="s">
95
- <!-- 三种方式装不进两个按钮,用下拉:每一项都写清楚它会怎么切 -->
96
- <el-dropdown
97
- v-if="s.row.state === 'wait' || s.row.state === 'fail'"
98
- trigger="click"
99
- @command="mode => run(s.row, mode)"
100
- >
101
- <el-button type="text">
102
- {{ s.row.state === 'fail' ? '换方式重试' : '开始处理' }}<i class="el-icon-arrow-down"></i>
103
- </el-button>
104
- <template v-slot:dropdown><el-dropdown-menu>
105
- <!-- 走 Beaver 的 WikiGenerator:它自己规划目录树、逐页生成、逐页验收,
106
- 产物先落平台草稿,确认后再发布。和下面三项不是一个量级 -->
107
- <el-dropdown-item command="wiki" divided>AI 生成目录与内容(会调模型,慢)</el-dropdown-item>
108
- <el-dropdown-item command="ai">AI 按语义拆页(Word/PDF 用这个)</el-dropdown-item>
109
- <el-dropdown-item command="outline">按标题拆页(原文是 markdown 才有效)</el-dropdown-item>
110
- <el-dropdown-item command="single">整篇转成一个页</el-dropdown-item>
111
- </el-dropdown-menu></template>
112
- </el-dropdown>
100
+ <template #default="s">
101
+ <!-- 历史待处理记录、失败记录和已完成记录都从同一入口重新生成 -->
102
+ <el-button v-if="s.row.state === 'wait' || s.row.state === 'fail' || canRegenerate(s.row)" type="text" @click="generate(s.row)">
103
+ 重新 AI 生成
104
+ </el-button>
113
105
  <el-button v-if="s.row.state === 'done' && s.row.purged !== '1'" type="text" @click="purge(s.row)">
114
106
  清理原文件
115
107
  </el-button>
116
- <el-button v-if="canRegenerate(s.row)" type="text" @click="generate(s.row)">
117
- 重新 AI 生成
118
- </el-button>
119
- <el-button type="text" class="epx-wiki-intake__del" @click="drop(s.row)">删记录</el-button>
108
+ <el-button type="text" class="epx-wiki-intake__del" :disabled="s.row.state === 'run'" @click="drop(s.row)">删记录</el-button>
120
109
  </template>
121
110
  </el-table-column>
122
111
  </el-table>
@@ -124,16 +113,17 @@
124
113
  </template>
125
114
 
126
115
  <script>
116
+ import { h } from 'vue'
127
117
  import { codeLabelsAll } from './codes'
128
118
 
129
119
  /**
130
120
  * 工作台「原始文件」页签。
131
121
  *
132
- * 处理产出一律先进草稿,<strong>要人过一遍再发布</strong>——自动写回等于让一次上传
133
- * 直接改生产 Wiki,而解析出来的结构十有八九要调。
122
+ * 上传与生成合并成一步;完成后默认直接发布并纳入索引,也可以选「保存草稿」
123
+ * 核对后再发布——生成产物落的是平台草稿页,发布才写回源。
134
124
  *
135
125
  * 解析失败时原始文件<strong>保留</strong>并把原因写进记录:先删文件会让
136
- * 「换个处理方式重试」无从下手。
126
+ * 「重新生成」无从下手。
137
127
  */
138
128
  // 处理方式与状态的中文名读代码表(FM_AI_WIKI_INTAKE_MODE / _STATE)。颜色留在组件里
139
129
  const STATE_TYPE = { wait: 'info', run: 'primary', done: 'success', fail: 'danger' }
@@ -178,6 +168,10 @@ export default {
178
168
  // 已选但还没提交的文件。一批要一起发,所以自己收着,不用 el-upload 的自动上传
179
169
  picked: [],
180
170
  uploading: false,
171
+ pickPromptTimer: null,
172
+ // 生成表单(上传并生成 / 单条生成共用)。publish '1' 直接发布、'0' 只保存草稿
173
+ genForm: { publish: '1' },
174
+ generateFormId: 0,
181
175
  pollingTimer: null,
182
176
  // 按入库记录保存“生成的页”展开状态。轮询会替换 rows,不能把状态挂在行对象上。
183
177
  expandedPages: {},
@@ -195,11 +189,13 @@ export default {
195
189
  this.load()
196
190
  codeLabelsAll(this.$http, { mode: 'FM_AI_WIKI_INTAKE_MODE', state: 'FM_AI_WIKI_INTAKE_STATE' })
197
191
  .then(m => {
198
- this.modeLabels = m.mode
192
+ // wiki 不在代码表里(AI 生成不走 processIntake),本地补一个显示名
193
+ this.modeLabels = Object.assign({ wiki: 'AI 生成' }, m.mode)
199
194
  this.stateLabels = m.state
200
195
  })
201
196
  },
202
197
  beforeUnmount () {
198
+ if (this.pickPromptTimer) window.clearTimeout(this.pickPromptTimer)
203
199
  this.stopPolling()
204
200
  },
205
201
  computed: {
@@ -212,9 +208,9 @@ export default {
212
208
  },
213
209
  methods: {
214
210
  load (silent) {
215
- if (!this.wikiId) return
211
+ if (!this.wikiId) return Promise.resolve()
216
212
  if (!silent) this.loading = true
217
- this.$http.get({ action: 'intakes', entityId: this.metaId, wikiId: this.wikiId })
213
+ return this.$http.get({ action: 'intakes', entityId: this.metaId, wikiId: this.wikiId })
218
214
  .then(d => {
219
215
  this.rows = (d && d.intakes) || []
220
216
  this.stash = (d && d.stash) || '暂存区'
@@ -250,6 +246,15 @@ export default {
250
246
  return (row.pages || '').split(',').map(s => s.trim()).filter(Boolean)
251
247
  },
252
248
 
249
+ filesOf (row) {
250
+ return row.purged === '1' ? [] : (row.files || [])
251
+ },
252
+
253
+ /** 复用平台附件下载地址,保留租户上下文与鉴权参数。 */
254
+ download (file) {
255
+ if (file && file.id) window.location.href = this.$util.getFileUrl(file.id)
256
+ },
257
+
253
258
  togglePages (row) {
254
259
  this.$set(this.expandedPages, row.id, !this.expandedPages[row.id])
255
260
  },
@@ -270,93 +275,146 @@ export default {
270
275
  this.$message.warning('一次最多选 ' + MAX_FILES + ' 个文件,分批传')
271
276
  },
272
277
 
273
- /** 选择/移除都走这里:el-upload 的 fileList 是它自己维护的,这里只跟着同步一份。 */
278
+ /** 多选文件会逐个触发 on-change,等本轮选择结束后只弹一次生成确认框。 */
274
279
  onPick (file, fileList) {
275
280
  this.picked = fileList
281
+ if (this.pickPromptTimer) window.clearTimeout(this.pickPromptTimer)
282
+ this.pickPromptTimer = window.setTimeout(() => {
283
+ this.pickPromptTimer = null
284
+ this.generateFromFiles()
285
+ }, 0)
286
+ },
287
+
288
+ clearPicked () {
289
+ this.picked = []
290
+ this.$refs.filePicker.clearFiles()
276
291
  },
277
292
 
278
293
  /**
279
- * 一次提交整批。
294
+ * 「选择文件 → 上传 → 生成」合并成的一步:校验文件后弹生成表单,
295
+ * 确认时先落一条入库记录(uploadRaw),拿到记录 id 再直接发起 AI 生成。
280
296
  *
281
297
  * <p>平台 http 层的 formData 模式对数组会把每一项用同一个字段名 append 进去,
282
298
  * 所以 file 传数组就是一个请求里的多个 part,后端按 getMultiFileMap 全取出来、
283
299
  * 落成<strong>一条</strong>入库记录。
284
300
  */
285
- doUpload () {
301
+ generateFromFiles () {
286
302
  const files = this.picked.map(f => f.raw || f).filter(Boolean)
287
303
  if (!files.length) return
288
304
  const over = files.find(f => f.size > MAX_MB * 1024 * 1024)
289
305
  if (over) {
290
306
  this.$message.error('「' + over.name + '」超过 ' + MAX_MB + 'MB。太大的文档拆出来的页也没法看,先自己拆一下')
307
+ this.clearPicked()
291
308
  return
292
309
  }
310
+ this.openGenerateForm({
311
+ title: 'AI 生成 Wiki',
312
+ confirmText: '开始生成',
313
+ hint: '将上传选中的 ' + files.length + ' 个文件,由 AI 规划目录树、逐页生成并逐页验收(会调模型,慢)。',
314
+ run: () => {
315
+ this.clearPicked()
316
+ this.uploadThenGenerate(files)
317
+ },
318
+ cancel: () => this.clearPicked()
319
+ })
320
+ },
321
+
322
+ /**
323
+ * 列表内单条生成:wait 是上传后没生成的兜底入口,fail / done 是重跑。
324
+ * 重跑会原位更新这条记录上次生成的页面,不会复制出一套重名页。
325
+ */
326
+ generate (row) {
327
+ this.openGenerateForm({
328
+ title: '重新 AI 生成',
329
+ confirmText: '重新生成',
330
+ hint: '将根据这条记录的原始文件重新生成目录和内容;已有生成页会原位更新。',
331
+ run: () => this.startGenerate(row.id, row)
332
+ })
333
+ },
334
+
335
+ /**
336
+ * 生成确认弹窗:发布方式默认直接发布。
337
+ * 确认后立即关闭,由 run 在后台跑——整套生成要几分钟,不能让人守着弹窗等。
338
+ */
339
+ openGenerateForm ({ title, confirmText, hint, run, cancel }) {
340
+ this.genForm.publish = '1'
341
+ const radioName = 'wiki-generate-publish-' + ++this.generateFormId
342
+ this.$msgbox({
343
+ title,
344
+ message: h('div', null, [
345
+ h('p', { style: 'margin:0 0 10px;line-height:1.6;font-size:12px;color:var(--color-text-assistant);' }, hint),
346
+ h('div', [
347
+ h('p', { style: 'margin:0 0 6px;' }, '完成后'),
348
+ h('label', { style: 'display:block;margin:0 0 8px;cursor:pointer;' }, [
349
+ h('input', {
350
+ key: radioName + '-publish',
351
+ type: 'radio',
352
+ name: radioName,
353
+ value: '1',
354
+ checked: true,
355
+ onChange: () => { this.genForm.publish = '1' }
356
+ }),
357
+ ' 直接发布(纳入索引)'
358
+ ]),
359
+ h('label', { style: 'display:block;cursor:pointer;' }, [
360
+ h('input', {
361
+ key: radioName + '-draft',
362
+ attrs: { type: 'radio', name: radioName, value: '0' },
363
+ on: { change: () => { this.genForm.publish = '0' } }
364
+ }),
365
+ ' 保存草稿(核对后再发布)'
366
+ ])
367
+ ])
368
+ ]),
369
+ confirmButtonText: confirmText,
370
+ cancelButtonText: '取消'
371
+ }).then(() => { run() }).catch(() => { if (cancel) cancel() })
372
+ },
373
+
374
+ /** 先落入库记录再直接发起生成;上传响应里的 id 就是生成入口要的记录 id。 */
375
+ uploadThenGenerate (files) {
293
376
  this.uploading = true
294
377
  this.$http.update(
295
378
  { action: 'uploadRaw', entityId: this.metaId, wikiId: this.wikiId, file: files },
296
379
  { requestType: 'formData' })
297
380
  .then(d => {
298
- this.$message.success((d && d.message) || '已上传')
299
- this.picked = []
381
+ const intakeId = d && d.id
382
+ if (!intakeId) throw new Error('上传响应里没有记录 id')
383
+ return this.load().then(() => this.startGenerate(intakeId))
384
+ })
385
+ .catch(e => {
386
+ this.$message.error((e && e.message) || '上传失败')
300
387
  this.load()
301
388
  })
302
- .catch(e => this.$message.error((e && e.message) || '上传失败'))
303
389
  .finally(() => { this.uploading = false })
304
390
  },
305
391
 
306
392
  /**
307
- * 处理方式由人当场选,没有默认。
393
+ * 发起 AI 生成并处理结果。
308
394
  *
309
- * <p>同一份文件按什么方式切,取决于它本身的结构:markdown 有标题就按标题,
310
- * Word/PDF 转出来的文本一个 # 都没有、只能靠 AI 判语义,而结构混乱的干脆整篇一页。
311
- * 替人默认一种的话,选错的代价是整批页要删回去重来。
395
+ * <p>生成要跑几分钟:先在本地把记录置成运行态并启动轮询,让人立刻看到「正在生成」;
396
+ * HTTP 返回只代表任务结束,发布或草稿、验收情况按结果分组展示。
312
397
  */
313
- run (row, mode) {
314
- if (mode === 'wiki') return this.generate(row)
315
- this.loading = true
316
- if (mode === 'ai') this.$message.info('AI 拆页要调一次模型,稍等几秒')
398
+ startGenerate (intakeId, row) {
399
+ const target = row || this.rows.find(r => r.id === intakeId)
400
+ if (target) {
401
+ this.$set(target, 'state', 'run')
402
+ this.$set(target, 'note', '任务已开始,正在解析上传材料…')
403
+ }
404
+ this.syncPolling()
317
405
  return this.$http.update({
318
- action: 'processIntake', entityId: this.metaId, intakeId: row.id, intakeMode: mode
406
+ action: 'generateWiki',
407
+ entityId: this.metaId,
408
+ intakeId: intakeId,
409
+ publish: this.genForm.publish
319
410
  }).then(d => {
320
- this.$message.success((d && d.message) || '已生成草稿')
411
+ this.showGenerationResult(d)
321
412
  this.load()
322
413
  this.$emit('changed')
323
414
  }).catch(e => {
324
- this.$message.error((e && e.message) || '处理失败')
415
+ this.$message.error((e && e.message) || '生成失败')
325
416
  this.load()
326
- }).finally(() => { this.loading = false })
327
- },
328
-
329
- /**
330
- * AI 生成目录与内容。
331
- *
332
- * 与「AI 按语义拆页」的区别:拆页只把这份文件切成几页;这条是让 Beaver 的生成器
333
- * 规划一套目录树、逐页写内容、再逐页验收,完成后统一发布并更新索引。
334
- * 同一条入库记录再次生成时,后端会原位更新上次登记的页面,不会复制出一套重名页。
335
- */
336
- generate (row) {
337
- const regenerating = this.canRegenerate(row)
338
- this.$prompt((regenerating ? '会原位更新这条记录上次生成的页面,不会复制一套重名页。' : '') +
339
- '会调模型逐页生成,每页一次,完成后自动发布并纳入索引。' +
340
- '主题用于告诉模型「这是什么的文档」。',
341
- regenerating ? '重新 AI 生成' : 'AI 生成目录与内容', {
342
- confirmButtonText: regenerating ? '重新生成' : '开始生成',
343
- cancelButtonText: '取消',
344
- inputPlaceholder: '例如:实施交付手册(留空则用空间名)'
345
- }).then(({ value }) => {
346
- row.state = 'run'
347
- row.note = '任务已开始,正在解析上传材料…'
348
- this.syncPolling()
349
- return this.$http.update({
350
- action: 'generateWiki', entityId: this.metaId, intakeId: row.id, subject: (value || '').trim()
351
- }).then(d => {
352
- this.showGenerationResult(d)
353
- this.load()
354
- this.$emit('changed')
355
- }).catch(e => {
356
- this.$message.error((e && e.message) || '生成失败')
357
- this.load()
358
- }).finally(() => { this.load(true) })
359
- }).catch(() => {})
417
+ }).finally(() => { this.load(true) })
360
418
  },
361
419
 
362
420
  /**
@@ -375,7 +433,6 @@ export default {
375
433
  const inputMissing = new Set(inputFailed.map(item => '输入材料:' + item))
376
434
  const missing = (Array.isArray(data.missing) ? data.missing : [])
377
435
  .filter(item => !inputMissing.has(String(item)))
378
- const h = this.$createElement
379
436
  const sections = [h('p', data.message || '部分内容未生成,请检查后重试')]
380
437
  if (missing.length) {
381
438
  sections.push(h('strong', '未完成项'))
@@ -407,22 +464,39 @@ export default {
407
464
  },
408
465
 
409
466
  drop (row) {
410
- this.$confirm('记录删了就没法再追溯这几个页是从哪个文件生成的。确定删除?', '删除入库记录', {
411
- type: 'warning', confirmButtonText: '删除', cancelButtonText: '取消', confirmButtonClass: 'el-button--danger'
412
- }).then(() => {
413
- return this.$http.update({ action: 'dropIntake', entityId: this.metaId, intakeId: row.id })
414
- .then(d => {
415
- this.$message.success((d && d.message) || '已删除')
416
- this.load()
417
- })
418
- .catch(e => this.$message.error((e && e.message) || '删除失败'))
419
- }).catch(() => {})
467
+ this.$confirm('是否同时删除这条记录生成的 Wiki 内容页及检索索引?空间总览页会保留。若仅删除原文件和记录,生成页将失去来源追溯。', '删除入库记录', {
468
+ type: 'warning',
469
+ confirmButtonText: '是,同时删除相关 Wiki 页',
470
+ cancelButtonText: '否,仅删除原文件和记录',
471
+ distinguishCancelAndClose: true,
472
+ confirmButtonClass: 'el-button--danger'
473
+ }).then(() => { this.dropRecord(row, true) }).catch(action => {
474
+ if (action === 'cancel') this.dropRecord(row, false)
475
+ })
476
+ },
477
+
478
+ dropRecord (row, deleteWiki) {
479
+ return this.$http.update({
480
+ action: 'dropIntake', entityId: this.metaId, intakeId: row.id, deleteWiki: deleteWiki ? '1' : '0'
481
+ }).then(d => {
482
+ this.$message.success((d && d.message) || '已删除')
483
+ this.load()
484
+ this.$emit('changed')
485
+ }).catch(e => this.$message.error((e && e.message) || '删除失败'))
420
486
  }
421
487
  }
422
488
  }
423
489
  </script>
424
490
 
425
491
  <style lang="scss">
492
+ .epx-wiki-intake__file.el-button {
493
+ padding: 0;
494
+ white-space: normal;
495
+ overflow-wrap: anywhere;
496
+ text-align: left;
497
+ line-height: 1.5;
498
+ }
499
+
426
500
  @include b(wiki-intake) {
427
501
  padding: 16px;
428
502
  overflow-y: auto;
package/src/index.js CHANGED
@@ -1,20 +1,24 @@
1
- import systemComponents from './system.component'
2
- import { installComponents } from '@epxing/core/src/register-components'
3
- import { configureRuntime } from '@epxing/core/src/runtime-services'
4
- import routeComponents from './route-components'
5
- import PopupInstall from './popup'
6
- import * as components from './public-components'
7
- import { publishSharedPackage } from '@epxing/core/src/shared-packages'
8
-
9
- export * from './public-components'
10
- export { systemComponents, routeComponents }
11
- export function install (app) {
12
- publishSharedPackage('@epxing/business', components)
13
- configureRuntime({ routeComponents, businessLoader: () => import('./system.component.lazy').then(module => {
14
- module.installLazyRegistry(app)
15
- return module
16
- }) })
17
- app.use(PopupInstall)
18
- installComponents(app, systemComponents, { byKey: true })
19
- }
20
- export default { install }
1
+ import systemComponents from './system.component'
2
+ import { installComponents } from '@epxing/core/src/register-components'
3
+ import { configureRuntime } from '@epxing/core/src/runtime-services'
4
+ import routeComponents from './route-components'
5
+ import PopupInstall from './popup'
6
+ import * as components from './public-components'
7
+ import { publishSharedPackage } from '@epxing/core/src/shared-packages'
8
+
9
+ export * from './public-components'
10
+ export { systemComponents, routeComponents }
11
+ export function install (app) {
12
+ publishSharedPackage('@epxing/business', components)
13
+ const { QyWechat, Task, HelpDocSet } = routeComponents
14
+ configureRuntime({
15
+ routeComponents: { QyWechat, Task, HelpDocSet },
16
+ businessLoader: () => import('./system.component.lazy').then(module => {
17
+ module.installLazyRegistry(app)
18
+ return module
19
+ })
20
+ })
21
+ app.use(PopupInstall)
22
+ installComponents(app, systemComponents, { byKey: true })
23
+ }
24
+ export default { install }
@@ -1,4 +1,5 @@
1
1
  export { default as UserFind } from './components/UserFind'
2
+ export { default as App } from './views/App'
2
3
  export { default as DeptFind } from './components/DeptFind'
3
4
  export { default as HeaderNav } from './components/HeaderNav'
4
5
  export { default as EntityTreeManage } from './components/EntityTreeManage'
@@ -1,8 +1,8 @@
1
1
  import QyWechat from '@epxing/business/src/views/QyWechat'
2
- import App from '@epxing/business/src/views/App'
3
- import Module from '@epxing/business/src/views/Module'
4
- import AppRoleSelect from '@epxing/business/src/views/AppRoleSelect'
2
+ import App from '@epxing/core/src/views/App.vue'
3
+ import Module from '@epxing/core/src/views/Module.vue'
4
+ import AppRoleSelect from '@epxing/core/src/views/AppRoleSelect.vue'
5
+ import Error from '@epxing/core/src/views/Error.vue'
5
6
  import Task from '@epxing/business/src/views/TaskPage'
6
- import Error from '@epxing/business/src/views/Error'
7
7
  import HelpDocSet from '@epxing/business/src/base/HelpDocSet'
8
8
  export default { QyWechat, App, Module, AppRoleSelect, Task, Error, HelpDocSet }
@@ -1,3 +1,3 @@
1
1
  // 自动生成(build/gen-system-component-index.mjs),勿手改、勿入库(.gitignore)。
2
2
  // 名 → business/src 相对路径;未命中的名字运行时回退整组加载。
3
- export default {"epx-base-ai-prompt-designer":"./base/AiPromptDesigner.vue","epx-base-ai-prompt-view":"./base/AiPromptView.vue","epx-base-ai-skill-editor":"./base/AiSkillEditor.vue","epx-base-app-config-form-item":"./base/AppConfigFormItem.vue","epx-base-app-market":"./base/AppMarket.vue","epx-base-app-market-list":"./base/AppMarketList.vue","epx-base-app-market-system-detail":"./base/AppMarketSystemDetail.vue","epx-base-attribute-sub-add":"./base/AttributeSubAdd.vue","epx-base-client-choose-applicaton":"./base/ChooseApplication.vue","epx-client-app-item":"./base/ClientAppItem.vue","epx-base-client-module-applicaton":"./base/ClientApplication.vue","epx-base-client-application-list":"./base/ClientApplicationList.vue","ClientModule":"./base/ClientModule.vue","epx-base-client-module-index":"./base/ClientModuleIndex.vue","epx-base-client-system-detail":"./base/ClientSystemDetail.vue","epx-base-client-system-list":"./base/ClientSystemList.vue","epx-base-common-field-list":"./base/CommonFieldList.vue","epx-base-common-search-list":"./base/CommonSearchList.vue","epx-base-company-detail":"./base/CompayDetail.vue","epx-component-global-set":"./base/ComponentGlobalSet.vue","ComponentParamsTree":"./base/ComponentParamsTree.vue","ConfigModuleIndex":"./base/ConfigModuleIndex.vue","CurrentClientApplication":"./base/CurrentClientApplication.vue","epx-base-current-version-info":"./base/CurrentVersionInfo.vue","epx-base-data-check-detail":"./base/data-check/DataChckDetail.vue","epx-base-data-check":"./base/data-check/DataCheck.vue","epx-base-data-check-list":"./base/data-check/DataCheckList.vue","epx-base-data-check-sub-list":"./base/data-check/DataCheckSubList.vue","epx-base-entity-view-form-item":"./base/entity-view/EntityViewFormItem.vue","epx-base-entity-view-sub-list":"./base/entity-view/EntityViewSubList.vue","epx-base-entity-view-config-basic-dialog":"./base/entity-view-config/BasicInfoDialog.vue","epx-base-entity-view-config-field-panel":"./base/entity-view-config/FieldPanel.vue","epx-base-entity-view-config-prop":"./base/entity-view-config/FieldPropForm.vue","epx-base-entity-view-config-formula-dialog":"./base/entity-view-config/FormulaDialog.vue","epx-base-entity-view-config-field-dialog":"./base/entity-view-config/ObjectFieldDialog.vue","epx-base-entity-view-config-relation-panel":"./base/entity-view-config/RelationPanel.vue","epx-base-entity-view-config-source-manager-dialog":"./base/entity-view-config/SourceManagerDialog.vue","epx-base-entity-view-config-sql-panel":"./base/entity-view-config/SqlPanel.vue","epx-base-entity-view-config-union-panel":"./base/entity-view-config/UnionPanel.vue","epx-base-entity-view-config":"./base/entity-view-config/ViewConfig.vue","epx-base-entity-match-compare":"./base/EntityMatchCompare.vue","epx-field-relation-form-item":"./base/FieldRelationFormItem.vue","epx-help-docset":"./base/HelpDocSet.vue","epx-base-index-form-item":"./base/IndexFormItem.vue","epx-job-form-item":"./base/JobFormItem.vue","epx-manage-app-nav":"./base/ManageAppNav.vue","epx-manager-menu":"./base/ManageMenu.vue","epx-manage-menu-item":"./base/ManageMenuItem.vue","epx-base-no-install-system-list":"./base/NoInstallSystemList.vue","epx-base-page-list":"./base/PageList.vue","epx-base-password-form-item":"./base/PasswordFormItem.vue","epx-process-form-item":"./base/ProcessFormItem.vue","epx-base-publish-system-apply-form-item":"./base/PublishSystemApplyFormItem.vue","epx-base-request-log":"./base/RequestLog.vue","epx-base-right-risk-list":"./base/RightRiskList.vue","epx-role-accredit":"./base/RoleAccredit.vue","epx-base-role-right-list":"./base/RoleRightList.vue","epx-base-role-user-manage":"./base/RoleUserManage.vue","epx-service-accredit":"./base/ServiceAccredit.vue","epx-base-service-menu":"./base/ServiceMenu.vue","epx-service-menu-form-item":"./base/ServiceMenuFormItem.vue","epx-base-promission":"./base/ServiceOperate.vue","epx-base-system-help-tree-find":"./base/SystemHelpTreeFind.vue","epx-base-user-type-form-item":"./base/user-type/UserTypeFormItem.vue","epx-add-page-form-item":"./components/AddPageFormItem.vue","epx-add-used-interface":"./components/AddUsedInterface.vue","epx-ai-doc-form-item":"./components/AiDocFormItem.vue","epx-ai-list":"./components/AiList.vue","epx-ai-permission-assistant":"./components/AiPermissionAssistant.vue","epx-app-list":"./components/AppList.vue","epx-ai-apply-list":"./components/Apply/AIApplyIndex.vue","epx-apply-index":"./components/Apply/ApplyIndex.vue","epx-attribute-list":"./components/AttributeList.vue","epx-add-api-permiss":"./components/authorization/AddApiPermiss.vue","epx-add-authorization":"./components/authorization/AddAuthorization.vue","epx-add-entity-find":"./components/authorization/AddEntityFind.vue","epx-authorization-add-no-api":"./components/authorization/AddNoApi.vue","epx-add-role-scope":"./components/authorization/AddRoleScope.vue","epx-authorization-ai-role-plan":"./components/authorization/AiRolePlan.vue","epx-api-share-other-list":"./components/authorization/ApiShareOtherList.vue","epx-api-system-list":"./components/authorization/ApiSystemList.vue","epx-authorization-interface":"./components/authorization/AuthorizationInterface.vue","epx-authorization-role-system":"./components/authorization/AuthorizationRoleSystem.vue","epx-entity-constraint-form-item":"./components/authorization/EntityConstraintFormItem.vue","epx-other-share-api-list":"./components/authorization/OtherShareApiList.vue","epx-permiss-common-role-tabs":"./components/authorization/PermissCommonRoleTabs.vue","epx-permiss-role-authorization":"./components/authorization/PermissRoleAuthorization.vue","epx-permiss-role-tabs":"./components/authorization/PermissRoleTabs.vue","epx-api-role-level":"./components/authorization/RoleLevel.vue","epx-role-level-scope":"./components/authorization/RoleLevelScope.vue","epx-authorization-system-add-no-api":"./components/authorization/SystemAddNoApi.vue","epx-banner":"./components/Banner.vue","epx-batch-add-ai-tool-param":"./components/BatchAddFieldDialog.vue","epx-card-list":"./components/card/CardList.vue","epx-card-list-item":"./components/card/CardListItem.vue","epx-card-title":"./components/card/Title.vue","epx-card-o":"./components/CardO.vue","epx-check-form":"./components/CheckForm.vue","epx-client-admin-form-item":"./components/ClientAdminFormItem.vue","epx-client-admin-list":"./components/ClientAdminList.vue","ClientFormItem":"./components/ClientFormItem.vue","epx-client-list":"./components/ClientList.vue","epx-code-detail":"./components/CodeDetail.vue","epx-code-manage":"./components/CodeManage.vue","epx-component-find":"./components/ComponentFind.vue","epx-component-list":"./components/ComponentList.vue","epx-config-param-form-item":"./components/ConfigParamFormItem.vue","epx-create-page":"./components/CreatePage.vue","epx-bpmn-ai-model":"./components/custom-bpmn/components/AiModel.vue","epx-bpmn-api":"./components/custom-bpmn/components/Api.vue","epx-bpmn-batch-operation":"./components/custom-bpmn/components/BatchOperation.vue","epx-bpmn-copy":"./components/custom-bpmn/components/Copy.vue","epx-bpmn-data-transform":"./components/custom-bpmn/components/DataTransform.vue","epx-bpmn-demo":"./components/custom-bpmn/components/Demo.vue","epx-bpmn-edit-div":"./components/custom-bpmn/components/EditDiv.vue","epx-bpmn-gen-scope":"./components/custom-bpmn/components/GenScope.vue","epx-bpmn-global-params-tree":"./components/custom-bpmn/components/GlobalParamsTree.vue","epx-bpmn-knowledges":"./components/custom-bpmn/components/Knowledges.vue","epx-bpmn-login":"./components/custom-bpmn/components/Login.vue","epx-bpmn-message-queue":"./components/custom-bpmn/components/MessageQueue.vue","epx-bpmn-meta-select":"./components/custom-bpmn/components/MetaSelect.vue","epx-bpmn-num-statistic":"./components/custom-bpmn/components/NumStatistic.vue","epx-bpmn-object-transform":"./components/custom-bpmn/components/ObjectTransform.vue","epx-bpmn-out-put":"./components/custom-bpmn/components/OutPut.vue","epx-bpmn-params-machining":"./components/custom-bpmn/components/ParamsMachining.vue","epx-bpmn-params-output":"./components/custom-bpmn/components/ParamsOutput.vue","epx-bpmn-process-audit":"./components/custom-bpmn/components/ProcessAudit.vue","epx-bpmn-single-multiple-find":"./components/custom-bpmn/components/SingleMultipleFind.vue","epx-bpmn-test-dialog":"./components/custom-bpmn/components/TestDialog.vue","epx-properties-view":"./components/custom-bpmn/PropertiesView.vue","epx-dashboard-create":"./components/DashboardCreate.vue","epx-data-log":"./components/DataLog.vue","epx-data-log-timeline":"./components/DataLogTimeline.vue","epx-data-snapshot":"./components/DataSnapshot.vue","epx-data-snapshot-list":"./components/DataSnapshotList.vue","epx-data-sync-init":"./components/DataSyncInit.vue","epx-dblog-list":"./components/DblogList.vue","epx-dept-find":"./components/DeptFind.vue","epx-dynamic-user-list":"./components/DynamicUserList.vue","epx-entity-relation-diagram":"./components/entity-relation-diagram/Er.vue","epx-entity-checkbox-find":"./components/EntityCheckboxFind.vue","epx-entity-relation-add":"./components/EntityRelationAdd.vue","epx-entity-relation-add-form-item":"./components/EntityRelationAddFormItem.vue","epx-entity-right-form-item":"./components/EntityRightFormItem.vue","epx-entity-right-sub-list":"./components/EntityRightSubList.vue","epx-entity-tag-sub-list":"./components/EntityTagSubList.vue","epx-entity-tree-manage":"./components/EntityTreeManage.vue","epx-expand-add-form":"./components/expand/AddForm.vue","epx-expand-add-form-item":"./components/expand/AddFormItem.vue","epx-export-system-config":"./components/ExportSystemConfig.vue","epx-field-tree-find":"./components/FieldTreeFind.vue","epx-filter":"./components/filter/Filter.vue","epx-filter-item":"./components/filter/FilterItem.vue","epx-formula-editor1":"./components/FormulaEditor.vue","epx-gen-test-data":"./components/GenTestData.vue","epx-hr-hall-app-collect":"./components/hall/AppCollect.vue","epx-hr-hall-app-list":"./components/hall/AppList.vue","epx-hall-app-visit-record":"./components/hall/AppVisitRecord.vue","epx-hr-hall-banner":"./components/hall/Banner.vue","epx-hall-service-card":"./components/hall/ServiceCard.vue","epx-hall-user-card":"./components/hall/UserCard.vue","epx-hall-nav":"./components/HallNav.vue","epx-header-nav":"./components/HeaderNav.vue","epx-icon-card":"./components/IconCard.vue","epx-icon-font-library":"./components/IconFontLibrary.vue","epx-icon-font-list":"./components/IconFontList.vue","epx-identify-list":"./components/IdentifyList.vue","epx-import-system-config":"./components/ImportSystemConfig.vue","epx-interface-sub-list":"./components/InterfaceSubList.vue","epx-js-panel":"./components/JsPanel.vue","epx-language-import-page":"./components/LanguageImportPage.vue","epx-language-setting":"./components/LanguageSetting.vue","epx-column-list-item":"./components/List/LinkItem.vue","cepx-list":"./components/List/List.vue","cepx-list-item":"./components/List/ListItem.vue","epx-menu-tree-find":"./components/MenuTreeFind.vue","epx-message-list":"./components/MessageList.vue","epx-message-rule-form-item":"./components/MessageRuleFormItem.vue","epx-message-rule-receiver-form-item":"./components/MessageRuleReceiverFormItem.vue","epx-message-template":"./components/MessageTemplate.vue","epx-meta-list":"./components/MetaList.vue","epx-nav":"./components/Nav.vue","epx-nav-form-catalog-item":"./components/NavFormCatalogItem.vue","epx-num-list":"./components/NumList.vue","epx-operate-log":"./components/OperateLog.vue","epx-page-catalog":"./components/PageCatalog.vue","epx-page-chart":"./components/PageChart.vue","epx-page-swipes":"./components/PageSwipes.vue","epx-premiss-add-api":"./components/permiss/AddApi.vue","epx-premiss-add-noentity-api":"./components/permiss/AddNoEntityApi.vue","epx-add-system-permiss":"./components/permiss/AddSystemPermiss.vue","epx-premiss-allocate-role":"./components/permiss/AllocateRole.vue","epx-permiss-api-sublist":"./components/permiss/ApiSubList.vue","epx-permiss-common-role-menu":"./components/permiss/CommonRoleMenu.vue","epx-permiss-field-scope":"./components/permiss/FieldScope.vue","epx-permiss-role-jurisdiction":"./components/permiss/jurisdiction.vue","epx-permiss-manage":"./components/permiss/PermissManage.vue","epx-permiss-role-app-list":"./components/permiss/RoleAppList.vue","epx-permiss-role-menu":"./components/permiss/RoleMenu.vue","epx-permiss-role-sublist":"./components/permiss/RoleSubList.vue","epx-person-form-item":"./components/PersonFormItem.vue","epx-popup":"./components/Popup.vue","epx-print-form-list":"./components/PrintFormList.vue","epx-process-healthcheck-chart":"./components/process-healthcheck/HealthcheckChart.vue","epx-publish-entity":"./components/PublishEntity.vue","epx-rely-field-tree-find":"./components/RelyFieldTreeFind.vue","epx-report-config":"./components/report/Config.vue","epx-report-design":"./components/report/Design.vue","epx-report-stat-list":"./components/report/StatList.vue","epx-report-from-list":"./components/ReportFormList.vue","epx-report-list-comp":"./components/ReportList.vue","epx-right-entity-other-system-list":"./components/right/EntityOtherSystemList.vue","epx-right-system-interface-list":"./components/right/SystemInterfaceList.vue","epx-right-system-list":"./components/right/SystemList.vue","epx-right-sub-list":"./components/RightSubList.vue","RoleAddUser":"./components/RoleAddUser.vue","epx-role-application-card":"./components/RoleApplicationCard.vue","epx-role-application-list":"./components/RoleApplicationList.vue","epx-role-application-set":"./components/RoleApplicationSet.vue","epx-search":"./components/Search.vue","epx-service-form-item":"./components/ServiceFormItem.vue","epx-snapshot-data-list":"./components/SnapshotDataList.vue","epx-system-admin-list":"./components/SystemAdminList.vue","epx-system-form-item":"./components/SystemFormItem.vue","epx-system-nav":"./components/SystemNav.vue","epx-task-num-card":"./components/TaskNumCard.vue","epx-timer-rule-form-item":"./components/TimerRuleFormItem.vue","epx-todo-list":"./components/TodoList.vue","epx-update-system-config":"./components/UpdateSystemConfig.vue","epx-upload":"./components/upLoad.vue","epx-user-card":"./components/UserCard.vue","epx-user-find":"./components/UserFind.vue","epx-user-form-item":"./components/UserFormItem.vue","epx-user-list":"./components/UserList.vue","epx-user-manage":"./components/UserManage.vue","epx-user-role-list":"./components/UserRoleList.vue","epx-validate-rule-form-item":"./components/ValidateRuleFormItem.vue","epx-view-field-define":"./components/ViewFieldDefine.vue","epx-look-view-list":"./components/viewport/LookViewList.vue","epx-view-add-form":"./components/viewport/ViewAddForm.vue","epx-view-define-list":"./components/viewport/ViewDefineList.vue","epx-view-field-list":"./components/viewport/ViewFiedList.vue","epx-view-scope":"./components/viewport/ViewScope.vue","epx-wiki-cites":"./components/wiki-workbench/WikiCites.vue","epx-wiki-intake":"./components/wiki-workbench/WikiIntake.vue","epx-wiki-jobs":"./components/wiki-workbench/WikiJobs.vue","epx-wiki-revisions":"./components/wiki-workbench/WikiRevisions.vue","epx-wiki-space-settings":"./components/wiki-workbench/WikiSpaceSettings.vue","epx-wiki-space-list":"./components/WikiSpaceList.vue","epx-wiki-workbench":"./components/WikiWorkbench.vue","epx-add":"./views/Add.vue","epx-ai-tool-manager":"./views/AiToolManager.vue","epx-app":"./views/App.vue","epx-app-role-select":"./views/AppRoleSelect.vue","epx-batch-edit":"./views/BatchEdit.vue","epx-bpmn":"./views/Bpmn.vue","epx-client-add-form":"./views/client/AddForm.vue","epx-client-app-market":"./views/client/AppMarket.vue","机构":"./views/client/ClientIndex.vue","clientClientModuleIndexPage":"./views/client/ClientModuleIndexPage.vue","epx-client-copy-system":"./views/client/CopySystem.vue","epx-client-create-app-form-item":"./views/client/CreateAppFormItem.vue","epx-client-create-method":"./views/client/CreateMethod.vue","epx-client-install-system":"./views/client/InstallSystem.vue","epx-client-manage-list":"./views/client/ManageList.vue","epx-open-client-manage":"./views/client/OpenClientManage.vue","epx-client-open-system-manage":"./views/client/OpenSystemManage.vue","epx-client-page-tabs-cyclic":"./views/client/PageTabsCyclic.vue","epx-client-self-build-system":"./views/client/SelfBuiltSystem.vue","epx-client-stand-product":"./views/client/StandardProduct.vue","epx-client-system-app-accredit":"./views/client/SystemAppAccredit.vue","epx-client-system-app-manager":"./views/client/SystemAppManager.vue","epx-client-system-manager":"./views/client/SystemManager.vue","epx-entity-check-page":"./views/EntityCheckPage.vue","epx-entity-detail-page":"./views/EntityDetailPage.vue","epx-entity-edit-page":"./views/EntityEditPage.vue","epx-entity-sub-list-page":"./views/EntitySubListPage.vue","epx-entity-tree-page":"./views/EntityTreePage.vue","epx-error":"./views/Error.vue","epx-excel-design":"./views/ExcelDesign.vue","epx-excel-preview-page":"./views/ExcelPreviewPage.vue","epx-export-file-page":"./views/ExportFilePage.vue","epx-export-page":"./views/ExportPage.vue","epx-form-design":"./views/FormDesign.vue","epx-i18n-ai-task-history-dialog":"./views/i18n/I18nAiTaskHistoryDialog.vue","epx-i18n-publish-dialog":"./views/i18n/I18nPublishDialog.vue","epx-i18n-translation-list":"./views/i18n/I18nTranslationList.vue","epx-i18n-workbench":"./views/I18nWorkbench.vue","epx-import-file-page":"./views/ImportFilePage.vue","epx-import-page":"./views/ImportPage.vue","epx-layout-card-list":"./views/layout/CardList.vue","epx-layout-grid":"./views/layout/Grid.vue","epx-match-add-target-field":"./views/match/AddTargetField.vue","epx-match-conversion":"./views/match/conversion.vue","epx-match-customize":"./views/match/customize.vue","epx-field-match":"./views/match/fieldMatch.vue","epx-match-add-form-item":"./views/match/MatchAddFormItem.vue","epx-m-entity-list-page":"./views/MEntityListPage.vue","epx-m-entity-sub-list-page":"./views/MEntitySubListPage.vue","epx-mine-page":"./views/MinePage.vue","epx-module":"./views/Module.vue","epx-page-attribute-tree-page":"./views/PageAttributeTreePage.vue","epx-page-config":"./views/PageConfig.vue","epx-promission":"./views/Permission.vue","epx-personal-info":"./views/PersonalInfo.vue","epx-qy-wechat":"./views/QyWechat.vue","epx-report-add-form-item":"./views/report/AddFormItem.vue","epx-report-design-report":"./views/report/DesignReport.vue","epx-report-tree-find":"./views/report/ReportTreeFind.vue","epx-report-form-list-page":"./views/ReportFormListPage.vue","epx-task-page":"./views/TaskPage.vue","epx-wiki-binding":"./views/WikiBinding.vue"}
3
+ export default {"epx-base-ai-prompt-designer":"./base/AiPromptDesigner.vue","epx-base-ai-prompt-view":"./base/AiPromptView.vue","epx-base-ai-skill-editor":"./base/AiSkillEditor.vue","epx-base-app-config-form-item":"./base/AppConfigFormItem.vue","epx-base-app-market":"./base/AppMarket.vue","epx-base-app-market-list":"./base/AppMarketList.vue","epx-base-app-market-system-detail":"./base/AppMarketSystemDetail.vue","epx-base-attribute-sub-add":"./base/AttributeSubAdd.vue","epx-base-client-choose-applicaton":"./base/ChooseApplication.vue","epx-client-app-item":"./base/ClientAppItem.vue","epx-base-client-module-applicaton":"./base/ClientApplication.vue","epx-base-client-application-list":"./base/ClientApplicationList.vue","ClientModule":"./base/ClientModule.vue","epx-base-client-module-index":"./base/ClientModuleIndex.vue","epx-base-client-system-detail":"./base/ClientSystemDetail.vue","epx-base-client-system-list":"./base/ClientSystemList.vue","epx-base-common-field-list":"./base/CommonFieldList.vue","epx-base-common-search-list":"./base/CommonSearchList.vue","epx-base-company-detail":"./base/CompayDetail.vue","epx-component-global-set":"./base/ComponentGlobalSet.vue","ComponentParamsTree":"./base/ComponentParamsTree.vue","ConfigModuleIndex":"./base/ConfigModuleIndex.vue","CurrentClientApplication":"./base/CurrentClientApplication.vue","epx-base-current-version-info":"./base/CurrentVersionInfo.vue","epx-base-data-check-detail":"./base/data-check/DataChckDetail.vue","epx-base-data-check":"./base/data-check/DataCheck.vue","epx-base-data-check-list":"./base/data-check/DataCheckList.vue","epx-base-data-check-sub-list":"./base/data-check/DataCheckSubList.vue","epx-base-entity-view-form-item":"./base/entity-view/EntityViewFormItem.vue","epx-base-entity-view-sub-list":"./base/entity-view/EntityViewSubList.vue","epx-base-entity-view-config-basic-dialog":"./base/entity-view-config/BasicInfoDialog.vue","epx-base-entity-view-config-field-panel":"./base/entity-view-config/FieldPanel.vue","epx-base-entity-view-config-prop":"./base/entity-view-config/FieldPropForm.vue","epx-base-entity-view-config-formula-dialog":"./base/entity-view-config/FormulaDialog.vue","epx-base-entity-view-config-field-dialog":"./base/entity-view-config/ObjectFieldDialog.vue","epx-base-entity-view-config-relation-panel":"./base/entity-view-config/RelationPanel.vue","epx-base-entity-view-config-source-manager-dialog":"./base/entity-view-config/SourceManagerDialog.vue","epx-base-entity-view-config-sql-panel":"./base/entity-view-config/SqlPanel.vue","epx-base-entity-view-config-union-panel":"./base/entity-view-config/UnionPanel.vue","epx-base-entity-view-config":"./base/entity-view-config/ViewConfig.vue","epx-base-entity-match-compare":"./base/EntityMatchCompare.vue","epx-field-relation-form-item":"./base/FieldRelationFormItem.vue","epx-help-docset":"./base/HelpDocSet.vue","epx-base-index-form-item":"./base/IndexFormItem.vue","epx-job-form-item":"./base/JobFormItem.vue","epx-manage-app-nav":"./base/ManageAppNav.vue","epx-manager-menu":"./base/ManageMenu.vue","epx-manage-menu-item":"./base/ManageMenuItem.vue","epx-base-no-install-system-list":"./base/NoInstallSystemList.vue","epx-base-page-list":"./base/PageList.vue","epx-base-password-form-item":"./base/PasswordFormItem.vue","epx-process-form-item":"./base/ProcessFormItem.vue","epx-base-publish-system-apply-form-item":"./base/PublishSystemApplyFormItem.vue","epx-base-request-log":"./base/RequestLog.vue","epx-base-right-risk-list":"./base/RightRiskList.vue","epx-role-accredit":"./base/RoleAccredit.vue","epx-role-bind-trace":"./base/RoleBindTrace.vue","epx-role-group-manage":"./base/RoleGroupManage.vue","epx-base-role-right-list":"./base/RoleRightList.vue","epx-base-role-user-manage":"./base/RoleUserManage.vue","epx-service-accredit":"./base/ServiceAccredit.vue","epx-base-service-menu":"./base/ServiceMenu.vue","epx-service-menu-form-item":"./base/ServiceMenuFormItem.vue","epx-base-promission":"./base/ServiceOperate.vue","epx-base-system-help-tree-find":"./base/SystemHelpTreeFind.vue","epx-base-user-type-form-item":"./base/user-type/UserTypeFormItem.vue","epx-add-page-form-item":"./components/AddPageFormItem.vue","epx-add-used-interface":"./components/AddUsedInterface.vue","epx-ai-doc-form-item":"./components/AiDocFormItem.vue","epx-ai-list":"./components/AiList.vue","epx-ai-permission-assistant":"./components/AiPermissionAssistant.vue","epx-app-list":"./components/AppList.vue","epx-ai-apply-list":"./components/Apply/AIApplyIndex.vue","epx-apply-index":"./components/Apply/ApplyIndex.vue","epx-attribute-list":"./components/AttributeList.vue","epx-add-api-permiss":"./components/authorization/AddApiPermiss.vue","epx-add-authorization":"./components/authorization/AddAuthorization.vue","epx-add-entity-find":"./components/authorization/AddEntityFind.vue","epx-authorization-add-no-api":"./components/authorization/AddNoApi.vue","epx-add-role-scope":"./components/authorization/AddRoleScope.vue","epx-authorization-ai-role-plan":"./components/authorization/AiRolePlan.vue","epx-api-share-other-list":"./components/authorization/ApiShareOtherList.vue","epx-api-system-list":"./components/authorization/ApiSystemList.vue","epx-authorization-interface":"./components/authorization/AuthorizationInterface.vue","epx-authorization-role-system":"./components/authorization/AuthorizationRoleSystem.vue","epx-entity-constraint-form-item":"./components/authorization/EntityConstraintFormItem.vue","epx-other-share-api-list":"./components/authorization/OtherShareApiList.vue","epx-permiss-common-role-tabs":"./components/authorization/PermissCommonRoleTabs.vue","epx-permiss-role-authorization":"./components/authorization/PermissRoleAuthorization.vue","epx-permiss-role-tabs":"./components/authorization/PermissRoleTabs.vue","epx-api-role-level":"./components/authorization/RoleLevel.vue","epx-role-level-scope":"./components/authorization/RoleLevelScope.vue","epx-authorization-system-add-no-api":"./components/authorization/SystemAddNoApi.vue","epx-banner":"./components/Banner.vue","epx-batch-add-ai-tool-param":"./components/BatchAddFieldDialog.vue","epx-card-list":"./components/card/CardList.vue","epx-card-list-item":"./components/card/CardListItem.vue","epx-card-title":"./components/card/Title.vue","epx-card-o":"./components/CardO.vue","epx-check-form":"./components/CheckForm.vue","epx-client-admin-form-item":"./components/ClientAdminFormItem.vue","epx-client-admin-list":"./components/ClientAdminList.vue","ClientFormItem":"./components/ClientFormItem.vue","epx-client-list":"./components/ClientList.vue","epx-code-detail":"./components/CodeDetail.vue","epx-code-manage":"./components/CodeManage.vue","epx-component-find":"./components/ComponentFind.vue","epx-component-list":"./components/ComponentList.vue","epx-config-param-form-item":"./components/ConfigParamFormItem.vue","epx-create-page":"./components/CreatePage.vue","epx-bpmn-ai-model":"./components/custom-bpmn/components/AiModel.vue","epx-bpmn-api":"./components/custom-bpmn/components/Api.vue","epx-bpmn-batch-operation":"./components/custom-bpmn/components/BatchOperation.vue","epx-bpmn-copy":"./components/custom-bpmn/components/Copy.vue","epx-bpmn-data-transform":"./components/custom-bpmn/components/DataTransform.vue","epx-bpmn-demo":"./components/custom-bpmn/components/Demo.vue","epx-bpmn-edit-div":"./components/custom-bpmn/components/EditDiv.vue","epx-bpmn-gen-scope":"./components/custom-bpmn/components/GenScope.vue","epx-bpmn-global-params-tree":"./components/custom-bpmn/components/GlobalParamsTree.vue","epx-bpmn-knowledges":"./components/custom-bpmn/components/Knowledges.vue","epx-bpmn-login":"./components/custom-bpmn/components/Login.vue","epx-bpmn-message-queue":"./components/custom-bpmn/components/MessageQueue.vue","epx-bpmn-meta-select":"./components/custom-bpmn/components/MetaSelect.vue","epx-bpmn-num-statistic":"./components/custom-bpmn/components/NumStatistic.vue","epx-bpmn-object-transform":"./components/custom-bpmn/components/ObjectTransform.vue","epx-bpmn-out-put":"./components/custom-bpmn/components/OutPut.vue","epx-bpmn-params-machining":"./components/custom-bpmn/components/ParamsMachining.vue","epx-bpmn-params-output":"./components/custom-bpmn/components/ParamsOutput.vue","epx-bpmn-process-audit":"./components/custom-bpmn/components/ProcessAudit.vue","epx-bpmn-single-multiple-find":"./components/custom-bpmn/components/SingleMultipleFind.vue","epx-bpmn-test-dialog":"./components/custom-bpmn/components/TestDialog.vue","epx-properties-view":"./components/custom-bpmn/PropertiesView.vue","epx-dashboard-create":"./components/DashboardCreate.vue","epx-data-log":"./components/DataLog.vue","epx-data-log-timeline":"./components/DataLogTimeline.vue","epx-data-snapshot":"./components/DataSnapshot.vue","epx-data-snapshot-list":"./components/DataSnapshotList.vue","epx-data-sync-init":"./components/DataSyncInit.vue","epx-dblog-list":"./components/DblogList.vue","epx-dept-find":"./components/DeptFind.vue","epx-dynamic-user-list":"./components/DynamicUserList.vue","epx-entity-relation-diagram":"./components/entity-relation-diagram/Er.vue","epx-entity-checkbox-find":"./components/EntityCheckboxFind.vue","epx-entity-relation-add":"./components/EntityRelationAdd.vue","epx-entity-relation-add-form-item":"./components/EntityRelationAddFormItem.vue","epx-entity-right-form-item":"./components/EntityRightFormItem.vue","epx-entity-right-sub-list":"./components/EntityRightSubList.vue","epx-entity-system-er":"./components/EntitySystemEr.vue","epx-entity-tag-sub-list":"./components/EntityTagSubList.vue","epx-entity-tree-manage":"./components/EntityTreeManage.vue","epx-expand-add-form":"./components/expand/AddForm.vue","epx-expand-add-form-item":"./components/expand/AddFormItem.vue","epx-export-system-config":"./components/ExportSystemConfig.vue","epx-field-tree-find":"./components/FieldTreeFind.vue","epx-filter":"./components/filter/Filter.vue","epx-filter-item":"./components/filter/FilterItem.vue","epx-formula-editor1":"./components/FormulaEditor.vue","epx-gen-test-data":"./components/GenTestData.vue","epx-hr-hall-app-collect":"./components/hall/AppCollect.vue","epx-hr-hall-app-list":"./components/hall/AppList.vue","epx-hall-app-visit-record":"./components/hall/AppVisitRecord.vue","epx-hr-hall-banner":"./components/hall/Banner.vue","epx-hall-service-card":"./components/hall/ServiceCard.vue","epx-hall-user-card":"./components/hall/UserCard.vue","epx-hall-nav":"./components/HallNav.vue","epx-header-nav":"./components/HeaderNav.vue","epx-remix-gallery":"./components/icon-gallery/IconGallery.vue","epx-icon-card":"./components/IconCard.vue","epx-icon-font-library":"./components/IconFontLibrary.vue","epx-icon-font-list":"./components/IconFontList.vue","epx-identify-list":"./components/IdentifyList.vue","epx-import-system-config":"./components/ImportSystemConfig.vue","epx-interface-sub-list":"./components/InterfaceSubList.vue","epx-js-panel":"./components/JsPanel.vue","epx-language-import-page":"./components/LanguageImportPage.vue","epx-language-setting":"./components/LanguageSetting.vue","epx-column-list-item":"./components/List/LinkItem.vue","cepx-list":"./components/List/List.vue","cepx-list-item":"./components/List/ListItem.vue","epx-menu-tree-find":"./components/MenuTreeFind.vue","epx-message-list":"./components/MessageList.vue","epx-message-rule-form-item":"./components/MessageRuleFormItem.vue","epx-message-rule-receiver-form-item":"./components/MessageRuleReceiverFormItem.vue","epx-message-template":"./components/MessageTemplate.vue","epx-meta-list":"./components/MetaList.vue","epx-nav":"./components/Nav.vue","epx-nav-form-catalog-item":"./components/NavFormCatalogItem.vue","epx-num-list":"./components/NumList.vue","epx-operate-log":"./components/OperateLog.vue","epx-page-catalog":"./components/PageCatalog.vue","epx-page-chart":"./components/PageChart.vue","epx-page-swipes":"./components/PageSwipes.vue","epx-premiss-add-api":"./components/permiss/AddApi.vue","epx-premiss-add-noentity-api":"./components/permiss/AddNoEntityApi.vue","epx-add-system-permiss":"./components/permiss/AddSystemPermiss.vue","epx-premiss-allocate-role":"./components/permiss/AllocateRole.vue","epx-permiss-api-sublist":"./components/permiss/ApiSubList.vue","epx-permiss-common-role-menu":"./components/permiss/CommonRoleMenu.vue","epx-permiss-field-scope":"./components/permiss/FieldScope.vue","epx-permiss-role-jurisdiction":"./components/permiss/jurisdiction.vue","epx-permiss-manage":"./components/permiss/PermissManage.vue","epx-permiss-role-app-list":"./components/permiss/RoleAppList.vue","epx-permiss-role-menu":"./components/permiss/RoleMenu.vue","epx-permiss-role-sublist":"./components/permiss/RoleSubList.vue","epx-person-form-item":"./components/PersonFormItem.vue","epx-popup":"./components/Popup.vue","epx-print-form-list":"./components/PrintFormList.vue","epx-process-healthcheck-chart":"./components/process-healthcheck/HealthcheckChart.vue","epx-publish-entity":"./components/PublishEntity.vue","epx-rely-field-tree-find":"./components/RelyFieldTreeFind.vue","epx-report-config":"./components/report/Config.vue","epx-report-design":"./components/report/Design.vue","epx-report-stat-list":"./components/report/StatList.vue","epx-report-from-list":"./components/ReportFormList.vue","epx-report-list-comp":"./components/ReportList.vue","epx-right-entity-other-system-list":"./components/right/EntityOtherSystemList.vue","epx-right-system-interface-list":"./components/right/SystemInterfaceList.vue","epx-right-system-list":"./components/right/SystemList.vue","epx-right-sub-list":"./components/RightSubList.vue","RoleAddUser":"./components/RoleAddUser.vue","epx-role-application-card":"./components/RoleApplicationCard.vue","epx-role-application-list":"./components/RoleApplicationList.vue","epx-role-application-set":"./components/RoleApplicationSet.vue","epx-search":"./components/Search.vue","epx-service-form-item":"./components/ServiceFormItem.vue","epx-snapshot-data-list":"./components/SnapshotDataList.vue","epx-system-admin-list":"./components/SystemAdminList.vue","epx-system-form-item":"./components/SystemFormItem.vue","epx-system-nav":"./components/SystemNav.vue","epx-task-num-card":"./components/TaskNumCard.vue","epx-timer-rule-form-item":"./components/TimerRuleFormItem.vue","epx-todo-list":"./components/TodoList.vue","epx-update-system-config":"./components/UpdateSystemConfig.vue","epx-upload":"./components/upLoad.vue","epx-user-card":"./components/UserCard.vue","epx-user-find":"./components/UserFind.vue","epx-user-form-item":"./components/UserFormItem.vue","epx-user-list":"./components/UserList.vue","epx-user-manage":"./components/UserManage.vue","epx-user-role-list":"./components/UserRoleList.vue","epx-validate-rule-form-item":"./components/ValidateRuleFormItem.vue","epx-view-field-define":"./components/ViewFieldDefine.vue","epx-look-view-list":"./components/viewport/LookViewList.vue","epx-view-add-form":"./components/viewport/ViewAddForm.vue","epx-view-define-list":"./components/viewport/ViewDefineList.vue","epx-view-field-list":"./components/viewport/ViewFiedList.vue","epx-view-scope":"./components/viewport/ViewScope.vue","epx-wiki-cites":"./components/wiki-workbench/WikiCites.vue","epx-wiki-intake":"./components/wiki-workbench/WikiIntake.vue","epx-wiki-jobs":"./components/wiki-workbench/WikiJobs.vue","epx-wiki-revisions":"./components/wiki-workbench/WikiRevisions.vue","epx-wiki-space-settings":"./components/wiki-workbench/WikiSpaceSettings.vue","epx-wiki-space-list":"./components/WikiSpaceList.vue","epx-wiki-workbench":"./components/WikiWorkbench.vue","epx-add":"./views/Add.vue","epx-ai-tool-manager":"./views/AiToolManager.vue","App":"./views/App.vue","AppRoleSelect":"./views/AppRoleSelect.vue","epx-batch-edit":"./views/BatchEdit.vue","epx-bpmn":"./views/Bpmn.vue","epx-client-add-form":"./views/client/AddForm.vue","epx-client-app-market":"./views/client/AppMarket.vue","机构":"./views/client/ClientIndex.vue","clientClientModuleIndexPage":"./views/client/ClientModuleIndexPage.vue","epx-client-copy-system":"./views/client/CopySystem.vue","epx-client-create-app-form-item":"./views/client/CreateAppFormItem.vue","epx-client-create-method":"./views/client/CreateMethod.vue","epx-client-install-system":"./views/client/InstallSystem.vue","epx-client-manage-list":"./views/client/ManageList.vue","epx-open-client-manage":"./views/client/OpenClientManage.vue","epx-client-open-system-manage":"./views/client/OpenSystemManage.vue","epx-client-page-tabs-cyclic":"./views/client/PageTabsCyclic.vue","epx-client-self-build-system":"./views/client/SelfBuiltSystem.vue","epx-client-stand-product":"./views/client/StandardProduct.vue","epx-client-system-app-accredit":"./views/client/SystemAppAccredit.vue","epx-client-system-app-manager":"./views/client/SystemAppManager.vue","epx-client-system-manager":"./views/client/SystemManager.vue","epx-entity-check-page":"./views/EntityCheckPage.vue","epx-entity-detail-page":"./views/EntityDetailPage.vue","epx-entity-edit-page":"./views/EntityEditPage.vue","epx-entity-sub-list-page":"./views/EntitySubListPage.vue","epx-entity-tree-page":"./views/EntityTreePage.vue","Error":"./views/Error.vue","epx-excel-design":"./views/ExcelDesign.vue","epx-excel-preview-page":"./views/ExcelPreviewPage.vue","epx-export-file-page":"./views/ExportFilePage.vue","epx-export-page":"./views/ExportPage.vue","epx-form-design":"./views/FormDesign.vue","epx-i18n-ai-task-history-dialog":"./views/i18n/I18nAiTaskHistoryDialog.vue","epx-i18n-publish-dialog":"./views/i18n/I18nPublishDialog.vue","epx-i18n-translation-list":"./views/i18n/I18nTranslationList.vue","epx-i18n-workbench":"./views/I18nWorkbench.vue","epx-import-file-page":"./views/ImportFilePage.vue","epx-import-page":"./views/ImportPage.vue","epx-jvm-memory-monitor":"./views/JvmMemoryMonitor.vue","epx-layout-card-list":"./views/layout/CardList.vue","epx-layout-grid":"./views/layout/Grid.vue","epx-match-add-target-field":"./views/match/AddTargetField.vue","epx-match-conversion":"./views/match/conversion.vue","epx-match-customize":"./views/match/customize.vue","epx-field-match":"./views/match/fieldMatch.vue","epx-match-add-form-item":"./views/match/MatchAddFormItem.vue","epx-m-entity-list-page":"./views/MEntityListPage.vue","epx-m-entity-sub-list-page":"./views/MEntitySubListPage.vue","epx-mine-page":"./views/MinePage.vue","Module":"./views/Module.vue","epx-page-attribute-tree-page":"./views/PageAttributeTreePage.vue","epx-page-config":"./views/PageConfig.vue","epx-promission":"./views/Permission.vue","epx-personal-info":"./views/PersonalInfo.vue","epx-qy-wechat":"./views/QyWechat.vue","epx-report-add-form-item":"./views/report/AddFormItem.vue","epx-report-design-report":"./views/report/DesignReport.vue","epx-report-tree-find":"./views/report/ReportTreeFind.vue","epx-report-form-list-page":"./views/ReportFormListPage.vue","epx-task-page":"./views/TaskPage.vue","epx-wiki-binding":"./views/WikiBinding.vue"}