桃树管理该做什么、什么时候做,打开就能看

开花怕冻、采收赶行情、打药赶时机——本助手把平谷的气象数据换算成具体的农事日子:哪天可能有霜冻要提前熏烟,各品种桃子大概哪几天成熟,未来哪些天容易发病。上方选择您的村子,往下看安排。

您家桃园 · 今日速览 数据加载中…
📍
花期预估
按冬春积温推算
最近采收品种
早熟品种最先
未来 16 天关注日
霜冻和发病天气
休眠期低温累计
0–7.2℃ 小时累计

请先在上方选择您所在的乡镇,各项日期均按当地气象数据计算。气象为模式推算数据,重大天气过程请以气象部门官方发布为准。

本期农事推进方案

根据当前气象数据,为您排出了近期桃园的农事安排:红色为紧急事项,黄色建议提前准备,绿色供提前知晓。每条均可展开查看具体做法,也可一键复制转发。

正在根据所选乡镇的气象数据生成安排…

农事月历

一整个月的农事日子贴在一本月历上:哪个日子标了「采」就是哪天能采桃,标了「褐」「疮」的天要注意防病,标了「冻」的天夜里要防霜。上面一排小柱子是每个月忙闲程度,点一下就能翻到那个月。

冻害风险 褐腐病 疮痂病 缩叶病 采收 降雨日 连续干旱
这本月历怎么看

点左右箭头或月份小柱子翻月。带「采:品种名」的日期是按往年规律推的成熟日子,供安排人手和联系买主参考;「冻」「褐」「疮」等天气类标签只显示未来 16 天(天气预报的范围)。今天用绿框标出。

📊这个月有几件事

冻害风险日
病害风险日
采收节点
降雨日
未来 16 天 · 风险与降水

四个决策模块

下面四张卡对应桃园一年的四件大事:春天防冻花、冬天看桃树睡没睡够、夏秋排采收、全程防病害。每张卡都直接给结论和建议动作,依据收在「展开」里,想深究再点开。

❄️花期防冻 开花怕冻,提前几天就知道

正在计算…

未来 16 天最低温走势(虚线 = 当前阶段 T10)
看看前几年冻过多少天
冻到什么程度会伤花(科学依据)

数字意思:T10 = 这个温度下约一成花会受冻,T90 = 约九成花受冻。数据来自美国果树产区试验和我国湖北农业部门的防冻指引,比我国口径略宽松,助手取两者中更谨慎的一条来提醒您。各地桃花抗寒力有差异,请结合自家园子情况灵活掌握。

😴休眠期低温监测 关系春季萌芽整齐度

正在计算…

各月需冷量分布(小时)

桃树冬天要攒够低温时间才肯整齐发芽(叫「需冷量」)。多数品种要 700–1200 小时。个别品种(早凤王、庆丰、中油蟠 9 号)暂无公开数字,显示「暂无公开数据」。

📅桃子哪几天能采 按品种一个个看

各品种桃子的采摘日历(每个品种一小条)

🦠哪几天要防病 看天安排打药

正在计算…

什么天气容易生什么病
病害风险日判定依据
褐腐病日均温≥13℃ 且(有雨或湿度≥85%)PNW 手册:>12.8℃+24h 湿润可侵染
缩叶病芽期(盛花前)10–21℃ 且(有雨或湿度≥90%)MSU/甘肃农技
疮痂病日均温≥16℃ 且(有雨或湿度≥90%)Texas A&M:>16℃ 高湿产孢

标出来的日子意思是「这种天气病菌容易侵染」,请提前一两天做准备;具体打什么药、怎么打,请听科技小院和植保站的。

这本助手是怎么算出来的

助手不含任何收费项目:气象数据取自公开的 Open-Meteo 服务(免费、不用注册),全部计算在您手机或电脑上完成,不收集任何信息。可以离线保存页面,联网时自动更新数据。

模块输入(开放数据)计算输出
推进方案下面四路结果规则引擎合成:按日期排序、去重、定优先级行动清单(可复制分享)
农事月历16 天预报 + 采收推算日期→事件标签映射,跨月翻页整月视图 + 月度统计
冻害预警16 天预报 + 历史积温物候阶段 × 临界温度表比对红/黄/绿灯 + 防灾动作
需冷量11 月起小时级温度0–7.2℃ 小时累计 vs 品种需求休眠满足度 + 暖冬预警
采收窗口盛花估算 + 品种发育期 + 降雨预报盛花 + DAFB,叠加晴雨窗窗口日期 + 抢晴建议
病害风险预报温湿雨三种病害侵染气象条件判定逐日风险色块 + 用药窗口提示

托管:改名 index.html 上传 Cloudflare Pages(免费额度:每月 500 次构建、100 个自定义域名、无限带宽,pages.dev 国内可直接访问;出自 free-for.dev 收录口径)即可让桃农手机访问;Vercel/Netlify/GitHub Pages 同样免费可用(GitHub Pages 国内访问较慢)。 限制:再分析数据极端低温可能有 1–2℃ 偏差;物候与病害阈值为文献通用口径,正式使用前建议结合科技小院实地观测校准;早凤王、庆丰、中油蟠 9 号需冷量无公开数值,界面显示"暂无公开数据"不虚构。

