cmpt-huitu-cli 1.0.0
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/README.md +169 -0
- package/bin/huitu.js +30 -0
- package/package.json +38 -0
- package/src/create.js +127 -0
- package/src/versions.js +23 -0
- package/templates/default/README.md +127 -0
- package/templates/default/eslint.config.js +187 -0
- package/templates/default/index.html +38 -0
- package/templates/default/jsconfig.json +29 -0
- package/templates/default/package.json +56 -0
- package/templates/default/public/.DS_Store +0 -0
- package/templates/default/public/config/envCfg.js +68 -0
- package/templates/default/public/images/favicon.ico +0 -0
- package/templates/default/src/.DS_Store +0 -0
- package/templates/default/src/App.vue +49 -0
- package/templates/default/src/assets/.DS_Store +0 -0
- package/templates/default/src/assets/empty.png +0 -0
- package/templates/default/src/assets/images/.DS_Store +0 -0
- package/templates/default/src/assets/images/404/403_1.png +0 -0
- package/templates/default/src/assets/images/404/404.png +0 -0
- package/templates/default/src/assets/images/404/404_2.png +0 -0
- package/templates/default/src/assets/images/404/404_cloud.png +0 -0
- package/templates/default/src/assets/images/login/img.png +0 -0
- package/templates/default/src/assets/images/login/logo.png +0 -0
- package/templates/default/src/assets/images/login/person.png +0 -0
- package/templates/default/src/components/.DS_Store +0 -0
- package/templates/default/src/components/error/Error.vue +259 -0
- package/templates/default/src/components.d.ts +18 -0
- package/templates/default/src/imports.d.ts +90 -0
- package/templates/default/src/main.js +27 -0
- package/templates/default/src/routers/base.js +41 -0
- package/templates/default/src/routers/guard.js +43 -0
- package/templates/default/src/routers/index.js +36 -0
- package/templates/default/src/routers/modules/example.js +17 -0
- package/templates/default/src/services/.DS_Store +0 -0
- package/templates/default/src/services/login.js +32 -0
- package/templates/default/src/stores/README.md +317 -0
- package/templates/default/src/stores/index/global.js +49 -0
- package/templates/default/src/stores/index/template.js +31 -0
- package/templates/default/src/stores/index.js +14 -0
- package/templates/default/src/stores//344/275/277/347/224/250/347/244/272/344/276/213.vue +94 -0
- package/templates/default/src/styles/index.scss +23 -0
- package/templates/default/src/styles/theme/README.md +52 -0
- package/templates/default/src/styles/theme/variables.scss +62 -0
- package/templates/default/src/utils/RequestCache.js +198 -0
- package/templates/default/src/utils/auth.js +51 -0
- package/templates/default/src/utils/errorCode.js +16 -0
- package/templates/default/src/utils/index.js +519 -0
- package/templates/default/src/utils/requestAxios.js +148 -0
- package/templates/default/src/utils/theme.js +20 -0
- package/templates/default/src/views/About.vue +6 -0
- package/templates/default/src/views/Home.vue +111 -0
- package/templates/default/src/views/login/index.vue +285 -0
- package/templates/default/vite/plugins/autoComponents.js +18 -0
- package/templates/default/vite/plugins/autoImport.js +13 -0
- package/templates/default/vite/plugins/compression.js +24 -0
- package/templates/default/vite/plugins/externals.js +8 -0
- package/templates/default/vite/plugins/index.js +18 -0
- package/templates/default/vite/plugins/visualizer.js +11 -0
- package/templates/default/vite.config.js +185 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html data-theme="light">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<link
|
|
6
|
+
rel="icon"
|
|
7
|
+
href="/images/favicon.ico"
|
|
8
|
+
/>
|
|
9
|
+
<meta
|
|
10
|
+
name="viewport"
|
|
11
|
+
content="width=device-width, initial-scale=1.0"
|
|
12
|
+
/>
|
|
13
|
+
<title>系统模板</title>
|
|
14
|
+
<style>
|
|
15
|
+
* {
|
|
16
|
+
margin: 0;
|
|
17
|
+
padding: 0;
|
|
18
|
+
list-style: none;
|
|
19
|
+
}
|
|
20
|
+
html,
|
|
21
|
+
body,
|
|
22
|
+
#app {
|
|
23
|
+
height: 100%;
|
|
24
|
+
}
|
|
25
|
+
</style>
|
|
26
|
+
</head>
|
|
27
|
+
<body>
|
|
28
|
+
<div id="app"></div>
|
|
29
|
+
<script
|
|
30
|
+
type="text/javascript"
|
|
31
|
+
src="/config/envCfg.js"
|
|
32
|
+
></script>
|
|
33
|
+
<script
|
|
34
|
+
type="module"
|
|
35
|
+
src="/src/main.js"
|
|
36
|
+
></script>
|
|
37
|
+
</body>
|
|
38
|
+
</html>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
/*
|
|
3
|
+
注意:本文件是vscode智能提示配置文件
|
|
4
|
+
如:import xxx 输入’@‘后会有提示
|
|
5
|
+
注意这儿的快捷@和@public要和vite.config.js中resolve.alias一致
|
|
6
|
+
*/
|
|
7
|
+
"compilerOptions": {
|
|
8
|
+
"target": "ES6",
|
|
9
|
+
"module": "commonjs",
|
|
10
|
+
"allowSyntheticDefaultImports": true,
|
|
11
|
+
"baseUrl": "./",
|
|
12
|
+
"paths": {
|
|
13
|
+
"@/*": ["src/*"],
|
|
14
|
+
"@public/*": ["public/*"],
|
|
15
|
+
"@pages/*": ["src/pages/*"],
|
|
16
|
+
"@components/*": ["src/components/*"],
|
|
17
|
+
"@views/*": ["src/views/*"],
|
|
18
|
+
"@routers/*": ["src/routers/*"],
|
|
19
|
+
"@stores/*": ["src/stores/*"],
|
|
20
|
+
"@styles/*": ["src/styles/*"],
|
|
21
|
+
"@utils/*": ["src/utils/*"],
|
|
22
|
+
"@assets/*": ["src/assets/*"],
|
|
23
|
+
"@services/*": ["src/services/*"],
|
|
24
|
+
"@plugins/*": ["src/plugins/*"]
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"exclude": ["node_modules"],
|
|
28
|
+
"include": ["src", "public"]
|
|
29
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@huitu/app-template",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "慧图新一代前端Vue3项目脚手架",
|
|
5
|
+
"private": true,
|
|
6
|
+
"type": "module",
|
|
7
|
+
"engines": {
|
|
8
|
+
"node": "^20.19.0 || >=22.12.0",
|
|
9
|
+
"npm": ">=10.8.0"
|
|
10
|
+
},
|
|
11
|
+
"scripts": {
|
|
12
|
+
"dev": "vite",
|
|
13
|
+
"build": "vite build",
|
|
14
|
+
"preview": "vite preview",
|
|
15
|
+
"lint": "prettier --write --ignore-path .prettierignore . && eslint --fix --cache --cache-location ./node_modules/.cache/eslint/"
|
|
16
|
+
},
|
|
17
|
+
"dependencies": {
|
|
18
|
+
"@element-plus/icons-vue": "^2.3.2",
|
|
19
|
+
"@esbuild/darwin-arm64": "^0.27.0",
|
|
20
|
+
"cmpt-huitu-ui": "workspace:*",
|
|
21
|
+
"cmpt-huitu-utils": "workspace:*",
|
|
22
|
+
"axios": "^1.11.0",
|
|
23
|
+
"dayjs": "^1.11.18",
|
|
24
|
+
"element-plus": "^2.11.1",
|
|
25
|
+
"lodash-es": "^4.17.21",
|
|
26
|
+
"nprogress": "^0.2.0",
|
|
27
|
+
"pinia": "^3.0.3",
|
|
28
|
+
"vue": "^3.5.18",
|
|
29
|
+
"vue-router": "^4.5.1"
|
|
30
|
+
},
|
|
31
|
+
"devDependencies": {
|
|
32
|
+
"@babel/eslint-parser": "^7.28.4",
|
|
33
|
+
"@vitejs/plugin-vue": "^6.0.1",
|
|
34
|
+
"eslint": "^9.35.0",
|
|
35
|
+
"eslint-config-prettier": "^10.1.8",
|
|
36
|
+
"eslint-plugin-prettier": "^5.5.4",
|
|
37
|
+
"eslint-plugin-vue": "^10.4.0",
|
|
38
|
+
"mockjs": "^1.1.0",
|
|
39
|
+
"prettier": "^3.0.0",
|
|
40
|
+
"rollup-plugin-visualizer": "^6.0.0",
|
|
41
|
+
"sass": "^1.26.5",
|
|
42
|
+
"unplugin-auto-import": "^20.1.0",
|
|
43
|
+
"unplugin-vue-components": "^29.0.0",
|
|
44
|
+
"vite": "^7.1.5",
|
|
45
|
+
"vite-plugin-compression": "^0.5.1",
|
|
46
|
+
"vite-plugin-externals": "^0.6.2",
|
|
47
|
+
"vite-plugin-vue-devtools": "^8.0.0",
|
|
48
|
+
"vue-eslint-parser": "^10.2.0"
|
|
49
|
+
},
|
|
50
|
+
"browserslist": [
|
|
51
|
+
"defaults",
|
|
52
|
+
"IE 10-11",
|
|
53
|
+
"Firefox ESR",
|
|
54
|
+
"not < 0.25%"
|
|
55
|
+
]
|
|
56
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* @FileDescription: 环境配置文件模板
|
|
3
|
+
* @Author: template
|
|
4
|
+
* @Date: 2026-01-04
|
|
5
|
+
* @Description: 此文件为配置模板,请根据实际项目需求修改配置项
|
|
6
|
+
*/
|
|
7
|
+
;(function (win) {
|
|
8
|
+
'use strict'
|
|
9
|
+
const origin = win.location.protocol + '//' + win.location.hostname + (win.location.port ? ':' + win.location.port : '')
|
|
10
|
+
|
|
11
|
+
const config = {
|
|
12
|
+
// ========== 登录配置 ==========
|
|
13
|
+
// 统一认证平台基础地址(如果使用 SSO)
|
|
14
|
+
LoginUnifyBase: origin + '/sso',
|
|
15
|
+
// 统一认证客户端 ID
|
|
16
|
+
LoginUnifyAuthClientid: 'your-client-id',
|
|
17
|
+
// 统一认证租户名称
|
|
18
|
+
LoginUnifyAuthTenant: 'your-tenant-name',
|
|
19
|
+
|
|
20
|
+
// ========== API 配置 ==========
|
|
21
|
+
/**
|
|
22
|
+
* 后台接口 API 地址
|
|
23
|
+
* 本地开发:使用代理路径,如 '/api'
|
|
24
|
+
* 生产环境:使用完整 URL,如 origin + '/api/'
|
|
25
|
+
*/
|
|
26
|
+
apiUrlNew: origin + '/api/',
|
|
27
|
+
|
|
28
|
+
// ========== 文件服务配置 ==========
|
|
29
|
+
// 文件上传地址
|
|
30
|
+
uploadUrl: origin + '/upload',
|
|
31
|
+
// 文件下载地址
|
|
32
|
+
downloadUrl: origin + '/download',
|
|
33
|
+
// 文件预览地址
|
|
34
|
+
filePreviewUrl: origin + '/preview',
|
|
35
|
+
|
|
36
|
+
// ========== 地图服务配置(如果使用地图功能)==========
|
|
37
|
+
// 底图服务地址
|
|
38
|
+
baseMapUrl: origin + '/map-server',
|
|
39
|
+
// 天地图代理地址(如果使用天地图)
|
|
40
|
+
tiandituAgentBaseUrl: origin + '/tianditu/',
|
|
41
|
+
// 热力图服务地址
|
|
42
|
+
heatMapUrl: origin + '/heatmap/wms',
|
|
43
|
+
|
|
44
|
+
// ========== 系统基础设置 ==========
|
|
45
|
+
// 是否开启全局 Loading
|
|
46
|
+
screenLoadingVisible: true,
|
|
47
|
+
// 地图图标尺寸 [宽度, 高度]
|
|
48
|
+
mapImgSize: [24, 24],
|
|
49
|
+
// 地图图标缩放比例
|
|
50
|
+
mapImgScale: 1,
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// 将配置挂载到全局对象
|
|
54
|
+
if (!('HT_EnvConfig' in win)) {
|
|
55
|
+
win.HT_EnvConfig = config
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// 设置默认页面标题(可根据项目修改)
|
|
59
|
+
document.title = '系统模板'
|
|
60
|
+
|
|
61
|
+
// 全局数据存储对象(用于存储地图实例等)
|
|
62
|
+
if (!('HTDataStorage' in win)) {
|
|
63
|
+
win.HTDataStorage = {
|
|
64
|
+
// 地图对象存储(以容器 id 为键名)
|
|
65
|
+
$map: {},
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
})(window)
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div
|
|
3
|
+
id="app"
|
|
4
|
+
class="app-container"
|
|
5
|
+
>
|
|
6
|
+
<el-container>
|
|
7
|
+
<el-header>
|
|
8
|
+
<div class="logo">Huitu Standard Template</div>
|
|
9
|
+
<div class="nav">
|
|
10
|
+
<router-link to="/">Home</router-link> |
|
|
11
|
+
<router-link to="/about">About</router-link>
|
|
12
|
+
<div @click="handleClick">你好</div>
|
|
13
|
+
</div>
|
|
14
|
+
</el-header>
|
|
15
|
+
<el-main>
|
|
16
|
+
<router-view v-slot="{ Component, route }">
|
|
17
|
+
<keep-alive>
|
|
18
|
+
<component
|
|
19
|
+
:is="Component"
|
|
20
|
+
v-if="route.meta.keepAlive"
|
|
21
|
+
:key="route.path"
|
|
22
|
+
/>
|
|
23
|
+
</keep-alive>
|
|
24
|
+
<component
|
|
25
|
+
:is="Component"
|
|
26
|
+
v-if="!route.meta.keepAlive"
|
|
27
|
+
:key="route.path"
|
|
28
|
+
/>
|
|
29
|
+
</router-view>
|
|
30
|
+
</el-main>
|
|
31
|
+
</el-container>
|
|
32
|
+
</div>
|
|
33
|
+
</template>
|
|
34
|
+
|
|
35
|
+
<script setup>
|
|
36
|
+
import { useRouter } from 'vue-router'
|
|
37
|
+
|
|
38
|
+
const router = useRouter()
|
|
39
|
+
|
|
40
|
+
const handleClick = () => {
|
|
41
|
+
router.push('/about')
|
|
42
|
+
}
|
|
43
|
+
</script>
|
|
44
|
+
|
|
45
|
+
<style lang="scss">
|
|
46
|
+
#app {
|
|
47
|
+
touch-action: none;
|
|
48
|
+
}
|
|
49
|
+
</style>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
* @FileDescription: 错误页面(401,403,404)
|
|
3
|
+
* @Author: yans
|
|
4
|
+
* @Date: 2025/10/24
|
|
5
|
+
* @LastEditors: Please set LastEditors
|
|
6
|
+
* @LastEditTime: 2025-10-24 16:56:39
|
|
7
|
+
-->
|
|
8
|
+
<template>
|
|
9
|
+
<div style="height: 100%; width: 100%; background: #eee">
|
|
10
|
+
<div class="wscn-http404-container">
|
|
11
|
+
<div class="wscn-http404">
|
|
12
|
+
<div class="pic-404">
|
|
13
|
+
<img
|
|
14
|
+
alt="404"
|
|
15
|
+
class="pic-404__parent"
|
|
16
|
+
src="@assets/images/404/403_1.png"
|
|
17
|
+
/>
|
|
18
|
+
<img
|
|
19
|
+
alt="404"
|
|
20
|
+
class="pic-404__child left"
|
|
21
|
+
src="@assets/images/404/404_cloud.png"
|
|
22
|
+
/>
|
|
23
|
+
<img
|
|
24
|
+
alt="404"
|
|
25
|
+
class="pic-404__child mid"
|
|
26
|
+
src="@assets/images/404/404_cloud.png"
|
|
27
|
+
/>
|
|
28
|
+
<img
|
|
29
|
+
alt="404"
|
|
30
|
+
class="pic-404__child right"
|
|
31
|
+
src="@assets/images/404/404_cloud.png"
|
|
32
|
+
/>
|
|
33
|
+
</div>
|
|
34
|
+
<div class="bullshit">
|
|
35
|
+
<div class="bullshit__oops">出错了!</div>
|
|
36
|
+
<div class="bullshit__info">版权所有© 系统模板</div>
|
|
37
|
+
<div class="bullshit__headline">页面未找到或权限受限</div>
|
|
38
|
+
<div class="bullshit__info">请检查您输入的网址是否正确,或单击下面的按钮返回首页。</div>
|
|
39
|
+
<a
|
|
40
|
+
class="bullshit__return-home"
|
|
41
|
+
href="/"
|
|
42
|
+
>返回首页</a
|
|
43
|
+
>
|
|
44
|
+
</div>
|
|
45
|
+
</div>
|
|
46
|
+
</div>
|
|
47
|
+
</div>
|
|
48
|
+
</template>
|
|
49
|
+
|
|
50
|
+
<script setup></script>
|
|
51
|
+
|
|
52
|
+
<style lang="scss" scoped>
|
|
53
|
+
.wscn-http404-container {
|
|
54
|
+
transform: translate(-50%, -50%);
|
|
55
|
+
position: absolute;
|
|
56
|
+
top: 40%;
|
|
57
|
+
left: 50%;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.wscn-http404 {
|
|
61
|
+
position: relative;
|
|
62
|
+
width: 1200px;
|
|
63
|
+
padding: 0 50px;
|
|
64
|
+
overflow: hidden;
|
|
65
|
+
|
|
66
|
+
.pic-404 {
|
|
67
|
+
position: relative;
|
|
68
|
+
float: left;
|
|
69
|
+
width: 600px;
|
|
70
|
+
overflow: hidden;
|
|
71
|
+
|
|
72
|
+
&__parent {
|
|
73
|
+
width: 100%;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
&__child {
|
|
77
|
+
position: absolute;
|
|
78
|
+
|
|
79
|
+
&.left {
|
|
80
|
+
width: 80px;
|
|
81
|
+
top: 17px;
|
|
82
|
+
left: 220px;
|
|
83
|
+
opacity: 0;
|
|
84
|
+
animation-name: cloudLeft;
|
|
85
|
+
animation-duration: 2s;
|
|
86
|
+
animation-timing-function: linear;
|
|
87
|
+
animation-fill-mode: forwards;
|
|
88
|
+
animation-delay: 1s;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
&.mid {
|
|
92
|
+
width: 46px;
|
|
93
|
+
top: 10px;
|
|
94
|
+
left: 420px;
|
|
95
|
+
opacity: 0;
|
|
96
|
+
animation-name: cloudMid;
|
|
97
|
+
animation-duration: 2s;
|
|
98
|
+
animation-timing-function: linear;
|
|
99
|
+
animation-fill-mode: forwards;
|
|
100
|
+
animation-delay: 1.2s;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
&.right {
|
|
104
|
+
width: 62px;
|
|
105
|
+
top: 100px;
|
|
106
|
+
left: 500px;
|
|
107
|
+
opacity: 0;
|
|
108
|
+
animation-name: cloudRight;
|
|
109
|
+
animation-duration: 2s;
|
|
110
|
+
animation-timing-function: linear;
|
|
111
|
+
animation-fill-mode: forwards;
|
|
112
|
+
animation-delay: 1s;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
@keyframes cloudLeft {
|
|
116
|
+
0% {
|
|
117
|
+
top: 17px;
|
|
118
|
+
left: 220px;
|
|
119
|
+
opacity: 0;
|
|
120
|
+
}
|
|
121
|
+
20% {
|
|
122
|
+
top: 33px;
|
|
123
|
+
left: 188px;
|
|
124
|
+
opacity: 1;
|
|
125
|
+
}
|
|
126
|
+
80% {
|
|
127
|
+
top: 81px;
|
|
128
|
+
left: 92px;
|
|
129
|
+
opacity: 1;
|
|
130
|
+
}
|
|
131
|
+
100% {
|
|
132
|
+
top: 97px;
|
|
133
|
+
left: 60px;
|
|
134
|
+
opacity: 0;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
@keyframes cloudMid {
|
|
138
|
+
0% {
|
|
139
|
+
top: 10px;
|
|
140
|
+
left: 420px;
|
|
141
|
+
opacity: 0;
|
|
142
|
+
}
|
|
143
|
+
20% {
|
|
144
|
+
top: 40px;
|
|
145
|
+
left: 360px;
|
|
146
|
+
opacity: 1;
|
|
147
|
+
}
|
|
148
|
+
70% {
|
|
149
|
+
top: 130px;
|
|
150
|
+
left: 180px;
|
|
151
|
+
opacity: 1;
|
|
152
|
+
}
|
|
153
|
+
100% {
|
|
154
|
+
top: 160px;
|
|
155
|
+
left: 120px;
|
|
156
|
+
opacity: 0;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
@keyframes cloudRight {
|
|
160
|
+
0% {
|
|
161
|
+
top: 100px;
|
|
162
|
+
left: 500px;
|
|
163
|
+
opacity: 0;
|
|
164
|
+
}
|
|
165
|
+
20% {
|
|
166
|
+
top: 120px;
|
|
167
|
+
left: 460px;
|
|
168
|
+
opacity: 1;
|
|
169
|
+
}
|
|
170
|
+
80% {
|
|
171
|
+
top: 180px;
|
|
172
|
+
left: 340px;
|
|
173
|
+
opacity: 1;
|
|
174
|
+
}
|
|
175
|
+
100% {
|
|
176
|
+
top: 200px;
|
|
177
|
+
left: 300px;
|
|
178
|
+
opacity: 0;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
.bullshit {
|
|
185
|
+
position: relative;
|
|
186
|
+
float: left;
|
|
187
|
+
width: 300px;
|
|
188
|
+
padding: 30px 0;
|
|
189
|
+
overflow: hidden;
|
|
190
|
+
|
|
191
|
+
&__oops {
|
|
192
|
+
font-size: 32px;
|
|
193
|
+
font-weight: bold;
|
|
194
|
+
line-height: 40px;
|
|
195
|
+
color: #1482f0;
|
|
196
|
+
opacity: 0;
|
|
197
|
+
margin-bottom: 20px;
|
|
198
|
+
animation-name: slideUp;
|
|
199
|
+
animation-duration: 0.5s;
|
|
200
|
+
animation-fill-mode: forwards;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
&__headline {
|
|
204
|
+
font-size: 20px;
|
|
205
|
+
line-height: 24px;
|
|
206
|
+
color: #222;
|
|
207
|
+
font-weight: bold;
|
|
208
|
+
opacity: 0;
|
|
209
|
+
margin-bottom: 10px;
|
|
210
|
+
animation-name: slideUp;
|
|
211
|
+
animation-duration: 0.5s;
|
|
212
|
+
animation-delay: 0.1s;
|
|
213
|
+
animation-fill-mode: forwards;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
&__info {
|
|
217
|
+
font-size: 13px;
|
|
218
|
+
line-height: 21px;
|
|
219
|
+
color: grey;
|
|
220
|
+
opacity: 0;
|
|
221
|
+
margin-bottom: 30px;
|
|
222
|
+
animation-name: slideUp;
|
|
223
|
+
animation-duration: 0.5s;
|
|
224
|
+
animation-delay: 0.2s;
|
|
225
|
+
animation-fill-mode: forwards;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
&__return-home {
|
|
229
|
+
display: block;
|
|
230
|
+
float: left;
|
|
231
|
+
width: 110px;
|
|
232
|
+
height: 36px;
|
|
233
|
+
background: #1482f0;
|
|
234
|
+
border-radius: 100px;
|
|
235
|
+
text-align: center;
|
|
236
|
+
color: #ffffff;
|
|
237
|
+
opacity: 0;
|
|
238
|
+
font-size: 14px;
|
|
239
|
+
line-height: 36px;
|
|
240
|
+
cursor: pointer;
|
|
241
|
+
animation-name: slideUp;
|
|
242
|
+
animation-duration: 0.5s;
|
|
243
|
+
animation-delay: 0.3s;
|
|
244
|
+
animation-fill-mode: forwards;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
@keyframes slideUp {
|
|
248
|
+
0% {
|
|
249
|
+
transform: translateY(60px);
|
|
250
|
+
opacity: 0;
|
|
251
|
+
}
|
|
252
|
+
100% {
|
|
253
|
+
transform: translateY(0);
|
|
254
|
+
opacity: 1;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
</style>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
// @ts-nocheck
|
|
3
|
+
// Generated by unplugin-vue-components
|
|
4
|
+
// Read more: https://github.com/vuejs/core/pull/3399
|
|
5
|
+
// biome-ignore lint: disable
|
|
6
|
+
export {}
|
|
7
|
+
|
|
8
|
+
/* prettier-ignore */
|
|
9
|
+
declare module 'vue' {
|
|
10
|
+
export interface GlobalComponents {
|
|
11
|
+
About: typeof import('./views/About.vue')['default']
|
|
12
|
+
Error: typeof import('./components/error/Error.vue')['default']
|
|
13
|
+
Home: typeof import('./views/Home.vue')['default']
|
|
14
|
+
Login: typeof import('./views/login/index.vue')['default']
|
|
15
|
+
RouterLink: typeof import('vue-router')['RouterLink']
|
|
16
|
+
RouterView: typeof import('vue-router')['RouterView']
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/* prettier-ignore */
|
|
3
|
+
// @ts-nocheck
|
|
4
|
+
// noinspection JSUnusedGlobalSymbols
|
|
5
|
+
// Generated by unplugin-auto-import
|
|
6
|
+
// biome-ignore lint: disable
|
|
7
|
+
export {}
|
|
8
|
+
declare global {
|
|
9
|
+
const EffectScope: typeof import('vue')['EffectScope']
|
|
10
|
+
const acceptHMRUpdate: typeof import('pinia')['acceptHMRUpdate']
|
|
11
|
+
const computed: typeof import('vue')['computed']
|
|
12
|
+
const createApp: typeof import('vue')['createApp']
|
|
13
|
+
const createPinia: typeof import('pinia')['createPinia']
|
|
14
|
+
const customRef: typeof import('vue')['customRef']
|
|
15
|
+
const defineAsyncComponent: typeof import('vue')['defineAsyncComponent']
|
|
16
|
+
const defineComponent: typeof import('vue')['defineComponent']
|
|
17
|
+
const defineStore: typeof import('pinia')['defineStore']
|
|
18
|
+
const effectScope: typeof import('vue')['effectScope']
|
|
19
|
+
const getActivePinia: typeof import('pinia')['getActivePinia']
|
|
20
|
+
const getCurrentInstance: typeof import('vue')['getCurrentInstance']
|
|
21
|
+
const getCurrentScope: typeof import('vue')['getCurrentScope']
|
|
22
|
+
const getCurrentWatcher: typeof import('vue')['getCurrentWatcher']
|
|
23
|
+
const h: typeof import('vue')['h']
|
|
24
|
+
const inject: typeof import('vue')['inject']
|
|
25
|
+
const isProxy: typeof import('vue')['isProxy']
|
|
26
|
+
const isReactive: typeof import('vue')['isReactive']
|
|
27
|
+
const isReadonly: typeof import('vue')['isReadonly']
|
|
28
|
+
const isRef: typeof import('vue')['isRef']
|
|
29
|
+
const isShallow: typeof import('vue')['isShallow']
|
|
30
|
+
const mapActions: typeof import('pinia')['mapActions']
|
|
31
|
+
const mapGetters: typeof import('pinia')['mapGetters']
|
|
32
|
+
const mapState: typeof import('pinia')['mapState']
|
|
33
|
+
const mapStores: typeof import('pinia')['mapStores']
|
|
34
|
+
const mapWritableState: typeof import('pinia')['mapWritableState']
|
|
35
|
+
const markRaw: typeof import('vue')['markRaw']
|
|
36
|
+
const nextTick: typeof import('vue')['nextTick']
|
|
37
|
+
const onActivated: typeof import('vue')['onActivated']
|
|
38
|
+
const onBeforeMount: typeof import('vue')['onBeforeMount']
|
|
39
|
+
const onBeforeRouteLeave: typeof import('vue-router')['onBeforeRouteLeave']
|
|
40
|
+
const onBeforeRouteUpdate: typeof import('vue-router')['onBeforeRouteUpdate']
|
|
41
|
+
const onBeforeUnmount: typeof import('vue')['onBeforeUnmount']
|
|
42
|
+
const onBeforeUpdate: typeof import('vue')['onBeforeUpdate']
|
|
43
|
+
const onDeactivated: typeof import('vue')['onDeactivated']
|
|
44
|
+
const onErrorCaptured: typeof import('vue')['onErrorCaptured']
|
|
45
|
+
const onMounted: typeof import('vue')['onMounted']
|
|
46
|
+
const onRenderTracked: typeof import('vue')['onRenderTracked']
|
|
47
|
+
const onRenderTriggered: typeof import('vue')['onRenderTriggered']
|
|
48
|
+
const onScopeDispose: typeof import('vue')['onScopeDispose']
|
|
49
|
+
const onServerPrefetch: typeof import('vue')['onServerPrefetch']
|
|
50
|
+
const onUnmounted: typeof import('vue')['onUnmounted']
|
|
51
|
+
const onUpdated: typeof import('vue')['onUpdated']
|
|
52
|
+
const onWatcherCleanup: typeof import('vue')['onWatcherCleanup']
|
|
53
|
+
const provide: typeof import('vue')['provide']
|
|
54
|
+
const reactive: typeof import('vue')['reactive']
|
|
55
|
+
const readonly: typeof import('vue')['readonly']
|
|
56
|
+
const ref: typeof import('vue')['ref']
|
|
57
|
+
const resolveComponent: typeof import('vue')['resolveComponent']
|
|
58
|
+
const setActivePinia: typeof import('pinia')['setActivePinia']
|
|
59
|
+
const setMapStoreSuffix: typeof import('pinia')['setMapStoreSuffix']
|
|
60
|
+
const shallowReactive: typeof import('vue')['shallowReactive']
|
|
61
|
+
const shallowReadonly: typeof import('vue')['shallowReadonly']
|
|
62
|
+
const shallowRef: typeof import('vue')['shallowRef']
|
|
63
|
+
const storeToRefs: typeof import('pinia')['storeToRefs']
|
|
64
|
+
const toRaw: typeof import('vue')['toRaw']
|
|
65
|
+
const toRef: typeof import('vue')['toRef']
|
|
66
|
+
const toRefs: typeof import('vue')['toRefs']
|
|
67
|
+
const toValue: typeof import('vue')['toValue']
|
|
68
|
+
const triggerRef: typeof import('vue')['triggerRef']
|
|
69
|
+
const unref: typeof import('vue')['unref']
|
|
70
|
+
const useAttrs: typeof import('vue')['useAttrs']
|
|
71
|
+
const useCssModule: typeof import('vue')['useCssModule']
|
|
72
|
+
const useCssVars: typeof import('vue')['useCssVars']
|
|
73
|
+
const useId: typeof import('vue')['useId']
|
|
74
|
+
const useLink: typeof import('vue-router')['useLink']
|
|
75
|
+
const useModel: typeof import('vue')['useModel']
|
|
76
|
+
const useRoute: typeof import('vue-router')['useRoute']
|
|
77
|
+
const useRouter: typeof import('vue-router')['useRouter']
|
|
78
|
+
const useSlots: typeof import('vue')['useSlots']
|
|
79
|
+
const useTemplateRef: typeof import('vue')['useTemplateRef']
|
|
80
|
+
const watch: typeof import('vue')['watch']
|
|
81
|
+
const watchEffect: typeof import('vue')['watchEffect']
|
|
82
|
+
const watchPostEffect: typeof import('vue')['watchPostEffect']
|
|
83
|
+
const watchSyncEffect: typeof import('vue')['watchSyncEffect']
|
|
84
|
+
}
|
|
85
|
+
// for type re-export
|
|
86
|
+
declare global {
|
|
87
|
+
// @ts-ignore
|
|
88
|
+
export type { Component, Slot, Slots, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, ShallowRef, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue'
|
|
89
|
+
import('vue')
|
|
90
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { createApp } from 'vue'
|
|
2
|
+
import App from './App.vue'
|
|
3
|
+
import router from './routers'
|
|
4
|
+
import { createPinia } from 'pinia'
|
|
5
|
+
import ElementPlus from 'element-plus'
|
|
6
|
+
import 'element-plus/dist/index.css'
|
|
7
|
+
|
|
8
|
+
// 引入项目样式
|
|
9
|
+
import '@/styles/index.scss'
|
|
10
|
+
|
|
11
|
+
// 引入 Monorepo 共享包
|
|
12
|
+
import * as HuituUtils from 'cmpt-huitu-utils'
|
|
13
|
+
import HuituUI from 'cmpt-huitu-ui'
|
|
14
|
+
|
|
15
|
+
const app = createApp(App)
|
|
16
|
+
|
|
17
|
+
app.use(router)
|
|
18
|
+
app.use(createPinia())
|
|
19
|
+
app.use(ElementPlus)
|
|
20
|
+
|
|
21
|
+
// 注册 Huitu UI 组件
|
|
22
|
+
app.use(HuituUI)
|
|
23
|
+
|
|
24
|
+
// 挂载工具函数到全局 (可选)
|
|
25
|
+
app.config.globalProperties.$utils = HuituUtils
|
|
26
|
+
|
|
27
|
+
app.mount('#app')
|