feat: 完成奇门遁甲排盘功能开发
- 新增后端QiMenController控制器,提供奇门遁甲排盘API接口 - 新增前端奇门遁甲输入页面qimen.vue,支持姓名、占事、日期、时间等参数设置 - 新增前端奇门遁甲结果页面result.vue,展示九宫排盘、三盘信息、吉凶判断等 - 更新api.js添加qimenApi接口 - 更新pages.json添加结果页面路由
This commit is contained in:
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; }
|
||||
}
|
||||
|
||||
}
|
||||
@@ -10,7 +10,8 @@ export default {
|
||||
console.log('App Hide')
|
||||
},
|
||||
globalData: {
|
||||
baziResult: null
|
||||
baziResult: null,
|
||||
ziweiResult: null
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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
|
||||
}
|
||||
Reference in new issue
Block a user