|
@@ -3,7 +3,7 @@
|
|
|
<!-- 天气遮罩 -->
|
|
<!-- 天气遮罩 -->
|
|
|
<div class="weather-mask" v-show="isExpanded" @click="handleMaskClick"></div>
|
|
<div class="weather-mask" v-show="isExpanded" @click="handleMaskClick"></div>
|
|
|
<!-- 头部 -->
|
|
<!-- 头部 -->
|
|
|
- <div v-show="activeGardenTab === 'current'" class="agri-file-header" :style="headerMotionStyle">
|
|
|
|
|
|
|
+ <div class="agri-file-header" :style="activeGardenTab === 'current' ? headerMotionStyle : undefined">
|
|
|
<weather-info ref="weatherInfoRef" :hasWeather="false" from="agri_file" class="weather-info"
|
|
<weather-info ref="weatherInfoRef" :hasWeather="false" from="agri_file" class="weather-info"
|
|
|
@weatherExpanded="weatherExpanded" @changeGarden="changeGarden" @changeGardenTab="changeGardenTab"
|
|
@weatherExpanded="weatherExpanded" @changeGarden="changeGarden" @changeGardenTab="changeGardenTab"
|
|
|
@reportTabClick="handleReportTabClick" :isGarden="true" :gardenId="defaultGardenId" />
|
|
@reportTabClick="handleReportTabClick" :isGarden="true" :gardenId="defaultGardenId" />
|
|
@@ -15,24 +15,17 @@
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<div v-show="activeGardenTab === 'current'" class="tracking-list">
|
|
<div v-show="activeGardenTab === 'current'" class="tracking-list">
|
|
|
- <div
|
|
|
|
|
- v-for="item in trackingList"
|
|
|
|
|
- :key="item.id"
|
|
|
|
|
- class="tracking-item"
|
|
|
|
|
- :class="`tracking-item--${item.theme}`"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <div v-for="item in trackingList" :key="item.id" class="tracking-item"
|
|
|
|
|
+ :class="`tracking-item--${item.theme}`" @click="handleTrackingItemClick(item)">
|
|
|
<div class="tracking-item__header">
|
|
<div class="tracking-item__header">
|
|
|
<div class="tracking-item__header-row">
|
|
<div class="tracking-item__header-row">
|
|
|
<div class="tracking-item__header-left">
|
|
<div class="tracking-item__header-left">
|
|
|
- <span class="tracking-item__level">{{ item.level }}</span>
|
|
|
|
|
- <span class="tracking-item__title">{{ item.title }}</span>
|
|
|
|
|
|
|
+ <span class="tracking-item__level" v-show="item.risk_level">{{ item.risk_level }}</span>
|
|
|
|
|
+ <span class="tracking-item__title">{{ item.first_work?.work_name }}</span>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="tracking-item__tags">
|
|
<div class="tracking-item__tags">
|
|
|
- <span
|
|
|
|
|
- v-for="(tag, tagIndex) in item.tags"
|
|
|
|
|
- :key="tagIndex"
|
|
|
|
|
- class="tracking-item__tag"
|
|
|
|
|
- >{{ tag }}</span>
|
|
|
|
|
|
|
+ <span v-for="(tag, tagIndex) in item.list" :key="tagIndex" class="tracking-item__tag">{{
|
|
|
|
|
+ tag?.category_name || tag }}</span>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
@@ -41,24 +34,19 @@
|
|
|
<div class="tracking-item__action-main">
|
|
<div class="tracking-item__action-main">
|
|
|
<div class="tracking-item__icon">
|
|
<div class="tracking-item__icon">
|
|
|
<img :src="item.icon" alt="" />
|
|
<img :src="item.icon" alt="" />
|
|
|
- <div class="tracking-item__reason">{{ item.reason }}</div>
|
|
|
|
|
|
|
+ <div class="tracking-item__reason">{{ item.first_work?.work_reason_short }}</div>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="tracking-item__info">
|
|
<div class="tracking-item__info">
|
|
|
- <div class="tracking-item__issue">{{ item.issue }}</div>
|
|
|
|
|
|
|
+ <div class="tracking-item__issue">{{ item.first_work?.interaction_issue }}</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="tracking-item__btn">{{ item.recordText }}</div>
|
|
|
|
|
|
|
+ <div class="tracking-item__btn">立即记录</div>
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="tracking-item__history">
|
|
|
|
|
|
|
+ <div class="tracking-item__history" v-show="false">
|
|
|
<div class="tracking-item__history-text">{{ item.historyText }}</div>
|
|
<div class="tracking-item__history-text">{{ item.historyText }}</div>
|
|
|
<div class="tracking-item__images">
|
|
<div class="tracking-item__images">
|
|
|
- <img
|
|
|
|
|
- v-for="(image, imageIndex) in item.images.slice(0, 5)"
|
|
|
|
|
- :key="imageIndex"
|
|
|
|
|
- class="tracking-item__thumb"
|
|
|
|
|
- :src="image"
|
|
|
|
|
- alt=""
|
|
|
|
|
- />
|
|
|
|
|
|
|
+ <img v-for="(image, imageIndex) in item.images" :key="imageIndex"
|
|
|
|
|
+ class="tracking-item__thumb" :src="image" alt="" />
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
@@ -107,47 +95,48 @@ const currentFarmName = ref("");
|
|
|
const currentFarmVariety = ref(null);
|
|
const currentFarmVariety = ref(null);
|
|
|
|
|
|
|
|
const defaultThumb = require("@/assets/img/home/banner.png");
|
|
const defaultThumb = require("@/assets/img/home/banner.png");
|
|
|
-const trackingList = ref([
|
|
|
|
|
- {
|
|
|
|
|
- id: "phenology",
|
|
|
|
|
- theme: "blue",
|
|
|
|
|
- level: "二级",
|
|
|
|
|
- title: "物候跟踪记录",
|
|
|
|
|
- tags: ["物候", "物候", "物候"],
|
|
|
|
|
- icon: require("@/assets/img/report/wh-icon.png"),
|
|
|
|
|
- reason: "某某原因",
|
|
|
|
|
- issue: "互动问题互动问题互动问题互动问题互",
|
|
|
|
|
- recordText: "立即记录",
|
|
|
|
|
- historyText: "2026.06.07 某某区发生的事情",
|
|
|
|
|
- images: Array.from({ length: 5 }, () => defaultThumb),
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- id: "pest",
|
|
|
|
|
- theme: "red",
|
|
|
|
|
- level: "二级",
|
|
|
|
|
- title: "病虫害态势监控",
|
|
|
|
|
- tags: ["真菌类", "真菌类", "真菌类"],
|
|
|
|
|
- icon: require("@/assets/img/report/bh-icon.png"),
|
|
|
|
|
- reason: "某某原因",
|
|
|
|
|
- issue: "互动问题互动问题互动问题互动问题互",
|
|
|
|
|
- recordText: "立即记录",
|
|
|
|
|
- historyText: "2026.06.07 某某区发生的事情",
|
|
|
|
|
- images: Array.from({ length: 5 }, () => defaultThumb),
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- id: "growth",
|
|
|
|
|
- theme: "orange",
|
|
|
|
|
- level: "二级",
|
|
|
|
|
- title: "长势异常态势跟踪",
|
|
|
|
|
- tags: ["真菌类", "真菌类", "真菌类"],
|
|
|
|
|
- icon: require("@/assets/img/report/yc-icon.png"),
|
|
|
|
|
- reason: "某某原因",
|
|
|
|
|
- issue: "互动问题互动问题互动问题互动问题互",
|
|
|
|
|
- recordText: "立即记录",
|
|
|
|
|
- historyText: "2026.06.07 某某区发生的事情",
|
|
|
|
|
- images: Array.from({ length: 5 }, () => defaultThumb),
|
|
|
|
|
- },
|
|
|
|
|
-]);
|
|
|
|
|
|
|
+const trackingList = ref([]);
|
|
|
|
|
+// const trackingList = ref([
|
|
|
|
|
+// {
|
|
|
|
|
+// id: "phenology",
|
|
|
|
|
+// theme: "blue",
|
|
|
|
|
+// level: "二级",
|
|
|
|
|
+// title: "物候跟踪记录",
|
|
|
|
|
+// tags: ["物候", "物候", "物候"],
|
|
|
|
|
+// icon: require("@/assets/img/report/wh-icon.png"),
|
|
|
|
|
+// reason: "某某原因",
|
|
|
|
|
+// issue: "互动问题互动问题互动问题互动问题互",
|
|
|
|
|
+// recordText: "立即记录",
|
|
|
|
|
+// historyText: "2026.06.07 某某区发生的事情",
|
|
|
|
|
+// images: Array.from({ length: 5 }, () => defaultThumb),
|
|
|
|
|
+// },
|
|
|
|
|
+// {
|
|
|
|
|
+// id: "pest",
|
|
|
|
|
+// theme: "red",
|
|
|
|
|
+// level: "二级",
|
|
|
|
|
+// title: "病虫害态势监控",
|
|
|
|
|
+// tags: ["真菌类", "真菌类", "真菌类"],
|
|
|
|
|
+// icon: require("@/assets/img/report/bh-icon.png"),
|
|
|
|
|
+// reason: "某某原因",
|
|
|
|
|
+// issue: "互动问题互动问题互动问题互动问题互",
|
|
|
|
|
+// recordText: "立即记录",
|
|
|
|
|
+// historyText: "2026.06.07 某某区发生的事情",
|
|
|
|
|
+// images: Array.from({ length: 5 }, () => defaultThumb),
|
|
|
|
|
+// },
|
|
|
|
|
+// {
|
|
|
|
|
+// id: "growth",
|
|
|
|
|
+// theme: "orange",
|
|
|
|
|
+// level: "二级",
|
|
|
|
|
+// title: "长势异常态势跟踪",
|
|
|
|
|
+// tags: ["真菌类", "真菌类", "真菌类"],
|
|
|
|
|
+// icon: require("@/assets/img/report/yc-icon.png"),
|
|
|
|
|
+// reason: "某某原因",
|
|
|
|
|
+// issue: "互动问题互动问题互动问题互动问题互",
|
|
|
|
|
+// recordText: "立即记录",
|
|
|
|
|
+// historyText: "2026.06.07 某某区发生的事情",
|
|
|
|
|
+// images: Array.from({ length: 5 }, () => defaultThumb),
|
|
|
|
|
+// },
|
|
|
|
|
+// ]);
|
|
|
|
|
|
|
|
const handleReportTabClick = (item) => {
|
|
const handleReportTabClick = (item) => {
|
|
|
if (item.key === "historyRisk") {
|
|
if (item.key === "historyRisk") {
|
|
@@ -192,6 +181,7 @@ const changeGarden = (data) => {
|
|
|
selectedGardenId.value = data.id;
|
|
selectedGardenId.value = data.id;
|
|
|
currentFarmName.value = data.name ?? "";
|
|
currentFarmName.value = data.name ?? "";
|
|
|
currentFarmVariety.value = data.farm_variety ?? null;
|
|
currentFarmVariety.value = data.farm_variety ?? null;
|
|
|
|
|
+ getFarmRiskAndTracking();
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
onActivated(() => {
|
|
onActivated(() => {
|
|
@@ -201,30 +191,36 @@ onActivated(() => {
|
|
|
const savedFarmId = localStorage.getItem("selectedFarmId");
|
|
const savedFarmId = localStorage.getItem("selectedFarmId");
|
|
|
selectedGardenId.value = savedFarmId ? Number(savedFarmId) : null;
|
|
selectedGardenId.value = savedFarmId ? Number(savedFarmId) : null;
|
|
|
gardenListRef.value?.refreshFarmList?.();
|
|
gardenListRef.value?.refreshFarmList?.();
|
|
|
- getFarmRiskAndTracking();
|
|
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
|
|
+const currentPheCode = ref('');
|
|
|
|
|
+let fetchRequestId = 0;
|
|
|
const getFarmRiskAndTracking = async () => {
|
|
const getFarmRiskAndTracking = async () => {
|
|
|
- const selectedFarmData = JSON.parse(localStorage.getItem("selectedFarmData"));
|
|
|
|
|
|
|
+ const requestId = ++fetchRequestId;
|
|
|
|
|
+ trackingList.value = [];
|
|
|
|
|
+ const selectedFarmData = JSON.parse(localStorage.getItem("selectedFarmData") || "{}");
|
|
|
const res = await VE_API.monitor.getFarmRiskAndTracking({
|
|
const res = await VE_API.monitor.getFarmRiskAndTracking({
|
|
|
farm_id: selectedGardenId.value,
|
|
farm_id: selectedGardenId.value,
|
|
|
crop_type: selectedFarmData.farm_variety,
|
|
crop_type: selectedFarmData.farm_variety,
|
|
|
category_code: selectedFarmData.farm_category
|
|
category_code: selectedFarmData.farm_category
|
|
|
});
|
|
});
|
|
|
|
|
+ if (requestId !== fetchRequestId) return;
|
|
|
if (res.code === 200) {
|
|
if (res.code === 200) {
|
|
|
- console.log(res)
|
|
|
|
|
- // trackingList.value = res.data;
|
|
|
|
|
|
|
+ currentPheCode.value = res.current_phe_code;
|
|
|
|
|
+ trackingList.value = [
|
|
|
|
|
+ { ...res.data.phenology_tracking, theme: "blue", icon: require("@/assets/img/report/wh-icon.png"), workType: 'phenology' },
|
|
|
|
|
+ { ...res.data.growth_abnormal_tracking, theme: "orange", icon: require("@/assets/img/report/yc-icon.png"), workType: 'growth' },
|
|
|
|
|
+ { ...res.data.pest_risk_assessment, theme: "red", icon: require("@/assets/img/report/bh-icon.png"), workType: 'pest' },
|
|
|
|
|
+ ];
|
|
|
}
|
|
}
|
|
|
-}
|
|
|
|
|
|
|
+};
|
|
|
|
|
|
|
|
-// const handleTrendMonitorCardClick = (item) => {
|
|
|
|
|
-// saveArchivesOuterScrollTop();
|
|
|
|
|
-// blockArchivesScrollSaveOnce.value = true;
|
|
|
|
|
-// router.push({
|
|
|
|
|
-// path: "/record_details",
|
|
|
|
|
-// query: { workId: item?.first_work?.work_id, type: item?.workType, curCode:currentPheCode.value },
|
|
|
|
|
-// });
|
|
|
|
|
-// };
|
|
|
|
|
|
|
+const handleTrackingItemClick = (item) => {
|
|
|
|
|
+ router.push({
|
|
|
|
|
+ path: "/record_details",
|
|
|
|
|
+ query: { workId: item?.first_work?.work_id, type: item?.workType, curCode: currentPheCode.value },
|
|
|
|
|
+ });
|
|
|
|
|
+};
|
|
|
</script>
|
|
</script>
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
<style lang="scss" scoped>
|
|
@@ -391,6 +387,7 @@ const getFarmRiskAndTracking = async () => {
|
|
|
display: flex;
|
|
display: flex;
|
|
|
align-items: center;
|
|
align-items: center;
|
|
|
gap: 4px;
|
|
gap: 4px;
|
|
|
|
|
+
|
|
|
img {
|
|
img {
|
|
|
width: 18px;
|
|
width: 18px;
|
|
|
height: 16px;
|
|
height: 16px;
|