2 Incheckningar 680d6cd0a5 ... 563faa93cb

Upphovsman SHA1 Meddelande Datum
  lxf 563faa93cb Merge branch 'master' of http://www.sysuimars.cn:3000/feiniao/feiniao-farm-h5 3 dagar sedan
  lxf 160a85ceb5 fix: 修改水印,执行人样式 3 dagar sedan

+ 4 - 2
src/components/album_compoents/albumDrawBox.vue

@@ -464,14 +464,16 @@ function drawBottomTextOverlay(ctx, w, h) {
     const nameWidth = ctx.measureText(workNameText).width;
     ctx.font = "10px sans-serif";
     const gap = 8;
-    ctx.fillText(farmNameText, paddingX + nameWidth + gap, firstLineY);
+    ctx.fillText(' |  ', paddingX + nameWidth + gap, firstLineY);
+    ctx.drawImage(imageCache.get("address"), paddingX + nameWidth + gap + 10, firstLineY - 8, 10, 10);
+    ctx.fillText(farmNameText, paddingX + nameWidth + gap + 22, firstLineY);
 
     // 第一行(最上)的 baseline 在整个"第二行块"之上 17px
     y = firstLineY - 20;
     ctx.font = "12px PangMenZhengDao";
     const timeText = props.imgData?.executeDate;
     ctx.fillText(timeText, paddingX, y);
-    const executorText = "执行人:" + props.imgData?.executeName;
+    const executorText = " |   执行人:" + props.imgData?.executeName;
     ctx.font = "10px sans-serif";
     ctx.fillText(executorText, paddingX + 90, y);
 

+ 3 - 3
src/components/popup/activeUploadPopup.vue

@@ -182,9 +182,9 @@ const executorId = ref(null);
 const needReview = ref(null);
 const reviewDay = ref(null);
 const roleMap = ref({
-    0: "超级管理员",
-    1: "项目管理员",
-    2: "普通成员",
+    1: "超级管理员",
+    2: "项目管理员",
+    3: "普通成员",
 });
 // 选择当前物候期
 const currentPhenologyId = ref(null);

+ 64 - 2
src/components/taskItem.vue

@@ -59,10 +59,16 @@
                         <span class="value">{{ prescriptionText }}</span>
                     </div>
                 </div>
+                <div class="desc-info" v-if="itemIndex === 1">
+                    <div class="desc-info-item">
+                        <span>复核时间:</span>
+                        <span class="value">{{ itemData?.reviewDate }}</span>
+                    </div>
+                </div>
                 <div class="desc-info" v-if="itemIndex === 2">
                     <div class="desc-info-item">
                         <span>复核时间:</span>
-                        <span class="value">{{ itemData?.executeDate }}</span>
+                        <span class="value">{{ reviewDate }}</span>
                     </div>
                 </div>
                 <div class="desc-info" v-if="itemIndex === 2 && !itemData.reviewImage?.length && daysDiff > 0">
@@ -73,7 +79,37 @@
                         >
                     </div>
                 </div>
-                <div class="review-image" v-if="itemData?.executeEvidenceList?.length">
+                <div v-if="itemIndex === 1 && itemData.reviewImage?.length" class="review-image two-image">
+                    <!-- 第一张:执行照片 -->
+                    <div class="review-image-item" v-if="itemData.executeEvidenceList?.length">
+                        <photo-provider :photo-closable="true">
+                            <photo-consumer
+                                :key="itemData.executeEvidenceList[0]"
+                                :src="base_img_url2 + itemData.executeEvidenceList[0]"
+                            >
+                                <div class="review-image-item-title">执行照片</div>
+                                <div class="img-item">
+                                    <img :src="base_img_url2 + itemData.executeEvidenceList[0] + resize" class="view-box" />
+                                </div>
+                            </photo-consumer>
+                        </photo-provider>
+                    </div>
+                    <!-- 第二张:复核照片 -->
+                    <div class="review-image-item" v-if="itemData.reviewImage?.length">
+                        <photo-provider :photo-closable="true">
+                            <photo-consumer
+                                :key="itemData.reviewImage[0]"
+                                :src="base_img_url2 + itemData.reviewImage[0]"
+                            >
+                                <div class="review-image-item-title">复核照片</div>
+                                <div class="img-item">
+                                    <img :src="base_img_url2 + itemData.reviewImage[0] + resize" class="view-box" />
+                                </div>
+                            </photo-consumer>
+                        </photo-provider>
+                    </div>
+                </div>
+                <div class="review-image" v-else-if="itemData?.executeEvidenceList?.length">
                     <div class="review-image-item">
                         <photo-provider :photo-closable="true">
                             <photo-consumer
@@ -200,6 +236,26 @@ const daysDiff = computed(() => {
     return diffDays;
 });
 
+// 计算复核时间:executeDate + reviewIntervalDays
+const reviewDate = computed(() => {
+    if (!props.itemData?.executeDate) {
+        return "--";
+    }
+
+    const executeDate = new Date(props.itemData.executeDate);
+    const reviewIntervalDays = Number(props.itemData?.reviewIntervalDays || 0);
+
+    // 将执行日期加上间隔天数
+    executeDate.setDate(executeDate.getDate() + reviewIntervalDays);
+
+    // 格式化为 YYYY-MM-DD
+    const year = executeDate.getFullYear();
+    const month = String(executeDate.getMonth() + 1).padStart(2, "0");
+    const day = String(executeDate.getDate()).padStart(2, "0");
+
+    return `${year}-${month}-${day}`;
+});
+
 const remindUser = () => {
     uploadExecuteRef.value.showPopup({ ...props.itemData, type: "remindUser" });
 };
@@ -590,6 +646,12 @@ const toDetail = (status, id, farmWorkId) => {
             padding-top: 10px;
         }
 
+        .two-image {
+            display: flex;
+            align-items: center;
+            gap: 8px;
+        }
+
         .review-image {
             padding-top: 6px;
             .review-image-item {

+ 10 - 10
src/views/old_mini/modify_work/addWork.vue

@@ -82,7 +82,7 @@
                                 </div>
                             </div>
                         </div>
-                        <div class="interact-form-item" data-interact-field="interactionTime">
+                        <!-- <div class="interact-form-item" data-interact-field="interactionTime">
                             <div class="form-label">互动日期</div>
                             <div class="form-input-wrapper">
                                 <el-date-picker
@@ -93,7 +93,7 @@
                                     :editable="false"
                                 />
                             </div>
-                        </div>
+                        </div> -->
                         <div class="interact-form-item" data-interact-field="interactionQuestion">
                             <div class="form-label">互动问题</div>
                             <el-input
@@ -348,7 +348,7 @@ const tagName = ref("");
 const interactFormData = ref({
     phenologyId: "",
     reproductiveId: "",
-    interactionTime: "",
+    // interactionTime: "",
     interactionQuestion: "",
 });
 const phenologyList = ref([]);
@@ -759,7 +759,7 @@ const getFarmWorkArrangeDetail = async (id) => {
         interactFormData.value = {
             phenologyId: data.phenologyId || "",
             reproductiveId: data.reproductiveId || "",
-            interactionTime: data.interactionTime || "",
+            // interactionTime: data.interactionTime || "",
             interactionQuestion: data.interactionQuestion || "",
         };
     }
@@ -801,10 +801,10 @@ const validateInteractForm = () => {
         ElMessage.warning("请选择互动阶段");
         return false;
     }
-    if (!interactFormData.value.interactionTime) {
-        ElMessage.warning("请选择互动时间");
-        return false;
-    }
+    // if (!interactFormData.value.interactionTime) {
+    //     ElMessage.warning("请选择互动时间");
+    //     return false;
+    // }
     if (!interactFormData.value.interactionQuestion?.trim()) {
         ElMessage.warning("请设置互动问题");
         return false;
@@ -818,7 +818,7 @@ const handleSaveInteract = async (id) => {
         farmWorkId: id,
         schemeId: route.query.schemeId,
         ...interactFormData.value,
-        interactionTime: formatInteractDate(interactFormData.value.interactionTime),
+        // interactionTime: formatInteractDate(interactFormData.value.interactionTime),
     };
 
     try {
@@ -851,7 +851,7 @@ const handleDeleteInteract = () => {
                 interactFormData.value = {
                     phenologyId: "",
                     reproductiveId: "",
-                    interactionTime: "",
+                    // interactionTime: "",
                     interactionQuestion: "",
                 };
             } else {

+ 0 - 1
src/views/old_mini/modify_work/completedWork.vue

@@ -500,7 +500,6 @@ const getFarmWorkArrangeDetail = (id) => {
 // 药肥费用总计:∑(单价 * 单亩用量 * 亩数)
 const pesticideCostTotal = computed(() => {
     const list = settingData();
-    console.log("list", list);
     const area = Number(detailData.value?.area || 0);
     if (!list.length || !area) return 0;