|
@@ -140,7 +140,7 @@
|
|
|
v-model:show="showInspectSuccessPopup"
|
|
v-model:show="showInspectSuccessPopup"
|
|
|
type="executeSuccess"
|
|
type="executeSuccess"
|
|
|
text="您已上传成功"
|
|
text="您已上传成功"
|
|
|
- text2="请等待诊断报告生成"
|
|
|
|
|
|
|
+ text2="诊断报告已生成"
|
|
|
buttonText="完成"
|
|
buttonText="完成"
|
|
|
/>
|
|
/>
|
|
|
|
|
|
|
@@ -315,9 +315,9 @@ async function fetchCropQuestionAlbumPic() {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-function resolveAlbumPoint(data) {
|
|
|
|
|
- const lng = Number(data?.longitude);
|
|
|
|
|
- const lat = Number(data?.latitude);
|
|
|
|
|
|
|
+function resolveGroupPoint(group) {
|
|
|
|
|
+ const lng = Number(group?.longitude);
|
|
|
|
|
+ const lat = Number(group?.latitude);
|
|
|
if (Number.isFinite(lng) && Number.isFinite(lat)) return [lng, lat];
|
|
if (Number.isFinite(lng) && Number.isFinite(lat)) return [lng, lat];
|
|
|
return readEntryFarmCoordinate() || DEFAULT_CENTER;
|
|
return readEntryFarmCoordinate() || DEFAULT_CENTER;
|
|
|
}
|
|
}
|
|
@@ -334,43 +334,50 @@ function buildEmptyAlbum() {
|
|
|
};
|
|
};
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-/** query_tmp_image:按分区名聚合;无分区名时归到用户品类,地图点用接口经纬度 */
|
|
|
|
|
|
|
+/** 组内展示名:优先分区名,否则用户品类 */
|
|
|
|
|
+function resolveGroupAlbumName(images, cropName) {
|
|
|
|
|
+ const zoneName = String(images.find((img) => img?.zone_name)?.zone_name || "").trim();
|
|
|
|
|
+ return zoneName || cropName || "";
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+/**
|
|
|
|
|
+ * query_tmp_image:data.groups 为按点位分组的二维结构
|
|
|
|
|
+ * groups[i].images[j] → cloud_url / zone_name;每组自带经纬度与 image_count
|
|
|
|
|
+ */
|
|
|
function mapTmpImageAlbum(data) {
|
|
function mapTmpImageAlbum(data) {
|
|
|
- const images = Array.isArray(data?.images) ? data.images : [];
|
|
|
|
|
const cropName = resolveSelectedCropName();
|
|
const cropName = resolveSelectedCropName();
|
|
|
- const [lng, lat] = resolveAlbumPoint(data);
|
|
|
|
|
- const groups = new Map();
|
|
|
|
|
- images.forEach((img) => {
|
|
|
|
|
- if (!img?.cloud_url) return;
|
|
|
|
|
- const name = String(img.zone_name || "").trim() || cropName || "";
|
|
|
|
|
- if (!groups.has(name)) groups.set(name, []);
|
|
|
|
|
- groups.get(name).push(img);
|
|
|
|
|
|
|
+ const rawGroups = Array.isArray(data?.groups) ? data.groups : [];
|
|
|
|
|
+ const albums = [];
|
|
|
|
|
+ const zones = [];
|
|
|
|
|
+
|
|
|
|
|
+ rawGroups.forEach((group, index) => {
|
|
|
|
|
+ const images = Array.isArray(group?.images)
|
|
|
|
|
+ ? group.images.filter((img) => img?.cloud_url)
|
|
|
|
|
+ : [];
|
|
|
|
|
+ if (!images.length) return;
|
|
|
|
|
+
|
|
|
|
|
+ const [lng, lat] = resolveGroupPoint(group);
|
|
|
|
|
+ const name = resolveGroupAlbumName(images, cropName);
|
|
|
|
|
+ const count = Number(group.image_count) || images.length;
|
|
|
|
|
+ const cover = images[0].cloud_url;
|
|
|
|
|
+ const id = `${images[0]?.farm_id || "album"}-${index}`;
|
|
|
|
|
+ const item = {
|
|
|
|
|
+ id,
|
|
|
|
|
+ groupIndex: index,
|
|
|
|
|
+ name,
|
|
|
|
|
+ count,
|
|
|
|
|
+ cover,
|
|
|
|
|
+ longitude: lng,
|
|
|
|
|
+ latitude: lat,
|
|
|
|
|
+ };
|
|
|
|
|
+ albums.push(item);
|
|
|
|
|
+ zones.push({ ...item, id: `album-point-${index}` });
|
|
|
});
|
|
});
|
|
|
- const albums = [...groups.entries()].map(([name, list], index) => ({
|
|
|
|
|
- id: `${list[0]?.farm_id || "album"}-${index}`,
|
|
|
|
|
- name,
|
|
|
|
|
- count: list.length,
|
|
|
|
|
- cover: list[0].cloud_url,
|
|
|
|
|
- longitude: lng,
|
|
|
|
|
- latitude: lat,
|
|
|
|
|
- }));
|
|
|
|
|
|
|
+
|
|
|
if (!albums.length) {
|
|
if (!albums.length) {
|
|
|
return { albums: [buildEmptyAlbum()], zones: [] };
|
|
return { albums: [buildEmptyAlbum()], zones: [] };
|
|
|
}
|
|
}
|
|
|
- const total = albums.reduce((sum, item) => sum + item.count, 0);
|
|
|
|
|
- return {
|
|
|
|
|
- albums,
|
|
|
|
|
- zones: [
|
|
|
|
|
- {
|
|
|
|
|
- id: "album-point",
|
|
|
|
|
- name: albums.length === 1 ? albums[0].name : cropName,
|
|
|
|
|
- count: total,
|
|
|
|
|
- cover: albums[0].cover,
|
|
|
|
|
- longitude: lng,
|
|
|
|
|
- latitude: lat,
|
|
|
|
|
- },
|
|
|
|
|
- ],
|
|
|
|
|
- };
|
|
|
|
|
|
|
+ return { albums, zones };
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
let tmpAlbumTask = null;
|
|
let tmpAlbumTask = null;
|
|
@@ -912,6 +919,7 @@ const goAlbumDetail = (item) => {
|
|
|
query: {
|
|
query: {
|
|
|
id: item?.id,
|
|
id: item?.id,
|
|
|
name: item?.name || "",
|
|
name: item?.name || "",
|
|
|
|
|
+ groupIndex: item?.groupIndex != null ? String(item.groupIndex) : "",
|
|
|
noImage: item?.count ? "false" : "true",
|
|
noImage: item?.count ? "false" : "true",
|
|
|
},
|
|
},
|
|
|
});
|
|
});
|