vome-core 0.3.9 → 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 +32 -31
  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(_0x5b69fe,_0x597061){const _0xca2f4a=_0x15ea,_0x3ca3a4=_0x5b69fe();while(!![]){try{const _0x3bf4db=-parseInt(_0xca2f4a(0x1ed))/0x1+parseInt(_0xca2f4a(0x1ea))/0x2+-parseInt(_0xca2f4a(0x1e6))/0x3*(-parseInt(_0xca2f4a(0x1e5))/0x4)+-parseInt(_0xca2f4a(0x1e8))/0x5+-parseInt(_0xca2f4a(0x1eb))/0x6+-parseInt(_0xca2f4a(0x1e3))/0x7+parseInt(_0xca2f4a(0x1e2))/0x8*(parseInt(_0xca2f4a(0x1e9))/0x9);if(_0x3bf4db===_0x597061)break;else _0x3ca3a4['push'](_0x3ca3a4['shift']());}catch(_0x14f6ab){_0x3ca3a4['push'](_0x3ca3a4['shift']());}}}(_0x2f77,0x90298));import{useUserStore}from'../stores/user';function _0x2f77(){const _0x39eb1e=['mJe0mda3nunSvNzNAG','zgLZCgXHEq','nJqXmJi0wKTcqunh','mtvuA3zuD1e','C3r5Bgu','nti5mdG0mgj6C3ftCa','ndKYmJf2CMz6Dum','mJeYntu4nNjKwM90wa','mteZnZm0ofHgALzrAa','DMfSDwu','mZa1nty3tuHJsuHn','AgfZugvYBq','odu2qKj0BuTv'];_0x2f77=function(){return _0x39eb1e;};return _0x2f77();}function _0x15ea(_0x240e93,_0x4f8d63){_0x240e93=_0x240e93-0x1e2;const _0x2f779a=_0x2f77();let _0x15eaa8=_0x2f779a[_0x240e93];if(_0x15ea['LcLhAB']===undefined){var _0x25ba8b=function(_0x573ae4){const _0x4ba3b5='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x48a759='',_0xcc109a='';for(let _0x5bb391=0x0,_0x3fd258,_0x5d82c9,_0x55c76c=0x0;_0x5d82c9=_0x573ae4['charAt'](_0x55c76c++);~_0x5d82c9&&(_0x3fd258=_0x5bb391%0x4?_0x3fd258*0x40+_0x5d82c9:_0x5d82c9,_0x5bb391++%0x4)?_0x48a759+=String['fromCharCode'](0xff&_0x3fd258>>(-0x2*_0x5bb391&0x6)):0x0){_0x5d82c9=_0x4ba3b5['indexOf'](_0x5d82c9);}for(let _0x2e0212=0x0,_0x4f5024=_0x48a759['length'];_0x2e0212<_0x4f5024;_0x2e0212++){_0xcc109a+='%'+('00'+_0x48a759['charCodeAt'](_0x2e0212)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0xcc109a);};_0x15ea['akHXmj']=_0x25ba8b,_0x15ea['EvSqzO']={},_0x15ea['LcLhAB']=!![];}const _0x5e8e9b=_0x2f779a[0x0],_0x5a8118=_0x240e93+_0x5e8e9b,_0x4bb469=_0x15ea['EvSqzO'][_0x5a8118];return!_0x4bb469?(_0x15eaa8=_0x15ea['akHXmj'](_0x15eaa8),_0x15ea['EvSqzO'][_0x5a8118]=_0x15eaa8):_0x15eaa8=_0x4bb469,_0x15eaa8;}export const vPerm={'mounted'(_0x48a759,_0xcc109a){const _0x50d468=_0x15ea;apply(_0x48a759,_0xcc109a[_0x50d468(0x1ec)]);},'updated'(_0x5bb391,_0x3fd258){apply(_0x5bb391,_0x3fd258['value']);}};function apply(_0x5d82c9,_0x55c76c){const _0x2ba6a4=_0x15ea,_0x2e0212=useUserStore(),_0x4f5024=_0x2e0212[_0x2ba6a4(0x1ee)](_0x55c76c);_0x5d82c9[_0x2ba6a4(0x1e7)][_0x2ba6a4(0x1e4)]=_0x4f5024?'':'none';}
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 _0x261160=_0x3753;(function(_0x822974,_0x4a2245){const _0x384367=_0x3753,_0x499720=_0x822974();while(!![]){try{const _0xe0c066=-parseInt(_0x384367(0x1ef))/0x1*(parseInt(_0x384367(0x1f1))/0x2)+-parseInt(_0x384367(0x1e9))/0x3+parseInt(_0x384367(0x1e4))/0x4+parseInt(_0x384367(0x1ee))/0x5+parseInt(_0x384367(0x1f3))/0x6+-parseInt(_0x384367(0x1e6))/0x7*(-parseInt(_0x384367(0x1f8))/0x8)+-parseInt(_0x384367(0x1d7))/0x9;if(_0xe0c066===_0x4a2245)break;else _0x499720['push'](_0x499720['shift']());}catch(_0x59b419){_0x499720['push'](_0x499720['shift']());}}}(_0x3e72,0xa2a9d));import{toast}from'vue-sonner';function _0x3753(_0x2946d9,_0x3d9b44){_0x2946d9=_0x2946d9-0x1d4;const _0x3e720f=_0x3e72();let _0x375321=_0x3e720f[_0x2946d9];if(_0x3753['PwYXsO']===undefined){var _0x31f71a=function(_0x39b56c){const _0x52c5e3='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x284b1b='',_0x5ba34e='';for(let _0x53c942=0x0,_0x5b2a31,_0x1eae7d,_0x520095=0x0;_0x1eae7d=_0x39b56c['charAt'](_0x520095++);~_0x1eae7d&&(_0x5b2a31=_0x53c942%0x4?_0x5b2a31*0x40+_0x1eae7d:_0x1eae7d,_0x53c942++%0x4)?_0x284b1b+=String['fromCharCode'](0xff&_0x5b2a31>>(-0x2*_0x53c942&0x6)):0x0){_0x1eae7d=_0x52c5e3['indexOf'](_0x1eae7d);}for(let _0x57a7cd=0x0,_0x35ee03=_0x284b1b['length'];_0x57a7cd<_0x35ee03;_0x57a7cd++){_0x5ba34e+='%'+('00'+_0x284b1b['charCodeAt'](_0x57a7cd)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5ba34e);};_0x3753['SibSmQ']=_0x31f71a,_0x3753['vCinFL']={},_0x3753['PwYXsO']=!![];}const _0x55830b=_0x3e720f[0x0],_0x19aec0=_0x2946d9+_0x55830b,_0x41af1d=_0x3753['vCinFL'][_0x19aec0];return!_0x41af1d?(_0x375321=_0x3753['SibSmQ'](_0x375321),_0x3753['vCinFL'][_0x19aec0]=_0x375321):_0x375321=_0x41af1d,_0x375321;}import{request}from'../api/client';import{extname,filename,pathJoin,uploadUid}from'../lib/upload';const UPLOAD_PATH=_0x261160(0x1f4),SIGN_SKIP=new Set(['url',_0x261160(0x1d8),_0x261160(0x1d6),_0x261160(0x1fa),_0x261160(0x1e3),'preview']);function _0x3e72(){const _0xd4adc=['DxjS','zMLSzq','CMvZCg9UC2vuzxH0','AgfZ','C3rHDhvZ','Bg9HzgvK','C3rYAw5NAwz5','zw50CMLLCW','BwLU','DxbSB2fK','ChjLDMLLD1vYBa','nduWodKYnfPwy2Derq','B3bLBG','mtrfwvvoBue','5lIk5lYG5zYW5z2a5PEG5Pwi','yxbWzw5K','mteXmtC0nKXxr2LJyW','B25WCM9NCMvZCW','B25SB2fK','zxjYB3i','BMfTzq','nta5nZC4nvH2rKPICG','mxv6CKXbDq','B25LCNjVCG','nJm2odm4t01JEMT1','Dg90ywW','nZCXmJq2nNziDe5zuW','l2fKBwLUl2jHC2uVy29TBs91CgXVywq','ue9tva','zMXVB3i','A2v5','mJC5otKZnM9hA2HdyW','5lIk5lYG5AsX6lsLicG','ChvIBgLJrg9TywLU','B25SB2fKC3rHCNq','5lIk5lYG572r57UC6zsz6k+V','DxbSB2fKvxjS','mJq5otiYmtD5wKjkCNq','Ag9ZDa'];_0x3e72=function(){return _0xd4adc;};return _0x3e72();}export function useUpload(){async function _0x284b1b(_0x5ba34e,_0x53c942={}){const _0xe4a482=_0x3753,{prefixPath:prefixPath='app/public',onProgress:_0x5b2a31}=_0x53c942,_0x1eae7d=uploadUid(),_0x520095=extname(_0x5ba34e[_0xe4a482(0x1ed)]),_0x57a7cd=filename(_0x5ba34e[_0xe4a482(0x1ed)])+'_'+_0x1eae7d+(_0x520095?'.'+_0x520095:''),_0x35ee03=pathJoin(prefixPath,_0x57a7cd),_0x4f40cb=await request(UPLOAD_PATH,{'method':'POST','body':JSON[_0xe4a482(0x1df)]({})}),_0x5c4e5c=String(_0x4f40cb[_0xe4a482(0x1d8)]||_0x4f40cb[_0xe4a482(0x1d9)]||_0x4f40cb['uploadUrl']||'');if(!_0x5c4e5c)throw new Error(_0xe4a482(0x1e7));const _0x39148d=new FormData();_0x39148d[_0xe4a482(0x1e8)](_0xe4a482(0x1f7),_0x35ee03);for(const [_0x2dbb6f,_0x9d10e7]of Object[_0xe4a482(0x1e0)](_0x4f40cb)){if(SIGN_SKIP[_0xe4a482(0x1dc)](_0x2dbb6f)||_0x9d10e7==null||_0x39148d[_0xe4a482(0x1dc)](_0x2dbb6f))continue;_0x39148d[_0xe4a482(0x1e8)](_0x2dbb6f,String(_0x9d10e7));}_0x39148d[_0xe4a482(0x1e8)](_0xe4a482(0x1da),_0x5ba34e),await xhrUpload(_0x5c4e5c,_0x39148d,_0x5b2a31);const _0x262243=String(_0x4f40cb[_0xe4a482(0x1fa)]||_0x4f40cb[_0xe4a482(0x1e3)]||_0x5c4e5c);return{'url':pathJoin(_0x262243,_0x35ee03),'key':_0x35ee03,'fileId':_0x1eae7d};}return{'toUpload':_0x284b1b};}function xhrUpload(_0x51bbff,_0x5c93bc,_0x125b5a){return new Promise((_0x6dc973,_0x297e5f)=>{const _0x333980=_0x3753,_0x2aa730=new XMLHttpRequest();_0x2aa730[_0x333980(0x1e5)](_0x333980(0x1f5),_0x51bbff),_0x2aa730[_0x333980(0x1e2)][_0x333980(0x1d4)]=()=>_0x125b5a?.(0x0),_0x2aa730[_0x333980(0x1e2)][_0x333980(0x1ea)]=_0x6b13f4=>{const _0x4be880=_0x333980;if(!_0x6b13f4['lengthComputable']||_0x6b13f4[_0x4be880(0x1f2)]<=0x0)return;_0x125b5a?.(Math[_0x4be880(0x1e1)](0x63,Math[_0x4be880(0x1f6)](_0x6b13f4[_0x4be880(0x1de)]/_0x6b13f4['total']*0x64)));},_0x2aa730[_0x333980(0x1eb)]=()=>{const _0x4af72c=_0x333980;if(_0x2aa730[_0x4af72c(0x1dd)]<0xc8||_0x2aa730[_0x4af72c(0x1dd)]>=0x12c){const _0x1b1d25=_0x2aa730[_0x4af72c(0x1db)]||_0x4af72c(0x1f9)+_0x2aa730[_0x4af72c(0x1dd)]+')';toast[_0x4af72c(0x1ec)](_0x1b1d25['slice'](0x0,0xc8)),_0x297e5f(new Error(_0x1b1d25));return;}_0x125b5a?.(0x64),_0x6dc973();},_0x2aa730[_0x333980(0x1f0)]=()=>_0x297e5f(new Error(_0x333980(0x1d5))),_0x2aa730['send'](_0x5c93bc);});}
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 _0x51d1(){const _0x2469db=['BxnPzq','nZaWEgrNDLPb','nJa2mJKWmgD5DwzZAa','Dw5KzwzPBMvK','mtfKww9xDwO','zNvSBa','mtu2nJy2odryC3rjqxa','Dg9mB3DLCKnHC2u','mte0mti5zhzduMjt','DxnLCKfNzw50','nZyXodrRwLLNz3e','oda1ohzkqunNsW','B3rOzxi','DgvZDa','mZn2ALPYtfi','Bwf0y2G','zg9JDw1LBNrfBgvTzw50','mJGXmtu4wMrPEhvM','nZe4ow9lDgLvCG','mte5ndK1mKzQy2HYua'];_0x51d1=function(){return _0x2469db;};return _0x51d1();}const _0x249a3d=_0x55ea;(function(_0x5361d6,_0x60d602){const _0x1ddaad=_0x55ea,_0x2667a3=_0x5361d6();while(!![]){try{const _0xf05438=parseInt(_0x1ddaad(0x133))/0x1*(parseInt(_0x1ddaad(0x12c))/0x2)+-parseInt(_0x1ddaad(0x129))/0x3*(-parseInt(_0x1ddaad(0x139))/0x4)+parseInt(_0x1ddaad(0x131))/0x5+parseInt(_0x1ddaad(0x13a))/0x6*(-parseInt(_0x1ddaad(0x12d))/0x7)+-parseInt(_0x1ddaad(0x12e))/0x8+parseInt(_0x1ddaad(0x137))/0x9*(parseInt(_0x1ddaad(0x130))/0xa)+-parseInt(_0x1ddaad(0x135))/0xb;if(_0xf05438===_0x60d602)break;else _0x2667a3['push'](_0x2667a3['shift']());}catch(_0x3e1ec6){_0x2667a3['push'](_0x2667a3['shift']());}}}(_0x51d1,0xdc853));const SSR_FALLBACK={'height':0x0,'width':0x780,'type':_0x249a3d(0x13b),'screen':'full','isMini':![]};function _0x55ea(_0x3c2e11,_0xe9957c){_0x3c2e11=_0x3c2e11-0x128;const _0x51d1db=_0x51d1();let _0x55ea57=_0x51d1db[_0x3c2e11];if(_0x55ea['qOCzcr']===undefined){var _0x2d0a2b=function(_0x10202c){const _0x2445f3='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x502016='',_0x56fc72='';for(let _0x545ca6=0x0,_0x2af92a,_0x4362e2,_0x19f221=0x0;_0x4362e2=_0x10202c['charAt'](_0x19f221++);~_0x4362e2&&(_0x2af92a=_0x545ca6%0x4?_0x2af92a*0x40+_0x4362e2:_0x4362e2,_0x545ca6++%0x4)?_0x502016+=String['fromCharCode'](0xff&_0x2af92a>>(-0x2*_0x545ca6&0x6)):0x0){_0x4362e2=_0x2445f3['indexOf'](_0x4362e2);}for(let _0x551dd5=0x0,_0x588072=_0x502016['length'];_0x551dd5<_0x588072;_0x551dd5++){_0x56fc72+='%'+('00'+_0x502016['charCodeAt'](_0x551dd5)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x56fc72);};_0x55ea['czNPuI']=_0x2d0a2b,_0x55ea['uquEMm']={},_0x55ea['qOCzcr']=!![];}const _0x4c25a6=_0x51d1db[0x0],_0x4f5473=_0x3c2e11+_0x4c25a6,_0x5d01d2=_0x55ea['uquEMm'][_0x4f5473];return!_0x5d01d2?(_0x55ea57=_0x55ea['czNPuI'](_0x55ea57),_0x55ea['uquEMm'][_0x4f5473]=_0x55ea57):_0x55ea57=_0x5d01d2,_0x55ea57;}export function getBrowser(){const _0x1cc1ea=_0x249a3d;if(typeof document===_0x1cc1ea(0x132)||typeof navigator===_0x1cc1ea(0x132))return{...SSR_FALLBACK};const {clientHeight:_0x502016,clientWidth:_0x56fc72}=document[_0x1cc1ea(0x12b)],_0x545ca6=navigator[_0x1cc1ea(0x138)][_0x1cc1ea(0x136)]();let _0x2af92a=(_0x545ca6[_0x1cc1ea(0x12a)](/firefox|chrome|safari|opera/g)||[_0x1cc1ea(0x13b)])[0x0];if((_0x545ca6[_0x1cc1ea(0x12a)](/msie|trident/g)||[])[0x0])_0x2af92a=_0x1cc1ea(0x12f);let _0x4362e2=_0x1cc1ea(0x134);if(_0x56fc72<0x300)_0x4362e2='xs';else{if(_0x56fc72<0x3e0)_0x4362e2='sm';else{if(_0x56fc72<0x4b0)_0x4362e2='md';else{if(_0x56fc72<0x780)_0x4362e2='xl';}}}const _0x19f221=!/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i[_0x1cc1ea(0x128)](_0x545ca6);return{'height':_0x502016,'width':_0x56fc72,'type':_0x2af92a,'screen':_0x4362e2,'isMini':_0x4362e2==='xs'||!_0x19f221};}
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(_0x5b51f3,_0x13075c){var _0x22e2f2=_0x50c6,_0x30a9db=_0x5b51f3();while(!![]){try{var _0x1f6490=-parseInt(_0x22e2f2(0x14c))/0x1+parseInt(_0x22e2f2(0x150))/0x2*(parseInt(_0x22e2f2(0x149))/0x3)+-parseInt(_0x22e2f2(0x14f))/0x4*(parseInt(_0x22e2f2(0x14a))/0x5)+parseInt(_0x22e2f2(0x14d))/0x6*(-parseInt(_0x22e2f2(0x148))/0x7)+-parseInt(_0x22e2f2(0x14b))/0x8+parseInt(_0x22e2f2(0x147))/0x9+parseInt(_0x22e2f2(0x14e))/0xa;if(_0x1f6490===_0x13075c)break;else _0x30a9db['push'](_0x30a9db['shift']());}catch(_0x1bb8e8){_0x30a9db['push'](_0x30a9db['shift']());}}}(_0x40c6,0x4d157));import{clsx}from'clsx';import{twMerge}from'tailwind-merge';function _0x40c6(){var _0x59404b=['otG2oeHUtxDnva','ndm4zwfPzNfW','mtu2ndaXmxDeCvbWCq','mZK5ndj6vvPWB1C','nJyWouzwv3z3uq','mtm1s2TmwNbs','ndm1ndm3nKf0rMjiBa','mZe0ndiWDuXrwMfR','mti2BMf1CLjH','nZa0nJuXmfPrwNfNAq'];_0x40c6=function(){return _0x59404b;};return _0x40c6();}function _0x50c6(_0x232039,_0x505070){_0x232039=_0x232039-0x147;var _0x40c61e=_0x40c6();var _0x50c622=_0x40c61e[_0x232039];if(_0x50c6['LVUxae']===undefined){var _0xec478b=function(_0x3f3c3f){var _0x45bb12='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x33e78e='',_0x16de0a='';for(var _0x17f2c3=0x0,_0x541dbf,_0x2aa8c0,_0x26a41a=0x0;_0x2aa8c0=_0x3f3c3f['charAt'](_0x26a41a++);~_0x2aa8c0&&(_0x541dbf=_0x17f2c3%0x4?_0x541dbf*0x40+_0x2aa8c0:_0x2aa8c0,_0x17f2c3++%0x4)?_0x33e78e+=String['fromCharCode'](0xff&_0x541dbf>>(-0x2*_0x17f2c3&0x6)):0x0){_0x2aa8c0=_0x45bb12['indexOf'](_0x2aa8c0);}for(var _0x6976d6=0x0,_0x3ccf41=_0x33e78e['length'];_0x6976d6<_0x3ccf41;_0x6976d6++){_0x16de0a+='%'+('00'+_0x33e78e['charCodeAt'](_0x6976d6)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x16de0a);};_0x50c6['hSJGKI']=_0xec478b,_0x50c6['WbXhSY']={},_0x50c6['LVUxae']=!![];}var _0x4c1b5a=_0x40c61e[0x0],_0x47e5e6=_0x232039+_0x4c1b5a,_0x356cb2=_0x50c6['WbXhSY'][_0x47e5e6];return!_0x356cb2?(_0x50c622=_0x50c6['hSJGKI'](_0x50c622),_0x50c6['WbXhSY'][_0x47e5e6]=_0x50c622):_0x50c622=_0x356cb2,_0x50c622;}export function cn(..._0x33e78e){return twMerge(clsx(_0x33e78e));}
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
- function _0x3ecd(_0x31854c,_0x3ff019){_0x31854c=_0x31854c-0xf0;const _0x5dc0e6=_0x5dc0();let _0x3ecd64=_0x5dc0e6[_0x31854c];if(_0x3ecd['tmoSRz']===undefined){var _0x440c3c=function(_0x3301e7){const _0x2c634e='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x205d6c='',_0x48bbf0='';for(let _0xfc1be9=0x0,_0x3c4269,_0x391e07,_0x3f81f2=0x0;_0x391e07=_0x3301e7['charAt'](_0x3f81f2++);~_0x391e07&&(_0x3c4269=_0xfc1be9%0x4?_0x3c4269*0x40+_0x391e07:_0x391e07,_0xfc1be9++%0x4)?_0x205d6c+=String['fromCharCode'](0xff&_0x3c4269>>(-0x2*_0xfc1be9&0x6)):0x0){_0x391e07=_0x2c634e['indexOf'](_0x391e07);}for(let _0x9dd1b8=0x0,_0x84e212=_0x205d6c['length'];_0x9dd1b8<_0x84e212;_0x9dd1b8++){_0x48bbf0+='%'+('00'+_0x205d6c['charCodeAt'](_0x9dd1b8)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x48bbf0);};_0x3ecd['goKLxp']=_0x440c3c,_0x3ecd['OJKCgP']={},_0x3ecd['tmoSRz']=!![];}const _0x10a72e=_0x5dc0e6[0x0],_0x112494=_0x31854c+_0x10a72e,_0x4d10c8=_0x3ecd['OJKCgP'][_0x112494];return!_0x4d10c8?(_0x3ecd64=_0x3ecd['goKLxp'](_0x3ecd64),_0x3ecd['OJKCgP'][_0x112494]=_0x3ecd64):_0x3ecd64=_0x4d10c8,_0x3ecd64;}(function(_0xb481bf,_0x4a91b2){const _0x59695a=_0x3ecd,_0x9c996a=_0xb481bf();while(!![]){try{const _0x478f19=-parseInt(_0x59695a(0xfa))/0x1*(parseInt(_0x59695a(0xf5))/0x2)+-parseInt(_0x59695a(0xf6))/0x3+-parseInt(_0x59695a(0xf9))/0x4*(parseInt(_0x59695a(0xfd))/0x5)+parseInt(_0x59695a(0xf4))/0x6*(-parseInt(_0x59695a(0x100))/0x7)+-parseInt(_0x59695a(0xff))/0x8+-parseInt(_0x59695a(0xf8))/0x9*(parseInt(_0x59695a(0xfb))/0xa)+-parseInt(_0x59695a(0xf1))/0xb*(-parseInt(_0x59695a(0xf2))/0xc);if(_0x478f19===_0x4a91b2)break;else _0x9c996a['push'](_0x9c996a['shift']());}catch(_0x80f4f3){_0x9c996a['push'](_0x9c996a['shift']());}}}(_0x5dc0,0xaaba7));export const DIALOG_FLOAT_CLASS='vm-dialog-float';export const POPUP_TRIGGER_GAP=0x2;function _0x5dc0(){const _0x1fa6c6=['mta0B1nksLLx','mJmZEez1teXv','mtbzthL3rgu','DgfYz2v0','nJG0mZvksKjRzeq','ChjLDMvUDerLzMf1Bhq','mZe5mtyWmgLKrKPRsW','mZvWy3rOEfi','y2XVC2vZDa','mtfhAhbQC2u','nJiZotuXnJrYAunHvfC','B3jPz2LUywXfDMvUDa','ntK2ntGWsLjWBwj6','otuYnhvuyKPera','mZq2ntC4ouL2rMHSBG','CgfYzw50rwXLBwvUDa','odG1mtCWn2fzz3jdvq'];_0x5dc0=function(){return _0x1fa6c6;};return _0x5dc0();}export function isDialogFloatTarget(_0x205d6c){const _0x482195=_0x3ecd,_0x48bbf0=_0x205d6c['detail'],_0xfc1be9=_0x48bbf0?.[_0x482195(0xf3)]?.[_0x482195(0xfc)]??_0x205d6c[_0x482195(0xfc)];if(!_0xfc1be9)return![];const _0x3c4269=_0xfc1be9 instanceof Element?_0xfc1be9:_0xfc1be9[_0x482195(0xf7)];return Boolean(_0x3c4269?.[_0x482195(0xf0)]('.'+DIALOG_FLOAT_CLASS));}export function preventDialogOutsideClose(_0x391e07){const _0x354ad2=_0x3ecd;if(isDialogFloatTarget(_0x391e07))_0x391e07[_0x354ad2(0xfe)]();}
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(_0x2ac9cc,_0x5b35f7){const _0xebade6=_0x48a3,_0x213bd3=_0x2ac9cc();while(!![]){try{const _0x30a097=-parseInt(_0xebade6(0x1ed))/0x1+-parseInt(_0xebade6(0x1e9))/0x2*(-parseInt(_0xebade6(0x1e8))/0x3)+parseInt(_0xebade6(0x1ec))/0x4*(-parseInt(_0xebade6(0x1de))/0x5)+-parseInt(_0xebade6(0x1e5))/0x6*(-parseInt(_0xebade6(0x1ee))/0x7)+-parseInt(_0xebade6(0x1dd))/0x8*(parseInt(_0xebade6(0x1e4))/0x9)+-parseInt(_0xebade6(0x1d5))/0xa*(parseInt(_0xebade6(0x1e6))/0xb)+-parseInt(_0xebade6(0x1d6))/0xc*(-parseInt(_0xebade6(0x1d4))/0xd);if(_0x30a097===_0x5b35f7)break;else _0x213bd3['push'](_0x213bd3['shift']());}catch(_0xf94687){_0x213bd3['push'](_0x213bd3['shift']());}}}(_0x4892,0x9db9b));import{toValue}from'vue';import{buildExcelBuffer,excelFilename}from'../../shared/excel';import{flattenTree}from'./tree';export{buildExcelBuffer,excelFilename,excelResponseHeaders}from'../../shared/excel';export function pickExportColumns(_0x4bc04c){const _0x5b74a9=_0x48a3;return _0x4bc04c[_0x5b74a9(0x1db)](_0x25b7fc=>Boolean(_0x25b7fc['prop'])&&_0x25b7fc[_0x5b74a9(0x1ef)]!=='selection'&&_0x25b7fc[_0x5b74a9(0x1ef)]!=='op'&&_0x25b7fc[_0x5b74a9(0x1ef)]!==_0x5b74a9(0x1f1)&&_0x25b7fc['type']!==_0x5b74a9(0x1dc)&&!_0x25b7fc['hidden']);}function _0x48a3(_0x1e3226,_0x4ddec9){_0x1e3226=_0x1e3226-0x1d4;const _0x48920f=_0x4892();let _0x48a30a=_0x48920f[_0x1e3226];if(_0x48a3['DwZKIx']===undefined){var _0xa713d9=function(_0x5bb600){const _0x54c747='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x4bc04c='',_0x25b7fc='';for(let _0x219301=0x0,_0x2b68a8,_0x4954dd,_0x370dd1=0x0;_0x4954dd=_0x5bb600['charAt'](_0x370dd1++);~_0x4954dd&&(_0x2b68a8=_0x219301%0x4?_0x2b68a8*0x40+_0x4954dd:_0x4954dd,_0x219301++%0x4)?_0x4bc04c+=String['fromCharCode'](0xff&_0x2b68a8>>(-0x2*_0x219301&0x6)):0x0){_0x4954dd=_0x54c747['indexOf'](_0x4954dd);}for(let _0x20bcc6=0x0,_0xe3fda8=_0x4bc04c['length'];_0x20bcc6<_0xe3fda8;_0x20bcc6++){_0x25b7fc+='%'+('00'+_0x4bc04c['charCodeAt'](_0x20bcc6)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x25b7fc);};_0x48a3['lJHSIT']=_0xa713d9,_0x48a3['LuyEno']={},_0x48a3['DwZKIx']=!![];}const _0x38f4a2=_0x48920f[0x0],_0x50e373=_0x1e3226+_0x38f4a2,_0x46fe0c=_0x48a3['LuyEno'][_0x50e373];return!_0x46fe0c?(_0x48a30a=_0x48a3['lJHSIT'](_0x48a30a),_0x48a3['LuyEno'][_0x50e373]=_0x48a30a):_0x48a30a=_0x46fe0c,_0x48a30a;}function formatExportCell(_0x219301,_0x2b68a8){const _0x416ac2=_0x48a3;if(!_0x219301[_0x416ac2(0x1e7)])return'';const _0x4954dd=_0x2b68a8[_0x219301[_0x416ac2(0x1e7)]];if(_0x219301['formatter'])return _0x219301[_0x416ac2(0x1da)](_0x2b68a8,_0x4954dd);const _0x370dd1=_0x219301[_0x416ac2(0x1f0)]==null?[]:toValue(_0x219301[_0x416ac2(0x1f0)]);if(Array[_0x416ac2(0x1e1)](_0x370dd1)&&_0x370dd1[_0x416ac2(0x1eb)]&&_0x4954dd!=null&&_0x4954dd!==''){const _0x20bcc6=Array['isArray'](_0x4954dd)?_0x4954dd:[_0x4954dd],_0xe3fda8=_0x20bcc6['map'](_0x278806=>{const _0x5e8bf8=_0x416ac2,_0x3c3666=_0x370dd1['find'](_0x5ca7b7=>_0x5ca7b7[_0x5e8bf8(0x1f3)]===_0x278806||String(_0x5ca7b7[_0x5e8bf8(0x1f3)])===String(_0x278806));return _0x3c3666?.[_0x5e8bf8(0x1f4)];})[_0x416ac2(0x1db)](Boolean);if(_0xe3fda8[_0x416ac2(0x1eb)])return _0xe3fda8[_0x416ac2(0x1d8)]('、');}if(_0x4954dd==null)return'';return String(_0x4954dd);}export function flattenExportRows(_0xcdc6ea,_0x4d4e62){const _0x343640=_0x48a3;if(!_0x4d4e62)return _0xcdc6ea;const _0x42b318=_0xcdc6ea[_0x343640(0x1d9)](_0xc039c5=>Array['isArray'](_0xc039c5[_0x343640(0x1f2)])&&_0xc039c5[_0x343640(0x1f2)]['length']);if(!_0x42b318)return _0xcdc6ea;return flattenTree(_0xcdc6ea);}function crudColumnsToExcel(_0x4f99c9){const _0x11eb5d=_0x48a3;return pickExportColumns(_0x4f99c9)[_0x11eb5d(0x1e2)](_0x3022cf=>({'prop':_0x3022cf['prop'],'label':_0x3022cf[_0x11eb5d(0x1f4)]||_0x3022cf[_0x11eb5d(0x1e7)]}));}export function downloadExcelBuffer(_0x44441f,_0x1ec2f2){const _0x25961a=_0x48a3,_0x6d171c=new Blob([_0x44441f],{'type':'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'}),_0x3a8b7d=URL[_0x25961a(0x1e0)](_0x6d171c),_0x37bc37=document[_0x25961a(0x1df)]('a');_0x37bc37[_0x25961a(0x1ea)]=_0x3a8b7d,_0x37bc37['download']=excelFilename(_0x1ec2f2),_0x37bc37[_0x25961a(0x1d7)](),URL[_0x25961a(0x1e3)](_0x3a8b7d);}export function exportCrudExcel(_0x290aec,_0x4cf1b,_0x4d9bc2){const _0x460e9b=pickExportColumns(_0x290aec),_0xcdd82a=crudColumnsToExcel(_0x460e9b),_0x34e911=buildExcelBuffer(_0xcdd82a,_0x4cf1b,(_0x2c0a44,_0x32ebba)=>{const _0x3d4f20=_0x460e9b['find'](_0x58b4d7=>_0x58b4d7['prop']===_0x2c0a44);return _0x3d4f20?formatExportCell(_0x3d4f20,_0x32ebba):String(_0x32ebba[_0x2c0a44]??'');});downloadExcelBuffer(_0x34e911,_0x4d9bc2);}function _0x4892(){const _0x5cb982=['zMLSDgvY','Aw5KzxG','nJe2oeDQzM9fsG','nwrAwKTJvW','y3jLyxrLrwXLBwvUDa','y3jLyxrLt2jQzwn0vvjm','AxnbCNjHEq','BwfW','CMv2B2TLt2jQzwn0vvjm','nJKZmhPWrwfrqq','mZy3otHLr2ffrvm','nZaYowDpzvHbsG','ChjVCa','mtyXotrNzgHSrha','mZiYr2PRruPv','AhjLzG','BgvUz3rO','nde4mdm4ogvYt3n3yG','ndu1ndyYve1ts0rt','nZK4rKnhEgLk','DhLWzq','zgLJDa','zxHWyw5K','y2HPBgrYzw4','DMfSDwu','BgfIzwW','mtnHC3LctK8','ndqZmfjPsK1HCG','mtC0nJeZmdH1vKLuCM0','y2XPy2S','AM9PBG','C29Tzq','zM9YBwf0DgvY'];_0x4892=function(){return _0x5cb982;};return _0x4892();}
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);}