# vue-ziwei **Repository Path**: wingerd/vue-ziwei ## Basic Information - **Project Name**: vue-ziwei - **Description**: 基于Vue的紫微斗数demo网页 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-01-09 - **Last Updated**: 2026-03-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 紫微斗数 Vue 项目 这是一个基于 Vue 3 的紫微斗数盘前端应用,界面及功能仿照测测APP,支持本命、大限、流年、流月、流日、流时等不同时间段的切换。 ## 系统截图

盘面截图 解读截图

## 功能特性 ### 核心功能 - 📊 **12宫紫微斗数盘展示** - 传统的 4x4 布局,支持宫位点击高亮 - 🔄 **多时间段切换** - 支持本命、大限、流年、流月、流日、流时切换 - ⚙️ **参数配置** - 完整的设置页面,支持: - 出生日期时间设置 - 性别选择 - 晚子时处理(23:00-00:00 计算为本日) - 飞星自化开关 - 自定义四化配置(支持多组天干四化选择) - 闰月分界设置(月中分隔/隶属本月/隶属下月) - 📋 **参数页面** - 查看详细的星曜参数和宫位信息 - 星曜参数表格(星曜、落宫、属性、四化、状态) - 宫位-星曜-地支表格(按固定顺序显示) ### 交互功能 - 🎨 **四化颜色标识** - 禄、权、科、忌使用不同颜色显示 - 🔍 **星曜高亮** - 点击宫位后,对应的四化星会高亮显示 - 🎯 **宫位关联** - 点击宫位会自动高亮对宫和三合宫 - 🔄 **自化/对宫化入图标** - 可视化显示星曜的转化关系 - 📐 **格局展示** - 自动显示命盘的格局信息 ### 技术特性 - 🌐 **国际化支持** - 完整的中英文翻译支持 - 📱 **响应式设计** - 完美支持移动端和桌面端 - 🎨 **主题颜色系统** - 使用 CSS 变量统一管理颜色 - 🔧 **工具函数模块化** - 代码结构清晰,易于维护 ## 技术栈 - **框架**: Vue 3 (Composition API) - **构建工具**: Vite - **HTTP 客户端**: Axios - **国际化**: 自研 i18n 方案 - **样式**: CSS3 + CSS Variables ## 项目结构 ```text vue_ziwei/ ├── src/ │ ├── api/ │ │ └── ziwei.js # API 接口调用 │ ├── components/ │ │ ├── ZiWeiChart.vue # 主图表组件 │ │ ├── PalaceContent.vue # 宫位内容组件 │ │ ├── SettingsPanel.vue # 设置面板组件 │ │ ├── StarParametersPanel.vue # 参数页面组件 │ │ └── TransformIcon.vue # 自化/对宫化入图标组件 │ ├── utils/ │ │ ├── dataTransform.js # 数据转换工具 │ │ ├── i18nUtils.js # i18n 翻译工具函数 │ │ ├── mutagenUtils.js # 四化工具函数 │ │ ├── palaceUtils.js # 宫位工具函数 │ │ └── ziweiUtils.js # 紫微工具函数 │ ├── i18n/ │ │ ├── index.js # i18n 核心逻辑 │ │ └── locales/ │ │ ├── zh-CN/ # 中文翻译 │ │ └── en-US/ # 英文翻译 │ ├── App.vue # 根组件 │ ├── main.js # 入口文件 │ └── style.css # 全局样式(包含颜色变量定义) ├── index.html ├── package.json ├── vite.config.js ├── proxy-server.js # API 代理服务器(可选,用于生产环境) ├── .env # 环境变量配置文件(需要创建) └── README.md ``` ## 安装 ```bash npm install ``` ## 开发 ```bash npm run dev ``` ## 构建 ```bash npm run build ``` 构建后的文件会在 `dist` 目录中。 ## 配置 ### 环境变量 在项目根目录创建 `.env` 文件,配置后端 API 地址和相关密钥: **⚠️ 安全提示**: 前端代码中的环境变量仍然会暴露在打包后的代码中。对于生产环境,强烈建议使用代理服务器方案(见下方"安全配置方案")。 ```env # 后端 API 地址 VITE_API_BASE_URL=https://cloud.apiworks.com/open/astro # API 凭证(仅用于开发环境,生产环境请使用代理服务器) VITE_APP_ID=your_app_id VITE_APP_KEY=your_app_key ``` ### 安全配置方案 **问题**: 在前端代码中直接存储 `appId` 和 `appKey` 是不安全的,因为这些值会被打包到前端代码中,任何人都可以通过浏览器开发者工具查看。 **推荐方案**:使用代理服务器 项目根目录提供了 `proxy-server.js` 作为简单的代理服务器示例: 1. **安装依赖**: ```bash npm install express cors axios dotenv ``` 2. **创建代理服务器的 `.env` 文件**: ```env APP_ID=your_app_id APP_KEY=your_app_key API_BASE_URL=https://cloud.apiworks.com/open/astro PORT=3000 ``` 3. **启动代理服务器**: ```bash node proxy-server.js ``` 4. **修改前端配置**: 将 `VITE_API_BASE_URL` 设置为代理服务器地址: ```env VITE_API_BASE_URL=http://localhost:3000/api ``` 5. **部署时**: - 前端应用部署到静态托管服务(如 Nginx 等) - 代理服务器部署到服务器(如 Node.js 服务器、Docker 容器等) - 或者使用 Serverless Functions **替代方案:使用 Serverless Functions** 这样可以避免维护单独的服务器。 ### 默认配置 - **默认出生日期**: 1999-09-09 09:09:00 - **默认性别**: 男性 - **默认时区**: 中国时区(+8) ## API 接口说明 ### 获取紫微斗数盘数据 后端使用的是[apiworks.com](https://astro.apiworks.com)提供的紫薇斗数接口,需要登录网站申请 `appId` 和 `appKey`。 **⚠️ 安全提示**: 请参考上方"安全配置方案"部分,不要在前端代码中直接暴露 API 凭证。 **接口地址**: `POST /ziwei/chart` **请求方式**: `POST` **请求体参数** (JSON): | 参数名 | 类型 | 必填 | 说明 | | -------- | ------ | ------ | ------ | | `birthday` | string | 是 | 出生日期时间,格式: "1999-09-09 09:09:00" | | `tz` | number | 否 | 时区,默认 8(中国时区) | | `gender` | string | 是 | 性别:'male' 或 'female' | | `chart_type` | string | 是 | 盘类型:'natal'/'daxian'/'liunian'/'liuyue'/'liuri'/'liushi' | | `target_date` | string | 否 | 目标日期时间(用于流年流月等),格式: "2025-01-01 12:00:00" | | `is_late_zi` | boolean | 否 | 是否使用晚子时处理,默认 false | | `leap_boundary` | string | 否 | 闰月分界:'mid_month'/'current_month'/'next_month',默认 'mid_month' | | `flying_star_self_transform` | boolean | 否 | 飞星自化开关,默认 false | | `custom_transform_type` | object | 否 | 自定义四化配置,格式:`{"辛": "xin_2", "戊": "wu_2"}` | **返回数据格式**: ```json { "code": 200, "msg": "success", "data": { "gender": "yin_male", "solar_date": "1999-09-09 09:09", "lunar_date": "己卯年七月三十巳时", "chinese_date": "己卯 壬申 甲子 己巳", "zodiac": "兔", "five_elements_class": "fire6th", "origin_palace_idx": 4, "body_palace_idx": 10, "origin": { "palaces": [...], "mutagen_stars": {...} }, "decadal": {...}, "yearly": {...}, "monthly": {...}, "daily": {...}, "hourly": {...}, "patterns": [...] }, "exe_time": 0.123 } ``` **注意**: - 前端会自动处理后端的 `ApiResp` 响应格式,提取 `data` 字段 - 宫位索引从 0-11,后端按固定顺序返回(从寅宫开始) - 前端会自动将宫位重新排序,从命宫开始显示 - 四化信息通过 `mutagen_stars` 字典和星曜的 `transform_types` 字段提供 ## 使用说明 ### 基本操作 1. **查看命盘**: 启动应用后,自动加载默认的紫微斗数盘数据 2. **切换时间段**: 点击底部的 Tab 切换不同的时间段(本命、大限、流年、流月、流日、流时) 3. **修改参数**: 点击右上角"设置"按钮,可以修改出生时间、性别等参数 4. **查看参数**: 点击右上角"参数"按钮,可以查看详细的星曜参数和宫位信息 5. **查看格局**: 格局信息显示在图表下方,自动展开显示 ### 高级功能 - **宫位高亮**: 点击任意宫位,会自动高亮该宫位及其对宫、三合宫 - **四化高亮**: 点击宫位后,该宫位中包含的四化星会以对应颜色高亮显示 - **自定义四化**: 在设置页面可以配置不同天干的四化方案(如 廉破武阳/廉破曲阳 等) ## 数据转换说明 前端会自动将后端返回的数据格式转换为前端展示格式: 1. **宫位排序**: 后端宫位按固定顺序返回,前端会重新排序从命宫开始显示 2. **四化处理**: - 通过 `mutagen_stars` 字典识别星曜的四化类型 - 通过星曜的 `transform_types` 字段识别自化/对宫化入 3. **运限数据合并**: 根据当前选择的 Tab,自动合并对应的运限星曜到各宫位 4. **响应格式**: 自动处理后端的 `ApiResp` 格式,提取 `data` 字段 ## 颜色系统 ### 运限颜色 在 `src/style.css` 中定义: - `--color-horoscope-benming`: #e53131 (深红色 - 本命) - `--color-horoscope-daxian`: #592599 (蓝紫色 - 大限) - `--color-horoscope-liunian`: #f58f00 (橙色 - 流年) - `--color-horoscope-liuyue`: #388e3c (绿色 - 流月) - `--color-horoscope-liuri`: #954932 (棕色 - 流日) - `--color-horoscope-liushi`: #03a9f4 (浅蓝色 - 流时) ### 四化颜色 在 `src/style.css` 中定义: - `--color-mutagen-lu`: #4caf50 (绿色 - 禄) - `--color-mutagen-quan`: #ff9800 (橙色 - 权) - `--color-mutagen-ke`: #2196f3 (蓝色 - 科) - `--color-mutagen-ji`: #f44336 (红色 - 忌) ## 工具函数说明 ### i18nUtils.js 提供统一的翻译函数: - `translateStarName()` - 翻译星曜名称 - `translatePalaceName()` - 翻译宫位名称 - `translateBrightness()` - 翻译亮度状态 - `translateEarthlyBranch()` - 翻译地支名称 - `translateGender()` - 翻译性别 - `translateFiveElementsClass()` - 翻译五行局 ### mutagenUtils.js 提供四化相关工具函数: - `normalizeMutagenType()` - 标准化四化类型(如 `sihuaLu` → `lu`) - `getMutagenText()` - 获取四化类型的翻译文本 ### palaceUtils.js 提供宫位相关工具函数: - `sortPalacesFromOrigin()` - 从命宫开始排序宫位 - `mergeHoroscopeData()` - 合并运限数据到宫位 ## 开发说明 ### 修改默认配置 - 修改 `src/App.vue` 中的 `defaultBirthInfo` 可以设置默认的出生信息 - 修改 `src/api/ziwei.js` 中的 `baseURL` 或使用 `.env` 文件配置后端 API 地址 ### 添加翻译 在 `src/i18n/locales/zh-CN/` 和 `src/i18n/locales/en-US/` 目录下添加对应的翻译文件。 ### 自定义样式 在 `src/style.css` 中修改 CSS 变量可以统一调整颜色主题。 ## 浏览器支持 - Chrome (最新版本) - Firefox (最新版本) - Safari (最新版本) - Edge (最新版本) - 移动端浏览器 ## 开源协议 本项目采用 [MIT License](LICENSE) 开源协议。 ## 贡献 欢迎提交 Issue 和 Pull Request! 详细的贡献指南请查看 [CONTRIBUTING.md](CONTRIBUTING.md) ## 相关链接 - 项目地址: [GitHub](https://github.com/8haoNetwork/vue-ziwei) | [Gitee](https://gitee.com/wingerd/vue-ziwei) - API 文档: [apiworks.com](https://astro.apiworks.com) ## 许可证 MIT License