Browse Source

feat:对接我的消息接口和修改农场详情,修改其他页面bug

wangsisi 1 tuần trước cách đây
mục cha
commit
991f214db2

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

@@ -93,4 +93,9 @@ module.exports = {
         url: config.base_dev_url + "z_farm_work_lib/ignoreFarmWorkLib",
         type: "get",
     },
+    //回答问题
+    answerQuestion: {
+        url: config.base_dev_url + "container_farm_work_arrange/answerQuestion",
+        type: "post",
+    },
 }

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

@@ -54,4 +54,9 @@ module.exports = {
         url: config.base_dev_url + "z_farm_work_record/getSimpleList",
         type: "get",
     },
+    //通知列表
+    listNotice: {
+        url: config.base_dev_url + "mini_notification/page/{page}/{limit}",
+        type: "get",
+    },
 }

+ 1 - 1
src/api/modules/user.js

@@ -38,7 +38,7 @@ module.exports = {
     },
     //查询农场当前问卷问题接口
     listWithAnswer: {
-        url: config.base_dev_url + "work_code/phenology/quest/listWithAnswer",
+        url: config.base_dev_url + "container_farm_work_arrange/listWithAnswer",
         type: "get",
     },
 }

+ 1 - 1
src/components/pageComponents/FarmInfoCard.vue

@@ -18,7 +18,7 @@
                             >
                             <span
                                 class="tag"
-                                :class="data.className || 'tag-role'"
+                                :class="data.className || data.area ? 'tag-gray' : 'tag-role'"
                                 v-show="data.area || data.userType"
                                 >{{ data.area || data.userType }}</span
                             >

+ 9 - 8
src/components/popup/activeUploadPopup.vue

