feat: 完成奇门遁甲排盘功能开发

- 新增后端QiMenController控制器,提供奇门遁甲排盘API接口
- 新增前端奇门遁甲输入页面qimen.vue,支持姓名、占事、日期、时间等参数设置
- 新增前端奇门遁甲结果页面result.vue,展示九宫排盘、三盘信息、吉凶判断等
- 更新api.js添加qimenApi接口
- 更新pages.json添加结果页面路由
This commit is contained in:
H1d3rOne committed 2026-03-06 04:30:59 +08:00
1 parent 23188a40e0
commit 3b1b5f0d88
9 files changed
+2370 -49

No files matched your search

@@ -0,0 +1,222 @@
package xuan.controller;
import org.springframework.web.bind.annotation.*;
import xuan.core.qimen.zhuan.QiMenZhuanPan;
import xuan.core.qimen.zhuan.settings.QiMenZhuanPanJiChuSetting;
import java.util.HashMap;
import java.util.Map;
@RestController
@RequestMapping("/api/qimen")
public class QiMenController {
@PostMapping("/paipan")
public Map<String, Object> paiPan(@RequestBody QiMenRequest request) {
Map<String, Object> result = new HashMap<>();
try {
QiMenZhuanPanJiChuSetting setting = new QiMenZhuanPanJiChuSetting();
setting.setName(request.getName() != null ? request.getName() : "某人");
setting.setOccupy(request.getOccupy() != null ? request.getOccupy() : "某事");
setting.setSex(request.getSex() != null ? request.getSex() : 1);
setting.setDate(request.getDate() != null ? request.getDate() : "2024-01-01 00:00:00");
setting.setDateType(request.getDateType() != null ? request.getDateType() : 0);
setting.setLeapMonthType(request.getLeapMonthType() != null ? request.getLeapMonthType() : 0);
setting.setXuShiSuiType(request.getXuShiSuiType() != null ? request.getXuShiSuiType() : 0);
setting.setJieQiType(request.getJieQiType() != null ? request.getJieQiType() : 1);
setting.setPaiPanType(request.getPaiPanType() != null ? request.getPaiPanType() : 3);
setting.setZhiShiType(request.getZhiShiType() != null ? request.getZhiShiType() : 0);
setting.setYueJiaQiJuType(request.getYueJiaQiJuType() != null ? request.getYueJiaQiJuType() : 1);
setting.setYearGanZhiType(request.getYearGanZhiType() != null ? request.getYearGanZhiType() : 2);
setting.setMonthGanZhiType(request.getMonthGanZhiType() != null ? request.getMonthGanZhiType() : 1);
setting.setDayGanZhiType(request.getDayGanZhiType() != null ? request.getDayGanZhiType() : 0);
QiMenZhuanPan qiMen = new QiMenZhuanPan(setting);
result.put("success", true);
result.put("data", buildQiMenData(qiMen));
} catch (Exception e) {
result.put("success", false);
result.put("error", e.getMessage());
}
return result;
}
private Map<String, Object> buildQiMenData(QiMenZhuanPan qiMen) {
Map<String, Object> data = new HashMap<>();
data.put("name", qiMen.getName());
data.put("occupy", qiMen.getOccupy());
data.put("sex", qiMen.getSex());
data.put("age", qiMen.getAge());
data.put("zao", qiMen.getZao());
data.put("solar", qiMen.getSolarStr2());
data.put("lunar", qiMen.getLunarStr2());
data.put("xingQi", qiMen.getXingQi());
data.put("jiJie", qiMen.getJiJie());
data.put("shengXiao", qiMen.getShengXiao());
data.put("xingZuo", qiMen.getXingZuo());
data.put("yueXiang", qiMen.getYueXiang());
data.put("yueJiang", qiMen.getYueJiang());
data.put("yueJiangShen", qiMen.getYueJiangShen());
data.put("wuBuYuShi", qiMen.getWuBuYuShi());
data.put("yearGan", qiMen.getYearGan());
data.put("monthGan", qiMen.getMonthGan());
data.put("dayGan", qiMen.getDayGan());
data.put("hourGan", qiMen.getHourGan());
data.put("yearZhi", qiMen.getYearZhi());
data.put("monthZhi", qiMen.getMonthZhi());
data.put("dayZhi", qiMen.getDayZhi());
data.put("hourZhi", qiMen.getHourZhi());
data.put("yearGanZhi", qiMen.getYearGanZhi());
data.put("monthGanZhi", qiMen.getMonthGanZhi());
data.put("dayGanZhi", qiMen.getDayGanZhi());
data.put("hourGanZhi", qiMen.getHourGanZhi());
data.put("yearGanWuXing", qiMen.getYearGanWuXing());
data.put("monthGanWuXing", qiMen.getMonthGanWuXing());
data.put("dayGanWuXing", qiMen.getDayGanWuXing());
data.put("hourGanWuXing", qiMen.getHourGanWuXing());
data.put("yearZhiWuXing", qiMen.getYearZhiWuXing());
data.put("monthZhiWuXing", qiMen.getMonthZhiWuXing());
data.put("dayZhiWuXing", qiMen.getDayZhiWuXing());
data.put("hourZhiWuXing", qiMen.getHourZhiWuXing());
data.put("yearGanZhiWuXing", qiMen.getYearGanZhiWuXing());
data.put("monthGanZhiWuXing", qiMen.getMonthGanZhiWuXing());
data.put("dayGanZhiWuXing", qiMen.getDayGanZhiWuXing());
data.put("hourGanZhiWuXing", qiMen.getHourGanZhiWuXing());
data.put("yearGanZhiNaYin", qiMen.getYearGanZhiNaYin());
data.put("monthGanZhiNaYin", qiMen.getMonthGanZhiNaYin());
data.put("dayGanZhiNaYin", qiMen.getDayGanZhiNaYin());
data.put("hourGanZhiNaYin", qiMen.getHourGanZhiNaYin());
data.put("yearGanZhiKongWang", qiMen.getYearGanZhiKongWang());
data.put("monthGanZhiKongWang", qiMen.getMonthGanZhiKongWang());
data.put("dayGanZhiKongWang", qiMen.getDayGanZhiKongWang());
data.put("hourGanZhiKongWang", qiMen.getHourGanZhiKongWang());
data.put("prevJie", qiMen.getPrevJie());
data.put("prevJieDateStr", qiMen.getPrevJieDateStr());
data.put("prevJieDay", qiMen.getPrevJieDay());
data.put("nextJie", qiMen.getNextJie());
data.put("nextJieDateStr", qiMen.getNextJieDateStr());
data.put("nextJieDay", qiMen.getNextJieDay());
data.put("chuShengJie", qiMen.getChuShengJie());
data.put("prevQi", qiMen.getPrevQi());
data.put("prevQiDateStr", qiMen.getPrevQiDateStr());
data.put("prevQiDay", qiMen.getPrevQiDay());
data.put("nextQi", qiMen.getNextQi());
data.put("nextQiDateStr", qiMen.getNextQiDateStr());
data.put("nextQiDay", qiMen.getNextQiDay());
data.put("chuShengQi", qiMen.getChuShengQi());
data.put("fuTou", qiMen.getFuTou());
data.put("jieQi", qiMen.getJieQi());
data.put("sanYuan", qiMen.getSanYuan());
data.put("juShu", qiMen.getJuShu());
data.put("yinYangDun", qiMen.getYinYangDun());
data.put("xunShou", qiMen.getXunShou());
data.put("xunShouYiZhang", qiMen.getXunShouYiZhang());
data.put("zhiFu", qiMen.getZhiFu());
data.put("zhiShi", qiMen.getZhiShi());
data.put("liuJiaXunKong", qiMen.getLiuJiaXunKong());
data.put("liuJiaXunKongGongWei", qiMen.getLiuJiaXunKongGongWei());
data.put("liuJiaXunKongGongWeiMark", qiMen.getLiuJiaXunKongGongWeiMark());
data.put("yiMa", qiMen.getYiMa());
data.put("yiMaGongWei", qiMen.getYiMaGongWei());
data.put("yiMaGongWeiMark", qiMen.getYiMaGongWeiMark());
data.put("diPan", qiMen.getDiPan());
data.put("tianPan", qiMen.getTianPan());
data.put("renPan", qiMen.getRenPan());
data.put("shenPan", qiMen.getShenPan());
data.put("tianPanQiYiTianQinNo", qiMen.getTianPanQiYiTianQinNo());
data.put("tianPanQiYiTianQinYes", qiMen.getTianPanQiYiTianQinYes());
data.put("tianYi", qiMen.getTianYi());
data.put("diYi", qiMen.getDiYi());
data.put("taiYi", qiMen.getTaiYi());
data.put("jiuDun", qiMen.getJiuDun());
data.put("neiWaiGongWeiMark", qiMen.getNeiWaiGongWeiMark());
data.put("neiWaiGongWeiInfo", qiMen.getNeiWaiGongWeiInfo());
data.put("tianMen", qiMen.getTianMen());
data.put("diHu", qiMen.getDiHu());
data.put("fuYin", qiMen.getFuYin());
data.put("fanYin", qiMen.getFanYin());
data.put("liuYiJiXing", qiMen.getLiuYiJiXing());
data.put("qiYiRuMu", qiMen.getQiYiRuMu());
data.put("liuYiJiXingRuMuTianQinNoStatus", qiMen.getLiuYiJiXingRuMuTianQinNoStatus());
data.put("liuYiJiXingRuMuTianQinYesStatus", qiMen.getLiuYiJiXingRuMuTianQinYesStatus());
data.put("menPoStatus", qiMen.getMenPoStatus());
data.put("shiGanKeYing", qiMen.getShiGanKeYing());
data.put("baMenKeYing", qiMen.getBaMenKeYing());
data.put("baMenJingYing", qiMen.getBaMenJingYing());
data.put("baMenDongYing", qiMen.getBaMenDongYing());
data.put("xingMenKeYing", qiMen.getXingMenKeYing());
data.put("jiuXingShiYing", qiMen.getJiuXingShiYing());
data.put("baGuaWangShuai", qiMen.getBaGuaWangShuai());
data.put("baMenWangShuai", qiMen.getBaMenWangShuai());
data.put("jiuXingWangShuai", qiMen.getJiuXingWangShuai());
data.put("baShenLuoGongStatus", qiMen.getBaShenLuoGongStatus());
data.put("baMenLuoGongStatus", qiMen.getBaMenLuoGongStatus());
data.put("jiuXingLuoGongStatus", qiMen.getJiuXingLuoGongStatus());
data.put("diPanQiYiLuoGongLink", qiMen.getDiPanQiYiLuoGongLink());
data.put("tianPanQiYiLuoGongTianQinNoLink", qiMen.getTianPanQiYiLuoGongTianQinNoLink());
data.put("tianPanQiYiLuoGongTianQinYesLink", qiMen.getTianPanQiYiLuoGongTianQinYesLink());
return data;
}
public static class QiMenRequest {
private String name;
private String occupy;
private Integer sex;
private String date;
private Integer dateType;
private Integer leapMonthType;
private Integer xuShiSuiType;
private Integer jieQiType;
private Integer paiPanType;
private Integer zhiShiType;
private Integer yueJiaQiJuType;
private Integer yearGanZhiType;
private Integer monthGanZhiType;
private Integer dayGanZhiType;
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public String getOccupy() { return occupy; }
public void setOccupy(String occupy) { this.occupy = occupy; }
public Integer getSex() { return sex; }
public void setSex(Integer sex) { this.sex = sex; }
public String getDate() { return date; }
public void setDate(String date) { this.date = date; }
public Integer getDateType() { return dateType; }
public void setDateType(Integer dateType) { this.dateType = dateType; }
public Integer getLeapMonthType() { return leapMonthType; }
public void setLeapMonthType(Integer leapMonthType) { this.leapMonthType = leapMonthType; }
public Integer getXuShiSuiType() { return xuShiSuiType; }
public void setXuShiSuiType(Integer xuShiSuiType) { this.xuShiSuiType = xuShiSuiType; }
public Integer getJieQiType() { return jieQiType; }
public void setJieQiType(Integer jieQiType) { this.jieQiType = jieQiType; }
public Integer getPaiPanType() { return paiPanType; }
public void setPaiPanType(Integer paiPanType) { this.paiPanType = paiPanType; }
public Integer getZhiShiType() { return zhiShiType; }
public void setZhiShiType(Integer zhiShiType) { this.zhiShiType = zhiShiType; }
public Integer getYueJiaQiJuType() { return yueJiaQiJuType; }
public void setYueJiaQiJuType(Integer yueJiaQiJuType) { this.yueJiaQiJuType = yueJiaQiJuType; }
public Integer getYearGanZhiType() { return yearGanZhiType; }
public void setYearGanZhiType(Integer yearGanZhiType) { this.yearGanZhiType = yearGanZhiType; }
public Integer getMonthGanZhiType() { return monthGanZhiType; }
public void setMonthGanZhiType(Integer monthGanZhiType) { this.monthGanZhiType = monthGanZhiType; }
public Integer getDayGanZhiType() { return dayGanZhiType; }
public void setDayGanZhiType(Integer dayGanZhiType) { this.dayGanZhiType = dayGanZhiType; }
}
}
@@ -0,0 +1,191 @@
package xuan.controller;
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;
@RestController
@RequestMapping("/api/ziwei")
public class ZiWeiController {
@PostMapping("/paipan")
public Map<String, Object> paiPan(@RequestBody ZiWeiRequest request) {
Map<String, Object> result = new HashMap<>();
try {
ZiWeiJiChuSetting setting = new ZiWeiJiChuSetting();
setting.setName(request.getName() != null ? request.getName() : "某人");
setting.setOccupy(request.getOccupy() != null ? request.getOccupy() : "某事");
setting.setSex(request.getSex() != null ? request.getSex() : 1);
setting.setDate(request.getDate() != null ? request.getDate() : "2024-01-01 00:00:00");
setting.setDateType(request.getDateType() != null ? request.getDateType() : 0);
setting.setLeapMonthType(request.getLeapMonthType() != null ? request.getLeapMonthType() : 0);
setting.setXuShiSuiType(request.getXuShiSuiType() != null ? request.getXuShiSuiType() : 0);
setting.setJieQiType(request.getJieQiType() != null ? request.getJieQiType() : 1);
setting.setWuXingJuType(request.getWuXingJuType() != null ? request.getWuXingJuType() : 0);
setting.setYearGanZhiType(request.getYearGanZhiType() != null ? request.getYearGanZhiType() : 2);
setting.setMonthGanZhiType(request.getMonthGanZhiType() != null ? request.getMonthGanZhiType() : 1);
setting.setDayGanZhiType(request.getDayGanZhiType() != null ? request.getDayGanZhiType() : 0);
ZiWei ziWei = new ZiWei(setting);
result.put("success", true);
result.put("data", buildZiWeiData(ziWei));
} catch (Exception e) {
result.put("success", false);
result.put("error", e.getMessage());
}
return result;
}
private Map<String, Object> buildZiWeiData(ZiWei ziWei) {
Map<String, Object> data = new HashMap<>();
data.put("name", ziWei.getName());
data.put("occupy", ziWei.getOccupy());
data.put("sex", ziWei.getSex());
data.put("age", ziWei.getAge());
data.put("zao", ziWei.getZao());
data.put("solar", ziWei.getSolarStr2());
data.put("lunar", ziWei.getLunarStr2());
data.put("xingQi", ziWei.getXingQi());
data.put("jiJie", ziWei.getJiJie());
data.put("shengXiao", ziWei.getShengXiao());
data.put("xingZuo", ziWei.getXingZuo());
data.put("yueXiang", ziWei.getYueXiang());
data.put("yueJiang", ziWei.getYueJiang());
data.put("yueJiangShen", ziWei.getYueJiangShen());
data.put("wuBuYuShi", ziWei.getWuBuYuShi());
data.put("yearGan", ziWei.getYearGan());
data.put("monthGan", ziWei.getMonthGan());
data.put("dayGan", ziWei.getDayGan());
data.put("hourGan", ziWei.getHourGan());
data.put("yearZhi", ziWei.getYearZhi());
data.put("monthZhi", ziWei.getMonthZhi());
data.put("dayZhi", ziWei.getDayZhi());
data.put("hourZhi", ziWei.getHourZhi());
data.put("yearGanZhi", ziWei.getYearGanZhi());
data.put("monthGanZhi", ziWei.getMonthGanZhi());
data.put("dayGanZhi", ziWei.getDayGanZhi());
data.put("hourGanZhi", ziWei.getHourGanZhi());
data.put("yearGanZhiNaYin", ziWei.getYearGanZhiNaYin());
data.put("monthGanZhiNaYin", ziWei.getMonthGanZhiNaYin());
data.put("dayGanZhiNaYin", ziWei.getDayGanZhiNaYin());
data.put("hourGanZhiNaYin", ziWei.getHourGanZhiNaYin());
data.put("nanNvYinYang", ziWei.getNanNvYinYang());
data.put("mingGongGongWei", ziWei.getMingGongGongWei());
data.put("shenGongGongWei", ziWei.getShenGongGongWei());
data.put("mingGongDiZhi", ziWei.getMingGongDiZhi());
data.put("shenGongDiZhi", ziWei.getShenGongDiZhi());
data.put("wuXingJu", ziWei.getWuXingJu());
data.put("shiErGongDiZhi", ziWei.getShiErGongDiZhi());
data.put("shiErGongTianGan", ziWei.getShiErGongTianGan());
data.put("shiErMingGong", ziWei.getShiErMingGong());
data.put("shiErShenGong", ziWei.getShiErShenGong());
data.put("ziWeiXingGongWei", ziWei.getZiWeiXingGongWei());
data.put("tianFuXingGongWei", ziWei.getTianFuXingGongWei());
data.put("ziWeiXingGongDiZhi", ziWei.getZiWeiXingGongDiZhi());
data.put("tianFuXingGongDiZhi", ziWei.getTianFuXingGongDiZhi());
data.put("ziWeiXingXiZhuXing", ziWei.getZiWeiXingXiZhuXing());
data.put("tianFuXingXiZhuXing", ziWei.getTianFuXingXiZhuXing());
data.put("shiZhiZhuXing", ziWei.getShiZhiZhuXing());
data.put("yueZhiZhuXing", ziWei.getYueZhiZhuXing());
data.put("nianGanZhuXing", ziWei.getNianGanZhuXing());
data.put("nianZhiZhuXing", ziWei.getNianZhiZhuXing());
data.put("dayZhuXing", ziWei.getDayZhuXing());
data.put("shiErZhangSheng", ziWei.getShiErZhangSheng());
data.put("jieLuKongWang", ziWei.getJieLuKongWang());
data.put("xunZhongKongWang", ziWei.getXunZhongKongWang());
data.put("tianShangTianShiXing", ziWei.getTianShangTianShiXing());
data.put("daXian", ziWei.getDaXian());
data.put("xiaoXian", ziWei.getXiaoXian());
data.put("shiErGongBoShi", ziWei.getShiErGongBoShi());
data.put("liuNianSuiQianZhuXing", ziWei.getLiuNianSuiQianZhuXing());
data.put("liuNianJiangQianZhuXing", ziWei.getLiuNianJiangQianZhuXing());
data.put("shiErGongZhuXing", ziWei.getShiErGongZhuXing(false));
data.put("shiErGongZhuXingGuanXi", ziWei.getShiErGongZhuXingGuanXi());
data.put("huaLuXingGongWei", ziWei.getHuaLuXingGongWei());
data.put("huaQuanXingGongWei", ziWei.getHuaQuanXingGongWei());
data.put("huaKeXingGongWei", ziWei.getHuaKeXingGongWei());
data.put("huaJiXingGongWei", ziWei.getHuaJiXingGongWei());
data.put("huaLuXingGongWeiJieDu", ziWei.getHuaLuXingGongWeiJieDu());
data.put("huaQuanXingGongWeiJieDu", ziWei.getHuaQuanXingGongWeiJieDu());
data.put("huaKeXingGongWeiJieDu", ziWei.getHuaKeXingGongWeiJieDu());
data.put("huaJiXingGongWeiJieDu", ziWei.getHuaJiXingGongWeiJieDu());
data.put("shiErGongSiHuaXing", ziWei.getShiErGongSiHuaXing());
data.put("shiErGongSiHuaXingGuanXi", ziWei.getShiErGongSiHuaXingGuanXi());
data.put("mingZhu", ziWei.getMingZhu());
data.put("shenZhu", ziWei.getShenZhu());
data.put("ziDou", ziWei.getZiDou());
data.put("liuDou", ziWei.getLiuDou());
data.put("prevJie", ziWei.getPrevJie());
data.put("nextJie", ziWei.getNextJie());
data.put("chuShengJie", ziWei.getChuShengJie());
data.put("prevQi", ziWei.getPrevQi());
data.put("nextQi", ziWei.getNextQi());
data.put("chuShengQi", ziWei.getChuShengQi());
return data;
}
public static class ZiWeiRequest {
private String name;
private String occupy;
private Integer sex;
private String date;
private Integer dateType;
private Integer leapMonthType;
private Integer xuShiSuiType;
private Integer jieQiType;
private Integer wuXingJuType;
private Integer yearGanZhiType;
private Integer monthGanZhiType;
private Integer dayGanZhiType;
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public String getOccupy() { return occupy; }
public void setOccupy(String occupy) { this.occupy = occupy; }
public Integer getSex() { return sex; }
public void setSex(Integer sex) { this.sex = sex; }
public String getDate() { return date; }
public void setDate(String date) { this.date = date; }
public Integer getDateType() { return dateType; }
public void setDateType(Integer dateType) { this.dateType = dateType; }
public Integer getLeapMonthType() { return leapMonthType; }
public void setLeapMonthType(Integer leapMonthType) { this.leapMonthType = leapMonthType; }
public Integer getXuShiSuiType() { return xuShiSuiType; }
public void setXuShiSuiType(Integer xuShiSuiType) { this.xuShiSuiType = xuShiSuiType; }
public Integer getJieQiType() { return jieQiType; }
public void setJieQiType(Integer jieQiType) { this.jieQiType = jieQiType; }
public Integer getWuXingJuType() { return wuXingJuType; }
public void setWuXingJuType(Integer wuXingJuType) { this.wuXingJuType = wuXingJuType; }
public Integer getYearGanZhiType() { return yearGanZhiType; }
public void setYearGanZhiType(Integer yearGanZhiType) { this.yearGanZhiType = yearGanZhiType; }
public Integer getMonthGanZhiType() { return monthGanZhiType; }
public void setMonthGanZhiType(Integer monthGanZhiType) { this.monthGanZhiType = monthGanZhiType; }
public Integer getDayGanZhiType() { return dayGanZhiType; }
public void setDayGanZhiType(Integer dayGanZhiType) { this.dayGanZhiType = dayGanZhiType; }
}
}
+2 -1
View File
@@ -10,7 +10,8 @@ export default {
console.log('App Hide')
},
globalData: {
baziResult: null
baziResult: null,
ziweiResult: null
}
}
</script>
+18 -2
View File
@@ -61,7 +61,15 @@
"path": "pages/qimen/qimen",
"style": {
"navigationBarTitleText": "奇门遁甲排盘",
"navigationBarBackgroundColor": "#D97706",
"navigationBarBackgroundColor": "#6366F1",
"navigationBarTextStyle": "white"
}
},
{
"path": "pages/qimen/result",
"style": {
"navigationBarTitleText": "奇门遁甲命盘",
"navigationBarBackgroundColor": "#6366F1",
"navigationBarTextStyle": "white"
}
},
@@ -85,7 +93,15 @@
"path": "pages/ziwei/ziwei",
"style": {
"navigationBarTitleText": "紫微斗数排盘",
"navigationBarBackgroundColor": "#DB2777",
"navigationBarBackgroundColor": "#7C3AED",
"navigationBarTextStyle": "white"
}
},
{
"path": "pages/ziwei/result",
"style": {
"navigationBarTitleText": "紫微命盘",
"navigationBarBackgroundColor": "#7C3AED",
"navigationBarTextStyle": "white"
}
}
+406 -23
View File
@@ -1,52 +1,435 @@
<template>
<view class="container">
<view class="developing">
<text class="developing-icon">🌟</text>
<text class="developing-title">奇门遁甲排盘</text>
<text class="developing-desc">功能开发中,敬请期待...</text>
<view class="header-card">
<view class="header-icon">
<text class="icon-text">奇</text>
</view>
<text class="header-title">奇门遁甲排盘</text>
<text class="header-subtitle">九宫飞星 · 推演天机</text>
</view>
<view class="form-card">
<view class="form-section">
<view class="section-header">
<view class="section-dot"></view>
<text class="section-title">基本信息</text>
</view>
<view class="form-item">
<view class="form-label-wrapper">
<text class="form-label">姓名</text>
</view>
<input class="form-input" v-model="name" placeholder="请输入姓名" />
</view>
<view class="form-item">
<view class="form-label-wrapper">
<text class="form-label">占事</text>
</view>
<input class="form-input" v-model="occupy" placeholder="请输入占事内容" />
</view>
<view class="form-item">
<view class="form-label-wrapper">
<text class="form-label">公历日期</text>
</view>
<picker mode="date" :value="solarDate" @change="onDateChange" class="form-picker">
<view class="picker-content">
<text class="picker-value">{{ solarDate }}</text>
<text class="picker-arrow">›</text>
</view>
</picker>
</view>
<view class="form-item">
<view class="form-label-wrapper">
<text class="form-label">出生时间</text>
</view>
<picker mode="time" :value="birthTime" @change="onTimeChange" class="form-picker">
<view class="picker-content">
<text class="picker-value">{{ birthTime }}</text>
<text class="picker-arrow">›</text>
</view>
</picker>
</view>
<view class="form-item">
<view class="form-label-wrapper">
<text class="form-label">性别</text>
</view>
<view class="gender-group">
<view class="gender-item" :class="{ active: gender === '男' }" @click="gender = '男'">
<text class="gender-text">男</text>
</view>
<view class="gender-item" :class="{ active: gender === '女' }" @click="gender = '女'">
<text class="gender-text">女</text>
</view>
</view>
</view>
<view class="form-item">
<view class="form-label-wrapper">
<text class="form-label">日期类型</text>
</view>
<view class="gender-group">
<view class="gender-item" :class="{ active: dateType === 0 }" @click="dateType = 0">
<text class="gender-text">公历</text>
</view>
<view class="gender-item" :class="{ active: dateType === 1 }" @click="dateType = 1">
<text class="gender-text">农历</text>
</view>
</view>
</view>
</view>
<view class="form-section">
<view class="section-header">
<view class="section-dot"></view>
<text class="section-title">排盘设置</text>
</view>
<view class="form-item">
<view class="form-label-wrapper">
<text class="form-label">排盘类型</text>
</view>
<picker :value="paiPanTypeIndex" :range="paiPanTypes" range-key="label" @change="onPaiPanTypeChange" class="form-picker">
<view class="picker-content">
<text class="picker-value">{{ paiPanTypes[paiPanTypeIndex].label }}</text>
<text class="picker-arrow">›</text>
</view>
</picker>
</view>
<view class="form-item">
<view class="form-label-wrapper">
<text class="form-label">值使类型</text>
</view>
<picker :value="zhiShiTypeIndex" :range="zhiShiTypes" range-key="label" @change="onZhiShiTypeChange" class="form-picker">
<view class="picker-content">
<text class="picker-value">{{ zhiShiTypes[zhiShiTypeIndex].label }}</text>
<text class="picker-arrow">›</text>
</view>
</picker>
</view>
</view>
</view>
<view class="tips-card">
<text class="tips-title">奇门遁甲简介</text>
<text class="tips-content">奇门遁甲是中国古代术数著作,以九宫八卦为基础,结合天干地支、九星、八门、八神等元素进行推演,被誉为"帝王之学"。</text>
</view>
<view class="btn-wrapper">
<button class="submit-btn" @click="calculate" :disabled="loading">
<text class="btn-text">{{ loading ? '排盘中...' : '开始排盘' }}</text>
</button>
</view>
</view>
</template>
<script>
import api from '@/utils/api.js'
export default {
data() {
return {}
return {
name: '',
occupy: '',
solarDate: '2000-01-01',
birthTime: '12:00',
gender: '男',
dateType: 0,
paiPanTypeIndex: 3,
zhiShiTypeIndex: 0,
paiPanTypes: [
{ value: 0, label: '年家奇门' },
{ value: 1, label: '月家奇门' },
{ value: 2, label: '日家奇门' },
{ value: 3, label: '时家奇门' }
],
zhiShiTypes: [
{ value: 0, label: '天禽值符用死门' },
{ value: 1, label: '根据阴阳遁判断' },
{ value: 2, label: '根据节气判断' }
],
loading: false
}
},
methods: {
onDateChange(e) {
this.solarDate = e.detail.value
},
onTimeChange(e) {
this.birthTime = e.detail.value
},
onPaiPanTypeChange(e) {
this.paiPanTypeIndex = parseInt(e.detail.value)
},
onZhiShiTypeChange(e) {
this.zhiShiTypeIndex = parseInt(e.detail.value)
},
async calculate() {
if (this.loading) return
this.loading = true
uni.showLoading({
title: '排盘中...',
mask: true
})
try {
const dateStr = this.solarDate + ' ' + this.birthTime + ':00'
const result = await api.qimenApi.paiPan({
name: this.name || '某人',
occupy: this.occupy || '某事',
sex: this.gender === '男' ? 1 : 0,
date: dateStr,
dateType: this.dateType,
paiPanType: this.paiPanTypes[this.paiPanTypeIndex].value,
zhiShiType: this.zhiShiTypes[this.zhiShiTypeIndex].value
})
getApp().globalData.qimenResult = result
uni.hideLoading()
uni.navigateTo({
url: '/pages/qimen/result'
})
} catch (e) {
uni.hideLoading()
console.error('排盘错误:', e)
uni.showToast({
title: '排盘失败:' + (e.message || '未知错误'),
icon: 'none',
duration: 3000
})
} finally {
this.loading = false
}
}
}
}
</script>
<style scoped>
.container {
padding: 20rpx;
background-color: #f5f5f5;
<style>
page {
background: linear-gradient(180deg, #EEF2FF 0%, #E0E7FF 50%, #C7D2FE 100%);
min-height: 100vh;
}
.container {
min-height: 100vh;
padding: 32rpx;
}
.header-card {
background: linear-gradient(135deg, #6366F1 0%, #4F46E5 100%);
border-radius: 32rpx;
padding: 48rpx 32rpx;
text-align: center;
margin-bottom: 32rpx;
box-shadow: 0 16rpx 48rpx rgba(99, 102, 241, 0.25);
}
.header-icon {
width: 96rpx;
height: 96rpx;
background: rgba(255, 255, 255, 0.2);
border-radius: 24rpx;
display: flex;
align-items: center;
justify-content: center;
margin: 0 auto 24rpx;
}
.developing {
text-align: center;
padding: 60rpx;
.icon-text {
font-size: 48rpx;
color: #ffffff;
font-weight: 700;
}
.developing-icon {
font-size: 120rpx;
.header-title {
font-size: 44rpx;
font-weight: 700;
color: #ffffff;
display: block;
margin-bottom: 40rpx;
margin-bottom: 12rpx;
}
.developing-title {
font-size: 40rpx;
font-weight: bold;
color: #333;
display: block;
margin-bottom: 20rpx;
.header-subtitle {
font-size: 26rpx;
color: rgba(255, 255, 255, 0.8);
}
.developing-desc {
.form-card {
background: rgba(255, 255, 255, 0.9);
border-radius: 32rpx;
padding: 32rpx;
margin-bottom: 24rpx;
box-shadow: 0 8rpx 32rpx rgba(79, 70, 229, 0.08);
backdrop-filter: blur(20rpx);
}
.form-section {
display: flex;
flex-direction: column;
margin-bottom: 24rpx;
}
.form-section:last-child {
margin-bottom: 0;
}
.section-header {
display: flex;
align-items: center;
margin-bottom: 24rpx;
}
.section-dot {
width: 8rpx;
height: 8rpx;
background: #6366F1;
border-radius: 50%;
margin-right: 12rpx;
}
.section-title {
font-size: 30rpx;
font-weight: 600;
color: #1F2937;
}
.form-item {
display: flex;
align-items: center;
padding: 24rpx 0;
border-bottom: 2rpx solid #F3F4F6;
}
.form-item:last-child {
border-bottom: none;
}
.form-label-wrapper {
width: 160rpx;
}
.form-label {
font-size: 28rpx;
color: #999;
color: #374151;
font-weight: 500;
}
.form-input {
flex: 1;
font-size: 28rpx;
color: #1F2937;
text-align: right;
}
.form-picker {
flex: 1;
}
.picker-content {
display: flex;
align-items: center;
justify-content: flex-end;
}
.picker-value {
font-size: 28rpx;
color: #1F2937;
font-weight: 500;
}
.picker-arrow {
font-size: 32rpx;
color: #9CA3AF;
margin-left: 8rpx;
}
.gender-group {
display: flex;
flex: 1;
justify-content: flex-end;
gap: 16rpx;
}
.gender-item {
padding: 16rpx 40rpx;
border-radius: 16rpx;
background: #F3F4F6;
border: 2rpx solid transparent;
}
.gender-item.active {
background: #EEF2FF;
border-color: #6366F1;
}
.gender-text {
font-size: 28rpx;
color: #6B7280;
font-weight: 500;
}
.gender-item.active .gender-text {
color: #6366F1;
}
.tips-card {
background: rgba(255, 255, 255, 0.6);
border-radius: 24rpx;
padding: 24rpx;
margin-bottom: 32rpx;
border-left: 6rpx solid #6366F1;
}
.tips-title {
font-size: 26rpx;
font-weight: 600;
color: #4338CA;
display: block;
margin-bottom: 8rpx;
}
.tips-content {
font-size: 24rpx;
color: #6B7280;
line-height: 1.6;
}
.btn-wrapper {
padding: 16rpx 0;
}
.submit-btn {
background: linear-gradient(135deg, #6366F1 0%, #4F46E5 100%);
border-radius: 24rpx;
padding: 32rpx;
text-align: center;
box-shadow: 0 12rpx 32rpx rgba(99, 102, 241, 0.3);
border: none;
}
.submit-btn:active {
transform: scale(0.98);
box-shadow: 0 8rpx 24rpx rgba(99, 102, 241, 0.4);
}
.submit-btn[disabled] {
opacity: 0.6;
}
.btn-text {
font-size: 32rpx;
color: #ffffff;
font-weight: 600;
letter-spacing: 4rpx;
}
</style>
@@ -0,0 +1,541 @@
<template>
<view class="container">
<view class="header-card">
<view class="header-row">
<view class="header-item">
<text class="header-label">{{ data.zao }}</text>
<text class="header-value">{{ data.name }}</text>
</view>
<view class="header-item">
<text class="header-label">年龄</text>
<text class="header-value">{{ data.age }}岁</text>
</view>
</view>
<view class="header-row">
<text class="header-date">{{ data.solar }}</text>
</view>
<view class="header-row">
<text class="header-lunar">{{ data.lunar }}</text>
</view>
</view>
<view class="info-card">
<view class="info-row">
<view class="info-item">
<text class="info-label">四柱</text>
<view class="info-value-group">
<text class="gz-item">{{ data.yearGanZhi }}</text>
<text class="gz-item">{{ data.monthGanZhi }}</text>
<text class="gz-item">{{ data.dayGanZhi }}</text>
<text class="gz-item">{{ data.hourGanZhi }}</text>
</view>
</view>
</view>
<view class="info-row">
<view class="info-item">
<text class="info-label">节气</text>
<text class="info-value">{{ data.jieQi }}{{ data.sanYuan }}</text>
</view>
<view class="info-item">
<text class="info-label">局数</text>
<text class="info-value highlight">{{ data.yinYangDun }}{{ data.juShu }}局</text>
</view>
</view>
<view class="info-row">
<view class="info-item">
<text class="info-label">旬首</text>
<text class="info-value">{{ data.xunShou }}({{ data.xunShouYiZhang }})</text>
</view>
</view>
<view class="info-row">
<view class="info-item">
<text class="info-label">值符</text>
<text class="info-value highlight">{{ data.zhiFu }}</text>
</view>
<view class="info-item">
<text class="info-label">值使</text>
<text class="info-value highlight">{{ data.zhiShi }}</text>
</view>
</view>
</view>
<view class="jiugong-card">
<text class="card-title">九宫排盘</text>
<view class="jiugong-grid">
<view class="jiugong-row">
<view class="jiugong-cell" v-for="(item, idx) in [4, 9, 2]" :key="idx">
<view class="cell-header">
<text class="cell-gong">{{ gongNames[item-1] }}</text>
<text class="cell-mark" v-if="data.liuJiaXunKongGongWeiMark && data.liuJiaXunKongGongWeiMark[item-1]">{{ data.liuJiaXunKongGongWeiMark[item-1] }}</text>
<text class="cell-mark" v-if="data.yiMaGongWeiMark && data.yiMaGongWeiMark[item-1]">{{ data.yiMaGongWeiMark[item-1] }}</text>
</view>
<view class="cell-content">
<view class="cell-row">
<text class="shen-text">{{ data.shenPan && data.shenPan[item-1] }}</text>
</view>
<view class="cell-row">
<text class="tian-text">{{ data.tianPan && data.tianPan[item-1] }}</text>
</view>
<view class="cell-row">
<text class="qi-text">{{ data.tianPanQiYiTianQinNo && data.tianPanQiYiTianQinNo[item-1] }} {{ data.tianPanQiYiTianQinYes && data.tianPanQiYiTianQinYes[item-1] }}</text>
</view>
<view class="cell-divider"></view>
<view class="cell-row">
<text class="di-text">{{ data.diPan && data.diPan[item-1] }}</text>
</view>
<view class="cell-row">
<text class="men-text">{{ data.renPan && data.renPan[item-1] }}</text>
</view>
</view>
</view>
</view>
<view class="jiugong-row">
<view class="jiugong-cell" v-for="(item, idx) in [3, 5, 7]" :key="idx">
<view class="cell-header">
<text class="cell-gong">{{ gongNames[item-1] }}</text>
<text class="cell-mark" v-if="data.liuJiaXunKongGongWeiMark && data.liuJiaXunKongGongWeiMark[item-1]">{{ data.liuJiaXunKongGongWeiMark[item-1] }}</text>
<text class="cell-mark" v-if="data.yiMaGongWeiMark && data.yiMaGongWeiMark[item-1]">{{ data.yiMaGongWeiMark[item-1] }}</text>
</view>
<view class="cell-content">
<view class="cell-row">
<text class="shen-text">{{ data.shenPan && data.shenPan[item-1] }}</text>
</view>
<view class="cell-row">
<text class="tian-text">{{ data.tianPan && data.tianPan[item-1] }}</text>
</view>
<view class="cell-row">
<text class="qi-text">{{ data.tianPanQiYiTianQinNo && data.tianPanQiYiTianQinNo[item-1] }} {{ data.tianPanQiYiTianQinYes && data.tianPanQiYiTianQinYes[item-1] }}</text>
</view>
<view class="cell-divider"></view>
<view class="cell-row">
<text class="di-text">{{ data.diPan && data.diPan[item-1] }}</text>
</view>
<view class="cell-row">
<text class="men-text">{{ data.renPan && data.renPan[item-1] }}</text>
</view>
</view>
</view>
</view>
<view class="jiugong-row">
<view class="jiugong-cell" v-for="(item, idx) in [8, 1, 6]" :key="idx">
<view class="cell-header">
<text class="cell-gong">{{ gongNames[item-1] }}</text>
<text class="cell-mark" v-if="data.liuJiaXunKongGongWeiMark && data.liuJiaXunKongGongWeiMark[item-1]">{{ data.liuJiaXunKongGongWeiMark[item-1] }}</text>
<text class="cell-mark" v-if="data.yiMaGongWeiMark && data.yiMaGongWeiMark[item-1]">{{ data.yiMaGongWeiMark[item-1] }}</text>
</view>
<view class="cell-content">
<view class="cell-row">
<text class="shen-text">{{ data.shenPan && data.shenPan[item-1] }}</text>
</view>
<view class="cell-row">
<text class="tian-text">{{ data.tianPan && data.tianPan[item-1] }}</text>
</view>
<view class="cell-row">
<text class="qi-text">{{ data.tianPanQiYiTianQinNo && data.tianPanQiYiTianQinNo[item-1] }} {{ data.tianPanQiYiTianQinYes && data.tianPanQiYiTianQinYes[item-1] }}</text>
</view>
<view class="cell-divider"></view>
<view class="cell-row">
<text class="di-text">{{ data.diPan && data.diPan[item-1] }}</text>
</view>
<view class="cell-row">
<text class="men-text">{{ data.renPan && data.renPan[item-1] }}</text>
</view>
</view>
</view>
</view>
</view>
</view>
<view class="detail-card">
<text class="card-title">三盘信息</text>
<view class="detail-section">
<text class="detail-label">地盘(三奇六仪)</text>
<view class="detail-content">
<text class="detail-text">{{ formatList(data.diPan) }}</text>
</view>
</view>
<view class="detail-section">
<text class="detail-label">天盘(九星)</text>
<view class="detail-content">
<text class="detail-text">{{ formatList(data.tianPan) }}</text>
</view>
</view>
<view class="detail-section">
<text class="detail-label">人盘(八门)</text>
<view class="detail-content">
<text class="detail-text">{{ formatList(data.renPan) }}</text>
</view>
</view>
<view class="detail-section">
<text class="detail-label">神盘(八神)</text>
<view class="detail-content">
<text class="detail-text">{{ formatList(data.shenPan) }}</text>
</view>
</view>
</view>
<view class="detail-card">
<text class="card-title">吉凶判断</text>
<view class="detail-section" v-if="data.fuYin && data.fuYin.length > 0">
<text class="detail-label">伏吟</text>
<view class="detail-content">
<text class="detail-text warning">{{ formatList(data.fuYin) }}</text>
</view>
</view>
<view class="detail-section" v-if="data.fanYin && data.fanYin.length > 0">
<text class="detail-label">反吟</text>
<view class="detail-content">
<text class="detail-text warning">{{ formatList(data.fanYin) }}</text>
</view>
</view>
<view class="detail-section" v-if="data.liuYiJiXing && data.liuYiJiXing.length > 0">
<text class="detail-label">六仪击刑</text>
<view class="detail-content">
<text class="detail-text warning">{{ formatList(data.liuYiJiXing) }}</text>
</view>
</view>
<view class="detail-section" v-if="data.qiYiRuMu && data.qiYiRuMu.length > 0">
<text class="detail-label">奇仪入墓</text>
<view class="detail-content">
<text class="detail-text warning">{{ formatList(data.qiYiRuMu) }}</text>
</view>
</view>
<view class="detail-section" v-if="data.wuBuYuShi">
<text class="detail-label">五不遇时</text>
<view class="detail-content">
<text class="detail-text warning">符合五不遇时条件</text>
</view>
</view>
<view class="detail-section">
<text class="detail-label">旬空</text>
<view class="detail-content">
<text class="detail-text">{{ formatList(data.liuJiaXunKong) }} 落{{ formatList(data.liuJiaXunKongGongWei) }}宫</text>
</view>
</view>
<view class="detail-section">
<text class="detail-label">驿马</text>
<view class="detail-content">
<text class="detail-text">{{ data.yiMa }} 落{{ data.yiMaGongWei }}宫</text>
</view>
</view>
</view>
<view class="detail-card">
<text class="card-title">其他信息</text>
<view class="detail-section">
<text class="detail-label">天乙</text>
<text class="detail-value">{{ data.tianYi }}</text>
</view>
<view class="detail-section">
<text class="detail-label">地乙</text>
<text class="detail-value">{{ data.diYi }}</text>
</view>
<view class="detail-section">
<text class="detail-label">太乙</text>
<text class="detail-value">{{ data.taiYi }}</text>
</view>
<view class="detail-section">
<text class="detail-label">月相</text>
<text class="detail-value">{{ data.yueXiang }}</text>
</view>
<view class="detail-section">
<text class="detail-label">月将</text>
<text class="detail-value">{{ data.yueJiang }}({{ data.yueJiangShen }})</text>
</view>
<view class="detail-section">
<text class="detail-label">内外盘</text>
<view class="detail-content">
<text class="detail-text" v-for="(info, idx) in data.neiWaiGongWeiInfo" :key="idx">{{ info }}</text>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
data: {},
gongNames: ['坎一宫', '坤二宫', '震三宫', '巽四宫', '中五宫', '乾六宫', '兑七宫', '艮八宫', '离九宫']
}
},
onLoad() {
this.data = getApp().globalData.qimenResult || {}
},
methods: {
formatList(list) {
if (!list || !Array.isArray(list)) return ''
return list.filter(item => item && item !== '').join('、')
}
}
}
</script>
<style>
page {
background: linear-gradient(180deg, #EEF2FF 0%, #E0E7FF 50%, #C7D2FE 100%);
min-height: 100vh;
}
.container {
min-height: 100vh;
padding: 32rpx;
}
.header-card {
background: linear-gradient(135deg, #6366F1 0%, #4F46E5 100%);
border-radius: 32rpx;
padding: 32rpx;
margin-bottom: 24rpx;
box-shadow: 0 16rpx 48rpx rgba(99, 102, 241, 0.25);
}
.header-row {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 16rpx;
}
.header-row:last-child {
margin-bottom: 0;
}
.header-item {
display: flex;
align-items: center;
gap: 12rpx;
}
.header-label {
font-size: 26rpx;
color: rgba(255, 255, 255, 0.8);
}
.header-value {
font-size: 32rpx;
color: #ffffff;
font-weight: 600;
}
.header-date {
font-size: 28rpx;
color: #ffffff;
}
.header-lunar {
font-size: 26rpx;
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(79, 70, 229, 0.08);
}
.info-row {
display: flex;
justify-content: space-between;
padding: 16rpx 0;
border-bottom: 2rpx solid #F3F4F6;
}
.info-row:last-child {
border-bottom: none;
}
.info-item {
display: flex;
align-items: center;
gap: 16rpx;
flex: 1;
}
.info-label {
font-size: 26rpx;
color: #6B7280;
min-width: 80rpx;
}
.info-value {
font-size: 28rpx;
color: #1F2937;
font-weight: 500;
}
.info-value.highlight {
color: #6366F1;
font-weight: 600;
}
.info-value-group {
display: flex;
gap: 12rpx;
}
.gz-item {
background: linear-gradient(135deg, #6366F1 0%, #4F46E5 100%);
color: #ffffff;
padding: 8rpx 16rpx;
border-radius: 8rpx;
font-size: 26rpx;
font-weight: 500;
}
.jiugong-card {
background: rgba(255, 255, 255, 0.9);
border-radius: 24rpx;
padding: 24rpx;
margin-bottom: 24rpx;
box-shadow: 0 8rpx 32rpx rgba(79, 70, 229, 0.08);
}
.card-title {
font-size: 30rpx;
font-weight: 600;
color: #1F2937;
display: block;
margin-bottom: 20rpx;
padding-bottom: 16rpx;
border-bottom: 2rpx solid #F3F4F6;
}
.jiugong-grid {
display: flex;
flex-direction: column;
gap: 4rpx;
}
.jiugong-row {
display: flex;
gap: 4rpx;
}
.jiugong-cell {
flex: 1;
background: #F9FAFB;
border: 2rpx solid #E5E7EB;
border-radius: 12rpx;
padding: 12rpx;
min-height: 180rpx;
}
.cell-header {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 8rpx;
padding-bottom: 8rpx;
border-bottom: 1rpx solid #E5E7EB;
}
.cell-gong {
font-size: 22rpx;
color: #6B7280;
font-weight: 500;
}
.cell-mark {
font-size: 20rpx;
color: #EF4444;
margin-left: 8rpx;
}
.cell-content {
display: flex;
flex-direction: column;
gap: 4rpx;
}
.cell-row {
display: flex;
align-items: center;
justify-content: center;
}
.cell-divider {
height: 1rpx;
background: #E5E7EB;
margin: 4rpx 0;
}
.shen-text {
font-size: 22rpx;
color: #8B5CF6;
font-weight: 500;
}
.tian-text {
font-size: 22rpx;
color: #3B82F6;
font-weight: 500;
}
.qi-text {
font-size: 22rpx;
color: #10B981;
font-weight: 500;
}
.di-text {
font-size: 22rpx;
color: #F59E0B;
font-weight: 500;
}
.men-text {
font-size: 22rpx;
color: #EF4444;
font-weight: 500;
}
.detail-card {
background: rgba(255, 255, 255, 0.9);
border-radius: 24rpx;
padding: 24rpx;
margin-bottom: 24rpx;
box-shadow: 0 8rpx 32rpx rgba(79, 70, 229, 0.08);
}
.detail-section {
padding: 16rpx 0;
border-bottom: 2rpx solid #F3F4F6;
}
.detail-section:last-child {
border-bottom: none;
}
.detail-label {
font-size: 26rpx;
color: #6B7280;
display: block;
margin-bottom: 8rpx;
}
.detail-value {
font-size: 28rpx;
color: #1F2937;
font-weight: 500;
}
.detail-content {
display: flex;
flex-direction: column;
gap: 8rpx;
}
.detail-text {
font-size: 26rpx;
color: #374151;
line-height: 1.6;
}
.detail-text.warning {
color: #DC2626;
}
</style>
@@ -0,0 +1,626 @@
<template>
<view class="container">
<view class="header-card">
<view class="header-row">
<view class="header-icon">
<text class="icon-text">紫</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>
</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>
<view class="info-divider"></view>
<view class="info-item">
<text class="info-label">农历</text>
<text class="info-value">{{ result.lunar || '-' }}</text>
</view>
</view>
</view>
<view class="sizhu-card">
<view class="card-header">
<view class="card-dot"></view>
<text class="card-title">四柱八字</text>
</view>
<view class="sizhu-row">
<view class="sizhu-item">
<text class="sizhu-label">年柱</text>
<text class="sizhu-value">{{ result.yearGanZhi || '-' }}</text>
</view>
<view class="sizhu-item">
<text class="sizhu-label">月柱</text>
<text class="sizhu-value">{{ result.monthGanZhi || '-' }}</text>
</view>
<view class="sizhu-item">
<text class="sizhu-label">日柱</text>
<text class="sizhu-value">{{ result.dayGanZhi || '-' }}</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>
</view>
</view>
</view>
<view class="mingpan-card">
<view class="card-header">
<view class="card-dot gold"></view>
<text class="card-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) }">
<view class="cell-header">
<text class="cell-gongzhi">{{ result.shiErGongDiZhi && result.shiErGongDiZhi[index] }}</text>
<text class="cell-tiangan">{{ result.shiErGongTianGan && result.shiErGongTianGan[index] }}</text>
</view>
<view class="cell-minggong">
<text class="minggong-text">{{ result.shiErMingGong && result.shiErMingGong[index] }}</text>
<text class="shengong-text" v-if="result.shiErShenGong && result.shiErShenGong[index]">{{ result.shiErShenGong[index] }}</text>
</view>
<view class="cell-daxian">
<text class="daxian-text">{{ result.daXian && result.daXian[index] }}</text>
</view>
<view class="cell-zhuxing">
<text class="zhuxing-item" v-for="(star, sIdx) in getGongStars(index)" :key="sIdx" :class="getStarClass(star)">
{{ star }}
</text>
</view>
<view class="cell-sihua">
<text class="sihua-item lu" v-if="hasSiHua(index, '禄')">禄</text>
<text class="sihua-item quan" v-if="hasSiHua(index, '权')">权</text>
<text class="sihua-item ke" v-if="hasSiHua(index, '科')">科</text>
<text class="sihua-item ji" v-if="hasSiHua(index, '忌')">忌</text>
</view>
<view class="cell-zhangsheng">
<text class="zhangsheng-text">{{ result.shiErZhangSheng && result.shiErZhangSheng[index] }}</text>
</view>
</view>
</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>
<view class="other-info">
<view class="other-row">
<text class="other-label">阴阳:</text>
<text class="other-value">{{ result.nanNvYinYang || '-' }}</text>
</view>
<view class="other-row">
<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>
<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>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
result: {},
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) {
this.result = app.globalData.ziweiResult
} else {
uni.showToast({
title: '未获取到排盘数据',
icon: 'none'
})
}
},
methods: {
isMingGong(index) {
return this.result.mingGongGongWei === (index + 1)
},
isShenGong(index) {
return this.result.shenGongGongWei === (index + 1)
},
getGongStars(index) {
const stars = this.result.shiErGongZhuXing
if (stars && stars[index]) {
return stars[index]
}
return []
},
getStarClass(star) {
if (!star) return ''
const zhuXingList = ['紫微', '天机', '太阳', '武曲', '天同', '廉贞', '天府', '太阴', '贪狼', '巨门', '天相', '天梁', '七杀', '破军']
if (zhuXingList.includes(star)) {
return 'main-star'
}
return 'sub-star'
},
hasSiHua(index, type) {
const sihua = this.result.shiErGongSiHuaXing
if (sihua && sihua[index]) {
return sihua[index].includes(type)
}
return false
}
}
}
</script>
<style>
page {
background: linear-gradient(180deg, #EEF2FF 0%, #E0E7FF 50%, #C7D2FE 100%);
min-height: 100vh;
}
.container {
min-height: 100vh;
padding: 32rpx;
}
.header-card {
background: linear-gradient(135deg, #7C3AED 0%, #6D28D9 100%);
border-radius: 32rpx;
padding: 32rpx;
margin-bottom: 24rpx;
box-shadow: 0 16rpx 48rpx rgba(124, 58, 237, 0.25);
}
.header-row {
display: flex;
align-items: center;
}
.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;
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;
font-weight: 500;
}
.info-divider {
width: 2rpx;
height: 48rpx;
background: #F3F4F6;
}
.sizhu-card, .gongwei-card, .mingpan-card, .zhuxing-card, .sihua-card, .other-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);
}
.card-header {
display: flex;
align-items: center;
margin-bottom: 20rpx;
}
.card-dot {
width: 8rpx;
height: 8rpx;
background: #7C3AED;
border-radius: 50%;
margin-right: 12rpx;
}
.card-dot.gold { background: #F59E0B; }
.card-dot.purple { background: #8B5CF6; }
.card-dot.blue { background: #3B82F6; }
.card-dot.cyan { background: #06B6D4; }
.card-dot.orange { background: #F97316; }
.card-title {
font-size: 28rpx;
font-weight: 600;
color: #1F2937;
flex: 1;
}
.sizhu-row {
display: flex;
justify-content: space-around;
}
.sizhu-item {
text-align: center;
}
.sizhu-label {
font-size: 22rpx;
color: #9CA3AF;
display: block;
margin-bottom: 8rpx;
}
.sizhu-value {
font-size: 32rpx;
font-weight: 700;
color: #7C3AED;
}
.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;
}
.mingpan-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-template-rows: repeat(4, 1fr);
gap: 4rpx;
background: #E5E7EB;
border-radius: 16rpx;
overflow: hidden;
}
.mingpan-cell {
background: #FFFFFF;
padding: 8rpx;
min-height: 160rpx;
display: flex;
flex-direction: column;
position: relative;
}
.mingpan-cell.ming-gong {
background: linear-gradient(135deg, #FEF3C7 0%, #FDE68A 100%);
}
.mingpan-cell.shen-gong {
background: linear-gradient(135deg, #DBEAFE 0%, #BFDBFE 100%);
}
.mingpan-cell.ming-gong.shen-gong {
background: linear-gradient(135deg, #D1FAE5 0%, #A7F3D0 100%);
}
.cell-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 4rpx;
}
.cell-gongzhi {
font-size: 20rpx;
color: #6B7280;
font-weight: 600;
}
.cell-tiangan {
font-size: 18rpx;
color: #9CA3AF;
}
.cell-minggong {
margin-bottom: 4rpx;
}
.minggong-text {
font-size: 20rpx;
color: #7C3AED;
font-weight: 600;
}
.shengong-text {
font-size: 18rpx;
color: #3B82F6;
margin-left: 8rpx;
}
.cell-daxian {
margin-bottom: 4rpx;
}
.daxian-text {
font-size: 16rpx;
color: #F59E0B;
}
.cell-zhuxing {
flex: 1;
display: flex;
flex-wrap: wrap;
gap: 2rpx;
}
.zhuxing-item {
font-size: 16rpx;
padding: 2rpx 4rpx;
border-radius: 4rpx;
}
.zhuxing-item.main-star {
background: #EDE9FE;
color: #6D28D9;
font-weight: 600;
}
.zhuxing-item.sub-star {
background: #F3F4F6;
color: #6B7280;
}
.cell-sihua {
display: flex;
gap: 4rpx;
margin-top: 4rpx;
}
.sihua-item {
font-size: 14rpx;
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-zhangsheng {
margin-top: 4rpx;
}
.zhangsheng-text {
font-size: 14rpx;
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 {
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 {
display: flex;
align-items: flex-start;
padding: 12rpx 0;
}
.sihua-label, .other-label {
font-size: 26rpx;
color: #6B7280;
width: 100rpx;
flex-shrink: 0;
}
.sihua-value, .other-value {
font-size: 26rpx;
color: #1F2937;
flex: 1;
}
</style>
+340 -23
View File
@@ -1,52 +1,369 @@
<template>
<view class="container">
<view class="developing">
<text class="developing-icon">⭐</text>
<text class="developing-title">紫微斗数排盘</text>
<text class="developing-desc">功能开发中,敬请期待...</text>
<view class="header-card">
<view class="header-icon">
<text class="icon-text">紫</text>
</view>
<text class="header-title">紫微斗数排盘</text>
<text class="header-subtitle">帝王之学 · 推演命理</text>
</view>
<view class="form-card">
<view class="form-section">
<view class="section-header">
<view class="section-dot"></view>
<text class="section-title">出生信息</text>
</view>
<view class="form-item">
<view class="form-label-wrapper">
<text class="form-label">姓名</text>
</view>
<input class="form-input" v-model="name" placeholder="请输入姓名" />
</view>
<view class="form-item">
<view class="form-label-wrapper">
<text class="form-label">公历日期</text>
</view>
<picker mode="date" :value="solarDate" @change="onDateChange" class="form-picker">
<view class="picker-content">
<text class="picker-value">{{ solarDate }}</text>
<text class="picker-arrow">›</text>
</view>
</picker>
</view>
<view class="form-item">
<view class="form-label-wrapper">
<text class="form-label">出生时间</text>
</view>
<picker mode="time" :value="birthTime" @change="onTimeChange" class="form-picker">
<view class="picker-content">
<text class="picker-value">{{ birthTime }}</text>
<text class="picker-arrow">›</text>
</view>
</picker>
</view>
<view class="form-item">
<view class="form-label-wrapper">
<text class="form-label">性别</text>
</view>
<view class="gender-group">
<view class="gender-item" :class="{ active: gender === '男' }" @click="gender = '男'">
<text class="gender-text">男</text>
</view>
<view class="gender-item" :class="{ active: gender === '女' }" @click="gender = '女'">
<text class="gender-text">女</text>
</view>
</view>
</view>
<view class="form-item">
<view class="form-label-wrapper">
<text class="form-label">日期类型</text>
</view>
<view class="gender-group">
<view class="gender-item" :class="{ active: dateType === 0 }" @click="dateType = 0">
<text class="gender-text">公历</text>
</view>
<view class="gender-item" :class="{ active: dateType === 1 }" @click="dateType = 1">
<text class="gender-text">农历</text>
</view>
</view>
</view>
</view>
</view>
<view class="tips-card">
<text class="tips-title">紫微斗数简介</text>
<text class="tips-content">紫微斗数是中国传统命理学的重要支派,以紫微星为主星,配合十四主星及其他星曜,推演人生运势。通过出生年月日时排定命盘,分析十二宫位中的星曜组合,揭示命运走向。</text>
</view>
<view class="btn-wrapper">
<button class="submit-btn" @click="calculate" :disabled="loading">
<text class="btn-text">{{ loading ? '排盘中...' : '开始排盘' }}</text>
</button>
</view>
</view>
</template>
<script>
import api from '@/utils/api.js'
export default {
data() {
return {}
return {
name: '',
solarDate: '2000-01-01',
birthTime: '12:00',
gender: '男',
dateType: 0,
loading: false
}
},
methods: {
onDateChange(e) {
this.solarDate = e.detail.value
},
onTimeChange(e) {
this.birthTime = e.detail.value
},
async calculate() {
if (this.loading) return
this.loading = true
uni.showLoading({
title: '排盘中...',
mask: true
})
try {
const dateStr = this.solarDate + ' ' + this.birthTime + ':00'
const result = await api.ziweiApi.paiPan({
name: this.name || '某人',
sex: this.gender === '男' ? 1 : 0,
date: dateStr,
dateType: this.dateType
})
getApp().globalData.ziweiResult = result
uni.hideLoading()
uni.navigateTo({
url: '/pages/ziwei/result'
})
} catch (e) {
uni.hideLoading()
console.error('排盘错误:', e)
uni.showToast({
title: '排盘失败:' + (e.message || '未知错误'),
icon: 'none',
duration: 3000
})
} finally {
this.loading = false
}
}
}
}
</script>
<style scoped>
.container {
padding: 20rpx;
background-color: #f5f5f5;
<style>
page {
background: linear-gradient(180deg, #EEF2FF 0%, #E0E7FF 50%, #C7D2FE 100%);
min-height: 100vh;
}
.container {
min-height: 100vh;
padding: 32rpx;
}
.header-card {
background: linear-gradient(135deg, #7C3AED 0%, #6D28D9 100%);
border-radius: 32rpx;
padding: 48rpx 32rpx;
text-align: center;
margin-bottom: 32rpx;
box-shadow: 0 16rpx 48rpx rgba(124, 58, 237, 0.25);
}
.header-icon {
width: 96rpx;
height: 96rpx;
background: rgba(255, 255, 255, 0.2);
border-radius: 24rpx;
display: flex;
align-items: center;
justify-content: center;
margin: 0 auto 24rpx;
}
.developing {
text-align: center;
padding: 60rpx;
.icon-text {
font-size: 48rpx;
color: #ffffff;
font-weight: 700;
}
.developing-icon {
font-size: 120rpx;
.header-title {
font-size: 44rpx;
font-weight: 700;
color: #ffffff;
display: block;
margin-bottom: 40rpx;
margin-bottom: 12rpx;
}
.developing-title {
font-size: 40rpx;
font-weight: bold;
color: #333;
display: block;
margin-bottom: 20rpx;
.header-subtitle {
font-size: 26rpx;
color: rgba(255, 255, 255, 0.8);
}
.developing-desc {
.form-card {
background: rgba(255, 255, 255, 0.9);
border-radius: 32rpx;
padding: 32rpx;
margin-bottom: 24rpx;
box-shadow: 0 8rpx 32rpx rgba(109, 40, 217, 0.08);
backdrop-filter: blur(20rpx);
}
.form-section {
display: flex;
flex-direction: column;
}
.section-header {
display: flex;
align-items: center;
margin-bottom: 24rpx;
}
.section-dot {
width: 8rpx;
height: 8rpx;
background: #7C3AED;
border-radius: 50%;
margin-right: 12rpx;
}
.section-title {
font-size: 30rpx;
font-weight: 600;
color: #1F2937;
}
.form-item {
display: flex;
align-items: center;
padding: 24rpx 0;
border-bottom: 2rpx solid #F3F4F6;
}
.form-item:last-child {
border-bottom: none;
}
.form-label-wrapper {
width: 160rpx;
}
.form-label {
font-size: 28rpx;
color: #999;
color: #374151;
font-weight: 500;
}
.form-input {
flex: 1;
font-size: 28rpx;
color: #1F2937;
text-align: right;
}
.form-picker {
flex: 1;
}
.picker-content {
display: flex;
align-items: center;
justify-content: flex-end;
}
.picker-value {
font-size: 28rpx;
color: #1F2937;
font-weight: 500;
}
.picker-arrow {
font-size: 32rpx;
color: #9CA3AF;
margin-left: 8rpx;
}
.gender-group {
display: flex;
flex: 1;
justify-content: flex-end;
gap: 16rpx;
}
.gender-item {
padding: 16rpx 40rpx;
border-radius: 16rpx;
background: #F3F4F6;
border: 2rpx solid transparent;
}
.gender-item.active {
background: #EDE9FE;
border-color: #7C3AED;
}
.gender-text {
font-size: 28rpx;
color: #6B7280;
font-weight: 500;
}
.gender-item.active .gender-text {
color: #7C3AED;
}
.tips-card {
background: rgba(255, 255, 255, 0.6);
border-radius: 24rpx;
padding: 24rpx;
margin-bottom: 32rpx;
border-left: 6rpx solid #7C3AED;
}
.tips-title {
font-size: 26rpx;
font-weight: 600;
color: #5B21B6;
display: block;
margin-bottom: 8rpx;
}
.tips-content {
font-size: 24rpx;
color: #6B7280;
line-height: 1.6;
}
.btn-wrapper {
padding: 16rpx 0;
}
.submit-btn {
background: linear-gradient(135deg, #7C3AED 0%, #6D28D9 100%);
border-radius: 24rpx;
padding: 32rpx;
text-align: center;
box-shadow: 0 12rpx 32rpx rgba(124, 58, 237, 0.3);
border: none;
}
.submit-btn:active {
transform: scale(0.98);
box-shadow: 0 8rpx 24rpx rgba(124, 58, 237, 0.4);
}
.submit-btn[disabled] {
opacity: 0.6;
}
.btn-text {
font-size: 32rpx;
color: #ffffff;
font-weight: 600;
letter-spacing: 4rpx;
}
</style>
+24
View File
@@ -125,10 +125,34 @@ const qimenApi = {
}
}
const ziweiApi = {
paiPan: (data) => {
return request({
url: '/ziwei/paipan',
method: 'POST',
data: {
name: data.name || '某人',
occupy: data.occupy || '某事',
sex: data.sex || 1,
date: data.date,
dateType: data.dateType || 0,
leapMonthType: data.leapMonthType || 0,
xuShiSuiType: data.xuShiSuiType || 0,
jieQiType: data.jieQiType || 1,
wuXingJuType: data.wuXingJuType || 0,
yearGanZhiType: data.yearGanZhiType || 2,
monthGanZhiType: data.monthGanZhiType || 1,
dayGanZhiType: data.dayGanZhiType || 0
}
})
}
}
export default {
baziApi,
liuyaoApi,
daliurenApi,
qimenApi,
ziweiApi,
request
}