فهرست منبع

feat:新增的时候添加调用两个初始化弹窗的 接口

wangsisi 6 ساعت پیش
والد
کامیت
3797bb6259

+ 5 - 0
src/api/modules/report.js

@@ -21,6 +21,11 @@ module.exports = {
         url: config.base_new_url + "report/generate",
         url: config.base_new_url + "report/generate",
         type: "get",
         type: "get",
     },
     },
+    // 生成六模块诊断报告
+    generate6Module: {
+        url: config.base_new_url + "report/generate_6module",
+        type: "get",
+    },
     // 添加执行图片并完成任务
     // 添加执行图片并完成任务
     addExecuteImgAndComplete: {
     addExecuteImgAndComplete: {
         url: config.base_dev_url + "v2/z_farm_work_record/addExecuteImgAndComplete",
         url: config.base_dev_url + "v2/z_farm_work_record/addExecuteImgAndComplete",

+ 50 - 0
src/views/old_mini/entry_information/components/selectEquipment.vue

@@ -577,6 +577,54 @@ function buildReportParams() {
     };
     };
 }
 }
 
 
+/** 从对象中尽量解析 farm_id / zone_id(兼容多种返回结构) */
+function pickFarmZoneIds(data) {
+    if (!data || typeof data !== "object") return null;
+    const farmId =
+        data.farm_id ??
+        data.farmId ??
+        data.farm?.farm_id ??
+        data.farm?.id ??
+        data.id;
+    const zoneId =
+        data.zone_id ??
+        data.zoneId ??
+        data.zone?.zone_id ??
+        data.zone?.id ??
+        data.default_zone_id ??
+        data.zones?.[0]?.zone_id ??
+        data.zones?.[0]?.id;
+    if (farmId == null || farmId === "" || zoneId == null || zoneId === "") return null;
+    return { farm_id: farmId, zone_id: zoneId };
+}
+
+function readSelectedFarmIds() {
+    try {
+        return pickFarmZoneIds(JSON.parse(localStorage.getItem("selectedFarmData") || "null"));
+    } catch {
+        return null;
+    }
+}
+
+/** 新增成功后触发 check + generate_6module,不等待、不落库 */
+function triggerReportApis(res) {
+    const data = res?.data && typeof res.data === "object" ? res.data : res;
+    const ids = pickFarmZoneIds(data) || pickFarmZoneIds(res) || readSelectedFarmIds() || {};
+    const reportParams = pendingReportParams.value || {};
+    const checkParams = {
+        farm_id: ids.farm_id ?? "",
+        zone_id: ids.zone_id ?? "",
+    };
+    const generateParams = {
+        ...checkParams,
+        region: reportParams.region || "",
+        crop: reportParams.crop || "",
+    };
+    // 仅触发请求,不做结果处理
+    VE_API.questionnaire.checkReportGenerated(checkParams).catch(() => {});
+    VE_API.report.generate6Module(generateParams).catch(() => {});
+}
+
 /** 跳转长势报告前生成报告 */
 /** 跳转长势报告前生成报告 */
 async function generateGrowthReport(params) {
 async function generateGrowthReport(params) {
     if (!params?.region || !params?.crop || !params?.variety || !params?.tel) {
     if (!params?.region || !params?.crop || !params?.variety || !params?.tel) {
@@ -621,6 +669,8 @@ async function submitEntry(includeEquipment = true) {
         const res = Array.isArray(raw) ? raw[0] : raw;
         const res = Array.isArray(raw) ? raw[0] : raw;
         if (res?.code === 200) {
         if (res?.code === 200) {
             pendingReportParams.value = buildReportParams();
             pendingReportParams.value = buildReportParams();
+            // 新增成功后立刻触发 check / generate_6module,不等待结果
+            triggerReportApis(res);
             clearEntrySession();
             clearEntrySession();
             showSuccessPopup.value = true;
             showSuccessPopup.value = true;
         } else {
         } else {

+ 1 - 2
src/views/old_mini/work_execute/components/calendar.vue

@@ -147,13 +147,12 @@ function setStartDate(dateStr) {
     startDate.value = next;
     startDate.value = next;
 }
 }
 
 
-/** 选中指定日期(不触发取消逻辑) */
+/** 程序化选中日期,不向外抛事件,避免把日历窗口重新拉走 */
 function selectDateByValue(dateStr) {
 function selectDateByValue(dateStr) {
     if (!dateStr) return;
     if (!dateStr) return;
     const day = calendarDays.value.find((item) => item.date === dateStr);
     const day = calendarDays.value.find((item) => item.date === dateStr);
     activeDay.value = dateStr;
     activeDay.value = dateStr;
     selectedDate.value = day ? `${dateStr} (${day.dayOfWeek})` : dateStr;
     selectedDate.value = day ? `${dateStr} (${day.dayOfWeek})` : dateStr;
-    emit("dateSelect", dateStr);
 }
 }
 
 
 const expiredCounts = ref(0);
 const expiredCounts = ref(0);

+ 14 - 20
src/views/old_mini/work_execute/index.vue

@@ -213,9 +213,9 @@ const mapTaskItem = (task, index, { dateStr, lat, lng, zoneId, kind }) => {
     };
     };
 };
 };
 
 
-/** 合并 fw_tasks(标准化)+ weather_work(气象) */
-const mapZoneTaskList = (data) => {
-    const dateStr = resolveRangeStart(data);
+/** 合并 fw_tasks(标准化)+ weather_work(气象);无单条日期时归到本次请求日 */
+const mapZoneTaskList = (data, requestDate) => {
+    const dateStr = requestDate || resolveRangeStart(data);
     const lat = data.latitude ?? 22.970229;
     const lat = data.latitude ?? 22.970229;
     const lng = data.longitude ?? 113.746646;
     const lng = data.longitude ?? 113.746646;
     const zoneId = data.zone_id ?? getSelectedZoneId();
     const zoneId = data.zone_id ?? getSelectedZoneId();
@@ -238,6 +238,14 @@ const resolveRangeStart = (data) => {
 };
 };
 
 
 // ---------- 业务逻辑 ----------
 // ---------- 业务逻辑 ----------
+/** 只同步选中态和农事角标,不改日历起始日(窗口固定为今天起 7 天) */
+const syncCalendar = () => {
+    nextTick(() => {
+        calendarRef.value?.selectDateByValue?.(filterDate.value);
+        calendarRef.value?.setSolarTerm?.(taskList.value);
+    });
+};
+
 /** 无果园信息时展示「完善农场信息 / 专属农事日历」弹窗 */
 /** 无果园信息时展示「完善农场信息 / 专属农事日历」弹窗 */
 async function checkFarmCalendarPopup() {
 async function checkFarmCalendarPopup() {
     const id = getMiniUserId();
     const id = getMiniUserId();
@@ -264,18 +272,6 @@ const refreshMapMarkers = () => {
 const getMapMarkerList = () =>
 const getMapMarkerList = () =>
     taskList.value.filter((item) => item.status === "pending" && item.wkt);
     taskList.value.filter((item) => item.status === "pending" && item.wkt);
 
 
-const syncCalendar = (data) => {
-    const start = resolveRangeStart(data);
-    calendarRef.value?.setStartDate?.(start);
-    nextTick(() => {
-        const preferDate =
-            (taskList.value.some((item) => item.executeDateFull === filterDate.value) && filterDate.value) ||
-            start;
-        calendarRef.value?.selectDateByValue?.(preferDate);
-        calendarRef.value?.setSolarTerm?.(taskList.value);
-    });
-};
-
 const fetchZoneFwTaskList = async () => {
 const fetchZoneFwTaskList = async () => {
     try {
     try {
         const params = resolveQueryParams();
         const params = resolveQueryParams();
@@ -284,17 +280,15 @@ const fetchZoneFwTaskList = async () => {
         if (!data) {
         if (!data) {
             taskList.value = [];
             taskList.value = [];
             mapCenterPoint.value = null;
             mapCenterPoint.value = null;
-            calendarRef.value?.setStartDate?.(params.trigger_date);
-            calendarRef.value?.selectDateByValue?.(params.trigger_date);
+            calendarRef.value?.selectDateByValue?.(filterDate.value);
             calendarRef.value?.setSolarTerm?.([]);
             calendarRef.value?.setSolarTerm?.([]);
             refreshMapMarkers();
             refreshMapMarkers();
             return;
             return;
         }
         }
-        const { list, lat, lng, dateStr } = mapZoneTaskList(data);
+        const { list, lat, lng } = mapZoneTaskList(data, params.trigger_date);
         mapCenterPoint.value = `POINT(${lng} ${lat})`;
         mapCenterPoint.value = `POINT(${lng} ${lat})`;
         taskList.value = list;
         taskList.value = list;
-        filterDate.value = dateStr;
-        syncCalendar(data);
+        syncCalendar();
         nextTick(() => refreshMapMarkers());
         nextTick(() => refreshMapMarkers());
     } catch (e) {
     } catch (e) {
         console.error("获取农事任务失败", e);
         console.error("获取农事任务失败", e);