vome-core 0.1.86 → 0.1.88
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.
- package/dist/admin/components/ui/avatar/index.js +1 -1
- package/dist/admin/components/ui/checkbox/index.js +1 -1
- package/dist/admin/components/ui/dialog/index.js +1 -1
- package/dist/admin/components/ui/dropdown-menu/index.js +1 -1
- package/dist/admin/components/ui/input/index.js +1 -1
- package/dist/admin/components/ui/label/index.js +1 -1
- package/dist/admin/components/ui/scroll-area/index.js +1 -1
- package/dist/admin/components/ui/select/index.js +1 -1
- package/dist/admin/components/ui/separator/index.js +1 -1
- package/dist/admin/components/ui/sheet/index.js +1 -1
- package/dist/admin/components/ui/sonner/index.js +1 -1
- package/dist/admin/components/ui/table/index.js +1 -1
- package/dist/admin/components/ui/tabs/index.js +1 -1
- package/dist/admin/components/ui/tooltip/index.js +1 -1
- package/dist/admin/crud/components/vm-richtext-extensions.js +1 -1
- package/dist/admin/crud/config.js +1 -1
- package/dist/admin/crud/confirm.js +1 -1
- package/dist/admin/crud/crud-page-request.js +1 -1
- package/dist/admin/crud/data-i18n.d.ts +39 -0
- package/dist/admin/crud/data-i18n.js +1 -0
- package/dist/admin/crud/dict.js +1 -1
- package/dist/admin/crud/export-fetch.js +1 -1
- package/dist/admin/crud/key.js +1 -1
- package/dist/admin/crud/plugins.js +1 -1
- package/dist/admin/crud/span.js +1 -1
- package/dist/admin/crud/style.js +1 -1
- package/dist/admin/crud/validate.js +1 -1
- package/dist/admin/crud/vm-crud.vue +66 -0
- package/dist/admin/crud/vm-data-i18n-btn.vue +209 -72
- package/dist/admin/crud/vm-data-i18n-lang.vue +176 -0
- package/dist/admin/crud/vm-table.vue +188 -5
- package/dist/admin/crud/vm-toolbar.vue +80 -47
- package/dist/admin/directives/perm.js +1 -1
- package/dist/admin/hooks/useUpload.js +1 -1
- package/dist/admin/lib/browser.js +1 -1
- package/dist/admin/lib/cn.js +1 -1
- package/dist/admin/lib/dialog-float.js +1 -1
- package/dist/admin/lib/export-excel.js +1 -1
- package/dist/admin/lib/import-excel.js +1 -1
- package/dist/admin/lib/json.js +1 -1
- package/dist/admin/lib/menu.js +1 -1
- package/dist/admin/lib/micro-locale.js +1 -1
- package/dist/admin/lib/micro-theme.js +1 -1
- package/dist/admin/lib/setup-crud-defaults.js +1 -1
- package/dist/admin/lib/shell.js +1 -1
- package/dist/admin/lib/theme-color-options.js +1 -1
- package/dist/admin/lib/tree.js +1 -1
- package/dist/admin/lib/upload.js +1 -1
- package/dist/admin/lib/video-frame.js +1 -1
- package/dist/admin/router/create.js +1 -1
- package/dist/admin/router/guards.js +1 -1
- package/dist/admin/themes/dark.js +1 -1
- package/dist/admin/themes/index.js +1 -1
- package/dist/admin/themes/light.js +1 -1
- package/dist/index.js +1 -1
- package/dist/server/index.js +1 -1
- package/dist/shared/datetime-picker.js +1 -1
- package/dist/shared/excel.js +1 -1
- package/dist/shared/index.js +1 -1
- package/dist/shared/locale-json.js +1 -1
- package/dist/shared/tree.js +1 -1
- package/package.json +1 -1
- package/typings/admin/comm/crud.ts +8 -1
|
@@ -109,6 +109,27 @@
|
|
|
109
109
|
{{ crudLabel('forceDelete', crud.dict.label) }}
|
|
110
110
|
</Button>
|
|
111
111
|
</div>
|
|
112
|
+
<div
|
|
113
|
+
v-else-if="crud.trashMode.value === 'dataI18n'"
|
|
114
|
+
class="vm-crud-table__ops"
|
|
115
|
+
>
|
|
116
|
+
<Button
|
|
117
|
+
type="button"
|
|
118
|
+
size="xs"
|
|
119
|
+
variant="softPrimary"
|
|
120
|
+
@click.stop="openDataI18nEdit(row)"
|
|
121
|
+
>
|
|
122
|
+
{{ crudLabel('update', crud.dict.label) }}
|
|
123
|
+
</Button>
|
|
124
|
+
<Button
|
|
125
|
+
type="button"
|
|
126
|
+
size="xs"
|
|
127
|
+
variant="softDestructive"
|
|
128
|
+
@click.stop="deleteDataI18nEntry(row)"
|
|
129
|
+
>
|
|
130
|
+
{{ crudLabel('delete', crud.dict.label) }}
|
|
131
|
+
</Button>
|
|
132
|
+
</div>
|
|
112
133
|
<div v-else class="vm-crud-table__ops">
|
|
113
134
|
<template v-for="(btn, bi) in resolveButtons(col, row)" :key="bi">
|
|
114
135
|
<Button
|
|
@@ -245,17 +266,60 @@
|
|
|
245
266
|
</Table>
|
|
246
267
|
</div>
|
|
247
268
|
<vm-context-menu ref="ctxRef" :items="ctxItems" @select="onCtxSelect" />
|
|
269
|
+
|
|
270
|
+
<Dialog :open="dataI18nEditOpen" @update:open="onDataI18nEditOpenChange">
|
|
271
|
+
<DialogContent shell="crud" class="vm-data-i18n-edit__dialog">
|
|
272
|
+
<DialogHeader class="vm-crud-shell__head">
|
|
273
|
+
<DialogTitle class="vm-crud-shell__title">编辑译文</DialogTitle>
|
|
274
|
+
</DialogHeader>
|
|
275
|
+
<div class="vm-data-i18n-edit__body">
|
|
276
|
+
<p class="vm-data-i18n-edit__meta">
|
|
277
|
+
<span>ID:{{ dataI18nEditForm.id }}</span>
|
|
278
|
+
<span>key:{{ dataI18nEditForm.key }}</span>
|
|
279
|
+
</p>
|
|
280
|
+
<label class="vm-data-i18n-edit__field">
|
|
281
|
+
<span>value</span>
|
|
282
|
+
<Input v-model="dataI18nEditForm.value" />
|
|
283
|
+
</label>
|
|
284
|
+
</div>
|
|
285
|
+
<DialogFooter class="vm-crud-shell__foot">
|
|
286
|
+
<button
|
|
287
|
+
type="button"
|
|
288
|
+
class="vm-crud-shell__btn is-ghost"
|
|
289
|
+
:disabled="dataI18nEditSubmitting"
|
|
290
|
+
@click="dataI18nEditOpen = false"
|
|
291
|
+
>
|
|
292
|
+
取消
|
|
293
|
+
</button>
|
|
294
|
+
<button
|
|
295
|
+
type="button"
|
|
296
|
+
class="vm-crud-shell__btn is-primary"
|
|
297
|
+
:disabled="dataI18nEditSubmitting"
|
|
298
|
+
@click="saveDataI18nEdit"
|
|
299
|
+
>
|
|
300
|
+
{{ dataI18nEditSubmitting ? '保存中…' : '保存' }}
|
|
301
|
+
</button>
|
|
302
|
+
</DialogFooter>
|
|
303
|
+
</DialogContent>
|
|
304
|
+
</Dialog>
|
|
248
305
|
</div>
|
|
249
306
|
</template>
|
|
250
307
|
|
|
251
308
|
<script setup lang="ts">
|
|
252
309
|
import { ref, computed, watch, onMounted, onBeforeUnmount, provide, useSlots, toValue } from 'vue'
|
|
310
|
+
import { toast } from 'vue-sonner'
|
|
253
311
|
import { useCrud } from './useCrud'
|
|
254
312
|
import { injectTableOptions, TABLE_API_KEY } from './key'
|
|
255
313
|
import { flattenTree } from '../lib/tree'
|
|
256
314
|
import { resolveCrudComponent } from './registry'
|
|
257
315
|
import { getCrudStyle, crudLabel, crudT, crudLocaleRev } from './style'
|
|
258
316
|
import { findEpsEntity } from '../lib/eps'
|
|
317
|
+
import { useVome } from '../hooks/useVome'
|
|
318
|
+
import { vmConfirm } from './confirm'
|
|
319
|
+
import {
|
|
320
|
+
canUseDataI18n,
|
|
321
|
+
dataPackFromService,
|
|
322
|
+
} from './data-i18n'
|
|
259
323
|
import type {
|
|
260
324
|
CrudColumn,
|
|
261
325
|
CrudOpButton,
|
|
@@ -298,7 +362,17 @@ let emptyRo: ResizeObserver | null = null
|
|
|
298
362
|
|
|
299
363
|
const overrideColumns = ref<CrudColumn[] | null>(null)
|
|
300
364
|
|
|
365
|
+
const DATA_I18N_COLUMNS: CrudColumn[] = [
|
|
366
|
+
{ prop: 'id', label: 'ID', minWidth: 120 },
|
|
367
|
+
{ prop: 'key', label: 'key', minWidth: 140 },
|
|
368
|
+
{ prop: 'value', label: 'value', minWidth: 220 },
|
|
369
|
+
{ type: 'op', buttons: ['edit', 'delete'], width: 140 },
|
|
370
|
+
]
|
|
371
|
+
|
|
372
|
+
const isDataI18nView = computed(() => crud.trashMode.value === 'dataI18n')
|
|
373
|
+
|
|
301
374
|
const columns = computed(() => {
|
|
375
|
+
if (isDataI18nView.value) return DATA_I18N_COLUMNS
|
|
302
376
|
const raw =
|
|
303
377
|
overrideColumns.value ||
|
|
304
378
|
(props.columns?.length ? props.columns : tableOpts?.columns || [])
|
|
@@ -307,13 +381,16 @@ const columns = computed(() => {
|
|
|
307
381
|
|
|
308
382
|
const hasSelectionCol = computed(() => columns.value.some((c) => c.type === 'selection'))
|
|
309
383
|
const hasOpCol = computed(() => columns.value.some((c) => c.type === 'op'))
|
|
310
|
-
const showSelection = computed(() =>
|
|
311
|
-
|
|
312
|
-
|
|
384
|
+
const showSelection = computed(() => {
|
|
385
|
+
if (isDataI18nView.value) return false
|
|
386
|
+
return props.selection !== undefined ? props.selection : hasSelectionCol.value
|
|
387
|
+
})
|
|
313
388
|
const dataColumns = computed(() =>
|
|
314
389
|
columns.value.filter((c) => c.type !== 'selection'),
|
|
315
390
|
)
|
|
316
|
-
const showSlotOp = computed(
|
|
391
|
+
const showSlotOp = computed(
|
|
392
|
+
() => Boolean(slots.op) && !hasOpCol.value && !isDataI18nView.value,
|
|
393
|
+
)
|
|
317
394
|
|
|
318
395
|
/** EPS 列 → field.{table}.{prop} */
|
|
319
396
|
function epsFieldKey(prop: string): string | undefined {
|
|
@@ -357,7 +434,9 @@ const colSpan = computed(
|
|
|
357
434
|
(showSlotOp.value ? 1 : 0),
|
|
358
435
|
)
|
|
359
436
|
|
|
360
|
-
const rowKey = computed(() =>
|
|
437
|
+
const rowKey = computed(() =>
|
|
438
|
+
isDataI18nView.value ? '__rowKey' : tableOpts?.rowKey || props.rowKey,
|
|
439
|
+
)
|
|
361
440
|
const isTree = computed(() => Boolean(tableOpts?.tree))
|
|
362
441
|
const border = computed(() => tableOpts?.border ?? style.border)
|
|
363
442
|
const autoHeight = computed(() => tableOpts?.autoHeight ?? style.autoHeight)
|
|
@@ -498,6 +577,7 @@ function colStyle(col: CrudColumn, index?: number) {
|
|
|
498
577
|
return base
|
|
499
578
|
}
|
|
500
579
|
const ctxEnabled = computed(() => {
|
|
580
|
+
if (isDataI18nView.value) return false
|
|
501
581
|
const c = tableOpts?.contextMenu ?? style.contextMenu
|
|
502
582
|
return c !== false && !(Array.isArray(c) && c.length === 0)
|
|
503
583
|
})
|
|
@@ -604,6 +684,81 @@ function deleteRowTargets(row: Record<string, unknown>) {
|
|
|
604
684
|
return isTree.value ? collectSubtree(row) : [row]
|
|
605
685
|
}
|
|
606
686
|
|
|
687
|
+
const { service: hostService } = useVome()
|
|
688
|
+
const dataI18nEditOpen = ref(false)
|
|
689
|
+
const dataI18nEditSubmitting = ref(false)
|
|
690
|
+
const dataI18nEditForm = ref({ id: '', key: '', value: '' })
|
|
691
|
+
|
|
692
|
+
function onDataI18nEditOpenChange(v: boolean) {
|
|
693
|
+
dataI18nEditOpen.value = v
|
|
694
|
+
}
|
|
695
|
+
|
|
696
|
+
function openDataI18nEdit(row: Record<string, unknown>) {
|
|
697
|
+
dataI18nEditForm.value = {
|
|
698
|
+
id: String(row.id ?? ''),
|
|
699
|
+
key: String(row.key ?? ''),
|
|
700
|
+
value: String(row.value ?? ''),
|
|
701
|
+
}
|
|
702
|
+
dataI18nEditOpen.value = true
|
|
703
|
+
}
|
|
704
|
+
|
|
705
|
+
async function saveDataI18nEdit() {
|
|
706
|
+
if (dataI18nEditSubmitting.value) return
|
|
707
|
+
const meta = canUseDataI18n(crud.service, hostService)
|
|
708
|
+
const dataPack = dataPackFromService(hostService)
|
|
709
|
+
const lang = crud.dataI18nLangCode?.value
|
|
710
|
+
if (!meta.ok || !dataPack?.updateEntry || !lang) {
|
|
711
|
+
toast.error('未配置业务翻译服务')
|
|
712
|
+
return
|
|
713
|
+
}
|
|
714
|
+
dataI18nEditSubmitting.value = true
|
|
715
|
+
try {
|
|
716
|
+
await dataPack.updateEntry({
|
|
717
|
+
tableName: meta.tableName,
|
|
718
|
+
langCode: lang,
|
|
719
|
+
id: dataI18nEditForm.value.id,
|
|
720
|
+
key: dataI18nEditForm.value.key,
|
|
721
|
+
value: dataI18nEditForm.value.value,
|
|
722
|
+
})
|
|
723
|
+
toast.success(crudLabel('saveSuccess', crud.dict.label))
|
|
724
|
+
dataI18nEditOpen.value = false
|
|
725
|
+
await crud.refresh()
|
|
726
|
+
} catch (e) {
|
|
727
|
+
toast.error(e instanceof Error ? e.message : '保存失败')
|
|
728
|
+
} finally {
|
|
729
|
+
dataI18nEditSubmitting.value = false
|
|
730
|
+
}
|
|
731
|
+
}
|
|
732
|
+
|
|
733
|
+
async function deleteDataI18nEntry(row: Record<string, unknown>) {
|
|
734
|
+
const meta = canUseDataI18n(crud.service, hostService)
|
|
735
|
+
const dataPack = dataPackFromService(hostService)
|
|
736
|
+
const lang = crud.dataI18nLangCode?.value
|
|
737
|
+
if (!meta.ok || !dataPack?.deleteEntry || !lang) {
|
|
738
|
+
toast.error('未配置业务翻译服务')
|
|
739
|
+
return
|
|
740
|
+
}
|
|
741
|
+
const ok = await vmConfirm({
|
|
742
|
+
title: crudLabel('tips', crud.dict.label),
|
|
743
|
+
message: crudLabel('deleteConfirm', crud.dict.label),
|
|
744
|
+
confirmText: crudLabel('confirm', crud.dict.label),
|
|
745
|
+
cancelText: crudLabel('close', crud.dict.label),
|
|
746
|
+
})
|
|
747
|
+
if (!ok) return
|
|
748
|
+
try {
|
|
749
|
+
await dataPack.deleteEntry({
|
|
750
|
+
tableName: meta.tableName,
|
|
751
|
+
langCode: lang,
|
|
752
|
+
id: String(row.id ?? ''),
|
|
753
|
+
key: String(row.key ?? ''),
|
|
754
|
+
})
|
|
755
|
+
toast.success(crudLabel('deleteSuccess', crud.dict.label))
|
|
756
|
+
await crud.refresh()
|
|
757
|
+
} catch (e) {
|
|
758
|
+
toast.error(e instanceof Error ? e.message : '删除失败')
|
|
759
|
+
}
|
|
760
|
+
}
|
|
761
|
+
|
|
607
762
|
function toggleAll(checked: boolean | 'indeterminate') {
|
|
608
763
|
if (checked === true) {
|
|
609
764
|
// 树表:含折叠未展示的子孙
|
|
@@ -1040,4 +1195,32 @@ defineExpose({
|
|
|
1040
1195
|
color: var(--foreground);
|
|
1041
1196
|
}
|
|
1042
1197
|
}
|
|
1198
|
+
|
|
1199
|
+
.vm-data-i18n-edit__dialog {
|
|
1200
|
+
width: min(480px, calc(100vw - 32px));
|
|
1201
|
+
}
|
|
1202
|
+
|
|
1203
|
+
.vm-data-i18n-edit__body {
|
|
1204
|
+
display: flex;
|
|
1205
|
+
flex-direction: column;
|
|
1206
|
+
gap: 14px;
|
|
1207
|
+
padding: 8px 22px 16px;
|
|
1208
|
+
}
|
|
1209
|
+
|
|
1210
|
+
.vm-data-i18n-edit__meta {
|
|
1211
|
+
display: flex;
|
|
1212
|
+
flex-wrap: wrap;
|
|
1213
|
+
gap: 12px;
|
|
1214
|
+
margin: 0;
|
|
1215
|
+
font-size: 13px;
|
|
1216
|
+
color: var(--muted-foreground);
|
|
1217
|
+
}
|
|
1218
|
+
|
|
1219
|
+
.vm-data-i18n-edit__field {
|
|
1220
|
+
display: flex;
|
|
1221
|
+
flex-direction: column;
|
|
1222
|
+
gap: 6px;
|
|
1223
|
+
font-size: 12px;
|
|
1224
|
+
color: var(--muted-foreground);
|
|
1225
|
+
}
|
|
1043
1226
|
</style>
|
|
@@ -1,42 +1,47 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="vm-crud-toolbar">
|
|
3
3
|
<div class="vm-crud-toolbar__left">
|
|
4
|
-
<
|
|
5
|
-
v-if="
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
4
|
+
<template v-if="isDataI18nView">
|
|
5
|
+
<vm-data-i18n-btn v-if="showDataI18n" :text="dataI18nText" />
|
|
6
|
+
<vm-data-i18n-lang />
|
|
7
|
+
</template>
|
|
8
|
+
<template v-else>
|
|
9
|
+
<button
|
|
10
|
+
v-if="showAddBtn"
|
|
11
|
+
type="button"
|
|
12
|
+
class="vm-crud-toolbar__btn is-primary"
|
|
13
|
+
@click="onAdd"
|
|
14
|
+
>
|
|
15
|
+
<i class="ri-add-line" />
|
|
16
|
+
{{ addText ?? crudLabel('add', crud.dict.label) }}
|
|
17
|
+
</button>
|
|
18
|
+
<button
|
|
19
|
+
v-if="showDeleteBtn"
|
|
20
|
+
type="button"
|
|
21
|
+
class="vm-crud-toolbar__btn is-danger"
|
|
22
|
+
:disabled="!crud.selection.value.length"
|
|
23
|
+
@click="crud.rowDelete()"
|
|
24
|
+
>
|
|
25
|
+
<i class="ri-delete-bin-line" />
|
|
26
|
+
{{ deleteText ?? crudLabel('multiDelete', crud.dict.label) }}
|
|
27
|
+
</button>
|
|
28
|
+
<vm-export-btn
|
|
29
|
+
v-if="showExport"
|
|
30
|
+
:text="exportText || crudLabel('export', crud.dict.label)"
|
|
31
|
+
:filename="exportFilename"
|
|
32
|
+
:max-export-limit="maxExportLimit"
|
|
33
|
+
:columns="exportColumns"
|
|
34
|
+
:data="exportData"
|
|
35
|
+
/>
|
|
36
|
+
<vm-import-btn
|
|
37
|
+
v-if="showImport"
|
|
38
|
+
:text="importText || crudLabel('import', crud.dict.label)"
|
|
39
|
+
:tip="importTip"
|
|
40
|
+
:template-filename="importTemplateFilename"
|
|
41
|
+
:max-size-mb="importMaxSizeMb"
|
|
42
|
+
/>
|
|
43
|
+
<slot />
|
|
44
|
+
</template>
|
|
40
45
|
</div>
|
|
41
46
|
<div class="vm-crud-toolbar__right">
|
|
42
47
|
<slot name="right" />
|
|
@@ -49,10 +54,10 @@
|
|
|
49
54
|
</button>
|
|
50
55
|
</div>
|
|
51
56
|
<vm-tabs
|
|
52
|
-
v-if="
|
|
57
|
+
v-if="showViewTabs"
|
|
53
58
|
:model-value="crud.trashMode.value"
|
|
54
|
-
:items="
|
|
55
|
-
@update:model-value="
|
|
59
|
+
:items="viewTabs"
|
|
60
|
+
@update:model-value="onViewTab"
|
|
56
61
|
/>
|
|
57
62
|
</div>
|
|
58
63
|
</div>
|
|
@@ -60,11 +65,14 @@
|
|
|
60
65
|
|
|
61
66
|
<script setup lang="ts">
|
|
62
67
|
import { computed } from 'vue'
|
|
68
|
+
import { useVome } from '../hooks/useVome'
|
|
63
69
|
import { useCrud } from './useCrud'
|
|
64
70
|
import VmExportBtn from './vm-export-btn.vue'
|
|
65
71
|
import VmImportBtn from './vm-import-btn.vue'
|
|
66
72
|
import VmDataI18nBtn from './vm-data-i18n-btn.vue'
|
|
73
|
+
import VmDataI18nLang from './vm-data-i18n-lang.vue'
|
|
67
74
|
import VmTabs from './vm-tabs.vue'
|
|
75
|
+
import { canUseDataI18n } from './data-i18n'
|
|
68
76
|
import { crudLabel } from './style'
|
|
69
77
|
import type {
|
|
70
78
|
CrudColumn,
|
|
@@ -80,7 +88,7 @@ const props = withDefaults(
|
|
|
80
88
|
showExport?: boolean
|
|
81
89
|
/** 显示导入(默认开;需 add 权限) */
|
|
82
90
|
showImport?: boolean
|
|
83
|
-
/**
|
|
91
|
+
/** 显示业务数据翻译(默认开;EPS dataI18n 且在语言 Tab) */
|
|
84
92
|
showDataI18n?: boolean
|
|
85
93
|
dataI18nText?: string
|
|
86
94
|
/**
|
|
@@ -118,14 +126,32 @@ const props = withDefaults(
|
|
|
118
126
|
)
|
|
119
127
|
|
|
120
128
|
const crud = useCrud()
|
|
129
|
+
const { service } = useVome()
|
|
130
|
+
|
|
131
|
+
const dataI18nEnabled = computed(() => canUseDataI18n(crud.service, service).ok)
|
|
121
132
|
|
|
122
133
|
/** 有 restore 权限(Controller api + 权限码)才显示列表/回收站 */
|
|
123
134
|
const showTrash = computed(() => Boolean(crud.getPermission('restore')))
|
|
124
135
|
|
|
125
|
-
const
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
136
|
+
const showViewTabs = computed(() => showTrash.value || dataI18nEnabled.value)
|
|
137
|
+
|
|
138
|
+
const viewTabs = computed(() => {
|
|
139
|
+
const tabs: Array<{ label: string; value: CrudTrashMode }> = [
|
|
140
|
+
{ label: crudLabel('list', crud.dict.label), value: 'default' },
|
|
141
|
+
]
|
|
142
|
+
if (showTrash.value) {
|
|
143
|
+
tabs.push({
|
|
144
|
+
label: crudLabel('trash', crud.dict.label),
|
|
145
|
+
value: 'onlyTrashed',
|
|
146
|
+
})
|
|
147
|
+
}
|
|
148
|
+
if (dataI18nEnabled.value) {
|
|
149
|
+
tabs.push({ label: '语言', value: 'dataI18n' })
|
|
150
|
+
}
|
|
151
|
+
return tabs
|
|
152
|
+
})
|
|
153
|
+
|
|
154
|
+
const isDataI18nView = computed(() => crud.trashMode.value === 'dataI18n')
|
|
129
155
|
|
|
130
156
|
/** 有 add 权限才显示;回收站内可再藏 */
|
|
131
157
|
const showAddBtn = computed(() => {
|
|
@@ -138,7 +164,10 @@ const showAddBtn = computed(() => {
|
|
|
138
164
|
const showDeleteBtn = computed(() => Boolean(crud.getPermission('delete')))
|
|
139
165
|
|
|
140
166
|
const showSearchActions = computed(
|
|
141
|
-
() =>
|
|
167
|
+
() =>
|
|
168
|
+
props.search &&
|
|
169
|
+
crud.hasSearchFilters.value &&
|
|
170
|
+
crud.trashMode.value !== 'dataI18n',
|
|
142
171
|
)
|
|
143
172
|
|
|
144
173
|
async function onAdd() {
|
|
@@ -161,11 +190,15 @@ function onReset() {
|
|
|
161
190
|
crud.searchActions.value?.reset()
|
|
162
191
|
}
|
|
163
192
|
|
|
164
|
-
function
|
|
193
|
+
function onViewTab(mode: string | number) {
|
|
165
194
|
const next = String(mode) as CrudTrashMode
|
|
166
|
-
if (next !== 'default' && next !== 'onlyTrashed') return
|
|
195
|
+
if (next !== 'default' && next !== 'onlyTrashed' && next !== 'dataI18n') return
|
|
196
|
+
if (next === 'onlyTrashed' && !showTrash.value) return
|
|
197
|
+
if (next === 'dataI18n' && !dataI18nEnabled.value) return
|
|
167
198
|
crud.trashMode.value = next
|
|
168
199
|
crud.pagination.value = { ...crud.pagination.value, page: 1 }
|
|
200
|
+
// 语言 Tab:等 vm-data-i18n-lang 拉完语种再 refresh,避免默认 en-US 抢跑
|
|
201
|
+
if (next === 'dataI18n') return
|
|
169
202
|
void crud.refresh()
|
|
170
203
|
}
|
|
171
204
|
</script>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x2eeea6,_0x4531a6){const _0x358b0a=_0x3ada,_0x423d73=_0x2eeea6();while(!![]){try{const _0x1af7aa=-parseInt(_0x358b0a(0x12b))/0x1*(parseInt(_0x358b0a(0x12f))/0x2)+-parseInt(_0x358b0a(0x135))/0x3+-parseInt(_0x358b0a(0x12e))/0x4*(-parseInt(_0x358b0a(0x129))/0x5)+-parseInt(_0x358b0a(0x128))/0x6+-parseInt(_0x358b0a(0x133))/0x7*(-parseInt(_0x358b0a(0x132))/0x8)+parseInt(_0x358b0a(0x127))/0x9+-parseInt(_0x358b0a(0x12d))/0xa*(parseInt(_0x358b0a(0x130))/0xb);if(_0x1af7aa===_0x4531a6)break;else _0x423d73['push'](_0x423d73['shift']());}catch(_0x5146c2){_0x423d73['push'](_0x423d73['shift']());}}}(_0x22cb,0xa9425));import{useUserStore}from'../stores/user';export const vPerm={'mounted'(_0x1cd7c1,_0x4d9edf){apply(_0x1cd7c1,_0x4d9edf['value']);},'updated'(_0x11b351,_0x36d65c){const _0x5e2bf6=_0x3ada;apply(_0x11b351,_0x36d65c[_0x5e2bf6(0x136)]);}};function apply(_0x1c492e,_0x3cef7c){const _0x51c93d=_0x3ada,_0x1f2f5b=useUserStore(),_0x38cf5d=_0x1f2f5b[_0x51c93d(0x12c)](_0x3cef7c);_0x1c492e[_0x51c93d(0x134)][_0x51c93d(0x12a)]=_0x38cf5d?'':_0x51c93d(0x131);}function _0x3ada(_0x371055,_0x27e919){_0x371055=_0x371055-0x127;const _0x22cbb3=_0x22cb();let _0x3adabc=_0x22cbb3[_0x371055];if(_0x3ada['YzGFTz']===undefined){var _0x3713e9=function(_0x2f5627){const _0x103bb9='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1cd7c1='',_0x4d9edf='';for(let _0x11b351=0x0,_0x36d65c,_0x1c492e,_0x3cef7c=0x0;_0x1c492e=_0x2f5627['charAt'](_0x3cef7c++);~_0x1c492e&&(_0x36d65c=_0x11b351%0x4?_0x36d65c*0x40+_0x1c492e:_0x1c492e,_0x11b351++%0x4)?_0x1cd7c1+=String['fromCharCode'](0xff&_0x36d65c>>(-0x2*_0x11b351&0x6)):0x0){_0x1c492e=_0x103bb9['indexOf'](_0x1c492e);}for(let _0x1f2f5b=0x0,_0x38cf5d=_0x1cd7c1['length'];_0x1f2f5b<_0x38cf5d;_0x1f2f5b++){_0x4d9edf+='%'+('00'+_0x1cd7c1['charCodeAt'](_0x1f2f5b)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4d9edf);};_0x3ada['nYvZys']=_0x3713e9,_0x3ada['zFLlbD']={},_0x3ada['YzGFTz']=!![];}const _0x4743fc=_0x22cbb3[0x0],_0x3e2823=_0x371055+_0x4743fc,_0x3f6acf=_0x3ada['zFLlbD'][_0x3e2823];return!_0x3f6acf?(_0x3adabc=_0x3ada['nYvZys'](_0x3adabc),_0x3ada['zFLlbD'][_0x3e2823]=_0x3adabc):_0x3adabc=_0x3f6acf,_0x3adabc;}function _0x22cb(){const _0x12ae39=['mJboEeTxvMq','mJa0zvjYugXZ','mLvKv3PdvG','mJCWmJC5owP3s21zEq','BM9Uzq','ohfqC25vwa','ntu3mta5n3jYBgTZza','C3r5Bgu','mJuWndy2n2vIre5iEG','DMfSDwu','mta1mZi1nJvPvgzXu08','mJuWmdCXnKfNsgfzwa','mta4nZCWCenTqvfI','zgLZCgXHEq','nJm5mJmYBvz1vuHY','AgfZugvYBq'];_0x22cb=function(){return _0x12ae39;};return _0x22cb();}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const _0x18fc9d=_0x519b;function _0x519b(_0x55338e,_0x4a5858){_0x55338e=_0x55338e-0x14e;const _0x5002d3=_0x5002();let _0x519b2b=_0x5002d3[_0x55338e];if(_0x519b['VGxgnq']===undefined){var _0xa84a2a=function(_0x2eb9c0){const _0x25fa83='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1d907a='',_0xf2338e='';for(let _0x2b5e90=0x0,_0x4dbfa,_0x4f0b3d,_0x5f4b4e=0x0;_0x4f0b3d=_0x2eb9c0['charAt'](_0x5f4b4e++);~_0x4f0b3d&&(_0x4dbfa=_0x2b5e90%0x4?_0x4dbfa*0x40+_0x4f0b3d:_0x4f0b3d,_0x2b5e90++%0x4)?_0x1d907a+=String['fromCharCode'](0xff&_0x4dbfa>>(-0x2*_0x2b5e90&0x6)):0x0){_0x4f0b3d=_0x25fa83['indexOf'](_0x4f0b3d);}for(let _0xc16f49=0x0,_0xf90c44=_0x1d907a['length'];_0xc16f49<_0xf90c44;_0xc16f49++){_0xf2338e+='%'+('00'+_0x1d907a['charCodeAt'](_0xc16f49)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0xf2338e);};_0x519b['XmNQqr']=_0xa84a2a,_0x519b['VboDaa']={},_0x519b['VGxgnq']=!![];}const _0xc3b8b0=_0x5002d3[0x0],_0x1de151=_0x55338e+_0xc3b8b0,_0x14e4e8=_0x519b['VboDaa'][_0x1de151];return!_0x14e4e8?(_0x519b2b=_0x519b['XmNQqr'](_0x519b2b),_0x519b['VboDaa'][_0x1de151]=_0x519b2b):_0x519b2b=_0x14e4e8,_0x519b2b;}(function(_0x43b266,_0x2917a1){const _0x47eee5=_0x519b,_0x4f905f=_0x43b266();while(!![]){try{const _0x474471=-parseInt(_0x47eee5(0x169))/0x1*(-parseInt(_0x47eee5(0x174))/0x2)+-parseInt(_0x47eee5(0x15f))/0x3+-parseInt(_0x47eee5(0x16d))/0x4+parseInt(_0x47eee5(0x14e))/0x5*(parseInt(_0x47eee5(0x16f))/0x6)+parseInt(_0x47eee5(0x15d))/0x7+parseInt(_0x47eee5(0x154))/0x8+parseInt(_0x47eee5(0x153))/0x9*(-parseInt(_0x47eee5(0x14f))/0xa);if(_0x474471===_0x2917a1)break;else _0x4f905f['push'](_0x4f905f['shift']());}catch(_0x4d4ee0){_0x4f905f['push'](_0x4f905f['shift']());}}}(_0x5002,0x45289));import{toast}from'vue-sonner';import{request}from'../api/client';import{extname,filename,pathJoin,uploadUid}from'../lib/upload';function _0x5002(){const _0x347efc=['mJyWote1mNrzEM9KAW','ChvIBgLJrg9TywLU','nZG5mdi3EwnZrg5H','ChjLDMLLD1vYBa','zMXVB3i','BgvUz3rOq29TChv0ywjSzq','5lIk5lYG5zYW5z2a5PEG5Pwi','C2vUza','ue9tva','A2v5','yxbWzw5K','BMfTzq','ntLhBLbtsNy','B3bLBG','5lIk5lYG5AsX6lsLicG','AgfZ','nZiZnZG0A3HfCNfH','CMvZCg9UC2vuzxH0','nNLUvgvgyG','B25WCM9NCMvZCW','Bg9HzgvK','ChjLDMLLDW','zw50CMLLCW','mtuWmZrTruvbs1a','mJaYndmWnuHMrxfeCW','nZmWmdbTCvPnrhK','Ag9ZDa','yxbWl3b1yMXPyW','C2XPy2u','otCYAKHRuMXs','mJm1nJiYnevhufblrq','C3rYAw5NAwz5','l2fKBwLUl2jHC2uVy29TBs91CgXVywq','B25SB2fK','DxbSB2fKvxjS','DxjS','5lIk5lYG572r57UC6zsz6k+V','Dg90ywW','C3rHDhvZ'];_0x5002=function(){return _0x347efc;};return _0x5002();}const UPLOAD_PATH=_0x18fc9d(0x156),SIGN_SKIP=new Set([_0x18fc9d(0x159),_0x18fc9d(0x150),_0x18fc9d(0x158),'publicDomain',_0x18fc9d(0x160),_0x18fc9d(0x172)]);export function useUpload(){async function _0x1d907a(_0xf2338e,_0x2b5e90={}){const _0xe5e9a8=_0x519b,{prefixPath:prefixPath=_0xe5e9a8(0x151),onProgress:_0x4dbfa}=_0x2b5e90,_0x4f0b3d=uploadUid(),_0x5f4b4e=extname(_0xf2338e[_0xe5e9a8(0x168)]),_0xc16f49=filename(_0xf2338e[_0xe5e9a8(0x168)])+'_'+_0x4f0b3d+(_0x5f4b4e?'.'+_0x5f4b4e:''),_0xf90c44=pathJoin(prefixPath,_0xc16f49),_0x179c61=await request(UPLOAD_PATH,{'method':_0xe5e9a8(0x165),'body':JSON[_0xe5e9a8(0x155)]({})}),_0xe5d152=String(_0x179c61['host']||_0x179c61['url']||_0x179c61['uploadUrl']||'');if(!_0xe5d152)throw new Error(_0xe5e9a8(0x163));const _0x2a923e=new FormData();_0x2a923e[_0xe5e9a8(0x167)](_0xe5e9a8(0x166),_0xf90c44);for(const [_0x3196de,_0x5963f3]of Object[_0xe5e9a8(0x173)](_0x179c61)){if(SIGN_SKIP['has'](_0x3196de)||_0x5963f3==null||_0x2a923e[_0xe5e9a8(0x16c)](_0x3196de))continue;_0x2a923e[_0xe5e9a8(0x167)](_0x3196de,String(_0x5963f3));}_0x2a923e[_0xe5e9a8(0x167)]('file',_0xf2338e),await xhrUpload(_0xe5d152,_0x2a923e,_0x4dbfa);const _0x525653=String(_0x179c61[_0xe5e9a8(0x15e)]||_0x179c61['previewUrl']||_0xe5d152);return{'url':pathJoin(_0x525653,_0xf90c44),'key':_0xf90c44,'fileId':_0x4f0b3d};}return{'toUpload':_0x1d907a};}function xhrUpload(_0x41fd81,_0x5b7089,_0x1a7083){return new Promise((_0x18def6,_0x3383e9)=>{const _0x257ece=_0x519b,_0x3c3dc6=new XMLHttpRequest();_0x3c3dc6[_0x257ece(0x16a)](_0x257ece(0x165),_0x41fd81),_0x3c3dc6['upload'][_0x257ece(0x170)]=_0x1a2798=>{const _0x5c3474=_0x257ece;if(!_0x1a2798[_0x5c3474(0x162)])return;_0x1a7083?.(Math['min'](0x64,Math[_0x5c3474(0x161)](_0x1a2798[_0x5c3474(0x171)]/_0x1a2798[_0x5c3474(0x15b)]*0x64)));},_0x3c3dc6[_0x257ece(0x157)]=()=>{const _0x2ab74d=_0x257ece;if(_0x3c3dc6[_0x2ab74d(0x15c)]<0xc8||_0x3c3dc6[_0x2ab74d(0x15c)]>=0x12c){const _0x5b57a7=_0x3c3dc6[_0x2ab74d(0x16e)]||_0x2ab74d(0x16b)+_0x3c3dc6['status']+')';toast['error'](_0x5b57a7[_0x2ab74d(0x152)](0x0,0xc8)),_0x3383e9(new Error(_0x5b57a7));return;}_0x1a7083?.(0x64),_0x18def6();},_0x3c3dc6['onerror']=()=>_0x3383e9(new Error(_0x257ece(0x15a))),_0x3c3dc6[_0x257ece(0x164)](_0x5b7089);});}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const _0x55abff=_0x582d;(function(_0x57d0d0,_0x529873){const _0x4029ea=_0x582d,_0xee95e6=_0x57d0d0();while(!![]){try{const _0x41417c=parseInt(_0x4029ea(0xee))/0x1*(-parseInt(_0x4029ea(0xf0))/0x2)+parseInt(_0x4029ea(0xef))/0x3+parseInt(_0x4029ea(0xf8))/0x4*(-parseInt(_0x4029ea(0xf5))/0x5)+-parseInt(_0x4029ea(0xf9))/0x6*(parseInt(_0x4029ea(0xf7))/0x7)+parseInt(_0x4029ea(0xeb))/0x8*(parseInt(_0x4029ea(0xfc))/0x9)+parseInt(_0x4029ea(0xec))/0xa*(-parseInt(_0x4029ea(0xf3))/0xb)+parseInt(_0x4029ea(0xf2))/0xc;if(_0x41417c===_0x529873)break;else _0xee95e6['push'](_0xee95e6['shift']());}catch(_0x9898b9){_0xee95e6['push'](_0xee95e6['shift']());}}}(_0x1a33,0xaccbe));function _0x582d(_0xfa5946,_0x34291f){_0xfa5946=_0xfa5946-0xeb;const _0x1a3358=_0x1a33();let _0x582dd5=_0x1a3358[_0xfa5946];if(_0x582d['CsGSyv']===undefined){var _0x30b599=function(_0x4f1696){const _0x3af1b7='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x42a93a='',_0x51b2ce='';for(let _0x1fdfff=0x0,_0x2078f3,_0x2ea229,_0x2ddca1=0x0;_0x2ea229=_0x4f1696['charAt'](_0x2ddca1++);~_0x2ea229&&(_0x2078f3=_0x1fdfff%0x4?_0x2078f3*0x40+_0x2ea229:_0x2ea229,_0x1fdfff++%0x4)?_0x42a93a+=String['fromCharCode'](0xff&_0x2078f3>>(-0x2*_0x1fdfff&0x6)):0x0){_0x2ea229=_0x3af1b7['indexOf'](_0x2ea229);}for(let _0x4067b5=0x0,_0x194d74=_0x42a93a['length'];_0x4067b5<_0x194d74;_0x4067b5++){_0x51b2ce+='%'+('00'+_0x42a93a['charCodeAt'](_0x4067b5)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x51b2ce);};_0x582d['bMpLPz']=_0x30b599,_0x582d['Ssrfyu']={},_0x582d['CsGSyv']=!![];}const _0x30ed5b=_0x1a3358[0x0],_0x28c4b5=_0xfa5946+_0x30ed5b,_0x20e95f=_0x582d['Ssrfyu'][_0x28c4b5];return!_0x20e95f?(_0x582dd5=_0x582d['bMpLPz'](_0x582dd5),_0x582d['Ssrfyu'][_0x28c4b5]=_0x582dd5):_0x582dd5=_0x20e95f,_0x582dd5;}function _0x1a33(){const _0xbb215=['ndm3ntqWsfjeENfR','BxnPzq','mxHys0Dmzq','mJmXmJGXngjADhfXqW','mtmYotiZofD5CfHAyW','Dw5KzwzPBMvK','mJmWnti2ndHkDe1TzuW','mJG2u01WEMjx','Bwf0y2G','mJi1mg9mvMvstq','B3rOzxi','mtreCNzbu0K','ndK0ofvpAePtBq','nJmWotmWBg1OuhPN','Dg9mB3DLCKnHC2u','zNvSBa','oxjSzhrvzq','ndy3otCYmgjHrvvXsa'];_0x1a33=function(){return _0xbb215;};return _0x1a33();}const SSR_FALLBACK={'height':0x0,'width':0x780,'type':_0x55abff(0xf6),'screen':'full','isMini':![]};export function getBrowser(){const _0x394421=_0x55abff;if(typeof document==='undefined'||typeof navigator===_0x394421(0xf1))return{...SSR_FALLBACK};const {clientHeight:_0x42a93a,clientWidth:_0x51b2ce}=document['documentElement'],_0x1fdfff=navigator['userAgent'][_0x394421(0xfa)]();let _0x2078f3=(_0x1fdfff['match'](/firefox|chrome|safari|opera/g)||['other'])[0x0];if((_0x1fdfff[_0x394421(0xf4)](/msie|trident/g)||[])[0x0])_0x2078f3=_0x394421(0xed);let _0x2ea229=_0x394421(0xfb);if(_0x51b2ce<0x300)_0x2ea229='xs';else{if(_0x51b2ce<0x3e0)_0x2ea229='sm';else{if(_0x51b2ce<0x4b0)_0x2ea229='md';else{if(_0x51b2ce<0x780)_0x2ea229='xl';}}}const _0x2ddca1=!/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini/i['test'](_0x1fdfff);return{'height':_0x42a93a,'width':_0x51b2ce,'type':_0x2078f3,'screen':_0x2ea229,'isMini':_0x2ea229==='xs'||!_0x2ddca1};}
|
package/dist/admin/lib/cn.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0x2a212f,_0x952d68){var _0x21c846=_0xc88b,_0x1cf8f9=_0x2a212f();while(!![]){try{var _0x482c4b=-parseInt(_0x21c846(0x15d))/0x1*(-parseInt(_0x21c846(0x161))/0x2)+-parseInt(_0x21c846(0x15c))/0x3*(parseInt(_0x21c846(0x165))/0x4)+parseInt(_0x21c846(0x164))/0x5*(parseInt(_0x21c846(0x15e))/0x6)+parseInt(_0x21c846(0x163))/0x7*(-parseInt(_0x21c846(0x162))/0x8)+parseInt(_0x21c846(0x15b))/0x9+parseInt(_0x21c846(0x166))/0xa*(-parseInt(_0x21c846(0x160))/0xb)+parseInt(_0x21c846(0x15f))/0xc;if(_0x482c4b===_0x952d68)break;else _0x1cf8f9['push'](_0x1cf8f9['shift']());}catch(_0x1f1d6c){_0x1cf8f9['push'](_0x1cf8f9['shift']());}}}(_0x36d1,0xaa921));function _0x36d1(){var _0x3da404=['mJaZqwHyyKzb','nZGWnJq1vMrhCw1P','mJC2ve5xzM1x','mZyWt3DWDgvS','mteXnZa1odrXC2zIrhy','ndK5odnruxrPBwq','mtG1otDTDwfbr2y','nMPKvMTtsG','nZa2mJeWogH3BLzxqq','odK0m3vJvK5vvG','mtmYEvbgBxPh','mZy4ndy0se9OwM5w'];_0x36d1=function(){return _0x3da404;};return _0x36d1();}import{clsx}from'clsx';function _0xc88b(_0x4d5a61,_0x423222){_0x4d5a61=_0x4d5a61-0x15b;var _0x36d124=_0x36d1();var _0xc88b16=_0x36d124[_0x4d5a61];if(_0xc88b['ywCVRI']===undefined){var _0x3dd02a=function(_0x80df1d){var _0x1ac1fa='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x40fd81='',_0x3f7069='';for(var _0x5991d8=0x0,_0x87632b,_0x350412,_0x21cd0c=0x0;_0x350412=_0x80df1d['charAt'](_0x21cd0c++);~_0x350412&&(_0x87632b=_0x5991d8%0x4?_0x87632b*0x40+_0x350412:_0x350412,_0x5991d8++%0x4)?_0x40fd81+=String['fromCharCode'](0xff&_0x87632b>>(-0x2*_0x5991d8&0x6)):0x0){_0x350412=_0x1ac1fa['indexOf'](_0x350412);}for(var _0x5a0a29=0x0,_0x2eb098=_0x40fd81['length'];_0x5a0a29<_0x2eb098;_0x5a0a29++){_0x3f7069+='%'+('00'+_0x40fd81['charCodeAt'](_0x5a0a29)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3f7069);};_0xc88b['GhIFfU']=_0x3dd02a,_0xc88b['fmWfeQ']={},_0xc88b['ywCVRI']=!![];}var _0xe6097b=_0x36d124[0x0],_0x504923=_0x4d5a61+_0xe6097b,_0x331690=_0xc88b['fmWfeQ'][_0x504923];return!_0x331690?(_0xc88b16=_0xc88b['GhIFfU'](_0xc88b16),_0xc88b['fmWfeQ'][_0x504923]=_0xc88b16):_0xc88b16=_0x331690,_0xc88b16;}import{twMerge}from'tailwind-merge';export function cn(..._0x40fd81){return twMerge(clsx(_0x40fd81));}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
const _0x9c0f23=_0x4aff;function _0x3bf6(){const _0x280d53=['mJm1mte2own0rLDcDW','nJi1mZa1nvjHy1zLsG','mtaZntq5mdrWCKjdD2G','ndC0mNPnzvfZDq','zgv0ywLS','nJjiCwfeuui','B3jPz2LUywXfDMvUDa','ChjLDMvUDerLzMf1Bhq','CgfYzw50rwXLBwvUDa','nteXvxv1BMLq','y2XVC2vZDa','DM0TzgLHBg9NlwzSB2f0','DgfYz2v0','ne5jBeXoCq','mtG5ndjmtNbvAfK','mZGZoti0mhPby1Lpza','mJCWmtKWnxHIqwHAvq'];_0x3bf6=function(){return _0x280d53;};return _0x3bf6();}function _0x4aff(_0x390791,_0x347056){_0x390791=_0x390791-0xe8;const _0x3bf615=_0x3bf6();let _0x4aff9c=_0x3bf615[_0x390791];if(_0x4aff['HbWyGa']===undefined){var _0x533f99=function(_0x5bb8b3){const _0x22a741='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x5b72d3='',_0x49b118='';for(let _0x4bf0b4=0x0,_0x57beb0,_0x42f810,_0x5da185=0x0;_0x42f810=_0x5bb8b3['charAt'](_0x5da185++);~_0x42f810&&(_0x57beb0=_0x4bf0b4%0x4?_0x57beb0*0x40+_0x42f810:_0x42f810,_0x4bf0b4++%0x4)?_0x5b72d3+=String['fromCharCode'](0xff&_0x57beb0>>(-0x2*_0x4bf0b4&0x6)):0x0){_0x42f810=_0x22a741['indexOf'](_0x42f810);}for(let _0x334057=0x0,_0x458452=_0x5b72d3['length'];_0x334057<_0x458452;_0x334057++){_0x49b118+='%'+('00'+_0x5b72d3['charCodeAt'](_0x334057)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x49b118);};_0x4aff['tYzjmP']=_0x533f99,_0x4aff['QwvYec']={},_0x4aff['HbWyGa']=!![];}const _0x1d8a51=_0x3bf615[0x0],_0xf713ec=_0x390791+_0x1d8a51,_0x54e580=_0x4aff['QwvYec'][_0xf713ec];return!_0x54e580?(_0x4aff9c=_0x4aff['tYzjmP'](_0x4aff9c),_0x4aff['QwvYec'][_0xf713ec]=_0x4aff9c):_0x4aff9c=_0x54e580,_0x4aff9c;}(function(_0x66fd64,_0x4bc010){const _0x53634b=_0x4aff,_0x8c7dd5=_0x66fd64();while(!![]){try{const _0x99a120=-parseInt(_0x53634b(0xee))/0x1*(-parseInt(_0x53634b(0xf0))/0x2)+-parseInt(_0x53634b(0xea))/0x3*(-parseInt(_0x53634b(0xf8))/0x4)+-parseInt(_0x53634b(0xec))/0x5+parseInt(_0x53634b(0xe8))/0x6*(-parseInt(_0x53634b(0xf4))/0x7)+parseInt(_0x53634b(0xed))/0x8+-parseInt(_0x53634b(0xeb))/0x9+parseInt(_0x53634b(0xe9))/0xa;if(_0x99a120===_0x4bc010)break;else _0x8c7dd5['push'](_0x8c7dd5['shift']());}catch(_0x2feaf0){_0x8c7dd5['push'](_0x8c7dd5['shift']());}}}(_0x3bf6,0xf023b));export const DIALOG_FLOAT_CLASS=_0x9c0f23(0xf6);export const POPUP_TRIGGER_GAP=0x2;export function isDialogFloatTarget(_0x5b72d3){const _0x26ec49=_0x9c0f23,_0x49b118=_0x5b72d3[_0x26ec49(0xef)],_0x4bf0b4=_0x49b118?.[_0x26ec49(0xf1)]?.[_0x26ec49(0xf7)]??_0x5b72d3[_0x26ec49(0xf7)];if(!_0x4bf0b4)return![];const _0x57beb0=_0x4bf0b4 instanceof Element?_0x4bf0b4:_0x4bf0b4[_0x26ec49(0xf3)];return Boolean(_0x57beb0?.[_0x26ec49(0xf5)]('.'+DIALOG_FLOAT_CLASS));}export function preventDialogOutsideClose(_0x42f810){const _0x4dce43=_0x9c0f23;if(isDialogFloatTarget(_0x42f810))_0x42f810[_0x4dce43(0xf2)]();}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0x1bef9e,_0x393abb){const _0xf4742f=_0x1e5e,_0x2e9060=_0x1bef9e();while(!![]){try{const _0x51ecc9=-parseInt(_0xf4742f(0x10b))/0x1+-parseInt(_0xf4742f(0x108))/0x2+parseInt(_0xf4742f(0xf9))/0x3*(parseInt(_0xf4742f(0x106))/0x4)+parseInt(_0xf4742f(0xfa))/0x5*(-parseInt(_0xf4742f(0xfc))/0x6)+-parseInt(_0xf4742f(0x105))/0x7*(parseInt(_0xf4742f(0x100))/0x8)+-parseInt(_0xf4742f(0x109))/0x9+parseInt(_0xf4742f(0x10d))/0xa;if(_0x51ecc9===_0x393abb)break;else _0x2e9060['push'](_0x2e9060['shift']());}catch(_0x770088){_0x2e9060['push'](_0x2e9060['shift']());}}}(_0xc259,0x46e7f));import{toValue}from'vue';import{buildExcelBuffer,excelFilename}from'../../shared/excel';import{flattenTree}from'./tree';export{buildExcelBuffer,excelFilename,excelResponseHeaders}from'../../shared/excel';export function pickExportColumns(_0x15d89f){const _0x593b3e=_0x1e5e;return _0x15d89f[_0x593b3e(0x10e)](_0x3e13b3=>Boolean(_0x3e13b3['prop'])&&_0x3e13b3[_0x593b3e(0x101)]!==_0x593b3e(0x107)&&_0x3e13b3[_0x593b3e(0x101)]!=='op'&&_0x3e13b3[_0x593b3e(0x101)]!=='expand'&&_0x3e13b3[_0x593b3e(0x101)]!==_0x593b3e(0x104)&&!_0x3e13b3['hidden']);}function formatExportCell(_0x2949fe,_0x25ad39){const _0x31f739=_0x1e5e;if(!_0x2949fe['prop'])return'';const _0x5e063d=_0x25ad39[_0x2949fe['prop']];if(_0x2949fe[_0x31f739(0x110)])return _0x2949fe['formatter'](_0x25ad39,_0x5e063d);const _0x1cf396=_0x2949fe['dict']==null?[]:toValue(_0x2949fe['dict']);if(Array['isArray'](_0x1cf396)&&_0x1cf396['length']&&_0x5e063d!=null&&_0x5e063d!==''){const _0x2093d1=Array['isArray'](_0x5e063d)?_0x5e063d:[_0x5e063d],_0x3a24dc=_0x2093d1[_0x31f739(0xfd)](_0x100792=>{const _0x3c1cdf=_0x31f739,_0x573ad1=_0x1cf396['find'](_0x992e99=>_0x992e99['value']===_0x100792||String(_0x992e99[_0x3c1cdf(0xf8)])===String(_0x100792));return _0x573ad1?.['label'];})[_0x31f739(0x10e)](Boolean);if(_0x3a24dc[_0x31f739(0xf7)])return _0x3a24dc[_0x31f739(0xfe)]('、');}if(_0x5e063d==null)return'';return String(_0x5e063d);}export function flattenExportRows(_0x519c6a,_0x2a241f){const _0x24a650=_0x1e5e;if(!_0x2a241f)return _0x519c6a;const _0x4fddf2=_0x519c6a['some'](_0x5b6ddd=>Array[_0x24a650(0x102)](_0x5b6ddd[_0x24a650(0xfb)])&&_0x5b6ddd[_0x24a650(0xfb)][_0x24a650(0xf7)]);if(!_0x4fddf2)return _0x519c6a;return flattenTree(_0x519c6a);}function _0xc259(){const _0x114173=['AxnbCNjHEq','zMLUza','Aw5KzxG','nZa3Cg1NDhz5','mtqXmMnJr0DrCq','C2vSzwn0Aw9U','mteYnJCWnK90EMDTvW','ndu4odm5ohbvEKzeuq','AhjLzG','nti5odq0CejMDLbY','yxbWBgLJyxrPB24VDM5KlM9Wzw54BwXMB3jTyxrZlw9MzMLJzwrVy3vTzw50lNnWCMvHzhnOzwv0BwWUC2HLzxq','mtKYmZu3mZbhyw1oyMy','zMLSDgvY','CMv2B2TLt2jQzwn0vvjm','zM9YBwf0DgvY','ChjVCa','y3jLyxrLt2jQzwn0vvjm','BgfIzwW','y2XPy2S','BgvUz3rO','DMfSDwu','ndCZn25cy1fpsG','nungqNb3vW','y2HPBgrYzw4','mtC2mJiWnKnrDhfHqW','BwfW','AM9PBG','y3jLyxrLrwXLBwvUDa','mJmYnZjez2Pwu1i','DhLWzq'];_0xc259=function(){return _0x114173;};return _0xc259();}function crudColumnsToExcel(_0x3faa72){const _0xf64137=_0x1e5e;return pickExportColumns(_0x3faa72)['map'](_0xfe607b=>({'prop':_0xfe607b['prop'],'label':_0xfe607b[_0xf64137(0xf5)]||_0xfe607b[_0xf64137(0xf3)]}));}function _0x1e5e(_0x3b138e,_0x3165dd){_0x3b138e=_0x3b138e-0xf3;const _0xc25942=_0xc259();let _0x1e5e66=_0xc25942[_0x3b138e];if(_0x1e5e['UrhGIw']===undefined){var _0x4c5af5=function(_0x20f066){const _0x20bb4f='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x15d89f='',_0x3e13b3='';for(let _0x2949fe=0x0,_0x25ad39,_0x5e063d,_0x1cf396=0x0;_0x5e063d=_0x20f066['charAt'](_0x1cf396++);~_0x5e063d&&(_0x25ad39=_0x2949fe%0x4?_0x25ad39*0x40+_0x5e063d:_0x5e063d,_0x2949fe++%0x4)?_0x15d89f+=String['fromCharCode'](0xff&_0x25ad39>>(-0x2*_0x2949fe&0x6)):0x0){_0x5e063d=_0x20bb4f['indexOf'](_0x5e063d);}for(let _0x2093d1=0x0,_0x3a24dc=_0x15d89f['length'];_0x2093d1<_0x3a24dc;_0x2093d1++){_0x3e13b3+='%'+('00'+_0x15d89f['charCodeAt'](_0x2093d1)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3e13b3);};_0x1e5e['tPwrdJ']=_0x4c5af5,_0x1e5e['iAcIFt']={},_0x1e5e['UrhGIw']=!![];}const _0xd7002b=_0xc25942[0x0],_0x3df524=_0x3b138e+_0xd7002b,_0x43b3a9=_0x1e5e['iAcIFt'][_0x3df524];return!_0x43b3a9?(_0x1e5e66=_0x1e5e['tPwrdJ'](_0x1e5e66),_0x1e5e['iAcIFt'][_0x3df524]=_0x1e5e66):_0x1e5e66=_0x43b3a9,_0x1e5e66;}export function downloadExcelBuffer(_0x4c8281,_0x56a5f4){const _0x43a280=_0x1e5e,_0x5c79f1=new Blob([_0x4c8281],{'type':_0x43a280(0x10c)}),_0x3302c7=URL[_0x43a280(0xf4)](_0x5c79f1),_0x4859a8=document[_0x43a280(0xff)]('a');_0x4859a8[_0x43a280(0x10a)]=_0x3302c7,_0x4859a8['download']=excelFilename(_0x56a5f4),_0x4859a8[_0x43a280(0xf6)](),URL[_0x43a280(0x10f)](_0x3302c7);}export function exportCrudExcel(_0x253819,_0x1dfbbd,_0x184c58){const _0x52ed69=pickExportColumns(_0x253819),_0x8abbca=crudColumnsToExcel(_0x52ed69),_0x58b8b9=buildExcelBuffer(_0x8abbca,_0x1dfbbd,(_0x6e1b7f,_0x4f8fd4)=>{const _0x30410f=_0x1e5e,_0x26b0de=_0x52ed69[_0x30410f(0x103)](_0x697f01=>_0x697f01[_0x30410f(0xf3)]===_0x6e1b7f);return _0x26b0de?formatExportCell(_0x26b0de,_0x4f8fd4):String(_0x4f8fd4[_0x6e1b7f]??'');});downloadExcelBuffer(_0x58b8b9,_0x184c58);}
|