@@ -180,15 +180,16 @@ function handleShow({
     phenologyList.value = phenologyListVal;
     // 重置上传状态
     isUploading.value = false;
-
-    // 如果没有报价信息,则跳转去完善报价信息
-    VE_API.monitor.validatePesticideFertilizerQuotes({ id: farmWorkIdVal, schemeId: schemeIdVal }).then((res) => {
-        if (res.code === 0) {
-            if (res.data.length === 0) {
-                router.push(`/modify?farmWorkId=${farmWorkIdVal}&schemeId=${schemeIdVal}&onlyPrice=true`);
+    if(typeVal !== "question"){
+        // 如果没有报价信息,则跳转去完善报价信息
+        VE_API.monitor.validatePesticideFertilizerQuotes({ id: farmWorkIdVal, schemeId: schemeIdVal }).then((res) => {
+            if (res.code === 0) {
+                if (res.data.length === 0) {
+                    router.push(`/modify?farmWorkId=${farmWorkIdVal}&schemeId=${schemeIdVal}&onlyPrice=true`);
+                }
             }
-        }
-    });
+        });
+    }
 }
 
 function handleSuccess() {

+ 3 - 1
src/components/recordItem.vue

@@ -406,7 +406,6 @@ const handleTitleRightClick = (recordItemData) => {
     // 服务详情模式样式
     .service-detail-content {
         .content-info {
-            padding-top: 8px;
             .info-line {
                 font-size: 12px;
                 color: #bbbbbb;
@@ -449,6 +448,9 @@ const handleTitleRightClick = (recordItemData) => {
                 }
             }
         }
+        .content-info + .content-info {
+            margin-top: 8px;
+        }
     }
 }
 </style>

+ 3 - 1
src/views/old_mini/home/components/AgriculturalDynamics.vue

@@ -32,7 +32,7 @@
                             <div class="farm-name">{{ item.farmName }}</div>
                             <div class="tag-group">
                                 <div class="tag tag-blue">{{ item.typeName }}</div>
-                                <div class="tag tag-orange">托管客户</div>
+                                <div class="tag" :class="{'tag-orange': item.userType === 2}">{{ item.userType === 1 ? '普通客户' : '托管客户' }}</div>
                             </div>
                         </div>
                         <div class="remind-btn" @click="handleRemind(item)">提醒客户</div>
@@ -278,6 +278,8 @@ const getFutureFarmWorkWarning = async (item) => {
                             padding: 2px 8px;
                             border-radius: 2px;
                             font-size: 12px;
+                            color: #848282;
+                            background-color: rgba(148, 148, 148, 0.1);
 
                             &.tag-blue {
                                 background-color: #e8f3ff;

+ 113 - 87
src/views/old_mini/home/subPages/warningDetail.vue

@@ -17,25 +17,38 @@
                 <img :src="warningDetail?.media && warningDetail?.media[0]" alt="荔枝开花图片" />
             </div>
 
-            <div class="article-box" v-if="questInfo.quest">
+            <div class="article-box" v-if="pageParams.questTitle">
                 <div class="box-top">
                     <img class="icon" src="@/assets/img/home/ask-icon.png" alt="" />
-                    <div class="title">{{ questInfo.quest }}</div>
+                    <div class="title">{{ pageParams.questTitle }}</div>
                 </div>
-                <div class="box-bottom" :style="{ justifyContent: !isLink ? 'center' : 'flex-end' }">
-                    <div class="edit-btn" v-if="!isLink">编辑问题</div>
+                <div class="answer-text" v-if="pageParams.answer != null">
+                    <span v-if="pageParams.answer == 0">答:暂未出现{{ pageParams.expectedRisk }}</span>
                     <template v-else>
-                        <div
-                            class="edit-btn"
-                            :class="{ 'primary-btn': item.value != 0 }"
-                            v-for="item in questInfo.answer"
-                            :key="item.value"
-                            @click="handleAnswerClick(item)"
-                        >
-                            {{ item.name }}
+                        <div>答:{{pageParams.occurrenceTime}}已出现{{ pageParams.expectedRisk }}</div>
+                        <div class="photo-img-wrap">
+                            <photo-provider :photo-closable="true">
+                                <photo-consumer
+                                    v-for="(src, index) in pageParams.imagePaths"
+                                    intro="风险照片"
+                                    :key="index"
+                                    :src="base_img_url2 + src"
+                                >
+                                    <div class="photo-img">
+                                        <img :src="base_img_url2 + src + resize_300" />
+                                    </div>
+                                </photo-consumer>
+                            </photo-provider>
                         </div>
                     </template>
                 </div>
+                <div v-else class="box-bottom" :style="{ justifyContent: !isLink ? 'center' : 'flex-end' }">
+                    <div class="edit-btn" v-if="!isLink">编辑问题</div>
+                    <template v-else>
+                        <div class="edit-btn" @click="handleAnswerClick(0)">否</div>
+                        <div class="edit-btn primary-btn" @click="handleAnswerClick(1)">是</div>
+                    </template>
+                </div>
             </div>
 
             <div class="article-text">
@@ -82,6 +95,7 @@ import { base_img_url2, resize_300 } from "@/api/config";
 import FnShareSheet from "@/components/pageComponents/FnShareSheet.vue";
 import activeUploadPopup from "@/components/popup/activeUploadPopup.vue";
 import { useRoute, useRouter } from "vue-router";
+import { ElMessage } from "element-plus";
 import wx from "weixin-js-sdk";
 
 const route = useRoute();
@@ -91,10 +105,10 @@ const shareOptions = ref([{ name: "微信", icon: "wechat", type: "wechat" }]);
 const handleShareSelect = () => {
     const query = {
         askInfo: { title: "提醒客户", content: "是否分享该提醒给好友" },
-        shareText: warningDetail.value.title,
+        shareText: pageParams.value.questTitle,
         targetUrl: `warning_detail`,
         paramsPage: JSON.stringify(route.query),
-        imageUrl: "https://birdseye-img.sysuimars.com/birdseye-look-mini/invite_bg.png",
+        imageUrl: warningDetail.value.media[0],
     };
     wx.miniProgram.navigateTo({
         url: `/pages/subPages/share_page/index?pageParams=${JSON.stringify(query)}&type=sharePage`,
@@ -102,58 +116,44 @@ const handleShareSelect = () => {
 };
 
 const isLink = ref(true);
-const questInfo = ref({});
 const warningDetail = ref({});
 const showImage = ref(false);
+const pageParams = ref({});
 
-const questId = ref(null);
-const farmId = ref(null);
 onActivated(() => {
     showImage.value = route.query.showImage === "true" ? true : false;
     isLink.value = localStorage.getItem("SET_USER_CUR_ROLE") == 2 ? false : true;
     // isLink.value = true;
-    console.log("route.query", route.query);
-    if(route.query.miniJson){
+    if (route.query.miniJson) {
         const miniJson = JSON.parse(route.query.miniJson);
-        const data = JSON.parse(miniJson.paramsPage);
-        console.log("data", data);
-        questId.value = data.id;
-        farmId.value = data.farmId;
-        if (data.questInfo) {
-            const infoObj = JSON.parse(data.questInfo);
-            questInfo.value = {
-                quest: infoObj.quest,
-                answer: JSON.parse(infoObj.answer),
-            };
-        }
-    }else{
-        questId.value = route.query.id;
-        farmId.value = route.query.farmId;
-        if (route.query.questInfo) {
-            const infoObj = JSON.parse(route.query.questInfo);
-            questInfo.value = {
-                quest: infoObj.quest,
-                answer: JSON.parse(infoObj.answer),
-            };
-        }
-    }
-    if (route.query.questInfo) {
-        const infoObj = JSON.parse(route.query.questInfo);
-        questInfo.value = {
-            quest: infoObj.quest,
-            answer: JSON.parse(infoObj.answer),
-        };
-    }
-    if(isLink.value){
-        // 获取图片数据
-        getFarmPhoto();
+        pageParams.value = JSON.parse(miniJson.paramsPage);
+    } else {
+        pageParams.value = route.query;
     }
+    getAnswer();
+    // 获取图片数据
+    getFarmPhoto();
     getWarningDetail();
 });
 
+const getAnswer = () => {
+    VE_API.farm
+        .getFarmWorkArrangeDetail({
+            id: pageParams.value.arrangeId,
+        })
+        .then((res) => {
+            if (res.code === 0) {
+                pageParams.value.answer = res.data.answer;
+                pageParams.value.expectedRisk = res.data.expectedRisk;
+                pageParams.value.imagePaths = res.data.imagePaths;
+                pageParams.value.occurrenceTime = res.data.occurrenceTime;
+            }
+        });
+};
+
 const getWarningDetail = () => {
     const params = {
-        id: questId.value,
+        id: pageParams.value.id,
     };
     VE_API.home.warningDetail(params).then((res) => {
         warningDetail.value = res.data || {};
@@ -161,19 +161,42 @@ const getWarningDetail = () => {
 };
 
 const activeUploadPopupRef = ref(null);
-const handleAnswerClick = (item) => {
-    if (item.value != 0) {
+const handleAnswerClick = (value) => {
+    if (value) {
         activeUploadPopupRef.value.showPopup({
-            gardenIdVal: farmId.value,
-            problemTitleVal: questInfo.value.quest,
+            gardenIdVal: pageParams.value.farmId,
+            problemTitleVal: pageParams.value.questTitle,
             typeVal: "question",
             arrangeIdVal: route.query.arrangeId,
         });
+    } else {
+        handleAnswer(0);
     }
 };
 
+const uploadParams = ref({});
 const handleUploadSuccess = (data) => {
-    console.log("data", data);
+    uploadParams.value = {
+        occurrenceTime: data.executeDate,
+        imagePaths: data.imagePaths,
+    };
+    handleAnswer(1);
+};
+
+const handleAnswer = (value) => {
+    VE_API.home
+        .answerQuestion({
+            ...uploadParams.value,
+            arrangeId: pageParams.value.arrangeId,
+            answer: value,
+            farmId: pageParams.value.farmId,
+        })
+        .then((res) => {
+            if (res.code === 0) {
+                ElMessage.success("回答成功");
+                getAnswer();
+            }
+        });
 };
 
 const cropAlbum = ref([]);
@@ -182,7 +205,7 @@ const getFarmPhoto = async () => {
     try {
         // 先获取有图片的日期列表
         const dateParams = {
-            farmId: farmId.value,
+            farmId: pageParams.value.farmId,
             pageIndex: 0,
             limit: 10,
         };
@@ -200,11 +223,11 @@ const getFarmPhoto = async () => {
         while (result.length < 3 && dateIndex < dateList.length) {
             const currentDate = dateList[dateIndex];
             const imgParams = {
-                farmId: farmId.value,
+                farmId: pageParams.value.farmId,
                 date: currentDate,
             };
             const { data } = await VE_API.farm.getImageInfo(imgParams);
-            const images = (data && Array.isArray(data.images)) ? data.images : [];
+            const images = data && Array.isArray(data.images) ? data.images : [];
 
             images.forEach((item) => {
                 if (result.length < 3) {
@@ -227,7 +250,7 @@ const getFarmPhoto = async () => {
 };
 
 const handleSeeMore = () => {
-    router.push(`/farm_photo?farmId=${farmId.value}`);
+    router.push(`/farm_photo?farmId=${pageParams.value.farmId}`);
 };
 </script>
 
@@ -290,50 +313,50 @@ const handleSeeMore = () => {
             }
         }
 
-        .photo-img-wrap-container{
+        .photo-img-wrap-container {
             padding: 10px;
             border-radius: 5px;
             border: 1px solid rgba(233, 233, 233, 0.5);
-            .photo-img-wrap-title{
+            .photo-img-wrap-title {
                 display: flex;
                 align-items: center;
                 justify-content: space-between;
                 font-size: 16px;
-                margin-bottom: 10px;
-                .title-text{
+                .title-text {
                     display: flex;
                     align-items: center;
                     gap: 4px;
                 }
-                .more{
+                .more {
                     color: rgba(0, 0, 0, 0.6);
                     font-size: 12px;
                 }
             }
-            .photo-img-wrap {
-                display: flex;
-                flex-wrap: wrap;
-                gap: 10px;
-                ::v-deep {
-                    .PhotoConsumer {
-                        width: 31%;
-                        height: 92px;
-                    }
+        }
+        .photo-img-wrap {
+            display: flex;
+            flex-wrap: wrap;
+            gap: 10px;
+            margin-top: 8px;
+            ::v-deep {
+                .PhotoConsumer {
+                    width: 31%;
+                    height: 92px;
                 }
-                .photo-img {
+            }
+            .photo-img {
+                width: 100%;
+                height: 100%;
+                position: relative;
+                box-sizing: border-box;
+                border: 2px solid transparent;
+                border-radius: 8px;
+                overflow: hidden;
+                img {
                     width: 100%;
                     height: 100%;
-                    position: relative;
-                    box-sizing: border-box;
-                    border: 2px solid transparent;
                     border-radius: 8px;
-                    overflow: hidden;
-                    img {
-                        width: 100%;
-                        height: 100%;
-                        border-radius: 8px;
-                        object-fit: cover;
-                    }
+                    object-fit: cover;
                 }
             }
         }
@@ -358,7 +381,10 @@ const handleSeeMore = () => {
                     font-weight: 600;
                 }
             }
-
+            .answer-text {
+                color: #333333;
+                margin-top: 6px;
+            }
             .box-bottom {
                 display: flex;
                 justify-content: flex-end;

+ 117 - 37
src/views/old_mini/mine/pages/message.vue

@@ -1,51 +1,120 @@
 <template>
     <div class="message-page">
         <custom-header name="我的消息" bgColor="#f7f7f7"></custom-header>
-        <div class="message-list">
-            <div class="message-item" v-for="(item, index) in messageList" :key="index" @click="handleItem(item)">
-                <div class="message-content">
-                    <div class="title">{{ item.title }}</div>
-                    <div class="desc">{{ item.desc }}</div>
-                    <div class="footer">
-                        <div class="footer-left">
-                            <span class="view-detail">查看详情</span>
-                            <span class="date">{{ item.date }}</span>
+        <List
+            v-model:loading="loading"
+            :finished="finished"
+            finished-text="没有更多了"
+            @load="onLoad"
+            :immediate-check="false"
+        >
+            <div class="message-list">
+                <div class="message-item" v-for="(item, index) in messageList" :key="index" @click="handleItem(item)">
+                    <div class="message-content">
+                        <div class="title">{{ item.title }}</div>
+                        <div class="desc">{{ item.desc }}</div>
+                        <div class="footer">
+                            <div class="footer-left">
+                                <span class="view-detail">查看详情</span>
+                                <span class="date">{{ formatDate(item.createDate) }}</span>
+                            </div>
+                            <el-icon class="arrow-icon"><ArrowRight /></el-icon>
                         </div>
-                        <el-icon class="arrow-icon"><ArrowRight /></el-icon>
                     </div>
                 </div>
             </div>
-        </div>
+        </List>
     </div>
 </template>
 
 <script setup>
-import { ref } from "vue";
+import { ref, onMounted } from "vue";
 import { useRouter } from "vue-router";
 import { ArrowRight } from "@element-plus/icons-vue";
+import { List } from "vant";
 import customHeader from "@/components/customHeader.vue";
-const router = useRouter();
 
-const messageList = ref([
-    {
-        title: "派单提醒: 05.06水稻园某某农事请查收!",
-        desc: "风险描述风险描述风险描述",
-        date: "03-02",
-    },
-    {
-        title: "农情互动提醒:",
-        desc: "风险描述风险描述风险描述",
-        date: "03-02",
-    },
-    {
-        title: "农事执行提醒",
-        desc: "风险描述风险描述风险描述",
-        date: "03-02",
-    },
-]);
+const router = useRouter();
 
 const handleItem = (item) => {
-    // router.push("/message_list");
+    router.push("/completed_work?miniJson=" + JSON.stringify({ id: item.farmData.farmWorkRecordId }));
+};
+
+// 分页相关状态
+const messageList = ref([]);
+const loading = ref(false);
+const finished = ref(false);
+const currentPage = ref(1);
+const pageSize = ref(10);
+
+// 加载数据
+const getNoticeList = async () => {
+    try {
+        loading.value = true;
+        const params = {
+            page: currentPage.value,
+            limit: pageSize.value,
+            popType: 0,
+        };
+        const res = await VE_API.mine.listNotice(params);
+        
+        if (res.data && res.data.length > 0) {
+            const newData = res.data.map((item) => {
+                return {
+                    ...item,
+                    farmData: JSON.parse(item.data),
+                };
+            });
+            
+            if (currentPage.value === 1) {
+                messageList.value = newData;
+            } else {
+                messageList.value = [...messageList.value, ...newData];
+            }
+            
+            // 如果返回的数据少于每页数量,说明没有更多数据了
+            if (res.data.length < pageSize.value) {
+                finished.value = true;
+            }
+        } else {
+            // 没有数据时,如果是第一页,显示空列表;否则标记为完成
+            if (currentPage.value === 1) {
+                messageList.value = [];
+            }
+            finished.value = true;
+        }
+    } catch (error) {
+        console.error("获取消息列表失败:", error);
+        finished.value = true;
+    } finally {
+        loading.value = false;
+    }
+};
+
+// 滚动加载更多
+const onLoad = () => {
+    if (finished.value) {
+        return;
+    }
+    currentPage.value += 1;
+    getNoticeList();
+};
+
+// 初始化加载
+onMounted(() => {
+    currentPage.value = 1;
+    finished.value = false;
+    getNoticeList();
+});
+
+// 格式化日期为 MM-DD 格式
+const formatDate = (dateStr) => {
+    if (!dateStr) return "--";
+    const date = new Date(dateStr);
+    if (Number.isNaN(date.getTime())) return dateStr;
+    const m = `${date.getMonth() + 1}`.padStart(2, "0");
+    const d = `${date.getDate()}`.padStart(2, "0");
+    return `${m}-${d}`;
 };
 </script>
 
@@ -56,12 +125,19 @@ const handleItem = (item) => {
     height: 100vh;
     box-sizing: border-box;
     background-color: #f7f7f7;
-    .message-list {
-        width: 100%;
-        height: 100%;
+    display: flex;
+    flex-direction: column;
+    
+    ::v-deep .van-list {
+        flex: 1;
+        height: calc(100vh - 40px);
         overflow-y: auto;
         padding: 12px;
         box-sizing: border-box;
+    }
+    
+    .message-list {
+        width: 100%;
         .message-item {
             background-color: #fff;
             border-radius: 14px;
@@ -73,22 +149,26 @@ const handleItem = (item) => {
                     margin-bottom: 8px;
                 }
                 .desc {
-                    color: #BBBBBB;
+                    color: #bbbbbb;
                     margin-bottom: 10px;
                 }
                 .footer {
                     display: flex;
                     align-items: center;
                     justify-content: space-between;
-                    border-top: 1px solid #F5F5F5;
+                    border-top: 1px solid #f5f5f5;
                     padding-top: 10px;
+                    .footer-left {
+                        display: flex;
+                        align-items: center;
+                    }
                     .view-detail {
                         color: #333333;
                         font-size: 14px;
                         margin-right: 8px;
                     }
                     .date {
-                        color: #B6B6B6;
+                        color: #b6b6b6;
                         font-size: 14px;
                     }
                 }

+ 9 - 18
src/views/old_mini/mine/pages/serviceDetail.vue

@@ -10,10 +10,7 @@
                     farmInfoData.address !== ''
                 "
                 class="record-box"
-                :data="{
-                    ...farmInfoData,
-                    maxWidth: '100%'
-                }"
+                :data="farmInfoData"
             >
             </farm-info-card>
             <div class="farm-service-box">
@@ -46,8 +43,6 @@
                 />
             </div>
         </div>
-        <!-- 分享农事成效弹窗 -->
-        <review-popup ref="reviewPopupRef" />
     </div>
 </template>
 
@@ -56,12 +51,11 @@ import customHeader from "@/components/customHeader.vue";
 import FarmInfoCard from "@/components/pageComponents/FarmInfoCard.vue";
 import StatsBox from "@/components/pageComponents/StatsBox.vue";
 import { ref, onMounted, computed } from "vue";
-import { useRoute } from "vue-router";
-import { base_img_url2 } from "@/api/config";
+import { useRoute, useRouter } from "vue-router";
 import recordItem from "@/components/recordItem.vue";
-import reviewPopup from "@/views/old_mini/task_condition/components/reviewPopup.vue";
 import { Empty } from "vant";
 const route = useRoute();
+const router = useRouter();
 const farmIdVal = ref(null);
 onMounted(() => {
     farmIdVal.value = route.query.farmId;
@@ -84,7 +78,7 @@ const farmInfoData = computed(() => {
         area: farmDetail.value.mianji ? farmDetail.value.mianji + "亩" : "",
         variety: farmDetail.value.typeName || "",
         address: farmDetail.value.address || "",
-        maxWidth: "58px",
+        maxWidth: "100%",
     };
 });
 
@@ -92,8 +86,7 @@ const serviceStatsData = ref([]);
 const getFarmPastServiceCost = () => {
     VE_API.user.getFarmPastServiceCost({ farmId: farmIdVal.value }).then(({ data }) => {
         serviceStatsData.value = [
-            { value: data?.totalCost, unit: "元", desc: "总收益" },
-            { value: data?.privateCost, unit: "元", desc: "投入成本" },
+            { value: data?.totalCost, unit: "元", desc: "成交额" },
             { value: data?.serviceCount, unit: "次", desc: "服务次数" },
         ];
     });
@@ -112,12 +105,10 @@ const getDetailList = () => {
     });
 };
 
-const reviewPopupRef = ref(null);
-const handleTitleRightClick = ({ id, reviewImage }) => {
-    VE_API.z_farm_work_record.getTriggerImg({ farmWorkRecordId: id }).then(({ data }) => {
-        const preImg = data.length ? base_img_url2 + data[data.length - 1].cloudFilename : "";
-        const resImg = reviewImage?.length ? base_img_url2 + reviewImage[reviewImage.length - 1] : "";
-        reviewPopupRef.value.handleShowPopup(id, preImg, resImg);
+const handleTitleRightClick = ({ id }) => {
+    router.push({
+        path: "/achievement_report",
+        query: { miniJson: JSON.stringify({ id }) },
     });
 };
 </script>

+ 2 - 2
src/views/old_mini/mine/pages/serviceRecords.vue

@@ -63,8 +63,8 @@ const getPrescriptionText = (item) => {
     item.prescriptionList.forEach((prescription) => {
         if (prescription.pesticideFertilizerList && Array.isArray(prescription.pesticideFertilizerList)) {
             prescription.pesticideFertilizerList.forEach((pesticide) => {
-                if (pesticide.defaultName) {
-                    nameList.push(pesticide.defaultName);
+                if (pesticide.defaultName || pesticide.pesticideFertilizerName) {
+                    nameList.push(pesticide.defaultName || pesticide.pesticideFertilizerName);
                 }
             });
         }

+ 3 - 1
src/views/old_mini/task_condition/components/interact.vue

@@ -54,7 +54,7 @@
                                             <div class="tag-item primary">
                                                 {{ item?.typeName }}
                                             </div>
-                                            <div class="tag-item second">托管客户</div>
+                                            <div class="tag-item" :class="{ 'second': item.userType === 2 }">{{ item.userType === 1 ? '普通客户' : '托管客户' }}</div>
                                         </div>
                                     </div>
                                     <div class="farm-addr">{{ item?.address }}</div>
@@ -509,6 +509,8 @@ function handleRemindCustomer(item) {
                             padding: 0 8px;
                             border-radius: 2px;
                             font-size: 12px;
+                            color: #848282;
+                            background-color: rgba(148, 148, 148, 0.1);
                             &.second {
                                 color: #ff953d;
                                 background: rgba(255, 149, 61, 0.1);

+ 16 - 21
src/views/old_mini/task_condition/components/remindCustomer.vue

@@ -34,10 +34,10 @@ const shareOptions = ref([{ name: "微信", icon: "wechat", type: "wechat" }]);
 const handleShareSelect = () => {
     const query = {
         askInfo: { title: "提醒客户", content: "是否分享该提醒给好友" },
-        shareText: shareParams.value.title,
+        shareText: shareParams.value.questTitle,
         targetUrl: `warning_detail`,
         paramsPage: JSON.stringify(shareParams.value),
-        imageUrl: "https://birdseye-img.sysuimars.com/birdseye-look-mini/invite_bg.png",
+        imageUrl: shareParams.value.imageUrl,
     };
     wx.miniProgram.navigateTo({
         url: `/pages/subPages/share_page/index?pageParams=${JSON.stringify(query)}&type=sharePage`,
@@ -45,19 +45,14 @@ const handleShareSelect = () => {
 };
 
 const shareParams = ref({});
-const handleShare = (item) => {
-    console.log("item", item);
+const handleShare = (data) => {
     shareParams.value = {
-        title: item.postInfo.title,
-        id: item.postInfo.postId,
-        questInfo: JSON.stringify({
-            quest: item.quest,
-            answer: item.answerOptions,
-        }),
-        arrangeId: item.arrangeId,
+        id: data.postInfo.postId,
+        questTitle: data.interactionQuestion,
+        arrangeId: data.arrangeId,
         farmId: route.query.farmId,
+        imageUrl: data.postInfo.media[0],
     };
-    console.log("shareParams", shareParams.value);
     showShareSheet.value = true;
 };
 
@@ -83,15 +78,15 @@ const formatDate = (dateStr) => {
 
 // 处理列表项点击
 const handleItemClick = (data) => {
-    const questInfo = {
-        quest: data.quest,
-        answer: data.answerOptions,
-    };
-    router.push(
-        `/warning_detail?id=${data.postInfo.postId}&questInfo=${JSON.stringify(questInfo)}&arrangeId=${
-            data.arrangeId
-        }&farmId=${route.query.farmId}`
-    );
+    router.push({
+        path: "/warning_detail",
+        query: {
+            id: data.postInfo.postId,
+            questTitle: data.interactionQuestion,
+            arrangeId: data.arrangeId,
+            farmId: route.query.farmId,
+        },
+    });
 };
 </script>
 <style lang="scss" scoped>

+ 6 - 7
src/views/old_mini/user/farmDetails.vue

@@ -127,10 +127,10 @@
                 </tab>
             </tabs>
         </div>
-        <div class="custom-bottom-fixed-btns">
+        <!-- <div class="custom-bottom-fixed-btns">
             <div class="bottom-btn secondary-btn" @click="handleShareFarm">分享农场</div>
             <div class="bottom-btn primary-btn" @click="handleChatFarm">在线沟通</div>
-        </div>
+        </div> -->
     </div>
     <fn-share-sheet v-model:show="showShare" @select="onSelect" :options="[{ name: '微信', icon: 'wechat' }]" />
     <!-- 农场信息 -->
@@ -176,8 +176,8 @@ const handleFarmServiceTabChange = (index) => {
     } else {
         getFutureFarmWorkList();
         serviceStatsData.value = [
-            { value: "1258", unit: "元", desc: "预计收益" },
-            { value: "1258", unit: "元", desc: "预计成本" },
+            { value: "1258", unit: "元", desc: "预计成交额" },
+            { value: "5", unit: "次", desc: "预计服务次数" },
         ];
     }
 };
@@ -313,8 +313,7 @@ const getFutureFarmWorkList = () => {
 const getFarmPastServiceCost = () => {
     VE_API.user.getFarmPastServiceCost({ farmId: farmIdVal.value }).then(({ data }) => {
         serviceStatsData.value = [
-            { value: data?.totalCost, unit: "元", desc: "总收益" },
-            { value: data?.totalCost, unit: "元", desc: "投入成本" },
+            { value: data?.totalCost, unit: "元", desc: "成交额" },
             { value: data?.serviceCount, unit: "次", desc: "服务次数" },
         ];
     });
@@ -367,7 +366,7 @@ const onSelect = () => {
     background: #F2F3F5;
     .farm-details-content {
         box-sizing: border-box;
-        padding: 10px 12px 70px 12px;
+        padding: 10px 12px;
         overflow: auto;
         height: calc(100% - 40px);
         box-sizing: border-box;

+ 3 - 4
src/views/old_mini/user/subPages/serviceList.vue

@@ -61,8 +61,8 @@ const handleFarmServiceTabChange = (index) => {
     } else {
         getFutureFarmWorkList();
         serviceStatsData.value = [
-            { value: "1258", unit: "元", desc: "预计收益" },
-            { value: "1258", unit: "元", desc: "预计成本" },
+            { value: "1258", unit: "元", desc: "预计成交额" },
+            { value: "5", unit: "次", desc: "预计服务次数" },
         ];
     }
 };
@@ -94,8 +94,7 @@ const getFutureFarmWorkList = () => {
 const getFarmPastServiceCost = () => {
     VE_API.user.getFarmPastServiceCost({ farmId: farmIdVal.value }).then(({ data }) => {
         serviceStatsData.value = [
-            { value: data.totalCost, unit: "元", desc: "总收益" },
-            { value: data.totalCost, unit: "元", desc: "投入成本" },
+            { value: data.totalCost, unit: "元", desc: "成交额" },
             { value: data.serviceCount, unit: "次", desc: "服务次数" },
         ];
     });