vome-core 0.0.25 → 0.0.28
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/vm-action-btn.vue +35 -8
- package/dist/admin/components/vm-card-grid.vue +3 -2
- package/dist/admin/components/vm-card-head.vue +45 -0
- package/dist/admin/components/vm-card-meta.vue +22 -0
- package/dist/admin/components/vm-card-title.vue +56 -0
- package/dist/admin/components/vm-card.vue +72 -2
- package/dist/admin/components/vm-clamp-text.vue +39 -0
- package/dist/admin/components/vm-icon-btn.vue +88 -0
- package/dist/admin/components/vm-inline-search.vue +60 -0
- package/dist/admin/components/vm-page-tabs.vue +93 -0
- package/dist/admin/components/vm-split-layout.vue +32 -15
- package/dist/admin/components/vm-thumb.vue +49 -0
- package/dist/admin/config/plugin-dev.js +1 -1
- package/dist/admin/crud/components/vm-kv-row.vue +51 -0
- package/dist/admin/crud/components/vm-preview-viewer.vue +39 -6
- package/dist/admin/crud/components/vm-tag-list.vue +43 -17
- package/dist/admin/crud/components/vm-toggle-switch.vue +84 -0
- package/dist/admin/crud/config.js +1 -1
- package/dist/admin/crud/confirm.js +1 -1
- package/dist/admin/crud/dict.js +1 -1
- package/dist/admin/crud/index.d.ts +2 -1
- package/dist/admin/crud/index.js +1 -1
- package/dist/admin/crud/key.js +1 -1
- package/dist/admin/crud/mitt.js +1 -1
- package/dist/admin/crud/plugins.js +1 -1
- package/dist/admin/crud/registry.js +1 -0
- 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/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/file-preview.js +1 -1
- package/dist/admin/lib/json.js +1 -1
- package/dist/admin/lib/menu.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/index.js +1 -1
- package/dist/server/index.js +1 -1
- package/dist/shared/excel.js +1 -1
- package/dist/shared/index.js +1 -1
- package/dist/shared/tree.js +1 -1
- package/package.json +1 -1
- package/dist/admin/crud/components/vm-audio.vue +0 -217
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div
|
|
2
|
+
<div
|
|
3
|
+
class="vm-split-layout"
|
|
4
|
+
:class="{ 'has-toolbar': Boolean($slots.toolbar) }"
|
|
5
|
+
:style="gridStyle"
|
|
6
|
+
>
|
|
3
7
|
<div v-if="$slots.toolbar" class="vm-split-layout__toolbar">
|
|
4
8
|
<slot name="toolbar" />
|
|
5
9
|
</div>
|
|
@@ -34,21 +38,24 @@ const gridStyle = computed(() => ({
|
|
|
34
38
|
<style lang="scss" scoped>
|
|
35
39
|
.vm-split-layout {
|
|
36
40
|
display: grid;
|
|
37
|
-
|
|
41
|
+
width: 100%;
|
|
42
|
+
flex: 1;
|
|
38
43
|
min-height: 0;
|
|
44
|
+
align-self: stretch;
|
|
39
45
|
overflow: hidden;
|
|
40
46
|
border-radius: var(--radius);
|
|
41
47
|
background: var(--card);
|
|
42
48
|
box-shadow: var(--shadow-soft);
|
|
43
|
-
grid-template-columns: var(--vm-split-aside) minmax(0, 1fr);
|
|
49
|
+
grid-template-columns: var(--vm-split-aside, 240px) minmax(0, 1fr);
|
|
44
50
|
grid-template-rows: minmax(0, 1fr);
|
|
51
|
+
}
|
|
45
52
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
}
|
|
53
|
+
.vm-split-layout.has-toolbar {
|
|
54
|
+
grid-template-rows: auto minmax(0, 1fr);
|
|
49
55
|
}
|
|
50
56
|
|
|
51
57
|
.vm-split-layout__toolbar {
|
|
58
|
+
grid-row: 1;
|
|
52
59
|
grid-column: 1 / -1;
|
|
53
60
|
display: flex;
|
|
54
61
|
flex-wrap: wrap;
|
|
@@ -60,26 +67,36 @@ const gridStyle = computed(() => ({
|
|
|
60
67
|
}
|
|
61
68
|
|
|
62
69
|
.vm-split-layout__aside {
|
|
63
|
-
grid-row:
|
|
70
|
+
grid-row: 1;
|
|
64
71
|
grid-column: 1;
|
|
65
72
|
min-height: 0;
|
|
66
73
|
overflow: hidden;
|
|
67
74
|
border-right: 1px solid color-mix(in srgb, var(--foreground) 8%, transparent);
|
|
68
75
|
}
|
|
69
76
|
|
|
70
|
-
.vm-split-
|
|
77
|
+
.has-toolbar .vm-split-layout__aside {
|
|
71
78
|
grid-row: 2;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.vm-split-layout__main {
|
|
82
|
+
grid-row: 1;
|
|
72
83
|
grid-column: 2;
|
|
73
|
-
display:
|
|
84
|
+
display: flex;
|
|
85
|
+
flex-direction: column;
|
|
74
86
|
min-width: 0;
|
|
75
87
|
min-height: 0;
|
|
76
88
|
overflow: hidden;
|
|
89
|
+
}
|
|
77
90
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
91
|
+
.has-toolbar .vm-split-layout__main {
|
|
92
|
+
grid-row: 2;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.vm-split-layout__main :deep(.vm-crud) {
|
|
96
|
+
flex: 1;
|
|
97
|
+
min-height: 0;
|
|
98
|
+
height: 100%;
|
|
99
|
+
border-radius: 0;
|
|
100
|
+
box-shadow: none;
|
|
84
101
|
}
|
|
85
102
|
</style>
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<span class="vm-thumb" :style="boxStyle">
|
|
3
|
+
<img v-if="src" :src="src" alt="" />
|
|
4
|
+
<i v-else-if="icon" :class="icon" aria-hidden="true" />
|
|
5
|
+
<slot v-else />
|
|
6
|
+
</span>
|
|
7
|
+
</template>
|
|
8
|
+
|
|
9
|
+
<script setup lang="ts">
|
|
10
|
+
import { computed } from 'vue'
|
|
11
|
+
|
|
12
|
+
defineOptions({ name: 'vm-thumb' })
|
|
13
|
+
|
|
14
|
+
const props = withDefaults(
|
|
15
|
+
defineProps<{
|
|
16
|
+
src?: string
|
|
17
|
+
icon?: string
|
|
18
|
+
size?: number
|
|
19
|
+
}>(),
|
|
20
|
+
{
|
|
21
|
+
size: 32,
|
|
22
|
+
},
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
const boxStyle = computed(() => ({
|
|
26
|
+
width: `${props.size}px`,
|
|
27
|
+
height: `${props.size}px`,
|
|
28
|
+
}))
|
|
29
|
+
</script>
|
|
30
|
+
|
|
31
|
+
<style lang="scss" scoped>
|
|
32
|
+
.vm-thumb {
|
|
33
|
+
display: inline-flex;
|
|
34
|
+
flex-shrink: 0;
|
|
35
|
+
align-items: center;
|
|
36
|
+
justify-content: center;
|
|
37
|
+
overflow: hidden;
|
|
38
|
+
border-radius: 8px;
|
|
39
|
+
background: color-mix(in srgb, var(--brand) 12%, var(--card));
|
|
40
|
+
color: var(--brand);
|
|
41
|
+
font-size: 16px;
|
|
42
|
+
|
|
43
|
+
img {
|
|
44
|
+
width: 100%;
|
|
45
|
+
height: 100%;
|
|
46
|
+
object-fit: cover;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
</style>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
const _0x4d8a0c=_0xbf00;(function(_0x43dc3f,_0x4ef46c){const _0x4ac54c=_0xbf00,_0x21eebd=_0x43dc3f();while(!![]){try{const _0x469312=-parseInt(_0x4ac54c(0x195))/0x1*(-parseInt(_0x4ac54c(0x1a0))/0x2)+-parseInt(_0x4ac54c(0x19a))/0x3+parseInt(_0x4ac54c(0x19d))/0x4+parseInt(_0x4ac54c(0x191))/0x5*(-parseInt(_0x4ac54c(0x193))/0x6)+parseInt(_0x4ac54c(0x1a2))/0x7*(-parseInt(_0x4ac54c(0x197))/0x8)+parseInt(_0x4ac54c(0x19f))/0x9+parseInt(_0x4ac54c(0x196))/0xa;if(_0x469312===_0x4ef46c)break;else _0x21eebd['push'](_0x21eebd['shift']());}catch(_0x193691){_0x21eebd['push'](_0x21eebd['shift']());}}}(_0x2073,0xb6500));function _0xbf00(_0xf3fefb,_0x2ba6dd){_0xf3fefb=_0xf3fefb-0x18e;const _0x20730b=_0x2073();let _0xbf0027=_0x20730b[_0xf3fefb];if(_0xbf00['nWOHXW']===undefined){var _0x4b1457=function(_0x360024){const _0x5d7f2d='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x4488f0='',_0x43005d='';for(let _0x2db3de=0x0,_0x4ba87f,_0xfb1d2a,_0x257e09=0x0;_0xfb1d2a=_0x360024['charAt'](_0x257e09++);~_0xfb1d2a&&(_0x4ba87f=_0x2db3de%0x4?_0x4ba87f*0x40+_0xfb1d2a:_0xfb1d2a,_0x2db3de++%0x4)?_0x4488f0+=String['fromCharCode'](0xff&_0x4ba87f>>(-0x2*_0x2db3de&0x6)):0x0){_0xfb1d2a=_0x5d7f2d['indexOf'](_0xfb1d2a);}for(let _0x323be6=0x0,_0x452be5=_0x4488f0['length'];_0x323be6<_0x452be5;_0x323be6++){_0x43005d+='%'+('00'+_0x4488f0['charCodeAt'](_0x323be6)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x43005d);};_0xbf00['jTCvat']=_0x4b1457,_0xbf00['LSePrW']={},_0xbf00['nWOHXW']=!![];}const _0x45881f=_0x20730b[0x0],_0x180749=_0xf3fefb+_0x45881f,_0x393b01=_0xbf00['LSePrW'][_0x180749];return!_0x393b01?(_0xbf0027=_0xbf00['jTCvat'](_0xbf0027),_0xbf00['LSePrW'][_0x180749]=_0xbf0027):_0xbf0027=_0x393b01,_0xbf0027;}function _0x2073(){const _0x10b6bb=['mZCYnJe3s0TQDNDx','Ahr0Chm6lY92B21LlMrLDI9WBhvNAw5Zl3vWBg9Hza','Ahr0Chm6lY9NAxrLzs5JB20Vwu9vuL9puKCVwu9vuL9srvbpl3jHDY9Tyxn0zxiVCgX1z2LUlwz1BgWUEMLW','Ahr0Chm6lY9NAxrLzs5JB20Vwu9vuL9puKCVwu9vuL9srvbpl3jHDY9Tyxn0zxiVCgX1z2LUlwjHy2TLBMqUEMLW','nJC3mtv0zhDOsfa','57QV5yMn56UV','ndq0sevPAezx','5yMn56UVicSG5zco56UV','mtuZtgP1tKLz','nty5nJK5mhbqywjRzW','ndHwC1njyve','57QV5zco56UV','6zkP5A2qic8G5PYn5yQH56UV5O+s5lU26isA5OMl5P6277YilNzVBwxVVjRKU4uGC2vYDMvY77Yj77Ym6ycc5zci5lIk5lYG44cb55+T5l+H44cb5PsV5lUy562j6io95yQB5OMP5Bgv44cc','mtG2nJe4rujlwgHx','Ahr0Chm6lY92B21LlMrLDI9KB2nZl3bSDwDPBG','zNvSBa','mZuWnduXnLfLD3bXBq','5zco5y+W5B6U5BQu55sO6isA5OMl5P6277YilNzVBwxVVjRLKkSGD2vIl++8IE+8Jos7Psb3DwPPzsdMJilOVB3NI6ZNQ4VLIy3NQ6/POBxPNAlJGii','nZe3nJi0zfjIBfzx','nZKWoenrs1P0uq','5A6m5Pw05lIA5yQH5QIH5z2x6isA5OMl5P6277YilNzVBwxVVjRLKkSGC2vYDMvYios4JIb3zwlVViNVViZMNkZLNldLVidLJ5hMIzpLJixLKi7LJ5hLUipJGii'];_0x2073=function(){return _0x10b6bb;};return _0x2073();}export const pluginDev={'docsUrl':_0x4d8a0c(0x19b),'uploadUrl':_0x4d8a0c(0x18e),'scaffolds':{'full':{'key':_0x4d8a0c(0x19c),'title':_0x4d8a0c(0x194),'desc':_0x4d8a0c(0x1a1),'downloadUrl':_0x4d8a0c(0x18f)},'backend':{'key':'backend','title':_0x4d8a0c(0x198),'desc':_0x4d8a0c(0x199),'downloadUrl':_0x4d8a0c(0x190)},'frontend':{'key':'frontend','title':_0x4d8a0c(0x192),'desc':_0x4d8a0c(0x19e),'downloadUrl':'https://gitee.com/YOUR_ORG/YOUR_REPO/raw/master/plugin-frontend.zip'}}};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<p class="vm-kv-row">
|
|
3
|
+
<span class="vm-kv-row__label">{{ label }}</span>
|
|
4
|
+
<span class="vm-kv-row__value" :title="titleText">{{ text }}</span>
|
|
5
|
+
</p>
|
|
6
|
+
</template>
|
|
7
|
+
|
|
8
|
+
<script setup lang="ts">
|
|
9
|
+
import { computed } from 'vue'
|
|
10
|
+
|
|
11
|
+
defineOptions({ name: 'vm-kv-row' })
|
|
12
|
+
|
|
13
|
+
const props = defineProps<{
|
|
14
|
+
label: string
|
|
15
|
+
modelValue?: unknown
|
|
16
|
+
title?: string
|
|
17
|
+
}>()
|
|
18
|
+
|
|
19
|
+
const text = computed(() => {
|
|
20
|
+
const v = props.modelValue
|
|
21
|
+
if (v == null || v === '') return '—'
|
|
22
|
+
return String(v)
|
|
23
|
+
})
|
|
24
|
+
|
|
25
|
+
const titleText = computed(() => props.title ?? (text.value === '—' ? undefined : text.value))
|
|
26
|
+
</script>
|
|
27
|
+
|
|
28
|
+
<style lang="scss" scoped>
|
|
29
|
+
.vm-kv-row {
|
|
30
|
+
display: flex;
|
|
31
|
+
gap: 8px;
|
|
32
|
+
margin: 0 0 8px;
|
|
33
|
+
min-width: 0;
|
|
34
|
+
font-size: 12px;
|
|
35
|
+
line-height: 1.45;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.vm-kv-row__label {
|
|
39
|
+
flex-shrink: 0;
|
|
40
|
+
color: var(--muted-foreground);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.vm-kv-row__value {
|
|
44
|
+
min-width: 0;
|
|
45
|
+
overflow: hidden;
|
|
46
|
+
color: var(--foreground);
|
|
47
|
+
font-weight: 500;
|
|
48
|
+
text-overflow: ellipsis;
|
|
49
|
+
white-space: nowrap;
|
|
50
|
+
}
|
|
51
|
+
</style>
|
|
@@ -45,10 +45,11 @@
|
|
|
45
45
|
type="button"
|
|
46
46
|
class="vm-preview-viewer__btn"
|
|
47
47
|
:disabled="!preview"
|
|
48
|
+
:title="preview ? triggerTitle : undefined"
|
|
48
49
|
@click="openViewer"
|
|
49
50
|
>
|
|
50
|
-
<i class="
|
|
51
|
-
<span>{{
|
|
51
|
+
<i :class="triggerIcon" aria-hidden="true" />
|
|
52
|
+
<span>{{ displayLabel }}</span>
|
|
52
53
|
</button>
|
|
53
54
|
</div>
|
|
54
55
|
<span v-else-if="!src" class="vm-preview-viewer is-empty">—</span>
|
|
@@ -132,9 +133,12 @@
|
|
|
132
133
|
|
|
133
134
|
<audio
|
|
134
135
|
v-else-if="kind === 'audio'"
|
|
136
|
+
ref="audioRef"
|
|
135
137
|
class="vm-file-preview-viewer__audio"
|
|
136
138
|
:src="src"
|
|
137
139
|
controls
|
|
140
|
+
autoplay
|
|
141
|
+
playsinline
|
|
138
142
|
/>
|
|
139
143
|
|
|
140
144
|
<iframe
|
|
@@ -214,8 +218,8 @@ const props = withDefaults(
|
|
|
214
218
|
mediaKind?: MediaPreviewKind
|
|
215
219
|
/** thumb | button | auto:触发方式 */
|
|
216
220
|
trigger?: 'thumb' | 'button' | 'auto'
|
|
217
|
-
/** image | video | auto
|
|
218
|
-
type?: 'image' | 'video' | 'auto'
|
|
221
|
+
/** image | video | audio | auto(缩略图列或类型覆盖) */
|
|
222
|
+
type?: 'image' | 'video' | 'audio' | 'auto'
|
|
219
223
|
size?: number | string
|
|
220
224
|
radius?: number | string
|
|
221
225
|
preview?: boolean
|
|
@@ -243,6 +247,7 @@ const excelHtml = ref('')
|
|
|
243
247
|
const scale = ref(1)
|
|
244
248
|
const rotate = ref(0)
|
|
245
249
|
const videoRef = ref<HTMLVideoElement | null>(null)
|
|
250
|
+
const audioRef = ref<HTMLAudioElement | null>(null)
|
|
246
251
|
|
|
247
252
|
const src = computed(() => {
|
|
248
253
|
const raw = props.embedded ? props.src : props.modelValue
|
|
@@ -252,12 +257,19 @@ const src = computed(() => {
|
|
|
252
257
|
|
|
253
258
|
const isVideoKind = computed(() => {
|
|
254
259
|
if (props.mediaKind === 'video') return true
|
|
255
|
-
if (props.mediaKind === 'image') return false
|
|
260
|
+
if (props.mediaKind === 'image' || props.mediaKind === 'audio') return false
|
|
256
261
|
if (props.type === 'video') return true
|
|
257
|
-
if (props.type === 'image') return false
|
|
262
|
+
if (props.type === 'image' || props.type === 'audio') return false
|
|
258
263
|
return VIDEO_EXT.test(src.value)
|
|
259
264
|
})
|
|
260
265
|
|
|
266
|
+
const isAudioKind = computed(() => {
|
|
267
|
+
if (props.mediaKind === 'audio') return true
|
|
268
|
+
if (props.type === 'audio') return true
|
|
269
|
+
if (props.mediaKind || props.type === 'image' || props.type === 'video') return false
|
|
270
|
+
return getMediaPreviewKind(props.fileName || src.value) === 'audio'
|
|
271
|
+
})
|
|
272
|
+
|
|
261
273
|
const showThumb = computed(() => {
|
|
262
274
|
if (props.embedded) return false
|
|
263
275
|
if (props.trigger === 'button') return false
|
|
@@ -279,11 +291,26 @@ const showButton = computed(() => {
|
|
|
279
291
|
|
|
280
292
|
const kind = computed((): MediaPreviewKind => {
|
|
281
293
|
if (props.mediaKind) return props.mediaKind
|
|
294
|
+
if (props.type === 'audio' || isAudioKind.value) return 'audio'
|
|
282
295
|
if (props.type === 'video' || isVideoKind.value) return 'video'
|
|
283
296
|
if (props.type === 'image') return 'image'
|
|
284
297
|
return getMediaPreviewKind(props.fileName || src.value)
|
|
285
298
|
})
|
|
286
299
|
|
|
300
|
+
const displayLabel = computed(() => {
|
|
301
|
+
if (props.label !== '查看') return props.label
|
|
302
|
+
if (kind.value === 'audio') return '播放'
|
|
303
|
+
return props.label
|
|
304
|
+
})
|
|
305
|
+
|
|
306
|
+
const triggerIcon = computed(() =>
|
|
307
|
+
kind.value === 'audio' ? 'ri-play-circle-line' : 'ri-file-search-line',
|
|
308
|
+
)
|
|
309
|
+
|
|
310
|
+
const triggerTitle = computed(() =>
|
|
311
|
+
kind.value === 'audio' ? '播放音频' : '查看文件',
|
|
312
|
+
)
|
|
313
|
+
|
|
287
314
|
const kindLabel = computed(() => KIND_LABEL[kind.value])
|
|
288
315
|
|
|
289
316
|
const displayName = computed(() =>
|
|
@@ -399,6 +426,11 @@ watch(viewerOpen, (open) => {
|
|
|
399
426
|
videoRef.value?.play?.().catch(() => undefined)
|
|
400
427
|
})
|
|
401
428
|
}
|
|
429
|
+
if (kind.value === 'audio') {
|
|
430
|
+
void nextTick(() => {
|
|
431
|
+
audioRef.value?.play?.().catch(() => undefined)
|
|
432
|
+
})
|
|
433
|
+
}
|
|
402
434
|
} else {
|
|
403
435
|
window.removeEventListener('keydown', onKeydown)
|
|
404
436
|
loading.value = false
|
|
@@ -406,6 +438,7 @@ watch(viewerOpen, (open) => {
|
|
|
406
438
|
textContent.value = ''
|
|
407
439
|
excelHtml.value = ''
|
|
408
440
|
videoRef.value?.pause?.()
|
|
441
|
+
audioRef.value?.pause?.()
|
|
409
442
|
}
|
|
410
443
|
})
|
|
411
444
|
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<span v-if="!
|
|
2
|
+
<span v-if="!resolved.length" class="vm-tag-list is-empty">—</span>
|
|
3
3
|
<span v-else class="vm-tag-list">
|
|
4
|
-
<span
|
|
5
|
-
|
|
4
|
+
<span
|
|
5
|
+
v-for="(item, i) in visible"
|
|
6
|
+
:key="`${item.label}-${i}`"
|
|
7
|
+
class="vm-tag-list__tag"
|
|
8
|
+
:class="item.variant ? `is-${item.variant}` : ''"
|
|
9
|
+
>
|
|
10
|
+
{{ item.label }}
|
|
6
11
|
</span>
|
|
7
12
|
<span v-if="overflow > 0" class="vm-tag-list__more">+{{ overflow }}</span>
|
|
8
13
|
</span>
|
|
@@ -13,9 +18,15 @@ import { computed } from 'vue'
|
|
|
13
18
|
|
|
14
19
|
defineOptions({ name: 'vm-tag-list' })
|
|
15
20
|
|
|
21
|
+
export type TagItem = {
|
|
22
|
+
label: string
|
|
23
|
+
variant?: 'brand' | 'outline' | 'muted'
|
|
24
|
+
}
|
|
25
|
+
|
|
16
26
|
const props = withDefaults(
|
|
17
27
|
defineProps<{
|
|
18
28
|
modelValue?: string | string[] | number[] | null
|
|
29
|
+
tags?: TagItem[]
|
|
19
30
|
separator?: string
|
|
20
31
|
max?: number
|
|
21
32
|
}>(),
|
|
@@ -25,24 +36,27 @@ const props = withDefaults(
|
|
|
25
36
|
},
|
|
26
37
|
)
|
|
27
38
|
|
|
28
|
-
const
|
|
39
|
+
const resolved = computed((): TagItem[] => {
|
|
40
|
+
if (props.tags?.length) return props.tags
|
|
29
41
|
const v = props.modelValue
|
|
30
|
-
if (v == null || v === '') return []
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
42
|
+
if (v == null || v === '') return []
|
|
43
|
+
const labels = Array.isArray(v)
|
|
44
|
+
? v.map((x) => String(x).trim()).filter(Boolean)
|
|
45
|
+
: String(v)
|
|
46
|
+
.split(props.separator)
|
|
47
|
+
.map((s) => s.trim())
|
|
48
|
+
.filter(Boolean)
|
|
49
|
+
return labels.map((label) => ({ label, variant: 'brand' as const }))
|
|
36
50
|
})
|
|
37
51
|
|
|
38
52
|
const visible = computed(() => {
|
|
39
|
-
if (!props.max || props.max <= 0) return
|
|
40
|
-
return
|
|
53
|
+
if (!props.max || props.max <= 0) return resolved.value
|
|
54
|
+
return resolved.value.slice(0, props.max)
|
|
41
55
|
})
|
|
42
56
|
|
|
43
57
|
const overflow = computed(() => {
|
|
44
58
|
if (!props.max || props.max <= 0) return 0
|
|
45
|
-
return Math.max(0,
|
|
59
|
+
return Math.max(0, resolved.value.length - props.max)
|
|
46
60
|
})
|
|
47
61
|
</script>
|
|
48
62
|
|
|
@@ -62,16 +76,28 @@ const overflow = computed(() => {
|
|
|
62
76
|
.vm-tag-list__tag {
|
|
63
77
|
display: inline-flex;
|
|
64
78
|
max-width: 100%;
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
79
|
+
height: 20px;
|
|
80
|
+
align-items: center;
|
|
81
|
+
overflow: hidden;
|
|
82
|
+
padding: 0 6px;
|
|
83
|
+
border-radius: 6px;
|
|
84
|
+
background: color-mix(in srgb, var(--brand) 14%, transparent);
|
|
68
85
|
color: var(--brand);
|
|
69
86
|
font-size: 11px;
|
|
70
87
|
font-weight: 600;
|
|
71
88
|
line-height: 1.35;
|
|
72
|
-
overflow: hidden;
|
|
73
89
|
text-overflow: ellipsis;
|
|
74
90
|
white-space: nowrap;
|
|
91
|
+
|
|
92
|
+
&.is-outline {
|
|
93
|
+
border: 1px solid color-mix(in srgb, var(--brand) 35%, transparent);
|
|
94
|
+
background: transparent;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
&.is-muted {
|
|
98
|
+
background: color-mix(in srgb, var(--foreground) 6%, transparent);
|
|
99
|
+
color: var(--muted-foreground);
|
|
100
|
+
}
|
|
75
101
|
}
|
|
76
102
|
|
|
77
103
|
.vm-tag-list__more {
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<button
|
|
3
|
+
type="button"
|
|
4
|
+
class="vm-toggle-switch"
|
|
5
|
+
:class="{ 'is-on': on, 'is-loading': loading }"
|
|
6
|
+
role="switch"
|
|
7
|
+
:aria-checked="on"
|
|
8
|
+
:disabled="disabled || loading"
|
|
9
|
+
@click="emit('update:modelValue', !on)"
|
|
10
|
+
>
|
|
11
|
+
<span class="vm-toggle-switch__knob" />
|
|
12
|
+
</button>
|
|
13
|
+
</template>
|
|
14
|
+
|
|
15
|
+
<script setup lang="ts">
|
|
16
|
+
import { computed } from 'vue'
|
|
17
|
+
|
|
18
|
+
defineOptions({ name: 'vm-toggle-switch' })
|
|
19
|
+
|
|
20
|
+
const props = withDefaults(
|
|
21
|
+
defineProps<{
|
|
22
|
+
modelValue?: boolean | number | null
|
|
23
|
+
activeValue?: number | boolean
|
|
24
|
+
loading?: boolean
|
|
25
|
+
disabled?: boolean
|
|
26
|
+
}>(),
|
|
27
|
+
{
|
|
28
|
+
activeValue: 1,
|
|
29
|
+
loading: false,
|
|
30
|
+
disabled: false,
|
|
31
|
+
},
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
const emit = defineEmits<{
|
|
35
|
+
'update:modelValue': [v: boolean]
|
|
36
|
+
}>()
|
|
37
|
+
|
|
38
|
+
const on = computed(() => {
|
|
39
|
+
const v = props.modelValue
|
|
40
|
+
if (typeof props.activeValue === 'boolean') return Boolean(v)
|
|
41
|
+
return Number(v) === Number(props.activeValue)
|
|
42
|
+
})
|
|
43
|
+
</script>
|
|
44
|
+
|
|
45
|
+
<style lang="scss" scoped>
|
|
46
|
+
.vm-toggle-switch {
|
|
47
|
+
position: relative;
|
|
48
|
+
width: 42px;
|
|
49
|
+
height: 24px;
|
|
50
|
+
flex-shrink: 0;
|
|
51
|
+
padding: 0;
|
|
52
|
+
border: 0;
|
|
53
|
+
border-radius: 999px;
|
|
54
|
+
background: color-mix(in srgb, var(--foreground) 18%, transparent);
|
|
55
|
+
cursor: pointer;
|
|
56
|
+
transition: background 0.15s ease;
|
|
57
|
+
|
|
58
|
+
&.is-on {
|
|
59
|
+
background: var(--brand);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
&.is-loading,
|
|
63
|
+
&:disabled {
|
|
64
|
+
opacity: 0.6;
|
|
65
|
+
cursor: not-allowed;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.vm-toggle-switch__knob {
|
|
70
|
+
position: absolute;
|
|
71
|
+
top: 3px;
|
|
72
|
+
left: 3px;
|
|
73
|
+
width: 18px;
|
|
74
|
+
height: 18px;
|
|
75
|
+
border-radius: 50%;
|
|
76
|
+
background: #fff;
|
|
77
|
+
box-shadow: 0 1px 3px rgb(0 0 0 / 20%);
|
|
78
|
+
transition: transform 0.15s ease;
|
|
79
|
+
|
|
80
|
+
.is-on > & {
|
|
81
|
+
transform: translateX(18px);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
</style>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x537ba6,_0x2c603e){const _0x21dd81=_0x5da0,_0x1299c9=_0x537ba6();while(!![]){try{const _0x11803e=-parseInt(_0x21dd81(0xcb))/0x1+-parseInt(_0x21dd81(0xc9))/0x2*(-parseInt(_0x21dd81(0xd3))/0x3)+-parseInt(_0x21dd81(0xc4))/0x4+parseInt(_0x21dd81(0xd1))/0x5*(parseInt(_0x21dd81(0xd2))/0x6)+parseInt(_0x21dd81(0xc7))/0x7+-parseInt(_0x21dd81(0xc8))/0x8+parseInt(_0x21dd81(0xcd))/0x9*(parseInt(_0x21dd81(0xd0))/0xa);if(_0x11803e===_0x2c603e)break;else _0x1299c9['push'](_0x1299c9['shift']());}catch(_0x18b70a){_0x1299c9['push'](_0x1299c9['shift']());}}}(_0x5ad3,0xb97b7));import{getCrudConfig}from'./style';import{CRUD_LABELS,DEFAULT_CRUD_DICT}from'./dict';export{CRUD_LABELS,DEFAULT_CRUD_DICT};export const DEFAULT_CRUD_PERMISSION={'page':!![],'list':!![],'info':!![],'add':!![],'delete':!![],'update':!![]};export function mergeDict(_0x4d3d81){const _0x4355e8=_0x5da0,_0x280035=getCrudConfig()[_0x4355e8(0xcc)];if(!_0x4d3d81)return{..._0x280035,'label':{..._0x280035['label']}};return{..._0x280035,..._0x4d3d81,'api':{..._0x280035[_0x4355e8(0xc6)],..._0x4d3d81[_0x4355e8(0xc6)]},'pagination':{..._0x280035['pagination'],..._0x4d3d81[_0x4355e8(0xcf)]},'search':{..._0x280035[_0x4355e8(0xce)],..._0x4d3d81[_0x4355e8(0xce)]},'sort':{..._0x280035[_0x4355e8(0xc5)],..._0x4d3d81[_0x4355e8(0xc5)]},'label':{..._0x280035[_0x4355e8(0xca)],..._0x4d3d81[_0x4355e8(0xca)]}};}function _0x5ad3(){const _0xef24b3=['mJiYmdy1mLHzzeTIBG','C29YDa','yxbP','ndaWndqWnM5MsgXxDa','odqXmtG1nKLfrhrMvq','mMP2z1HUsG','BgfIzwW','mtm0mZq1nK9IzuH2uq','zgLJDa','mtm0nJy5nZLZy0PRAva','C2vHCMnO','CgfNAw5HDgLVBG','mtbPzuvis1a','mJeWnvjmCMLJuq','mta2odzMtxjuwMy','mJy3ndKZofHIEe1jrG'];_0x5ad3=function(){return _0xef24b3;};return _0x5ad3();}function _0x5da0(_0x34e202,_0x282e5){_0x34e202=_0x34e202-0xc4;const _0x5ad3ff=_0x5ad3();let _0x5da0cf=_0x5ad3ff[_0x34e202];if(_0x5da0['KnlhfG']===undefined){var _0x3f4a5c=function(_0x2b9eeb){const _0xe476dd='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x4d3d81='',_0x280035='';for(let _0x312840=0x0,_0x2910fc,_0x45e91a,_0x5885a3=0x0;_0x45e91a=_0x2b9eeb['charAt'](_0x5885a3++);~_0x45e91a&&(_0x2910fc=_0x312840%0x4?_0x2910fc*0x40+_0x45e91a:_0x45e91a,_0x312840++%0x4)?_0x4d3d81+=String['fromCharCode'](0xff&_0x2910fc>>(-0x2*_0x312840&0x6)):0x0){_0x45e91a=_0xe476dd['indexOf'](_0x45e91a);}for(let _0x4baaca=0x0,_0x1e44aa=_0x4d3d81['length'];_0x4baaca<_0x1e44aa;_0x4baaca++){_0x280035+='%'+('00'+_0x4d3d81['charCodeAt'](_0x4baaca)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x280035);};_0x5da0['GUGfXJ']=_0x3f4a5c,_0x5da0['kvinly']={},_0x5da0['KnlhfG']=!![];}const _0x2190e7=_0x5ad3ff[0x0],_0x1ff780=_0x34e202+_0x2190e7,_0x2ade1c=_0x5da0['kvinly'][_0x1ff780];return!_0x2ade1c?(_0x5da0cf=_0x5da0['GUGfXJ'](_0x5da0cf),_0x5da0['kvinly'][_0x1ff780]=_0x5da0cf):_0x5da0cf=_0x2ade1c,_0x5da0cf;}export function mergePermission(_0x312840,_0x2910fc){return{...DEFAULT_CRUD_PERMISSION,..._0x2910fc,..._0x312840};}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const _0x192594=_0xbde4;function _0x4936(){const _0x190399=['DM0Ty29UzMLYBv9FyM9KEq','Dw5KzwzPBMvK','C3r5Bgu','C3rYAw5N','DgL0Bgu','Dw5TB3vUDa','mtCXnJe5ogTLvwzirW','z2v0rwXLBwvUDej5swq','y3jLyxrLrwXLBwvUDa','zgL2','DM0Ty29UzMLYBv9FzM9VDa','ntG1odG4qLryruzf','mxnABMzZsG','mty0ntm5nJborNvvqMu','BwvZC2fNzq','DM0Ty29UzMLYBs1ZDhLSzq','DMfSDwu','yNv0Dg9U','cI52Bs1JB25MAxjTw2rHDgeTC2XVDd0NzgLHBg9NlwnVBNrLBNqNxsb7cIaGD2LKDgG6ig1PBIG0mdbWEcWGy2fSyYGXmdb2DYaTidmYChGPksaHAw1WB3j0yw50oWOGig1HEc13Awr0AdOGBwLUkdqWmhb4lcbJywXJkdeWmhz3ic0GmZjWEcKPicfPBxbVCNrHBNq7cIaGz2fWoIaWicfPBxbVCNrHBNq7cIaGCgfKzgLUzZOGmcaHAw1WB3j0yw50oWOGigjVCMrLCJOGBM9UzsaHAw1WB3j0yw50oWOGigjVCMrLCI1YywrPDxm6idi0ChGGiwLTCg9YDgfUDdSkicbIB3GTC2HHzg93oIb2yxiOls1ZAgfKB3CTC29MDcKGiwLTCg9YDgfUDdSkFqOUDM0Ty29UzMLYBv9FAgvHzcb7ihbHzgrPBMC6ide4ChGGmJjWEcaWoYbIB3jKzxiTyM90Dg9ToIbUB25LoYb9cI52Bs1JB25MAxjTx190AxrSzsb7igzVBNqTC2L6ztOGmtzWEdSGzM9UDc13zwLNAhq6idy1mdSGFqOUDM0Ty29UzMLYBv9FyM9KEsb7cIaGCgfKzgLUzZOGmtjWEcaYmNb4idHWEdSkicbJB2XVCJOGDMfYkc0TzM9YzwDYB3vUzcK7cIaGzM9UDc1ZAxPLoIaXnhb4oWOGigXPBMuTAgvPz2H0oIaXlJy7cN0klNzTlwnVBMzPCM1Fx2zVB3qGEWOGigrPC3bSyxK6igzSzxG7cIaGANvZDgLMEs1JB250zw50oIbMBgv4lwvUzdSkicbNyxa6idHWEdSkicbWywrKAw5NoIaXnhb4idiYChG7cN0klNzTlwnVBMzPCM1Fx2j0BIb7cIaGAgvPz2H0oIaZnNb4oWOGihbHzgrPBMC6idaGmtzWEdSkicbIB3jKzxi6ig5VBMu7cIaGyM9YzgvYlxjHzgL1CZOGmtjWEdSkicbMB250lxnPEMu6ideZChG7cIaGzM9UDc13zwLNAhq6idyWmdSkicbJDxjZB3i6ihbVAw50zxi7cN0klNzTlwnVBMzPCM1Fx2j0BI5PCY1WCMLTyxj5ihSGyMfJA2DYB3vUzdOGDMfYkc0TyNjHBMqPoYbJB2XVCJOGi2zMzJSGFqOUDM0Ty29UzMLYBv9FyNrUlMLZlxbYAw1HCNK6Ag92zxiGEYbIywnRz3jVDw5KoIb2yxiOls1ICMfUzc1KzwvWktSGFqOUDM0Ty29UzMLYBv9FyNrUlMLZlwDOB3n0ihSGyMfJA2DYB3vUzdOGDMfYkc0TBxv0zwqPoYbJB2XVCJOGDMfYkc0TzM9YzwDYB3vUzcK7ih0k','y2fUy2vSvgv4Da','CMvTB3zL','mJK1nZmWnefSq1nOzq','mtaYzKXHuhbf','mJfiq01bD3C','DM0Ty29UzMLYBv9FAgvHza','mtm0nJu0nJDXyvDgvfi','ota3me5hA0jyBG','nJe5mZq4ohzvte5nCG','yxbWzw5Kq2HPBgq','yM9KEq','AgvHza','Dgv4DenVBNrLBNq'];_0x4936=function(){return _0x190399;};return _0x4936();}function _0xbde4(_0x181a81,_0x133418){_0x181a81=_0x181a81-0x126;const _0x49361a=_0x4936();let _0xbde4e1=_0x49361a[_0x181a81];if(_0xbde4['PfotUO']===undefined){var _0x6656b0=function(_0x1989fe){const _0x11e560='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x405ff4='',_0x28050c='';for(let _0x275bab=0x0,_0x1806e6,_0x4db980,_0x197baa=0x0;_0x4db980=_0x1989fe['charAt'](_0x197baa++);~_0x4db980&&(_0x1806e6=_0x275bab%0x4?_0x1806e6*0x40+_0x4db980:_0x4db980,_0x275bab++%0x4)?_0x405ff4+=String['fromCharCode'](0xff&_0x1806e6>>(-0x2*_0x275bab&0x6)):0x0){_0x4db980=_0x11e560['indexOf'](_0x4db980);}for(let _0xb5e900=0x0,_0x534688=_0x405ff4['length'];_0xb5e900<_0x534688;_0xb5e900++){_0x28050c+='%'+('00'+_0x405ff4['charCodeAt'](_0xb5e900)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x28050c);};_0xbde4['UvncLi']=_0x6656b0,_0xbde4['MsHUbC']={},_0xbde4['PfotUO']=!![];}const _0x40ea2a=_0x49361a[0x0],_0x5bc264=_0x181a81+_0x40ea2a,_0x21e0a3=_0xbde4['MsHUbC'][_0x5bc264];return!_0x21e0a3?(_0xbde4e1=_0xbde4['UvncLi'](_0xbde4e1),_0xbde4['MsHUbC'][_0x5bc264]=_0xbde4e1):_0xbde4e1=_0x21e0a3,_0xbde4e1;}(function(_0x1b2c1d,_0xa3ca27){const _0x49bc02=_0xbde4,_0x3e3270=_0x1b2c1d();while(!![]){try{const _0x297680=-parseInt(_0x49bc02(0x139))/0x1*(-parseInt(_0x49bc02(0x142))/0x2)+parseInt(_0x49bc02(0x133))/0x3+-parseInt(_0x49bc02(0x128))/0x4+-parseInt(_0x49bc02(0x127))/0x5*(-parseInt(_0x49bc02(0x143))/0x6)+-parseInt(_0x49bc02(0x144))/0x7*(-parseInt(_0x49bc02(0x138))/0x8)+-parseInt(_0x49bc02(0x126))/0x9+parseInt(_0x49bc02(0x13a))/0xa;if(_0x297680===_0xa3ca27)break;else _0x3e3270['push'](_0x3e3270['shift']());}catch(_0x4f0eb2){_0x3e3270['push'](_0x3e3270['shift']());}}}(_0x4936,0xdc3ed));import{createApp,h,ref}from'vue';import{Dialog,DialogContent,DialogFooter,DialogHeader,DialogTitle}from'#vome-host/components/ui/dialog';export function vmConfirm(_0x405ff4){const _0x237309=_0xbde4,_0x28050c=typeof _0x405ff4===_0x237309(0x130)?{'message':_0x405ff4}:_0x405ff4;return new Promise(_0x275bab=>{const _0xd8837e=_0x237309,_0x1806e6=ref(!![]),_0x4db980=document[_0xd8837e(0x135)](_0xd8837e(0x136));document[_0xd8837e(0x12a)][_0xd8837e(0x129)](_0x4db980);const _0x197baa=createApp({'setup'(){const _0x399179=_0xd8837e;function _0xb5e900(_0x534688){const _0x1623eb=_0xbde4;_0x1806e6[_0x1623eb(0x13d)]=![],_0x275bab(_0x534688),setTimeout(()=>{const _0x2b6e73=_0x1623eb;_0x197baa[_0x2b6e73(0x132)](),_0x4db980[_0x2b6e73(0x141)]();},0xc8);}return()=>h(Dialog,{'open':_0x1806e6['value'],'onUpdate:open':_0xa6688f=>{if(!_0xa6688f)_0xb5e900(![]);}},{'default':()=>h(DialogContent,{'class':'vm-confirm','showCloseButton':![]},{'default':()=>[h(DialogHeader,{'class':_0x399179(0x145)},()=>h(DialogTitle,{'class':'vm-confirm__title'},()=>_0x28050c[_0x399179(0x131)]||'提示')),h(_0x399179(0x136),{'class':_0x399179(0x12d)},_0x28050c[_0x399179(0x13b)]),h(DialogFooter,{'class':_0x399179(0x137)},()=>[h(_0x399179(0x13e),{'type':_0x399179(0x13e),'class':'vm-confirm__btn\x20is-ghost','onClick':()=>_0xb5e900(![])},_0x28050c[_0x399179(0x140)]||'取消'),h(_0x399179(0x13e),{'type':_0x399179(0x13e),'class':'vm-confirm__btn\x20is-primary','onClick':()=>_0xb5e900(!![])},_0x28050c['confirmText']||'确定')])]})});}});_0x197baa['mount'](_0x4db980);});}if(typeof document!==_0x192594(0x12e)&&!document[_0x192594(0x134)](_0x192594(0x13c))){const style=document[_0x192594(0x135)](_0x192594(0x12f));style['id']=_0x192594(0x13c),style[_0x192594(0x12c)]=_0x192594(0x13f),document[_0x192594(0x12b)]['appendChild'](style);}
|
package/dist/admin/crud/dict.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const _0x48d37f=_0x3352;(function(_0x34f160,_0x489ada){const _0x4e78de=_0x3352,_0x215354=_0x34f160();while(!![]){try{const _0x189368=parseInt(_0x4e78de(0x208))/0x1+-parseInt(_0x4e78de(0x1f0))/0x2+-parseInt(_0x4e78de(0x1f3))/0x3+parseInt(_0x4e78de(0x1ef))/0x4*(parseInt(_0x4e78de(0x1f1))/0x5)+-parseInt(_0x4e78de(0x205))/0x6*(-parseInt(_0x4e78de(0x201))/0x7)+-parseInt(_0x4e78de(0x1f9))/0x8+-parseInt(_0x4e78de(0x1f4))/0x9*(-parseInt(_0x4e78de(0x206))/0xa);if(_0x189368===_0x489ada)break;else _0x215354['push'](_0x215354['shift']());}catch(_0x30bf96){_0x215354['push'](_0x215354['shift']());}}}(_0x3d2f,0x87d83));function _0x3352(_0x3a7f34,_0x5a6036){_0x3a7f34=_0x3a7f34-0x1ef;const _0x3d2fdf=_0x3d2f();let _0x3352f5=_0x3d2fdf[_0x3a7f34];if(_0x3352['FLmWKm']===undefined){var _0x54707a=function(_0x5cfed6){const _0x26adaf='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x305e5e='',_0x3ae1fd='';for(let _0x153c65=0x0,_0x16128f,_0x5362b3,_0x5837a6=0x0;_0x5362b3=_0x5cfed6['charAt'](_0x5837a6++);~_0x5362b3&&(_0x16128f=_0x153c65%0x4?_0x16128f*0x40+_0x5362b3:_0x5362b3,_0x153c65++%0x4)?_0x305e5e+=String['fromCharCode'](0xff&_0x16128f>>(-0x2*_0x153c65&0x6)):0x0){_0x5362b3=_0x26adaf['indexOf'](_0x5362b3);}for(let _0xaaf7e1=0x0,_0xdf413c=_0x305e5e['length'];_0xaaf7e1<_0xdf413c;_0xaaf7e1++){_0x3ae1fd+='%'+('00'+_0x305e5e['charCodeAt'](_0xaaf7e1)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3ae1fd);};_0x3352['KCosPr']=_0x54707a,_0x3352['gvEESn']={},_0x3352['FLmWKm']=!![];}const _0x2a71cc=_0x3d2fdf[0x0],_0x4f2326=_0x3a7f34+_0x2a71cc,_0x8dce44=_0x3352['gvEESn'][_0x4f2326];return!_0x8dce44?(_0x3352f5=_0x3352['KCosPr'](_0x3352f5),_0x3352['gvEESn'][_0x4f2326]=_0x3352f5):_0x3352f5=_0x8dce44,_0x3352f5;}export const CRUD_LABELS={'op':'操作','add':'新增','delete':'删除','multiDelete':'删除','export':'导出','update':'编辑','refresh':'刷新','info':'详情','search':'搜索','reset':'重置','clear':'清空','save':'保存','close':'取消','confirm':'确定','advSearch':_0x48d37f(0x203),'searchKey':_0x48d37f(0x1fb),'placeholder':'请输入','tips':'提示','saveSuccess':_0x48d37f(0x1fe),'deleteSuccess':'删除成功','deleteConfirm':_0x48d37f(0x200),'forceDeleteConfirm':'此操作将永久删除选中数据,是否继续?','empty':_0x48d37f(0x204),'desc':'降序','asc':'升序','select':'选择','deselect':_0x48d37f(0x202),'seeMore':_0x48d37f(0x1f8),'hideContent':_0x48d37f(0x1f5),'nonEmpty':_0x48d37f(0x1fd)};export const DEFAULT_CRUD_DICT={'primaryId':'id','api':{'list':_0x48d37f(0x1fa),'add':'add','update':'update','delete':_0x48d37f(0x1f2),'info':_0x48d37f(0x1ff),'page':_0x48d37f(0x1f6)},'pagination':{'page':_0x48d37f(0x1f6),'size':'size'},'search':{'keyWord':'keyWord','query':_0x48d37f(0x207)},'sort':{'prop':_0x48d37f(0x1f7),'order':_0x48d37f(0x1fc)},'label':CRUD_LABELS};function _0x3d2f(){const _0x2e5223=['5lIn6io95lI656M6','5l+D5A2y5OIq5yQF','Aw5MBW','5Q2K5Pon5l2C5Bcg5PwW5O2U5Qch6k6W5lI65BEY5yIG6zMK77Ym5PIV5zcM57UN57UT77YF','n2v0zfLNra','5y+w5RAi6ycj5OUP','6AUy57QN5PcC57sI','5PQc5PEG5PwW5O2U','nty3ntCZmfvlzxLitW','otm0mhjRyLDmDG','CxvLCNK','mJyXmJC4vKDgzwTz','mZmZmJCXmLfmqKvXuG','mtiZndGXofDqs2Lfra','nwjHwwzqDa','zgvSzxrL','mtC5mZy0oxbtz3rgva','ntCZm3feyuXjtq','6zQq6jEp5yAf5A65','CgfNzq','B3jKzxi','5P+L55Yl5PU05AsA','nJKWoti2nhrAB3H6vG','BgLZDa','5PcC57sI5ywZ6zsU5A2x','C29YDa'];_0x3d2f=function(){return _0x2e5223;};return _0x3d2f();}
|
|
@@ -29,7 +29,6 @@ export { default as VmContextMenu } from './components/vm-context-menu.vue';
|
|
|
29
29
|
export { default as VmUpload } from './components/vm-upload.vue';
|
|
30
30
|
export { default as VmUploadItem } from './components/vm-upload-item.vue';
|
|
31
31
|
export { default as VmPreviewViewer } from './components/vm-preview-viewer.vue';
|
|
32
|
-
export { default as VmAudio } from './components/vm-audio.vue';
|
|
33
32
|
export { default as VmRichtext } from './components/vm-richtext.vue';
|
|
34
33
|
export { default as VmJsonCode } from './components/vm-json-code.vue';
|
|
35
34
|
export { default as VmJsonViewer } from './components/vm-json-viewer.vue';
|
|
@@ -42,6 +41,8 @@ export { default as VmCopyBtn } from './components/vm-copy-btn.vue';
|
|
|
42
41
|
export { default as VmFormHint } from './components/vm-form-hint.vue';
|
|
43
42
|
export { default as VmDatetimePicker } from './components/vm-datetime-picker.vue';
|
|
44
43
|
export { default as VmEllipsisText } from './components/vm-ellipsis-text.vue';
|
|
44
|
+
export { default as VmKvRow } from './components/vm-kv-row.vue';
|
|
45
|
+
export { default as VmToggleSwitch } from './components/vm-toggle-switch.vue';
|
|
45
46
|
export { vmConfirm } from './confirm';
|
|
46
47
|
export { useCrud, useTable, useUpsert, useSearch, useCore, CRUD_KEY, } from './useCrud';
|
|
47
48
|
export { Plugins, toTree, setFocus, setRules, setAuto, buildAutoSearchItems } from './plugins';
|