/* ============ Hero ============ */ .hero { position: relative; overflow: hidden; border-bottom: 1px solid var(--line); text-align: left; } .hero-bg { position: absolute; inset: 0; pointer-events: none; background: radial-gradient(600px 320px at 85% -10%, rgba(4,120,87,.07), transparent 70%), radial-gradient(500px 300px at -5% 110%, rgba(194,65,12,.05), transparent 70%); animation: heroDrift 18s ease-in-out infinite alternate; } @keyframes heroDrift { from { transform: translate3d(0,0,0) scale(1); } to { transform: translate3d(-2.5%, 2%, 0) scale(1.05); } } .hero-inner { position: relative; display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: 48px; align-items: center; padding: 56px 0 52px; text-align: left; } @media (max-width: 900px) { .hero-inner { grid-template-columns: 1fr; padding: 44px 0; gap: 32px; } } .hero h1 { font-size: clamp(32px, 4.4vw, 48px); line-height: 1.12; letter-spacing: -.025em; font-weight: 800; } .hero h1 .accent { color: var(--accent); } .hero .sub { margin-top: 16px; font-size: 16px; color: var(--ink-2); max-width: 46ch; } .hero .cta-row { margin-top: 26px; display: flex; gap: 12px; flex-wrap: wrap; } .btn { display: inline-flex; align-items: center; gap: 8px; border-radius: 10px; font-weight: 600; font-size: 15px; padding: 12px 22px; cursor: pointer; text-decoration: none; transition: transform .12s ease, box-shadow .15s ease, background .15s ease; border: 1px solid transparent; } .btn:active { transform: translateY(1px) scale(.99); } .btn-primary { background: var(--accent); color: #fff; box-shadow: 0 1px 2px rgba(4,120,87,.3); } .btn-primary:hover { background: #065f46; } .btn-ghost { background: var(--surface); color: var(--ink); border-color: var(--line); } .btn-ghost:hover { border-color: var(--ink-3); } /* Hero 右侧:今日速览(真实数据,非装饰) */ .hero-tool { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow); padding: 22px 22px 18px; } .hero-tool .tool-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 12px; flex-wrap: wrap; } .hero-tool .tool-head .t { font-weight: 700; font-size: 15px; } .hero-tool .tool-head .s { font-size: 12px; color: var(--ink-3); } .tool-row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 10px; font-size: 13px; color: var(--ink-2); } .tool-row select { font-size: 13.5px; padding: 8px 10px; border: 1px solid var(--line); border-radius: 9px; background: #fcfcfb; color: var(--ink); font-family: inherit; transition: border-color .15s, box-shadow .15s; max-width: 52vw; } .tool-row select:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px rgba(4,120,87,.12); } .tool-row .refresh { font-size: 12px; font-weight: 600; padding: 6px 12px; border-radius: 8px; border: 1px solid var(--line); background: var(--surface); color: var(--ink-2); cursor: pointer; transition: all .15s; } .tool-row .refresh:hover { border-color: var(--accent); color: var(--accent); } .tool-row .refresh:active { transform: translateY(1px); } .stat-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; } @media (max-width: 460px) { .stat-grid { grid-template-columns: 1fr; } .kpi-row { grid-template-columns: 1fr 1fr; } } .stat-cell { background: #f5f5f4; border: 1px solid var(--line); border-radius: 10px; padding: 10px 12px; } .stat-cell .k { font-size: 11px; color: var(--ink-3); font-weight: 600; letter-spacing: .04em; } .stat-cell .v { font-size: 16px; font-weight: 700; margin-top: 2px; font-variant-numeric: tabular-nums; } .stat-cell .v b { color: var(--accent); } .stat-cell .s { font-size: 11.5px; color: var(--ink-2); margin-top: 1px; } .tool-note { margin-top: 10px; font-size: 12px; color: var(--ink-3); } /* ============ 通用 Section ============ */ section { padding: 64px 0; } @media (max-width: 720px) { section { padding: 44px 0; } } .sec-head { margin-bottom: 30px; max-width: 660px; } .sec-head h2 { font-size: clamp(23px, 3vw, 31px); letter-spacing: -.02em; font-weight: 800; line-height: 1.2; } .sec-head p { margin-top: 10px; color: var(--ink-2); font-size: 15px; } /* ============ 卡片与 Bento ============ */ .bento { display: grid; gap: 16px; grid-template-columns: repeat(12, 1fr); } .bento > * { min-width: 0; } .card { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); padding: 24px; transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease; } .card:hover { border-color: #d6d3d1; box-shadow: var(--shadow); transform: translateY(-2px); } .span-12 { grid-column: span 12; } .span-8 { grid-column: span 8; } .span-7 { grid-column: span 7; } .span-6 { grid-column: span 6; } .span-5 { grid-column: span 5; } .span-4 { grid-column: span 4; } @media (max-width: 900px) { .span-8, .span-7, .span-6, .span-5, .span-4 { grid-column: span 12; } } .card h3 { font-size: 17px; font-weight: 700; letter-spacing: -.01em; display: flex; align-items: center; gap: 10px; flex-wrap: wrap; } .card h3 .ic { color: var(--accent); font-style: normal; } .card h3 .tagline { font-size: 11.5px; color: var(--ink-3); font-weight: 400; margin-left: auto; } .card .desc { font-size: 13.5px; color: var(--ink-2); margin-top: 6px; } .tool-body { margin-top: 16px; } /* 状态灯与徽章 */ .light { display: inline-block; width: 12px; height: 12px; border-radius: 50%; margin-right: 7px; vertical-align: -1px; box-shadow: 0 0 0 3px rgba(28,25,23,.05); } .l-red { background: var(--danger); } .l-yel { background: var(--warn); } .l-ok { background: var(--accent); } .l-gry { background: #d6d3d1; } .big { font-size: 19px; font-weight: 800; margin: 8px 0; } .muted { color: var(--ink-2); font-size: 13px; } .note { font-size: 12px; color: var(--ink-3); margin-top: 8px; line-height: 1.55; } .badge { display: inline-block; font-size: 10.5px; font-weight: 700; padding: 1.5px 9px; border-radius: 999px; font-family: var(--sans); } .b-red { background: var(--danger-soft); color: var(--danger); border: 1px solid #fecaca; } .b-yel { background: var(--warn-soft); color: var(--warn); border: 1px solid #fde68a; } .b-ok { background: var(--accent-soft); color: var(--accent); border: 1px solid var(--accent-line); } /* 表格(biohub 风格:stone-50 表头 + 行分隔) */ table.tb { width: 100%; border-collapse: collapse; font-size: 12.5px; } table.tb th, table.tb td { text-align: left; padding: 8px 10px; border-bottom: 1px solid var(--line); } table.tb th { font-size: 11.5px; color: var(--ink-2); font-weight: 600; background: #f5f5f4; } table.tb tr:last-child td { border-bottom: none; } details { margin-top: 10px; } summary { font-size: 13px; color: var(--accent); cursor: pointer; user-select: none; font-weight: 600; } details[open] summary { margin-bottom: 8px; } .btn-mini { font-size: 12.5px; font-weight: 600; padding: 7px 14px; border-radius: 8px; border: 1px solid var(--line); background: var(--surface); color: var(--ink); cursor: pointer; transition: all .15s; } .btn-mini:hover { border-color: var(--accent); color: var(--accent); } .btn-mini:active { transform: translateY(1px); } .btn-mini.primary { background: var(--accent); border-color: var(--accent); color: #fff; } .btn-mini.primary:hover { background: #065f46; color: #fff; } .mono { font-family: var(--mono); font-variant-numeric: tabular-nums; } .kpi-row { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; } .kpi { background: #f5f5f4; border: 1px solid var(--line); border-radius: 10px; padding: 12px 14px; } .kpi .kv { font-size: 22px; font-weight: 800; color: var(--accent); font-variant-numeric: tabular-nums; } .kpi .kl { font-size: 11px; color: var(--ink-3); margin-top: 2px; font-weight: 600; letter-spacing: .04em; } .chart-box { position: relative; margin-top: 12px; background: #fcfcfb; border: 1px solid var(--line); border-radius: 10px; padding: 10px; } .chart-box svg { display: block; width: 100%; height: auto; } .chart-title { font-size: 11.5px; color: var(--ink-3); font-weight: 600; letter-spacing: .04em; margin-top: 12px; } .err { color: #b91c1c; font-size: 12.5px; margin-top: 6px; } /* 推进方案时间线 */ .pitem { display: flex; gap: 12px; border-left: 3px solid var(--line); padding: 10px 14px; margin: 9px 0; border-radius: 0 10px 10px 0; background: #fafaf9; transition: background .15s, transform .15s; } .pitem:hover { transform: translateX(3px); background: #f5f5f4; } .pitem.lv-red { border-left-color: var(--danger); background: var(--danger-soft); } .pitem.lv-yel { border-left-color: var(--warn); background: var(--warn-soft); } .pdate { flex: 0 0 48px; font-weight: 700; font-size: 13px; color: var(--accent); padding-top: 2px; font-family: var(--mono); } .ptitle { font-size: 14.5px; font-weight: 700; margin-bottom: 3px; } .pwhy { font-size: 12.5px; color: var(--ink-2); } .planmeta { font-size: 12px; color: var(--ink-3); margin-top: 10px; } .toolbar { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin-top: 14px; } /* 月历 */ .cal-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; } .cal-title { font-size: 15px; font-weight: 800; } .cal-nav { display: flex; gap: 6px; } .cal-nav button { width: 34px; height: 34px; border-radius: 9px; border: 1px solid var(--line); background: var(--surface); color: var(--ink-2); font-size: 15px; cursor: pointer; transition: all .15s; } .cal-nav button:hover { border-color: var(--accent); color: var(--accent); } .cal-nav button:active { transform: translateY(1px); } .cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 5px; } .cal-wd { font-size: 11px; color: var(--ink-3); text-align: center; padding: 4px 0; font-weight: 600; } .cal-cell { min-height: 62px; border-radius: 10px; background: #fcfcfb; border: 1px solid transparent; padding: 4px 5px; font-size: 11px; transition: all .15s; } .cal-cell:hover { border-color: var(--accent-line); background: var(--accent-soft); } .cal-cell.dim { opacity: .32; } .cal-cell .dnum { font-weight: 700; font-size: 12px; } .cal-cell.today { border: 2px solid var(--accent); background: var(--accent-soft); } .cal-cell .tags { display: flex; flex-wrap: wrap; gap: 2px; margin-top: 3px; } .ctag { border-radius: 5px; padding: 1px 5px; font-size: 9.5px; font-weight: 700; color: #fff; line-height: 1.4; } .ct-frost{background:var(--info);} .ct-brown{background:var(--danger);} .ct-scab{background:var(--violet);} .ct-leafcurl{background:#5C8A3A;} .ct-harvest{background:var(--harvest);} .ct-dry{background:var(--warn);} .ct-rain{background:#5E8CA8;} .monthbar { display: flex; gap: 3px; align-items: flex-end; height: 62px; margin: 10px 0 4px; } .mb-col { flex: 1; display: flex; flex-direction: column; align-items: center; gap: 3px; cursor: pointer; border-radius: 8px; padding: 4px 0; transition: background .15s; } .mb-col:hover { background: var(--accent-soft); } .mb-col .bar { width: 58%; border-radius: 4px 4px 0 0; background: var(--line); min-height: 4px; transition: background .15s; } .mb-col.on .bar { background: var(--accent); } .mb-col .ml { font-size: 10.5px; color: var(--ink-3); } .mb-col.on .ml { color: var(--accent); font-weight: 800; } .mb-col .cnt { font-size: 9px; color: var(--ink-3); } .legend { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 10px; font-size: 11.5px; color: var(--ink-2); } .legend .li { display: inline-flex; align-items: center; gap: 5px; } .legend .sw { width: 11px; height: 11px; border-radius: 3px; display: inline-block; } /* Toast(biohub 同款) */ .toast { position: fixed; left: 50%; bottom: 28px; transform: translateX(-50%) translateY(16px); background: var(--ink); color: #fff; font-size: 13px; padding: 9px 18px; border-radius: 999px; opacity: 0; pointer-events: none; transition: all .25s; z-index: 80; } .toast.show { opacity: 1; transform: translateX(-50%) translateY(0); } /* howto 表 */ .howto table { width: 100%; border-collapse: collapse; font-size: 13px; } .howto th, .howto td { text-align: left; padding: 11px 13px; border-bottom: 1px solid var(--line); vertical-align: top; } .howto th { font-size: 12px; color: var(--ink-2); font-weight: 600; background: #f5f5f4; } .howto td:first-child { font-weight: 600; white-space: nowrap; } .howto tr:last-child td { border-bottom: none; } /* 页脚 */ footer { border-top: 1px solid var(--line); padding: 32px 0 40px; margin-top: 18px; text-align: left; } .foot-inner { display: flex; justify-content: space-between; gap: 24px; flex-wrap: wrap; } .foot-inner p { font-size: 13px; color: var(--ink-3); max-width: 62ch; } /* 滚动显现 */ .reveal { opacity: 0; transform: translateY(22px); } .js .reveal { transition: opacity .6s cubic-bezier(.16,1,.3,1), transform .6s cubic-bezier(.16,1,.3,1); } .js .reveal.seen { opacity: 1; transform: none; } @media (prefers-reduced-motion: reduce) { .reveal, .js .reveal { opacity: 1 !important; transform: none !important; transition: none !important; } .hero-bg { animation: none !important; } html { scroll-behavior: auto; } }

桃树管理该做什么、什么时候做,打开就能看

开花怕冻、采收赶行情、打药赶时机——本助手把平谷的气象数据换算成具体的农事日子:哪天可能有霜冻要提前熏烟,各品种桃子大概哪几天成熟,未来哪些天容易发病。上方选择您的村子,往下看安排。

您家桃园 · 今日速览 数据加载中…
📍
花期预估
按冬春积温推算
最近采收品种
早熟品种最先
未来 16 天关注日
霜冻和发病天气
休眠期低温累计
0–7.2℃ 小时累计

请先在上方选择您所在的乡镇,各项日期均按当地气象数据计算。气象为模式推算数据,重大天气过程请以气象部门官方发布为准。

本期农事推进方案

根据当前气象数据,为您排出了近期桃园的农事安排:红色为紧急事项,黄色建议提前准备,绿色供提前知晓。每条均可展开查看具体做法,也可一键复制转发。

正在根据所选乡镇的气象数据生成安排…

农事月历

一整个月的农事日子贴在一本月历上:哪个日子标了「采」就是哪天能采桃,标了「褐」「疮」的天要注意防病,标了「冻」的天夜里要防霜。上面一排小柱子是每个月忙闲程度,点一下就能翻到那个月。

冻害风险 褐腐病 疮痂病 缩叶病 采收 降雨日 连续干旱
这本月历怎么看

点左右箭头或月份小柱子翻月。带「采:品种名」的日期是按往年规律推的成熟日子,供安排人手和联系买主参考;「冻」「褐」「疮」等天气类标签只显示未来 16 天(天气预报的范围)。今天用绿框标出。

📊这个月有几件事

冻害风险日
病害风险日
采收节点
降雨日
未来 16 天 · 风险与降水

四个决策模块

下面四张卡对应桃园一年的四件大事:春天防冻花、冬天看桃树睡没睡够、夏秋排采收、全程防病害。每张卡都直接给结论和建议动作,依据收在「展开」里,想深究再点开。

❄️花期防冻 开花怕冻,提前几天就知道

正在计算…

未来 16 天最低温走势(虚线 = 当前阶段 T10)
看看前几年冻过多少天
冻到什么程度会伤花(科学依据)

数字意思:T10 = 这个温度下约一成花会受冻,T90 = 约九成花受冻。数据来自美国果树产区试验和我国湖北农业部门的防冻指引,比我国口径略宽松,助手取两者中更谨慎的一条来提醒您。各地桃花抗寒力有差异,请结合自家园子情况灵活掌握。

😴休眠期低温监测 关系春季萌芽整齐度

正在计算…

各月需冷量分布(小时)

桃树冬天要攒够低温时间才肯整齐发芽(叫「需冷量」)。多数品种要 700–1200 小时。个别品种(早凤王、庆丰、中油蟠 9 号)暂无公开数字,显示「暂无公开数据」。

📅桃子哪几天能采 按品种一个个看

各品种桃子的采摘日历(每个品种一小条)

🦠哪几天要防病 看天安排打药

正在计算…

什么天气容易生什么病
病害风险日判定依据
褐腐病日均温≥13℃ 且(有雨或湿度≥85%)PNW 手册:>12.8℃+24h 湿润可侵染
缩叶病芽期(盛花前)10–21℃ 且(有雨或湿度≥90%)MSU/甘肃农技
疮痂病日均温≥16℃ 且(有雨或湿度≥90%)Texas A&M:>16℃ 高湿产孢

标出来的日子意思是「这种天气病菌容易侵染」,请提前一两天做准备;具体打什么药、怎么打,请听科技小院和植保站的。

这本助手是怎么算出来的

助手不含任何收费项目:气象数据取自公开的 Open-Meteo 服务(免费、不用注册),全部计算在您手机或电脑上完成,不收集任何信息。可以离线保存页面,联网时自动更新数据。

模块输入(开放数据)计算输出
推进方案下面四路结果规则引擎合成:按日期排序、去重、定优先级行动清单(可复制分享)
农事月历16 天预报 + 采收推算日期→事件标签映射,跨月翻页整月视图 + 月度统计
冻害预警16 天预报 + 历史积温物候阶段 × 临界温度表比对红/黄/绿灯 + 防灾动作
需冷量11 月起小时级温度0–7.2℃ 小时累计 vs 品种需求休眠满足度 + 暖冬预警
采收窗口盛花估算 + 品种发育期 + 降雨预报盛花 + DAFB,叠加晴雨窗窗口日期 + 抢晴建议
病害风险预报温湿雨三种病害侵染气象条件判定逐日风险色块 + 用药窗口提示

托管:改名 index.html 上传 Cloudflare Pages(免费额度:每月 500 次构建、100 个自定义域名、无限带宽,pages.dev 国内可直接访问;出自 free-for.dev 收录口径)即可让桃农手机访问;Vercel/Netlify/GitHub Pages 同样免费可用(GitHub Pages 国内访问较慢)。 限制:再分析数据极端低温可能有 1–2℃ 偏差;物候与病害阈值为文献通用口径,正式使用前建议结合科技小院实地观测校准;早凤王、庆丰、中油蟠 9 号需冷量无公开数值,界面显示"暂无公开数据"不虚构。

.stat-cell { background: #f5f5f4; border: 1px solid var(--line); border-radius: 10px; padding: 10px 12px; } .stat-cell .k { font-size: 11px; color: var(--ink-3); font-weight: 600; letter-spacing: .04em; } .stat-cell .v { font-size: 16px; font-weight: 700; margin-top: 2px; font-variant-numeric: tabular-nums; } .stat-cell .v b { color: var(--accent); } .stat-cell .s { font-size: 11.5px; color: var(--ink-2); margin-top: 1px; } .tool-note { margin-top: 10px; font-size: 12px; color: var(--ink-3); } /* ============ 通用 Section ============ */ section { padding: 64px 0; } @media (max-width: 720px) { section { padding: 44px 0; } } .sec-head { margin-bottom: 30px; max-width: 660px; } .sec-head h2 { font-size: clamp(23px, 3vw, 31px); letter-spacing: -.02em; font-weight: 800; line-height: 1.2; } .sec-head p { margin-top: 10px; color: var(--ink-2); font-size: 15px; } /* ============ 卡片与 Bento ============ */ .bento { display: grid; gap: 16px; grid-template-columns: repeat(12, 1fr); } .bento > * { min-width: 0; } .card { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); padding: 24px; transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease; } .card:hover { border-color: #d6d3d1; box-shadow: var(--shadow); transform: translateY(-2px); } .span-12 { grid-column: span 12; } .span-8 { grid-column: span 8; } .span-7 { grid-column: span 7; } .span-6 { grid-column: span 6; } .span-5 { grid-column: span 5; } .span-4 { grid-column: span 4; } @media (max-width: 900px) { .span-8, .span-7, .span-6, .span-5, .span-4 { grid-column: span 12; } } .card h3 { font-size: 17px; font-weight: 700; letter-spacing: -.01em; display: flex; align-items: center; gap: 10px; flex-wrap: wrap; } .card h3 .ic { color: var(--accent); font-style: normal; } .card h3 .tagline { font-size: 11.5px; color: var(--ink-3); font-weight: 400; margin-left: auto; } .card .desc { font-size: 13.5px; color: var(--ink-2); margin-top: 6px; } .tool-body { margin-top: 16px; } /* 状态灯与徽章 */ .light { display: inline-block; width: 12px; height: 12px; border-radius: 50%; margin-right: 7px; vertical-align: -1px; box-shadow: 0 0 0 3px rgba(28,25,23,.05); } .l-red { background: var(--danger); } .l-yel { background: var(--warn); } .l-ok { background: var(--accent); } .l-gry { background: #d6d3d1; } .big { font-size: 19px; font-weight: 800; margin: 8px 0; } .muted { color: var(--ink-2); font-size: 13px; } .note { font-size: 12px; color: var(--ink-3); margin-top: 8px; line-height: 1.55; } .badge { display: inline-block; font-size: 10.5px; font-weight: 700; padding: 1.5px 9px; border-radius: 999px; font-family: var(--sans); } .b-red { background: var(--danger-soft); color: var(--danger); border: 1px solid #fecaca; } .b-yel { background: var(--warn-soft); color: var(--warn); border: 1px solid #fde68a; } .b-ok { background: var(--accent-soft); color: var(--accent); border: 1px solid var(--accent-line); } /* 表格(biohub 风格:stone-50 表头 + 行分隔) */ table.tb { width: 100%; border-collapse: collapse; font-size: 12.5px; } table.tb th, table.tb td { text-align: left; padding: 8px 10px; border-bottom: 1px solid var(--line); } table.tb th { font-size: 11.5px; color: var(--ink-2); font-weight: 600; background: #f5f5f4; } table.tb tr:last-child td { border-bottom: none; } details { margin-top: 10px; } summary { font-size: 13px; color: var(--accent); cursor: pointer; user-select: none; font-weight: 600; } details[open] summary { margin-bottom: 8px; } .btn-mini { font-size: 12.5px; font-weight: 600; padding: 7px 14px; border-radius: 8px; border: 1px solid var(--line); background: var(--surface); color: var(--ink); cursor: pointer; transition: all .15s; } .btn-mini:hover { border-color: var(--accent); color: var(--accent); } .btn-mini:active { transform: translateY(1px); } .btn-mini.primary { background: var(--accent); border-color: var(--accent); color: #fff; } .btn-mini.primary:hover { background: #065f46; color: #fff; } .mono { font-family: var(--mono); font-variant-numeric: tabular-nums; } .kpi-row { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; } .kpi { background: #f5f5f4; border: 1px solid var(--line); border-radius: 10px; padding: 12px 14px; } .kpi .kv { font-size: 22px; font-weight: 800; color: var(--accent); font-variant-numeric: tabular-nums; } .kpi .kl { font-size: 11px; color: var(--ink-3); margin-top: 2px; font-weight: 600; letter-spacing: .04em; } .chart-box { position: relative; margin-top: 12px; background: #fcfcfb; border: 1px solid var(--line); border-radius: 10px; padding: 10px; } .chart-box svg { display: block; width: 100%; height: auto; } .chart-title { font-size: 11.5px; color: var(--ink-3); font-weight: 600; letter-spacing: .04em; margin-top: 12px; } .err { color: #b91c1c; font-size: 12.5px; margin-top: 6px; } /* 推进方案时间线 */ .pitem { display: flex; gap: 12px; border-left: 3px solid var(--line); padding: 10px 14px; margin: 9px 0; border-radius: 0 10px 10px 0; background: #fafaf9; transition: background .15s, transform .15s; } .pitem:hover { transform: translateX(3px); background: #f5f5f4; } .pitem.lv-red { border-left-color: var(--danger); background: var(--danger-soft); } .pitem.lv-yel { border-left-color: var(--warn); background: var(--warn-soft); } .pdate { flex: 0 0 48px; font-weight: 700; font-size: 13px; color: var(--accent); padding-top: 2px; font-family: var(--mono); } .ptitle { font-size: 14.5px; font-weight: 700; margin-bottom: 3px; } .pwhy { font-size: 12.5px; color: var(--ink-2); } .planmeta { font-size: 12px; color: var(--ink-3); margin-top: 10px; } .toolbar { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin-top: 14px; } /* 月历 */ .cal-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; } .cal-title { font-size: 15px; font-weight: 800; } .cal-nav { display: flex; gap: 6px; } .cal-nav button { width: 34px; height: 34px; border-radius: 9px; border: 1px solid var(--line); background: var(--surface); color: var(--ink-2); font-size: 15px; cursor: pointer; transition: all .15s; } .cal-nav button:hover { border-color: var(--accent); color: var(--accent); } .cal-nav button:active { transform: translateY(1px); } .cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 5px; } .cal-wd { font-size: 11px; color: var(--ink-3); text-align: center; padding: 4px 0; font-weight: 600; } .cal-cell { min-height: 62px; border-radius: 10px; background: #fcfcfb; border: 1px solid transparent; padding: 4px 5px; font-size: 11px; transition: all .15s; } .cal-cell:hover { border-color: var(--accent-line); background: var(--accent-soft); } .cal-cell.dim { opacity: .32; } .cal-cell .dnum { font-weight: 700; font-size: 12px; } .cal-cell.today { border: 2px solid var(--accent); background: var(--accent-soft); } .cal-cell .tags { display: flex; flex-wrap: wrap; gap: 2px; margin-top: 3px; } .ctag { border-radius: 5px; padding: 1px 5px; font-size: 9.5px; font-weight: 700; color: #fff; line-height: 1.4; } .ct-frost{background:var(--info);} .ct-brown{background:var(--danger);} .ct-scab{background:var(--violet);} .ct-leafcurl{background:#5C8A3A;} .ct-harvest{background:var(--harvest);} .ct-dry{background:var(--warn);} .ct-rain{background:#5E8CA8;} .monthbar { display: flex; gap: 3px; align-items: flex-end; height: 62px; margin: 10px 0 4px; } .mb-col { flex: 1; display: flex; flex-direction: column; align-items: center; gap: 3px; cursor: pointer; border-radius: 8px; padding: 4px 0; transition: background .15s; } .mb-col:hover { background: var(--accent-soft); } .mb-col .bar { width: 58%; border-radius: 4px 4px 0 0; background: var(--line); min-height: 4px; transition: background .15s; } .mb-col.on .bar { background: var(--accent); } .mb-col .ml { font-size: 10.5px; color: var(--ink-3); } .mb-col.on .ml { color: var(--accent); font-weight: 800; } .mb-col .cnt { font-size: 9px; color: var(--ink-3); } .legend { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 10px; font-size: 11.5px; color: var(--ink-2); } .legend .li { display: inline-flex; align-items: center; gap: 5px; } .legend .sw { width: 11px; height: 11px; border-radius: 3px; display: inline-block; } /* Toast(biohub 同款) */ .toast { position: fixed; left: 50%; bottom: 28px; transform: translateX(-50%) translateY(16px); background: var(--ink); color: #fff; font-size: 13px; padding: 9px 18px; border-radius: 999px; opacity: 0; pointer-events: none; transition: all .25s; z-index: 80; } .toast.show { opacity: 1; transform: translateX(-50%) translateY(0); } /* howto 表 */ .howto table { width: 100%; border-collapse: collapse; font-size: 13px; } .howto th, .howto td { text-align: left; padding: 11px 13px; border-bottom: 1px solid var(--line); vertical-align: top; } .howto th { font-size: 12px; color: var(--ink-2); font-weight: 600; background: #f5f5f4; } .howto td:first-child { font-weight: 600; white-space: nowrap; } .howto tr:last-child td { border-bottom: none; } /* 页脚 */ footer { border-top: 1px solid var(--line); padding: 32px 0 40px; margin-top: 18px; text-align: left; } .foot-inner { display: flex; justify-content: space-between; gap: 24px; flex-wrap: wrap; } .foot-inner p { font-size: 13px; color: var(--ink-3); max-width: 62ch; } /* 滚动显现 */ .reveal { opacity: 0; transform: translateY(22px); } .js .reveal { transition: opacity .6s cubic-bezier(.16,1,.3,1), transform .6s cubic-bezier(.16,1,.3,1); } .js .reveal.seen { opacity: 1; transform: none; } @media (prefers-reduced-motion: reduce) { .reveal, .js .reveal { opacity: 1 !important; transform: none !important; transition: none !important; } .hero-bg { animation: none !important; } html { scroll-behavior: auto; } }

桃树管理该做什么、什么时候做,打开就能看

开花怕冻、采收赶行情、打药赶时机——本助手把平谷的气象数据换算成具体的农事日子:哪天可能有霜冻要提前熏烟,各品种桃子大概哪几天成熟,未来哪些天容易发病。上方选择您的村子,往下看安排。

您家桃园 · 今日速览 数据加载中…
📍
花期预估
按冬春积温推算
最近采收品种
早熟品种最先
未来 16 天关注日
霜冻和发病天气
休眠期低温累计
0–7.2℃ 小时累计

请先在上方选择您所在的乡镇,各项日期均按当地气象数据计算。气象为模式推算数据,重大天气过程请以气象部门官方发布为准。

本期农事推进方案

根据当前气象数据,为您排出了近期桃园的农事安排:红色为紧急事项,黄色建议提前准备,绿色供提前知晓。每条均可展开查看具体做法,也可一键复制转发。

正在根据所选乡镇的气象数据生成安排…

农事月历

一整个月的农事日子贴在一本月历上:哪个日子标了「采」就是哪天能采桃,标了「褐」「疮」的天要注意防病,标了「冻」的天夜里要防霜。上面一排小柱子是每个月忙闲程度,点一下就能翻到那个月。

冻害风险 褐腐病 疮痂病 缩叶病 采收 降雨日 连续干旱
这本月历怎么看

点左右箭头或月份小柱子翻月。带「采:品种名」的日期是按往年规律推的成熟日子,供安排人手和联系买主参考;「冻」「褐」「疮」等天气类标签只显示未来 16 天(天气预报的范围)。今天用绿框标出。

📊这个月有几件事

冻害风险日
病害风险日
采收节点
降雨日
未来 16 天 · 风险与降水

四个决策模块

下面四张卡对应桃园一年的四件大事:春天防冻花、冬天看桃树睡没睡够、夏秋排采收、全程防病害。每张卡都直接给结论和建议动作,依据收在「展开」里,想深究再点开。

❄️花期防冻 开花怕冻,提前几天就知道

正在计算…

未来 16 天最低温走势(虚线 = 当前阶段 T10)
看看前几年冻过多少天
冻到什么程度会伤花(科学依据)

数字意思:T10 = 这个温度下约一成花会受冻,T90 = 约九成花受冻。数据来自美国果树产区试验和我国湖北农业部门的防冻指引,比我国口径略宽松,助手取两者中更谨慎的一条来提醒您。各地桃花抗寒力有差异,请结合自家园子情况灵活掌握。

😴休眠期低温监测 关系春季萌芽整齐度

正在计算…

各月需冷量分布(小时)

桃树冬天要攒够低温时间才肯整齐发芽(叫「需冷量」)。多数品种要 700–1200 小时。个别品种(早凤王、庆丰、中油蟠 9 号)暂无公开数字,显示「暂无公开数据」。

📅桃子哪几天能采 按品种一个个看

各品种桃子的采摘日历(每个品种一小条)

🦠哪几天要防病 看天安排打药

正在计算…

什么天气容易生什么病
病害风险日判定依据
褐腐病日均温≥13℃ 且(有雨或湿度≥85%)PNW 手册:>12.8℃+24h 湿润可侵染
缩叶病芽期(盛花前)10–21℃ 且(有雨或湿度≥90%)MSU/甘肃农技
疮痂病日均温≥16℃ 且(有雨或湿度≥90%)Texas A&M:>16℃ 高湿产孢

标出来的日子意思是「这种天气病菌容易侵染」,请提前一两天做准备;具体打什么药、怎么打,请听科技小院和植保站的。

这本助手是怎么算出来的

助手不含任何收费项目:气象数据取自公开的 Open-Meteo 服务(免费、不用注册),全部计算在您手机或电脑上完成,不收集任何信息。可以离线保存页面,联网时自动更新数据。

模块输入(开放数据)计算输出
推进方案下面四路结果规则引擎合成:按日期排序、去重、定优先级行动清单(可复制分享)
农事月历16 天预报 + 采收推算日期→事件标签映射,跨月翻页整月视图 + 月度统计
冻害预警16 天预报 + 历史积温物候阶段 × 临界温度表比对红/黄/绿灯 + 防灾动作
需冷量11 月起小时级温度0–7.2℃ 小时累计 vs 品种需求休眠满足度 + 暖冬预警
采收窗口盛花估算 + 品种发育期 + 降雨预报盛花 + DAFB,叠加晴雨窗窗口日期 + 抢晴建议
病害风险预报温湿雨三种病害侵染气象条件判定逐日风险色块 + 用药窗口提示

托管:改名 index.html 上传 Cloudflare Pages(免费额度:每月 500 次构建、100 个自定义域名、无限带宽,pages.dev 国内可直接访问;出自 free-for.dev 收录口径)即可让桃农手机访问;Vercel/Netlify/GitHub Pages 同样免费可用(GitHub Pages 国内访问较慢)。 限制:再分析数据极端低温可能有 1–2℃ 偏差;物候与病害阈值为文献通用口径,正式使用前建议结合科技小院实地观测校准;早凤王、庆丰、中油蟠 9 号需冷量无公开数值,界面显示"暂无公开数据"不虚构。

/* ============ Hero ============ */ .hero { position: relative; overflow: hidden; border-bottom: 1px solid var(--line); text-align: left; } .hero-bg { position: absolute; inset: 0; pointer-events: none; background: radial-gradient(600px 320px at 85% -10%, rgba(4,120,87,.07), transparent 70%), radial-gradient(500px 300px at -5% 110%, rgba(194,65,12,.05), transparent 70%); animation: heroDrift 18s ease-in-out infinite alternate; } @keyframes heroDrift { from { transform: translate3d(0,0,0) scale(1); } to { transform: translate3d(-2.5%, 2%, 0) scale(1.05); } } .hero-inner { position: relative; display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: 48px; align-items: center; padding: 56px 0 52px; text-align: left; } @media (max-width: 900px) { .hero-inner { grid-template-columns: 1fr; padding: 44px 0; gap: 32px; } } .hero h1 { font-size: clamp(32px, 4.4vw, 48px); line-height: 1.12; letter-spacing: -.025em; font-weight: 800; } .hero h1 .accent { color: var(--accent); } .hero .sub { margin-top: 16px; font-size: 16px; color: var(--ink-2); max-width: 46ch; } .hero .cta-row { margin-top: 26px; display: flex; gap: 12px; flex-wrap: wrap; } .btn { display: inline-flex; align-items: center; gap: 8px; border-radius: 10px; font-weight: 600; font-size: 15px; padding: 12px 22px; cursor: pointer; text-decoration: none; transition: transform .12s ease, box-shadow .15s ease, background .15s ease; border: 1px solid transparent; } .btn:active { transform: translateY(1px) scale(.99); } .btn-primary { background: var(--accent); color: #fff; box-shadow: 0 1px 2px rgba(4,120,87,.3); } .btn-primary:hover { background: #065f46; } .btn-ghost { background: var(--surface); color: var(--ink); border-color: var(--line); } .btn-ghost:hover { border-color: var(--ink-3); } /* Hero 右侧:今日速览(真实数据,非装饰) */ .hero-tool { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow); padding: 22px 22px 18px; } .hero-tool .tool-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 12px; flex-wrap: wrap; } .hero-tool .tool-head .t { font-weight: 700; font-size: 15px; } .hero-tool .tool-head .s { font-size: 12px; color: var(--ink-3); } .tool-row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 10px; font-size: 13px; color: var(--ink-2); } .tool-row select { font-size: 13.5px; padding: 8px 10px; border: 1px solid var(--line); border-radius: 9px; background: #fcfcfb; color: var(--ink); font-family: inherit; transition: border-color .15s, box-shadow .15s; max-width: 52vw; } .tool-row select:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px rgba(4,120,87,.12); } .tool-row .refresh { font-size: 12px; font-weight: 600; padding: 6px 12px; border-radius: 8px; border: 1px solid var(--line); background: var(--surface); color: var(--ink-2); cursor: pointer; transition: all .15s; } .tool-row .refresh:hover { border-color: var(--accent); color: var(--accent); } .tool-row .refresh:active { transform: translateY(1px); } .stat-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; } @media (max-width: 460px) { .stat-grid { grid-template-columns: 1fr; } .kpi-row { grid-template-columns: 1fr 1fr; } } .stat-cell { background: #f5f5f4; border: 1px solid var(--line); border-radius: 10px; padding: 10px 12px; } .stat-cell .k { font-size: 11px; color: var(--ink-3); font-weight: 600; letter-spacing: .04em; } .stat-cell .v { font-size: 16px; font-weight: 700; margin-top: 2px; font-variant-numeric: tabular-nums; } .stat-cell .v b { color: var(--accent); } .stat-cell .s { font-size: 11.5px; color: var(--ink-2); margin-top: 1px; } .tool-note { margin-top: 10px; font-size: 12px; color: var(--ink-3); } /* ============ 通用 Section ============ */ section { padding: 64px 0; } @media (max-width: 720px) { section { padding: 44px 0; } } .sec-head { margin-bottom: 30px; max-width: 660px; } .sec-head h2 { font-size: clamp(23px, 3vw, 31px); letter-spacing: -.02em; font-weight: 800; line-height: 1.2; } .sec-head p { margin-top: 10px; color: var(--ink-2); font-size: 15px; } /* ============ 卡片与 Bento ============ */ .bento { display: grid; gap: 16px; grid-template-columns: repeat(12, 1fr); } .bento > * { min-width: 0; } .card { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); padding: 24px; transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease; } .card:hover { border-color: #d6d3d1; box-shadow: var(--shadow); transform: translateY(-2px); } .span-12 { grid-column: span 12; } .span-8 { grid-column: span 8; } .span-7 { grid-column: span 7; } .span-6 { grid-column: span 6; } .span-5 { grid-column: span 5; } .span-4 { grid-column: span 4; } @media (max-width: 900px) { .span-8, .span-7, .span-6, .span-5, .span-4 { grid-column: span 12; } } .card h3 { font-size: 17px; font-weight: 700; letter-spacing: -.01em; display: flex; align-items: center; gap: 10px; flex-wrap: wrap; } .card h3 .ic { color: var(--accent); font-style: normal; } .card h3 .tagline { font-size: 11.5px; color: var(--ink-3); font-weight: 400; margin-left: auto; } .card .desc { font-size: 13.5px; color: var(--ink-2); margin-top: 6px; } .tool-body { margin-top: 16px; } /* 状态灯与徽章 */ .light { display: inline-block; width: 12px; height: 12px; border-radius: 50%; margin-right: 7px; vertical-align: -1px; box-shadow: 0 0 0 3px rgba(28,25,23,.05); } .l-red { background: var(--danger); } .l-yel { background: var(--warn); } .l-ok { background: var(--accent); } .l-gry { background: #d6d3d1; } .big { font-size: 19px; font-weight: 800; margin: 8px 0; } .muted { color: var(--ink-2); font-size: 13px; } .note { font-size: 12px; color: var(--ink-3); margin-top: 8px; line-height: 1.55; } .badge { display: inline-block; font-size: 10.5px; font-weight: 700; padding: 1.5px 9px; border-radius: 999px; font-family: var(--sans); } .b-red { background: var(--danger-soft); color: var(--danger); border: 1px solid #fecaca; } .b-yel { background: var(--warn-soft); color: var(--warn); border: 1px solid #fde68a; } .b-ok { background: var(--accent-soft); color: var(--accent); border: 1px solid var(--accent-line); } /* 表格(biohub 风格:stone-50 表头 + 行分隔) */ table.tb { width: 100%; border-collapse: collapse; font-size: 12.5px; } table.tb th, table.tb td { text-align: left; padding: 8px 10px; border-bottom: 1px solid var(--line); } table.tb th { font-size: 11.5px; color: var(--ink-2); font-weight: 600; background: #f5f5f4; } table.tb tr:last-child td { border-bottom: none; } details { margin-top: 10px; } summary { font-size: 13px; color: var(--accent); cursor: pointer; user-select: none; font-weight: 600; } details[open] summary { margin-bottom: 8px; } .btn-mini { font-size: 12.5px; font-weight: 600; padding: 7px 14px; border-radius: 8px; border: 1px solid var(--line); background: var(--surface); color: var(--ink); cursor: pointer; transition: all .15s; } .btn-mini:hover { border-color: var(--accent); color: var(--accent); } .btn-mini:active { transform: translateY(1px); } .btn-mini.primary { background: var(--accent); border-color: var(--accent); color: #fff; } .btn-mini.primary:hover { background: #065f46; color: #fff; } .mono { font-family: var(--mono); font-variant-numeric: tabular-nums; } .kpi-row { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; } .kpi { background: #f5f5f4; border: 1px solid var(--line); border-radius: 10px; padding: 12px 14px; } .kpi .kv { font-size: 22px; font-weight: 800; color: var(--accent); font-variant-numeric: tabular-nums; } .kpi .kl { font-size: 11px; color: var(--ink-3); margin-top: 2px; font-weight: 600; letter-spacing: .04em; } .chart-box { position: relative; margin-top: 12px; background: #fcfcfb; border: 1px solid var(--line); border-radius: 10px; padding: 10px; } .chart-box svg { display: block; width: 100%; height: auto; } .chart-title { font-size: 11.5px; color: var(--ink-3); font-weight: 600; letter-spacing: .04em; margin-top: 12px; } .err { color: #b91c1c; font-size: 12.5px; margin-top: 6px; } /* 推进方案时间线 */ .pitem { display: flex; gap: 12px; border-left: 3px solid var(--line); padding: 10px 14px; margin: 9px 0; border-radius: 0 10px 10px 0; background: #fafaf9; transition: background .15s, transform .15s; } .pitem:hover { transform: translateX(3px); background: #f5f5f4; } .pitem.lv-red { border-left-color: var(--danger); background: var(--danger-soft); } .pitem.lv-yel { border-left-color: var(--warn); background: var(--warn-soft); } .pdate { flex: 0 0 48px; font-weight: 700; font-size: 13px; color: var(--accent); padding-top: 2px; font-family: var(--mono); } .ptitle { font-size: 14.5px; font-weight: 700; margin-bottom: 3px; } .pwhy { font-size: 12.5px; color: var(--ink-2); } .planmeta { font-size: 12px; color: var(--ink-3); margin-top: 10px; } .toolbar { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin-top: 14px; } /* 月历 */ .cal-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; } .cal-title { font-size: 15px; font-weight: 800; } .cal-nav { display: flex; gap: 6px; } .cal-nav button { width: 34px; height: 34px; border-radius: 9px; border: 1px solid var(--line); background: var(--surface); color: var(--ink-2); font-size: 15px; cursor: pointer; transition: all .15s; } .cal-nav button:hover { border-color: var(--accent); color: var(--accent); } .cal-nav button:active { transform: translateY(1px); } .cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 5px; } .cal-wd { font-size: 11px; color: var(--ink-3); text-align: center; padding: 4px 0; font-weight: 600; } .cal-cell { min-height: 62px; border-radius: 10px; background: #fcfcfb; border: 1px solid transparent; padding: 4px 5px; font-size: 11px; transition: all .15s; } .cal-cell:hover { border-color: var(--accent-line); background: var(--accent-soft); } .cal-cell.dim { opacity: .32; } .cal-cell .dnum { font-weight: 700; font-size: 12px; } .cal-cell.today { border: 2px solid var(--accent); background: var(--accent-soft); } .cal-cell .tags { display: flex; flex-wrap: wrap; gap: 2px; margin-top: 3px; } .ctag { border-radius: 5px; padding: 1px 5px; font-size: 9.5px; font-weight: 700; color: #fff; line-height: 1.4; } .ct-frost{background:var(--info);} .ct-brown{background:var(--danger);} .ct-scab{background:var(--violet);} .ct-leafcurl{background:#5C8A3A;} .ct-harvest{background:var(--harvest);} .ct-dry{background:var(--warn);} .ct-rain{background:#5E8CA8;} .monthbar { display: flex; gap: 3px; align-items: flex-end; height: 62px; margin: 10px 0 4px; } .mb-col { flex: 1; display: flex; flex-direction: column; align-items: center; gap: 3px; cursor: pointer; border-radius: 8px; padding: 4px 0; transition: background .15s; } .mb-col:hover { background: var(--accent-soft); } .mb-col .bar { width: 58%; border-radius: 4px 4px 0 0; background: var(--line); min-height: 4px; transition: background .15s; } .mb-col.on .bar { background: var(--accent); } .mb-col .ml { font-size: 10.5px; color: var(--ink-3); } .mb-col.on .ml { color: var(--accent); font-weight: 800; } .mb-col .cnt { font-size: 9px; color: var(--ink-3); } .legend { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 10px; font-size: 11.5px; color: var(--ink-2); } .legend .li { display: inline-flex; align-items: center; gap: 5px; } .legend .sw { width: 11px; height: 11px; border-radius: 3px; display: inline-block; } /* Toast(biohub 同款) */ .toast { position: fixed; left: 50%; bottom: 28px; transform: translateX(-50%) translateY(16px); background: var(--ink); color: #fff; font-size: 13px; padding: 9px 18px; border-radius: 999px; opacity: 0; pointer-events: none; transition: all .25s; z-index: 80; } .toast.show { opacity: 1; transform: translateX(-50%) translateY(0); } /* howto 表 */ .howto table { width: 100%; border-collapse: collapse; font-size: 13px; } .howto th, .howto td { text-align: left; padding: 11px 13px; border-bottom: 1px solid var(--line); vertical-align: top; } .howto th { font-size: 12px; color: var(--ink-2); font-weight: 600; background: #f5f5f4; } .howto td:first-child { font-weight: 600; white-space: nowrap; } .howto tr:last-child td { border-bottom: none; } /* 页脚 */ footer { border-top: 1px solid var(--line); padding: 32px 0 40px; margin-top: 18px; text-align: left; } .foot-inner { display: flex; justify-content: space-between; gap: 24px; flex-wrap: wrap; } .foot-inner p { font-size: 13px; color: var(--ink-3); max-width: 62ch; } /* 滚动显现 */ .reveal { opacity: 0; transform: translateY(22px); } .js .reveal { transition: opacity .6s cubic-bezier(.16,1,.3,1), transform .6s cubic-bezier(.16,1,.3,1); } .js .reveal.seen { opacity: 1; transform: none; } @media (prefers-reduced-motion: reduce) { .reveal, .js .reveal { opacity: 1 !important; transform: none !important; transition: none !important; } .hero-bg { animation: none !important; } html { scroll-behavior: auto; } }

桃树管理该做什么、什么时候做,打开就能看

开花怕冻、采收赶行情、打药赶时机——本助手把平谷的气象数据换算成具体的农事日子:哪天可能有霜冻要提前熏烟,各品种桃子大概哪几天成熟,未来哪些天容易发病。上方选择您的村子,往下看安排。

您家桃园 · 今日速览 数据加载中…
📍
花期预估
按冬春积温推算
最近采收品种
早熟品种最先
未来 16 天关注日
霜冻和发病天气
休眠期低温累计
0–7.2℃ 小时累计

请先在上方选择您所在的乡镇,各项日期均按当地气象数据计算。气象为模式推算数据,重大天气过程请以气象部门官方发布为准。

本期农事推进方案

根据当前气象数据,为您排出了近期桃园的农事安排:红色为紧急事项,黄色建议提前准备,绿色供提前知晓。每条均可展开查看具体做法,也可一键复制转发。

正在根据所选乡镇的气象数据生成安排…

农事月历

一整个月的农事日子贴在一本月历上:哪个日子标了「采」就是哪天能采桃,标了「褐」「疮」的天要注意防病,标了「冻」的天夜里要防霜。上面一排小柱子是每个月忙闲程度,点一下就能翻到那个月。

冻害风险 褐腐病 疮痂病 缩叶病 采收 降雨日 连续干旱
这本月历怎么看

点左右箭头或月份小柱子翻月。带「采:品种名」的日期是按往年规律推的成熟日子,供安排人手和联系买主参考;「冻」「褐」「疮」等天气类标签只显示未来 16 天(天气预报的范围)。今天用绿框标出。

📊这个月有几件事

冻害风险日
病害风险日
采收节点
降雨日
未来 16 天 · 风险与降水

四个决策模块

下面四张卡对应桃园一年的四件大事:春天防冻花、冬天看桃树睡没睡够、夏秋排采收、全程防病害。每张卡都直接给结论和建议动作,依据收在「展开」里,想深究再点开。

❄️花期防冻 开花怕冻,提前几天就知道

正在计算…

未来 16 天最低温走势(虚线 = 当前阶段 T10)
看看前几年冻过多少天
冻到什么程度会伤花(科学依据)

数字意思:T10 = 这个温度下约一成花会受冻,T90 = 约九成花受冻。数据来自美国果树产区试验和我国湖北农业部门的防冻指引,比我国口径略宽松,助手取两者中更谨慎的一条来提醒您。各地桃花抗寒力有差异,请结合自家园子情况灵活掌握。

😴休眠期低温监测 关系春季萌芽整齐度

正在计算…

各月需冷量分布(小时)

桃树冬天要攒够低温时间才肯整齐发芽(叫「需冷量」)。多数品种要 700–1200 小时。个别品种(早凤王、庆丰、中油蟠 9 号)暂无公开数字,显示「暂无公开数据」。

📅桃子哪几天能采 按品种一个个看

各品种桃子的采摘日历(每个品种一小条)

🦠哪几天要防病 看天安排打药

正在计算…

什么天气容易生什么病
病害风险日判定依据
褐腐病日均温≥13℃ 且(有雨或湿度≥85%)PNW 手册:>12.8℃+24h 湿润可侵染
缩叶病芽期(盛花前)10–21℃ 且(有雨或湿度≥90%)MSU/甘肃农技
疮痂病日均温≥16℃ 且(有雨或湿度≥90%)Texas A&M:>16℃ 高湿产孢

标出来的日子意思是「这种天气病菌容易侵染」,请提前一两天做准备;具体打什么药、怎么打,请听科技小院和植保站的。

这本助手是怎么算出来的

助手不含任何收费项目:气象数据取自公开的 Open-Meteo 服务(免费、不用注册),全部计算在您手机或电脑上完成,不收集任何信息。可以离线保存页面,联网时自动更新数据。

模块输入(开放数据)计算输出
推进方案下面四路结果规则引擎合成:按日期排序、去重、定优先级行动清单(可复制分享)
农事月历16 天预报 + 采收推算日期→事件标签映射,跨月翻页整月视图 + 月度统计
冻害预警16 天预报 + 历史积温物候阶段 × 临界温度表比对红/黄/绿灯 + 防灾动作
需冷量11 月起小时级温度0–7.2℃ 小时累计 vs 品种需求休眠满足度 + 暖冬预警
采收窗口盛花估算 + 品种发育期 + 降雨预报盛花 + DAFB,叠加晴雨窗窗口日期 + 抢晴建议
病害风险预报温湿雨三种病害侵染气象条件判定逐日风险色块 + 用药窗口提示

托管:改名 index.html 上传 Cloudflare Pages(免费额度:每月 500 次构建、100 个自定义域名、无限带宽,pages.dev 国内可直接访问;出自 free-for.dev 收录口径)即可让桃农手机访问;Vercel/Netlify/GitHub Pages 同样免费可用(GitHub Pages 国内访问较慢)。 限制:再分析数据极端低温可能有 1–2℃ 偏差;物候与病害阈值为文献通用口径,正式使用前建议结合科技小院实地观测校准;早凤王、庆丰、中油蟠 9 号需冷量无公开数值,界面显示"暂无公开数据"不虚构。