Bläddra i källkod

feat:添加多一个转发条件判断

wangsisi 2 dagar sedan
förälder
incheckning
acdc6d7d6c

+ 13 - 1
src/components/chatWindow.vue

@@ -330,6 +330,9 @@ watch(
                         const imgArr = JSON.parse(params.executeEvidence);
                         message.coverUrl = imgArr[imgArr.length - 1];
                     }
+                    if(params.imageList.length) {
+                        message.coverUrl = params.imageList[params.imageList.length - 1].cloudFilename;
+                    }
                     
                     if(params.type === 'quotation') {
                         message.cardType = 'quotation';
@@ -340,7 +343,16 @@ watch(
                         }
                         message.linkUrl = `/completed_work?json=${JSON.stringify(jsonParams)}`;
                     }
-                    
+
+                    if(params.type === 'remindExecute') {
+                        const jsonParams = {
+                            id:params.id,
+                            farmWorkOrderId:params.farmWorkOrderId
+                        }
+                        message.title = '请您尽快执行 ' + params.farmWorkName + ' 农事';
+                        message.cardType = 'remindExecute';
+                        message.linkUrl = `/completed_work?json=${JSON.stringify(jsonParams)}`;
+                    }
                     sendMessage(message);
                     
                     // 清除路由中的 pageParams 参数

+ 67 - 4
src/components/recordItem.vue

@@ -32,15 +32,19 @@
                         {{ recordItemData.reCheckText || '暂无复核成效' }}
                     </div>
                 </div>
-                <div class="review-image" v-if="recordItemData.beforeImage || recordItemData.afterImage">
-                    <div class="image-wrapper" v-if="recordItemData.beforeImage">
+                <div class="review-image">
+                    <!-- <div class="image-wrapper" v-if="recordItemData.beforeImage">
                         <span class="image-label">农事前</span>
                         <img :src="recordItemData.beforeImage" alt="" />
+                    </div> -->
+                    <div class="image-wrapper">
+                        <span class="image-label">农事前</span>
+                        <img :src="currentImageUrl" alt="" />
                     </div>
-                    <div class="image-wrapper" v-if="recordItemData.afterImage">
+                    <!-- <div class="image-wrapper" v-if="recordItemData.afterImage">
                         <span class="image-label">农事后</span>
                         <img :src="recordItemData.afterImage" alt="" />
-                    </div>
+                    </div> -->
                 </div>
             </div>
         </div>
@@ -138,6 +142,8 @@
 </template>
 
 <script setup>
