Forráskód Böngészése

fix: 完善下一个农事,详情

刘秀芳 1 hete
szülő
commit
e1884a9030

+ 39 - 5
src/views/old_mini/modify_work/detailWork.vue

@@ -111,10 +111,13 @@
                                                     }}</span>
                                                 </div> -->
                                             </div>
-                                            <div class="price-total">
-                                                报价合计:<span class="main-val">
-                                                    {{ totalCost ? formatArea(totalCost) : "--" }}</span
-                                                >元
+                                            <div class="price-bottom-action">
+                                                <div class="price-total">
+                                                    报价合计:<span class="main-val">
+                                                        {{ totalCost ? formatArea(totalCost) : "--" }}</span
+                                                    >元
+                                                </div>
+                                                <div class="show-price-btn" @click="showPriceSheetPopup">生成报价单</div>
                                             </div>
                                         </div>
                                     </template>
@@ -221,7 +224,7 @@
 
             <!-- 农资,步骤:农事已确认 -->
             <div class="fixed-btn-wrap">
-                <div class="fixed-btn second" @click="showPriceSheetPopup">生成报价单</div>
+                <div class="fixed-btn second" @click="editPrice">编辑报价</div>
                 <div class="fixed-btn" @click="handleTimelineAction">转入农事任务</div>
             </div>
         </div>
@@ -357,6 +360,18 @@ const handleTimelineAction = (item) => {
     }
 };
 
+const editPrice = () => {
+    router.push({
+        path: "/modify",
+        query: {
+            isEdit: true,
+            onlyPrice: true,
+            farmId: query.value.farmId,
+            arrangeId: query.value.arrangeId,
+            farmWorkId: query.value.id,
+        },
+    });
+};
 
 const handleUploadSuccess = () => {
     router.back();
@@ -690,7 +705,26 @@ const getPriceList = async (schemeId, pesticideFertilizerCodes) => {
                         text-align: center;
                     }
                 }
