|
@@ -4,10 +4,11 @@
|
|
|
|
|
|
|
|
<div class="work-detail-content">
|
|
<div class="work-detail-content">
|
|
|
<!-- 顶部状态 -->
|
|
<!-- 顶部状态 -->
|
|
|
- <div class="content-status" :class="['status-' + detail?.flowStatus, 'audit-' + getAuditStatusPriority(detail?.executeEvidenceAuditStatus)]">
|
|
|
|
|
|
|
+ <div class="content-status status-5">
|
|
|
|
|
+ <!-- <div class="content-status" :class="['status-' + detail?.flowStatus, 'audit-' + getAuditStatusPriority(detail?.executeEvidenceAuditStatus)]"> -->
|
|
|
<div class="status-l">
|
|
<div class="status-l">
|
|
|
- <div class="status-title">{{ detail?.farmWorkName }}</div>
|
|
|
|
|
- <div class="status-sub" v-if="triggerDateText && (detail?.flowStatus == -1 || detail?.flowStatus == -2)">
|
|
|
|
|
|
|
+ <div class="status-title">{{ headerTitle }}</div>
|
|
|
|
|
+ <!-- <div class="status-sub" v-if="triggerDateText && (detail?.flowStatus == -1 || detail?.flowStatus == -2)">
|
|
|
执行时间已经过去 {{ Math.abs(daysDiff) }} 天了
|
|
执行时间已经过去 {{ Math.abs(daysDiff) }} 天了
|
|
|
</div>
|
|
</div>
|
|
|
<div class="status-sub" v-if="detail?.flowStatus === 3 && getAuditStatusPriority(detail?.executeEvidenceAuditStatus) !== 2">
|
|
<div class="status-sub" v-if="detail?.flowStatus === 3 && getAuditStatusPriority(detail?.executeEvidenceAuditStatus) !== 2">
|
|
@@ -15,17 +16,22 @@
|
|
|
</div>
|
|
</div>
|
|
|
<div class="status-sub" v-if="!detail?.flowStatus || detail?.flowStatus === 0">
|
|
<div class="status-sub" v-if="!detail?.flowStatus || detail?.flowStatus === 0">
|
|
|
预计{{ detail?.executeDate || "--" }}执行,执行时间需巡园校准
|
|
预计{{ detail?.executeDate || "--" }}执行,执行时间需巡园校准
|
|
|
|
|
+ </div> -->
|
|
|
|
|
+ <div class="status-sub">
|
|
|
|
|
+ 已认证成功
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
- <div class="work-wrap has-bottom warning-info-show" :class="{ 'warning-info-show': detail?.flowStatus === 1 }">
|
|
|
|
|
|
|
+ <div class="work-wrap has-bottom warning-info-show"
|
|
|
|
|
+ :class="{ 'warning-info-show': detail?.flowStatus === 1 }">
|
|
|
<!-- 农事组信息 -->
|
|
<!-- 农事组信息 -->
|
|
|
- <div class="box-wrap group-info group-box" v-if="(detail?.executionLimitDays || detail?.executionLimitDays === 0) && detail?.flowStatus !== 5">
|
|
|
|
|
|
|
+ <div class="box-wrap group-info group-box">
|
|
|
|
|
+ <!-- <div class="box-wrap group-info group-box" v-if="(detail?.executionLimitDays || detail?.executionLimitDays === 0) && detail?.flowStatus !== 5"> -->
|
|
|
<div class="group-name">
|
|
<div class="group-name">
|
|
|
<!-- 该农事为 <span class="light-text">标准防治溯源农事</span> ,最佳执行时间为 <span class="light-text">{{detail?.executionLimitDays}}天</span>,
|
|
<!-- 该农事为 <span class="light-text">标准防治溯源农事</span> ,最佳执行时间为 <span class="light-text">{{detail?.executionLimitDays}}天</span>,
|
|
|
请及时完成溯源认证上传 -->
|
|
请及时完成溯源认证上传 -->
|
|
|
- 农事原因农事原因农事原因农事原因农事原因农事原因农事原因
|
|
|
|
|
|
|
+ {{ text5 }}
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
@@ -104,34 +110,36 @@
|
|
|
{{ getParamRemark(item, index) }}
|
|
{{ getParamRemark(item, index) }}
|
|
|
<br />
|
|
<br />
|
|
|
</template>
|
|
</template>
|
|
|
- </span>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
|
|
+</span>
|
|
|
|
|
+</div>
|
|
|
|
|
+</div>
|
|
|
|
|
+</div>
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+<div class="work-info photo-box" v-if="prescription.cropAlbum && prescription.cropAlbum.length">
|
|
|
|
|
+ <div class="photo-title">农事凭证</div>
|
|
|
|
|
+ <div class="tips-text" v-if="detail?.imageAuditRejectReason">{{ detail?.imageAuditRejectReason }}</div>
|
|
|
|
|
+ <div class="photo-sub-title" v-if="info?.appType === 1">来自于 {{ detail?.executorOrganizationName || "--" }}</div>
|
|
|
|
|
+ <div class="photo-img-wrap">
|
|
|
|
|
+ <photo-provider :photo-closable="true">
|
|
|
|
|
+ <photo-consumer v-for="(src, index) in prescription.cropAlbum" intro="农事凭证" :key="index"
|
|
|
|
|
+ :src="base_img_url2 + src.filename">
|
|
|
|
|
+ <div class="photo-img">
|
|
|
|
|
+ <img :src="base_img_url2 + src.filename" />
|
|
|
|
|
+ <div class="fail-icon" v-if="failIndex(index) === 2">
|
|
|
|
|
+ <el-icon size="24" color="#FF953D">
|
|
|
|
|
+ <WarningFilled />
|
|
|
|
|
+ </el-icon>
|
|
|
|
|
+ <div class="fail-icon-text">审核失败</div>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </photo-consumer>
|
|
|
|
|
+ </photo-provider>
|
|
|
|
|
+ </div>
|
|
|
|
|
+</div>
|
|
|
|
|
+</div> -->
|
|
|
|
|
|
|
|
|
|
|
|
|
- <div class="work-info photo-box" v-if="prescription.cropAlbum && prescription.cropAlbum.length">
|
|
|
|
|
- <div class="photo-title">农事凭证</div>
|
|
|
|
|
- <div class="tips-text" v-if="detail?.imageAuditRejectReason">{{ detail?.imageAuditRejectReason }}</div>
|
|
|
|
|
- <div class="photo-sub-title" v-if="info?.appType === 1">来自于 {{ detail?.executorOrganizationName || "--" }}</div>
|
|
|
|
|
- <div class="photo-img-wrap">
|
|
|
|
|
- <photo-provider :photo-closable="true">
|
|
|
|
|
- <photo-consumer v-for="(src, index) in prescription.cropAlbum" intro="农事凭证" :key="index"
|
|
|
|
|
- :src="base_img_url2 + src.filename">
|
|
|
|
|
- <div class="photo-img">
|
|
|
|
|
- <img :src="base_img_url2 + src.filename" />
|
|
|
|
|
- <div class="fail-icon" v-if="failIndex(index) === 2">
|
|
|
|
|
- <el-icon size="24" color="#FF953D"><WarningFilled /></el-icon>
|
|
|
|
|
- <div class="fail-icon-text">审核失败</div>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- </photo-consumer>
|
|
|
|
|
- </photo-provider>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div>
|
|
|
|
|
- </div> -->
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
<div class="box-wrap stage-card">
|
|
<div class="box-wrap stage-card">
|
|
|
<div class="work-info">
|
|
<div class="work-info">
|
|
|
<div class="map-box">
|
|
<div class="map-box">
|
|
@@ -139,12 +147,33 @@
|
|
|
<div class="map-container" ref="mapContainer"></div>
|
|
<div class="map-container" ref="mapContainer"></div>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="area-list">
|
|
<div class="area-list">
|
|
|
- <div class="area-item" v-for="item in 2" :key="item">
|
|
|
|
|
|
|
+ <div class="area-item">
|
|
|
<div class="area-l">
|
|
<div class="area-l">
|
|
|
- 分区名称1:具体时间
|
|
|
|
|
- <span class="area-tag">未激活</span>
|
|
|
|
|
|
|
+ 权属田块1:{{ time1 }}
|
|
|
|
|
+ <span class="area-tag"
|
|
|
|
|
+ style="background: rgba(55, 193, 27, 0.1); color: #37C11B;">已认证</span>
|
|
|
|
|
+ <!-- <span class="area-tag">未激活</span> -->
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <!-- <div class="area-r">我已完成</div> -->
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="ecological-plant-card">
|
|
|
|
|
+ <!-- <div class="ecological-plant-text">
|
|
|
|
|
+ <div class="ecological-plant-line">
|
|
|
|
|
+ 生态种植方式:{{ ecologicalPlantingMethodText }}
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="area-r">我已完成</div>
|
|
|
|
|
|
|
+ <div class="ecological-plant-line ecological-plant-line--sub">
|
|
|
|
|
+ 来自于 {{ ecologicalExecutorOrg }}
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div> -->
|
|
|
|
|
+ <div class="ecological-plant-gallery">
|
|
|
|
|
+ <img
|
|
|
|
|
+ v-for="(src, idx) in ecologicalPlantThumbUrls"
|
|
|
|
|
+ :key="idx"
|
|
|
|
|
+ class="ecological-plant-thumb"
|
|
|
|
|
+ :src="src"
|
|
|
|
|
+ alt=""
|
|
|
|
|
+ />
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
@@ -154,24 +183,24 @@
|
|
|
<div class="work-info">
|
|
<div class="work-info">
|
|
|
<div class="info-item">
|
|
<div class="info-item">
|
|
|
<div class="info-title"><span class="title-block"></span>农事目的</div>
|
|
<div class="info-title"><span class="title-block"></span>农事目的</div>
|
|
|
- <div class="info-value">农事目的农事目的农事目的农事目的农事目的农事目的农事目的</div>
|
|
|
|
|
|
|
+ <div class="info-value">{{ text1 }}</div>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="info-item">
|
|
<div class="info-item">
|
|
|
<div class="info-title"><span class="title-block"></span>注意事项</div>
|
|
<div class="info-title"><span class="title-block"></span>注意事项</div>
|
|
|
- <div class="info-value">注意事项注意事项注意事项注意事项注意事项注意事项注意事项</div>
|
|
|
|
|
|
|
+ <div class="info-value info-value-preline">{{ text2 }}</div>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="info-item">
|
|
<div class="info-item">
|
|
|
<div class="info-title"><span class="title-block"></span>药物处方</div>
|
|
<div class="info-title"><span class="title-block"></span>药物处方</div>
|
|
|
- <div class="info-value"><span class="blod-text">机械:</span>药肥处方药肥处方药肥处方药肥处方药肥处方药肥</div>
|
|
|
|
|
|
|
+ <div class="info-value info-value-preline">{{ text3 }}</div>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="info-item">
|
|
<div class="info-item">
|
|
|
<div class="info-title"><span class="title-block"></span>执行方式</div>
|
|
<div class="info-title"><span class="title-block"></span>执行方式</div>
|
|
|
- <div class="info-value"><span class="blod-text">机械:</span>执行方式执行方式执行方式执行方式执行方式执行方式</div>
|
|
|
|
|
|
|
+ <div class="info-value info-value-preline">{{ text4 }}</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
- <div class="warning-info">
|
|
|
|
|
|
|
+ <!-- <div class="warning-info">
|
|
|
<div class="warning-l">
|
|
<div class="warning-l">
|
|
|
<div class="warning-title">
|
|
<div class="warning-title">
|
|
|
<el-icon size="16" color="#FF953D"><WarningFilled /></el-icon>
|
|
<el-icon size="16" color="#FF953D"><WarningFilled /></el-icon>
|
|
@@ -180,7 +209,7 @@
|
|
|
<div class="warning-text">文案文案文案文案文案</div>
|
|
<div class="warning-text">文案文案文案文案文案</div>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="warning-r">异常记录</div>
|
|
<div class="warning-r">异常记录</div>
|
|
|
- </div>
|
|
|
|
|
|
|
+ </div> -->
|
|
|
|
|
|
|
|
<!-- 底部按钮 -->
|
|
<!-- 底部按钮 -->
|
|
|
<div class="fixed-btn-wrap center-btn" v-if="info?.appType === 2">
|
|
<div class="fixed-btn-wrap center-btn" v-if="info?.appType === 2">
|
|
@@ -219,10 +248,17 @@ import { Popup } from "vant";
|
|
|
import MapInfo from "./components/mapInfo.vue";
|
|
import MapInfo from "./components/mapInfo.vue";
|
|
|
import { useRoute } from "vue-router";
|
|
import { useRoute } from "vue-router";
|
|
|
import AreaMap from "./components/areaMap.js";
|
|
import AreaMap from "./components/areaMap.js";
|
|
|
|
|
+import { time } from "echarts";
|
|
|
|
|
+import imgFq1 from "@/assets/img/common/fq-1.png";
|
|
|
|
|
+import imgFq2 from "@/assets/img/common/fq-2.png";
|
|
|
|
|
+import imgYz1 from "@/assets/img/common/yz-1.png";
|
|
|
|
|
+import imgYz2 from "@/assets/img/common/yz-2.png";
|
|
|
|
|
+import imgJf1 from "@/assets/img/common/jf-1.png";
|
|
|
|
|
+import imgJf2 from "@/assets/img/common/jf-2.png";
|
|
|
|
|
|
|
|
const route = useRoute();
|
|
const route = useRoute();
|
|
|
const showUploadTipsPopup = ref(false);
|
|
const showUploadTipsPopup = ref(false);
|
|
|
-
|
|
|
|
|
|
|
+const headerTitle = ref('');
|
|
|
const router = useRouter();
|
|
const router = useRouter();
|
|
|
// const info = JSON.parse(localStorage.getItem("localUserInfo") || "{}");
|
|
// const info = JSON.parse(localStorage.getItem("localUserInfo") || "{}");
|
|
|
const info = { appType: 1 };
|
|
const info = { appType: 1 };
|
|
@@ -280,19 +316,114 @@ onMounted(() => {
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
const miniJson = ref(null);
|
|
const miniJson = ref(null);
|
|
|
|
|
+const text1 = ref('');
|
|
|
|
|
+const text2 = ref('');
|
|
|
|
|
+const text3 = ref('');
|
|
|
|
|
+const text4 = ref('');
|
|
|
|
|
+const time1 = ref('');
|
|
|
|
|
+const text5 = ref('')
|
|
|
|
|
+/** 生态种植卡片:方式文案(可后续接接口字段) */
|
|
|
|
|
+const ecologicalPlantingMethodText = ref("某某方式");
|
|
|
|
|
+/** 与设计稿一致的四宫格示例图 */
|
|
|
|
|
+const ecologicalPlantThumbUrls = ref([imgFq1, imgFq2]);
|
|
|
|
|
+const ecologicalExecutorOrg = computed(
|
|
|
|
|
+ () => detail.value?.executorOrganizationName || "某某某农资机构"
|
|
|
|
|
+);
|
|
|
|
|
+const mapData = ref("MULTIPOLYGON(((107.995696309223 24.9716283493399, 107.997730748383 24.9701649808213, 107.997870541717 24.9690287881909, 107.998141205407 24.9672322951316, 107.995761744401 24.9662448188141, 107.994830780282 24.9679461334333, 107.995696309223 24.9716283493399)))")
|
|
|
|
|
+
|
|
|
onActivated(() => {
|
|
onActivated(() => {
|
|
|
- if (route.query?.miniJson) {
|
|
|
|
|
- const miniJsonObj = JSON.parse(route.query.miniJson);
|
|
|
|
|
- miniJson.value = JSON.parse(miniJsonObj.paramsPage);
|
|
|
|
|
|
|
+
|
|
|
|
|
+ areaMap.initMap("POINT(113.1093017627431 22.57454083668)", mapContainer.value);
|
|
|
|
|
+
|
|
|
|
|
+ headerTitle.value = route.query?.title || '';
|
|
|
|
|
+ if (headerTitle.value === '返青追肥') {
|
|
|
|
|
+ text5.value = '最佳返青营养时间评估'
|
|
|
|
|
+ ecologicalPlantThumbUrls.value = [imgFq1, imgFq2]
|
|
|
|
|
+ time1.value = '05/03';
|
|
|
|
|
+ text1.value = '通过追施速效蘖肥,快速补充氮素营养,促进水稻低节位分蘖早生快发,为构建足穗、高产群体打下坚实基础';
|
|
|
|
|
+ text2.value = [
|
|
|
|
|
+ '1. 土壤类型',
|
|
|
|
|
+ '砂土:保肥力极弱,养分易淋失。必须坚持“少量多次”原则。此次追肥量宜少(5-6公斤/亩),仅为总蘖肥量的一部分(约40%)。强烈建议通过水肥一体化系统随水追施;若无此条件,则采用植保无人机叶面喷施作为重要补充,避免撒施后大水漫灌造成肥料深层渗漏。',
|
|
|
|
|
+ '壤土:保肥力中等,可按常规用量(6-7公斤/亩)一次施用,采用撒施后灌水的方式。',
|
|
|
|
|
+ '黏土:保肥力强,用量可取上限(7-8公斤/亩)。但追肥前需确保田间无积水,追肥后保持浅水层即可,切忌深水淹灌,以免造成根系缺氧、还原性有毒物质积累伤根。',
|
|
|
|
|
+ '2. 酸碱度',
|
|
|
|
|
+ '酸性土(pH<5.5): 土壤中活性铝、锰离子含量高,可能抑制根系对养分的吸收。黄腐酸能络合这些有害离子,提高肥料利用率。应避免单独使用硫酸铵等生理酸性肥料,以免加剧土壤酸化。',
|
|
|
|
|
+ '碱性土(pH>7.5): 按常规操作,黄腐酸可缓冲盐碱,提高磷、铁、锌等元素的有效性。若往年出现过缺锌坐蔸现象,可在蘖肥中额外加入硫酸锌1-2公斤/亩。',
|
|
|
|
|
+ '3. 有机质含量',
|
|
|
|
|
+ '有机质偏低(<2%): 土壤供氮能力弱,追肥量可取上限(7-8公斤/亩),并可在施肥后3-5天配合一次叶面喷施氨基酸叶面肥(50毫升/亩),以防后期脱肥。',
|
|
|
|
|
+ '有机质较高(>3%): 土壤自身矿化释放的氮素较多,追肥量应取下限(5-6公斤/亩),防止氮素过量导致分蘖过旺、群体荫蔽,增加纹枯病和倒伏风险。',
|
|
|
|
|
+ '4. 气象条件',
|
|
|
|
|
+ '高温干旱: 追肥必须在清晨或傍晚进行。追肥后立即灌浅水(3-5厘米),并保持水层3-5天。若遇供水不稳定,可采用“以水带肥”方式,即追肥后立即小水量灌溉,使水肥同步下渗至根层。严禁中午追肥,此时氨挥发损失可达30%以上,且易灼伤叶片。',
|
|
|
|
|
+ '阴雨天气: 严禁在预报降雨前追肥。若追肥后24小时内遇暴雨,导致肥料明显流失,需在雨停后田面无积水时补施,补施量为原用量的一半。雨季需保持沟渠畅通,确保田间能及时排水,防止积水沤根影响返青进程。',
|
|
|
|
|
+ '低温寒潮: 若返青期遭遇持续低温(日均温低于15℃),根系吸收能力下降,应暂缓追肥,待气温回升稳定后再施,防止肥料积聚造成后期暴食旺长。可先叶面喷施氨基酸叶面肥增强抗逆性。',
|
|
|
|
|
+ ].join('\n');
|
|
|
|
|
+ text3.value = '亩施“黄腐酸高氮型水溶肥”(N-P₂O₅-K₂O=30-10-10,黄腐酸≥3%)5-8公斤';
|
|
|
|
|
+ text4.value = [
|
|
|
|
|
+ '1. 首选:通过水肥一体化滴灌系统或喷灌系统,将肥料溶解后随灌溉水同步、均匀施入根层土壤;',
|
|
|
|
|
+ '2. 次选:使用植保无人机进行叶面喷施,将肥料配成800-1000倍液,亩用水量3-5升,确保均匀覆盖;',
|
|
|
|
|
+ '3. 传统方式:人工或机械撒施颗粒状黄腐酸高氮肥,施肥后立即灌浅水(3-5厘米),并保持水层3-5天。',
|
|
|
|
|
+ ].join('\n');
|
|
|
|
|
+ } else if (headerTitle.value === '移栽防治') {
|
|
|
|
|
+ text5.value = '移栽预防早期病虫害'
|
|
|
|
|
+ ecologicalPlantThumbUrls.value = [imgYz1, imgYz2]
|
|
|
|
|
+ time1.value = '04/08'
|
|
|
|
|
+ text1.value = '通过深施基肥和土壤调理,一次性提供水稻前期生长所需的大部分养分,改善土壤结构,调节酸碱度,为秧苗早生快发和全生育期健康生长奠定基础';
|
|
|
|
|
+ text2.value = `1. 土壤类型
|
|
|
|
|
+ 砂土:保水保肥能力极差,养分易淋失。必须增加有机肥用量(取上限800公斤/亩)并采用“全层深施”,旋耕深度需达20厘米。石灰用量可根据pH检测结果适当减少,但必须确保最终pH达标。
|
|
|
|
|
+ 壤土:质地和保肥性适中,可按常规用量和深度(18厘米)操作。确保田面平整,防止局部积水或干旱。
|
|
|
|
|
+ 黏土:保肥力强,但排水性差,易板结。需在田块四周开好深度30厘米以上的排水沟。有机肥用量可取下限(500公斤/亩),但石灰和化肥必须深施,防止表层富集。旋耕后需充分晒垡或冻垡,以改善土壤结构。
|
|
|
|
|
+ 2. 酸碱度
|
|
|
|
|
+ 酸性土(pH<5.5):必须施用石灰调酸。对于pH 4.5-5.5的土壤,亩施石灰150-200公斤;对于pH<4.5的强酸性土壤,亩施石灰需增至250-300公斤。石灰撒施后需灌水泡田7-10天,促进中和反应,移栽前检测田面水pH值需达到5.5-6.5。
|
|
|
|
|
+ 碱性土(pH>7.5):无需施用石灰。可考虑亩施硫磺粉30-50公斤或选用生理酸性肥料(如硫酸铵)来逐步降低pH值。黄腐酸肥料有助于缓冲盐碱。
|
|
|
|
|
+ 3. 有机质含量
|
|
|
|
|
+ 有机质偏低(<2%):必须增施有机肥(取上限800公斤/亩)以快速提升地力。黄腐酸富氮完全肥用量也取上限(50公斤/亩)。
|
|
|
|
|
+ 有机质较高(>3%):有机肥用量可减少至500公斤/亩,黄腐酸富氮完全肥取下限(40公斤/亩),防止氮素过量导致秧苗前期旺长、抗逆性下降。
|
|
|
|
|
+ 4. 气象条件
|
|
|
|
|
+ 高温干旱天气:避免在中午高温时段撒施石灰和肥料,以减少氨挥发。施肥后应立即灌浅水(3-5厘米),并保持水层3-5天,以水压肥,防止养分挥发和固定。若预报持续高温无雨,应确保灌溉水源充足,防止土壤干裂。
|
|
|
|
|
+ 阴雨天气:严禁在预报有中到大雨前12小时内进行施肥作业,防止养分随地表径流大量流失。若施肥后24小时内遇中到大雨,需在雨停后补施基肥,补施量减半(石灰无需补施)。雨季整地时,需确保田面“平、烂、净”,防止局部积水导致肥料分布不均。
|
|
|
|
|
+ `;
|
|
|
|
|
+ text3.value = `有机肥: 腐熟农家肥或商品有机肥 500-800公斤
|
|
|
|
|
+ 复合肥: “黄腐酸富氮完全肥”(N-P₂O₅-K₂O=15-15-15,黄腐酸≥3%)40-50公斤
|
|
|
|
|
+ 中微量元素肥: 硅钙肥(有效SiO₂≥20%)60-80公斤
|
|
|
|
|
+ 土壤调理剂(酸性土): pH<5.5时,农用石灰(CaCO₃)100-300公斤
|
|
|
|
|
+ 土壤调理剂(碱性土): pH>7.5时,硫磺粉30-50公斤或选用生理酸性肥料
|
|
|
|
|
+ `;
|
|
|
|
|
+ text4.value = `1. 使用撒肥机或植保无人机将石灰(如需,即酸性土)均匀撒施于田面;
|
|
|
|
|
+ 2. 紧接着撒施基肥(有机肥、黄腐酸富氮完全肥、硅钙肥);
|
|
|
|
|
+ 3. 立即使用旋耕机进行深耕(深度18-20厘米),使所有物料与耕层土壤充分混匀;
|
|
|
|
|
+ 4. 使用水田耙或激光平地机进行耙平,达到“平、烂、净、深”标准;
|
|
|
|
|
+ 5. 灌水泡田,准备移栽。
|
|
|
|
|
+ `;
|
|
|
} else {
|
|
} else {
|
|
|
- miniJson.value = null;
|
|
|
|
|
|
|
+ text5.value = '整地基肥与土壤环境改良'
|
|
|
|
|
+ ecologicalPlantThumbUrls.value = [imgJf1, imgJf2]
|
|
|
|
|
+ time1.value = '04/20'
|
|
|
|
|
+ text1.value = '在秧苗移栽前建立药剂保护层,预防早期病虫害发生,确保秧苗移栽后快速返青、健康成长,实现“无病苗”下田';
|
|
|
|
|
+ text2.value = `1. 土壤类型:砂土保水保肥差,秧苗素质可能偏弱。宜选用安全性高的药剂组合(如处方三),并确保药液浓度准确,避免药害。喷施时雾滴不宜过细,以减少高温下的蒸发飘移。黏土排水性相对较差,秧苗带病风险可能略高。可优先选用内吸性强的组合(如处方一或二),确保药剂能被充分吸收。喷施前若秧田过密,可适当通风透光。壤土按标准方案执行,确保药液均匀覆盖。
|
|
|
|
|
+ 2. 酸碱度:酸性土(pH<5.5):土壤溶液偏酸,可能影响部分药剂稳定性。配药时,建议先用少量清水将药剂配成母液,再稀释,避免直接与酸性水混合。对于敏感药剂,浓度可适当降低5%。碱性土(pH>7.0):碱性水可能分解某些药剂(如有机磷类,但本方案未涉及)。配药时,建议先调节配药用水至中性,或优先选用在碱性条件下稳定的药剂(如三环唑、噻呋酰胺)。可添加有机硅助剂(按推荐用量的10%)以改善药液在碱性叶片表面的展着和渗透效果
|
|
|
|
|
+ 3. 有机质含量:有机质偏低(<1.5%):土壤贫瘠,秧苗长势可能偏弱,抗逆性差。优先选用内吸性强、持效期长的药剂组合(如处方一),并确保氨基酸叶面肥足量使用,以增强秧苗体质。有机质较高(>3.0%):秧苗可能生长过旺,组织柔嫩。按标准方案执行即可,但需注意喷施均匀,防止局部药液积聚。
|
|
|
|
|
+ 4. 气象条件
|
|
|
|
|
+ 高温干旱天气:选择在清晨(露水干后)或傍晚(下午4点后)喷药,避开中午高温时段。药液浓度可适当降低10%,并增加兑水量10%-20%,以防嫩叶灼伤和药液过快蒸发。喷施后确保秧苗有充足水分供应。
|
|
|
|
|
+ 阴雨天气:密切关注天气预报,务必抢在雨前4小时以上完成施药。若施药后2小时内遇中到大雨,需在雨停后及时补喷,补喷药量减半。优先选用内吸性强、耐雨水冲刷的药剂(如三环唑、噻呋酰胺、氯虫苯甲酰胺)。
|
|
|
|
|
+ `;
|
|
|
|
|
+ text3.value = `处方一(广谱预防,内吸性强):亩用30%噻呋酰胺悬浮剂20毫升 + 25%吡蚜酮可湿性粉剂20克 + 氨基酸叶面肥50毫升。
|
|
|
|
|
+ 处方二(强保护,主治稻瘟病和螟虫):亩用75%三环唑可湿性粉剂30克 + 20%氯虫苯甲酰胺悬浮剂10毫升 + 氨基酸叶面肥50毫升。
|
|
|
|
|
+ 处方三(经济型综合方案):亩用20%三环唑悬浮剂100毫升 + 5%阿维菌素乳油30毫升 + 氨基酸叶面肥50毫升。
|
|
|
|
|
+ `;
|
|
|
|
|
+ text4.value = '在移栽前1-2天,于秧田集中喷药。采用植保无人机进行超低容量喷雾(亩用水量1-1.5升),确保药液均匀覆盖秧苗。喷药后待药液晾干再起秧移栽。';
|
|
|
}
|
|
}
|
|
|
- getDetail();
|
|
|
|
|
|
|
+ // if (route.query?.miniJson) {
|
|
|
|
|
+ // const miniJsonObj = JSON.parse(route.query.miniJson);
|
|
|
|
|
+ // miniJson.value = JSON.parse(miniJsonObj.paramsPage);
|
|
|
|
|
+ // } else {
|
|
|
|
|
+ // miniJson.value = null;
|
|
|
|
|
+ // }
|
|
|
|
|
+ // getDetail();
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
const getDetail = () => {
|
|
const getDetail = () => {
|
|
|
if (!miniJson.value) return;
|
|
if (!miniJson.value) return;
|
|
|
- const { farmWorkLibId, farmId, recordId ,reproductiveId} = miniJson.value;
|
|
|
|
|
|
|
+ const { farmWorkLibId, farmId, recordId, reproductiveId } = miniJson.value;
|
|
|
VE_API.z_farm_work_record
|
|
VE_API.z_farm_work_record
|
|
|
.getDetailById({ farmWorkLibId, farmId, farmWorkRecordId: recordId, reproductiveId })
|
|
.getDetailById({ farmWorkLibId, farmId, farmWorkRecordId: recordId, reproductiveId })
|
|
|
.then(({ data }) => {
|
|
.then(({ data }) => {
|
|
@@ -386,17 +517,17 @@ const stageList = computed(() => {
|
|
|
if (!d) return [];
|
|
if (!d) return [];
|
|
|
|
|
|
|
|
// if (Array.isArray(d.pesticideList) && d.pesticideList.length) {
|
|
// if (Array.isArray(d.pesticideList) && d.pesticideList.length) {
|
|
|
- return [
|
|
|
|
|
- {
|
|
|
|
|
- ...d,
|
|
|
|
|
- pesticideList: d.pesticideList,
|
|
|
|
|
- cropAlbum: normalizeCropAlbum(
|
|
|
|
|
- d.confirmPicture?.length
|
|
|
|
|
- ? d.confirmPicture
|
|
|
|
|
- : d.executeEvidence
|
|
|
|
|
- ),
|
|
|
|
|
- },
|
|
|
|
|
- ];
|
|
|
|
|
|
|
+ return [
|
|
|
|
|
+ {
|
|
|
|
|
+ ...d,
|
|
|
|
|
+ pesticideList: d.pesticideList,
|
|
|
|
|
+ cropAlbum: normalizeCropAlbum(
|
|
|
|
|
+ d.confirmPicture?.length
|
|
|
|
|
+ ? d.confirmPicture
|
|
|
|
|
+ : d.executeEvidence
|
|
|
|
|
+ ),
|
|
|
|
|
+ },
|
|
|
|
|
+ ];
|
|
|
// }
|
|
// }
|
|
|
|
|
|
|
|
// return [];
|
|
// return [];
|
|
@@ -513,7 +644,7 @@ const handleConvert = () => {
|
|
|
askInfo: { title: "农事执行", content: "是否分享该农事给好友" },
|
|
askInfo: { title: "农事执行", content: "是否分享该农事给好友" },
|
|
|
shareText: `${detail.value.farmWorkName}农事 已触发,请在最佳农时内执行`,
|
|
shareText: `${detail.value.farmWorkName}农事 已触发,请在最佳农时内执行`,
|
|
|
targetUrl: `work_detail`,
|
|
targetUrl: `work_detail`,
|
|
|
- paramsPage: JSON.stringify({...miniJson.value, hideDraw: true}),
|
|
|
|
|
|
|
+ paramsPage: JSON.stringify({ ...miniJson.value, hideDraw: true }),
|
|
|
imageUrl: 'https://birdseye-img.sysuimars.com/birdseye-look-mini/work_img.png',
|
|
imageUrl: 'https://birdseye-img.sysuimars.com/birdseye-look-mini/work_img.png',
|
|
|
};
|
|
};
|
|
|
wx.miniProgram.navigateTo({
|
|
wx.miniProgram.navigateTo({
|
|
@@ -608,14 +739,18 @@ const areaMap = new AreaMap();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
&.status-5 {
|
|
&.status-5 {
|
|
|
- padding-top: 30px;
|
|
|
|
|
-
|
|
|
|
|
&::after {
|
|
&::after {
|
|
|
- background: #2199F8;
|
|
|
|
|
|
|
+ background: #37C11B;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .status-sub {
|
|
|
|
|
+ color: #37C11B !important;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- &.status-3, &.audit-2, &.audit-0 {
|
|
|
|
|
|
|
+ &.status-3,
|
|
|
|
|
+ &.audit-2,
|
|
|
|
|
+ &.audit-0 {
|
|
|
&::after {
|
|
&::after {
|
|
|
background: #FF953D;
|
|
background: #FF953D;
|
|
|
}
|
|
}
|
|
@@ -630,6 +765,7 @@ const areaMap = new AreaMap();
|
|
|
background: #FF4F4F;
|
|
background: #FF4F4F;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
&.status--2 {
|
|
&.status--2 {
|
|
|
&::after {
|
|
&::after {
|
|
|
background: #C7C7C7;
|
|
background: #C7C7C7;
|
|
@@ -660,11 +796,14 @@ const areaMap = new AreaMap();
|
|
|
top: 0;
|
|
top: 0;
|
|
|
padding: 0 12px 12px;
|
|
padding: 0 12px 12px;
|
|
|
z-index: 2;
|
|
z-index: 2;
|
|
|
|
|
+
|
|
|
&.has-bottom {
|
|
&.has-bottom {
|
|
|
margin-bottom: 88px;
|
|
margin-bottom: 88px;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
&.warning-info-show {
|
|
&.warning-info-show {
|
|
|
- margin-bottom: 168px;
|
|
|
|
|
|
|
+ // margin-bottom: 168px;
|
|
|
|
|
+ margin-bottom: 88px;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -749,7 +888,7 @@ const areaMap = new AreaMap();
|
|
|
margin-top: 10px;
|
|
margin-top: 10px;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-.info-item + .info-item {
|
|
|
|
|
|
|
+.info-item+.info-item {
|
|
|
margin-top: 10px;
|
|
margin-top: 10px;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -760,6 +899,7 @@ const areaMap = new AreaMap();
|
|
|
gap: 4px;
|
|
gap: 4px;
|
|
|
color: #2199F8;
|
|
color: #2199F8;
|
|
|
font-weight: 500;
|
|
font-weight: 500;
|
|
|
|
|
+
|
|
|
.title-block {
|
|
.title-block {
|
|
|
width: 6px;
|
|
width: 6px;
|
|
|
height: 6px;
|
|
height: 6px;
|
|
@@ -775,12 +915,18 @@ const areaMap = new AreaMap();
|
|
|
line-height: 21px;
|
|
line-height: 21px;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ .info-value-preline {
|
|
|
|
|
+ white-space: pre-line;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
.blod-text {
|
|
.blod-text {
|
|
|
font-weight: 500;
|
|
font-weight: 500;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.map-box {
|
|
.map-box {
|
|
|
position: relative;
|
|
position: relative;
|
|
|
|
|
+
|
|
|
.map-title {
|
|
.map-title {
|
|
|
z-index: 12;
|
|
z-index: 12;
|
|
|
position: absolute;
|
|
position: absolute;
|
|
@@ -796,7 +942,7 @@ const areaMap = new AreaMap();
|
|
|
background: rgba(0, 0, 0, 0.45);
|
|
background: rgba(0, 0, 0, 0.45);
|
|
|
backdrop-filter: blur(4px);
|
|
backdrop-filter: blur(4px);
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
.map-container {
|
|
.map-container {
|
|
|
height: 140px;
|
|
height: 140px;
|
|
|
width: 100%;
|
|
width: 100%;
|
|
@@ -807,9 +953,11 @@ const areaMap = new AreaMap();
|
|
|
|
|
|
|
|
.area-list {
|
|
.area-list {
|
|
|
margin-top: 10px;
|
|
margin-top: 10px;
|
|
|
- .area-item + .area-item {
|
|
|
|
|
|
|
+
|
|
|
|
|
+ .area-item+.area-item {
|
|
|
margin-top: 6px;
|
|
margin-top: 6px;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.area-item {
|
|
.area-item {
|
|
|
display: flex;
|
|
display: flex;
|
|
|
align-items: center;
|
|
align-items: center;
|
|
@@ -817,9 +965,11 @@ const areaMap = new AreaMap();
|
|
|
padding: 10px;
|
|
padding: 10px;
|
|
|
border: 1px solid rgba(0, 0, 0, 0.1);
|
|
border: 1px solid rgba(0, 0, 0, 0.1);
|
|
|
border-radius: 6px;
|
|
border-radius: 6px;
|
|
|
|
|
+
|
|
|
.area-l {
|
|
.area-l {
|
|
|
color: #000000;
|
|
color: #000000;
|
|
|
- font-weight: 500;
|
|
|
|
|
|
|
+
|
|
|
|
|
+ // font-weight: 500;
|
|
|
.area-tag {
|
|
.area-tag {
|
|
|
background: rgba(98, 98, 98, 0.1);
|
|
background: rgba(98, 98, 98, 0.1);
|
|
|
color: #626262;
|
|
color: #626262;
|
|
@@ -832,6 +982,7 @@ const areaMap = new AreaMap();
|
|
|
display: inline-block;
|
|
display: inline-block;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.area-r {
|
|
.area-r {
|
|
|
background: #2199F8;
|
|
background: #2199F8;
|
|
|
color: #fff;
|
|
color: #fff;
|
|
@@ -846,6 +997,37 @@ const areaMap = new AreaMap();
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+.ecological-plant-card {
|
|
|
|
|
+ margin-top: 10px;
|
|
|
|
|
+ // padding: 10px;
|
|
|
|
|
+ // background: rgba(244, 244, 244, 0.8);
|
|
|
|
|
+ border-radius: 8px;
|
|
|
|
|
+ text-align: left;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.ecological-plant-text {
|
|
|
|
|
+ color: #666666;
|
|
|
|
|
+ font-size: 14px;
|
|
|
|
|
+ line-height: 1.45;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.ecological-plant-line--sub {
|
|
|
|
|
+ margin-top: 6px;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.ecological-plant-gallery {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ gap: 12px;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.ecological-plant-thumb {
|
|
|
|
|
+ width: 80px;
|
|
|
|
|
+ height: 80px;
|
|
|
|
|
+ object-fit: cover;
|
|
|
|
|
+ border-radius: 8px;
|
|
|
|
|
+ display: block;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
.stage-card {
|
|
.stage-card {
|
|
|
|
|
|
|
|
.stage-header {
|
|
.stage-header {
|
|
@@ -914,6 +1096,7 @@ const areaMap = new AreaMap();
|
|
|
color: #2199F8;
|
|
color: #2199F8;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.area-text {
|
|
.area-text {
|
|
|
display: inline-flex;
|
|
display: inline-flex;
|
|
|
align-items: center;
|
|
align-items: center;
|
|
@@ -1051,6 +1234,7 @@ const areaMap = new AreaMap();
|
|
|
justify-content: center;
|
|
justify-content: center;
|
|
|
flex-direction: column;
|
|
flex-direction: column;
|
|
|
gap: 4px;
|
|
gap: 4px;
|
|
|
|
|
+
|
|
|
.fail-icon-text {
|
|
.fail-icon-text {
|
|
|
color: #FF943D;
|
|
color: #FF943D;
|
|
|
font-size: 12px;
|
|
font-size: 12px;
|
|
@@ -1092,6 +1276,7 @@ const areaMap = new AreaMap();
|
|
|
color: #ffffff;
|
|
color: #ffffff;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
&.no-share {
|
|
&.no-share {
|
|
|
justify-content: center;
|
|
justify-content: center;
|
|
|
}
|
|
}
|
|
@@ -1110,6 +1295,7 @@ const areaMap = new AreaMap();
|
|
|
align-items: center;
|
|
align-items: center;
|
|
|
justify-content: space-between;
|
|
justify-content: space-between;
|
|
|
box-shadow: 0px 4px 4px 0px #0000001A;
|
|
box-shadow: 0px 4px 4px 0px #0000001A;
|
|
|
|
|
+
|
|
|
.warning-l {
|
|
.warning-l {
|
|
|
.warning-title {
|
|
.warning-title {
|
|
|
display: inline-flex;
|
|
display: inline-flex;
|
|
@@ -1118,6 +1304,7 @@ const areaMap = new AreaMap();
|
|
|
font-size: 16px;
|
|
font-size: 16px;
|
|
|
color: #FF953D;
|
|
color: #FF953D;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
.warning-text {
|
|
.warning-text {
|
|
|
color: rgba(0, 0, 0, 0.4);
|
|
color: rgba(0, 0, 0, 0.4);
|
|
|
font-size: 12px;
|
|
font-size: 12px;
|