+import { ref, computed, watch } from 'vue';
+import { base_img_url2 } from '@/api/config';
 const props = defineProps({
     onlyRecipeName: {
         type: Boolean,
@@ -197,6 +203,63 @@ const getFarmTypeText = (type) => {
     if (value === 2 || value === "2") return "建议农事";
     return "";
 };
+
+// 使用响应式对象存储图片 URL
+const imageUrlMap = ref({});
+// 存储正在加载的 ID,避免重复请求
+const loadingIds = ref(new Set());
+
+// 获取图片 URL 的函数
+const fetchImageUrl = (id) => {
+    // 如果 id 不存在或已经在加载中,直接返回
+    if (!id || loadingIds.value.has(id)) {
+        return;
+    }
+    
+    // 如果已经有缓存的 URL,直接返回
+    if (imageUrlMap.value[id]) {
+        return;
+    }
+    
+    // 标记为加载中
+    loadingIds.value.add(id);
+    
+    // 发起异步请求获取图片 URL
+    VE_API.z_farm_work_record.getTriggerImg({ farmWorkRecordId: id }).then(({ data }) => {
+        if(data && data.length > 0){
+            const url = base_img_url2 + data[data.length - 1].cloudFilename;
+            // 更新响应式数据,这样模板会自动更新
+            imageUrlMap.value[id] = url;
+        } else {
+            imageUrlMap.value[id] = '';
+        }
+    }).catch(() => {
+        // 请求失败时,设置为空字符串避免重复请求
+        imageUrlMap.value[id] = '';
+    }).finally(() => {
+        // 清除加载标记
+        loadingIds.value.delete(id);
+    });
+}
+
+// 计算属性:根据 recordItemData.id 获取图片 URL(响应式)
+const currentImageUrl = computed(() => {
+    const id = props.recordItemData?.id;
+    if (id) {
+        // 触发获取图片 URL(如果还没有获取过)
+        fetchImageUrl(id);
+        // 直接返回响应式数据,Vue 会自动追踪变化
+        return imageUrlMap.value[id] || '';
+    }
+    return '';
+});
+
+// 监听 recordItemData.id 的变化,确保 ID 变化时重新获取
+watch(() => props.recordItemData?.id, (newId) => {
+    if (newId && !imageUrlMap.value[newId] && !loadingIds.value.has(newId)) {
+        fetchImageUrl(newId);
+    }
+}, { immediate: true });
 </script>
 
 <style lang="scss" scoped>

+ 14 - 0
src/views/old_mini/create_farm/index.vue

@@ -407,6 +407,10 @@ const handleSearchRes = (v) => {
     centerPoint.value = `POINT (${coordinateArray[0]} ${coordinateArray[1]})`;
     ruleForm.address = v.item?.title || v.item?.address;
     pointAddress.value = v.item?.province + v.item?.city + v.item?.district;
+    // 更新farmCity以便后续更新农场名称
+    farmCity.value = v.item?.city + v.item?.district || '';
+    // 地址修改后,如果满足条件则自动更新农场名称
+    updateFarmNameIfNeeded();
 };
 
 // 表单
@@ -583,6 +587,8 @@ function getLocationName(location) {
         ruleForm.address = add;
         pointAddress.value = result.address;
         farmCity.value = result.address_component?.city + result.address_component?.district || '';
+        // 地址修改后,如果满足条件则自动更新农场名称
+        updateFarmNameIfNeeded();
     });
 }
 
@@ -672,6 +678,14 @@ function handleFarmNameInput() {
     isFarmNameManuallyModified.value = true;
 }
 
+// 根据地址更新农场名称(如果满足条件)
+function updateFarmNameIfNeeded() {
+    // 只有在创建模式下且用户没有手动修改过农场名称且已选择品类时,才自动更新农场名称
+    if (route.query.type !== 'edit' && !isFarmNameManuallyModified.value && ruleForm.speciesItem && farmCity.value) {
+        ruleForm.name = farmCity.value + ruleForm.speciesItem.name + "农场";
+    }
+}
+
 // 回填编辑数据
 function populateEditData() {
     const editData = store.state.home.editFarmData;

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 63 - 1112
src/views/old_mini/monitor/subPages/reviewResults.vue


+ 6 - 2
src/views/old_mini/task_condition/components/uploadExecute.vue

@@ -76,8 +76,14 @@ function handleConfirm() {
 
 const showShare = ref(false);
 const onSelect = async ({type}) => {
+    if(farmData.value.type === 'remindExecute' || farmData.value.type === 'remindUser') {
+        await getTriggerImg();
+    }
     if(type === 'birdseye') {
         if(farmData.value.farmMiniUserId){
+            if(triggerImg.value.length) {
+                farmData.value.imageList = triggerImg.value;
+            }
             router.push(`/chat_frame?userId=${farmData.value.farmMiniUserId}&name=${farmData.value.farmMiniUserName}&farmId=${farmData.value.farmId}&pageParams=${JSON.stringify(farmData.value)}`);
         }else{
             ElMessage.warning('尚未绑定用户,暂时无法分享')
@@ -89,13 +95,11 @@ const onSelect = async ({type}) => {
                 url: `/pages/subPages/share_page/index?pageParams=${JSON.stringify(query)}&type=priceSheet`,
             });
         } else if (farmData.value.type === 'remindExecute') {
-            await getTriggerImg();
             const query = { askInfo: {title: "提醒执行", content: "是否分享该提示给好友"}, shareText: " 请您尽快执行" + farmData.value.farmWorkName + "农事", id: farmData.value.id, farmWorkOrderId: farmData.value.orderId, postImg: triggerImg.value.length ? base_img_url2 + triggerImg.value[triggerImg.value.length - 1].cloudFilename : '' }
             wx.miniProgram.navigateTo({
                 url: `/pages/subPages/share_page/index?pageParams=${JSON.stringify(query)}&type=priceSheet`,
             });
         } else if (farmData.value.type === 'remindUser') {
-            await getTriggerImg();
             const query = { askInfo: {title: "提醒拍照", content: "是否分享该提示给好友"}, shareText: " 请您尽快执行" + farmData.value.farmWorkName + "农事", id: farmData.value.id, farmWorkOrderId: farmData.value.orderId, postImg: triggerImg.value.length ? base_img_url2 + triggerImg.value[triggerImg.value.length - 1].cloudFilename : '' }
             wx.miniProgram.navigateTo({
                 url: `/pages/subPages/share_page/index?pageParams=${JSON.stringify(query)}&type=priceSheet`,

Vissa filer visades inte eftersom för många filer har ändrats