feat: 完善紫微斗数模块,添加命理解读功能

- 后端新增十四主星解读字典和十二宫位解读字典
- 添加命盘总览、人生建议、命宫主星解读功能
- 添加主要宫位分析(命宫、财帛宫、官禄宫、夫妻宫、迁移宫、福德宫)
- 添加四化飞星详细解读
- 前端结果页面重新设计,优先显示日期和命理解读
- 优化页面布局,提升用户体验
This commit is contained in:
H1d3rOne committed 2026-03-06 22:15:52 +08:00
1 parent 43609321a6
commit a695b36d2b
4 files changed
+507 -373

No files matched your search

@@ -4,14 +4,45 @@ import org.springframework.web.bind.annotation.*;
import xuan.core.ziwei.ZiWei;
import xuan.core.ziwei.settings.ZiWeiJiChuSetting;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
@RestController
@RequestMapping("/api/ziwei")
public class ZiWeiController {
private static final Map<String, String> ZHU_XING_JIE_DU = new HashMap<>();
private static final Map<String, String> GONG_WEI_JIE_DU = new HashMap<>();
static {
ZHU_XING_JIE_DU.put("紫微", "帝王之星,主权威领导,性格稳重有魄力,适合管理岗位,天生具有统御能力");
ZHU_XING_JIE_DU.put("天机", "智慧之星,主聪明机敏,善于策划分析,适合参谋顾问,思维活跃多变");
ZHU_XING_JIE_DU.put("太阳", "光明之星,主外向热情,事业心强,利于公职发展,贵人运旺");
ZHU_XING_JIE_DU.put("武曲", "财星,主刚毅果断,理财能力强,适合金融商业,财运亨通");
ZHU_XING_JIE_DU.put("天同", "福星,主温和仁慈,人缘好福气厚,适合服务行业,生活安逸");
ZHU_XING_JIE_DU.put("廉贞", "桃花星,主才华艺术,感情丰富,适合文艺创作,魅力十足");
ZHU_XING_JIE_DU.put("天府", "财库星,主稳重守成,善于理财积累,适合财务管理,财源稳定");
ZHU_XING_JIE_DU.put("太阴", "阴柔之星,主细腻敏感,直觉力强,适合文艺创作,财运平稳");
ZHU_XING_JIE_DU.put("贪狼", "欲望之星,主多才多艺,交际能力强,适合演艺销售,但需防贪欲");
ZHU_XING_JIE_DU.put("巨门", "口舌之星,主能言善辩,适合律师教师,但易招是非口舌");
ZHU_XING_JIE_DU.put("天相", "印星,主正直公正,适合公务员法律,贵人运佳,事业平稳");
ZHU_XING_JIE_DU.put("天梁", "荫星,主慈悲为怀,适合医疗教育,有长辈贵人,福泽深厚");
ZHU_XING_JIE_DU.put("七杀", "将星,主刚强果断,适合军警创业,有领导才能,但需防冲动");
ZHU_XING_JIE_DU.put("破军", "变动之星,主开创冒险,适合创业改革,变动多端,需稳中求进");
GONG_WEI_JIE_DU.put("命宫", "代表核心性格、人生基调、先天特质");
GONG_WEI_JIE_DU.put("兄弟宫", "代表兄弟姐妹关系、同辈交往、合作能力");
GONG_WEI_JIE_DU.put("夫妻宫", "代表婚姻感情、配偶特质、婚姻质量");
GONG_WEI_JIE_DU.put("子女宫", "代表子女运势、后代情况、桃花缘分");
GONG_WEI_JIE_DU.put("财帛宫", "代表财富来源、理财能力、财运起伏");
GONG_WEI_JIE_DU.put("疾厄宫", "代表健康状况、易患疾病、养生方向");
GONG_WEI_JIE_DU.put("迁移宫", "代表外出运势、人际交往、贵人运");
GONG_WEI_JIE_DU.put("交友宫", "代表朋友关系、下属能力、人际网络");
GONG_WEI_JIE_DU.put("官禄宫", "代表事业发展、职业方向、官运仕途");
GONG_WEI_JIE_DU.put("田宅宫", "代表房产运势、家庭环境、祖业继承");
GONG_WEI_JIE_DU.put("福德宫", "代表精神状态、福报厚薄、晚年运势");
GONG_WEI_JIE_DU.put("父母宫", "代表父母关系、长辈助力、学历背景");
}
@PostMapping("/paipan")
public Map<String, Object> paiPan(@RequestBody ZiWeiRequest request) {
Map<String, Object> result = new HashMap<>();
@@ -117,7 +148,8 @@ public class ZiWeiController {
data.put("liuNianSuiQianZhuXing", ziWei.getLiuNianSuiQianZhuXing());
data.put("liuNianJiangQianZhuXing", ziWei.getLiuNianJiangQianZhuXing());
data.put("shiErGongZhuXing", ziWei.getShiErGongZhuXing(false));
List<List<String>> shiErGongZhuXing = ziWei.getShiErGongZhuXing(false);
data.put("shiErGongZhuXing", shiErGongZhuXing);
data.put("shiErGongZhuXingGuanXi", ziWei.getShiErGongZhuXingGuanXi());
data.put("huaLuXingGongWei", ziWei.getHuaLuXingGongWei());
@@ -145,8 +177,145 @@ public class ZiWeiController {
data.put("nextQi", ziWei.getNextQi());
data.put("chuShengQi", ziWei.getChuShengQi());
List<String> shiErMingGong = ziWei.getShiErMingGong();
int mingGongIndex = ziWei.getMingGongGongWei() - 1;
List<String> mingGongStars = shiErGongZhuXing.get(mingGongIndex);
data.put("jieDu", buildJieDu(ziWei, shiErMingGong, shiErGongZhuXing));
return data;
}
private Map<String, Object> buildJieDu(ZiWei ziWei, List<String> shiErMingGong, List<List<String>> shiErGongZhuXing) {
Map<String, Object> jieDu = new HashMap<>();
int mingGongIndex = ziWei.getMingGongGongWei() - 1;
List<String> mingGongStars = shiErGongZhuXing.get(mingGongIndex);
List<String> mainStars = new ArrayList<>();
for (String star : mingGongStars) {
if (ZHU_XING_JIE_DU.containsKey(star)) {
mainStars.add(star);
}
}
StringBuilder summary = new StringBuilder();
summary.append("【命盘总览】\n");
summary.append("命主").append(ziWei.getMingZhu()).append(",身主").append(ziWei.getShenZhu()).append(",");
summary.append("五行局为").append(ziWei.getWuXingJu()).append(",");
summary.append("命宫在").append(ziWei.getMingGongDiZhi()).append("宫");
if (!mainStars.isEmpty()) {
summary.append(",命宫主星:").append(String.join("、", mainStars));
}
summary.append("。");
jieDu.put("summary", summary.toString());
List<Map<String, String>> mingGongJieDu = new ArrayList<>();
for (String star : mingGongStars) {
if (ZHU_XING_JIE_DU.containsKey(star)) {
Map<String, String> starJieDu = new HashMap<>();
starJieDu.put("star", star);
starJieDu.put("meaning", ZHU_XING_JIE_DU.get(star));
mingGongJieDu.add(starJieDu);
}
}
jieDu.put("mingGongStars", mingGongJieDu);
List<Map<String, Object>> gongWeiJieDuList = new ArrayList<>();
String[] zhuYaoGongWei = {"命宫", "财帛宫", "官禄宫", "夫妻宫", "迁移宫", "福德宫"};
for (String gongWei : zhuYaoGongWei) {
int gongIndex = -1;
for (int i = 0; i < shiErMingGong.size(); i++) {
if (gongWei.equals(shiErMingGong.get(i))) {
gongIndex = i;
break;
}
}
if (gongIndex >= 0) {
Map<String, Object> gongJieDu = new HashMap<>();
gongJieDu.put("gongWei", gongWei);
gongJieDu.put("diZhi", ziWei.getShiErGongDiZhi().get(gongIndex));
gongJieDu.put("meaning", GONG_WEI_JIE_DU.get(gongWei));
List<String> gongStars = shiErGongZhuXing.get(gongIndex);
List<String> gongMainStars = new ArrayList<>();
for (String star : gongStars) {
if (ZHU_XING_JIE_DU.containsKey(star)) {
gongMainStars.add(star);
}
}
gongJieDu.put("stars", gongMainStars);
gongWeiJieDuList.add(gongJieDu);
}
}
jieDu.put("gongWeiJieDu", gongWeiJieDuList);
List<Map<String, String>> siHuaJieDu = new ArrayList<>();
Map<String, String> huaLu = new HashMap<>();
huaLu.put("type", "化禄");
huaLu.put("gongWei", ziWei.getHuaLuXingGongWeiJieDu());
huaLu.put("meaning", "主财运亨通,机遇顺遂,利于求财发展");
siHuaJieDu.add(huaLu);
Map<String, String> huaQuan = new HashMap<>();
huaQuan.put("type", "化权");
huaQuan.put("gongWei", ziWei.getHuaQuanXingGongWeiJieDu());
huaQuan.put("meaning", "主权势掌控,竞争有力,利于事业掌权");
siHuaJieDu.add(huaQuan);
Map<String, String> huaKe = new HashMap<>();
huaKe.put("type", "化科");
huaKe.put("gongWei", ziWei.getHuaKeXingGongWeiJieDu());
huaKe.put("meaning", "主名声学历,贵人相助,利于学业考试");
siHuaJieDu.add(huaKe);
Map<String, String> huaJi = new HashMap<>();
huaJi.put("type", "化忌");
huaJi.put("gongWei", ziWei.getHuaJiXingGongWeiJieDu());
huaJi.put("meaning", "主波折阻滞,需谨慎行事,注意防范风险");
siHuaJieDu.add(huaJi);
jieDu.put("siHuaJieDu", siHuaJieDu);
String advice = generateAdvice(ziWei, mainStars);
jieDu.put("advice", advice);
return jieDu;
}
private String generateAdvice(ZiWei ziWei, List<String> mainStars) {
StringBuilder advice = new StringBuilder();
advice.append("【人生建议】\n");
if (mainStars.contains("紫微") || mainStars.contains("天府")) {
advice.append("命带帝王之星,天生具有领导才能,适合从事管理工作或自主创业。");
} else if (mainStars.contains("七杀") || mainStars.contains("破军")) {
advice.append("命带将星变动之星,性格刚毅果断,适合开创性事业,但需注意稳中求进。");
} else if (mainStars.contains("天机") || mainStars.contains("太阴")) {
advice.append("命带智慧之星,思维敏捷细腻,适合从事策划、咨询、文艺创作等工作。");
} else if (mainStars.contains("太阳") || mainStars.contains("天相")) {
advice.append("命带光明之星,外向正直,适合从事公职、法律、教育等事业。");
} else if (mainStars.contains("武曲") || mainStars.contains("贪狼")) {
advice.append("命带财星欲望之星,善于理财交际,适合金融、销售、演艺等行业。");
} else {
advice.append("命格独特,各有千秋,宜发挥自身优势,扬长避短。");
}
advice.append("\n\n【四化飞星指引】\n");
advice.append(ziWei.getHuaLuXingGongWeiJieDu()).append("\n");
advice.append(ziWei.getHuaQuanXingGongWeiJieDu()).append("\n");
advice.append(ziWei.getHuaKeXingGongWeiJieDu()).append("\n");
advice.append(ziWei.getHuaJiXingGongWeiJieDu());
return advice.toString();
}
public static class ZiWeiRequest {
private String name;
+4 -44
View File
@@ -3,7 +3,7 @@
{
"path": "pages/index/index",
"style": {
"navigationBarTitleText": "命理测算",
"navigationBarTitleText": "玄机排盘",
"navigationBarBackgroundColor": "#DB2777",
"navigationBarTextStyle": "white",
"navigationStyle": "custom"
@@ -12,7 +12,7 @@
{
"path": "pages/bazi/bazi",
"style": {
"navigationBarTitleText": "四柱八字",
"navigationBarTitleText": "八字排盘",
"navigationBarBackgroundColor": "#DC2626",
"navigationBarTextStyle": "white"
}
@@ -61,15 +61,7 @@
"path": "pages/qimen/qimen",
"style": {
"navigationBarTitleText": "奇门遁甲排盘",
"navigationBarBackgroundColor": "#6366F1",
"navigationBarTextStyle": "white"
}
},
{
"path": "pages/qimen/result",
"style": {
"navigationBarTitleText": "奇门遁甲命盘",
"navigationBarBackgroundColor": "#6366F1",
"navigationBarBackgroundColor": "#D97706",
"navigationBarTextStyle": "white"
}
},
@@ -104,43 +96,11 @@
"navigationBarBackgroundColor": "#7C3AED",
"navigationBarTextStyle": "white"
}
},
{
"path": "pages/zhanxing/zhanxing",
"style": {
"navigationBarTitleText": "占星术",
"navigationBarBackgroundColor": "#9333EA",
"navigationBarTextStyle": "white"
}
},
{
"path": "pages/zhanxing/result",
"style": {
"navigationBarTitleText": "星盘解析",
"navigationBarBackgroundColor": "#9333EA",
"navigationBarTextStyle": "white"
}
},
{
"path": "pages/taluo/taluo",
"style": {
"navigationBarTitleText": "塔罗牌占卜",
"navigationBarBackgroundColor": "#8B5CF6",
"navigationBarTextStyle": "white"
}
},
{
"path": "pages/taluo/result",
"style": {
"navigationBarTitleText": "塔罗牌解读",
"navigationBarBackgroundColor": "#8B5CF6",
"navigationBarTextStyle": "white"
}
}
],
"globalStyle": {
"navigationBarTextStyle": "white",
"navigationBarTitleText": "命理测算",
"navigationBarTitleText": "玄机排盘",
"navigationBarBackgroundColor": "#DB2777",
"backgroundColor": "#FDF2F8"
}
+330 -283
View File
@@ -1,85 +1,126 @@
<template>
<view class="container">
<view class="header-card">
<view class="header-row">
<view class="header-icon">
<text class="icon-text">紫</text>
<view class="date-card">
<view class="date-row">
<view class="date-item">
<text class="date-label">公历</text>
<text class="date-value">{{ result.solar || '-' }}</text>
</view>
<view class="header-info">
<text class="header-title">{{ result.name || '紫微命盘' }}</text>
<text class="header-subtitle">{{ result.shengXiao }} · {{ result.xingZuo }} · {{ result.wuXingJu }}</text>
</view>
<view class="date-row">
<view class="date-item">
<text class="date-label">农历</text>
<text class="date-value">{{ result.lunar || '-' }}</text>
</view>
</view>
<view class="date-tags">
<text class="tag">{{ result.shengXiao }}</text>
<text class="tag">{{ result.xingZuo }}</text>
<text class="tag">{{ result.wuXingJu }}</text>
</view>
</view>
<view class="summary-card" v-if="result.jieDu">
<view class="card-header">
<view class="header-icon">✨</view>
<text class="header-title">命盘总览</text>
</view>
<view class="summary-content">
<text class="summary-text">{{ result.jieDu.summary }}</text>
</view>
</view>
<view class="advice-card" v-if="result.jieDu">
<view class="card-header">
<view class="header-icon">💡</view>
<text class="header-title">人生建议</text>
</view>
<view class="advice-content">
<text class="advice-text">{{ result.jieDu.advice }}</text>
</view>
</view>
<view class="minggong-card" v-if="result.jieDu && result.jieDu.mingGongStars && result.jieDu.mingGongStars.length > 0">
<view class="card-header">
<view class="card-dot purple"></view>
<text class="header-title">命宫主星解读</text>
</view>
<view class="star-list">
<view class="star-item" v-for="(star, index) in result.jieDu.mingGongStars" :key="index">
<view class="star-name">{{ star.star }}</view>
<view class="star-meaning">{{ star.meaning }}</view>
</view>
</view>
</view>
<view class="info-card">
<view class="info-row">
<view class="info-item">
<text class="info-label">公历</text>
<text class="info-value">{{ result.solar || '-' }}</text>
<view class="gongwei-card" v-if="result.jieDu && result.jieDu.gongWeiJieDu">
<view class="card-header">
<view class="card-dot blue"></view>
<text class="header-title">主要宫位分析</text>
</view>
<view class="gongwei-list">
<view class="gongwei-item" v-for="(gong, index) in result.jieDu.gongWeiJieDu" :key="index">
<view class="gongwei-header">
<text class="gongwei-name">{{ gong.gongWei }}</text>
<text class="gongwei-dizhi">({{ gong.diZhi }}宫)</text>
</view>
<view class="gongwei-meaning">{{ gong.meaning }}</view>
<view class="gongwei-stars" v-if="gong.stars && gong.stars.length > 0">
<text class="star-tag" v-for="(star, sIdx) in gong.stars" :key="sIdx">{{ star }}</text>
</view>
</view>
<view class="info-divider"></view>
<view class="info-item">
<text class="info-label">农历</text>
<text class="info-value">{{ result.lunar || '-' }}</text>
</view>
</view>
<view class="sihua-card" v-if="result.jieDu && result.jieDu.siHuaJieDu">
<view class="card-header">
<view class="card-dot gold"></view>
<text class="header-title">四化飞星</text>
</view>
<view class="sihua-list">
<view class="sihua-item" v-for="(sihua, index) in result.jieDu.siHuaJieDu" :key="index" :class="getSiHuaClass(sihua.type)">
<view class="sihua-type">{{ sihua.type }}</view>
<view class="sihua-content">
<text class="sihua-gongwei">{{ sihua.gongWei }}</text>
<text class="sihua-meaning">{{ sihua.meaning }}</text>
</view>
</view>
</view>
</view>
<view class="sizhu-card">
<view class="card-header">
<view class="card-dot"></view>
<text class="card-title">四柱八字</text>
<view class="card-dot cyan"></view>
<text class="header-title">四柱八字</text>
</view>
<view class="sizhu-row">
<view class="sizhu-item">
<text class="sizhu-label">年柱</text>
<text class="sizhu-value">{{ result.yearGanZhi || '-' }}</text>
<text class="sizhu-nayin">{{ result.yearGanZhiNaYin || '-' }}</text>
</view>
<view class="sizhu-item">
<text class="sizhu-label">月柱</text>
<text class="sizhu-value">{{ result.monthGanZhi || '-' }}</text>
<text class="sizhu-nayin">{{ result.monthGanZhiNaYin || '-' }}</text>
</view>
<view class="sizhu-item">
<text class="sizhu-label">日柱</text>
<text class="sizhu-value">{{ result.dayGanZhi || '-' }}</text>
<text class="sizhu-nayin">{{ result.dayGanZhiNaYin || '-' }}</text>
</view>
<view class="sizhu-item">
<text class="sizhu-label">时柱</text>
<text class="sizhu-value">{{ result.hourGanZhi || '-' }}</text>
</view>
</view>
</view>
<view class="gongwei-card">
<view class="card-header">
<view class="card-dot cyan"></view>
<text class="card-title">命宫身宫</text>
</view>
<view class="gongwei-row">
<view class="gongwei-item">
<text class="gongwei-label">命宫</text>
<text class="gongwei-value">{{ result.mingGongDiZhi || '-' }}宫</text>
</view>
<view class="gongwei-item">
<text class="gongwei-label">身宫</text>
<text class="gongwei-value">{{ result.shenGongDiZhi || '-' }}宫</text>
</view>
<view class="gongwei-item">
<text class="gongwei-label">命主</text>
<text class="gongwei-value">{{ result.mingZhu || '-' }}</text>
</view>
<view class="gongwei-item">
<text class="gongwei-label">身主</text>
<text class="gongwei-value">{{ result.shenZhu || '-' }}</text>
<text class="sizhu-nayin">{{ result.hourGanZhiNaYin || '-' }}</text>
</view>
</view>
</view>
<view class="mingpan-card">
<view class="card-header">
<view class="card-dot gold"></view>
<text class="card-title">紫微命盘</text>
<view class="card-dot orange"></view>
<text class="header-title">紫微命盘</text>
</view>
<view class="mingpan-grid">
<view class="mingpan-cell" v-for="(gong, index) in gongData" :key="index" :class="{ 'ming-gong': isMingGong(index), 'shen-gong': isShenGong(index) }">
@@ -112,81 +153,35 @@
</view>
</view>
<view class="zhuxing-card">
<view class="card-header">
<view class="card-dot purple"></view>
<text class="card-title">十四主星</text>
</view>
<view class="zhuxing-section">
<view class="zhuxing-group">
<text class="zhuxing-group-title">紫微星系</text>
<view class="zhuxing-list">
<view class="zhuxing-tag ziwei" v-for="(star, index) in ziWeiXingXiList" :key="'zw'+index">
<text class="zhuxing-text">{{ star }}</text>
</view>
</view>
</view>
<view class="zhuxing-group">
<text class="zhuxing-group-title">天府星系</text>
<view class="zhuxing-list">
<view class="zhuxing-tag tianfu" v-for="(star, index) in tianFuXingXiList" :key="'tf'+index">
<text class="zhuxing-text">{{ star }}</text>
</view>
</view>
</view>
</view>
</view>
<view class="sihua-card">
<view class="card-header">
<view class="card-dot orange"></view>
<text class="card-title">四化飞星</text>
</view>
<view class="sihua-info">
<view class="sihua-row">
<text class="sihua-label">化禄:</text>
<text class="sihua-value">{{ result.huaLuXingGongWeiJieDu || '-' }}</text>
</view>
<view class="sihua-row">
<text class="sihua-label">化权:</text>
<text class="sihua-value">{{ result.huaQuanXingGongWeiJieDu || '-' }}</text>
</view>
<view class="sihua-row">
<text class="sihua-label">化科:</text>
<text class="sihua-value">{{ result.huaKeXingGongWeiJieDu || '-' }}</text>
</view>
<view class="sihua-row">
<text class="sihua-label">化忌:</text>
<text class="sihua-value">{{ result.huaJiXingGongWeiJieDu || '-' }}</text>
</view>
</view>
</view>
<view class="other-card">
<view class="card-header">
<view class="card-dot blue"></view>
<text class="card-title">其他信息</text>
<view class="card-dot"></view>
<text class="header-title">其他信息</text>
</view>
<view class="other-info">
<view class="other-row">
<text class="other-label">阴阳:</text>
<view class="other-grid">
<view class="other-item">
<text class="other-label">阴阳</text>
<text class="other-value">{{ result.nanNvYinYang || '-' }}</text>
</view>
<view class="other-row">
<text class="other-label">月相:</text>
<view class="other-item">
<text class="other-label">命主</text>
<text class="other-value">{{ result.mingZhu || '-' }}</text>
</view>
<view class="other-item">
<text class="other-label">身主</text>
<text class="other-value">{{ result.shenZhu || '-' }}</text>
</view>
<view class="other-item">
<text class="other-label">月相</text>
<text class="other-value">{{ result.yueXiang || '-' }}</text>
</view>
<view class="other-row">
<text class="other-label">月将:</text>
<text class="other-value">{{ result.yueJiang || '-' }}({{ result.yueJiangShen || '-' }})</text>
<view class="other-item">
<text class="other-label">命宫</text>
<text class="other-value">{{ result.mingGongDiZhi || '-' }}宫</text>
</view>
<view class="other-row">
<text class="other-label">子斗:</text>
<text class="other-value">{{ result.ziDou || '-' }}</text>
</view>
<view class="other-row">
<text class="other-label">流斗:</text>
<text class="other-value">{{ result.liuDou || '-' }}</text>
<view class="other-item">
<text class="other-label">身宫</text>
<text class="other-value">{{ result.shenGongDiZhi || '-' }}宫</text>
</view>
</view>
</view>
@@ -201,16 +196,6 @@ export default {
gongData: Array(12).fill({})
}
},
computed: {
ziWeiXingXiList() {
const stars = this.result.ziWeiXingXiZhuXing || []
return stars.filter(s => s && s.trim() !== '')
},
tianFuXingXiList() {
const stars = this.result.tianFuXingXiZhuXing || []
return stars.filter(s => s && s.trim() !== '')
}
},
onLoad() {
const app = getApp()
if (app.globalData && app.globalData.ziweiResult) {
@@ -250,6 +235,15 @@ export default {
return sihua[index].includes(type)
}
return false
},
getSiHuaClass(type) {
const classMap = {
'化禄': 'lu',
'化权': 'quan',
'化科': 'ke',
'化忌': 'ji'
}
return classMap[type] || ''
}
}
}
@@ -266,7 +260,7 @@ page {
padding: 32rpx;
}
.header-card {
.date-card {
background: linear-gradient(135deg, #7C3AED 0%, #6D28D9 100%);
border-radius: 32rpx;
padding: 32rpx;
@@ -274,84 +268,43 @@ page {
box-shadow: 0 16rpx 48rpx rgba(124, 58, 237, 0.25);
}
.header-row {
.date-row {
margin-bottom: 16rpx;
}
.date-item {
display: flex;
align-items: center;
flex-direction: column;
}
.header-icon {
width: 80rpx;
height: 80rpx;
background: rgba(255, 255, 255, 0.2);
border-radius: 20rpx;
display: flex;
align-items: center;
justify-content: center;
margin-right: 24rpx;
}
.icon-text {
font-size: 40rpx;
color: #ffffff;
font-weight: 700;
}
.header-info {
flex: 1;
}
.header-title {
font-size: 36rpx;
font-weight: 700;
color: #ffffff;
display: block;
.date-label {
font-size: 24rpx;
color: rgba(255, 255, 255, 0.7);
margin-bottom: 8rpx;
}
.header-subtitle {
font-size: 24rpx;
color: rgba(255, 255, 255, 0.8);
}
.info-card {
background: rgba(255, 255, 255, 0.9);
border-radius: 24rpx;
padding: 24rpx;
margin-bottom: 24rpx;
box-shadow: 0 8rpx 32rpx rgba(109, 40, 217, 0.08);
}
.info-row {
display: flex;
align-items: center;
}
.info-item {
flex: 1;
text-align: center;
}
.info-label {
font-size: 24rpx;
color: #9CA3AF;
display: block;
margin-bottom: 8rpx;
}
.info-value {
font-size: 22rpx;
color: #1F2937;
.date-value {
font-size: 28rpx;
color: #ffffff;
font-weight: 500;
}
.info-divider {
width: 2rpx;
height: 48rpx;
background: #F3F4F6;
.date-tags {
display: flex;
gap: 16rpx;
margin-top: 16rpx;
}
.sizhu-card, .gongwei-card, .mingpan-card, .zhuxing-card, .sihua-card, .other-card {
background: rgba(255, 255, 255, 0.9);
.tag {
background: rgba(255, 255, 255, 0.2);
padding: 8rpx 20rpx;
border-radius: 20rpx;
font-size: 24rpx;
color: #ffffff;
}
.summary-card, .advice-card, .minggong-card, .gongwei-card, .sihua-card, .sizhu-card, .mingpan-card, .other-card {
background: rgba(255, 255, 255, 0.95);
border-radius: 24rpx;
padding: 24rpx;
margin-bottom: 24rpx;
@@ -364,6 +317,18 @@ page {
margin-bottom: 20rpx;
}
.header-icon {
font-size: 32rpx;
margin-right: 12rpx;
}
.header-title {
font-size: 30rpx;
font-weight: 600;
color: #1F2937;
flex: 1;
}
.card-dot {
width: 8rpx;
height: 8rpx;
@@ -372,19 +337,159 @@ page {
margin-right: 12rpx;
}
.card-dot.gold { background: #F59E0B; }
.card-dot.purple { background: #8B5CF6; }
.card-dot.blue { background: #3B82F6; }
.card-dot.gold { background: #F59E0B; }
.card-dot.cyan { background: #06B6D4; }
.card-dot.orange { background: #F97316; }
.card-title {
.summary-content, .advice-content {
padding: 16rpx;
background: #F9FAFB;
border-radius: 16rpx;
}
.summary-text, .advice-text {
font-size: 28rpx;
color: #374151;
line-height: 1.8;
white-space: pre-wrap;
}
.star-list {
display: flex;
flex-direction: column;
gap: 16rpx;
}
.star-item {
padding: 16rpx;
background: linear-gradient(135deg, #EDE9FE 0%, #DDD6FE 100%);
border-radius: 16rpx;
}
.star-name {
font-size: 30rpx;
font-weight: 600;
color: #6D28D9;
margin-bottom: 8rpx;
}
.star-meaning {
font-size: 26rpx;
color: #4B5563;
line-height: 1.6;
}
.gongwei-list {
display: flex;
flex-direction: column;
gap: 16rpx;
}
.gongwei-item {
padding: 16rpx;
background: #F9FAFB;
border-radius: 16rpx;
border-left: 6rpx solid #3B82F6;
}
.gongwei-header {
display: flex;
align-items: center;
margin-bottom: 8rpx;
}
.gongwei-name {
font-size: 28rpx;
font-weight: 600;
color: #1F2937;
}
.gongwei-dizhi {
font-size: 24rpx;
color: #6B7280;
margin-left: 8rpx;
}
.gongwei-meaning {
font-size: 24rpx;
color: #6B7280;
margin-bottom: 12rpx;
}
.gongwei-stars {
display: flex;
flex-wrap: wrap;
gap: 8rpx;
}
.star-tag {
background: #DBEAFE;
color: #1D4ED8;
padding: 6rpx 16rpx;
border-radius: 12rpx;
font-size: 22rpx;
font-weight: 500;
}
.sihua-list {
display: flex;
flex-direction: column;
gap: 12rpx;
}
.sihua-item {
display: flex;
align-items: flex-start;
padding: 16rpx;
border-radius: 16rpx;
}
.sihua-item.lu {
background: linear-gradient(135deg, #D1FAE5 0%, #A7F3D0 100%);
}
.sihua-item.quan {
background: linear-gradient(135deg, #FEF3C7 0%, #FDE68A 100%);
}
.sihua-item.ke {
background: linear-gradient(135deg, #DBEAFE 0%, #BFDBFE 100%);
}
.sihua-item.ji {
background: linear-gradient(135deg, #FEE2E2 0%, #FECACA 100%);
}
.sihua-type {
font-size: 28rpx;
font-weight: 600;
width: 80rpx;
flex-shrink: 0;
}
.sihua-item.lu .sihua-type { color: #059669; }
.sihua-item.quan .sihua-type { color: #D97706; }
.sihua-item.ke .sihua-type { color: #2563EB; }
.sihua-item.ji .sihua-type { color: #DC2626; }
.sihua-content {
flex: 1;
}
.sihua-gongwei {
font-size: 26rpx;
color: #1F2937;
display: block;
margin-bottom: 4rpx;
}
.sihua-meaning {
font-size: 24rpx;
color: #6B7280;
}
.sizhu-row {
display: flex;
justify-content: space-around;
@@ -405,31 +510,14 @@ page {
font-size: 32rpx;
font-weight: 700;
color: #7C3AED;
display: block;
}
.gongwei-row {
display: flex;
flex-wrap: wrap;
}
.gongwei-item {
width: 50%;
display: flex;
flex-direction: column;
padding: 16rpx;
box-sizing: border-box;
}
.gongwei-label {
font-size: 24rpx;
color: #9CA3AF;
margin-bottom: 8rpx;
}
.gongwei-value {
font-size: 28rpx;
color: #1F2937;
font-weight: 600;
.sizhu-nayin {
font-size: 20rpx;
color: #6B7280;
display: block;
margin-top: 4rpx;
}
.mingpan-grid {
@@ -445,7 +533,7 @@ page {
.mingpan-cell {
background: #FFFFFF;
padding: 8rpx;
min-height: 160rpx;
min-height: 140rpx;
display: flex;
flex-direction: column;
position: relative;
@@ -471,13 +559,13 @@ page {
}
.cell-gongzhi {
font-size: 20rpx;
font-size: 18rpx;
color: #6B7280;
font-weight: 600;
}
.cell-tiangan {
font-size: 18rpx;
font-size: 16rpx;
color: #9CA3AF;
}
@@ -486,13 +574,13 @@ page {
}
.minggong-text {
font-size: 20rpx;
font-size: 18rpx;
color: #7C3AED;
font-weight: 600;
}
.shengong-text {
font-size: 18rpx;
font-size: 16rpx;
color: #3B82F6;
margin-left: 8rpx;
}
@@ -502,7 +590,7 @@ page {
}
.daxian-text {
font-size: 16rpx;
font-size: 14rpx;
color: #F59E0B;
}
@@ -514,7 +602,7 @@ page {
}
.zhuxing-item {
font-size: 16rpx;
font-size: 14rpx;
padding: 2rpx 4rpx;
border-radius: 4rpx;
}
@@ -536,91 +624,50 @@ page {
margin-top: 4rpx;
}
.sihua-item {
font-size: 14rpx;
.cell-sihua .sihua-item {
font-size: 12rpx;
padding: 2rpx 6rpx;
border-radius: 4rpx;
font-weight: 600;
}
.sihua-item.lu { background: #D1FAE5; color: #059669; }
.sihua-item.quan { background: #FEF3C7; color: #D97706; }
.sihua-item.ke { background: #DBEAFE; color: #2563EB; }
.sihua-item.ji { background: #FEE2E2; color: #DC2626; }
.cell-sihua .sihua-item.lu { background: #D1FAE5; color: #059669; }
.cell-sihua .sihua-item.quan { background: #FEF3C7; color: #D97706; }
.cell-sihua .sihua-item.ke { background: #DBEAFE; color: #2563EB; }
.cell-sihua .sihua-item.ji { background: #FEE2E2; color: #DC2626; }
.cell-zhangsheng {
margin-top: 4rpx;
}
.zhangsheng-text {
font-size: 14rpx;
font-size: 12rpx;
color: #9CA3AF;
}
.zhuxing-section {
display: flex;
flex-direction: column;
gap: 20rpx;
}
.zhuxing-group {
display: flex;
flex-direction: column;
}
.zhuxing-group-title {
font-size: 24rpx;
color: #6B7280;
margin-bottom: 12rpx;
}
.zhuxing-list {
.other-grid {
display: flex;
flex-wrap: wrap;
gap: 12rpx;
}
.zhuxing-tag {
padding: 10rpx 20rpx;
border-radius: 16rpx;
}
.zhuxing-tag.ziwei {
background: linear-gradient(135deg, #EDE9FE 0%, #DDD6FE 100%);
border: 2rpx solid #C4B5FD;
}
.zhuxing-tag.tianfu {
background: linear-gradient(135deg, #FEF3C7 0%, #FDE68A 100%);
border: 2rpx solid #FCD34D;
}
.zhuxing-text {
font-size: 24rpx;
color: #1F2937;
font-weight: 500;
}
.sihua-info, .other-info {
padding: 8rpx 0;
}
.sihua-row, .other-row {
.other-item {
width: 33.33%;
display: flex;
align-items: flex-start;
padding: 12rpx 0;
flex-direction: column;
padding: 16rpx;
box-sizing: border-box;
text-align: center;
}
.sihua-label, .other-label {
font-size: 26rpx;
color: #6B7280;
width: 100rpx;
flex-shrink: 0;
.other-label {
font-size: 22rpx;
color: #9CA3AF;
margin-bottom: 8rpx;
}
.sihua-value, .other-value {
.other-value {
font-size: 26rpx;
color: #1F2937;
flex: 1;
font-weight: 600;
}
</style>
-42
View File
@@ -148,53 +148,11 @@ const ziweiApi = {
}
}
const zhanxingApi = {
paiPan: (data) => {
return request({
url: '/zhanxing/paipan',
method: 'POST',
data: {
name: data.name || '某人',
date: data.date,
birthTime: data.birthTime,
birthPlace: data.birthPlace || '北京'
}
})
}
}
const taLuoApi = {
divine: (data) => {
return request({
url: '/taluo/divine',
method: 'POST',
data: {
question: data.question || '请给我指引',
spreadType: data.spreadType || 'single'
}
})
},
getAllCards: () => {
return request({
url: '/taluo/cards',
method: 'GET'
})
},
getCard: (number) => {
return request({
url: '/taluo/card/' + number,
method: 'GET'
})
}
}
export default {
baziApi,
liuyaoApi,
daliurenApi,
qimenApi,
ziweiApi,
zhanxingApi,
taLuoApi,
request
}