feat: 完善项目功能和部署脚本

- 修复页面跳转白屏闪烁问题
- 集成过渡岗位页面(岗位装配中心)
- 添加iframe全屏嵌入(教务系统、就业规划)
- 优化企业资源卡片hover分裂效果
- 添加Windows和macOS快捷部署脚本
- 更新.gitignore忽略测试文件和缓存

🤖 Generated with Claude Code
This commit is contained in:
KQL
2025-12-04 16:03:31 +08:00
parent db6b5627a3
commit b0d2e629d9
9 changed files with 1234 additions and 239 deletions

8
.gitignore vendored
View File

@@ -5,12 +5,20 @@
.claude/
.vscode/
.idea/
.serena/
# Backup files
*.backup_*
*.backup
# Node
node_modules/
# Test folders (可以根据需要调整)
测试/
测试2/
测试3/
测试4/
# Local server (optional, can be included if needed)
# server.js

View File

@@ -81,7 +81,7 @@
max-height: 320px;
overflow-y: auto;
box-shadow: 0 10px 40px rgba(0, 0, 0, 0.3);
z-index: 1000;
z-index: 10000;
}
/* 搜索结果项 */

1130
index.html

File diff suppressed because it is too large Load Diff

View File

@@ -8,21 +8,15 @@ import { ListInterface } from './ui/ListInterface.js';
import { DetailInterface } from './ui/DetailInterface.js';
import { SearchController } from './ui/SearchController.js';
import { UIUtils } from './ui/UIUtils.js';
import { initWebsite, switchPage } from './website.js';
class App {
constructor() {
// 官网 DOM 引用
this.websiteContainer = document.getElementById('website-container');
this.appContainer = document.getElementById('app-container');
this.navbar = document.getElementById('navbar');
// 3D平台 DOM 引用
this.appContainer = document.getElementById('app-container');
this.canvasContainer = document.getElementById('canvas-container');
this.mapInterface = document.getElementById('map-interface');
this.listInterface = document.getElementById('list-interface');
this.detailInterface = document.getElementById('detail-interface');
this.mapLogoArea = document.getElementById('map-logo-area');
// UI 元素
this.uiLayer = document.getElementById('ui-layer');
@@ -44,10 +38,7 @@ class App {
// 初始化应用
async init() {
// 1. 优先初始化官网立即执行等待CSV加载
await initWebsite(() => this.switchToApp());
// 2. 初始化 3D 平台的控制器(但不启动场景)
// 初始化 3D 平台的控制器(但不启动
this.mapController = new MapInterface(
this.mapInterface,
(cityName) => this.showList(cityName)
@@ -100,28 +91,15 @@ class App {
});
}
// 3. 绑定全局函数和事件
// 绑定全局函数和事件
this.bindGlobalFunctions();
// 4. 默认显示官网首页
this.showWebsite();
}
// 显示官网确保官网可见3D隐藏
showWebsite() {
this.websiteContainer.classList.remove('hidden');
this.appContainer.classList.add('hidden');
this.navbar.classList.remove('-translate-y-full');
// 将应用实例暴露给全局,供页面切换使用
window.appInstance = this;
}
// 切换到 3D 内推平台
switchToApp() {
// 隐藏官网
this.websiteContainer.classList.add('hidden');
// 隐藏顶部导航栏(全屏体验)
this.navbar.classList.add('-translate-y-full');
// 显示 3D 容器
this.appContainer.classList.remove('hidden');
@@ -165,21 +143,6 @@ class App {
});
}
// 从 3D 平台返回官网
switchToWebsite(pageId = 'news') {
// 隐藏 3D 容器
this.appContainer.classList.add('hidden');
// 显示官网
this.websiteContainer.classList.remove('hidden');
// 显示导航栏
this.navbar.classList.remove('-translate-y-full');
// 切换到指定页面
switchPage(pageId);
}
// 转场完成回调3D地球 → 2D地图
onTransitionComplete() {
this.switchTo2D();
@@ -255,10 +218,11 @@ class App {
// 绑定全局函数和事件
bindGlobalFunctions() {
// 地图界面logo点击返回官网
if (this.mapLogoArea) {
this.mapLogoArea.addEventListener('click', () => {
this.switchToWebsite('news');
// 地图界面logo点击返回首页
const mapLogoArea = document.getElementById('map-logo-area');
if (mapLogoArea) {
mapLogoArea.addEventListener('click', () => {
window.backToHome();
});
}

View File

@@ -138,8 +138,11 @@ export class DetailInterface {
// 填充业务板块
this.renderSegments(company.segments);
// 显示界面
// 显示界面 - 先设置为不可见状态,避免闪烁
this.container.style.opacity = '0';
this.container.style.display = 'block';
// 立即淡入
gsap.to(this.container, {
opacity: 1,
duration: CONFIG.animation.ui.fadeDuration

View File

@@ -51,8 +51,11 @@ export class ListInterface {
this.cardsContainer.appendChild(card);
});
// 显示界面
// 显示界面 - 先设置为不可见状态,避免闪烁
this.container.style.opacity = '0';
this.container.style.display = 'block';
// 立即淡入
gsap.to(this.container, {
opacity: 1,
duration: CONFIG.animation.ui.fadeDuration

51
启动服务器.bat Normal file
View File

@@ -0,0 +1,51 @@
@echo off
chcp 65001 >nul
title 多多畅职大专生就业服务平台 - 局域网服务器
echo.
echo ========================================
echo 多多畅职大专生就业服务平台
echo 局域网服务器启动脚本 (Windows)
echo ========================================
echo.
:: 检查 Node.js 是否安装
where node >nul 2>nul
if %errorlevel% neq 0 (
echo [错误] 未检测到 Node.js
echo.
echo 请先安装 Node.js:
echo 下载地址: https://nodejs.org/
echo.
pause
exit /b 1
)
:: 显示 Node.js 版本
echo [信息] 检测到 Node.js 版本:
node --version
echo.
:: 检查 server.js 是否存在
if not exist "server.js" (
echo [错误] 找不到 server.js 文件!
echo 请确保在项目根目录运行此脚本。
echo.
pause
exit /b 1
)
:: 启动服务器
echo [启动] 正在启动局域网服务器...
echo.
echo ========================================
echo 提示: 按 Ctrl+C 可停止服务器
echo ========================================
echo.
node server.js
:: 如果服务器意外退出
echo.
echo [提示] 服务器已停止运行
pause

72
启动服务器.sh Executable file
View File

@@ -0,0 +1,72 @@
#!/bin/bash
# 设置脚本在遇到错误时不退出(允许自定义错误处理)
# set -e
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
CYAN='\033[0;36m'
NC='\033[0m' # No Color
# 清屏
clear
echo ""
echo "${CYAN}========================================"
echo " 多多畅职大专生就业服务平台"
echo " 局域网服务器启动脚本 (macOS/Linux)"
echo "========================================${NC}"
echo ""
# 检查 Node.js 是否安装
if ! command -v node &> /dev/null; then
echo "${RED}[错误] 未检测到 Node.js${NC}"
echo ""
echo "请先安装 Node.js:"
echo "下载地址: ${BLUE}https://nodejs.org/${NC}"
echo ""
echo "或使用 Homebrew 安装:"
echo "${YELLOW}brew install node${NC}"
echo ""
exit 1
fi
# 显示 Node.js 版本
echo "${GREEN}[信息] 检测到 Node.js 版本:${NC}"
node --version
echo ""
# 检查 server.js 是否存在
if [ ! -f "server.js" ]; then
echo "${RED}[错误] 找不到 server.js 文件!${NC}"
echo "请确保在项目根目录运行此脚本。"
echo ""
echo "当前目录: ${YELLOW}$(pwd)${NC}"
echo ""
exit 1
fi
# 获取本机局域网IP
LOCAL_IP=$(ifconfig | grep "inet " | grep -v 127.0.0.1 | awk '{print $2}' | head -n 1)
echo "${GREEN}[启动] 正在启动局域网服务器...${NC}"
echo ""
echo "${CYAN}========================================"
echo "提示: 按 Ctrl+C 可停止服务器"
echo ""
echo "预计访问地址:"
echo "📍 本机: ${YELLOW}http://localhost:8080${NC}"
echo "📍 局域网: ${YELLOW}http://${LOCAL_IP}:8080${NC}"
echo "========================================${NC}"
echo ""
# 启动服务器
node server.js
# 如果服务器意外退出
echo ""
echo "${YELLOW}[提示] 服务器已停止运行${NC}"
echo ""

144
快捷部署说明.md Normal file
View File

@@ -0,0 +1,144 @@
# 🚀 快捷部署指南
本项目提供了 Windows 和 macOS 的一键启动脚本,方便快速部署到局域网。
---
## 📦 前置要求
### 必须安装 Node.js
- **macOS**:
- 官方下载: https://nodejs.org/
- Homebrew 安装: `brew install node`
- **Windows**:
- 官方下载: https://nodejs.org/
- 建议下载 LTS长期支持版本
---
## 🍎 macOS / Linux 使用方法
### 方法一:双击运行(推荐)
1. 找到项目文件夹中的 `启动服务器.sh`
2. **双击**运行(系统会自动使用终端打开)
3. 如果提示权限问题,请使用方法二
### 方法二:命令行运行
```bash
# 1. 打开终端Terminal
# 2. 进入项目目录
cd /Users/apple/Documents/cursor/三合一页面
# 3. 运行脚本
./启动服务器.sh
```
### 方法三:直接拖拽
1. 打开终端Terminal
2. 拖拽 `启动服务器.sh` 到终端窗口
3. 按回车
---
## 🪟 Windows 使用方法
### 方法一:双击运行(推荐)
1. 找到项目文件夹中的 `启动服务器.bat`
2. **双击**运行
3. 会自动打开命令提示符窗口
### 方法二:右键管理员运行(可选)
1. 右键点击 `启动服务器.bat`
2. 选择「以管理员身份运行」
3. 点击「是」允许运行
---
## 📱 如何访问
脚本启动后,会显示访问地址:
```
📍 本机访问: http://localhost:8080
📍 局域网访问: http://192.168.2.9:8080
```
### 本机访问
- 在启动服务器的电脑上打开浏览器
- 输入: `http://localhost:8080`
### 手机/平板访问
1. 确保设备连接到**同一个 WiFi**
2. 打开浏览器
3. 输入局域网地址(如 `http://192.168.2.9:8080`
---
## ⏹️ 如何停止服务器
- **macOS / Linux**: 按 `Ctrl + C`
- **Windows**: 按 `Ctrl + C` 或直接关闭窗口
---
## ❓ 常见问题
### 1. 提示「找不到 Node.js」
**原因**: 未安装 Node.js
**解决**: 访问 https://nodejs.org/ 下载安装
### 2. macOS 提示「权限被拒绝」
**解决方法**:
```bash
chmod +x 启动服务器.sh
```
### 3. 手机无法访问局域网地址
**检查清单**:
- ✅ 手机和电脑是否连接到同一个 WiFi
- ✅ 服务器是否正在运行
- ✅ 电脑防火墙是否阻止了 8080 端口
- ✅ IP 地址是否输入正确
**macOS 防火墙设置**:
1. 系统偏好设置 → 安全性与隐私 → 防火墙
2. 点击「防火墙选项」
3. 确保允许 Node.js 的网络连接
**Windows 防火墙设置**:
1. 控制面板 → Windows Defender 防火墙
2. 高级设置 → 入站规则
3. 新建规则,允许端口 8080
### 4. 端口 8080 被占用
**解决方法**: 修改 `server.js` 中的端口号
```javascript
const PORT = 8080; // 改成其他端口,如 3000
```
---
## 🔧 高级配置
如需修改端口或其他配置,请编辑 `server.js` 文件:
```javascript
const PORT = 8080; // 修改端口号
```
修改后重新运行启动脚本即可。
---
## 📞 技术支持
如遇到其他问题,请检查:
1. Node.js 版本: `node --version` (建议 v14 以上)
2. 项目文件是否完整
3. 防火墙设置
---
**祝使用愉快!** 🎉