|
@@ -171,6 +171,7 @@ import proxyAuthPopup from "@/components/popup/proxyAuthPopup.vue";
|
|
|
import phenologyUpdatePopup from "@/components/popup/phenologyUpdatePopup.vue";
|
|
import phenologyUpdatePopup from "@/components/popup/phenologyUpdatePopup.vue";
|
|
|
import PhenologyTrackTimelineItem from "@/components/pageComponents/PhenologyTrackTimelineItem.vue";
|
|
import PhenologyTrackTimelineItem from "@/components/pageComponents/PhenologyTrackTimelineItem.vue";
|
|
|
import wx from "weixin-js-sdk";
|
|
import wx from "weixin-js-sdk";
|
|
|
|
|
+import { base_img_url2 } from "@/api/config";
|
|
|
|
|
|
|
|
const { t } = useI18n();
|
|
const { t } = useI18n();
|
|
|
const store = useStore();
|
|
const store = useStore();
|
|
@@ -186,6 +187,8 @@ const onPhenologyReached = () => {
|
|
|
const DIAGNOSIS_GUIDE_STORAGE_KEY = "AGRI_FILE_DIAGNOSIS_REPORT_GUIDE";
|
|
const DIAGNOSIS_GUIDE_STORAGE_KEY = "AGRI_FILE_DIAGNOSIS_REPORT_GUIDE";
|
|
|
const ENTRY_FARM_DATA_KEY = "ENTRY_FARM_DATA";
|
|
const ENTRY_FARM_DATA_KEY = "ENTRY_FARM_DATA";
|
|
|
const CROP_ARCHIVE_KEY = "CROP_ARCHIVE_RECORDS";
|
|
const CROP_ARCHIVE_KEY = "CROP_ARCHIVE_RECORDS";
|
|
|
|
|
+/** crop_question 返回的物候配图,相册只展示这一张 */
|
|
|
|
|
+const CROP_QUESTION_PIC_KEY = "CROP_QUESTION_PIC_URL";
|
|
|
const guideVisible = ref(false);
|
|
const guideVisible = ref(false);
|
|
|
|
|
|
|
|
const defaultCover = require("@/assets/img/home/banner.png");
|
|
const defaultCover = require("@/assets/img/home/banner.png");
|
|
@@ -245,12 +248,17 @@ function readEntryFarmData() {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+/** 用户录入时选择的作物品类名 */
|
|
|
|
|
+function resolveSelectedCropName() {
|
|
|
|
|
+ return readEntryFarmData()?.crop || "";
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
function buildZoneList(coordinate = readEntryFarmCoordinate() || DEFAULT_CENTER) {
|
|
function buildZoneList(coordinate = readEntryFarmCoordinate() || DEFAULT_CENTER) {
|
|
|
return [
|
|
return [
|
|
|
{
|
|
{
|
|
|
id: 1,
|
|
id: 1,
|
|
|
name: "",
|
|
name: "",
|
|
|
- count: 2,
|
|
|
|
|
|
|
+ count: 1,
|
|
|
cover: defaultCover,
|
|
cover: defaultCover,
|
|
|
longitude: Number(coordinate[0]),
|
|
longitude: Number(coordinate[0]),
|
|
|
latitude: Number(coordinate[1]),
|
|
latitude: Number(coordinate[1]),
|
|
@@ -261,9 +269,66 @@ function buildZoneList(coordinate = readEntryFarmCoordinate() || DEFAULT_CENTER)
|
|
|
const zoneList = ref(buildZoneList());
|
|
const zoneList = ref(buildZoneList());
|
|
|
|
|
|
|
|
const albumList = ref([
|
|
const albumList = ref([
|
|
|
- { id: 1, name: "", count: 125, cover: defaultCover },
|
|
|
|
|
|
|
+ { id: 1, name: "", count: 1, cover: defaultCover },
|
|
|
]);
|
|
]);
|
|
|
|
|
|
|
|
|
|
+function resolveCropQuestionImageUrl(path) {
|
|
|
|
|
+ if (!path) return "";
|
|
|
|
|
+ if (/^https?:\/\//i.test(path)) return path;
|
|
|
|
|
+ return base_img_url2 + String(path).replace(/^\//, "");
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+function readStoredCropQuestionPic() {
|
|
|
|
|
+ return localStorage.getItem(CROP_QUESTION_PIC_KEY) || "";
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/** 相册地图气泡 + 下方卡片:只用 crop_question 的一张图,数量固定 1;名称用用户品类 */
|
|
|
|
|
+function applyCropQuestionAlbumCover(coverUrl) {
|
|
|
|
|
+ const cover = coverUrl || readStoredCropQuestionPic() || defaultCover;
|
|
|
|
|
+ const cropName = resolveSelectedCropName();
|
|
|
|
|
+ zoneList.value = zoneList.value.map((item) => ({
|
|
|
|
|
+ ...item,
|
|
|
|
|
+ name: cropName || item.name,
|
|
|
|
|
+ cover,
|
|
|
|
|
+ count: 1,
|
|
|
|
|
+ }));
|
|
|
|
|
+ albumList.value = albumList.value.map((item) => ({
|
|
|
|
|
+ ...item,
|
|
|
|
|
+ name: cropName || item.name,
|
|
|
|
|
+ cover,
|
|
|
|
|
+ count: 1,
|
|
|
|
|
+ }));
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/** 拉取 crop_question 配图并缓存 */
|
|
|
|
|
+async function fetchCropQuestionAlbumPic() {
|
|
|
|
|
+ const entry = readEntryFarmData();
|
|
|
|
|
+ const crop = entry?.crop;
|
|
|
|
|
+ const code = entry?.cropCode;
|
|
|
|
|
+ if (!crop || !code) {
|
|
|
|
|
+ applyCropQuestionAlbumCover();
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ try {
|
|
|
|
|
+ const res = await VE_API.questionnaire.phenologyProblem({
|
|
|
|
|
+ crop_type: crop,
|
|
|
|
|
+ phenophase_code: String(code),
|
|
|
|
|
+ code: String(code),
|
|
|
|
|
+ });
|
|
|
|
|
+ if (res?.code !== 200 || !res.data) {
|
|
|
|
|
+ applyCropQuestionAlbumCover();
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ const url = resolveCropQuestionImageUrl(
|
|
|
|
|
+ res.data.phenophase_pic_url || res.data.interact_pic_url
|
|
|
|
|
+ );
|
|
|
|
|
+ if (url) localStorage.setItem(CROP_QUESTION_PIC_KEY, url);
|
|
|
|
|
+ applyCropQuestionAlbumCover(url);
|
|
|
|
|
+ } catch {
|
|
|
|
|
+ applyCropQuestionAlbumCover();
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
const reportCover = require("@/assets/img/common/sd-1.jpg");
|
|
const reportCover = require("@/assets/img/common/sd-1.jpg");
|
|
|
const reportList = ref([
|
|
const reportList = ref([
|
|
|
{ id: 1, title: "", desc: "", date: "", cover: reportCover },
|
|
{ id: 1, title: "", desc: "", date: "", cover: reportCover },
|
|
@@ -370,10 +435,13 @@ const bindZoneOverlays = () => {
|
|
|
|
|
|
|
|
const syncZoneFromEntry = () => {
|
|
const syncZoneFromEntry = () => {
|
|
|
const coordinate = readEntryFarmCoordinate() || getFarmCenter();
|
|
const coordinate = readEntryFarmCoordinate() || getFarmCenter();
|
|
|
- const zoneName = zoneList.value[0]?.name || "";
|
|
|
|
|
|
|
+ const cropName = resolveSelectedCropName() || zoneList.value[0]?.name || "";
|
|
|
|
|
+ const cover = readStoredCropQuestionPic() || zoneList.value[0]?.cover || defaultCover;
|
|
|
zoneList.value = buildZoneList(coordinate).map((item) => ({
|
|
zoneList.value = buildZoneList(coordinate).map((item) => ({
|
|
|
...item,
|
|
...item,
|
|
|
- name: zoneName,
|
|
|
|
|
|
|
+ name: cropName,
|
|
|
|
|
+ cover,
|
|
|
|
|
+ count: 1,
|
|
|
}));
|
|
}));
|
|
|
};
|
|
};
|
|
|
|
|
|
|
@@ -389,15 +457,15 @@ const initAlbumMap = async () => {
|
|
|
albumList.value = [];
|
|
albumList.value = [];
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
|
|
+ applyCropQuestionAlbumCover();
|
|
|
bindZoneOverlays();
|
|
bindZoneOverlays();
|
|
|
fileMap.kmap?.map?.updateSize?.();
|
|
fileMap.kmap?.map?.updateSize?.();
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
const fillMockLabels = () => {
|
|
const fillMockLabels = () => {
|
|
|
- const zoneName = t("agriFile.zoneLabel", { n: 1 });
|
|
|
|
|
- const albumName = t("agriFile.zoneOne");
|
|
|
|
|
- zoneList.value = zoneList.value.map((item) => ({ ...item, name: zoneName }));
|
|
|
|
|
- albumList.value = albumList.value.map((item) => ({ ...item, name: albumName }));
|
|
|
|
|
|
|
+ const cropName = resolveSelectedCropName();
|
|
|
|
|
+ zoneList.value = zoneList.value.map((item) => ({ ...item, name: cropName }));
|
|
|
|
|
+ albumList.value = albumList.value.map((item) => ({ ...item, name: cropName }));
|
|
|
reportList.value = reportList.value.map((item) => ({
|
|
reportList.value = reportList.value.map((item) => ({
|
|
|
...item,
|
|
...item,
|
|
|
title: t("agriFile.reportTitle"),
|
|
title: t("agriFile.reportTitle"),
|
|
@@ -409,7 +477,7 @@ const fillMockLabels = () => {
|
|
|
...MOCK_CROP_ARCHIVE.map((item) => ({
|
|
...MOCK_CROP_ARCHIVE.map((item) => ({
|
|
|
id: item.id,
|
|
id: item.id,
|
|
|
date: item.date,
|
|
date: item.date,
|
|
|
- zone_name: albumName,
|
|
|
|
|
|
|
+ zone_name: cropName,
|
|
|
content: t(item.contentKey),
|
|
content: t(item.contentKey),
|
|
|
})),
|
|
})),
|
|
|
];
|
|
];
|
|
@@ -485,6 +553,7 @@ async function loadPatrolContent() {
|
|
|
// 先长势跟踪,后异常态势
|
|
// 先长势跟踪,后异常态势
|
|
|
await fetchPatrolGrowthInteract();
|
|
await fetchPatrolGrowthInteract();
|
|
|
await fetchPatrolAbnormalInteract();
|
|
await fetchPatrolAbnormalInteract();
|
|
|
|
|
+ await fetchCropQuestionAlbumPic();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
const goAddZone = (type) => {
|
|
const goAddZone = (type) => {
|