+                .price-bottom-action {
+                    display: flex;
+                    align-items: center;
+                    justify-content: space-between;
+                    gap: 8px;
+                    .show-price-btn {
+                        flex: none;
+                        width: 96px;
+                        height: 40px;
+                        line-height: 38px;
+                        line-height: 38px;
+                        border-radius: 4px;
+                        background: #2199f8;
+                        color: #fff;
+                        font-size: 14px;
+                        text-align: center;
+                    }
+                }
                 .price-total {
+                    flex: 1;
                     height: 38px;
                     display: flex;
                     align-items: center;

+ 77 - 39
src/views/old_mini/modify_work/modify.vue

@@ -783,48 +783,86 @@ const handleViewDetail = () => {
 
 const handleCompleteNext = () => {
     showCompletePopup.value = false;
-    const farmWorkIds = sessionStorage.getItem("farmWorkIds");
+    // 优先使用 farmWorkIds.value(从 route.query 解析的),如果没有则从 sessionStorage 读取
+    let farmWorkIdsArray = farmWorkIds.value && farmWorkIds.value.length > 0 
+        ? [...farmWorkIds.value] 
+        : (() => {
+            const stored = sessionStorage.getItem("farmWorkIds");
+            return stored ? JSON.parse(stored) : [];
+        })();
+    
+    // 获取 arrangeIds,优先从 sessionStorage 读取
     const arrangeIds = sessionStorage.getItem("arrangeIds");
-    if (farmWorkIds && arrangeIds) {
-        const farmWorkIdsArray = JSON.parse(farmWorkIds);
-        const arrangeIdsArray = JSON.parse(arrangeIds);
-        // 找到当前 farmWorkId 在数组中的索引
-        const currentFarmWorkId = route.query.farmWorkId;
-        const currentIndex = farmWorkIdsArray.findIndex(id => id == currentFarmWorkId);
+    const arrangeIdsArray = arrangeIds ? JSON.parse(arrangeIds) : [];
+    
+    // 找到当前 farmWorkId 在数组中的索引
+    const currentFarmWorkId = route.query.farmWorkId;
+    // 确保类型匹配,都转为字符串进行比较
+    const currentIndex = farmWorkIdsArray.findIndex(id => String(id) === String(currentFarmWorkId));
+    
+    console.log('当前farmWorkId:', currentFarmWorkId);
+    console.log('数组:', farmWorkIdsArray);
+    console.log('当前索引:', currentIndex);
+    
+    if (currentIndex !== -1 && arrangeIdsArray.length > 0) {
+        // 如果数组只有一个元素,删除后就没有了,不需要跳转
+        if (farmWorkIdsArray.length === 1) {
+            return;
+        }
         
-        if (currentIndex !== -1) {
-            // 从数组中删除当前项
-            farmWorkIdsArray.splice(currentIndex, 1);
-            arrangeIdsArray.splice(currentIndex, 1);
-            
-            // 更新 sessionStorage
-            sessionStorage.setItem("farmWorkIds", JSON.stringify(farmWorkIdsArray));
-            sessionStorage.setItem("arrangeIds", JSON.stringify(arrangeIdsArray));
-            
-            // 获取下一个(如果当前索引还在数组范围内,则取当前索引位置的值,否则取第一个)
-            if (farmWorkIdsArray.length > 0 && arrangeIdsArray.length > 0) {
-                const nextIndex = currentIndex < farmWorkIdsArray.length ? currentIndex : 0;
-                const nextFarmWorkId = farmWorkIdsArray[nextIndex];
-                const nextArrangeId = arrangeIdsArray[nextIndex];
-                
-                router.replace({
-                    path: "/modify",
-                    query: {
-                        id: nextArrangeId,
-                        farmWorkId: nextFarmWorkId,
-                        farmId: route.query.farmId,
-                        containerSpaceTimeId: route.query.containerSpaceTimeId,
-                        schemeId: route.query.schemeId,
-                        enabled: 0,
-                        isEdit: true,
-                        onlyPrice: false,
-                        noPrice: true,
-                        isDefault: false,
-                    },
-                });
-                router.reload();
-            }
+        // 判断是否是最后一个(在删除之前判断)
+        const isLast = currentIndex === farmWorkIdsArray.length - 1;
+        
+        // 在删除前确定下一个值:如果是最后一个,取第一个;否则取当前索引+1位置的值
+        let nextFarmWorkId, nextArrangeId;
+        if (isLast) {
+            // 如果是最后一个,删除后取第一个
+            nextFarmWorkId = farmWorkIdsArray[0];
+            nextArrangeId = arrangeIdsArray[0];
+        } else {
+            // 否则取当前索引+1位置的值(原来的下一个)
+            nextFarmWorkId = farmWorkIdsArray[currentIndex + 1];
+            nextArrangeId = arrangeIdsArray[currentIndex + 1];
+        }
+        
+        console.log('是否最后一个:', isLast);
+        console.log('下一个farmWorkId:', nextFarmWorkId);
+        console.log('下一个arrangeId:', nextArrangeId);
+        console.log('当前farmWorkId是否等于下一个:', currentFarmWorkId == nextFarmWorkId);
+        
+        // 从数组中删除当前项
+        farmWorkIdsArray.splice(currentIndex, 1);
+        arrangeIdsArray.splice(currentIndex, 1);
+        
+        // 更新 sessionStorage 和 farmWorkIds.value
+        sessionStorage.setItem("farmWorkIds", JSON.stringify(farmWorkIdsArray));
+        sessionStorage.setItem("arrangeIds", JSON.stringify(arrangeIdsArray));
+        farmWorkIds.value = farmWorkIdsArray;
+        
+        // 使用之前获取的下一个值
+        if (nextFarmWorkId && nextArrangeId) {
+            router.replace({
+                path: "/modify",
+                query: {
+                    id: nextArrangeId,
+                    farmWorkId: nextFarmWorkId,
+                    farmId: route.query.farmId,
+                    containerSpaceTimeId: route.query.containerSpaceTimeId,
+                    schemeId: route.query.schemeId,
+                    enabled: 0,
+                    isEdit: true,
+                    onlyPrice: false,
+                    noPrice: true,
+                    isDefault: false,
+                    farmWorkIds: JSON.stringify(farmWorkIdsArray), // 传递更新后的数组
+                },
+            });
+            setTimeout(() => {
+                window.location.reload();
+            }, 500);
         }
+    } else {
+        console.warn('未找到当前farmWorkId或arrangeIds为空');
     }
     // router.replace({
     //     path: "/modify",