ljr-cli 1.0.7 → 1.0.9
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/bin/commands/demo1.js +12 -0
- package/bin/commands/demo2.js +60 -0
- package/bin/commands/init.js +130 -0
- package/bin/commands/sync.js +144 -0
- package/bin/index.js +19 -202
- package/bin/templates/vue2.7.16/README.md +15 -13
- package/bin/templates/vue2.7.16/public/index.html +5 -5
- package/bin/templates/vue3.5.25-2025.12.4/.vscode/settings.json +1 -0
- package/bin/templates/vue3.5.25-2025.12.4/README.md +28 -17
- package/bin/templates/vue3.5.25-2025.12.4/auto-imports.d.ts +229 -0
- package/bin/templates/vue3.5.25-2025.12.4/components.d.ts +49 -0
- package/bin/templates/vue3.5.25-2025.12.4/eslint.config.ts +1 -0
- package/bin/templates/vue3.5.25-2025.12.4/index.html +2 -2
- package/bin/templates/vue3.5.25-2025.12.4/package.json +3 -1
- package/bin/templates/vue3.5.25-2025.12.4/pnpm-lock.yaml +480 -11
- package/bin/templates/vue3.5.25-2025.12.4/src/assets/images/login_bg.jpg +0 -0
- package/bin/templates/vue3.5.25-2025.12.4/src/assets/images/login_bg_black.jpg +0 -0
- package/bin/templates/vue3.5.25-2025.12.4/src/assets/images/sc_login_icon.png +0 -0
- package/bin/templates/vue3.5.25-2025.12.4/src/boot/el-icon.ts +9 -0
- package/bin/templates/vue3.5.25-2025.12.4/src/boot/index.ts +2 -0
- package/bin/templates/vue3.5.25-2025.12.4/src/boot/pinia.ts +8 -3
- package/bin/templates/vue3.5.25-2025.12.4/src/boot/style.ts +2 -1
- package/bin/templates/vue3.5.25-2025.12.4/src/components/layout/header.ts +97 -0
- package/bin/templates/vue3.5.25-2025.12.4/src/components/layout/header.vue +37 -13
- package/bin/templates/vue3.5.25-2025.12.4/src/components/layout/left-right.vue +3 -7
- package/bin/templates/vue3.5.25-2025.12.4/src/components/layout/menu.ts +19 -0
- package/bin/templates/vue3.5.25-2025.12.4/src/components/layout/menu.vue +89 -5
- package/bin/templates/vue3.5.25-2025.12.4/src/components/layout/up-down.vue +24 -0
- package/bin/templates/vue3.5.25-2025.12.4/src/components/login/change-password.vue +111 -0
- package/bin/templates/vue3.5.25-2025.12.4/src/components/login/user-login.vue +61 -0
- package/bin/templates/vue3.5.25-2025.12.4/src/css/base.css +204 -0
- package/bin/templates/vue3.5.25-2025.12.4/src/css/global.css +1596 -0
- package/bin/templates/vue3.5.25-2025.12.4/src/css/index.css +3 -0
- package/bin/templates/vue3.5.25-2025.12.4/src/css/theme.css +61 -0
- package/bin/templates/vue3.5.25-2025.12.4/src/dialogs/device/index.ts +1 -0
- package/bin/templates/vue3.5.25-2025.12.4/src/dialogs/dialog.vue +66 -0
- package/bin/templates/vue3.5.25-2025.12.4/src/dialogs/helper.ts +90 -0
- package/bin/templates/vue3.5.25-2025.12.4/src/dialogs/index.ts +2 -0
- package/bin/templates/vue3.5.25-2025.12.4/src/dialogs/template.ts +41 -0
- package/bin/templates/vue3.5.25-2025.12.4/src/dialogs/template.vue +29 -0
- package/bin/templates/vue3.5.25-2025.12.4/src/dialogs/user-info/index.ts +31 -0
- package/bin/templates/vue3.5.25-2025.12.4/src/dialogs/user-info/layout.ts +47 -0
- package/bin/templates/vue3.5.25-2025.12.4/src/dialogs/user-info/layout.vue +51 -0
- package/bin/templates/vue3.5.25-2025.12.4/src/dialogs/user-info/notification.ts +27 -0
- package/bin/templates/vue3.5.25-2025.12.4/src/dialogs/user-info/notification.vue +29 -0
- package/bin/templates/vue3.5.25-2025.12.4/src/dialogs/user-info/permission.ts +22 -0
- package/bin/templates/vue3.5.25-2025.12.4/src/dialogs/user-info/permission.vue +23 -0
- package/bin/templates/vue3.5.25-2025.12.4/src/directive/rememberScrollPosition.ts +1 -1
- package/bin/templates/vue3.5.25-2025.12.4/src/enums/device.ts +42 -0
- package/bin/templates/vue3.5.25-2025.12.4/src/enums/index.ts +2 -0
- package/bin/templates/vue3.5.25-2025.12.4/src/enums/status.ts +23 -0
- package/bin/templates/vue3.5.25-2025.12.4/src/pages/index/permission/role.ts +40 -0
- package/bin/templates/vue3.5.25-2025.12.4/src/pages/index/permission/role.vue +39 -0
- package/bin/templates/vue3.5.25-2025.12.4/src/pages/index/permission/user.vue +10 -0
- package/bin/templates/vue3.5.25-2025.12.4/src/pages/index/template/base-info.vue +5 -0
- package/bin/templates/vue3.5.25-2025.12.4/src/pages/index/template/base-info2.vue +5 -0
- package/bin/templates/vue3.5.25-2025.12.4/src/pages/index/template/list.ts +40 -0
- package/bin/templates/vue3.5.25-2025.12.4/src/pages/index/template/list.vue +39 -0
- package/bin/templates/vue3.5.25-2025.12.4/src/pages/index/template/store.vue +89 -0
- package/bin/templates/vue3.5.25-2025.12.4/src/pages/index.vue +7 -2
- package/bin/templates/vue3.5.25-2025.12.4/src/pages/login.vue +34 -64
- package/bin/templates/vue3.5.25-2025.12.4/src/stores/account(/351/200/211/351/241/271/345/274/217api/345/206/231/346/263/225/347/244/272/344/276/213).ts +49 -0
- package/bin/templates/vue3.5.25-2025.12.4/src/stores/account.ts +46 -28
- package/bin/templates/vue3.5.25-2025.12.4/src/stores/dd.ts +85 -29
- package/bin/templates/vue3.5.25-2025.12.4/src/stores/layout.ts +99 -21
- package/bin/templates/vue3.5.25-2025.12.4/typed-router.d.ts +90 -0
- package/bin/templates/vue3.5.25-2025.12.4/uno.config.ts +53 -0
- package/bin/templates/vue3.5.25-2025.12.4/vite.config.ts +12 -1
- package/package.json +4 -6
- package/bin/demo1.js +0 -39
- package/bin/demo2.js +0 -87
- package/bin/templates/vue3.5.25-2025.12.4/src/stores//347/273/204/345/220/210/345/274/217pinia/345/206/231/346/263/225(/344/273/245account/344/270/272/344/276/213).ts +0 -28
- /package/bin/templates/vue3.5.25-2025.12.4/{public → src/assets}/favicon.svg +0 -0
|
@@ -29,34 +29,35 @@ pnpm install
|
|
|
29
29
|
### 编译和热重载开发
|
|
30
30
|
|
|
31
31
|
```sh
|
|
32
|
-
pnpm
|
|
32
|
+
pnpm dev || pnpm serve
|
|
33
33
|
```
|
|
34
34
|
|
|
35
35
|
### 为生产进行类型检查、编译和最小化
|
|
36
36
|
|
|
37
37
|
```sh
|
|
38
|
-
pnpm
|
|
38
|
+
pnpm build
|
|
39
39
|
```
|
|
40
40
|
|
|
41
41
|
### eslint检查
|
|
42
42
|
|
|
43
43
|
```sh
|
|
44
|
-
pnpm
|
|
44
|
+
pnpm lint
|
|
45
45
|
```
|
|
46
46
|
|
|
47
47
|
### prettier格式化
|
|
48
48
|
|
|
49
49
|
```sh
|
|
50
|
-
pnpm
|
|
50
|
+
pnpm format
|
|
51
51
|
```
|
|
52
52
|
|
|
53
|
-
#
|
|
53
|
+
# 样式
|
|
54
54
|
|
|
55
|
-
|
|
55
|
+
全局 `@/css/index.css` 里面包含了 `theme.css`、`base.css`、`global.css`
|
|
56
|
+
集成 `unocss` 原子化css
|
|
56
57
|
|
|
57
58
|
# 自动导入
|
|
58
59
|
|
|
59
|
-
使用 `unplugin-auto-import` 插件自动导入vue
|
|
60
|
+
使用 `unplugin-auto-import` 插件自动导入 `vue`、`vue-route`、`pinia`、`vueuse`
|
|
60
61
|
使用 `unplugin-auto-import`、`unplugin-vue-components` 插件按需导入element-plus组件
|
|
61
62
|
|
|
62
63
|
# 路由
|
|
@@ -65,12 +66,21 @@ pnpm run format
|
|
|
65
66
|
加入页面过渡动画
|
|
66
67
|
封装了全局登录判断的路由卫士
|
|
67
68
|
|
|
69
|
+
# 左侧菜单
|
|
70
|
+
|
|
71
|
+
未整理
|
|
72
|
+
|
|
73
|
+
# 函数式弹窗
|
|
74
|
+
|
|
75
|
+
未整理
|
|
76
|
+
|
|
68
77
|
# store仓库
|
|
69
78
|
|
|
70
79
|
使用 `pinia-plugin-persistedstate` 做持久化,默认全部 store 都持久化
|
|
71
80
|
持久化储存的 `key` 默认加上 `pinia` 前缀
|
|
72
81
|
默认都存到 `sessionStorage` ,account 的 store 默认改成 `localStorage` 存储
|
|
73
82
|
如果需要关闭持久化,为单个 store 配置
|
|
83
|
+
此项目统一采用组合式 `pinia` 写法,选项式 `pinia` 写法也有示例,请自行选择
|
|
74
84
|
|
|
75
85
|
# 布局
|
|
76
86
|
|
|
@@ -78,7 +88,6 @@ pnpm run format
|
|
|
78
88
|
|
|
79
89
|
- 上下布局:顶部信息,下左菜单,下右页面
|
|
80
90
|
- 左右布局:左侧菜单,右上顶部信息,右下页面
|
|
81
|
-
- 全屏页面(隐藏顶部信息和菜单):只有页面,没有顶部信息和菜单,可通过快捷键退出全屏页面
|
|
82
91
|
|
|
83
92
|
# 其他
|
|
84
93
|
|
|
@@ -109,16 +118,18 @@ axios 封装
|
|
|
109
118
|
├── stores # stores
|
|
110
119
|
├── views # 页面
|
|
111
120
|
├── package.json
|
|
112
|
-
├──
|
|
121
|
+
├── pnpm-lock.yaml
|
|
113
122
|
```
|
|
114
123
|
|
|
115
124
|
## 命名规范
|
|
116
125
|
|
|
117
|
-
| 类别 | 推荐命名方式 | 示例
|
|
118
|
-
| ------------------ | ----------------------------------------------- |
|
|
119
|
-
| 通用 | kebab-case | package-lock.json
|
|
120
|
-
|
|
|
121
|
-
|
|
|
122
|
-
|
|
|
123
|
-
|
|
|
124
|
-
|
|
|
126
|
+
| 类别 | 推荐命名方式 | 示例 | 关键点/例外情况 |
|
|
127
|
+
| ------------------ | ----------------------------------------------- | -------------------------- | ---------------------- |
|
|
128
|
+
| 通用 | kebab-case | package-lock.json | 没有特别说明尽量用这个 |
|
|
129
|
+
| 路由名称 | kebab-case | user-info | 最通用、最推荐路径命名 |
|
|
130
|
+
| Vue 组件里的组件名 | kebab-case | user-info.vue | |
|
|
131
|
+
| Vue 组件里的 Props | 在声明时使用 camelCase,在模板中使用 kebab-case | | |
|
|
132
|
+
| 方法 / 函数 / 变量 | camelCase | getUserInfo | |
|
|
133
|
+
| 构造函数 / 类 | PascalCase | UserInfo | |
|
|
134
|
+
| 常量 | UPPER_SNAKE_CASE(全大写 + 下划线分隔) | const BASE_API_URL = "xxx" | |
|
|
135
|
+
| 私有属性 / 方法 | \_camelCase(下划线开头 + 小驼峰) | \_userInfo | |
|
|
@@ -7,26 +7,52 @@
|
|
|
7
7
|
export {}
|
|
8
8
|
declare global {
|
|
9
9
|
const EffectScope: typeof import('vue').EffectScope
|
|
10
|
+
const ElMessage: typeof import('element-plus/es').ElMessage
|
|
10
11
|
const acceptHMRUpdate: typeof import('pinia').acceptHMRUpdate
|
|
12
|
+
const asyncComputed: typeof import('@vueuse/core').asyncComputed
|
|
13
|
+
const autoResetRef: typeof import('@vueuse/core').autoResetRef
|
|
11
14
|
const computed: typeof import('vue').computed
|
|
15
|
+
const computedAsync: typeof import('@vueuse/core').computedAsync
|
|
16
|
+
const computedEager: typeof import('@vueuse/core').computedEager
|
|
17
|
+
const computedInject: typeof import('@vueuse/core').computedInject
|
|
18
|
+
const computedWithControl: typeof import('@vueuse/core').computedWithControl
|
|
19
|
+
const controlledComputed: typeof import('@vueuse/core').controlledComputed
|
|
20
|
+
const controlledRef: typeof import('@vueuse/core').controlledRef
|
|
12
21
|
const createApp: typeof import('vue').createApp
|
|
22
|
+
const createEventHook: typeof import('@vueuse/core').createEventHook
|
|
23
|
+
const createGlobalState: typeof import('@vueuse/core').createGlobalState
|
|
24
|
+
const createInjectionState: typeof import('@vueuse/core').createInjectionState
|
|
13
25
|
const createPinia: typeof import('pinia').createPinia
|
|
26
|
+
const createReactiveFn: typeof import('@vueuse/core').createReactiveFn
|
|
27
|
+
const createRef: typeof import('@vueuse/core').createRef
|
|
28
|
+
const createReusableTemplate: typeof import('@vueuse/core').createReusableTemplate
|
|
29
|
+
const createSharedComposable: typeof import('@vueuse/core').createSharedComposable
|
|
30
|
+
const createTemplatePromise: typeof import('@vueuse/core').createTemplatePromise
|
|
31
|
+
const createUnrefFn: typeof import('@vueuse/core').createUnrefFn
|
|
14
32
|
const customRef: typeof import('vue').customRef
|
|
33
|
+
const debouncedRef: typeof import('@vueuse/core').debouncedRef
|
|
34
|
+
const debouncedWatch: typeof import('@vueuse/core').debouncedWatch
|
|
15
35
|
const defineAsyncComponent: typeof import('vue').defineAsyncComponent
|
|
16
36
|
const defineComponent: typeof import('vue').defineComponent
|
|
17
37
|
const defineStore: typeof import('pinia').defineStore
|
|
38
|
+
const eagerComputed: typeof import('@vueuse/core').eagerComputed
|
|
18
39
|
const effectScope: typeof import('vue').effectScope
|
|
40
|
+
const extendRef: typeof import('@vueuse/core').extendRef
|
|
19
41
|
const getActivePinia: typeof import('pinia').getActivePinia
|
|
20
42
|
const getCurrentInstance: typeof import('vue').getCurrentInstance
|
|
21
43
|
const getCurrentScope: typeof import('vue').getCurrentScope
|
|
22
44
|
const getCurrentWatcher: typeof import('vue').getCurrentWatcher
|
|
23
45
|
const h: typeof import('vue').h
|
|
46
|
+
const ignorableWatch: typeof import('@vueuse/core').ignorableWatch
|
|
24
47
|
const inject: typeof import('vue').inject
|
|
48
|
+
const injectLocal: typeof import('@vueuse/core').injectLocal
|
|
49
|
+
const isDefined: typeof import('@vueuse/core').isDefined
|
|
25
50
|
const isProxy: typeof import('vue').isProxy
|
|
26
51
|
const isReactive: typeof import('vue').isReactive
|
|
27
52
|
const isReadonly: typeof import('vue').isReadonly
|
|
28
53
|
const isRef: typeof import('vue').isRef
|
|
29
54
|
const isShallow: typeof import('vue').isShallow
|
|
55
|
+
const makeDestructurable: typeof import('@vueuse/core').makeDestructurable
|
|
30
56
|
const mapActions: typeof import('pinia').mapActions
|
|
31
57
|
const mapGetters: typeof import('pinia').mapGetters
|
|
32
58
|
const mapState: typeof import('pinia').mapState
|
|
@@ -40,47 +66,250 @@ declare global {
|
|
|
40
66
|
const onBeforeRouteUpdate: typeof import('vue-router').onBeforeRouteUpdate
|
|
41
67
|
const onBeforeUnmount: typeof import('vue').onBeforeUnmount
|
|
42
68
|
const onBeforeUpdate: typeof import('vue').onBeforeUpdate
|
|
69
|
+
const onClickOutside: typeof import('@vueuse/core').onClickOutside
|
|
43
70
|
const onDeactivated: typeof import('vue').onDeactivated
|
|
71
|
+
const onElementRemoval: typeof import('@vueuse/core').onElementRemoval
|
|
44
72
|
const onErrorCaptured: typeof import('vue').onErrorCaptured
|
|
73
|
+
const onKeyStroke: typeof import('@vueuse/core').onKeyStroke
|
|
74
|
+
const onLongPress: typeof import('@vueuse/core').onLongPress
|
|
45
75
|
const onMounted: typeof import('vue').onMounted
|
|
46
76
|
const onRenderTracked: typeof import('vue').onRenderTracked
|
|
47
77
|
const onRenderTriggered: typeof import('vue').onRenderTriggered
|
|
48
78
|
const onScopeDispose: typeof import('vue').onScopeDispose
|
|
49
79
|
const onServerPrefetch: typeof import('vue').onServerPrefetch
|
|
80
|
+
const onStartTyping: typeof import('@vueuse/core').onStartTyping
|
|
50
81
|
const onUnmounted: typeof import('vue').onUnmounted
|
|
51
82
|
const onUpdated: typeof import('vue').onUpdated
|
|
52
83
|
const onWatcherCleanup: typeof import('vue').onWatcherCleanup
|
|
84
|
+
const pausableWatch: typeof import('@vueuse/core').pausableWatch
|
|
53
85
|
const provide: typeof import('vue').provide
|
|
86
|
+
const provideLocal: typeof import('@vueuse/core').provideLocal
|
|
87
|
+
const reactify: typeof import('@vueuse/core').reactify
|
|
88
|
+
const reactifyObject: typeof import('@vueuse/core').reactifyObject
|
|
54
89
|
const reactive: typeof import('vue').reactive
|
|
90
|
+
const reactiveComputed: typeof import('@vueuse/core').reactiveComputed
|
|
91
|
+
const reactiveOmit: typeof import('@vueuse/core').reactiveOmit
|
|
92
|
+
const reactivePick: typeof import('@vueuse/core').reactivePick
|
|
55
93
|
const readonly: typeof import('vue').readonly
|
|
56
94
|
const ref: typeof import('vue').ref
|
|
95
|
+
const refAutoReset: typeof import('@vueuse/core').refAutoReset
|
|
96
|
+
const refDebounced: typeof import('@vueuse/core').refDebounced
|
|
97
|
+
const refDefault: typeof import('@vueuse/core').refDefault
|
|
98
|
+
const refManualReset: typeof import('@vueuse/core').refManualReset
|
|
99
|
+
const refThrottled: typeof import('@vueuse/core').refThrottled
|
|
100
|
+
const refWithControl: typeof import('@vueuse/core').refWithControl
|
|
57
101
|
const resolveComponent: typeof import('vue').resolveComponent
|
|
102
|
+
const resolveRef: typeof import('@vueuse/core').resolveRef
|
|
58
103
|
const setActivePinia: typeof import('pinia').setActivePinia
|
|
59
104
|
const setMapStoreSuffix: typeof import('pinia').setMapStoreSuffix
|
|
60
105
|
const shallowReactive: typeof import('vue').shallowReactive
|
|
61
106
|
const shallowReadonly: typeof import('vue').shallowReadonly
|
|
62
107
|
const shallowRef: typeof import('vue').shallowRef
|
|
63
108
|
const storeToRefs: typeof import('pinia').storeToRefs
|
|
109
|
+
const syncRef: typeof import('@vueuse/core').syncRef
|
|
110
|
+
const syncRefs: typeof import('@vueuse/core').syncRefs
|
|
111
|
+
const templateRef: typeof import('@vueuse/core').templateRef
|
|
112
|
+
const throttledRef: typeof import('@vueuse/core').throttledRef
|
|
113
|
+
const throttledWatch: typeof import('@vueuse/core').throttledWatch
|
|
64
114
|
const toRaw: typeof import('vue').toRaw
|
|
115
|
+
const toReactive: typeof import('@vueuse/core').toReactive
|
|
65
116
|
const toRef: typeof import('vue').toRef
|
|
66
117
|
const toRefs: typeof import('vue').toRefs
|
|
67
118
|
const toValue: typeof import('vue').toValue
|
|
68
119
|
const triggerRef: typeof import('vue').triggerRef
|
|
120
|
+
const tryOnBeforeMount: typeof import('@vueuse/core').tryOnBeforeMount
|
|
121
|
+
const tryOnBeforeUnmount: typeof import('@vueuse/core').tryOnBeforeUnmount
|
|
122
|
+
const tryOnMounted: typeof import('@vueuse/core').tryOnMounted
|
|
123
|
+
const tryOnScopeDispose: typeof import('@vueuse/core').tryOnScopeDispose
|
|
124
|
+
const tryOnUnmounted: typeof import('@vueuse/core').tryOnUnmounted
|
|
69
125
|
const unref: typeof import('vue').unref
|
|
126
|
+
const unrefElement: typeof import('@vueuse/core').unrefElement
|
|
127
|
+
const until: typeof import('@vueuse/core').until
|
|
128
|
+
const useActiveElement: typeof import('@vueuse/core').useActiveElement
|
|
129
|
+
const useAnimate: typeof import('@vueuse/core').useAnimate
|
|
130
|
+
const useArrayDifference: typeof import('@vueuse/core').useArrayDifference
|
|
131
|
+
const useArrayEvery: typeof import('@vueuse/core').useArrayEvery
|
|
132
|
+
const useArrayFilter: typeof import('@vueuse/core').useArrayFilter
|
|
133
|
+
const useArrayFind: typeof import('@vueuse/core').useArrayFind
|
|
134
|
+
const useArrayFindIndex: typeof import('@vueuse/core').useArrayFindIndex
|
|
135
|
+
const useArrayFindLast: typeof import('@vueuse/core').useArrayFindLast
|
|
136
|
+
const useArrayIncludes: typeof import('@vueuse/core').useArrayIncludes
|
|
137
|
+
const useArrayJoin: typeof import('@vueuse/core').useArrayJoin
|
|
138
|
+
const useArrayMap: typeof import('@vueuse/core').useArrayMap
|
|
139
|
+
const useArrayReduce: typeof import('@vueuse/core').useArrayReduce
|
|
140
|
+
const useArraySome: typeof import('@vueuse/core').useArraySome
|
|
141
|
+
const useArrayUnique: typeof import('@vueuse/core').useArrayUnique
|
|
142
|
+
const useAsyncQueue: typeof import('@vueuse/core').useAsyncQueue
|
|
143
|
+
const useAsyncState: typeof import('@vueuse/core').useAsyncState
|
|
70
144
|
const useAttrs: typeof import('vue').useAttrs
|
|
145
|
+
const useBase64: typeof import('@vueuse/core').useBase64
|
|
146
|
+
const useBattery: typeof import('@vueuse/core').useBattery
|
|
147
|
+
const useBluetooth: typeof import('@vueuse/core').useBluetooth
|
|
148
|
+
const useBreakpoints: typeof import('@vueuse/core').useBreakpoints
|
|
149
|
+
const useBroadcastChannel: typeof import('@vueuse/core').useBroadcastChannel
|
|
150
|
+
const useBrowserLocation: typeof import('@vueuse/core').useBrowserLocation
|
|
151
|
+
const useCached: typeof import('@vueuse/core').useCached
|
|
152
|
+
const useClipboard: typeof import('@vueuse/core').useClipboard
|
|
153
|
+
const useClipboardItems: typeof import('@vueuse/core').useClipboardItems
|
|
154
|
+
const useCloned: typeof import('@vueuse/core').useCloned
|
|
155
|
+
const useColorMode: typeof import('@vueuse/core').useColorMode
|
|
156
|
+
const useConfirmDialog: typeof import('@vueuse/core').useConfirmDialog
|
|
157
|
+
const useCountdown: typeof import('@vueuse/core').useCountdown
|
|
158
|
+
const useCounter: typeof import('@vueuse/core').useCounter
|
|
71
159
|
const useCssModule: typeof import('vue').useCssModule
|
|
160
|
+
const useCssSupports: typeof import('@vueuse/core').useCssSupports
|
|
161
|
+
const useCssVar: typeof import('@vueuse/core').useCssVar
|
|
72
162
|
const useCssVars: typeof import('vue').useCssVars
|
|
163
|
+
const useCurrentElement: typeof import('@vueuse/core').useCurrentElement
|
|
164
|
+
const useCycleList: typeof import('@vueuse/core').useCycleList
|
|
165
|
+
const useDark: typeof import('@vueuse/core').useDark
|
|
166
|
+
const useDateFormat: typeof import('@vueuse/core').useDateFormat
|
|
167
|
+
const useDebounce: typeof import('@vueuse/core').useDebounce
|
|
168
|
+
const useDebounceFn: typeof import('@vueuse/core').useDebounceFn
|
|
169
|
+
const useDebouncedRefHistory: typeof import('@vueuse/core').useDebouncedRefHistory
|
|
170
|
+
const useDeviceMotion: typeof import('@vueuse/core').useDeviceMotion
|
|
171
|
+
const useDeviceOrientation: typeof import('@vueuse/core').useDeviceOrientation
|
|
172
|
+
const useDevicePixelRatio: typeof import('@vueuse/core').useDevicePixelRatio
|
|
173
|
+
const useDevicesList: typeof import('@vueuse/core').useDevicesList
|
|
174
|
+
const useDisplayMedia: typeof import('@vueuse/core').useDisplayMedia
|
|
175
|
+
const useDocumentVisibility: typeof import('@vueuse/core').useDocumentVisibility
|
|
176
|
+
const useDraggable: typeof import('@vueuse/core').useDraggable
|
|
177
|
+
const useDropZone: typeof import('@vueuse/core').useDropZone
|
|
178
|
+
const useElementBounding: typeof import('@vueuse/core').useElementBounding
|
|
179
|
+
const useElementByPoint: typeof import('@vueuse/core').useElementByPoint
|
|
180
|
+
const useElementHover: typeof import('@vueuse/core').useElementHover
|
|
181
|
+
const useElementSize: typeof import('@vueuse/core').useElementSize
|
|
182
|
+
const useElementVisibility: typeof import('@vueuse/core').useElementVisibility
|
|
183
|
+
const useEventBus: typeof import('@vueuse/core').useEventBus
|
|
184
|
+
const useEventListener: typeof import('@vueuse/core').useEventListener
|
|
185
|
+
const useEventSource: typeof import('@vueuse/core').useEventSource
|
|
186
|
+
const useEyeDropper: typeof import('@vueuse/core').useEyeDropper
|
|
187
|
+
const useFavicon: typeof import('@vueuse/core').useFavicon
|
|
188
|
+
const useFetch: typeof import('@vueuse/core').useFetch
|
|
189
|
+
const useFileDialog: typeof import('@vueuse/core').useFileDialog
|
|
190
|
+
const useFileSystemAccess: typeof import('@vueuse/core').useFileSystemAccess
|
|
191
|
+
const useFocus: typeof import('@vueuse/core').useFocus
|
|
192
|
+
const useFocusWithin: typeof import('@vueuse/core').useFocusWithin
|
|
193
|
+
const useFps: typeof import('@vueuse/core').useFps
|
|
194
|
+
const useFullscreen: typeof import('@vueuse/core').useFullscreen
|
|
195
|
+
const useGamepad: typeof import('@vueuse/core').useGamepad
|
|
196
|
+
const useGeolocation: typeof import('@vueuse/core').useGeolocation
|
|
73
197
|
const useId: typeof import('vue').useId
|
|
198
|
+
const useIdle: typeof import('@vueuse/core').useIdle
|
|
199
|
+
const useImage: typeof import('@vueuse/core').useImage
|
|
200
|
+
const useInfiniteScroll: typeof import('@vueuse/core').useInfiniteScroll
|
|
201
|
+
const useIntersectionObserver: typeof import('@vueuse/core').useIntersectionObserver
|
|
202
|
+
const useInterval: typeof import('@vueuse/core').useInterval
|
|
203
|
+
const useIntervalFn: typeof import('@vueuse/core').useIntervalFn
|
|
204
|
+
const useKeyModifier: typeof import('@vueuse/core').useKeyModifier
|
|
205
|
+
const useLastChanged: typeof import('@vueuse/core').useLastChanged
|
|
74
206
|
const useLink: typeof import('vue-router').useLink
|
|
207
|
+
const useLocalStorage: typeof import('@vueuse/core').useLocalStorage
|
|
208
|
+
const useMagicKeys: typeof import('@vueuse/core').useMagicKeys
|
|
209
|
+
const useManualRefHistory: typeof import('@vueuse/core').useManualRefHistory
|
|
210
|
+
const useMediaControls: typeof import('@vueuse/core').useMediaControls
|
|
211
|
+
const useMediaQuery: typeof import('@vueuse/core').useMediaQuery
|
|
212
|
+
const useMemoize: typeof import('@vueuse/core').useMemoize
|
|
213
|
+
const useMemory: typeof import('@vueuse/core').useMemory
|
|
75
214
|
const useModel: typeof import('vue').useModel
|
|
215
|
+
const useMounted: typeof import('@vueuse/core').useMounted
|
|
216
|
+
const useMouse: typeof import('@vueuse/core').useMouse
|
|
217
|
+
const useMouseInElement: typeof import('@vueuse/core').useMouseInElement
|
|
218
|
+
const useMousePressed: typeof import('@vueuse/core').useMousePressed
|
|
219
|
+
const useMutationObserver: typeof import('@vueuse/core').useMutationObserver
|
|
220
|
+
const useNavigatorLanguage: typeof import('@vueuse/core').useNavigatorLanguage
|
|
221
|
+
const useNetwork: typeof import('@vueuse/core').useNetwork
|
|
222
|
+
const useNow: typeof import('@vueuse/core').useNow
|
|
223
|
+
const useObjectUrl: typeof import('@vueuse/core').useObjectUrl
|
|
224
|
+
const useOffsetPagination: typeof import('@vueuse/core').useOffsetPagination
|
|
225
|
+
const useOnline: typeof import('@vueuse/core').useOnline
|
|
226
|
+
const usePageLeave: typeof import('@vueuse/core').usePageLeave
|
|
227
|
+
const useParallax: typeof import('@vueuse/core').useParallax
|
|
228
|
+
const useParentElement: typeof import('@vueuse/core').useParentElement
|
|
229
|
+
const usePerformanceObserver: typeof import('@vueuse/core').usePerformanceObserver
|
|
230
|
+
const usePermission: typeof import('@vueuse/core').usePermission
|
|
231
|
+
const usePointer: typeof import('@vueuse/core').usePointer
|
|
232
|
+
const usePointerLock: typeof import('@vueuse/core').usePointerLock
|
|
233
|
+
const usePointerSwipe: typeof import('@vueuse/core').usePointerSwipe
|
|
234
|
+
const usePreferredColorScheme: typeof import('@vueuse/core').usePreferredColorScheme
|
|
235
|
+
const usePreferredContrast: typeof import('@vueuse/core').usePreferredContrast
|
|
236
|
+
const usePreferredDark: typeof import('@vueuse/core').usePreferredDark
|
|
237
|
+
const usePreferredLanguages: typeof import('@vueuse/core').usePreferredLanguages
|
|
238
|
+
const usePreferredReducedMotion: typeof import('@vueuse/core').usePreferredReducedMotion
|
|
239
|
+
const usePreferredReducedTransparency: typeof import('@vueuse/core').usePreferredReducedTransparency
|
|
240
|
+
const usePrevious: typeof import('@vueuse/core').usePrevious
|
|
241
|
+
const useRafFn: typeof import('@vueuse/core').useRafFn
|
|
242
|
+
const useRefHistory: typeof import('@vueuse/core').useRefHistory
|
|
243
|
+
const useResizeObserver: typeof import('@vueuse/core').useResizeObserver
|
|
76
244
|
const useRoute: typeof import('vue-router').useRoute
|
|
77
245
|
const useRouter: typeof import('vue-router').useRouter
|
|
246
|
+
const useSSRWidth: typeof import('@vueuse/core').useSSRWidth
|
|
247
|
+
const useScreenOrientation: typeof import('@vueuse/core').useScreenOrientation
|
|
248
|
+
const useScreenSafeArea: typeof import('@vueuse/core').useScreenSafeArea
|
|
249
|
+
const useScriptTag: typeof import('@vueuse/core').useScriptTag
|
|
250
|
+
const useScroll: typeof import('@vueuse/core').useScroll
|
|
251
|
+
const useScrollLock: typeof import('@vueuse/core').useScrollLock
|
|
252
|
+
const useSessionStorage: typeof import('@vueuse/core').useSessionStorage
|
|
253
|
+
const useShare: typeof import('@vueuse/core').useShare
|
|
78
254
|
const useSlots: typeof import('vue').useSlots
|
|
255
|
+
const useSorted: typeof import('@vueuse/core').useSorted
|
|
256
|
+
const useSpeechRecognition: typeof import('@vueuse/core').useSpeechRecognition
|
|
257
|
+
const useSpeechSynthesis: typeof import('@vueuse/core').useSpeechSynthesis
|
|
258
|
+
const useStepper: typeof import('@vueuse/core').useStepper
|
|
259
|
+
const useStorage: typeof import('@vueuse/core').useStorage
|
|
260
|
+
const useStorageAsync: typeof import('@vueuse/core').useStorageAsync
|
|
261
|
+
const useStyleTag: typeof import('@vueuse/core').useStyleTag
|
|
262
|
+
const useSupported: typeof import('@vueuse/core').useSupported
|
|
263
|
+
const useSwipe: typeof import('@vueuse/core').useSwipe
|
|
79
264
|
const useTemplateRef: typeof import('vue').useTemplateRef
|
|
265
|
+
const useTemplateRefsList: typeof import('@vueuse/core').useTemplateRefsList
|
|
266
|
+
const useTextDirection: typeof import('@vueuse/core').useTextDirection
|
|
267
|
+
const useTextSelection: typeof import('@vueuse/core').useTextSelection
|
|
268
|
+
const useTextareaAutosize: typeof import('@vueuse/core').useTextareaAutosize
|
|
269
|
+
const useThrottle: typeof import('@vueuse/core').useThrottle
|
|
270
|
+
const useThrottleFn: typeof import('@vueuse/core').useThrottleFn
|
|
271
|
+
const useThrottledRefHistory: typeof import('@vueuse/core').useThrottledRefHistory
|
|
272
|
+
const useTimeAgo: typeof import('@vueuse/core').useTimeAgo
|
|
273
|
+
const useTimeAgoIntl: typeof import('@vueuse/core').useTimeAgoIntl
|
|
274
|
+
const useTimeout: typeof import('@vueuse/core').useTimeout
|
|
275
|
+
const useTimeoutFn: typeof import('@vueuse/core').useTimeoutFn
|
|
276
|
+
const useTimeoutPoll: typeof import('@vueuse/core').useTimeoutPoll
|
|
277
|
+
const useTimestamp: typeof import('@vueuse/core').useTimestamp
|
|
278
|
+
const useTitle: typeof import('@vueuse/core').useTitle
|
|
279
|
+
const useToNumber: typeof import('@vueuse/core').useToNumber
|
|
280
|
+
const useToString: typeof import('@vueuse/core').useToString
|
|
281
|
+
const useToggle: typeof import('@vueuse/core').useToggle
|
|
282
|
+
const useTransition: typeof import('@vueuse/core').useTransition
|
|
283
|
+
const useUrlSearchParams: typeof import('@vueuse/core').useUrlSearchParams
|
|
284
|
+
const useUserMedia: typeof import('@vueuse/core').useUserMedia
|
|
285
|
+
const useVModel: typeof import('@vueuse/core').useVModel
|
|
286
|
+
const useVModels: typeof import('@vueuse/core').useVModels
|
|
287
|
+
const useVibrate: typeof import('@vueuse/core').useVibrate
|
|
288
|
+
const useVirtualList: typeof import('@vueuse/core').useVirtualList
|
|
289
|
+
const useWakeLock: typeof import('@vueuse/core').useWakeLock
|
|
290
|
+
const useWebNotification: typeof import('@vueuse/core').useWebNotification
|
|
291
|
+
const useWebSocket: typeof import('@vueuse/core').useWebSocket
|
|
292
|
+
const useWebWorker: typeof import('@vueuse/core').useWebWorker
|
|
293
|
+
const useWebWorkerFn: typeof import('@vueuse/core').useWebWorkerFn
|
|
294
|
+
const useWindowFocus: typeof import('@vueuse/core').useWindowFocus
|
|
295
|
+
const useWindowScroll: typeof import('@vueuse/core').useWindowScroll
|
|
296
|
+
const useWindowSize: typeof import('@vueuse/core').useWindowSize
|
|
80
297
|
const watch: typeof import('vue').watch
|
|
298
|
+
const watchArray: typeof import('@vueuse/core').watchArray
|
|
299
|
+
const watchAtMost: typeof import('@vueuse/core').watchAtMost
|
|
300
|
+
const watchDebounced: typeof import('@vueuse/core').watchDebounced
|
|
301
|
+
const watchDeep: typeof import('@vueuse/core').watchDeep
|
|
81
302
|
const watchEffect: typeof import('vue').watchEffect
|
|
303
|
+
const watchIgnorable: typeof import('@vueuse/core').watchIgnorable
|
|
304
|
+
const watchImmediate: typeof import('@vueuse/core').watchImmediate
|
|
305
|
+
const watchOnce: typeof import('@vueuse/core').watchOnce
|
|
306
|
+
const watchPausable: typeof import('@vueuse/core').watchPausable
|
|
82
307
|
const watchPostEffect: typeof import('vue').watchPostEffect
|
|
83
308
|
const watchSyncEffect: typeof import('vue').watchSyncEffect
|
|
309
|
+
const watchThrottled: typeof import('@vueuse/core').watchThrottled
|
|
310
|
+
const watchTriggerable: typeof import('@vueuse/core').watchTriggerable
|
|
311
|
+
const watchWithFilter: typeof import('@vueuse/core').watchWithFilter
|
|
312
|
+
const whenever: typeof import('@vueuse/core').whenever
|
|
84
313
|
}
|
|
85
314
|
// for type re-export
|
|
86
315
|
declare global {
|
|
@@ -12,25 +12,74 @@ export {}
|
|
|
12
12
|
/* prettier-ignore */
|
|
13
13
|
declare module 'vue' {
|
|
14
14
|
export interface GlobalComponents {
|
|
15
|
+
ChangePassword: typeof import('./src/components/login/change-password.vue')['default']
|
|
16
|
+
ElBadge: typeof import('element-plus/es')['ElBadge']
|
|
15
17
|
ElButton: typeof import('element-plus/es')['ElButton']
|
|
16
18
|
ElCard: typeof import('element-plus/es')['ElCard']
|
|
19
|
+
ElCol: typeof import('element-plus/es')['ElCol']
|
|
20
|
+
ElDatePicker: typeof import('element-plus/es')['ElDatePicker']
|
|
21
|
+
ElDialog: typeof import('element-plus/es')['ElDialog']
|
|
22
|
+
ElDropdown: typeof import('element-plus/es')['ElDropdown']
|
|
23
|
+
ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem']
|
|
24
|
+
ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu']
|
|
25
|
+
ElForm: typeof import('element-plus/es')['ElForm']
|
|
26
|
+
ElFormItem: typeof import('element-plus/es')['ElFormItem']
|
|
27
|
+
ElIcon: typeof import('element-plus/es')['ElIcon']
|
|
17
28
|
ElInput: typeof import('element-plus/es')['ElInput']
|
|
29
|
+
ElMenu: typeof import('element-plus/es')['ElMenu']
|
|
30
|
+
ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
|
|
31
|
+
ElOption: typeof import('element-plus/es')['ElOption']
|
|
32
|
+
ElPagination: typeof import('element-plus/es')['ElPagination']
|
|
33
|
+
ElRow: typeof import('element-plus/es')['ElRow']
|
|
34
|
+
ElSelect: typeof import('element-plus/es')['ElSelect']
|
|
35
|
+
ElSubMenu: typeof import('element-plus/es')['ElSubMenu']
|
|
36
|
+
ElSwitch: typeof import('element-plus/es')['ElSwitch']
|
|
37
|
+
ElTable: typeof import('element-plus/es')['ElTable']
|
|
38
|
+
ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
|
|
18
39
|
Header: typeof import('./src/components/layout/header.vue')['default']
|
|
19
40
|
LeftRight: typeof import('./src/components/layout/left-right.vue')['default']
|
|
20
41
|
Menu: typeof import('./src/components/layout/menu.vue')['default']
|
|
21
42
|
RouterLink: typeof import('vue-router')['RouterLink']
|
|
22
43
|
RouterView: typeof import('vue-router')['RouterView']
|
|
44
|
+
UpDown: typeof import('./src/components/layout/up-down.vue')['default']
|
|
45
|
+
UserLogin: typeof import('./src/components/login/user-login.vue')['default']
|
|
46
|
+
}
|
|
47
|
+
export interface GlobalDirectives {
|
|
48
|
+
vLoading: typeof import('element-plus/es')['ElLoadingDirective']
|
|
23
49
|
}
|
|
24
50
|
}
|
|
25
51
|
|
|
26
52
|
// For TSX support
|
|
27
53
|
declare global {
|
|
54
|
+
const ChangePassword: typeof import('./src/components/login/change-password.vue')['default']
|
|
55
|
+
const ElBadge: typeof import('element-plus/es')['ElBadge']
|
|
28
56
|
const ElButton: typeof import('element-plus/es')['ElButton']
|
|
29
57
|
const ElCard: typeof import('element-plus/es')['ElCard']
|
|
58
|
+
const ElCol: typeof import('element-plus/es')['ElCol']
|
|
59
|
+
const ElDatePicker: typeof import('element-plus/es')['ElDatePicker']
|
|
60
|
+
const ElDialog: typeof import('element-plus/es')['ElDialog']
|
|
61
|
+
const ElDropdown: typeof import('element-plus/es')['ElDropdown']
|
|
62
|
+
const ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem']
|
|
63
|
+
const ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu']
|
|
64
|
+
const ElForm: typeof import('element-plus/es')['ElForm']
|
|
65
|
+
const ElFormItem: typeof import('element-plus/es')['ElFormItem']
|
|
66
|
+
const ElIcon: typeof import('element-plus/es')['ElIcon']
|
|
30
67
|
const ElInput: typeof import('element-plus/es')['ElInput']
|
|
68
|
+
const ElMenu: typeof import('element-plus/es')['ElMenu']
|
|
69
|
+
const ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
|
|
70
|
+
const ElOption: typeof import('element-plus/es')['ElOption']
|
|
71
|
+
const ElPagination: typeof import('element-plus/es')['ElPagination']
|
|
72
|
+
const ElRow: typeof import('element-plus/es')['ElRow']
|
|
73
|
+
const ElSelect: typeof import('element-plus/es')['ElSelect']
|
|
74
|
+
const ElSubMenu: typeof import('element-plus/es')['ElSubMenu']
|
|
75
|
+
const ElSwitch: typeof import('element-plus/es')['ElSwitch']
|
|
76
|
+
const ElTable: typeof import('element-plus/es')['ElTable']
|
|
77
|
+
const ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
|
|
31
78
|
const Header: typeof import('./src/components/layout/header.vue')['default']
|
|
32
79
|
const LeftRight: typeof import('./src/components/layout/left-right.vue')['default']
|
|
33
80
|
const Menu: typeof import('./src/components/layout/menu.vue')['default']
|
|
34
81
|
const RouterLink: typeof import('vue-router')['RouterLink']
|
|
35
82
|
const RouterView: typeof import('vue-router')['RouterView']
|
|
83
|
+
const UpDown: typeof import('./src/components/layout/up-down.vue')['default']
|
|
84
|
+
const UserLogin: typeof import('./src/components/login/user-login.vue')['default']
|
|
36
85
|
}
|
|
@@ -28,6 +28,7 @@ export default defineConfigWithVueTs(
|
|
|
28
28
|
"spaced-comment": ["error", "always", { markers: ["/"] }], // 注释 // 或 /* 开始后的间距的一致性
|
|
29
29
|
"vue/attributes-order": "error", // vue属性排序
|
|
30
30
|
"vue/multi-word-component-names": "off", // vue多单词组件名称
|
|
31
|
+
"@typescript-eslint/no-explicit-any": "off", // 是否禁止使用任何显式类型
|
|
31
32
|
},
|
|
32
33
|
},
|
|
33
34
|
)
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<!doctype html>
|
|
2
|
-
<html lang="">
|
|
2
|
+
<html lang="zh">
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
|
-
<link rel="shortcut icon" type="image/svg" href="/favicon.svg" />
|
|
5
|
+
<link rel="shortcut icon" type="image/svg" href="./src/assets/favicon.svg" />
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
7
|
<title>vue3.5.25模版</title>
|
|
8
8
|
</head>
|
|
@@ -18,8 +18,9 @@
|
|
|
18
18
|
"format": "prettier --write --experimental-cli src/"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
+
"@element-plus/icons-vue": "^2.3.2",
|
|
22
|
+
"@vueuse/core": "^14.2.1",
|
|
21
23
|
"element-plus": "^2.12.0",
|
|
22
|
-
"l-global": "^1.0.5",
|
|
23
24
|
"pinia": "^3.0.4",
|
|
24
25
|
"pinia-plugin-persistedstate": "^4.7.1",
|
|
25
26
|
"unplugin-vue-router": "^0.19.2",
|
|
@@ -40,6 +41,7 @@
|
|
|
40
41
|
"npm-run-all2": "^8.0.4",
|
|
41
42
|
"prettier": "3.6.2",
|
|
42
43
|
"typescript": "~5.9.0",
|
|
44
|
+
"unocss": "^66.6.0",
|
|
43
45
|
"unplugin-auto-import": "^20.3.0",
|
|
44
46
|
"unplugin-vue-components": "^30.0.0",
|
|
45
47
|
"vite": "^7.2.4",
|