diff --git a/frontend/delivery_admin/.env.example b/frontend/delivery_admin/.env.example
index 1ee0a4d..f6facdf 100644
--- a/frontend/delivery_admin/.env.example
+++ b/frontend/delivery_admin/.env.example
@@ -1,3 +1,4 @@
-VITE_API_BASE_URL=http://localhost:12426/heqi/delivery/v1
+# 可选覆盖;开发默认 http://localhost:12426/heqi/delivery/v1,生产构建默认 http://rest.heqiapp.com/heqi/delivery/v1。
+VITE_API_BASE_URL=
# 受保护 API 使用 BSM JWT;本地联调时由认证服务签发,不要提交真实令牌。
VITE_DEV_JWT=
diff --git a/frontend/delivery_admin/README.md b/frontend/delivery_admin/README.md
index 170405e..a80ee91 100644
--- a/frontend/delivery_admin/README.md
+++ b/frontend/delivery_admin/README.md
@@ -1,6 +1,6 @@
# 和气配送点管理系统
-配送点管理端使用 Vue 3、TypeScript、Vite、Pinia 和 Arco Design,开发端口为 `5176`,默认 API 为 `http://localhost:12426/heqi/delivery/v1`。
+配送点管理端使用 Vue 3、TypeScript、Vite、Pinia 和 Arco Design,开发端口为 `5176`。开发默认 API 为 `http://localhost:12426/heqi/delivery/v1`,生产构建默认 API 为 `http://rest.heqiapp.com/heqi/delivery/v1`。
```bash
pnpm install
diff --git a/frontend/delivery_admin/config/vite.config.ts b/frontend/delivery_admin/config/vite.config.ts
index f779c18..59788da 100644
--- a/frontend/delivery_admin/config/vite.config.ts
+++ b/frontend/delivery_admin/config/vite.config.ts
@@ -5,7 +5,7 @@ import { resolve } from 'path';
import visualizer from 'rollup-plugin-visualizer';
import { ArcoResolver } from 'unplugin-vue-components/resolvers';
import Components from 'unplugin-vue-components/vite';
-import { defineConfig, type PluginOption } from 'vite';
+import { defineConfig, loadEnv, type PluginOption } from 'vite';
import compressPlugin from 'vite-plugin-compression';
import svgLoader from 'vite-svg-loader';
@@ -29,6 +29,10 @@ function manualChunks(id: string) {
export default defineConfig(({ command, mode }) => {
const isDev = command === 'serve';
const isReport = mode === 'report';
+ const env = loadEnv(mode, process.cwd(), '');
+ const apiBaseURL =
+ env.VITE_API_BASE_URL ||
+ `${isDev ? 'http://localhost:12426' : 'http://rest.heqiapp.com'}/heqi/delivery/v1`;
const plugins: PluginOption[] = [
vue(),
@@ -60,6 +64,9 @@ export default defineConfig(({ command, mode }) => {
}
return {
+ define: {
+ 'import.meta.env.VITE_API_BASE_URL': JSON.stringify(apiBaseURL),
+ },
plugins,
resolve: {
alias: [
diff --git a/frontend/gas_admin/.env.example b/frontend/gas_admin/.env.example
index ab83e84..22eccbe 100644
--- a/frontend/gas_admin/.env.example
+++ b/frontend/gas_admin/.env.example
@@ -1,3 +1,4 @@
-VITE_API_BASE_URL=http://localhost:12426/heqi/gas/v1
+# 可选覆盖;开发默认 http://localhost:12426/heqi/gas/v1,生产构建默认 http://rest.heqiapp.com/heqi/gas/v1。
+VITE_API_BASE_URL=
# 受保护 API 使用 BSM JWT;本地联调时由认证服务签发,不要提交真实令牌。
VITE_DEV_JWT=
diff --git a/frontend/gas_admin/README.md b/frontend/gas_admin/README.md
index f55b34f..e986c4d 100644
--- a/frontend/gas_admin/README.md
+++ b/frontend/gas_admin/README.md
@@ -23,5 +23,5 @@ pnpm build
| 变量 | 说明 |
| --- | --- |
-| `VITE_API_BASE_URL` | 后端 API 地址,默认 `http://localhost:12426/heqi/gas/v1` |
+| `VITE_API_BASE_URL` | 可选覆盖后端 API 地址;开发默认 `http://localhost:12426/heqi/gas/v1`,生产构建默认 `http://rest.heqiapp.com/heqi/gas/v1` |
| `VITE_ERROR_REPORT_URL` | 可选的前端错误上报地址 |
diff --git a/frontend/gas_admin/config/vite.config.ts b/frontend/gas_admin/config/vite.config.ts
index 447faa4..74dec60 100644
--- a/frontend/gas_admin/config/vite.config.ts
+++ b/frontend/gas_admin/config/vite.config.ts
@@ -5,7 +5,7 @@ import { resolve } from 'path';
import visualizer from 'rollup-plugin-visualizer';
import { ArcoResolver } from 'unplugin-vue-components/resolvers';
import Components from 'unplugin-vue-components/vite';
-import { defineConfig, type PluginOption } from 'vite';
+import { defineConfig, loadEnv, type PluginOption } from 'vite';
import compressPlugin from 'vite-plugin-compression';
import svgLoader from 'vite-svg-loader';
@@ -29,6 +29,10 @@ function manualChunks(id: string) {
export default defineConfig(({ command, mode }) => {
const isDev = command === 'serve';
const isReport = mode === 'report';
+ const env = loadEnv(mode, process.cwd(), '');
+ const apiBaseURL =
+ env.VITE_API_BASE_URL ||
+ `${isDev ? 'http://localhost:12426' : 'http://rest.heqiapp.com'}/heqi/gas/v1`;
const plugins: PluginOption[] = [
vue(),
@@ -60,6 +64,9 @@ export default defineConfig(({ command, mode }) => {
}
return {
+ define: {
+ 'import.meta.env.VITE_API_BASE_URL': JSON.stringify(apiBaseURL),
+ },
plugins,
resolve: {
alias: [
diff --git a/frontend/platform_admin/.env.example b/frontend/platform_admin/.env.example
index 6697367..44686e9 100644
--- a/frontend/platform_admin/.env.example
+++ b/frontend/platform_admin/.env.example
@@ -1,3 +1,4 @@
-VITE_API_BASE_URL=http://localhost:12426/heqi/v1
+# 可选覆盖;开发默认 http://localhost:12426/heqi/platform/v1,生产构建默认 http://rest.heqiapp.com/heqi/platform/v1。
+VITE_API_BASE_URL=
# 受保护 API 使用 BSM JWT;本地联调时由认证服务签发,不要提交真实令牌。
VITE_DEV_JWT=
diff --git a/frontend/platform_admin/README.md b/frontend/platform_admin/README.md
index d72355e..6cf9705 100644
--- a/frontend/platform_admin/README.md
+++ b/frontend/platform_admin/README.md
@@ -36,5 +36,5 @@ pnpm build
| 变量 | 说明 |
| --- | --- |
-| `VITE_API_BASE_URL` | 后端 API 地址,默认 `http://localhost:12426/heqi/platform/v1` |
+| `VITE_API_BASE_URL` | 可选覆盖后端 API 地址;开发默认 `http://localhost:12426/heqi/platform/v1`,生产构建默认 `http://rest.heqiapp.com/heqi/platform/v1` |
| `VITE_ERROR_REPORT_URL` | 可选的前端错误上报地址 |
diff --git a/frontend/platform_admin/config/vite.config.ts b/frontend/platform_admin/config/vite.config.ts
index 0fc6655..e50399f 100644
--- a/frontend/platform_admin/config/vite.config.ts
+++ b/frontend/platform_admin/config/vite.config.ts
@@ -5,7 +5,7 @@ import { resolve } from 'path';
import visualizer from 'rollup-plugin-visualizer';
import { ArcoResolver } from 'unplugin-vue-components/resolvers';
import Components from 'unplugin-vue-components/vite';
-import { defineConfig, type PluginOption } from 'vite';
+import { defineConfig, loadEnv, type PluginOption } from 'vite';
import compressPlugin from 'vite-plugin-compression';
import svgLoader from 'vite-svg-loader';
@@ -29,6 +29,10 @@ function manualChunks(id: string) {
export default defineConfig(({ command, mode }) => {
const isDev = command === 'serve';
const isReport = mode === 'report';
+ const env = loadEnv(mode, process.cwd(), '');
+ const apiBaseURL =
+ env.VITE_API_BASE_URL ||
+ `${isDev ? 'http://localhost:12426' : 'http://rest.heqiapp.com'}/heqi/platform/v1`;
const plugins: PluginOption[] = [
vue(),
@@ -60,6 +64,9 @@ export default defineConfig(({ command, mode }) => {
}
return {
+ define: {
+ 'import.meta.env.VITE_API_BASE_URL': JSON.stringify(apiBaseURL),
+ },
plugins,
resolve: {
alias: [
diff --git a/frontend/site/AGENTS.md b/frontend/site/AGENTS.md
index dafbf3c..e5e590f 100644
--- a/frontend/site/AGENTS.md
+++ b/frontend/site/AGENTS.md
@@ -11,6 +11,8 @@ Build app UI in `src/`. Keep `.openai/hosting.json`, `worker/index.js`, `scripts
## 和气门户设计约束
- 本项目是品牌化管理入口门户,不承载统一登录、运营数据或业务编辑。
+- 门户使用常规三行布局:头部展示 Logo、名称与口号,中间为广告语与滚动图 Banner,底部为三个管理系统入口。
+- Banner 保持紧凑,不占满页面剩余高度;三张轮播图分别对应平台、气站和配送场景。
- 桌面端优先一屏完成,移动端允许自然纵向滚动。
- 视觉语言延续三套管理系统登录页的半写实等距插画,并使用平台蓝、气站橙、配送青绿区分入口。
- 三个入口始终在新标签页打开,分别指向 `p.heqiapp.com`、`z.heqiapp.com` 与 `d.heqiapp.com`。
diff --git a/frontend/site/public/assets/banner-delivery.png b/frontend/site/public/assets/banner-delivery.png
new file mode 100644
index 0000000..c2586b4
Binary files /dev/null and b/frontend/site/public/assets/banner-delivery.png differ
diff --git a/frontend/site/public/assets/banner-gas-station.png b/frontend/site/public/assets/banner-gas-station.png
new file mode 100644
index 0000000..291a930
Binary files /dev/null and b/frontend/site/public/assets/banner-gas-station.png differ
diff --git a/frontend/site/public/assets/banner-platform.png b/frontend/site/public/assets/banner-platform.png
new file mode 100644
index 0000000..09a2557
Binary files /dev/null and b/frontend/site/public/assets/banner-platform.png differ
diff --git a/frontend/site/public/assets/heqi-ecosystem-hero.jpg b/frontend/site/public/assets/heqi-ecosystem-hero.jpg
deleted file mode 100644
index ea9177c..0000000
Binary files a/frontend/site/public/assets/heqi-ecosystem-hero.jpg and /dev/null differ
diff --git a/frontend/site/src/App.jsx b/frontend/site/src/App.jsx
index af56a29..840a410 100644
--- a/frontend/site/src/App.jsx
+++ b/frontend/site/src/App.jsx
@@ -1,9 +1,34 @@
+import { useEffect, useState } from "react";
import {
ArrowRight,
ArrowSquareOut,
ShieldCheck,
} from "@phosphor-icons/react";
+const slides = [
+ {
+ eyebrow: "平台协同",
+ title: "一屏统筹,安全连接每一程",
+ description: "连接智能瓶阀、气站运营与配送履约,让治理更清晰、协同更高效。",
+ image: "/assets/banner-platform.png",
+ position: "center center",
+ },
+ {
+ eyebrow: "智慧气站",
+ title: "让每一次供气更稳、更安心",
+ description: "以数字化能力贯通站点经营、安全服务与履约管理。",
+ image: "/assets/banner-gas-station.png",
+ position: "center center",
+ },
+ {
+ eyebrow: "高效配送",
+ title: "从调度到送达,全程清晰可追溯",
+ description: "智能连接配送资源与服务现场,让每一程都有迹可循。",
+ image: "/assets/banner-delivery.png",
+ position: "center center",
+ },
+];
+
const portals = [
{
number: "01",
@@ -37,64 +62,104 @@ function PortalLink({ portal }) {
rel="noreferrer"
aria-label={`进入${portal.title},将在新标签页打开`}
>
-
-
- {portal.number}
-
-
-
-
{portal.title}
-
{portal.description}
-
-
+
+ {portal.number}
+
+
+ {portal.title}
+ {portal.description}
+
进入系统
-
+
);
}
export function App() {
+ const [activeSlide, setActiveSlide] = useState(0);
+
+ useEffect(() => {
+ const timer = window.setInterval(() => {
+ setActiveSlide((current) => (current + 1) % slides.length);
+ }, 5000);
+
+ return () => window.clearInterval(timer);
+ }, []);
+
return (
-
-