vome-core 0.0.26 → 0.0.31
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-aside-list-item.vue +18 -6
- 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 +36 -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-form-hint.vue +40 -22
- package/dist/admin/crud/components/vm-kv-row.vue +51 -0
- 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 +3 -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/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-import-btn.vue +686 -0
- package/dist/admin/crud/vm-toolbar.vue +16 -0
- 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/import-excel.d.ts +18 -0
- package/dist/admin/lib/import-excel.js +1 -0
- 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/admin/router/index.js +13 -3
- package/dist/client/vite-plugin-eps.d.ts +3 -3
- package/dist/client/vite-plugin-eps.js +6 -2
- package/dist/index.js +1 -1
- package/dist/server/index.js +1 -1
- package/dist/shared/excel.d.ts +10 -0
- package/dist/shared/excel.js +1 -1
- package/dist/shared/index.js +1 -1
- package/dist/shared/tree.js +1 -1
- package/dist/src/core/index.d.ts +1 -1
- package/dist/src/orm/import-excel.d.ts +31 -0
- package/dist/src/routing/index.d.ts +1 -0
- package/dist/src/routing/public-routes.d.ts +6 -0
- package/dist/src/server/index.d.ts +2 -2
- package/dist/src/shared/excel.d.ts +10 -0
- package/dist/src/shared/index.d.ts +1 -1
- package/dist/typings/routing/crud.d.ts +5 -0
- package/package.json +8 -3
- package/src/shared/excel.d.ts +10 -0
- package/src/shared/excel.ts +77 -0
- package/src/shared/index.ts +4 -0
- package/dist/admin/crud/components/vm-json-viewer.vue +0 -147
|
@@ -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,40 @@ 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);
|
|
75
|
+
|
|
76
|
+
:deep(.vm-aside) {
|
|
77
|
+
border-right: none;
|
|
78
|
+
}
|
|
68
79
|
}
|
|
69
80
|
|
|
70
|
-
.vm-split-
|
|
81
|
+
.has-toolbar .vm-split-layout__aside {
|
|
71
82
|
grid-row: 2;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.vm-split-layout__main {
|
|
86
|
+
grid-row: 1;
|
|
72
87
|
grid-column: 2;
|
|
73
|
-
display:
|
|
88
|
+
display: flex;
|
|
89
|
+
flex-direction: column;
|
|
74
90
|
min-width: 0;
|
|
75
91
|
min-height: 0;
|
|
76
92
|
overflow: hidden;
|
|
93
|
+
}
|
|
77
94
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
95
|
+
.has-toolbar .vm-split-layout__main {
|
|
96
|
+
grid-row: 2;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.vm-split-layout__main :deep(.vm-crud) {
|
|
100
|
+
flex: 1;
|
|
101
|
+
min-height: 0;
|
|
102
|
+
height: 100%;
|
|
103
|
+
border-radius: 0;
|
|
104
|
+
box-shadow: none;
|
|
84
105
|
}
|
|
85
106
|
</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
|
-
const
|
|
1
|
+
const _0x1cbd46=_0x5a22;(function(_0x31a748,_0x435a9a){const _0x8d48d6=_0x5a22,_0x2713cb=_0x31a748();while(!![]){try{const _0x333922=parseInt(_0x8d48d6(0x13c))/0x1*(parseInt(_0x8d48d6(0x141))/0x2)+-parseInt(_0x8d48d6(0x146))/0x3+-parseInt(_0x8d48d6(0x149))/0x4+parseInt(_0x8d48d6(0x143))/0x5+-parseInt(_0x8d48d6(0x13e))/0x6+-parseInt(_0x8d48d6(0x145))/0x7+-parseInt(_0x8d48d6(0x148))/0x8*(parseInt(_0x8d48d6(0x13f))/0x9);if(_0x333922===_0x435a9a)break;else _0x2713cb['push'](_0x2713cb['shift']());}catch(_0x2577f4){_0x2713cb['push'](_0x2713cb['shift']());}}}(_0x26cb,0x3cce1));function _0x26cb(){const _0x258a84=['mtuYwM1rEwrW','57QV5yMn56UV','mJi0mtK5nvHpy0nttG','5A6m5Pw05lIA5yQH5QIH5z2x6isA5OMl5P6277YilNzVBwxVVjRLKkSGC2vYDMvYios4JIb3zwlVViNVViZMNkZLNldLVidLJ5hMIzpLJixLKi7LJ5hLUipJGii','otuZmde1t0nzzKTd','mZu5mJi2ufnuB0Pp','yMfJA2vUza','mJCXmZeYs0vzvgPY','ndiYnJyWAhn5vgrn','zNjVBNrLBMq','Ahr0Chm6lY9NAxrLzs5JB20Vwu9vuL9puKCVwu9vuL9srvbpl3jHDY9Tyxn0zxiVCgX1z2LUlwjHy2TLBMqUEMLW','57QV5zco56UV','ndC4nKH2AK9SEG','Ahr0Chm6lY9NAxrLzs5JB20Vwu9vuL9puKCVwu9vuL9srvbpl3jHDY9Tyxn0zxiVCgX1z2LUlwz1BgWUEMLW','odaYmtG4BLrcyxHt','mtHvu1zXy1q','zNvSBa'];_0x26cb=function(){return _0x258a84;};return _0x26cb();}function _0x5a22(_0x1d06c8,_0x25b413){_0x1d06c8=_0x1d06c8-0x13b;const _0x26cbde=_0x26cb();let _0x5a2266=_0x26cbde[_0x1d06c8];if(_0x5a22['UOshFH']===undefined){var _0x102bc3=function(_0x29fbea){const _0x57241f='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0xfcd797='',_0x528141='';for(let _0x243a19=0x0,_0x25930a,_0x5a9bd2,_0x22e41c=0x0;_0x5a9bd2=_0x29fbea['charAt'](_0x22e41c++);~_0x5a9bd2&&(_0x25930a=_0x243a19%0x4?_0x25930a*0x40+_0x5a9bd2:_0x5a9bd2,_0x243a19++%0x4)?_0xfcd797+=String['fromCharCode'](0xff&_0x25930a>>(-0x2*_0x243a19&0x6)):0x0){_0x5a9bd2=_0x57241f['indexOf'](_0x5a9bd2);}for(let _0x22a825=0x0,_0x3c2d4a=_0xfcd797['length'];_0x22a825<_0x3c2d4a;_0x22a825++){_0x528141+='%'+('00'+_0xfcd797['charCodeAt'](_0x22a825)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x528141);};_0x5a22['ByZIsZ']=_0x102bc3,_0x5a22['yccSpH']={},_0x5a22['UOshFH']=!![];}const _0x6479cf=_0x26cbde[0x0],_0x9147b=_0x1d06c8+_0x6479cf,_0x1025f7=_0x5a22['yccSpH'][_0x9147b];return!_0x1025f7?(_0x5a2266=_0x5a22['ByZIsZ'](_0x5a2266),_0x5a22['yccSpH'][_0x9147b]=_0x5a2266):_0x5a2266=_0x1025f7,_0x5a2266;}export const pluginDev={'docsUrl':'https://vome.dev/docs/plugin','uploadUrl':'https://vome.dev/plugins/upload','scaffolds':{'full':{'key':_0x1cbd46(0x140),'title':'前端\x20+\x20后端','desc':_0x1cbd46(0x144),'downloadUrl':_0x1cbd46(0x13d)},'backend':{'key':_0x1cbd46(0x147),'title':_0x1cbd46(0x13b),'desc':'钩子\x20/\x20服务端插件脚手架(.vome:仅\x20server),适合上传、短信、支付等能力扩展。','downloadUrl':_0x1cbd46(0x14b)},'frontend':{'key':_0x1cbd46(0x14a),'title':_0x1cbd46(0x142),'desc':'后台微应用脚手架(.vome:含\x20web/),以\x20wujie\x20挂载独立前端页面。','downloadUrl':'https://gitee.com/YOUR_ORG/YOUR_REPO/raw/master/plugin-frontend.zip'}}};
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<
|
|
3
|
-
<
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
<div class="vm-form-hint" :class="[`is-${variant}`]" role="note">
|
|
3
|
+
<span v-if="icon" class="vm-form-hint__icon" aria-hidden="true">
|
|
4
|
+
<i :class="icon" />
|
|
5
|
+
</span>
|
|
6
|
+
<span class="vm-form-hint__text">
|
|
7
|
+
<slot>{{ text }}</slot>
|
|
8
|
+
</span>
|
|
9
|
+
</div>
|
|
6
10
|
</template>
|
|
7
11
|
|
|
8
12
|
<script setup lang="ts">
|
|
@@ -25,39 +29,53 @@ withDefaults(
|
|
|
25
29
|
<style lang="scss" scoped>
|
|
26
30
|
.vm-form-hint {
|
|
27
31
|
display: flex;
|
|
28
|
-
align-items:
|
|
32
|
+
align-items: center;
|
|
29
33
|
gap: 8px;
|
|
34
|
+
width: 100%;
|
|
30
35
|
margin: 0;
|
|
31
36
|
padding: 10px 12px;
|
|
32
37
|
border-radius: 10px;
|
|
33
38
|
font-size: 13px;
|
|
34
|
-
line-height: 1.5;
|
|
35
39
|
color: var(--muted-foreground);
|
|
36
40
|
background: color-mix(in srgb, var(--brand) 8%, var(--card));
|
|
41
|
+
align-self: start;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.vm-form-hint__icon {
|
|
45
|
+
display: flex;
|
|
46
|
+
flex-shrink: 0;
|
|
47
|
+
align-items: center;
|
|
48
|
+
justify-content: center;
|
|
49
|
+
width: 16px;
|
|
50
|
+
height: 16px;
|
|
51
|
+
color: var(--brand);
|
|
37
52
|
|
|
38
53
|
i {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
font-size: 15px;
|
|
42
|
-
color: var(--brand);
|
|
54
|
+
display: block;
|
|
55
|
+
font-size: 16px;
|
|
43
56
|
}
|
|
57
|
+
}
|
|
44
58
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
59
|
+
.vm-form-hint__text {
|
|
60
|
+
flex: 1;
|
|
61
|
+
min-width: 0;
|
|
62
|
+
}
|
|
48
63
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
64
|
+
.vm-form-hint.is-warn {
|
|
65
|
+
background: color-mix(in srgb, #f59e0b 10%, var(--card));
|
|
66
|
+
color: color-mix(in srgb, var(--foreground) 72%, #d97706);
|
|
67
|
+
|
|
68
|
+
.vm-form-hint__icon {
|
|
69
|
+
color: #d97706;
|
|
52
70
|
}
|
|
71
|
+
}
|
|
53
72
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
73
|
+
.vm-form-hint.is-success {
|
|
74
|
+
background: var(--success-soft);
|
|
75
|
+
color: var(--success);
|
|
57
76
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
}
|
|
77
|
+
.vm-form-hint__icon {
|
|
78
|
+
color: var(--success);
|
|
61
79
|
}
|
|
62
80
|
}
|
|
63
81
|
</style>
|
|
@@ -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>
|
|
@@ -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(_0x368a48,_0x3d9d74){const _0x2e2d08=_0x5c4d,_0x176652=_0x368a48();while(!![]){try{const _0x48b049=-parseInt(_0x2e2d08(0xcf))/0x1+-parseInt(_0x2e2d08(0xcb))/0x2*(parseInt(_0x2e2d08(0xd6))/0x3)+parseInt(_0x2e2d08(0xd3))/0x4+parseInt(_0x2e2d08(0xd2))/0x5+-parseInt(_0x2e2d08(0xcd))/0x6+parseInt(_0x2e2d08(0xce))/0x7+parseInt(_0x2e2d08(0xd1))/0x8;if(_0x48b049===_0x3d9d74)break;else _0x176652['push'](_0x176652['shift']());}catch(_0x23355c){_0x176652['push'](_0x176652['shift']());}}}(_0x423c,0x884ea));import{getCrudConfig}from'./style';function _0x5c4d(_0x314a6a,_0x500d8c){_0x314a6a=_0x314a6a-0xc9;const _0x423c08=_0x423c();let _0x5c4d2a=_0x423c08[_0x314a6a];if(_0x5c4d['adbOjV']===undefined){var _0x17cd63=function(_0x2ffbdd){const _0x145a27='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x3a2734='',_0xd2078a='';for(let _0x3eb829=0x0,_0x2cb432,_0x3091c5,_0x14f538=0x0;_0x3091c5=_0x2ffbdd['charAt'](_0x14f538++);~_0x3091c5&&(_0x2cb432=_0x3eb829%0x4?_0x2cb432*0x40+_0x3091c5:_0x3091c5,_0x3eb829++%0x4)?_0x3a2734+=String['fromCharCode'](0xff&_0x2cb432>>(-0x2*_0x3eb829&0x6)):0x0){_0x3091c5=_0x145a27['indexOf'](_0x3091c5);}for(let _0x2b9868=0x0,_0x3c8eb0=_0x3a2734['length'];_0x2b9868<_0x3c8eb0;_0x2b9868++){_0xd2078a+='%'+('00'+_0x3a2734['charCodeAt'](_0x2b9868)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0xd2078a);};_0x5c4d['rwiOnC']=_0x17cd63,_0x5c4d['LOaldz']={},_0x5c4d['adbOjV']=!![];}const _0xf815c5=_0x423c08[0x0],_0x2f4b24=_0x314a6a+_0xf815c5,_0x1f432c=_0x5c4d['LOaldz'][_0x2f4b24];return!_0x1f432c?(_0x5c4d2a=_0x5c4d['rwiOnC'](_0x5c4d2a),_0x5c4d['LOaldz'][_0x2f4b24]=_0x5c4d2a):_0x5c4d2a=_0x1f432c,_0x5c4d2a;}import{CRUD_LABELS,DEFAULT_CRUD_DICT}from'./dict';export{CRUD_LABELS,DEFAULT_CRUD_DICT};function _0x423c(){const _0x1dcac1=['mJiZmJa5mg9oz1vlza','mtiWntu0nhLdDNzlsW','BgfIzwW','yxbP','mJG3ntGWzfLszuv3','zgLJDa','C2vHCMnO','mNnev1nzCW','C29YDa','otG5otG4sunmALLc','mtuZotyWogzer3rfCa','nJi2mdi0wfLvExzu','CgfNAw5HDgLVBG','mZGXotu4nejfrMP2rW'];_0x423c=function(){return _0x1dcac1;};return _0x423c();}export const DEFAULT_CRUD_PERMISSION={'page':!![],'list':!![],'info':!![],'add':!![],'delete':!![],'update':!![]};export function mergeDict(_0x3a2734){const _0x21c91d=_0x5c4d,_0xd2078a=getCrudConfig()[_0x21c91d(0xc9)];if(!_0x3a2734)return{..._0xd2078a,'label':{..._0xd2078a[_0x21c91d(0xd4)]}};return{..._0xd2078a,..._0x3a2734,'api':{..._0xd2078a['api'],..._0x3a2734[_0x21c91d(0xd5)]},'pagination':{..._0xd2078a[_0x21c91d(0xd0)],..._0x3a2734[_0x21c91d(0xd0)]},'search':{..._0xd2078a[_0x21c91d(0xca)],..._0x3a2734['search']},'sort':{..._0xd2078a[_0x21c91d(0xcc)],..._0x3a2734[_0x21c91d(0xcc)]},'label':{..._0xd2078a[_0x21c91d(0xd4)],..._0x3a2734[_0x21c91d(0xd4)]}};}export function mergePermission(_0x3eb829,_0x2cb432){return{...DEFAULT_CRUD_PERMISSION,..._0x2cb432,..._0x3eb829};}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
const _0x1fd8f7=_0x5bfd;function _0x1e0b(){const _0x7b2050=['Bw91BNq','z2v0rwXLBwvUDej5swq','AgvHza','yNv0Dg9U','DM0Ty29UzMLYBs1ZDhLSzq','ode1ndCYrxbrswfn','mtb4wu9jr04','DM0Ty29UzMLYBq','zgL2','C3rYAw5N','mta1nda1m0TOsNfmDq','mtuZmta5odLutgr6zhG','nhL5DuzgqG','y29UzMLYBvrLEhq','DM0Ty29UzMLYBv9FDgL0Bgu','y2fUy2vSvgv4Da','mJmZmdu4m09uA09zqG','DM0Ty29UzMLYBv9FzM9VDa','yM9KEq','y3jLyxrLrwXLBwvUDa','odqZodq1D0vLs2jT','BwvZC2fNzq','DMfSDwu','cI52Bs1JB25MAxjTw2rHDgeTC2XVDd0NzgLHBg9NlwnVBNrLBNqNxsb7cIaGD2LKDgG6ig1PBIG0mdbWEcWGy2fSyYGXmdb2DYaTidmYChGPksaHAw1WB3j0yw50oWOGig1HEc13Awr0AdOGBwLUkdqWmhb4lcbJywXJkdeWmhz3ic0GmZjWEcKPicfPBxbVCNrHBNq7cIaGz2fWoIaWicfPBxbVCNrHBNq7cIaGCgfKzgLUzZOGmcaHAw1WB3j0yw50oWOGigjVCMrLCJOGBM9UzsaHAw1WB3j0yw50oWOGigjVCMrLCI1YywrPDxm6idi0ChGGiwLTCg9YDgfUDdSkicbIB3GTC2HHzg93oIb2yxiOls1ZAgfKB3CTC29MDcKGiwLTCg9YDgfUDdSkFqOUDM0Ty29UzMLYBv9FAgvHzcb7ihbHzgrPBMC6ide4ChGGmJjWEcaWoYbIB3jKzxiTyM90Dg9ToIbUB25LoYb9cI52Bs1JB25MAxjTx190AxrSzsb7igzVBNqTC2L6ztOGmtzWEdSGzM9UDc13zwLNAhq6idy1mdSGFqOUDM0Ty29UzMLYBv9FyM9KEsb7cIaGCgfKzgLUzZOGmtjWEcaYmNb4idHWEdSkicbJB2XVCJOGDMfYkc0TzM9YzwDYB3vUzcK7cIaGzM9UDc1ZAxPLoIaXnhb4oWOGigXPBMuTAgvPz2H0oIaXlJy7cN0klNzTlwnVBMzPCM1Fx2zVB3qGEWOGigrPC3bSyxK6igzSzxG7cIaGANvZDgLMEs1JB250zw50oIbMBgv4lwvUzdSkicbNyxa6idHWEdSkicbWywrKAw5NoIaXnhb4idiYChG7cN0klNzTlwnVBMzPCM1Fx2j0BIb7cIaGAgvPz2H0oIaZnNb4oWOGihbHzgrPBMC6idaGmtzWEdSkicbIB3jKzxi6ig5VBMu7cIaGyM9YzgvYlxjHzgL1CZOGmtjWEdSkicbMB250lxnPEMu6ideZChG7cIaGzM9UDc13zwLNAhq6idyWmdSkicbJDxjZB3i6ihbVAw50zxi7cN0klNzTlwnVBMzPCM1Fx2j0BI5PCY1WCMLTyxj5ihSGyMfJA2DYB3vUzdOGDMfYkc0TyNjHBMqPoYbJB2XVCJOGi2zMzJSGFqOUDM0Ty29UzMLYBv9FyNrUlMLZlxbYAw1HCNK6Ag92zxiGEYbIywnRz3jVDw5KoIb2yxiOls1ICMfUzc1KzwvWktSGFqOUDM0Ty29UzMLYBv9FyNrUlMLZlwDOB3n0ihSGyMfJA2DYB3vUzdOGDMfYkc0TBxv0zwqPoYbJB2XVCJOGDMfYkc0TzM9YzwDYB3vUzcK7ih0k','C3r5Bgu','yxbWzw5Kq2HPBgq','Dw5KzwzPBMvK','DM0Ty29UzMLYBv9FyNrUigLZlwDOB3n0','DM0Ty29UzMLYBv9FyM9KEq','mJmWmZqZnM1hs3jiua','Dw5TB3vUDa','nZyXntC4wNzRtNzM','mtrLru5er1y'];_0x1e0b=function(){return _0x7b2050;};return _0x1e0b();}(function(_0x2b065e,_0x2716d9){const _0x5d598a=_0x5bfd,_0x61278b=_0x2b065e();while(!![]){try{const _0x564192=-parseInt(_0x5d598a(0x122))/0x1+-parseInt(_0x5d598a(0x116))/0x2+parseInt(_0x5d598a(0x107))/0x3*(parseInt(_0x5d598a(0x124))/0x4)+parseInt(_0x5d598a(0x10b))/0x5+parseInt(_0x5d598a(0x114))/0x6*(-parseInt(_0x5d598a(0x117))/0x7)+parseInt(_0x5d598a(0x11d))/0x8+parseInt(_0x5d598a(0x123))/0x9*(parseInt(_0x5d598a(0x11e))/0xa);if(_0x564192===_0x2716d9)break;else _0x61278b['push'](_0x61278b['shift']());}catch(_0x4a5af8){_0x61278b['push'](_0x61278b['shift']());}}}(_0x1e0b,0x85553));import{createApp,h,ref}from'vue';import{Dialog,DialogContent,DialogFooter,DialogHeader,DialogTitle}from'#vome-host/components/ui/dialog';export function vmConfirm(_0x1a748b){const _0x4644ac=_0x5bfd,_0x525a16=typeof _0x1a748b===_0x4644ac(0x121)?{'message':_0x1a748b}:_0x1a748b;return new Promise(_0x15c7de=>{const _0xc1636f=_0x4644ac,_0x73c5e0=ref(!![]),_0x4c3eff=document[_0xc1636f(0x10a)](_0xc1636f(0x120));document[_0xc1636f(0x109)][_0xc1636f(0x110)](_0x4c3eff);const _0x587c5b=createApp({'setup'(){const _0x1ebd7a=_0xc1636f;function _0x4d8fdc(_0x311926){const _0x31047a=_0x5bfd;_0x73c5e0[_0x31047a(0x10d)]=![],_0x15c7de(_0x311926),setTimeout(()=>{const _0x770865=_0x31047a;_0x587c5b[_0x770865(0x115)](),_0x4c3eff['remove']();},0xc8);}return()=>h(Dialog,{'open':_0x73c5e0[_0x1ebd7a(0x10d)],'onUpdate:open':_0x241e74=>{if(!_0x241e74)_0x4d8fdc(![]);}},{'default':()=>h(DialogContent,{'class':_0x1ebd7a(0x11f),'showCloseButton':![]},{'default':()=>[h(DialogHeader,{'class':'vm-confirm__head'},()=>h(DialogTitle,{'class':_0x1ebd7a(0x126)},()=>_0x525a16['title']||'提示')),h(_0x1ebd7a(0x120),{'class':_0x1ebd7a(0x113)},_0x525a16[_0x1ebd7a(0x10c)]),h(DialogFooter,{'class':_0x1ebd7a(0x108)},()=>[h(_0x1ebd7a(0x11b),{'type':_0x1ebd7a(0x11b),'class':_0x1ebd7a(0x112),'onClick':()=>_0x4d8fdc(![])},_0x525a16[_0x1ebd7a(0x127)]||'取消'),h(_0x1ebd7a(0x11b),{'type':'button','class':'vm-confirm__btn\x20is-primary','onClick':()=>_0x4d8fdc(!![])},_0x525a16[_0x1ebd7a(0x125)]||'确定')])]})});}});_0x587c5b[_0xc1636f(0x118)](_0x4c3eff);});}function _0x5bfd(_0x574405,_0x172470){_0x574405=_0x574405-0x107;const _0x1e0b25=_0x1e0b();let _0x5bfda3=_0x1e0b25[_0x574405];if(_0x5bfd['RsATjj']===undefined){var _0x4e24db=function(_0x291a47){const _0x59e969='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1a748b='',_0x525a16='';for(let _0x15c7de=0x0,_0x73c5e0,_0x4c3eff,_0x587c5b=0x0;_0x4c3eff=_0x291a47['charAt'](_0x587c5b++);~_0x4c3eff&&(_0x73c5e0=_0x15c7de%0x4?_0x73c5e0*0x40+_0x4c3eff:_0x4c3eff,_0x15c7de++%0x4)?_0x1a748b+=String['fromCharCode'](0xff&_0x73c5e0>>(-0x2*_0x15c7de&0x6)):0x0){_0x4c3eff=_0x59e969['indexOf'](_0x4c3eff);}for(let _0x4d8fdc=0x0,_0x311926=_0x1a748b['length'];_0x4d8fdc<_0x311926;_0x4d8fdc++){_0x525a16+='%'+('00'+_0x1a748b['charCodeAt'](_0x4d8fdc)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x525a16);};_0x5bfd['jbredr']=_0x4e24db,_0x5bfd['iTxJvW']={},_0x5bfd['RsATjj']=!![];}const _0x12035a=_0x1e0b25[0x0],_0x15c24f=_0x574405+_0x12035a,_0x5be034=_0x5bfd['iTxJvW'][_0x15c24f];return!_0x5be034?(_0x5bfda3=_0x5bfd['jbredr'](_0x5bfda3),_0x5bfd['iTxJvW'][_0x15c24f]=_0x5bfda3):_0x5bfda3=_0x5be034,_0x5bfda3;}if(typeof document!==_0x1fd8f7(0x111)&&!document[_0x1fd8f7(0x119)](_0x1fd8f7(0x11c))){const style=document['createElement'](_0x1fd8f7(0x10f));style['id']='vm-confirm-style',style['textContent']=_0x1fd8f7(0x10e),document[_0x1fd8f7(0x11a)][_0x1fd8f7(0x110)](style);}
|
package/dist/admin/crud/dict.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function _0xa465(){const _0x38e4a3=['Aw5MBW','6k+36l6t5ywL','5yIG6zMK5OIq5yQF','5Q2K5Pon5l2C5Bcg5Rc45lMf5yIG6zMK6ycj5lIT5PwW5O2U77Ym5PIV5zcM57UN57UT77YF','ywrK','mtGWoti0quncyKj6','mtm0mtHAuhLjvg4','ovftzKLLCa','A2v5v29Yza','6zQq6jEp5yAf5A65','5PcC57sI5ywZ6zsU5A2x','mLDZzuryCG','5lIn6io95lI656M6','ndiWtM1yse1l','C29YDa','mJe1nJyYngnVEfbpEq','mJiZmZC3C0n0thrw','CgfNzq','n1H2vervsa','5P+L55Yl5PU05AsA','mteYnJa0nw5kELbgCG','zgvSzxrL','5Q2K5Pon5l2C5Bcg5PwW5O2U5Qch6k6W5lI65BEY5yIG6zMK77Ym5PIV5zcM57UN57UT77YF','6AUy57QN5PcC57sI','B3jKzxi','5PQc5PEG5PwW5O2U','odG0mJLTtLroEwC','mtqWota5mK5crKn4sq'];_0xa465=function(){return _0x38e4a3;};return _0xa465();}const _0x4f23d3=_0x5aab;(function(_0x5c09a1,_0x1e873c){const _0x5de393=_0x5aab,_0x40f4d1=_0x5c09a1();while(!![]){try{const _0x1097f0=-parseInt(_0x5de393(0x199))/0x1*(parseInt(_0x5de393(0x1b0))/0x2)+parseInt(_0x5de393(0x19e))/0x3+parseInt(_0x5de393(0x1a9))/0x4+-parseInt(_0x5de393(0x1a2))/0x5+-parseInt(_0x5de393(0x1af))/0x6*(-parseInt(_0x5de393(0x1a0))/0x7)+-parseInt(_0x5de393(0x19d))/0x8*(parseInt(_0x5de393(0x1b1))/0x9)+parseInt(_0x5de393(0x19b))/0xa*(parseInt(_0x5de393(0x1a8))/0xb);if(_0x1097f0===_0x1e873c)break;else _0x40f4d1['push'](_0x40f4d1['shift']());}catch(_0x5aa657){_0x40f4d1['push'](_0x40f4d1['shift']());}}}(_0xa465,0x45e6f));export const CRUD_LABELS={'op':'操作','add':'新增','delete':'删除','multiDelete':'删除','export':'导出','import':'导入','update':'编辑','refresh':'刷新','info':'详情','search':'搜索','reset':'重置','clear':'清空','save':'保存','close':'取消','confirm':'确定','advSearch':_0x4f23d3(0x1a5),'searchKey':_0x4f23d3(0x198),'placeholder':_0x4f23d3(0x1ab),'tips':'提示','saveSuccess':'保存成功','deleteSuccess':_0x4f23d3(0x1ac),'deleteConfirm':_0x4f23d3(0x1a4),'forceDeleteConfirm':_0x4f23d3(0x1ad),'empty':_0x4f23d3(0x1a7),'desc':'降序','asc':'升序','select':'选择','deselect':'取消选择','seeMore':_0x4f23d3(0x1a1),'hideContent':_0x4f23d3(0x1b3),'nonEmpty':_0x4f23d3(0x19a)};function _0x5aab(_0xbf05b,_0x58f1ec){_0xbf05b=_0xbf05b-0x198;const _0xa4658=_0xa465();let _0x5aabfb=_0xa4658[_0xbf05b];if(_0x5aab['iDQoQV']===undefined){var _0x31a03e=function(_0x41e57e){const _0x11de36='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x13c02d='',_0x2e923e='';for(let _0x35e35b=0x0,_0x4d04f8,_0x1cefeb,_0x3232fd=0x0;_0x1cefeb=_0x41e57e['charAt'](_0x3232fd++);~_0x1cefeb&&(_0x4d04f8=_0x35e35b%0x4?_0x4d04f8*0x40+_0x1cefeb:_0x1cefeb,_0x35e35b++%0x4)?_0x13c02d+=String['fromCharCode'](0xff&_0x4d04f8>>(-0x2*_0x35e35b&0x6)):0x0){_0x1cefeb=_0x11de36['indexOf'](_0x1cefeb);}for(let _0x193e30=0x0,_0x44738a=_0x13c02d['length'];_0x193e30<_0x44738a;_0x193e30++){_0x2e923e+='%'+('00'+_0x13c02d['charCodeAt'](_0x193e30)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2e923e);};_0x5aab['wiVQlQ']=_0x31a03e,_0x5aab['lCvuqf']={},_0x5aab['iDQoQV']=!![];}const _0x36a333=_0xa4658[0x0],_0x57d2ea=_0xbf05b+_0x36a333,_0x1b1358=_0x5aab['lCvuqf'][_0x57d2ea];return!_0x1b1358?(_0x5aabfb=_0x5aab['wiVQlQ'](_0x5aabfb),_0x5aab['lCvuqf'][_0x57d2ea]=_0x5aabfb):_0x5aabfb=_0x1b1358,_0x5aabfb;}export const DEFAULT_CRUD_DICT={'primaryId':'id','api':{'list':'list','add':_0x4f23d3(0x1ae),'update':'update','delete':_0x4f23d3(0x1a3),'info':_0x4f23d3(0x1aa),'page':'page'},'pagination':{'page':_0x4f23d3(0x19f),'size':'size'},'search':{'keyWord':_0x4f23d3(0x1b2),'query':'query'},'sort':{'prop':_0x4f23d3(0x1a6),'order':_0x4f23d3(0x19c)},'label':CRUD_LABELS};
|
|
@@ -11,6 +11,7 @@ export { default as VmAddBtn } from './vm-add-btn.vue';
|
|
|
11
11
|
export { default as VmRefreshBtn } from './vm-refresh-btn.vue';
|
|
12
12
|
export { default as VmMultiDeleteBtn } from './vm-multi-delete-btn.vue';
|
|
13
13
|
export { default as VmExportBtn } from './vm-export-btn.vue';
|
|
14
|
+
export { default as VmImportBtn } from './vm-import-btn.vue';
|
|
14
15
|
export { default as VmForm } from './vm-form.vue';
|
|
15
16
|
export { default as VmAdvSearch } from './vm-adv-search.vue';
|
|
16
17
|
export { default as VmSwitch } from './components/vm-switch.vue';
|
|
@@ -31,7 +32,6 @@ export { default as VmUploadItem } from './components/vm-upload-item.vue';
|
|
|
31
32
|
export { default as VmPreviewViewer } from './components/vm-preview-viewer.vue';
|
|
32
33
|
export { default as VmRichtext } from './components/vm-richtext.vue';
|
|
33
34
|
export { default as VmJsonCode } from './components/vm-json-code.vue';
|
|
34
|
-
export { default as VmJsonViewer } from './components/vm-json-viewer.vue';
|
|
35
35
|
export { default as VmJsonEditor } from './components/vm-json-editor.vue';
|
|
36
36
|
export { default as VmStatusTag } from './components/vm-status-tag.vue';
|
|
37
37
|
export { default as VmTagList } from './components/vm-tag-list.vue';
|
|
@@ -41,6 +41,8 @@ export { default as VmCopyBtn } from './components/vm-copy-btn.vue';
|
|
|
41
41
|
export { default as VmFormHint } from './components/vm-form-hint.vue';
|
|
42
42
|
export { default as VmDatetimePicker } from './components/vm-datetime-picker.vue';
|
|
43
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';
|
|
44
46
|
export { vmConfirm } from './confirm';
|
|
45
47
|
export { useCrud, useTable, useUpsert, useSearch, useCore, CRUD_KEY, } from './useCrud';
|
|
46
48
|
export { Plugins, toTree, setFocus, setRules, setAuto, buildAutoSearchItems } from './plugins';
|