vome-core 0.3.10 → 0.3.11

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 +29 -28
  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(_0x59129d,_0x11b973){const _0x546c35=_0x36b8,_0x133953=_0x59129d();while(!![]){try{const _0x5da5e6=parseInt(_0x546c35(0x1f5))/0x1*(parseInt(_0x546c35(0x1f9))/0x2)+parseInt(_0x546c35(0x1f4))/0x3*(-parseInt(_0x546c35(0x1fa))/0x4)+parseInt(_0x546c35(0x1f7))/0x5+-parseInt(_0x546c35(0x1f6))/0x6+-parseInt(_0x546c35(0x1f8))/0x7*(-parseInt(_0x546c35(0x1f2))/0x8)+parseInt(_0x546c35(0x1fd))/0x9+-parseInt(_0x546c35(0x1fb))/0xa;if(_0x5da5e6===_0x11b973)break;else _0x133953['push'](_0x133953['shift']());}catch(_0x3cc2f5){_0x133953['push'](_0x133953['shift']());}}}(_0xcf7a,0xda3d6));import{useUserStore}from'../stores/user';export const vPerm={'mounted'(_0x372629,_0x4b799d){const _0x2220d6=_0x36b8;apply(_0x372629,_0x4b799d[_0x2220d6(0x1f1)]);},'updated'(_0x4e5b04,_0xf12019){const _0x2322fa=_0x36b8;apply(_0x4e5b04,_0xf12019[_0x2322fa(0x1f1)]);}};function _0x36b8(_0x2f5ccb,_0x2b264f){_0x2f5ccb=_0x2f5ccb-0x1f1;const _0xcf7a4c=_0xcf7a();let _0x36b828=_0xcf7a4c[_0x2f5ccb];if(_0x36b8['xeJhDq']===undefined){var _0x1b03ad=function(_0x10b1f7){const _0x457c89='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x372629='',_0x4b799d='';for(let _0x4e5b04=0x0,_0xf12019,_0x1fd2b7,_0x5d2a40=0x0;_0x1fd2b7=_0x10b1f7['charAt'](_0x5d2a40++);~_0x1fd2b7&&(_0xf12019=_0x4e5b04%0x4?_0xf12019*0x40+_0x1fd2b7:_0x1fd2b7,_0x4e5b04++%0x4)?_0x372629+=String['fromCharCode'](0xff&_0xf12019>>(-0x2*_0x4e5b04&0x6)):0x0){_0x1fd2b7=_0x457c89['indexOf'](_0x1fd2b7);}for(let _0x41d738=0x0,_0x42970d=_0x372629['length'];_0x41d738<_0x42970d;_0x41d738++){_0x4b799d+='%'+('00'+_0x372629['charCodeAt'](_0x41d738)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4b799d);};_0x36b8['mPRYUM']=_0x1b03ad,_0x36b8['rMCntu']={},_0x36b8['xeJhDq']=!![];}const _0x23be75=_0xcf7a4c[0x0],_0x18924f=_0x2f5ccb+_0x23be75,_0x2980ad=_0x36b8['rMCntu'][_0x18924f];return!_0x2980ad?(_0x36b828=_0x36b8['mPRYUM'](_0x36b828),_0x36b8['rMCntu'][_0x18924f]=_0x36b828):_0x36b828=_0x2980ad,_0x36b828;}function _0xcf7a(){const _0x5680a3=['ndi0mKHrrxrWua','nti0rgTyEgfM','nZe1mtmWmev0vhjUyG','C3r5Bgu','mtiXodC1ndH1rhjbvLu','DMfSDwu','mJiXndmYquXVufDJ','zgLZCgXHEq','mJK0mJDpBxDfD1y','nZeYwMfov0jO','otKXnJq0mhrMsxfcuG','ntiYota5mfrlBwvWvG','mtyXA1HUExHt'];_0xcf7a=function(){return _0x5680a3;};return _0xcf7a();}function apply(_0x1fd2b7,_0x5d2a40){const _0x5f298d=_0x36b8,_0x41d738=useUserStore(),_0x42970d=_0x41d738['hasPerm'](_0x5d2a40);_0x1fd2b7[_0x5f298d(0x1fc)][_0x5f298d(0x1f3)]=_0x42970d?'':'none';}
@@ -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
+ function _0x3032(){const _0x1f081b=['DxbSB2fKtMv0D29YA0vYCM9Y','zw50CMLLCW','Dg90ywW','B25WCM9NCMvZCW','mtuZmJG5mtfrqKvmBeG','C2XPy2u','nJK1AgHRq0LT','C3rHDhvZ','Ag9ZDa','nJe0nZy2zMvnuM5Z','mtaYoda2nhr1DuLwvG','BMfTzq','ndrPufbVA3i','B25SB2fK','mZzmqxrHqM4','nJn4tKzpq2G','zMLSzq','C2vUza','C3rYAw5NAwz5','A2v5','Bg9HzgvK','DxbSB2fKrMfPBgvKu3rHDhvZ','ChjLDMLLD1vYBa','DxbSB2fKsw52ywXPzfvYBa','otu2mZqYzgPcsvrA','DxjS','B25SB2fKC3rHCNq','nZy0mJu5rurmt0v5','mMHlBLrQrG','yxbWzw5K','mtmWmJHivwjOreW','DxbSB2fKvxjS','l2fKBwLUl2jHC2uVy29TBs91CgXVywq','BwLU','zxjYB3i','ntrYAhvvtMm','ChvIBgLJrg9TywLU','BgvUz3rOq29TChv0ywjSzq','zMXVB3i','mtq5otC5mfvJAgHxyW','DxbSB2fK','B25LCNjVCG','ue9tva','AgfZ'];_0x3032=function(){return _0x1f081b;};return _0x3032();}const _0x382fa6=_0x5194;(function(_0x5dafd4,_0xd8d69){const _0x1fe29b=_0x5194,_0x18e79a=_0x5dafd4();while(!![]){try{const _0x2313bd=-parseInt(_0x1fe29b(0xde))/0x1+-parseInt(_0x1fe29b(0xe2))/0x2*(parseInt(_0x1fe29b(0xe1))/0x3)+parseInt(_0x1fe29b(0xe4))/0x4*(parseInt(_0x1fe29b(0xcc))/0x5)+parseInt(_0x1fe29b(0xcf))/0x6*(-parseInt(_0x1fe29b(0xd5))/0x7)+parseInt(_0x1fe29b(0xd0))/0x8*(-parseInt(_0x1fe29b(0xbd))/0x9)+-parseInt(_0x1fe29b(0xc1))/0xa*(parseInt(_0x1fe29b(0xd2))/0xb)+parseInt(_0x1fe29b(0xd4))/0xc*(parseInt(_0x1fe29b(0xca))/0xd);if(_0x2313bd===_0xd8d69)break;else _0x18e79a['push'](_0x18e79a['shift']());}catch(_0xbceeb8){_0x18e79a['push'](_0x18e79a['shift']());}}}(_0x3032,0x76a44));import{toast}from'vue-sonner';import{request}from'../api/client';function _0x5194(_0x5690ce,_0x346c1a){_0x5690ce=_0x5690ce-0xbb;const _0x3032d3=_0x3032();let _0x519472=_0x3032d3[_0x5690ce];if(_0x5194['AUYvWM']===undefined){var _0x8d1372=function(_0x156a7e){const _0x53f5f0='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3b4735='',_0x448125='';for(let _0x2ad733=0x0,_0x1fef35,_0x9433a7,_0x188c3e=0x0;_0x9433a7=_0x156a7e['charAt'](_0x188c3e++);~_0x9433a7&&(_0x1fef35=_0x2ad733%0x4?_0x1fef35*0x40+_0x9433a7:_0x9433a7,_0x2ad733++%0x4)?_0x3b4735+=String['fromCharCode'](0xff&_0x1fef35>>(-0x2*_0x2ad733&0x6)):0x0){_0x9433a7=_0x53f5f0['indexOf'](_0x9433a7);}for(let _0x4795cf=0x0,_0x6996e4=_0x3b4735['length'];_0x4795cf<_0x6996e4;_0x4795cf++){_0x448125+='%'+('00'+_0x3b4735['charCodeAt'](_0x4795cf)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x448125);};_0x5194['Nkpdud']=_0x8d1372,_0x5194['SmHUGn']={},_0x5194['AUYvWM']=!![];}const _0x4c8277=_0x3032d3[0x0],_0x4bb57d=_0x5690ce+_0x4c8277,_0x10343e=_0x5194['SmHUGn'][_0x4bb57d];return!_0x10343e?(_0x519472=_0x5194['Nkpdud'](_0x519472),_0x5194['SmHUGn'][_0x4bb57d]=_0x519472):_0x519472=_0x10343e,_0x519472;}import{crudFormat,crudLabel}from'../crud/style';import{extname,filename,pathJoin,uploadUid}from'../lib/upload';const UPLOAD_PATH=_0x382fa6(0xe6),SIGN_SKIP=new Set(['url','host',_0x382fa6(0xe5),'publicDomain',_0x382fa6(0xdc),'preview']);export function useUpload(){async function _0x3b4735(_0x448125,_0x2ad733={}){const _0x149972=_0x5194,{prefixPath:prefixPath='app/public',onProgress:_0x1fef35}=_0x2ad733,_0x9433a7=uploadUid(),_0x188c3e=extname(_0x448125[_0x149972(0xd1)]),_0x4795cf=filename(_0x448125[_0x149972(0xd1)])+'_'+_0x9433a7+(_0x188c3e?'.'+_0x188c3e:''),_0x6996e4=pathJoin(prefixPath,_0x4795cf),_0x35193a=await request(UPLOAD_PATH,{'method':_0x149972(0xc4),'body':JSON[_0x149972(0xd8)]({})}),_0xbe382d=String(_0x35193a[_0x149972(0xce)]||_0x35193a[_0x149972(0xdf)]||_0x35193a[_0x149972(0xe5)]||'');if(!_0xbe382d)throw new Error(crudLabel(_0x149972(0xdd)));const _0x106651=new FormData();_0x106651[_0x149972(0xe3)](_0x149972(0xd9),_0x6996e4);for(const [_0x599799,_0x40c7c4]of Object[_0x149972(0xc7)](_0x35193a)){if(SIGN_SKIP[_0x149972(0xc5)](_0x599799)||_0x40c7c4==null||_0x106651[_0x149972(0xc5)](_0x599799))continue;_0x106651['append'](_0x599799,String(_0x40c7c4));}_0x106651[_0x149972(0xe3)](_0x149972(0xd6),_0x448125),await xhrUpload(_0xbe382d,_0x106651,_0x1fef35);const _0x3426ee=String(_0x35193a[_0x149972(0xbe)]||_0x35193a['previewUrl']||_0xbe382d);return{'url':pathJoin(_0x3426ee,_0x6996e4),'key':_0x6996e4,'fileId':_0x9433a7};}return{'toUpload':_0x3b4735};}function xhrUpload(_0x422cc9,_0x55ddb6,_0x42c5df){return new Promise((_0xfec6d3,_0x32a9c2)=>{const _0x198e79=_0x5194,_0x5184bc=new XMLHttpRequest();_0x5184bc['open'](_0x198e79(0xc4),_0x422cc9),_0x5184bc['upload'][_0x198e79(0xe0)]=()=>_0x42c5df?.(0x0),_0x5184bc[_0x198e79(0xc2)][_0x198e79(0xc9)]=_0x1a29a0=>{const _0x3a0987=_0x198e79;if(!_0x1a29a0[_0x3a0987(0xbf)]||_0x1a29a0[_0x3a0987(0xc8)]<=0x0)return;_0x42c5df?.(Math[_0x3a0987(0xbb)](0x63,Math[_0x3a0987(0xc0)](_0x1a29a0[_0x3a0987(0xda)]/_0x1a29a0[_0x3a0987(0xc8)]*0x64)));},_0x5184bc[_0x198e79(0xd3)]=()=>{const _0xbfad27=_0x198e79;if(_0x5184bc[_0xbfad27(0xcd)]<0xc8||_0x5184bc[_0xbfad27(0xcd)]>=0x12c){const _0x11c5a0=_0x5184bc['responseText']||crudFormat(crudLabel(_0xbfad27(0xdb)),_0x5184bc[_0xbfad27(0xcd)]);toast[_0xbfad27(0xbc)](_0x11c5a0[_0xbfad27(0xcb)](0x0,0xc8)),_0x32a9c2(new Error(_0x11c5a0));return;}_0x42c5df?.(0x64),_0xfec6d3();},_0x5184bc[_0x198e79(0xc3)]=()=>_0x32a9c2(new Error(crudLabel(_0x198e79(0xc6)))),_0x5184bc[_0x198e79(0xd7)](_0x55ddb6);});}
@@ -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 _0x34ec(_0x18546c,_0x1f7092){_0x18546c=_0x18546c-0x1a8;const _0x2d351a=_0x2d35();let _0x34ec53=_0x2d351a[_0x18546c];if(_0x34ec['ILhmSp']===undefined){var _0x3cafb5=function(_0x42e7e4){const _0x150fa1='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1f0045='',_0x1531ca='';for(let _0x54cae4=0x0,_0x946cfe,_0x3b89c0,_0x55144b=0x0;_0x3b89c0=_0x42e7e4['charAt'](_0x55144b++);~_0x3b89c0&&(_0x946cfe=_0x54cae4%0x4?_0x946cfe*0x40+_0x3b89c0:_0x3b89c0,_0x54cae4++%0x4)?_0x1f0045+=String['fromCharCode'](0xff&_0x946cfe>>(-0x2*_0x54cae4&0x6)):0x0){_0x3b89c0=_0x150fa1['indexOf'](_0x3b89c0);}for(let _0x45bd3b=0x0,_0x3f77b8=_0x1f0045['length'];_0x45bd3b<_0x3f77b8;_0x45bd3b++){_0x1531ca+='%'+('00'+_0x1f0045['charCodeAt'](_0x45bd3b)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1531ca);};_0x34ec['RKXDAn']=_0x3cafb5,_0x34ec['JVdgqQ']={},_0x34ec['ILhmSp']=!![];}const _0xaee013=_0x2d351a[0x0],_0x546872=_0x18546c+_0xaee013,_0x3b6ef8=_0x34ec['JVdgqQ'][_0x546872];return!_0x3b6ef8?(_0x34ec53=_0x34ec['RKXDAn'](_0x34ec53),_0x34ec['JVdgqQ'][_0x546872]=_0x34ec53):_0x34ec53=_0x3b6ef8,_0x34ec53;}function _0x2d35(){const _0x1a8665=['mZaZnZu5wM9Yvvrt','B3rOzxi','zNvSBa','m1LgCMTJuW','ndG2ntiYnKvwA2vjEG','Dw5KzwzPBMvK','nu9yzNvcsW','mtyWsgrUt3fc','Bwf0y2G','mJm1otDAAgHqDgC','mJuZnMD1AhfPDq','DxnLCKfNzw50','mtm5mdm5nhv0EK91rq','ndu3mZiXmKPYwhPywG','nZDksfHnugO','Dg9mB3DLCKnHC2u','mJe0otHItxzIEgm','mZe2mJKWnezosfzcuW'];_0x2d35=function(){return _0x1a8665;};return _0x2d35();}const _0x3c0e11=_0x34ec;(function(_0x1e6cda,_0x234377){const _0xbf08b3=_0x34ec,_0x105a8c=_0x1e6cda();while(!![]){try{const _0x5c06e9=-parseInt(_0xbf08b3(0x1b3))/0x1+-parseInt(_0xbf08b3(0x1b7))/0x2+-parseInt(_0xbf08b3(0x1aa))/0x3*(parseInt(_0xbf08b3(0x1b8))/0x4)+-parseInt(_0xbf08b3(0x1ad))/0x5*(-parseInt(_0xbf08b3(0x1ab))/0x6)+parseInt(_0xbf08b3(0x1b0))/0x7*(-parseInt(_0xbf08b3(0x1b1))/0x8)+parseInt(_0xbf08b3(0x1b9))/0x9*(parseInt(_0xbf08b3(0x1ae))/0xa)+parseInt(_0xbf08b3(0x1b5))/0xb*(parseInt(_0xbf08b3(0x1b4))/0xc);if(_0x5c06e9===_0x234377)break;else _0x105a8c['push'](_0x105a8c['shift']());}catch(_0x21d91a){_0x105a8c['push'](_0x105a8c['shift']());}}}(_0x2d35,0xb9166));const SSR_FALLBACK={'height':0x0,'width':0x780,'type':_0x3c0e11(0x1a8),'screen':_0x3c0e11(0x1a9),'isMini':![]};export function getBrowser(){const _0x3f981a=_0x3c0e11;if(typeof document===_0x3f981a(0x1ac)||typeof navigator==='undefined')return{...SSR_FALLBACK};const {clientHeight:_0x1f0045,clientWidth:_0x1531ca}=document['documentElement'],_0x54cae4=navigator[_0x3f981a(0x1b2)][_0x3f981a(0x1b6)]();let _0x946cfe=(_0x54cae4[_0x3f981a(0x1af)](/firefox|chrome|safari|opera/g)||[_0x3f981a(0x1a8)])[0x0];if((_0x54cae4[_0x3f981a(0x1af)](/msie|trident/g)||[])[0x0])_0x946cfe='msie';let _0x3b89c0=_0x3f981a(0x1a9);if(_0x1531ca<0x300)_0x3b89c0='xs';else{if(_0x1531ca<0x3e0)_0x3b89c0='sm';else{if(_0x1531ca<0x4b0)_0x3b89c0='md';else{if(_0x1531ca<0x780)_0x3b89c0='xl';}}}const _0x55144b=!/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i['test'](_0x54cae4);return{'height':_0x1f0045,'width':_0x1531ca,'type':_0x946cfe,'screen':_0x3b89c0,'isMini':_0x3b89c0==='xs'||!_0x55144b};}
@@ -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 _0x5a18(_0xb10bdf,_0x37435b){_0xb10bdf=_0xb10bdf-0x1cf;var _0xf7aee8=_0xf7ae();var _0x5a18e3=_0xf7aee8[_0xb10bdf];if(_0x5a18['Kiowcw']===undefined){var _0x289260=function(_0x3915e0){var _0x5f4c55='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x32fc67='',_0x547e4b='';for(var _0x203445=0x0,_0x161c94,_0x75cda2,_0x176d2e=0x0;_0x75cda2=_0x3915e0['charAt'](_0x176d2e++);~_0x75cda2&&(_0x161c94=_0x203445%0x4?_0x161c94*0x40+_0x75cda2:_0x75cda2,_0x203445++%0x4)?_0x32fc67+=String['fromCharCode'](0xff&_0x161c94>>(-0x2*_0x203445&0x6)):0x0){_0x75cda2=_0x5f4c55['indexOf'](_0x75cda2);}for(var _0x12f74f=0x0,_0x22947a=_0x32fc67['length'];_0x12f74f<_0x22947a;_0x12f74f++){_0x547e4b+='%'+('00'+_0x32fc67['charCodeAt'](_0x12f74f)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x547e4b);};_0x5a18['ubKmqK']=_0x289260,_0x5a18['ohduLA']={},_0x5a18['Kiowcw']=!![];}var _0x1a830a=_0xf7aee8[0x0],_0x49e628=_0xb10bdf+_0x1a830a,_0x2080f6=_0x5a18['ohduLA'][_0x49e628];return!_0x2080f6?(_0x5a18e3=_0x5a18['ubKmqK'](_0x5a18e3),_0x5a18['ohduLA'][_0x49e628]=_0x5a18e3):_0x5a18e3=_0x2080f6,_0x5a18e3;}(function(_0x58f0d9,_0x3cbe23){var _0x1cf9d7=_0x5a18,_0x20258d=_0x58f0d9();while(!![]){try{var _0x33b5ca=-parseInt(_0x1cf9d7(0x1d2))/0x1*(parseInt(_0x1cf9d7(0x1d3))/0x2)+-parseInt(_0x1cf9d7(0x1da))/0x3+parseInt(_0x1cf9d7(0x1d6))/0x4*(-parseInt(_0x1cf9d7(0x1d9))/0x5)+-parseInt(_0x1cf9d7(0x1d5))/0x6*(parseInt(_0x1cf9d7(0x1d0))/0x7)+-parseInt(_0x1cf9d7(0x1d4))/0x8*(parseInt(_0x1cf9d7(0x1cf))/0x9)+parseInt(_0x1cf9d7(0x1d1))/0xa*(-parseInt(_0x1cf9d7(0x1d7))/0xb)+parseInt(_0x1cf9d7(0x1d8))/0xc;if(_0x33b5ca===_0x3cbe23)break;else _0x20258d['push'](_0x20258d['shift']());}catch(_0x1585e1){_0x20258d['push'](_0x20258d['shift']());}}}(_0xf7ae,0xdb159));import{clsx}from'clsx';import{twMerge}from'tailwind-merge';export function cn(..._0x32fc67){return twMerge(clsx(_0x32fc67));}function _0xf7ae(){var _0x5c754a=['ogHyvvjeCG','nKzeufvzva','mJy3ndHprKvtqwq','mJjxwKvvCxC','odCZmdy0ndrhvhLdqxu','mteZnvPVyxzruG','mJG4odmWmvvJzMvIEa','otCZmdu2nMviv29YuG','mtiXnZK4odHXA0TJtgm','mJq2nZe2mffWCujrrW','mZqYodzTDgzJEui','mZrAsM1cv3q'];_0xf7ae=function(){return _0x5c754a;};return _0xf7ae();}
@@ -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
+ (function(_0x5297e6,_0x4fa9ae){const _0x1ef3a0=_0xa561,_0x254d2e=_0x5297e6();while(!![]){try{const _0x4311e2=parseInt(_0x1ef3a0(0x15f))/0x1*(parseInt(_0x1ef3a0(0x15d))/0x2)+parseInt(_0x1ef3a0(0x15e))/0x3*(parseInt(_0x1ef3a0(0x15c))/0x4)+parseInt(_0x1ef3a0(0x151))/0x5+parseInt(_0x1ef3a0(0x154))/0x6*(parseInt(_0x1ef3a0(0x156))/0x7)+-parseInt(_0x1ef3a0(0x158))/0x8*(-parseInt(_0x1ef3a0(0x159))/0x9)+-parseInt(_0x1ef3a0(0x161))/0xa+-parseInt(_0x1ef3a0(0x153))/0xb*(parseInt(_0x1ef3a0(0x160))/0xc);if(_0x4311e2===_0x4fa9ae)break;else _0x254d2e['push'](_0x254d2e['shift']());}catch(_0x35b6d5){_0x254d2e['push'](_0x254d2e['shift']());}}}(_0x3125,0x708f4));function _0xa561(_0x43ba2d,_0x4ec3b7){_0x43ba2d=_0x43ba2d-0x151;const _0x31256e=_0x3125();let _0xa561dc=_0x31256e[_0x43ba2d];if(_0xa561['KQtLGd']===undefined){var _0x2ab72a=function(_0x4f8f38){const _0x5d4a95='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x978c4d='',_0x15d0a4='';for(let _0x5d8aef=0x0,_0x147258,_0x374c9d,_0x264368=0x0;_0x374c9d=_0x4f8f38['charAt'](_0x264368++);~_0x374c9d&&(_0x147258=_0x5d8aef%0x4?_0x147258*0x40+_0x374c9d:_0x374c9d,_0x5d8aef++%0x4)?_0x978c4d+=String['fromCharCode'](0xff&_0x147258>>(-0x2*_0x5d8aef&0x6)):0x0){_0x374c9d=_0x5d4a95['indexOf'](_0x374c9d);}for(let _0x53b3fb=0x0,_0x3ee640=_0x978c4d['length'];_0x53b3fb<_0x3ee640;_0x53b3fb++){_0x15d0a4+='%'+('00'+_0x978c4d['charCodeAt'](_0x53b3fb)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x15d0a4);};_0xa561['MPkALX']=_0x2ab72a,_0xa561['GVcxpI']={},_0xa561['KQtLGd']=!![];}const _0x52d9c4=_0x31256e[0x0],_0xfb7ee0=_0x43ba2d+_0x52d9c4,_0x327c30=_0xa561['GVcxpI'][_0xfb7ee0];return!_0x327c30?(_0xa561dc=_0xa561['MPkALX'](_0xa561dc),_0xa561['GVcxpI'][_0xfb7ee0]=_0xa561dc):_0xa561dc=_0x327c30,_0xa561dc;}export const DIALOG_FLOAT_CLASS='vm-dialog-float';export const POPUP_TRIGGER_GAP=0x2;export function isDialogFloatTarget(_0x978c4d){const _0x47211d=_0xa561,_0x15d0a4=_0x978c4d[_0x47211d(0x157)],_0x5d8aef=_0x15d0a4?.[_0x47211d(0x155)]?.[_0x47211d(0x15b)]??_0x978c4d['target'];if(!_0x5d8aef)return![];const _0x147258=_0x5d8aef instanceof Element?_0x5d8aef:_0x5d8aef[_0x47211d(0x152)];return Boolean(_0x147258?.[_0x47211d(0x15a)]('.'+DIALOG_FLOAT_CLASS));}function _0x3125(){const _0x3b2ebc=['mtC0ntG4s0Tmq2PS','oteYnde3mg5oC2TOua','ndu0ndaXnw1XreDwAW','CgfYzw50rwXLBwvUDa','odi1ywDLzM1g','mtC0Ce9csez0','B3jPz2LUywXfDMvUDa','nZmXnxfPwvDpCG','zgv0ywLS','ndi3odGWohDPBKDmvq','owPOsxr2ta','y2XVC2vZDa','DgfYz2v0','mte3nJy4oeDxq2jAAW','mtm5mZaXmgHlCvP2wq','m2D5u2TJrW','murVzgTeCa'];_0x3125=function(){return _0x3b2ebc;};return _0x3125();}export function preventDialogOutsideClose(_0x374c9d){if(isDialogFloatTarget(_0x374c9d))_0x374c9d['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(_0x282ce5,_0x577512){const _0x3283db=_0x4623,_0x4e8862=_0x282ce5();while(!![]){try{const _0xefea9f=-parseInt(_0x3283db(0x99))/0x1+-parseInt(_0x3283db(0xaf))/0x2*(parseInt(_0x3283db(0xa6))/0x3)+parseInt(_0x3283db(0x9c))/0x4*(-parseInt(_0x3283db(0x98))/0x5)+parseInt(_0x3283db(0xb2))/0x6*(parseInt(_0x3283db(0xae))/0x7)+-parseInt(_0x3283db(0x9f))/0x8*(-parseInt(_0x3283db(0xa9))/0x9)+parseInt(_0x3283db(0x9d))/0xa*(parseInt(_0x3283db(0x9b))/0xb)+parseInt(_0x3283db(0x97))/0xc*(parseInt(_0x3283db(0xa5))/0xd);if(_0xefea9f===_0x577512)break;else _0x4e8862['push'](_0x4e8862['shift']());}catch(_0x5b1a88){_0x4e8862['push'](_0x4e8862['shift']());}}}(_0x3b7b,0x5e486));function _0x3b7b(){const _0x38207f=['BgfIzwW','yxbWBgLJyxrPB24VDM5KlM9Wzw54BwXMB3jTyxrZlw9MzMLJzwrVy3vTzw50lNnWCMvHzhnOzwv0BwWUC2HLzxq','DhLWzq','AxnbCNjHEq','odyYmdy5uxH2y1zI','odK1otu5swvLyxDc','ChjVCa','zM9YBwf0DgvY','mtCZn1DmBKfVvq','AM9PBG','y3jLyxrLrwXLBwvUDa','BgvUz3rO','y3jLyxrLt2jQzwn0vvjm','mtu3odaXD3P4y0f1','ngXqwwzPCW','Aw5KzxG','C2vSzwn0Aw9U','mZbIzu9Ar04','zMLUza','zg93BMXVywq','y2HPBgrYzw4','zgLJDa','zMLSDgvY','y2XPy2S','ndHqt1jSEeK','mtboENjuy0C','mJe3nJq0uhPXsgvs','BwfW','mtyZnZCWmKzlBev0Da','ndi0odC2tuXbr2DK','mJbfqunmAxK','C29Tzq','mZa1odrPu1bACuO','AgLKzgvU'];_0x3b7b=function(){return _0x38207f;};return _0x3b7b();}import{toValue}from'vue';import{buildExcelBuffer,excelFilename}from'../../shared/excel';function _0x4623(_0x51c3d2,_0x2361bd){_0x51c3d2=_0x51c3d2-0x97;const _0x3b7be5=_0x3b7b();let _0x46236c=_0x3b7be5[_0x51c3d2];if(_0x4623['LTkAuZ']===undefined){var _0x47f071=function(_0x3d56f0){const _0x6a809c='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x40360c='',_0x49beea='';for(let _0x536a2b=0x0,_0x336dcb,_0x24f8ec,_0xd6b496=0x0;_0x24f8ec=_0x3d56f0['charAt'](_0xd6b496++);~_0x24f8ec&&(_0x336dcb=_0x536a2b%0x4?_0x336dcb*0x40+_0x24f8ec:_0x24f8ec,_0x536a2b++%0x4)?_0x40360c+=String['fromCharCode'](0xff&_0x336dcb>>(-0x2*_0x536a2b&0x6)):0x0){_0x24f8ec=_0x6a809c['indexOf'](_0x24f8ec);}for(let _0x3cfc11=0x0,_0x3a7a00=_0x40360c['length'];_0x3cfc11<_0x3a7a00;_0x3cfc11++){_0x49beea+='%'+('00'+_0x40360c['charCodeAt'](_0x3cfc11)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x49beea);};_0x4623['WmxRvD']=_0x47f071,_0x4623['KmbnEy']={},_0x4623['LTkAuZ']=!![];}const _0xd15921=_0x3b7be5[0x0],_0x392146=_0x51c3d2+_0xd15921,_0x5803f5=_0x4623['KmbnEy'][_0x392146];return!_0x5803f5?(_0x46236c=_0x4623['WmxRvD'](_0x46236c),_0x4623['KmbnEy'][_0x392146]=_0x46236c):_0x46236c=_0x5803f5,_0x46236c;}import{flattenTree}from'./tree';export{buildExcelBuffer,excelFilename,excelResponseHeaders}from'../../shared/excel';export function pickExportColumns(_0x40360c){const _0x4f22e5=_0x4623;return _0x40360c[_0x4f22e5(0xb7)](_0x49beea=>Boolean(_0x49beea[_0x4f22e5(0xa7)])&&_0x49beea['type']!==_0x4f22e5(0xb1)&&_0x49beea['type']!=='op'&&_0x49beea[_0x4f22e5(0xa3)]!=='expand'&&_0x49beea[_0x4f22e5(0xa3)]!==_0x4f22e5(0xb0)&&!_0x49beea[_0x4f22e5(0xa0)]);}function formatExportCell(_0x536a2b,_0x336dcb){const _0x182aa7=_0x4623;if(!_0x536a2b['prop'])return'';const _0x24f8ec=_0x336dcb[_0x536a2b[_0x182aa7(0xa7)]];if(_0x536a2b[_0x182aa7(0xa8)])return _0x536a2b['formatter'](_0x336dcb,_0x24f8ec);const _0xd6b496=_0x536a2b[_0x182aa7(0xb6)]==null?[]:toValue(_0x536a2b[_0x182aa7(0xb6)]);if(Array[_0x182aa7(0xa4)](_0xd6b496)&&_0xd6b496[_0x182aa7(0xac)]&&_0x24f8ec!=null&&_0x24f8ec!==''){const _0x3cfc11=Array['isArray'](_0x24f8ec)?_0x24f8ec:[_0x24f8ec],_0x3a7a00=_0x3cfc11[_0x182aa7(0x9a)](_0x16b557=>{const _0x5ac635=_0x182aa7,_0x5dc3df=_0xd6b496[_0x5ac635(0xb3)](_0x54bf82=>_0x54bf82['value']===_0x16b557||String(_0x54bf82['value'])===String(_0x16b557));return _0x5dc3df?.[_0x5ac635(0xa1)];})['filter'](Boolean);if(_0x3a7a00[_0x182aa7(0xac)])return _0x3a7a00[_0x182aa7(0xaa)]('、');}if(_0x24f8ec==null)return'';return String(_0x24f8ec);}export function flattenExportRows(_0x212e2e,_0x5232ef){const _0x326e2f=_0x4623;if(!_0x5232ef)return _0x212e2e;const _0x57f5b4=_0x212e2e[_0x326e2f(0x9e)](_0x35bfa0=>Array['isArray'](_0x35bfa0[_0x326e2f(0xb5)])&&_0x35bfa0[_0x326e2f(0xb5)]['length']);if(!_0x57f5b4)return _0x212e2e;return flattenTree(_0x212e2e);}function crudColumnsToExcel(_0x4f1508){const _0x1734bf=_0x4623;return pickExportColumns(_0x4f1508)[_0x1734bf(0x9a)](_0x372c5c=>({'prop':_0x372c5c['prop'],'label':_0x372c5c[_0x1734bf(0xa1)]||_0x372c5c['prop']}));}export function downloadExcelBuffer(_0x2ef512,_0x3ccabd){const _0x4fcb45=_0x4623,_0x585317=new Blob([_0x2ef512],{'type':_0x4fcb45(0xa2)}),_0x4cfd7b=URL[_0x4fcb45(0xad)](_0x585317),_0x559386=document[_0x4fcb45(0xab)]('a');_0x559386['href']=_0x4cfd7b,_0x559386[_0x4fcb45(0xb4)]=excelFilename(_0x3ccabd),_0x559386[_0x4fcb45(0xb8)](),URL['revokeObjectURL'](_0x4cfd7b);}export function exportCrudExcel(_0x3cdcb1,_0x5404a0,_0x1e79dd){const _0x565a39=pickExportColumns(_0x3cdcb1),_0x1715d7=crudColumnsToExcel(_0x565a39),_0x4bd4d2=buildExcelBuffer(_0x1715d7,_0x5404a0,(_0xa036d9,_0x3ba5e8)=>{const _0x4150e9=_0x4623,_0x3eca8d=_0x565a39[_0x4150e9(0xb3)](_0x4b2b99=>_0x4b2b99['prop']===_0xa036d9);return _0x3eca8d?formatExportCell(_0x3eca8d,_0x3ba5e8):String(_0x3ba5e8[_0xa036d9]??'');});downloadExcelBuffer(_0x4bd4d2,_0x1e79dd);}