diff --git a/.env.example b/.env.example
new file mode 100644
index 0000000..3688863
--- /dev/null
+++ b/.env.example
@@ -0,0 +1,2 @@
+VITE_AMAP_API_KEY=xxx
+VITE_BACKEND_URL=http://kuroneko.bison-banana.ts.net:35000
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 5610a11..585d73f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
node_modules
target
dist
-.env
\ No newline at end of file
+.env
+.vite-ssg-temp
\ No newline at end of file
diff --git a/.vscode/launch.json b/.vscode/launch.json
new file mode 100644
index 0000000..3f6cfbf
--- /dev/null
+++ b/.vscode/launch.json
@@ -0,0 +1,15 @@
+{
+ // Use IntelliSense to learn about possible attributes.
+ // Hover to view descriptions of existing attributes.
+ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
+ "version": "0.2.0",
+ "configurations": [
+ {
+ "type": "msedge",
+ "request": "launch",
+ "name": "Launch Edge against localhost",
+ "url": "http://localhost:3333",
+ "webRoot": "${workspaceFolder}"
+ }
+ ]
+}
diff --git a/package.json b/package.json
index 013d8f1..68cee9f 100644
--- a/package.json
+++ b/package.json
@@ -6,7 +6,7 @@
"build": "vite-ssg build",
"dev": "vite --port 3333 --open",
"lint": "eslint .",
- "preview": "vite preview",
+ "preview": "vite preview --port 35122",
"preview-https": "serve dist",
"test": "vitest",
"test:e2e": "cypress open",
@@ -85,7 +85,8 @@
"vite-ssg": "^25.0.0",
"vite-ssg-sitemap": "^0.8.1",
"vitest": "^2.1.8",
- "vue-tsc": "^2.2.0"
+ "vue-tsc": "^2.2.0",
+ "workbox-window": "^7.3.0"
},
"resolutions": {
"unplugin": "^2.1.2",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 663d6fa..58e16b7 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -196,7 +196,7 @@ importers:
version: 10.0.6(rollup@4.30.1)(vite@6.0.7(@types/node@20.2.3)(jiti@2.4.0)(stylus@0.57.0)(terser@5.17.6)(tsx@4.19.2)(yaml@2.6.1))
vite-plugin-pwa:
specifier: ^0.21.1
- version: 0.21.1(vite@6.0.7(@types/node@20.2.3)(jiti@2.4.0)(stylus@0.57.0)(terser@5.17.6)(tsx@4.19.2)(yaml@2.6.1))(workbox-build@7.1.1)(workbox-window@7.1.0)
+ version: 0.21.1(vite@6.0.7(@types/node@20.2.3)(jiti@2.4.0)(stylus@0.57.0)(terser@5.17.6)(tsx@4.19.2)(yaml@2.6.1))(workbox-build@7.1.1)(workbox-window@7.3.0)
vite-plugin-vue-devtools:
specifier: ^7.7.0
version: 7.7.0(rollup@4.30.1)(vite@6.0.7(@types/node@20.2.3)(jiti@2.4.0)(stylus@0.57.0)(terser@5.17.6)(tsx@4.19.2)(yaml@2.6.1))(vue@3.5.13(typescript@5.7.3))
@@ -215,6 +215,9 @@ importers:
vue-tsc:
specifier: ^2.2.0
version: 2.2.0(typescript@5.7.3)
+ workbox-window:
+ specifier: ^7.3.0
+ version: 7.3.0
packages:
@@ -6179,6 +6182,9 @@ packages:
workbox-core@7.1.0:
resolution: {integrity: sha512-5KB4KOY8rtL31nEF7BfvU7FMzKT4B5TkbYa2tzkS+Peqj0gayMT9SytSFtNzlrvMaWgv6y/yvP9C0IbpFjV30Q==}
+ workbox-core@7.3.0:
+ resolution: {integrity: sha512-Z+mYrErfh4t3zi7NVTvOuACB0A/jA3bgxUN3PwtAVHvfEsZxV9Iju580VEETug3zYJRc0Dmii/aixI/Uxj8fmw==}
+
workbox-expiration@7.1.0:
resolution: {integrity: sha512-m5DcMY+A63rJlPTbbBNtpJ20i3enkyOtSgYfv/l8h+D6YbbNiA0zKEkCUaMsdDlxggla1oOfRkyqTvl5Ni5KQQ==}
@@ -6212,6 +6218,9 @@ packages:
workbox-window@7.1.0:
resolution: {integrity: sha512-ZHeROyqR+AS5UPzholQRDttLFqGMwP0Np8MKWAdyxsDETxq3qOAyXvqessc3GniohG6e0mAqSQyKOHmT8zPF7g==}
+ workbox-window@7.3.0:
+ resolution: {integrity: sha512-qW8PDy16OV1UBaUNGlTVcepzrlzyzNW/ZJvFQQs2j2TzGsg6IKjcpZC1RSquqQnTOafl5pCj5bGfAHlCjOOjdA==}
+
wrap-ansi@6.2.0:
resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
engines: {node: '>=8'}
@@ -13162,14 +13171,14 @@ snapshots:
- rollup
- supports-color
- vite-plugin-pwa@0.21.1(vite@6.0.7(@types/node@20.2.3)(jiti@2.4.0)(stylus@0.57.0)(terser@5.17.6)(tsx@4.19.2)(yaml@2.6.1))(workbox-build@7.1.1)(workbox-window@7.1.0):
+ vite-plugin-pwa@0.21.1(vite@6.0.7(@types/node@20.2.3)(jiti@2.4.0)(stylus@0.57.0)(terser@5.17.6)(tsx@4.19.2)(yaml@2.6.1))(workbox-build@7.1.1)(workbox-window@7.3.0):
dependencies:
debug: 4.4.0(supports-color@8.1.1)
pretty-bytes: 6.1.1
tinyglobby: 0.2.10
vite: 6.0.7(@types/node@20.2.3)(jiti@2.4.0)(stylus@0.57.0)(terser@5.17.6)(tsx@4.19.2)(yaml@2.6.1)
workbox-build: 7.1.1
- workbox-window: 7.1.0
+ workbox-window: 7.3.0
transitivePeerDependencies:
- supports-color
@@ -13485,6 +13494,8 @@ snapshots:
workbox-core@7.1.0: {}
+ workbox-core@7.3.0: {}
+
workbox-expiration@7.1.0:
dependencies:
idb: 7.1.1
@@ -13540,6 +13551,11 @@ snapshots:
'@types/trusted-types': 2.0.3
workbox-core: 7.1.0
+ workbox-window@7.3.0:
+ dependencies:
+ '@types/trusted-types': 2.0.3
+ workbox-core: 7.3.0
+
wrap-ansi@6.2.0:
dependencies:
ansi-styles: 4.3.0
diff --git a/src/App.vue b/src/App.vue
index d5048b7..5c62b3e 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -3,7 +3,7 @@
// you can use this to manipulate the document head in any components,
// they will be rendered correctly in the html results with vite-ssg
useHead({
- title: 'Project Vertex',
+ title: '季节内台风预报系统',
meta: [
{
name: 'description',
diff --git a/src/assets/colorbar.png b/src/assets/colorbar.png
new file mode 100644
index 0000000..48a44fb
Binary files /dev/null and b/src/assets/colorbar.png differ
diff --git a/src/components.d.ts b/src/components.d.ts
index 072ffbc..70e1b69 100644
--- a/src/components.d.ts
+++ b/src/components.d.ts
@@ -7,6 +7,7 @@ export {}
/* prettier-ignore */
declare module 'vue' {
export interface GlobalComponents {
+ AMapClient: typeof import('./components/AMapClient.vue')['default']
Badge: typeof import('./components/ui/badge/Badge.vue')['default']
Button: typeof import('./components/ui/button/Button.vue')['default']
Calendar: typeof import('./components/ui/calendar/Calendar.vue')['default']
@@ -42,7 +43,6 @@ declare module 'vue' {
PopoverContent: typeof import('./components/ui/popover/PopoverContent.vue')['default']
PopoverTrigger: typeof import('./components/ui/popover/PopoverTrigger.vue')['default']
PosForm: typeof import('./components/PosForm.vue')['default']
- README: typeof import('./components/README.md')['default']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
Select: typeof import('./components/ui/select/Select.vue')['default']
@@ -66,8 +66,6 @@ declare module 'vue' {
TableHeader: typeof import('./components/ui/table/TableHeader.vue')['default']
TableRow: typeof import('./components/ui/table/TableRow.vue')['default']
Textarea: typeof import('./components/ui/textarea/Textarea.vue')['default']
- TheCounter: typeof import('./components/TheCounter.vue')['default']
- TheFooter: typeof import('./components/TheFooter.vue')['default']
TheInput: typeof import('./components/TheInput.vue')['default']
Tooltip: typeof import('./components/ui/tooltip/Tooltip.vue')['default']
TooltipContent: typeof import('./components/ui/tooltip/TooltipContent.vue')['default']
diff --git a/src/components/AMapClient.vue b/src/components/AMapClient.vue
new file mode 100644
index 0000000..9a6714c
--- /dev/null
+++ b/src/components/AMapClient.vue
@@ -0,0 +1,162 @@
+