瀏覽代碼

Merge branch 'master' of http://www.sysuimars.cn:3000/feiniao/feiniao-farm-h5

lxf 2 天之前
父節點
當前提交
92102549b2

+ 6 - 1
src/components/popup/activeUploadPopup.vue

@@ -176,8 +176,13 @@ function triggerFarmWork(paramsObj,showSuccess) {
     });
     });
 }
 }
 
 
+function showPopup(data) {
+    handleShow(data)
+}
+
 defineExpose({
 defineExpose({
-    triggerFarmWork
+    triggerFarmWork,
+    showPopup
 })
 })
 
 
 function handleClosed() {
 function handleClosed() {

+ 4 - 5
src/views/old_mini/album_recognize/index.vue

@@ -43,9 +43,9 @@
                     </SwipeItem>
                     </SwipeItem>
                 </Swipe>
                 </Swipe>
             </div>
             </div>
-            <div class="btn-wrap" v-if="!isRecognize">
+            <!-- <div class="btn-wrap" v-if="!isRecognize">
                 <div class="btn share" @click="toConsult">咨询专家</div>
                 <div class="btn share" @click="toConsult">咨询专家</div>
-            </div>
+            </div> -->
         </div>
         </div>
     </div>
     </div>
     <!-- 农事信息弹窗 -->
     <!-- 农事信息弹窗 -->
@@ -116,7 +116,6 @@ const toDetail = (index) => {
 const currentFarmId = localStorage.getItem('selectedFarmId')
 const currentFarmId = localStorage.getItem('selectedFarmId')
 const toConsult = async () => {
 const toConsult = async () => {
     const userId = await getNearStore();
     const userId = await getNearStore();
-    console.log("userId", userId);``
     router.push(`/chat_frame?userId=${userId}&farmId=${currentFarmId}`);
     router.push(`/chat_frame?userId=${userId}&farmId=${currentFarmId}`);
 };
 };
 
 
@@ -152,10 +151,10 @@ async function getNearStore() {
         }
         }
     }
     }
     .detail-content {
     .detail-content {
-        height: calc(100% - 44px - 20px);
+        height: calc(100% - 44px);
         overflow: auto;
         overflow: auto;
         .detail-img {
         .detail-img {
-            height: calc(100% - 100px);
+            height: calc(100% - 34px);
             position: relative;
             position: relative;
             padding: 4px 16px 30px 16px;
             padding: 4px 16px 30px 16px;
             .card-swipe-wrapper {
             .card-swipe-wrapper {

+ 46 - 9
src/views/old_mini/create_farm/index.vue

@@ -173,6 +173,14 @@
             </div>
             </div>
         </div>
         </div>
     </div>
     </div>
+    <!-- 农情采集成功弹窗 -->
+    <tip-popup
+        v-model:show="showSuccessPopup"
+        type="success"
+        text="农情采集成功"
+        @confirm="handlePopupConfirm"
+        @handleClickOverlay="handlePopupConfirm"
+    />
 </template>
 </template>
 
 
 <script setup>
 <script setup>
@@ -185,6 +193,7 @@ import { useStore } from "vuex";
 import { convertPointToArray } from "@/utils/index";
 import { convertPointToArray } from "@/utils/index";
 import { ElMessage } from "element-plus";
 import { ElMessage } from "element-plus";
 import { Checkbox } from "vant";
 import { Checkbox } from "vant";
+import tipPopup from "@/components/popup/tipPopup.vue";
 import wx from "weixin-js-sdk";
 import wx from "weixin-js-sdk";
 import { transformFromGCJToWGS, transformFromWGSToGCJ } from "@/utils/WSCoordinate.js";
 import { transformFromGCJToWGS, transformFromWGSToGCJ } from "@/utils/WSCoordinate.js";
 
 
@@ -195,6 +204,14 @@ const store = useStore();
 const indexMap = new IndexMap();
 const indexMap = new IndexMap();
 const mapContainer = ref(null);
 const mapContainer = ref(null);
 
 
+// 农情采集成功弹窗
+const showSuccessPopup = ref(false);
+
+const handlePopupConfirm = () => {
+    showSuccessPopup.value = false;
+    router.replace(`/home`);
+};
+
 // 标记是否从编辑地图页面确认返回
 // 标记是否从编辑地图页面确认返回
 const isFromEditMap = ref(false);
 const isFromEditMap = ref(false);
 
 
@@ -579,7 +596,6 @@ const submitForm = (formEl) => {
                     store.commit("home/SET_EDIT_FARM_DATA", null); // 清除编辑数据
                     store.commit("home/SET_EDIT_FARM_DATA", null); // 清除编辑数据
                     polygonArr.value = null;
                     polygonArr.value = null;
                     isFromEditMap.value = false;
                     isFromEditMap.value = false;
-                    localStorage.setItem("isGarden", true);
 
 
                     if (route.query.type !== "edit" && curRole == 0) {
                     if (route.query.type !== "edit" && curRole == 0) {
                         localStorage.setItem("selectedFarmId", res.data.id);
                         localStorage.setItem("selectedFarmId", res.data.id);
@@ -591,17 +607,26 @@ const submitForm = (formEl) => {
                     if (fromPage && fromPage !== "details") {
                     if (fromPage && fromPage !== "details") {
                         // 如果是从monitor页面来的
                         // 如果是从monitor页面来的
                         router.replace(`/${fromPage}`);
                         router.replace(`/${fromPage}`);
-                        if (fromPage === "home") {
-                            let showSuccess = false;
-                            if (localStorage.getItem("isGarden") != "true" && curRole == 0) {
-                                showSuccess = true;
-                            }
-                            router.replace(`/home?showSuccess=${showSuccess}`);
-                        }
                     } else if (fromPage === "details") {
                     } else if (fromPage === "details") {
                         router.go(-1);
                         router.go(-1);
                     } else {
                     } else {
-                        router.replace(`/home`);
+                        if(route.query.miniJson) {
+                            const json = JSON.parse(route.query.miniJson);
+                            //上传图片
+                            VE_API.ali.uploadImg({
+                                farmId: res.data.id,
+                                images: json.images,
+                                uploadDate: formatDate(new Date()),
+                            }).then(({ code,msg }) => {
+                                if(code === 0) {
+                                    showSuccessPopup.value = true;
+                                }else{
+                                    ElMessage.error(msg);
+                                }
+                            });
+                        }else{
+                            router.replace(`/home`);
+                        }
                     }
                     }
                 } else {
                 } else {
                     ElMessage.error(res.msg);
                     ElMessage.error(res.msg);
@@ -727,6 +752,18 @@ function getFruitsTypeItemList(parentId) {
     });
     });
 }
 }
 
 
+  /**
+   * 格式化日期为 YYYY-MM-DD 格式
+   * @param {Date} date - 日期对象
+   * @returns {string} 格式化后的日期字符串
+   */
+function formatDate(date) {
+    const year = date.getFullYear()
+    const month = String(date.getMonth() + 1).padStart(2, '0')
+    const day = String(date.getDate()).padStart(2, '0')
+    return `${year}-${month}-${day}`
+}
+
 function backgToHome() {
 function backgToHome() {
     ruleFormRef.value?.resetFields();
     ruleFormRef.value?.resetFields();
 
 

+ 6 - 5
src/views/old_mini/home/components/AgriculturalDynamics.vue

@@ -31,10 +31,10 @@
                             <div class="tag tag-orange">托管客户</div>
                             <div class="tag tag-orange">托管客户</div>
                         </div>
                         </div>
                     </div>
                     </div>
-                    <div class="remind-btn" @click="handleRemind">提醒客户</div>
+                    <div class="remind-btn" @click="handleRemind(item)">提醒客户</div>
                 </div>
                 </div>
                 <!-- 警告通知块 -->
                 <!-- 警告通知块 -->
-                <div class="warning-block" v-html="item.latestPhenologyProgressBroadcast?.content"></div>
+                <div class="warning-block" v-if="item.latestPhenologyProgressBroadcast" v-html="item.latestPhenologyProgressBroadcast?.content"></div>
 
 
                 <div class="timeline">
                 <div class="timeline">
                     <div class="timeline-item" v-for="timelineItem in item.timelineList" :key="timelineItem.id">
                     <div class="timeline-item" v-for="timelineItem in item.timelineList" :key="timelineItem.id">
@@ -105,8 +105,8 @@ const handleTimelineAction = (item) => {
     console.log("转入农事任务", item);
     console.log("转入农事任务", item);
 };
 };
 
 
-const handleRemind = () => {
-    router.push("/remind_customer");
+const handleRemind = (item) => {
+    router.push(`/remind_customer?farmId=${item.farmId}`);
 };
 };
 
 
 onMounted(() => {
 onMounted(() => {
@@ -289,7 +289,7 @@ const getFutureFarmWorkWarning = async (item) => {
                 background-color: rgba(33, 153, 248, 0.1);
                 background-color: rgba(33, 153, 248, 0.1);
                 border-radius: 5px;
                 border-radius: 5px;
                 padding: 5px;
                 padding: 5px;
-                margin: 8px 0;
+                margin-top: 8px;
                 font-size: 12px;
                 font-size: 12px;
                 color: #252525;
                 color: #252525;
                 ::v-deep{
                 ::v-deep{
@@ -302,6 +302,7 @@ const getFutureFarmWorkWarning = async (item) => {
 
 
             .timeline {
             .timeline {
                 margin-left: -5px;
                 margin-left: -5px;
+                margin-top: 8px;
                 .timeline-item {
                 .timeline-item {
                     display: flex;
                     display: flex;
                     align-items: flex-start;
                     align-items: flex-start;

+ 21 - 1
src/views/old_mini/home/subPages/warningDetail.vue

@@ -17,7 +17,7 @@
                 <img :src="warningDetail?.media && warningDetail?.media[0]" alt="荔枝开花图片" />
                 <img :src="warningDetail?.media && warningDetail?.media[0]" alt="荔枝开花图片" />
             </div>
             </div>
 
 
-            <div class="article-box">
+            <div class="article-box" v-if="questInfo.quest">
                 <div class="box-top">
                 <div class="box-top">
                     <img class="icon" src="@/assets/img/home/ask-icon.png" alt="" />
                     <img class="icon" src="@/assets/img/home/ask-icon.png" alt="" />
                     <div class="title">{{ questInfo.quest }}</div>
                     <div class="title">{{ questInfo.quest }}</div>
@@ -30,6 +30,7 @@
                             :class="{ 'primary-btn': item.value != 0 }"
                             :class="{ 'primary-btn': item.value != 0 }"
                             v-for="item in questInfo.answer"
                             v-for="item in questInfo.answer"
                             :key="item.value"
                             :key="item.value"
+                            @click="handleAnswerClick(item)"
                         >
                         >
                             {{ item.name }}
                             {{ item.name }}
                         </div>
                         </div>
@@ -46,6 +47,7 @@
             </div>
             </div>
         </div>
         </div>
     </div>
     </div>
+    <active-upload-popup ref="activeUploadPopupRef" @handleUploadSuccess="handleUploadSuccess"></active-upload-popup>
     <fn-share-sheet v-model:show="showShareSheet" :options="shareOptions" @select="handleShareSelect" />
     <fn-share-sheet v-model:show="showShareSheet" :options="shareOptions" @select="handleShareSelect" />
 </template>
 </template>
 
 
@@ -53,6 +55,7 @@
 import customHeader from "@/components/customHeader.vue";
 import customHeader from "@/components/customHeader.vue";
 import { ref, onActivated } from "vue";
 import { ref, onActivated } from "vue";
 import FnShareSheet from "@/components/pageComponents/FnShareSheet.vue";
 import FnShareSheet from "@/components/pageComponents/FnShareSheet.vue";
+import activeUploadPopup from "@/components/popup/activeUploadPopup.vue";
 import { useRoute } from "vue-router";
 import { useRoute } from "vue-router";
 
 
 const route = useRoute();
 const route = useRoute();
@@ -71,6 +74,7 @@ const showImage = ref(false);
 onActivated(() => {
 onActivated(() => {
     showImage.value = route.query.showImage === "true" ? true : false;
     showImage.value = route.query.showImage === "true" ? true : false;
     isLink.value = localStorage.getItem("curRole") || 0;
     isLink.value = localStorage.getItem("curRole") || 0;
+    // isLink.value = true;
     if (route.query.questInfo) {
     if (route.query.questInfo) {
         const infoObj = JSON.parse(route.query.questInfo);
         const infoObj = JSON.parse(route.query.questInfo);
         questInfo.value = {
         questInfo.value = {
@@ -89,6 +93,22 @@ const getWarningDetail = () => {
         warningDetail.value = res.data || {};
         warningDetail.value = res.data || {};
     });
     });
 };
 };
+
+const activeUploadPopupRef = ref(null);
+const handleAnswerClick = (item) => {
+    if(item.value != 0) {
+        activeUploadPopupRef.value.showPopup({
+            gardenIdVal: route.query.farmId,
+            problemTitleVal: questInfo.value.quest,
+            typeVal: "question",
+            arrangeIdVal: route.query.arrangeId,
+        });
+    }
+};
+
+const handleUploadSuccess = (data) => {
+    console.log("data", data);
+};
 </script>
 </script>
 
 
 <style scoped lang="scss">
 <style scoped lang="scss">

+ 4 - 2
src/views/old_mini/plan/index.vue

@@ -180,7 +180,8 @@ const handleConfirmPlan = () => {
             //选择方案
             //选择方案
             VE_API.home.selectSchemes({ schemeId: active.value ,farmId:res.data.id}).then(({code}) => {
             VE_API.home.selectSchemes({ schemeId: active.value ,farmId:res.data.id}).then(({code}) => {
                 if (code === 0) {
                 if (code === 0) {
-                    showFarmPopup.value = true;
+                    // showFarmPopup.value = true;
+                    handleClickOverlay();
                 } else {
                 } else {
                     ElMessage.error(res.msg || '创建失败');
                     ElMessage.error(res.msg || '创建失败');
                 }
                 }
@@ -235,12 +236,13 @@ const handleClickOverlay = () => {
             border-radius: 8px;
             border-radius: 8px;
             color: #2199f8;
             color: #2199f8;
             box-sizing: border-box;
             box-sizing: border-box;
+            margin-bottom: 10px;
             span {
             span {
                 margin-left: 5px;
                 margin-left: 5px;
             }
             }
         }
         }
         .tabs-list{
         .tabs-list{
-            margin: 10px 0;
+            margin-bottom: 10px;
         }
         }
     }
     }
     .tabs-wrap {
     .tabs-wrap {

+ 17 - 5
src/views/old_mini/task_condition/components/remindCustomer.vue

@@ -1,9 +1,9 @@
 <template>
 <template>
     <div class="service-records-page">
     <div class="service-records-page">
         <custom-header name="提醒客户"></custom-header>
         <custom-header name="提醒客户"></custom-header>
-        <div class="record-list">
+        <div class="record-list" v-if="recordList && recordList.length">
             <div v-for="(item, index) in recordList" :key="index" class="record-card">
             <div v-for="(item, index) in recordList" :key="index" class="record-card">
-                <img class="thumb" :src="item.postInfo.media && item.postInfo.media[0]" alt="农场缩略图" />
+                <img class="thumb" :src="item.postInfo.media && item.postInfo.media[0]" alt="暂无图片" />
                 <div class="card-body" @click="handleItemClick(item)">
                 <div class="card-body" @click="handleItemClick(item)">
                     <div class="card-body-left">
                     <div class="card-body-left">
                         <div class="title van-multi-ellipsis--l2">{{ item.postInfo.title }}</div>
                         <div class="title van-multi-ellipsis--l2">{{ item.postInfo.title }}</div>
@@ -13,15 +13,19 @@
                 </div>
                 </div>
             </div>
             </div>
         </div>
         </div>
+        <div v-else class="empty-wrap">
+            <div class="empty-text">暂无数据</div>
+        </div>
     </div>
     </div>
     <fn-share-sheet v-model:show="showShareSheet" :options="shareOptions" @select="handleShareSelect" />
     <fn-share-sheet v-model:show="showShareSheet" :options="shareOptions" @select="handleShareSelect" />
 </template>
 </template>
 <script setup>
 <script setup>
 import { ref, onMounted } from "vue";
 import { ref, onMounted } from "vue";
 import customHeader from "@/components/customHeader.vue";
 import customHeader from "@/components/customHeader.vue";
-import { useRouter } from "vue-router";
+import { useRouter, useRoute } from "vue-router";
 import FnShareSheet from "@/components/pageComponents/FnShareSheet.vue";
 import FnShareSheet from "@/components/pageComponents/FnShareSheet.vue";
 const router = useRouter();
 const router = useRouter();
+const route = useRoute();
 // 服务记录列表数据
 // 服务记录列表数据
 const recordList = ref([]);
 const recordList = ref([]);
 const showShareSheet = ref(false);
 const showShareSheet = ref(false);
@@ -37,7 +41,7 @@ onMounted(() => {
 });
 });
 
 
 const getListWithAnswer = async () => {
 const getListWithAnswer = async () => {
-    const { data } = await VE_API.user.listWithAnswer({farmId:'93684'});
+    const { data } = await VE_API.user.listWithAnswer({farmId:route.query.farmId});
     if (data.length) {
     if (data.length) {
         recordList.value = data
         recordList.value = data
     }
     }
@@ -58,7 +62,7 @@ const handleItemClick = (data) => {
         quest: data.quest,
         quest: data.quest,
         answer: data.answerOptions,
         answer: data.answerOptions,
     }
     }
-    router.push(`/warning_detail?id=${data.postInfo.postId}&questInfo=${JSON.stringify(questInfo)}`);
+    router.push(`/warning_detail?id=${data.postInfo.postId}&questInfo=${JSON.stringify(questInfo)}&arrangeId=${data.arrangeId}`);
 };
 };
 </script>
 </script>
 <style lang="scss" scoped>
 <style lang="scss" scoped>
@@ -114,5 +118,13 @@ const handleItemClick = (data) => {
             font-size: 12px;
             font-size: 12px;
         }
         }
     }
     }
+    .empty-wrap{
+        padding-top: 40px;
+        text-align: center;
+        .empty-text{
+            font-size: 14px;
+            color: #86909C;
+        }
+    }
 }
 }
 </style>
 </style>