vome-core 0.3.10 → 0.3.12

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 (120) hide show
  1. package/dist/admin/api/client.js +9 -8
  2. package/dist/admin/components/ui/avatar/index.js +1 -1
  3. package/dist/admin/components/ui/badge/index.d.ts +1 -1
  4. package/dist/admin/components/ui/button/index.d.ts +1 -1
  5. package/dist/admin/components/ui/checkbox/index.js +1 -1
  6. package/dist/admin/components/ui/dialog/index.js +1 -1
  7. package/dist/admin/components/ui/dropdown-menu/index.js +1 -1
  8. package/dist/admin/components/ui/input/Input.vue +2 -1
  9. package/dist/admin/components/ui/input/index.js +1 -1
  10. package/dist/admin/components/ui/label/index.js +1 -1
  11. package/dist/admin/components/ui/scroll-area/index.js +1 -1
  12. package/dist/admin/components/ui/select/index.js +1 -1
  13. package/dist/admin/components/ui/separator/index.js +1 -1
  14. package/dist/admin/components/ui/sheet/index.js +1 -1
  15. package/dist/admin/components/ui/sonner/index.js +1 -1
  16. package/dist/admin/components/ui/table/index.js +1 -1
  17. package/dist/admin/components/ui/tabs/index.js +1 -1
  18. package/dist/admin/components/ui/tooltip/index.js +1 -1
  19. package/dist/admin/components/vm-aside.vue +8 -6
  20. package/dist/admin/components/vm-auto-perm-dialog.vue +12 -11
  21. package/dist/admin/components/vm-check-tree.vue +3 -2
  22. package/dist/admin/components/vm-dept-tree.vue +31 -29
  23. package/dist/admin/components/vm-empty.vue +16 -2
  24. package/dist/admin/components/vm-eps-perm-picker.vue +3 -2
  25. package/dist/admin/components/vm-form-dialog.vue +4 -3
  26. package/dist/admin/components/vm-group-cascader.vue +5 -4
  27. package/dist/admin/components/vm-icon-picker.vue +24 -15
  28. package/dist/admin/components/vm-inline-search.vue +3 -2
  29. package/dist/admin/components/vm-loading.vue +4 -3
  30. package/dist/admin/components/vm-markdown.vue +6 -5
  31. package/dist/admin/components/vm-role-picker.vue +6 -5
  32. package/dist/admin/components/vm-view-path-picker.vue +3 -2
  33. package/dist/admin/crud/auto-fields.js +1 -1
  34. package/dist/admin/crud/components/vm-avatar.vue +2 -1
  35. package/dist/admin/crud/components/vm-color-picker.vue +8 -8
  36. package/dist/admin/crud/components/vm-column-custom.vue +6 -5
  37. package/dist/admin/crud/components/vm-copy-btn.vue +4 -3
  38. package/dist/admin/crud/components/vm-date-calendar-panel.vue +30 -27
  39. package/dist/admin/crud/components/vm-date-picker.vue +6 -5
  40. package/dist/admin/crud/components/vm-date-range.vue +5 -4
  41. package/dist/admin/crud/components/vm-datetime-field.vue +4 -3
  42. package/dist/admin/crud/components/vm-json-code.vue +3 -2
  43. package/dist/admin/crud/components/vm-json-editor.vue +3 -2
  44. package/dist/admin/crud/components/vm-json-kv-editor.vue +13 -12
  45. package/dist/admin/crud/components/vm-multi-select.vue +5 -4
  46. package/dist/admin/crud/components/vm-number-range.vue +5 -4
  47. package/dist/admin/crud/components/vm-preview-viewer.vue +33 -29
  48. package/dist/admin/crud/components/vm-richtext-extensions.js +1 -1
  49. package/dist/admin/crud/components/vm-richtext.vue +33 -30
  50. package/dist/admin/crud/components/vm-select.vue +4 -3
  51. package/dist/admin/crud/components/vm-status-tag.vue +2 -1
  52. package/dist/admin/crud/components/vm-switch.vue +5 -4
  53. package/dist/admin/crud/components/vm-text-link.vue +3 -2
  54. package/dist/admin/crud/components/vm-tree-select.vue +3 -2
  55. package/dist/admin/crud/components/vm-upload-item.vue +6 -4
  56. package/dist/admin/crud/components/vm-upload.vue +6 -5
  57. package/dist/admin/crud/config.js +1 -1
  58. package/dist/admin/crud/confirm.js +1 -1
  59. package/dist/admin/crud/crud-page-request.js +1 -1
  60. package/dist/admin/crud/data-i18n.js +1 -1
  61. package/dist/admin/crud/dict.d.ts +1 -1
  62. package/dist/admin/crud/dict.js +1 -1
  63. package/dist/admin/crud/export-fetch.js +1 -1
  64. package/dist/admin/crud/key.js +1 -1
  65. package/dist/admin/crud/plugins.js +1 -1
  66. package/dist/admin/crud/span.js +1 -1
  67. package/dist/admin/crud/style.js +1 -1
  68. package/dist/admin/crud/validate.js +1 -1
  69. package/dist/admin/crud/vm-crud.vue +15 -15
  70. package/dist/admin/crud/vm-data-i18n-btn.vue +1 -1
  71. package/dist/admin/crud/vm-export-btn.vue +7 -7
  72. package/dist/admin/crud/vm-import-btn.vue +33 -27
  73. package/dist/admin/crud/vm-table.vue +7 -2
  74. package/dist/admin/crud/vm-upsert.vue +1 -0
  75. package/dist/admin/directives/perm.js +1 -1
  76. package/dist/admin/hooks/useUpload.js +1 -1
  77. package/dist/admin/lib/browser.js +1 -1
  78. package/dist/admin/lib/cn.js +1 -1
  79. package/dist/admin/lib/dialog-float.js +1 -1
  80. package/dist/admin/lib/export-excel.js +1 -1
  81. package/dist/admin/lib/file-preview.js +8 -6
  82. package/dist/admin/lib/import-excel.js +1 -1
  83. package/dist/admin/lib/json.d.ts +0 -1
  84. package/dist/admin/lib/json.js +1 -1
  85. package/dist/admin/lib/menu.js +1 -1
  86. package/dist/admin/lib/micro-locale.js +1 -1
  87. package/dist/admin/lib/micro-theme.js +1 -1
  88. package/dist/admin/lib/shell.js +1 -1
  89. package/dist/admin/lib/theme-color-options.d.ts +1 -2
  90. package/dist/admin/lib/theme-color-options.js +1 -1
  91. package/dist/admin/lib/tree.js +1 -1
  92. package/dist/admin/lib/upload.d.ts +5 -0
  93. package/dist/admin/lib/upload.js +1 -1
  94. package/dist/admin/lib/video-frame.js +1 -1
  95. package/dist/admin/router/create.js +1 -1
  96. package/dist/admin/router/guards.js +1 -1
  97. package/dist/ai/index.js +1 -1
  98. package/dist/client/ai-model-registry.js +1 -1
  99. package/dist/client/base.js +1 -1
  100. package/dist/client/configure.js +1 -1
  101. package/dist/client/dict.js +1 -1
  102. package/dist/client/eps-payload.js +1 -1
  103. package/dist/client/eps.js +1 -1
  104. package/dist/client/index.js +1 -1
  105. package/dist/client/locale-store.js +1 -1
  106. package/dist/client/service.js +1 -1
  107. package/dist/client/vite-admin.js +1 -1
  108. package/dist/client/vite-auto-import.js +1 -1
  109. package/dist/client/vite-micro-proxy.js +1 -1
  110. package/dist/client/vite-plugin-eps.js +1 -1
  111. package/dist/client/vite-resolve.js +1 -1
  112. package/dist/config/index.js +1 -1
  113. package/dist/index.js +1 -1
  114. package/dist/server/index.js +1 -1
  115. package/dist/shared/datetime-picker.js +1 -1
  116. package/dist/shared/excel.js +1 -1
  117. package/dist/shared/index.js +1 -1
  118. package/dist/shared/locale-json.js +1 -1
  119. package/dist/shared/tree.js +1 -1
  120. package/package.json +1 -1
@@ -170,7 +170,7 @@ async function refresh(extra: Record<string, unknown> = {}) {
170
170
 
171
171
  const svc = service.value
172
172
  if (!svc.page && !svc.list) {
173
- toast.error('CRUD service 缺少 page/list')
173
+ toast.error(crudLabel('noPageList'))
174
174
  return
175
175
  }
176
176
 
@@ -252,7 +252,7 @@ async function refresh(extra: Record<string, unknown> = {}) {
252
252
  async function refreshDataI18nEntries(extra: Record<string, unknown> = {}) {
253
253
  const meta = canUseDataI18n(service.value, hostService)
254
254
  if (!meta.ok) {
255
- toast.error('未配置业务 dataI18n')
255
+ toast.error(crudLabel('noDataI18n'))
256
256
  trashMode.value = 'default'
257
257
  list.value = []
258
258
  dataI18nFields.value = []
@@ -261,7 +261,7 @@ async function refreshDataI18nEntries(extra: Record<string, unknown> = {}) {
261
261
  const dataPack = dataPackFromService(hostService)
262
262
  if (!dataPack?.entries) {
263
263
  toast.error(
264
- 'EPS 未下发 dataPack.entries:请确认 i18n/dataPack 控制器含 GET /entries,并重启后端重扫 EPS',
264
+ crudLabel('noDataPackEntries'),
265
265
  )
266
266
  list.value = []
267
267
  dataI18nFields.value = []
@@ -270,7 +270,7 @@ async function refreshDataI18nEntries(extra: Record<string, unknown> = {}) {
270
270
  }
271
271
  const lang = String(dataI18nLangCode.value || '').trim()
272
272
  if (!lang) {
273
- toast.error('请选择语种')
273
+ toast.error(crudLabel('pickLang'))
274
274
  list.value = []
275
275
  pagination.value = { ...pagination.value, total: 0 }
276
276
  return
@@ -324,7 +324,7 @@ async function refreshDataI18nEntries(extra: Record<string, unknown> = {}) {
324
324
  selection.value = []
325
325
  } catch (e) {
326
326
  console.error(e)
327
- toast.error(e instanceof Error ? e.message : '加载翻译条目失败')
327
+ toast.error(e instanceof Error ? e.message : crudLabel('loadI18nFail'))
328
328
  list.value = []
329
329
  dataI18nFields.value = []
330
330
  pagination.value = { ...pagination.value, total: 0 }
@@ -441,7 +441,7 @@ function openUpsert(
441
441
  async function doDelete(targets: Record<string, unknown>[], force = false) {
442
442
  const svc = service.value
443
443
  if (!svc.delete) {
444
- toast.error('未配置 delete')
444
+ toast.error(crudLabel('noDeleteApi'))
445
445
  return
446
446
  }
447
447
  const ids = targets
@@ -462,14 +462,14 @@ async function rowDelete(rows?: Record<string, unknown>[], force = false) {
462
462
  if (!permission.value.delete) return
463
463
  const targets = rows?.length ? rows : selection.value
464
464
  if (!targets.length) {
465
- toast.warning('请先选择数据')
465
+ toast.warning(crudLabel('pleaseSelectData'))
466
466
  return
467
467
  }
468
468
 
469
469
  const next = async (payload?: Record<string, unknown>) => {
470
470
  if (payload?.ids) {
471
471
  const svc = service.value
472
- if (!svc.delete) throw new Error('未配置 delete')
472
+ if (!svc.delete) throw new Error(crudLabel('noDeleteApi'))
473
473
  await svc.delete({
474
474
  ...(payload as { ids: Array<string | number> }),
475
475
  force: hard,
@@ -505,20 +505,20 @@ async function rowRestore(rows?: Record<string, unknown>[]) {
505
505
  if (!permission.value.restore) return
506
506
  const targets = rows?.length ? rows : selection.value
507
507
  if (!targets.length) {
508
- toast.warning('请先选择数据')
508
+ toast.warning(crudLabel('pleaseSelectData'))
509
509
  return
510
510
  }
511
511
  const svc = service.value
512
512
  if (!svc.restore) {
513
- toast.error('未配置 restore')
513
+ toast.error(crudLabel('noRestoreApi'))
514
514
  return
515
515
  }
516
- if (!(await vmConfirm({ title: '恢复确认', message: '确定恢复?' }))) return
516
+ if (!(await vmConfirm({ title: crudLabel('restoreConfirmTitle'), message: crudLabel('restoreConfirmMsg'), confirmText: crudLabel('confirm'), cancelText: crudLabel('close') }))) return
517
517
  const ids = targets
518
518
  .map((r) => r[dict.primaryId] as string | number)
519
519
  .filter((id) => id != null)
520
520
  await svc.restore({ ids })
521
- toast.success('已恢复')
521
+ toast.success(crudLabel('restored'))
522
522
  await refresh()
523
523
  }
524
524
 
@@ -532,11 +532,11 @@ async function upsertSubmit() {
532
532
  const svc = service.value
533
533
  try {
534
534
  if (upsertMode.value === 'add') {
535
- if (!svc.add) throw new Error('未配置 add')
535
+ if (!svc.add) throw new Error(crudLabel('noAddApi'))
536
536
  await svc.add(data)
537
537
  toast.success(crudLabel('saveSuccess', dict.label))
538
538
  } else {
539
- if (!svc.update) throw new Error('未配置 update')
539
+ if (!svc.update) throw new Error(crudLabel('noUpdateConfig'))
540
540
  await svc.update(data)
541
541
  toast.success(crudLabel('saveSuccess', dict.label))
542
542
  }
@@ -555,7 +555,7 @@ async function upsertSubmit() {
555
555
  console.error(e)
556
556
  const err = e as Error & { toasted?: boolean }
557
557
  const msg =
558
- e instanceof Error && e.message ? e.message : '保存失败'
558
+ e instanceof Error && e.message ? e.message : crudLabel('saveFailed')
559
559
  // request 已 toast 过则不再重复;本地校验/配置错误仍要提示
560
560
  if (!err.toasted) toast.error(msg.slice(0, 200))
561
561
  }
@@ -222,7 +222,7 @@ async function loadModels() {
222
222
  if (!dataPack?.chatModels) {
223
223
  modelOptions.value = []
224
224
  form.model = ''
225
- toast.error('EPS 未下发 dataPack.chatModels,请确认 i18n/dataPack 控制器含该接口并重启后端')
225
+ toast.error(crudLabel('noChatModels'))
226
226
  return
227
227
  }
228
228
  try {
@@ -26,7 +26,7 @@ import {
26
26
  } from './key'
27
27
  import { fetchExportRowsByPage } from './export-fetch'
28
28
  import { useCrud } from './useCrud'
29
- import { crudLabel } from './style'
29
+ import { crudFormat, crudLabel } from './style'
30
30
  import type {
31
31
  CrudColumn,
32
32
  CrudPermission,
@@ -50,7 +50,7 @@ const props = withDefaults(
50
50
  permission?: keyof CrudPermission
51
51
  }>(),
52
52
  {
53
- filename: '导出',
53
+ filename: undefined,
54
54
  maxExportLimit: 5000,
55
55
  disabled: false,
56
56
  permission: 'page',
@@ -82,7 +82,7 @@ const exportColumns = computed(() => {
82
82
  function resolveFilename() {
83
83
  const raw = props.filename
84
84
  const name = typeof raw === 'function' ? raw() : raw
85
- return name || '导出'
85
+ return name || crudLabel('export')
86
86
  }
87
87
 
88
88
  async function fetchRowsByPage(): Promise<Record<string, unknown>[]> {
@@ -119,7 +119,7 @@ async function fetchRows(): Promise<Record<string, unknown>[]> {
119
119
  async function onExport() {
120
120
  if (submitting.value || props.disabled) return
121
121
  if (!exportColumns.value.length) {
122
- toast.error('没有可导出的列')
122
+ toast.error(crudLabel('exportNoCols'))
123
123
  return
124
124
  }
125
125
 
@@ -127,14 +127,14 @@ async function onExport() {
127
127
  try {
128
128
  const rows = await fetchRows()
129
129
  if (!rows.length) {
130
- toast.warning('暂无数据可导出')
130
+ toast.warning(crudLabel('exportNoData'))
131
131
  return
132
132
  }
133
133
  const flat = flattenExportRows(rows, tableOpts?.tree)
134
134
  exportCrudExcel(exportColumns.value, flat, resolveFilename())
135
- toast.success(`导出成功(${flat.length} 条)`)
135
+ toast.success(crudFormat(crudLabel('exportSuccess'), flat.length))
136
136
  } catch (e) {
137
- toast.error(e instanceof Error ? e.message : '导出失败')
137
+ toast.error(e instanceof Error ? e.message : crudLabel('exportFail'))
138
138
  } finally {
139
139
  submitting.value = false
140
140
  }
@@ -20,7 +20,7 @@
20
20
  @interact-outside="preventDialogOutsideClose"
21
21
  >
22
22
  <DialogHeader class="vm-crud-shell__head">
23
- <DialogTitle class="vm-crud-shell__title">导入</DialogTitle>
23
+ <DialogTitle class="vm-crud-shell__title">{{ crudLabel('import') }}</DialogTitle>
24
24
  </DialogHeader>
25
25
 
26
26
  <div class="vm-crud-shell__body vm-import-btn__body">
@@ -38,7 +38,7 @@
38
38
  :disabled="submitting || parsing"
39
39
  @click="onPick"
40
40
  >
41
- 重新选择
41
+ {{ crudLabel('reselect') }}
42
42
  </button>
43
43
  <button
44
44
  type="button"
@@ -46,7 +46,7 @@
46
46
  :disabled="submitting || downloading || parsing"
47
47
  @click="onTemplate"
48
48
  >
49
- {{ downloading ? '下载中…' : '下载模版' }}
49
+ {{ downloading ? crudLabel('downloading') : crudLabel('downloadTpl') }}
50
50
  </button>
51
51
  </div>
52
52
  </div>
@@ -65,11 +65,11 @@
65
65
  @drop.prevent="onDrop"
66
66
  >
67
67
  <i class="ri-upload-cloud-2-line" />
68
- <span v-if="parsing">正在解析…</span>
68
+ <span v-if="parsing">{{ crudLabel('parsing') }}</span>
69
69
  <span v-else>
70
- 点击上传或将文件拖拽到此处,文件大小限制{{ maxSizeMb }}M
70
+ {{ crudFormat(crudLabel('importDropHint'), maxSizeMb) }}
71
71
  </span>
72
- <span class="vm-import-btn__ext">仅支持 .xlsx 请下载导入模版</span>
72
+ <span class="vm-import-btn__ext">{{ crudLabel('importExtHint') }}</span>
73
73
  </div>
74
74
 
75
75
  <div v-if="previewRows.length" class="vm-import-btn__preview">
@@ -100,7 +100,7 @@
100
100
  </table>
101
101
  </div>
102
102
  <div class="vm-import-btn__pager">
103
- <span class="vm-import-btn__total">共 {{ previewRows.length }} 条</span>
103
+ <span class="vm-import-btn__total">{{ crudFormat(crudLabel('total'), previewRows.length) }}</span>
104
104
  <div class="vm-import-btn__pager-actions">
105
105
  <button
106
106
  type="button"
@@ -108,7 +108,7 @@
108
108
  :disabled="page <= 1 || submitting"
109
109
  @click="goPrevPage"
110
110
  >
111
- 上一页
111
+ {{ crudLabel('prevPage') }}
112
112
  </button>
113
113
  <span class="vm-import-btn__page-num">
114
114
  {{ page }} / {{ totalPages }}
@@ -119,7 +119,7 @@
119
119
  :disabled="page >= totalPages || submitting"
120
120
  @click="goNextPage"
121
121
  >
122
- 下一页
122
+ {{ crudLabel('nextPage') }}
123
123
  </button>
124
124
  </div>
125
125
  </div>
@@ -141,7 +141,7 @@
141
141
  :disabled="submitting"
142
142
  @click="closeDialog"
143
143
  >
144
- 取消
144
+ {{ crudLabel('close') }}
145
145
  </button>
146
146
  <button
147
147
  type="button"
@@ -149,7 +149,7 @@
149
149
  :disabled="submitting || parsing || !canSubmit"
150
150
  @click="onSubmit"
151
151
  >
152
- {{ submitting ? '提交中…' : '提交' }}
152
+ {{ submitting ? crudLabel('submitting') : crudLabel('submit') }}
153
153
  </button>
154
154
  </DialogFooter>
155
155
  </DialogContent>
@@ -167,7 +167,7 @@ import {
167
167
  uploadImportExcel,
168
168
  } from '../lib/import-excel'
169
169
  import { useCrud } from './useCrud'
170
- import { crudLabel } from './style'
170
+ import { crudFormat, crudLabel } from './style'
171
171
  import type { CrudPermission } from '../../../typings/admin/comm/crud'
172
172
 
173
173
  defineOptions({ name: 'vm-import-btn' })
@@ -252,7 +252,7 @@ function formatCell(v: unknown) {
252
252
  function resolveTemplateName() {
253
253
  const raw = props.templateFilename
254
254
  const name = typeof raw === 'function' ? raw() : raw
255
- const base = name || '导入模板'
255
+ const base = name || crudLabel('importTpl')
256
256
  return base.endsWith(ACCEPT_EXT) ? base : `${base}${ACCEPT_EXT}`
257
257
  }
258
258
 
@@ -298,12 +298,12 @@ function isXlsx(f: File) {
298
298
  async function acceptFile(f: File | undefined | null) {
299
299
  if (!f || parsing.value || submitting.value) return
300
300
  if (!isXlsx(f)) {
301
- toast.error(`仅支持 ${ACCEPT_EXT} 文件(与下载模版后缀一致)`)
301
+ toast.error(crudFormat(crudLabel('importExtOnly'), ACCEPT_EXT))
302
302
  return
303
303
  }
304
304
  const limit = props.maxSizeMb * 1024 * 1024
305
305
  if (f.size > limit) {
306
- toast.error(`文件大小不能超过 ${props.maxSizeMb}M`)
306
+ toast.error(crudFormat(crudLabel('fileSizeLimit'), props.maxSizeMb))
307
307
  return
308
308
  }
309
309
 
@@ -312,7 +312,7 @@ async function acceptFile(f: File | undefined | null) {
312
312
  const preview = await parseImportExcelPreview(f)
313
313
  if (!preview.rows.length) {
314
314
  resetPreview()
315
- toast.error('文件中没有可导入的数据行')
315
+ toast.error(crudLabel('noImportRows'))
316
316
  return
317
317
  }
318
318
  file.value = f
@@ -321,7 +321,7 @@ async function acceptFile(f: File | undefined | null) {
321
321
  page.value = 1
322
322
  } catch (e) {
323
323
  resetPreview()
324
- toast.error(e instanceof Error ? e.message : '解析 Excel 失败')
324
+ toast.error(e instanceof Error ? e.message : crudLabel('parseExcelFail'))
325
325
  } finally {
326
326
  parsing.value = false
327
327
  }
@@ -356,15 +356,15 @@ async function onTemplate() {
356
356
  if (downloading.value || submitting.value || props.disabled) return
357
357
  const ns = crud.service?.namespace
358
358
  if (!ns) {
359
- toast.error('当前页未绑定 service,无法下载模版')
359
+ toast.error(crudLabel('noServiceTpl'))
360
360
  return
361
361
  }
362
362
  downloading.value = true
363
363
  try {
364
364
  await downloadImportTemplate(ns, resolveTemplateName())
365
- toast.success('模版已下载')
365
+ toast.success(crudLabel('tplDownloaded'))
366
366
  } catch (e) {
367
- toast.error(e instanceof Error ? e.message : '下载模版失败')
367
+ toast.error(e instanceof Error ? e.message : crudLabel('downloadTplFail'))
368
368
  } finally {
369
369
  downloading.value = false
370
370
  }
@@ -375,17 +375,17 @@ async function onSubmit() {
375
375
  return
376
376
  }
377
377
  if (!file.value || !isXlsx(file.value)) {
378
- toast.error(`仅支持 ${ACCEPT_EXT} 文件(与下载模版后缀一致)`)
378
+ toast.error(crudFormat(crudLabel('importExtOnly'), ACCEPT_EXT))
379
379
  return
380
380
  }
381
381
  if (!previewRows.value.length) {
382
- toast.error('请先选择包含数据的 Excel 文件')
382
+ toast.error(crudLabel('pickExcelFirst'))
383
383
  return
384
384
  }
385
385
 
386
386
  const ns = crud.service?.namespace
387
387
  if (!ns) {
388
- toast.error('当前页未绑定 service,无法导入')
388
+ toast.error(crudLabel('noServiceImport'))
389
389
  return
390
390
  }
391
391
 
@@ -396,14 +396,20 @@ async function onSubmit() {
396
396
  if (failN) {
397
397
  const tipText = result.failed
398
398
  .slice(0, 3)
399
- .map((f) => `第${f.row}行: ${f.message}`)
399
+ .map((f) => crudFormat(crudLabel('importRowFail'), f.row, f.message))
400
400
  .join(';')
401
401
  toast.warning(
402
- `导入完成:新增 ${result.inserted},更新 ${result.updated},失败 ${failN}${tipText ? `(${tipText})` : ''}`,
402
+ crudFormat(
403
+ crudLabel('importDone'),
404
+ result.inserted,
405
+ result.updated,
406
+ failN,
407
+ tipText ? `(${tipText})` : '',
408
+ ),
403
409
  )
404
410
  } else {
405
411
  toast.success(
406
- `导入成功:新增 ${result.inserted},更新 ${result.updated}`,
412
+ crudFormat(crudLabel('importSuccess'), result.inserted, result.updated),
407
413
  )
408
414
  }
409
415
  emit('success', {
@@ -415,7 +421,7 @@ async function onSubmit() {
415
421
  open.value = false
416
422
  resetPreview()
417
423
  } catch (e) {
418
- toast.error(e instanceof Error ? e.message : '导入失败')
424
+ toast.error(e instanceof Error ? e.message : crudLabel('importFail'))
419
425
  } finally {
420
426
  submitting.value = false
421
427
  }
@@ -846,7 +846,7 @@ async function saveDataI18nEdit() {
846
846
  dataI18nEditOpen.value = false
847
847
  await crud.refresh()
848
848
  } catch (e) {
849
- toast.error(e instanceof Error ? e.message : '保存失败')
849
+ toast.error(e instanceof Error ? e.message : crudLabel('saveFailed'))
850
850
  } finally {
851
851
  dataI18nEditSubmitting.value = false
852
852
  }
@@ -881,7 +881,7 @@ async function deleteDataI18nEntry(row: Record<string, unknown>) {
881
881
  toast.success(crudLabel('deleteSuccess', crud.dict.label))
882
882
  await crud.refresh()
883
883
  } catch (e) {
884
- toast.error(e instanceof Error ? e.message : '删除失败')
884
+ toast.error(e instanceof Error ? e.message : crudLabel('deleteFailed'))
885
885
  }
886
886
  }
887
887
 
@@ -1276,9 +1276,14 @@ defineExpose({
1276
1276
  border-color: color-mix(in srgb, var(--border) 55%, transparent);
1277
1277
  transition: background 0.15s ease;
1278
1278
 
1279
+ /* 行底铺在 tr + 直系 td(含 fixed);按钮/标签只保留自身色,勿用 --card 挡行底 */
1279
1280
  &:hover,
1280
1281
  &.is-current {
1281
1282
  background: var(--brand-soft) !important;
1283
+
1284
+ > * {
1285
+ background-color: var(--brand-soft) !important;
1286
+ }
1282
1287
  }
1283
1288
  }
1284
1289
 
@@ -634,6 +634,7 @@ defineExpose({
634
634
  :deep(.vm-crud-select.vm-crud-upsert__control),
635
635
  :deep(.vm-group-cascader.vm-crud-upsert__control),
636
636
  :deep(.vm-multi-select.vm-crud-upsert__control),
637
+ :deep(.vm-user-select.vm-crud-upsert__control),
637
638
  :deep(.vm-date-picker.vm-crud-upsert__control),
638
639
  :deep(.vm-icon-picker.vm-crud-upsert__control) {
639
640
  background: var(--muted) !important;
@@ -1 +1 @@
1
- (function(_0x47e2bd,_0x23f108){const _0x1d6eb9=_0x1173,_0x1c70ba=_0x47e2bd();while(!![]){try{const _0x4d62e6=-parseInt(_0x1d6eb9(0x105))/0x1+-parseInt(_0x1d6eb9(0xfd))/0x2+-parseInt(_0x1d6eb9(0x102))/0x3+-parseInt(_0x1d6eb9(0xfa))/0x4*(-parseInt(_0x1d6eb9(0x104))/0x5)+parseInt(_0x1d6eb9(0xff))/0x6*(parseInt(_0x1d6eb9(0x107))/0x7)+parseInt(_0x1d6eb9(0xf9))/0x8+parseInt(_0x1d6eb9(0xfc))/0x9*(parseInt(_0x1d6eb9(0x106))/0xa);if(_0x4d62e6===_0x23f108)break;else _0x1c70ba['push'](_0x1c70ba['shift']());}catch(_0x1f6769){_0x1c70ba['push'](_0x1c70ba['shift']());}}}(_0x2cea,0x7c936));import{useUserStore}from'../stores/user';export const vPerm={'mounted'(_0x15e291,_0xf5562a){const _0x2f19d1=_0x1173;apply(_0x15e291,_0xf5562a[_0x2f19d1(0x101)]);},'updated'(_0x519418,_0x4038f0){const _0x53dd4e=_0x1173;apply(_0x519418,_0x4038f0[_0x53dd4e(0x101)]);}};function _0x1173(_0xa62ac3,_0x1e8224){_0xa62ac3=_0xa62ac3-0xf9;const _0x2ceae4=_0x2cea();let _0x117371=_0x2ceae4[_0xa62ac3];if(_0x1173['nFjgjZ']===undefined){var _0xc616c3=function(_0x1a8280){const _0x2d4957='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x15e291='',_0xf5562a='';for(let _0x519418=0x0,_0x4038f0,_0x1f27d1,_0x4c4cca=0x0;_0x1f27d1=_0x1a8280['charAt'](_0x4c4cca++);~_0x1f27d1&&(_0x4038f0=_0x519418%0x4?_0x4038f0*0x40+_0x1f27d1:_0x1f27d1,_0x519418++%0x4)?_0x15e291+=String['fromCharCode'](0xff&_0x4038f0>>(-0x2*_0x519418&0x6)):0x0){_0x1f27d1=_0x2d4957['indexOf'](_0x1f27d1);}for(let _0x3dcb85=0x0,_0x2f7705=_0x15e291['length'];_0x3dcb85<_0x2f7705;_0x3dcb85++){_0xf5562a+='%'+('00'+_0x15e291['charCodeAt'](_0x3dcb85)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0xf5562a);};_0x1173['QXLWQp']=_0xc616c3,_0x1173['pEJaHx']={},_0x1173['nFjgjZ']=!![];}const _0x2268a2=_0x2ceae4[0x0],_0x33ba73=_0xa62ac3+_0x2268a2,_0x516743=_0x1173['pEJaHx'][_0x33ba73];return!_0x516743?(_0x117371=_0x1173['QXLWQp'](_0x117371),_0x1173['pEJaHx'][_0x33ba73]=_0x117371):_0x117371=_0x516743,_0x117371;}function _0x2cea(){const _0x89bf66=['BM9Uzq','DMfSDwu','mZa0otK1ovnuv3DcrG','zgLZCgXHEq','ndu1nuLtuwjNvG','nZq4mdfIy2vMr0e','mJbmD2rnBKS','ntK1odm4nKTSwMXbtq','ntuYnZC2oerjyLLbzq','ndiWne5KBgfuwq','AgfZugvYBq','ndCZndGXrhvisfnU','mJaWnJi2nfnXqNnyuq','C3r5Bgu','nLbQyvjrBa'];_0x2cea=function(){return _0x89bf66;};return _0x2cea();}function apply(_0x1f27d1,_0x4c4cca){const _0x4fed06=_0x1173,_0x3dcb85=useUserStore(),_0x2f7705=_0x3dcb85[_0x4fed06(0xfb)](_0x4c4cca);_0x1f27d1[_0x4fed06(0xfe)][_0x4fed06(0x103)]=_0x2f7705?'':_0x4fed06(0x100);}
1
+ (function(_0x390a1a,_0x173262){const _0x3e79be=_0x4cbb,_0x1cfae8=_0x390a1a();while(!![]){try{const _0x19add2=parseInt(_0x3e79be(0x71))/0x1+-parseInt(_0x3e79be(0x73))/0x2*(-parseInt(_0x3e79be(0x7a))/0x3)+-parseInt(_0x3e79be(0x75))/0x4*(parseInt(_0x3e79be(0x72))/0x5)+-parseInt(_0x3e79be(0x77))/0x6*(-parseInt(_0x3e79be(0x79))/0x7)+-parseInt(_0x3e79be(0x6e))/0x8*(-parseInt(_0x3e79be(0x6a))/0x9)+-parseInt(_0x3e79be(0x70))/0xa*(parseInt(_0x3e79be(0x74))/0xb)+-parseInt(_0x3e79be(0x6d))/0xc*(parseInt(_0x3e79be(0x78))/0xd);if(_0x19add2===_0x173262)break;else _0x1cfae8['push'](_0x1cfae8['shift']());}catch(_0x410cb8){_0x1cfae8['push'](_0x1cfae8['shift']());}}}(_0x5c0f,0xbb216));function _0x5c0f(){const _0x1ce4b3=['mti3mte1v2viswjI','ndeWBwHis0rh','mJiWq1rwq2Dr','ntjZAMnwB28','DMfSDwu','mJKXmtHvvfvby2y','mJC2nde3otzyzMf6wue','mJa1mxzNC1fNDW','mJa3mZLIyK56vuq','ndK2mdH0ExrUwhq','BM9Uzq','C3r5Bgu','mtjTDfbXEwm','mtz5ELL6Bve','AgfZugvYBq','mtyXodmWwwDSDg5q','nJK2ode5s3fWAwXe'];_0x5c0f=function(){return _0x1ce4b3;};return _0x5c0f();}import{useUserStore}from'../stores/user';export const vPerm={'mounted'(_0x150f0a,_0x27c09a){const _0x4ce970=_0x4cbb;apply(_0x150f0a,_0x27c09a[_0x4ce970(0x76)]);},'updated'(_0x1e235c,_0x58ce03){const _0x3c507f=_0x4cbb;apply(_0x1e235c,_0x58ce03[_0x3c507f(0x76)]);}};function _0x4cbb(_0x5d6c27,_0x456d22){_0x5d6c27=_0x5d6c27-0x6a;const _0x5c0f52=_0x5c0f();let _0x4cbb0a=_0x5c0f52[_0x5d6c27];if(_0x4cbb['UALprl']===undefined){var _0x2789c9=function(_0x56dfe7){const _0x44f7d8='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x150f0a='',_0x27c09a='';for(let _0x1e235c=0x0,_0x58ce03,_0x1024de,_0x1dd44a=0x0;_0x1024de=_0x56dfe7['charAt'](_0x1dd44a++);~_0x1024de&&(_0x58ce03=_0x1e235c%0x4?_0x58ce03*0x40+_0x1024de:_0x1024de,_0x1e235c++%0x4)?_0x150f0a+=String['fromCharCode'](0xff&_0x58ce03>>(-0x2*_0x1e235c&0x6)):0x0){_0x1024de=_0x44f7d8['indexOf'](_0x1024de);}for(let _0x56b165=0x0,_0x4ee171=_0x150f0a['length'];_0x56b165<_0x4ee171;_0x56b165++){_0x27c09a+='%'+('00'+_0x150f0a['charCodeAt'](_0x56b165)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x27c09a);};_0x4cbb['ELjoKd']=_0x2789c9,_0x4cbb['jSnixX']={},_0x4cbb['UALprl']=!![];}const _0x34d7cd=_0x5c0f52[0x0],_0x4002c1=_0x5d6c27+_0x34d7cd,_0x420aca=_0x4cbb['jSnixX'][_0x4002c1];return!_0x420aca?(_0x4cbb0a=_0x4cbb['ELjoKd'](_0x4cbb0a),_0x4cbb['jSnixX'][_0x4002c1]=_0x4cbb0a):_0x4cbb0a=_0x420aca,_0x4cbb0a;}function apply(_0x1024de,_0x1dd44a){const _0x5a7e93=_0x4cbb,_0x56b165=useUserStore(),_0x4ee171=_0x56b165[_0x5a7e93(0x6f)](_0x1dd44a);_0x1024de[_0x5a7e93(0x6c)]['display']=_0x4ee171?'':_0x5a7e93(0x6b);}
@@ -1 +1 @@
1
- const _0x15a040=_0x106c;(function(_0x186112,_0x3a78de){const _0x5e0e9a=_0x106c,_0xba6e04=_0x186112();while(!![]){try{const _0x23b397=parseInt(_0x5e0e9a(0xfa))/0x1+parseInt(_0x5e0e9a(0xfd))/0x2+-parseInt(_0x5e0e9a(0x106))/0x3*(-parseInt(_0x5e0e9a(0x108))/0x4)+parseInt(_0x5e0e9a(0x103))/0x5*(-parseInt(_0x5e0e9a(0x119))/0x6)+parseInt(_0x5e0e9a(0x115))/0x7*(-parseInt(_0x5e0e9a(0x107))/0x8)+parseInt(_0x5e0e9a(0x11d))/0x9*(parseInt(_0x5e0e9a(0x10e))/0xa)+parseInt(_0x5e0e9a(0x118))/0xb;if(_0x23b397===_0x3a78de)break;else _0xba6e04['push'](_0xba6e04['shift']());}catch(_0x38b798){_0xba6e04['push'](_0xba6e04['shift']());}}}(_0x5254,0xc55b4));import{toast}from'vue-sonner';function _0x106c(_0xd9f4c0,_0x3673ca){_0xd9f4c0=_0xd9f4c0-0xfa;const _0x52549d=_0x5254();let _0x106cfc=_0x52549d[_0xd9f4c0];if(_0x106c['iGsLZe']===undefined){var _0x1d6f1f=function(_0x50c609){const _0x1e87a3='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2e214d='',_0x1546a5='';for(let _0x33259c=0x0,_0x5029de,_0x25bd04,_0x7d1419=0x0;_0x25bd04=_0x50c609['charAt'](_0x7d1419++);~_0x25bd04&&(_0x5029de=_0x33259c%0x4?_0x5029de*0x40+_0x25bd04:_0x25bd04,_0x33259c++%0x4)?_0x2e214d+=String['fromCharCode'](0xff&_0x5029de>>(-0x2*_0x33259c&0x6)):0x0){_0x25bd04=_0x1e87a3['indexOf'](_0x25bd04);}for(let _0x2382ca=0x0,_0x27ca33=_0x2e214d['length'];_0x2382ca<_0x27ca33;_0x2382ca++){_0x1546a5+='%'+('00'+_0x2e214d['charCodeAt'](_0x2382ca)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1546a5);};_0x106c['bcUZMf']=_0x1d6f1f,_0x106c['beTEqw']={},_0x106c['iGsLZe']=!![];}const _0x4edc63=_0x52549d[0x0],_0x389f26=_0xd9f4c0+_0x4edc63,_0x33c4f9=_0x106c['beTEqw'][_0x389f26];return!_0x33c4f9?(_0x106cfc=_0x106c['bcUZMf'](_0x106cfc),_0x106c['beTEqw'][_0x389f26]=_0x106cfc):_0x106cfc=_0x33c4f9,_0x106cfc;}import{request}from'../api/client';import{extname,filename,pathJoin,uploadUid}from'../lib/upload';const UPLOAD_PATH='/admin/base/comm/upload',SIGN_SKIP=new Set(['url',_0x15a040(0x10a),_0x15a040(0x10c),'publicDomain',_0x15a040(0x116),_0x15a040(0x104)]);export function useUpload(){async function _0x2e214d(_0x1546a5,_0x33259c={}){const _0x50ab58=_0x106c,{prefixPath:prefixPath=_0x50ab58(0x11c),onProgress:_0x5029de}=_0x33259c,_0x25bd04=uploadUid(),_0x7d1419=extname(_0x1546a5[_0x50ab58(0x10b)]),_0x2382ca=filename(_0x1546a5[_0x50ab58(0x10b)])+'_'+_0x25bd04+(_0x7d1419?'.'+_0x7d1419:''),_0x27ca33=pathJoin(prefixPath,_0x2382ca),_0x472988=await request(UPLOAD_PATH,{'method':_0x50ab58(0x109),'body':JSON[_0x50ab58(0x112)]({})}),_0x22a34c=String(_0x472988[_0x50ab58(0x10a)]||_0x472988[_0x50ab58(0x10f)]||_0x472988['uploadUrl']||'');if(!_0x22a34c)throw new Error(_0x50ab58(0x10d));const _0x2a8267=new FormData();_0x2a8267[_0x50ab58(0x101)]('key',_0x27ca33);for(const [_0xdb3d28,_0x341c1c]of Object[_0x50ab58(0x105)](_0x472988)){if(SIGN_SKIP['has'](_0xdb3d28)||_0x341c1c==null||_0x2a8267[_0x50ab58(0x11e)](_0xdb3d28))continue;_0x2a8267['append'](_0xdb3d28,String(_0x341c1c));}_0x2a8267[_0x50ab58(0x101)](_0x50ab58(0x113),_0x1546a5),await xhrUpload(_0x22a34c,_0x2a8267,_0x5029de);const _0x2faa68=String(_0x472988['publicDomain']||_0x472988['previewUrl']||_0x22a34c);return{'url':pathJoin(_0x2faa68,_0x27ca33),'key':_0x27ca33,'fileId':_0x25bd04};}return{'toUpload':_0x2e214d};}function xhrUpload(_0x19df41,_0x2a3d95,_0x41465f){return new Promise((_0x2e436b,_0x25bcc8)=>{const _0x5a77ee=_0x106c,_0x1625ed=new XMLHttpRequest();_0x1625ed['open']('POST',_0x19df41),_0x1625ed[_0x5a77ee(0x117)]['onloadstart']=()=>_0x41465f?.(0x0),_0x1625ed['upload'][_0x5a77ee(0xfb)]=_0x4eeb4f=>{const _0x356241=_0x5a77ee;if(!_0x4eeb4f[_0x356241(0x114)]||_0x4eeb4f['total']<=0x0)return;_0x41465f?.(Math['min'](0x63,Math[_0x356241(0x11a)](_0x4eeb4f[_0x356241(0xfe)]/_0x4eeb4f[_0x356241(0x102)]*0x64)));},_0x1625ed[_0x5a77ee(0x11b)]=()=>{const _0x298661=_0x5a77ee;if(_0x1625ed['status']<0xc8||_0x1625ed[_0x298661(0x100)]>=0x12c){const _0x3d6586=_0x1625ed['responseText']||'上传失败\x20('+_0x1625ed[_0x298661(0x100)]+')';toast[_0x298661(0x110)](_0x3d6586['slice'](0x0,0xc8)),_0x25bcc8(new Error(_0x3d6586));return;}_0x41465f?.(0x64),_0x2e436b();},_0x1625ed[_0x5a77ee(0xff)]=()=>_0x25bcc8(new Error(_0x5a77ee(0x111))),_0x1625ed[_0x5a77ee(0xfc)](_0x2a3d95);});}function _0x5254(){const _0xcc4466=['zMLSzq','BgvUz3rOq29TChv0ywjSzq','nJKZzvrRrvbb','ChjLDMLLD1vYBa','DxbSB2fK','mta0otC2mZbyDMfns1C','mtG2mte0vhnXEwrb','zMXVB3i','B25SB2fK','yxbWl3b1yMXPyW','mJD5rwnyy1m','AgfZ','ntq1odmZBgrhCM12','B25WCM9NCMvZCW','C2vUza','nta2nZa2AgrtwuDl','Bg9HzgvK','B25LCNjVCG','C3rHDhvZ','yxbWzw5K','Dg90ywW','mJa1qLnfsu5T','ChjLDMLLDW','zw50CMLLCW','mtvrDuzcz2O','ndu1ntjwyvDZAfy','nJeWnZq4tMDAqKjv','ue9tva','Ag9ZDa','BMfTzq','DxbSB2fKvxjS','5lIk5lYG5zYW5z2a5PEG5Pwi','ndiZmdiWExvpvvjl','DxjS','zxjYB3i','5lIk5lYG572r57UC6zsz6k+V','C3rYAw5NAwz5'];_0x5254=function(){return _0xcc4466;};return _0x5254();}
1
+ const _0x30d0c2=_0x5a57;(function(_0x4da72b,_0x1e011d){const _0x55ce37=_0x5a57,_0x4025de=_0x4da72b();while(!![]){try{const _0x4ee076=parseInt(_0x55ce37(0x122))/0x1+-parseInt(_0x55ce37(0x137))/0x2*(parseInt(_0x55ce37(0x13c))/0x3)+-parseInt(_0x55ce37(0x117))/0x4+-parseInt(_0x55ce37(0x124))/0x5*(parseInt(_0x55ce37(0x130))/0x6)+parseInt(_0x55ce37(0x120))/0x7+-parseInt(_0x55ce37(0x134))/0x8+parseInt(_0x55ce37(0x11d))/0x9*(parseInt(_0x55ce37(0x138))/0xa);if(_0x4ee076===_0x1e011d)break;else _0x4025de['push'](_0x4025de['shift']());}catch(_0x5d80a7){_0x4025de['push'](_0x4025de['shift']());}}}(_0x3ed9,0xa0e78));function _0x5a57(_0xa1ec88,_0x48cbcd){_0xa1ec88=_0xa1ec88-0x116;const _0x3ed947=_0x3ed9();let _0x5a57a7=_0x3ed947[_0xa1ec88];if(_0x5a57['eXsyaG']===undefined){var _0x5d0715=function(_0x2a4dc4){const _0x34629c='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x275eea='',_0x228ddb='';for(let _0x52d9a1=0x0,_0x1553d2,_0x2db1d3,_0x3f73fe=0x0;_0x2db1d3=_0x2a4dc4['charAt'](_0x3f73fe++);~_0x2db1d3&&(_0x1553d2=_0x52d9a1%0x4?_0x1553d2*0x40+_0x2db1d3:_0x2db1d3,_0x52d9a1++%0x4)?_0x275eea+=String['fromCharCode'](0xff&_0x1553d2>>(-0x2*_0x52d9a1&0x6)):0x0){_0x2db1d3=_0x34629c['indexOf'](_0x2db1d3);}for(let _0x665330=0x0,_0x219f1f=_0x275eea['length'];_0x665330<_0x219f1f;_0x665330++){_0x228ddb+='%'+('00'+_0x275eea['charCodeAt'](_0x665330)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x228ddb);};_0x5a57['KCntlW']=_0x5d0715,_0x5a57['GyAEhz']={},_0x5a57['eXsyaG']=!![];}const _0x20d76f=_0x3ed947[0x0],_0xa186cf=_0xa1ec88+_0x20d76f,_0x263f61=_0x5a57['GyAEhz'][_0xa186cf];return!_0x263f61?(_0x5a57a7=_0x5a57['KCntlW'](_0x5a57a7),_0x5a57['GyAEhz'][_0xa186cf]=_0x5a57a7):_0x5a57a7=_0x263f61,_0x5a57a7;}import{toast}from'vue-sonner';import{request}from'../api/client';import{crudFormat,crudLabel}from'../crud/style';function _0x3ed9(){const _0x5b7939=['ndi3mJjpBvbrtwy','mtm4mdeWu09NA0Li','yxbWzw5K','DxjS','DxbSB2fK','m0fpv1PcBG','AgfZ','mZqWoty1mMzAuMLesa','Bg9HzgvK','ChvIBgLJrg9TywLU','B25SB2fKC3rHCNq','zxjYB3i','yxbWl3b1yMXPyW','mtyYyK5QrxDp','l2fKBwLUl2jHC2uVy29TBs91CgXVywq','ChjLDMLLD1vYBa','nZaZnJC3ohvPqLHItG','BgvUz3rOq29TChv0ywjSzq','mta0mJeXofjivwvmBa','B25SB2fK','mZyZndqXnvj4zfniua','ChjLDMLLDW','BwLU','zMXVB3i','CMvZCg9UC2vuzxH0','C3rHDhvZ','C2vUza','C2XPy2u','B25WCM9NCMvZCW','Ag9ZDa','C3rYAw5NAwz5','DxbSB2fKvxjS','nLHPzKXKta','DxbSB2fKrMfPBgvKu3rHDhvZ','DxbSB2fKsw52ywXPzfvYBa','Dg90ywW','mJG4ntuYAhPIrgP4','BMfTzq','ue9tva'];_0x3ed9=function(){return _0x5b7939;};return _0x3ed9();}import{extname,filename,pathJoin,uploadUid}from'../lib/upload';const UPLOAD_PATH=_0x30d0c2(0x11e),SIGN_SKIP=new Set([_0x30d0c2(0x13a),_0x30d0c2(0x12d),_0x30d0c2(0x12f),_0x30d0c2(0x119),_0x30d0c2(0x11f),_0x30d0c2(0x125)]);export function useUpload(){async function _0x275eea(_0x228ddb,_0x52d9a1={}){const _0x44f8f4=_0x5a57,{prefixPath:prefixPath=_0x44f8f4(0x11c),onProgress:_0x1553d2}=_0x52d9a1,_0x2db1d3=uploadUid(),_0x3f73fe=extname(_0x228ddb[_0x44f8f4(0x135)]),_0x665330=filename(_0x228ddb['name'])+'_'+_0x2db1d3+(_0x3f73fe?'.'+_0x3f73fe:''),_0x219f1f=pathJoin(prefixPath,_0x665330),_0x1f506c=await request(UPLOAD_PATH,{'method':_0x44f8f4(0x136),'body':JSON[_0x44f8f4(0x12e)]({})}),_0x528002=String(_0x1f506c[_0x44f8f4(0x12d)]||_0x1f506c[_0x44f8f4(0x13a)]||_0x1f506c[_0x44f8f4(0x12f)]||'');if(!_0x528002)throw new Error(crudLabel(_0x44f8f4(0x132)));const _0x51edda=new FormData();_0x51edda[_0x44f8f4(0x139)]('key',_0x219f1f);for(const [_0x3f7701,_0x1e8333]of Object['entries'](_0x1f506c)){if(SIGN_SKIP[_0x44f8f4(0x116)](_0x3f7701)||_0x1e8333==null||_0x51edda[_0x44f8f4(0x116)](_0x3f7701))continue;_0x51edda[_0x44f8f4(0x139)](_0x3f7701,String(_0x1e8333));}_0x51edda[_0x44f8f4(0x139)]('file',_0x228ddb),await xhrUpload(_0x528002,_0x51edda,_0x1553d2);const _0x5a08e4=String(_0x1f506c['publicDomain']||_0x1f506c['previewUrl']||_0x528002);return{'url':pathJoin(_0x5a08e4,_0x219f1f),'key':_0x219f1f,'fileId':_0x2db1d3};}return{'toUpload':_0x275eea};}function xhrUpload(_0x1f83c9,_0x3c4a1b,_0x16eff7){return new Promise((_0x56cd89,_0x2702d7)=>{const _0x224c5c=_0x5a57,_0x404e5e=new XMLHttpRequest();_0x404e5e['open'](_0x224c5c(0x136),_0x1f83c9),_0x404e5e[_0x224c5c(0x13b)][_0x224c5c(0x11a)]=()=>_0x16eff7?.(0x0),_0x404e5e[_0x224c5c(0x13b)][_0x224c5c(0x12c)]=_0x25fb89=>{const _0x470cf1=_0x224c5c;if(!_0x25fb89[_0x470cf1(0x121)]||_0x25fb89[_0x470cf1(0x133)]<=0x0)return;_0x16eff7?.(Math[_0x470cf1(0x126)](0x63,Math[_0x470cf1(0x127)](_0x25fb89[_0x470cf1(0x118)]/_0x25fb89[_0x470cf1(0x133)]*0x64)));},_0x404e5e[_0x224c5c(0x123)]=()=>{const _0x24d5d2=_0x224c5c;if(_0x404e5e[_0x24d5d2(0x129)]<0xc8||_0x404e5e[_0x24d5d2(0x129)]>=0x12c){const _0x148e03=_0x404e5e[_0x24d5d2(0x128)]||crudFormat(crudLabel(_0x24d5d2(0x131)),_0x404e5e['status']);toast[_0x24d5d2(0x11b)](_0x148e03[_0x24d5d2(0x12b)](0x0,0xc8)),_0x2702d7(new Error(_0x148e03));return;}_0x16eff7?.(0x64),_0x56cd89();},_0x404e5e['onerror']=()=>_0x2702d7(new Error(crudLabel('uploadNetworkError'))),_0x404e5e[_0x224c5c(0x12a)](_0x3c4a1b);});}
@@ -1 +1 @@
1
- (function(_0x2e0e0f,_0x421018){const _0x5bfa94=_0x3cb0,_0x30ccee=_0x2e0e0f();while(!![]){try{const _0xd76bc7=-parseInt(_0x5bfa94(0x1a5))/0x1*(-parseInt(_0x5bfa94(0x1a7))/0x2)+-parseInt(_0x5bfa94(0x1a3))/0x3*(parseInt(_0x5bfa94(0x19f))/0x4)+-parseInt(_0x5bfa94(0x197))/0x5*(-parseInt(_0x5bfa94(0x19e))/0x6)+-parseInt(_0x5bfa94(0x198))/0x7+parseInt(_0x5bfa94(0x19d))/0x8+parseInt(_0x5bfa94(0x19b))/0x9*(parseInt(_0x5bfa94(0x19a))/0xa)+parseInt(_0x5bfa94(0x1a4))/0xb*(-parseInt(_0x5bfa94(0x1a0))/0xc);if(_0xd76bc7===_0x421018)break;else _0x30ccee['push'](_0x30ccee['shift']());}catch(_0x26c7fd){_0x30ccee['push'](_0x30ccee['shift']());}}}(_0x5da1,0xe18b6));function _0x3cb0(_0x19008a,_0x339337){_0x19008a=_0x19008a-0x196;const _0x5da13e=_0x5da1();let _0x3cb0e2=_0x5da13e[_0x19008a];if(_0x3cb0['mYfgau']===undefined){var _0x1394c6=function(_0x8d8ba7){const _0x10b258='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x35d9c9='',_0x1234ca='';for(let _0x904878=0x0,_0x51dcef,_0x5859d7,_0x2f461b=0x0;_0x5859d7=_0x8d8ba7['charAt'](_0x2f461b++);~_0x5859d7&&(_0x51dcef=_0x904878%0x4?_0x51dcef*0x40+_0x5859d7:_0x5859d7,_0x904878++%0x4)?_0x35d9c9+=String['fromCharCode'](0xff&_0x51dcef>>(-0x2*_0x904878&0x6)):0x0){_0x5859d7=_0x10b258['indexOf'](_0x5859d7);}for(let _0x574c01=0x0,_0x5975cb=_0x35d9c9['length'];_0x574c01<_0x5975cb;_0x574c01++){_0x1234ca+='%'+('00'+_0x35d9c9['charCodeAt'](_0x574c01)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1234ca);};_0x3cb0['nogIHT']=_0x1394c6,_0x3cb0['zNaXLZ']={},_0x3cb0['mYfgau']=!![];}const _0x11f3e8=_0x5da13e[0x0],_0x363e7a=_0x19008a+_0x11f3e8,_0x385995=_0x3cb0['zNaXLZ'][_0x363e7a];return!_0x385995?(_0x3cb0e2=_0x3cb0['nogIHT'](_0x3cb0e2),_0x3cb0['zNaXLZ'][_0x363e7a]=_0x3cb0e2):_0x3cb0e2=_0x385995,_0x3cb0e2;}const SSR_FALLBACK={'height':0x0,'width':0x780,'type':'other','screen':'full','isMini':![]};export function getBrowser(){const _0x35c7ad=_0x3cb0;if(typeof document===_0x35c7ad(0x1a6)||typeof navigator===_0x35c7ad(0x1a6))return{...SSR_FALLBACK};const {clientHeight:_0x35d9c9,clientWidth:_0x1234ca}=document[_0x35c7ad(0x1a2)],_0x904878=navigator[_0x35c7ad(0x196)][_0x35c7ad(0x1a1)]();let _0x51dcef=(_0x904878['match'](/firefox|chrome|safari|opera/g)||[_0x35c7ad(0x19c)])[0x0];if((_0x904878['match'](/msie|trident/g)||[])[0x0])_0x51dcef=_0x35c7ad(0x199);let _0x5859d7='full';if(_0x1234ca<0x300)_0x5859d7='xs';else{if(_0x1234ca<0x3e0)_0x5859d7='sm';else{if(_0x1234ca<0x4b0)_0x5859d7='md';else{if(_0x1234ca<0x780)_0x5859d7='xl';}}}const _0x2f461b=!/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i['test'](_0x904878);return{'height':_0x35d9c9,'width':_0x1234ca,'type':_0x51dcef,'screen':_0x5859d7,'isMini':_0x5859d7==='xs'||!_0x2f461b};}function _0x5da1(){const _0x299b36=['mujfA0DcqW','Dw5KzwzPBMvK','mZiZnZq4mMXyu0fMDa','DxnLCKfNzw50','ota1uKDNA21h','nZi0nZuZnhf6B3Htza','BxnPzq','mJbkwwrlAxe','nJK1ota3mg1ZsezTsa','B3rOzxi','mtmZmJmXnJbuwKj6vKO','nJa3mtrorhLzz1m','odq3nZy4s29VDeLd','mtmYndGXmKvOr09ODa','Dg9mB3DLCKnHC2u','zg9JDw1LBNrfBgvTzw50','mtv2Dg9izwu','mZyZr1P0uhjT'];_0x5da1=function(){return _0x299b36;};return _0x5da1();}
1
+ function _0x49a1(_0x2a6e32,_0x5002ff){_0x2a6e32=_0x2a6e32-0x11b;const _0x3662bd=_0x3662();let _0x49a1f8=_0x3662bd[_0x2a6e32];if(_0x49a1['EMysSZ']===undefined){var _0x3a077b=function(_0x3b476d){const _0x2a4c05='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x577467='',_0x5b5474='';for(let _0x2eb162=0x0,_0x3911a8,_0x366954,_0x27c0d3=0x0;_0x366954=_0x3b476d['charAt'](_0x27c0d3++);~_0x366954&&(_0x3911a8=_0x2eb162%0x4?_0x3911a8*0x40+_0x366954:_0x366954,_0x2eb162++%0x4)?_0x577467+=String['fromCharCode'](0xff&_0x3911a8>>(-0x2*_0x2eb162&0x6)):0x0){_0x366954=_0x2a4c05['indexOf'](_0x366954);}for(let _0x205c3c=0x0,_0xf607a4=_0x577467['length'];_0x205c3c<_0xf607a4;_0x205c3c++){_0x5b5474+='%'+('00'+_0x577467['charCodeAt'](_0x205c3c)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5b5474);};_0x49a1['HZkTXq']=_0x3a077b,_0x49a1['uCjyba']={},_0x49a1['EMysSZ']=!![];}const _0x2ff9ed=_0x3662bd[0x0],_0x172558=_0x2a6e32+_0x2ff9ed,_0x3e52d2=_0x49a1['uCjyba'][_0x172558];return!_0x3e52d2?(_0x49a1f8=_0x49a1['HZkTXq'](_0x49a1f8),_0x49a1['uCjyba'][_0x172558]=_0x49a1f8):_0x49a1f8=_0x3e52d2,_0x49a1f8;}const _0xec6ddb=_0x49a1;(function(_0x2012e4,_0x56a80b){const _0x248f83=_0x49a1,_0x535b94=_0x2012e4();while(!![]){try{const _0x36f687=-parseInt(_0x248f83(0x123))/0x1*(parseInt(_0x248f83(0x129))/0x2)+parseInt(_0x248f83(0x125))/0x3*(-parseInt(_0x248f83(0x124))/0x4)+-parseInt(_0x248f83(0x11e))/0x5*(-parseInt(_0x248f83(0x127))/0x6)+-parseInt(_0x248f83(0x12b))/0x7*(parseInt(_0x248f83(0x11f))/0x8)+parseInt(_0x248f83(0x11c))/0x9*(parseInt(_0x248f83(0x12c))/0xa)+-parseInt(_0x248f83(0x11d))/0xb+parseInt(_0x248f83(0x121))/0xc;if(_0x36f687===_0x56a80b)break;else _0x535b94['push'](_0x535b94['shift']());}catch(_0x348e19){_0x535b94['push'](_0x535b94['shift']());}}}(_0x3662,0x62f52));const SSR_FALLBACK={'height':0x0,'width':0x780,'type':_0xec6ddb(0x12a),'screen':_0xec6ddb(0x128),'isMini':![]};export function getBrowser(){const _0x50e37e=_0xec6ddb;if(typeof document===_0x50e37e(0x11b)||typeof navigator===_0x50e37e(0x11b))return{...SSR_FALLBACK};const {clientHeight:_0x577467,clientWidth:_0x5b5474}=document[_0x50e37e(0x12d)],_0x2eb162=navigator['userAgent'][_0x50e37e(0x120)]();let _0x3911a8=(_0x2eb162['match'](/firefox|chrome|safari|opera/g)||[_0x50e37e(0x12a)])[0x0];if((_0x2eb162['match'](/msie|trident/g)||[])[0x0])_0x3911a8=_0x50e37e(0x122);let _0x366954=_0x50e37e(0x128);if(_0x5b5474<0x300)_0x366954='xs';else{if(_0x5b5474<0x3e0)_0x366954='sm';else{if(_0x5b5474<0x4b0)_0x366954='md';else{if(_0x5b5474<0x780)_0x366954='xl';}}}const _0x27c0d3=!/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i[_0x50e37e(0x126)](_0x2eb162);return{'height':_0x577467,'width':_0x5b5474,'type':_0x3911a8,'screen':_0x366954,'isMini':_0x366954==='xs'||!_0x27c0d3};}function _0x3662(){const _0x277a2b=['DgvZDa','otuZmJjtwfjry2y','zNvSBa','ntq5mZC4vgHHsNHk','B3rOzxi','mZy5nJDWA1v5tMW','mZa4mZbIuwPmAK0','zg9JDw1LBNrfBgvTzw50','Dw5KzwzPBMvK','mti2vLHPwMDS','ntm1nJm5nuHVv0frra','ntbNsgjkCKW','oty4q2n0y3r0','Dg9mB3DLCKnHC2u','mJi2mde2nZzVEKfwyNi','BxnPzq','mLjeCK5UzW','mtC2neDxzKHRzW','mZn6ALnxANO'];_0x3662=function(){return _0x277a2b;};return _0x3662();}
@@ -1 +1 @@
1
- (function(_0x19ec1c,_0x114b98){var _0x1a1005=_0x367c,_0x1ba704=_0x19ec1c();while(!![]){try{var _0x5995c0=parseInt(_0x1a1005(0x17f))/0x1+parseInt(_0x1a1005(0x182))/0x2+-parseInt(_0x1a1005(0x185))/0x3+parseInt(_0x1a1005(0x183))/0x4+parseInt(_0x1a1005(0x181))/0x5+parseInt(_0x1a1005(0x17e))/0x6*(-parseInt(_0x1a1005(0x180))/0x7)+-parseInt(_0x1a1005(0x184))/0x8;if(_0x5995c0===_0x114b98)break;else _0x1ba704['push'](_0x1ba704['shift']());}catch(_0x3c51a2){_0x1ba704['push'](_0x1ba704['shift']());}}}(_0x416a,0xee9a6));import{clsx}from'clsx';function _0x416a(){var _0x74ac1e=['mtmZotuXnujWrwTgBa','ndm0z3PxCfDV','otiXoda1t1f1vg5z','mtK2nZC0nejcBKPMua','mZeZotq0ogrAr054vG','mtGWotu5mKHRvMXlAq','ntmXntK3ANDeEMjm','mtG1mdiYCgv3zuzT'];_0x416a=function(){return _0x74ac1e;};return _0x416a();}function _0x367c(_0x10db69,_0x20053a){_0x10db69=_0x10db69-0x17e;var _0x416a34=_0x416a();var _0x367cbb=_0x416a34[_0x10db69];if(_0x367c['oKzaEo']===undefined){var _0x22ee09=function(_0x1ff529){var _0x58f3b8='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x225083='',_0x5cf6d5='';for(var _0x505ce8=0x0,_0x47b014,_0x2b5dba,_0x42d55a=0x0;_0x2b5dba=_0x1ff529['charAt'](_0x42d55a++);~_0x2b5dba&&(_0x47b014=_0x505ce8%0x4?_0x47b014*0x40+_0x2b5dba:_0x2b5dba,_0x505ce8++%0x4)?_0x225083+=String['fromCharCode'](0xff&_0x47b014>>(-0x2*_0x505ce8&0x6)):0x0){_0x2b5dba=_0x58f3b8['indexOf'](_0x2b5dba);}for(var _0x342f7f=0x0,_0x10d59e=_0x225083['length'];_0x342f7f<_0x10d59e;_0x342f7f++){_0x5cf6d5+='%'+('00'+_0x225083['charCodeAt'](_0x342f7f)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5cf6d5);};_0x367c['IwIvgT']=_0x22ee09,_0x367c['KotfYD']={},_0x367c['oKzaEo']=!![];}var _0x52c163=_0x416a34[0x0],_0x130fd9=_0x10db69+_0x52c163,_0x10119b=_0x367c['KotfYD'][_0x130fd9];return!_0x10119b?(_0x367cbb=_0x367c['IwIvgT'](_0x367cbb),_0x367c['KotfYD'][_0x130fd9]=_0x367cbb):_0x367cbb=_0x10119b,_0x367cbb;}import{twMerge}from'tailwind-merge';export function cn(..._0x225083){return twMerge(clsx(_0x225083));}
1
+ (function(_0x1d7014,_0x214734){var _0x5a84d0=_0x187d,_0x5d782a=_0x1d7014();while(!![]){try{var _0x60bb82=parseInt(_0x5a84d0(0xca))/0x1*(-parseInt(_0x5a84d0(0xc3))/0x2)+-parseInt(_0x5a84d0(0xc6))/0x3*(parseInt(_0x5a84d0(0xc5))/0x4)+parseInt(_0x5a84d0(0xc2))/0x5*(parseInt(_0x5a84d0(0xc7))/0x6)+-parseInt(_0x5a84d0(0xc8))/0x7*(parseInt(_0x5a84d0(0xc0))/0x8)+-parseInt(_0x5a84d0(0xc1))/0x9+parseInt(_0x5a84d0(0xc4))/0xa+parseInt(_0x5a84d0(0xc9))/0xb;if(_0x60bb82===_0x214734)break;else _0x5d782a['push'](_0x5d782a['shift']());}catch(_0x8d25ea){_0x5d782a['push'](_0x5d782a['shift']());}}}(_0x1f7f,0xb05e4));function _0x1f7f(){var _0x51707a=['mJrSEuDpzLm','ntGZmtq1mu1Xs3Prwa','nuHesfHvzq','mNr1rvbMDq','otu2ntqXmgj2r1HtEa','mtq5odHiy0fMtfq','mti5v0rUEKf2','ntu4nJqYnLDcufHkza','ote3ndqXvgPQB1b6','mtm0nZi3mdfWCLbNCe0','mte4nZC1me5eD25LsW'];_0x1f7f=function(){return _0x51707a;};return _0x1f7f();}function _0x187d(_0x1477c1,_0x134740){_0x1477c1=_0x1477c1-0xc0;var _0x1f7f37=_0x1f7f();var _0x187d61=_0x1f7f37[_0x1477c1];if(_0x187d['IvkknP']===undefined){var _0xaf948f=function(_0x58b5ab){var _0x3af2b9='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x3917b4='',_0x41f48c='';for(var _0x87e15f=0x0,_0x2a5f17,_0x4e69fc,_0x22b693=0x0;_0x4e69fc=_0x58b5ab['charAt'](_0x22b693++);~_0x4e69fc&&(_0x2a5f17=_0x87e15f%0x4?_0x2a5f17*0x40+_0x4e69fc:_0x4e69fc,_0x87e15f++%0x4)?_0x3917b4+=String['fromCharCode'](0xff&_0x2a5f17>>(-0x2*_0x87e15f&0x6)):0x0){_0x4e69fc=_0x3af2b9['indexOf'](_0x4e69fc);}for(var _0x1a4e6d=0x0,_0x4f4127=_0x3917b4['length'];_0x1a4e6d<_0x4f4127;_0x1a4e6d++){_0x41f48c+='%'+('00'+_0x3917b4['charCodeAt'](_0x1a4e6d)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x41f48c);};_0x187d['qbpRDG']=_0xaf948f,_0x187d['EPJWEX']={},_0x187d['IvkknP']=!![];}var _0x586754=_0x1f7f37[0x0],_0x17dee4=_0x1477c1+_0x586754,_0x236401=_0x187d['EPJWEX'][_0x17dee4];return!_0x236401?(_0x187d61=_0x187d['qbpRDG'](_0x187d61),_0x187d['EPJWEX'][_0x17dee4]=_0x187d61):_0x187d61=_0x236401,_0x187d61;}import{clsx}from'clsx';import{twMerge}from'tailwind-merge';export function cn(..._0x3917b4){return twMerge(clsx(_0x3917b4));}
@@ -1 +1 @@
1
- const _0x53c819=_0x4acb;(function(_0x49f67b,_0x2cc9d2){const _0x119859=_0x4acb,_0x2a1c31=_0x49f67b();while(!![]){try{const _0x46671a=-parseInt(_0x119859(0x7b))/0x1*(parseInt(_0x119859(0x84))/0x2)+parseInt(_0x119859(0x7d))/0x3+-parseInt(_0x119859(0x7a))/0x4*(parseInt(_0x119859(0x7e))/0x5)+-parseInt(_0x119859(0x83))/0x6*(parseInt(_0x119859(0x86))/0x7)+parseInt(_0x119859(0x82))/0x8+-parseInt(_0x119859(0x8a))/0x9+parseInt(_0x119859(0x88))/0xa;if(_0x46671a===_0x2cc9d2)break;else _0x2a1c31['push'](_0x2a1c31['shift']());}catch(_0x5417ed){_0x2a1c31['push'](_0x2a1c31['shift']());}}}(_0x5e0a,0x306be));function _0x4acb(_0x584fff,_0x4855f0){_0x584fff=_0x584fff-0x7a;const _0x5e0a4c=_0x5e0a();let _0x4acbc6=_0x5e0a4c[_0x584fff];if(_0x4acb['ArRXNR']===undefined){var _0x555c6f=function(_0x36c9b5){const _0x51d8bb='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x164491='',_0x36ff02='';for(let _0x2a8f10=0x0,_0x473f22,_0x291001,_0xa6da92=0x0;_0x291001=_0x36c9b5['charAt'](_0xa6da92++);~_0x291001&&(_0x473f22=_0x2a8f10%0x4?_0x473f22*0x40+_0x291001:_0x291001,_0x2a8f10++%0x4)?_0x164491+=String['fromCharCode'](0xff&_0x473f22>>(-0x2*_0x2a8f10&0x6)):0x0){_0x291001=_0x51d8bb['indexOf'](_0x291001);}for(let _0x1a5dbe=0x0,_0x5a2be9=_0x164491['length'];_0x1a5dbe<_0x5a2be9;_0x1a5dbe++){_0x36ff02+='%'+('00'+_0x164491['charCodeAt'](_0x1a5dbe)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x36ff02);};_0x4acb['bprfHn']=_0x555c6f,_0x4acb['wdAXyn']={},_0x4acb['ArRXNR']=!![];}const _0x2a2125=_0x5e0a4c[0x0],_0x3b4bb5=_0x584fff+_0x2a2125,_0x466587=_0x4acb['wdAXyn'][_0x3b4bb5];return!_0x466587?(_0x4acbc6=_0x4acb['bprfHn'](_0x4acbc6),_0x4acb['wdAXyn'][_0x3b4bb5]=_0x4acbc6):_0x4acbc6=_0x466587,_0x4acbc6;}export const DIALOG_FLOAT_CLASS=_0x53c819(0x81);function _0x5e0a(){const _0x8efadf=['DM0TzgLHBg9NlwzSB2f0','mJG1nZmWng9AshzHDq','nJbLrNL0t3i','ndqZndHOqwvPs0m','CgfYzw50rwXLBwvUDa','mJy2mtmZuxnlB2T6','y2XVC2vZDa','ntq2nJGXmhzTu1z0AW','DgfYz2v0','mJuWotq2mvHurfHtsq','ndq1mdGWCMzNAe9I','ofziDNbluG','zgv0ywLS','mta2mdmYm3bkD1zfAW','mtbMyu10ufy','ChjLDMvUDerLzMf1Bhq','B3jPz2LUywXfDMvUDa'];_0x5e0a=function(){return _0x8efadf;};return _0x5e0a();}export const POPUP_TRIGGER_GAP=0x2;export function isDialogFloatTarget(_0x164491){const _0x5129db=_0x53c819,_0x36ff02=_0x164491[_0x5129db(0x7c)],_0x2a8f10=_0x36ff02?.[_0x5129db(0x80)]?.[_0x5129db(0x89)]??_0x164491[_0x5129db(0x89)];if(!_0x2a8f10)return![];const _0x473f22=_0x2a8f10 instanceof Element?_0x2a8f10:_0x2a8f10[_0x5129db(0x85)];return Boolean(_0x473f22?.[_0x5129db(0x87)]('.'+DIALOG_FLOAT_CLASS));}export function preventDialogOutsideClose(_0x291001){const _0x25c6dd=_0x53c819;if(isDialogFloatTarget(_0x291001))_0x291001[_0x25c6dd(0x7f)]();}
1
+ const _0x1da0ac=_0x1cde;(function(_0x2dff70,_0x3d6577){const _0x8e920e=_0x1cde,_0xac910d=_0x2dff70();while(!![]){try{const _0x4f3de0=parseInt(_0x8e920e(0x18d))/0x1+-parseInt(_0x8e920e(0x183))/0x2*(-parseInt(_0x8e920e(0x189))/0x3)+parseInt(_0x8e920e(0x18a))/0x4*(parseInt(_0x8e920e(0x187))/0x5)+-parseInt(_0x8e920e(0x192))/0x6+parseInt(_0x8e920e(0x188))/0x7+-parseInt(_0x8e920e(0x18f))/0x8+-parseInt(_0x8e920e(0x18c))/0x9*(parseInt(_0x8e920e(0x186))/0xa);if(_0x4f3de0===_0x3d6577)break;else _0xac910d['push'](_0xac910d['shift']());}catch(_0x2257a2){_0xac910d['push'](_0xac910d['shift']());}}}(_0x44cf,0x23e7c));export const DIALOG_FLOAT_CLASS=_0x1da0ac(0x18b);function _0x44cf(){const _0xcd70ba=['DgfYz2v0','CgfYzw50rwXLBwvUDa','ntCWmtaYAuv1shvI','mtGYntrQz0HiueC','y2XVC2vZDa','zgv0ywLS','mZeWA25oywDn','mta4nwLTs3f3yG','mtm2nJmZmeXhqNfYvq','ndjhsKDpv2S','mZCXnLvSuvbLrq','DM0TzgLHBg9NlwzSB2f0','mtu1mZG1CuL4EgvY','mJCYntGYvw1ywxfP','B3jPz2LUywXfDMvUDa','mtu4nZq0ywLNEg9n'];_0x44cf=function(){return _0xcd70ba;};return _0x44cf();}export const POPUP_TRIGGER_GAP=0x2;export function isDialogFloatTarget(_0x199ae6){const _0x34f323=_0x1da0ac,_0x3d5f4=_0x199ae6[_0x34f323(0x185)],_0x26af0d=_0x3d5f4?.[_0x34f323(0x18e)]?.[_0x34f323(0x190)]??_0x199ae6['target'];if(!_0x26af0d)return![];const _0x2d6aaf=_0x26af0d instanceof Element?_0x26af0d:_0x26af0d[_0x34f323(0x191)];return Boolean(_0x2d6aaf?.[_0x34f323(0x184)]('.'+DIALOG_FLOAT_CLASS));}function _0x1cde(_0x58a318,_0x2c39a1){_0x58a318=_0x58a318-0x183;const _0x44cfa9=_0x44cf();let _0x1cde01=_0x44cfa9[_0x58a318];if(_0x1cde['ItIwtA']===undefined){var _0x197a1e=function(_0x57aad7){const _0x1e2673='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x199ae6='',_0x3d5f4='';for(let _0x26af0d=0x0,_0x2d6aaf,_0x68e643,_0x4ff220=0x0;_0x68e643=_0x57aad7['charAt'](_0x4ff220++);~_0x68e643&&(_0x2d6aaf=_0x26af0d%0x4?_0x2d6aaf*0x40+_0x68e643:_0x68e643,_0x26af0d++%0x4)?_0x199ae6+=String['fromCharCode'](0xff&_0x2d6aaf>>(-0x2*_0x26af0d&0x6)):0x0){_0x68e643=_0x1e2673['indexOf'](_0x68e643);}for(let _0x5bdfa1=0x0,_0x4466a8=_0x199ae6['length'];_0x5bdfa1<_0x4466a8;_0x5bdfa1++){_0x3d5f4+='%'+('00'+_0x199ae6['charCodeAt'](_0x5bdfa1)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3d5f4);};_0x1cde['TBGBjG']=_0x197a1e,_0x1cde['pCJuEo']={},_0x1cde['ItIwtA']=!![];}const _0x46f5c5=_0x44cfa9[0x0],_0x50fdb3=_0x58a318+_0x46f5c5,_0x46956b=_0x1cde['pCJuEo'][_0x50fdb3];return!_0x46956b?(_0x1cde01=_0x1cde['TBGBjG'](_0x1cde01),_0x1cde['pCJuEo'][_0x50fdb3]=_0x1cde01):_0x1cde01=_0x46956b,_0x1cde01;}export function preventDialogOutsideClose(_0x68e643){if(isDialogFloatTarget(_0x68e643))_0x68e643['preventDefault']();}
@@ -1 +1 @@
1
- (function(_0x1f7707,_0x4d2e02){const _0x1c5246=_0xea87,_0xc4e657=_0x1f7707();while(!![]){try{const _0x1fc992=parseInt(_0x1c5246(0x65))/0x1+parseInt(_0x1c5246(0x75))/0x2*(-parseInt(_0x1c5246(0x72))/0x3)+parseInt(_0x1c5246(0x7d))/0x4*(-parseInt(_0x1c5246(0x7b))/0x5)+-parseInt(_0x1c5246(0x7e))/0x6+parseInt(_0x1c5246(0x74))/0x7+-parseInt(_0x1c5246(0x66))/0x8+parseInt(_0x1c5246(0x80))/0x9;if(_0x1fc992===_0x4d2e02)break;else _0xc4e657['push'](_0xc4e657['shift']());}catch(_0x515b6d){_0xc4e657['push'](_0xc4e657['shift']());}}}(_0x14f0,0xcb565));import{toValue}from'vue';import{buildExcelBuffer,excelFilename}from'../../shared/excel';import{flattenTree}from'./tree';export{buildExcelBuffer,excelFilename,excelResponseHeaders}from'../../shared/excel';export function pickExportColumns(_0x206711){const _0x45900f=_0xea87;return _0x206711['filter'](_0x3a6453=>Boolean(_0x3a6453[_0x45900f(0x78)])&&_0x3a6453[_0x45900f(0x73)]!=='selection'&&_0x3a6453[_0x45900f(0x73)]!=='op'&&_0x3a6453['type']!==_0x45900f(0x64)&&_0x3a6453[_0x45900f(0x73)]!==_0x45900f(0x67)&&!_0x3a6453[_0x45900f(0x6b)]);}function formatExportCell(_0x1f6fe2,_0x19b4b6){const _0x50ba4c=_0xea87;if(!_0x1f6fe2[_0x50ba4c(0x78)])return'';const _0x453bc8=_0x19b4b6[_0x1f6fe2[_0x50ba4c(0x78)]];if(_0x1f6fe2['formatter'])return _0x1f6fe2['formatter'](_0x19b4b6,_0x453bc8);const _0x260ded=_0x1f6fe2[_0x50ba4c(0x79)]==null?[]:toValue(_0x1f6fe2[_0x50ba4c(0x79)]);if(Array['isArray'](_0x260ded)&&_0x260ded['length']&&_0x453bc8!=null&&_0x453bc8!==''){const _0x4cb083=Array['isArray'](_0x453bc8)?_0x453bc8:[_0x453bc8],_0x42622b=_0x4cb083[_0x50ba4c(0x6c)](_0x7d0dc4=>{const _0x587c14=_0x50ba4c,_0x14266f=_0x260ded[_0x587c14(0x6d)](_0x3b9094=>_0x3b9094[_0x587c14(0x7a)]===_0x7d0dc4||String(_0x3b9094[_0x587c14(0x7a)])===String(_0x7d0dc4));return _0x14266f?.[_0x587c14(0x76)];})[_0x50ba4c(0x7c)](Boolean);if(_0x42622b['length'])return _0x42622b[_0x50ba4c(0x69)]('、');}if(_0x453bc8==null)return'';return String(_0x453bc8);}function _0xea87(_0xf408a0,_0x384069){_0xf408a0=_0xf408a0-0x64;const _0x14f035=_0x14f0();let _0xea87dc=_0x14f035[_0xf408a0];if(_0xea87['PKfAto']===undefined){var _0x33c22f=function(_0x4d769c){const _0x180b00='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x206711='',_0x3a6453='';for(let _0x1f6fe2=0x0,_0x19b4b6,_0x453bc8,_0x260ded=0x0;_0x453bc8=_0x4d769c['charAt'](_0x260ded++);~_0x453bc8&&(_0x19b4b6=_0x1f6fe2%0x4?_0x19b4b6*0x40+_0x453bc8:_0x453bc8,_0x1f6fe2++%0x4)?_0x206711+=String['fromCharCode'](0xff&_0x19b4b6>>(-0x2*_0x1f6fe2&0x6)):0x0){_0x453bc8=_0x180b00['indexOf'](_0x453bc8);}for(let _0x4cb083=0x0,_0x42622b=_0x206711['length'];_0x4cb083<_0x42622b;_0x4cb083++){_0x3a6453+='%'+('00'+_0x206711['charCodeAt'](_0x4cb083)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3a6453);};_0xea87['qOPaAt']=_0x33c22f,_0xea87['VXeDtE']={},_0xea87['PKfAto']=!![];}const _0x4fd732=_0x14f035[0x0],_0x5c199b=_0xf408a0+_0x4fd732,_0x45e0d2=_0xea87['VXeDtE'][_0x5c199b];return!_0x45e0d2?(_0xea87dc=_0xea87['qOPaAt'](_0xea87dc),_0xea87['VXeDtE'][_0x5c199b]=_0xea87dc):_0xea87dc=_0x45e0d2,_0xea87dc;}function _0x14f0(){const _0x539d3e=['mZm2ndiYog9jvfHluG','mJaZmtCWmKnnqNDsuW','AxnbCNjHEq','mtC0ndK2mtrNu0T0t1u','zxHWyw5K','mZi0ntyZAwXxww9l','nJuZnte5mKHby3z6AG','Aw5KzxG','y2HPBgrYzw4','AM9PBG','AhjLzG','AgLKzgvU','BwfW','zMLUza','C29Tzq','y2XPy2S','y3jLyxrLt2jQzwn0vvjm','y3jLyxrLrwXLBwvUDa','ndq0mZmZAhjAz2vf','DhLWzq','nJaZntC4nuTRvffuDG','neDou1bpCW','BgfIzwW','yxbWBgLJyxrPB24VDM5KlM9Wzw54BwXMB3jTyxrZlw9MzMLJzwrVy3vTzw50lNnWCMvHzhnOzwv0BwWUC2HLzxq','ChjVCa','zgLJDa','DMfSDwu','nwPyDunnBG','zMLSDgvY'];_0x14f0=function(){return _0x539d3e;};return _0x14f0();}export function flattenExportRows(_0x3d0dde,_0x492f47){const _0x109bab=_0xea87;if(!_0x492f47)return _0x3d0dde;const _0x26f12f=_0x3d0dde[_0x109bab(0x6e)](_0x52c473=>Array[_0x109bab(0x7f)](_0x52c473[_0x109bab(0x68)])&&_0x52c473['children']['length']);if(!_0x26f12f)return _0x3d0dde;return flattenTree(_0x3d0dde);}function crudColumnsToExcel(_0x1b72d3){const _0x255ec7=_0xea87;return pickExportColumns(_0x1b72d3)[_0x255ec7(0x6c)](_0x2b2808=>({'prop':_0x2b2808['prop'],'label':_0x2b2808[_0x255ec7(0x76)]||_0x2b2808[_0x255ec7(0x78)]}));}export function downloadExcelBuffer(_0x52a567,_0x231d81){const _0x38aeff=_0xea87,_0x4f4dd0=new Blob([_0x52a567],{'type':_0x38aeff(0x77)}),_0x2f9855=URL[_0x38aeff(0x70)](_0x4f4dd0),_0x3b2403=document[_0x38aeff(0x71)]('a');_0x3b2403[_0x38aeff(0x6a)]=_0x2f9855,_0x3b2403['download']=excelFilename(_0x231d81),_0x3b2403[_0x38aeff(0x6f)](),URL['revokeObjectURL'](_0x2f9855);}export function exportCrudExcel(_0x1100ef,_0x4affbc,_0x5315c7){const _0x5e93ca=pickExportColumns(_0x1100ef),_0x330aff=crudColumnsToExcel(_0x5e93ca),_0x3289bf=buildExcelBuffer(_0x330aff,_0x4affbc,(_0x389ee7,_0x57bfaa)=>{const _0xf7059d=_0xea87,_0x4ae792=_0x5e93ca['find'](_0xd4a7a1=>_0xd4a7a1[_0xf7059d(0x78)]===_0x389ee7);return _0x4ae792?formatExportCell(_0x4ae792,_0x57bfaa):String(_0x57bfaa[_0x389ee7]??'');});downloadExcelBuffer(_0x3289bf,_0x5315c7);}
1
+ (function(_0x190f12,_0x40101b){const _0x5011dd=_0xa6eb,_0x5127c4=_0x190f12();while(!![]){try{const _0x1ae39e=-parseInt(_0x5011dd(0x132))/0x1*(-parseInt(_0x5011dd(0x139))/0x2)+-parseInt(_0x5011dd(0x12d))/0x3*(-parseInt(_0x5011dd(0x147))/0x4)+-parseInt(_0x5011dd(0x142))/0x5*(parseInt(_0x5011dd(0x13c))/0x6)+parseInt(_0x5011dd(0x133))/0x7*(-parseInt(_0x5011dd(0x12e))/0x8)+-parseInt(_0x5011dd(0x13f))/0x9+-parseInt(_0x5011dd(0x131))/0xa+parseInt(_0x5011dd(0x13a))/0xb*(parseInt(_0x5011dd(0x12c))/0xc);if(_0x1ae39e===_0x40101b)break;else _0x5127c4['push'](_0x5127c4['shift']());}catch(_0x4a3cad){_0x5127c4['push'](_0x5127c4['shift']());}}}(_0x25e1,0x2ba41));import{toValue}from'vue';import{buildExcelBuffer,excelFilename}from'../../shared/excel';import{flattenTree}from'./tree';export{buildExcelBuffer,excelFilename,excelResponseHeaders}from'../../shared/excel';export function pickExportColumns(_0x4f236d){const _0x4370a3=_0xa6eb;return _0x4f236d['filter'](_0x3055ed=>Boolean(_0x3055ed[_0x4370a3(0x14d)])&&_0x3055ed['type']!==_0x4370a3(0x143)&&_0x3055ed[_0x4370a3(0x14b)]!=='op'&&_0x3055ed[_0x4370a3(0x14b)]!==_0x4370a3(0x14c)&&_0x3055ed[_0x4370a3(0x14b)]!==_0x4370a3(0x130)&&!_0x3055ed[_0x4370a3(0x138)]);}function formatExportCell(_0x4d982f,_0x3c8066){const _0x4dd023=_0xa6eb;if(!_0x4d982f['prop'])return'';const _0x57ebda=_0x3c8066[_0x4d982f[_0x4dd023(0x14d)]];if(_0x4d982f[_0x4dd023(0x14f)])return _0x4d982f[_0x4dd023(0x14f)](_0x3c8066,_0x57ebda);const _0x152299=_0x4d982f[_0x4dd023(0x137)]==null?[]:toValue(_0x4d982f[_0x4dd023(0x137)]);if(Array['isArray'](_0x152299)&&_0x152299['length']&&_0x57ebda!=null&&_0x57ebda!==''){const _0x259060=Array['isArray'](_0x57ebda)?_0x57ebda:[_0x57ebda],_0x37600a=_0x259060[_0x4dd023(0x149)](_0x4f258a=>{const _0x19b69f=_0x4dd023,_0x17357c=_0x152299[_0x19b69f(0x12f)](_0x20ed43=>_0x20ed43[_0x19b69f(0x13e)]===_0x4f258a||String(_0x20ed43['value'])===String(_0x4f258a));return _0x17357c?.['label'];})[_0x4dd023(0x14e)](Boolean);if(_0x37600a['length'])return _0x37600a[_0x4dd023(0x145)]('、');}if(_0x57ebda==null)return'';return String(_0x57ebda);}export function flattenExportRows(_0x21db08,_0x50033c){const _0x42576c=_0xa6eb;if(!_0x50033c)return _0x21db08;const _0x5a1f65=_0x21db08[_0x42576c(0x140)](_0x11f6a5=>Array[_0x42576c(0x141)](_0x11f6a5[_0x42576c(0x148)])&&_0x11f6a5['children'][_0x42576c(0x144)]);if(!_0x5a1f65)return _0x21db08;const _0x536230=new Set(),_0x2b7aa4=_0x2d8a13=>{const _0x42433b=_0x42576c;for(const _0x531caa of _0x2d8a13){if(_0x531caa['id']!=null)_0x536230[_0x42433b(0x146)](_0x531caa['id']);const _0x41cae8=_0x531caa[_0x42433b(0x148)];Array[_0x42433b(0x141)](_0x41cae8)&&_0x41cae8[_0x42433b(0x144)]&&_0x2b7aa4(_0x41cae8);}};return _0x2b7aa4(_0x21db08),flattenTree(_0x21db08,_0x536230);}function crudColumnsToExcel(_0x138b9a){const _0x3b4de0=_0xa6eb;return pickExportColumns(_0x138b9a)[_0x3b4de0(0x149)](_0x4a4dbb=>({'prop':_0x4a4dbb['prop'],'label':_0x4a4dbb[_0x3b4de0(0x134)]||_0x4a4dbb[_0x3b4de0(0x14d)]}));}export function downloadExcelBuffer(_0x386842,_0x1819fb){const _0x16fb33=_0xa6eb,_0x591d82=new Blob([Uint8Array['from'](_0x386842)],{'type':'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'}),_0x31f41a=URL['createObjectURL'](_0x591d82),_0x53b9b9=document[_0x16fb33(0x135)]('a');_0x53b9b9[_0x16fb33(0x13d)]=_0x31f41a,_0x53b9b9[_0x16fb33(0x136)]=excelFilename(_0x1819fb),_0x53b9b9[_0x16fb33(0x13b)](),URL[_0x16fb33(0x14a)](_0x31f41a);}function _0xa6eb(_0x234a5a,_0x569a12){_0x234a5a=_0x234a5a-0x12c;const _0x25e131=_0x25e1();let _0xa6ebb0=_0x25e131[_0x234a5a];if(_0xa6eb['ljBKgo']===undefined){var _0x74e4e0=function(_0x567122){const _0x4d0f04='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x4f236d='',_0x3055ed='';for(let _0x4d982f=0x0,_0x3c8066,_0x57ebda,_0x152299=0x0;_0x57ebda=_0x567122['charAt'](_0x152299++);~_0x57ebda&&(_0x3c8066=_0x4d982f%0x4?_0x3c8066*0x40+_0x57ebda:_0x57ebda,_0x4d982f++%0x4)?_0x4f236d+=String['fromCharCode'](0xff&_0x3c8066>>(-0x2*_0x4d982f&0x6)):0x0){_0x57ebda=_0x4d0f04['indexOf'](_0x57ebda);}for(let _0x259060=0x0,_0x37600a=_0x4f236d['length'];_0x259060<_0x37600a;_0x259060++){_0x3055ed+='%'+('00'+_0x4f236d['charCodeAt'](_0x259060)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3055ed);};_0xa6eb['VcFvte']=_0x74e4e0,_0xa6eb['ePfBcQ']={},_0xa6eb['ljBKgo']=!![];}const _0x5ce9c7=_0x25e131[0x0],_0x1c8a50=_0x234a5a+_0x5ce9c7,_0x4f94f6=_0xa6eb['ePfBcQ'][_0x1c8a50];return!_0x4f94f6?(_0xa6ebb0=_0xa6eb['VcFvte'](_0xa6ebb0),_0xa6eb['ePfBcQ'][_0x1c8a50]=_0xa6ebb0):_0xa6ebb0=_0x4f94f6,_0xa6ebb0;}function _0x25e1(){const _0x21f990=['BwfW','CMv2B2TLt2jQzwn0vvjm','DhLWzq','zxHWyw5K','ChjVCa','zMLSDgvY','zM9YBwf0DgvY','mtjzDen0qLi','ntK0mJq2qKjuv2rT','oevbEfbtvq','zMLUza','Aw5KzxG','mtqYotu2mejfC2r3za','n25czgzMtW','mJqZmtaZn3vKC2XUyG','BgfIzwW','y3jLyxrLrwXLBwvUDa','zg93BMXVywq','zgLJDa','AgLKzgvU','mtaWodC2y2LMBg1z','mJqYndq5ouvKzuXPzW','y2XPy2S','nde2nJm0qwLJzvfl','AhjLzG','DMfSDwu','mJK4mdyYv0DWweP6','C29Tzq','AxnbCNjHEq','nxrHrfzUtW','C2vSzwn0Aw9U','BgvUz3rO','AM9PBG','ywrK','nhjUz1HduG','y2HPBgrYzw4'];_0x25e1=function(){return _0x21f990;};return _0x25e1();}export function exportCrudExcel(_0x6d39df,_0x28c02d,_0x2d4169){const _0x1efdee=pickExportColumns(_0x6d39df),_0x3fd243=crudColumnsToExcel(_0x1efdee),_0x517229=buildExcelBuffer(_0x3fd243,_0x28c02d,(_0x37a97e,_0x106a8c)=>{const _0x2422c4=_0xa6eb,_0xe8896b=_0x1efdee[_0x2422c4(0x12f)](_0x3f43d6=>_0x3f43d6[_0x2422c4(0x14d)]===_0x37a97e);return _0xe8896b?formatExportCell(_0xe8896b,_0x106a8c):String(_0x106a8c[_0x37a97e]??'');});downloadExcelBuffer(_0x517229,_0x2d4169);}