瀏覽代碼

feat:修改聊天接口的bug

wangsisi 2 天之前
父節點
當前提交
d72bfd2d33

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

@@ -38,4 +38,9 @@ module.exports = {
         url: config.base_dev_url + "v2/farm/getExpertByFarmId",
         type: "get",
     },
+    // 查询当前农资用户的所有方案列表
+    listMySchemes:{
+        url: config.base_dev_url + "container_farm_work_scheme/listMySchemes",
+        type: "get",
+    }
 }

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

@@ -18,4 +18,9 @@ module.exports = {
         url: config.base_dev_url + "z_farm_work_lib/listByFarmId",
         type: "get",
     },
+    //根据农事编排ID直接触发农事
+    triggerFarmWork: {
+        url: config.base_dev_url + "container_farm_work_arrange/triggerFarmWorkByArrangeId",
+        type: "post",
+    },
 }

+ 14 - 3
src/components/chatWindow.vue

@@ -317,22 +317,33 @@ watch(
             createSession(newValue, () => {
                 if(route.query.pageParams) {
                     const params = JSON.parse(route.query.pageParams);
-                    const imgArr = JSON.parse(params.executeEvidence);
                     const message = {
                         sender: "sent",
                         messageType: "card",
                         senderIcon: senderIcon.value,
                         title: params.farmWorkName + ' 农事已完成,请您确认',
-                        coverUrl: imgArr[0],
                         cardType:'farm_work',
                         linkUrl:`/completed_work?json=${JSON.stringify({id:params.id})}`,
                         time: getCurrentTime(),
                     };
+                    if(params.executeEvidence.length > 5) {
+                        const imgArr = JSON.parse(params.executeEvidence);
+                        message.coverUrl = imgArr[imgArr.length - 1];
+                    }
+                    
                     if(params.type === 'quotation') {
                         message.cardType = 'quotation';
                     }
                     
-                    // sendMessage(message)
+                    sendMessage(message);
+                    
+                    // 清除路由中的 pageParams 参数
+                    const newQuery = { ...route.query };
+                    delete newQuery.pageParams;
+                    router.replace({
+                        path: route.path,
+                        query: newQuery
+                    });
                 }
                 if (props.text) {
                     sendMsg("text", props.text);

+ 6 - 6
src/components/detailDialog.vue

@@ -123,14 +123,12 @@ const triggerClick = () => {
     if (props.showSuccessOnly) {
         eventBus.emit("activeUpload:success");
     } else {
-        // 打开同级的激活上传弹窗
-        eventBus.emit("activeUpload:show", {
-            gardenIdVal: dialogData.value.farmId,
-            problemTitleVal: dialogData.value.farmWorkName,
-        });
+        emit("triggerFarmWork");
     }
 };
 
+const emit = defineEmits(["triggerFarmWork"]);
+
 const dialogData = ref({})
 const showDialog = (id,btnTextVal = '转发') => {
     btnText.value = btnTextVal;
@@ -181,7 +179,9 @@ function closeDialog() {
 }
 
 function toPage() {
-    router.push("/expert_list");
+    if(btnText.value!='转发'){
+        router.push("/expert_list");
+    }
 }
 </script>
 

+ 29 - 16
src/components/popup/activeUploadPopup.vue

@@ -12,13 +12,19 @@
                 {{ problemTitle }}
             </div>
             <div class="date-input">
-                <el-date-picker v-model="uploadDate" size="large" style="width: 100%" type="date" placeholder="请选择日期" />
+                <el-date-picker
+                    v-model="uploadDate"
+                    size="large"
+                    style="width: 100%"
+                    type="date"
+                    placeholder="请选择日期"
+                />
             </div>
         </div>
         <div class="tips-text">上传照片,诊断更准确哦~</div>
         <upload :textShow="true" class="upload-wrap" exampleImg>
             <img class="example" src="@/assets/img/home/example-4.png" alt="" />
-            <img class="example" src="@/assets/img/home/plus.png" alt="">
+            <img class="example" src="@/assets/img/home/plus.png" alt="" />
         </upload>
         <div class="btn" @click="handleUpload">确认</div>
     </popup>
@@ -66,42 +72,49 @@ function formatDate(date) {
 }
 
 const type = ref(null);
-function handleShow({ gardenIdVal, problemTitleVal,typeVal }) {
+const arrangeId = ref(null);
+function handleShow({ gardenIdVal, problemTitleVal, typeVal ,arrangeIdVal}) {
     images.value = [];
     gardenId.value = gardenIdVal;
     problemTitle.value = problemTitleVal || "请选择问题";
     uploadDate.value = formatDate(new Date());
     show.value = true;
     type.value = typeVal;
+    arrangeId.value = arrangeIdVal;
 }
 
 function handleSuccess() {
     successShow.value = true;
 }
 
-const emit = defineEmits(['handleUploadSuccess']);
+const emit = defineEmits(["handleUploadSuccess"]);
 
 const handleUpload = () => {
     if (images.value.length === 0) return ElMessage.warning("请上传图片");
     const params = {
         gardenId: gardenId.value,
         images: images.value,
-        uploadDate: uploadDate.value,
+        executeDate: uploadDate.value,
     };
     // 提交成功后的反馈弹窗(示例直接展示)
-    if(type.value === 'question'){
+    if (type.value === "question") {
         show.value = false;
-        emit("handleUploadSuccess",params);
-    }else{
-        show.value = false;
-        successShow.value = true;
+        emit("handleUploadSuccess", params);
+    } else {
+        const paramsObj = {
+            farmId: gardenId.value,
+            arrangeId: arrangeId.value,
+            executeDate: uploadDate.value,
+            imagePaths: images.value,
+        };
+        VE_API.monitor.triggerFarmWork(paramsObj).then((res) => {
+            if (res.code === 0) {
+                show.value = false;
+                successShow.value = true;
+                emit("handleUploadSuccess", paramsObj);
+            }
+        });
     }
-    // VE_API.ali.uploadImg(params).then((res) => {
-    //     if (res.success) {
-    //         show.value = false;
-    //         successShow.value = true;
-    //     }
-    // });
 };
 
 function handleClosed() {

+ 13 - 17
src/views/old_mini/monitor/subPages/plan.vue

@@ -91,9 +91,9 @@
         </div>
     </div>
     <!-- 农事信息弹窗 -->
-    <detail-dialog ref="detailDialogRef"></detail-dialog>
+    <detail-dialog ref="detailDialogRef" @triggerFarmWork="triggerFarmWork"></detail-dialog>
     <!-- 新增:激活上传弹窗 -->
-    <active-upload-popup></active-upload-popup>
+    <active-upload-popup @handleUploadSuccess="getFarmWorkPlan"></active-upload-popup>
 </template>
 
 <script setup>
@@ -101,6 +101,7 @@ import { reactive, ref, onMounted, computed } from "vue";
 import customHeader from "@/components/customHeader.vue";
 import { useRouter, useRoute } from "vue-router";
 import detailDialog from "@/components/detailDialog.vue";
+import eventBus from "@/api/eventBus";
 import activeUploadPopup from "@/components/popup/activeUploadPopup.vue";
 import { SuccessFilled, WarningFilled } from "@element-plus/icons-vue";
 const router = useRouter();
@@ -161,19 +162,6 @@ const getFarmWorkPlan = () => {
                           reproductiveList: Array.isArray(it.reproductiveList) ? it.reproductiveList : [],
                       }))
                     : [];
-
-                // // 测试数据:补充完成/预警案例以展示样式
-                // if (phenologyList.value.length > 0) {
-                //     const rlist = phenologyList.value[0]?.reproductiveList;
-                //     if (Array.isArray(rlist) && rlist.length > 0) {
-                //         const first = rlist[0];
-                //         if (!Array.isArray(first.farmWorkArrangeList)) first.farmWorkArrangeList = [];
-                //         first.farmWorkArrangeList.push(
-                //             { id: "test-complete", farmWorkName: "测试完成", farmWorkType: 5 },
-                //             { id: "test-warning", farmWorkName: "测试预警", farmWorkType: 6 }
-                //         );
-                //     }
-                // }
             }
         })
         .catch((error) => {
@@ -191,9 +179,17 @@ const addNewTask = () => {
     });
 };
 
+const triggerFarmWork = () =>{
+    eventBus.emit("activeUpload:show", {
+        gardenIdVal: route.query.farmId,
+        problemTitleVal: curFarmObj.value.farmWorkName,
+        arrangeIdVal: curFarmObj.value.id,
+    });
+}
 
+const curFarmObj = ref({});
 const handleRowClick = (item) => {
-    console.log("item", item);
+    curFarmObj.value = item;
     // 0:默认,1-4:正常,5:完成,6:预警
     if (item.flowStatus === 5) {
         router.push({
@@ -204,7 +200,7 @@ const handleRowClick = (item) => {
         });
     } else if (item.flowStatus === null) {
         detailDialogRef.value.showDialog(item.farmWorkId);
-    } else if (item.flowStatus === 6 || item.flowStatus < 5 && item.flowStatus >= 0) {
+    } else if (item.flowStatus === 6 || (item.flowStatus < 5 && item.flowStatus >= 0)) {
         router.push({
             path: "/completed_work",
             query: {

+ 25 - 9
src/views/old_mini/plan/index.vue

@@ -2,6 +2,13 @@
     <div class="farm-card-page">
         <custom-header name="农事方案"></custom-header>
         <div class="farm-card-content">
+            <tab-list
+                v-if="curRole == 2"
+                type="light"
+                v-model="active"
+                :tabs="tabs"
+                @change="handleFarmServiceTabChange"
+            />
             <plan-list :farm-id="route.query.farmId" :default-active="defaultActive" isEdit> </plan-list>
         </div>
     </div>
@@ -9,22 +16,31 @@
 
 <script setup>
 import customHeader from "@/components/customHeader.vue";
-import { ref } from "vue";
-import { useRoute, useRouter } from "vue-router";
-import recordItem from "@/components/recordItem.vue";
+import { onMounted, ref } from "vue";
+import { useRoute } from "vue-router";
+import tabList from "@/components/pageComponents/TabList.vue";
 import PlanList from "@/components/pageComponents/PlanList.vue";
 
-const curRole = localStorage.getItem("SET_USER_CUR_ROLE");
 const route = useRoute();
-const router = useRouter();
 // 菜单
 const defaultActive = ref("1-1");
 
-const handleClick = (sub) => {
-    if (curRole.value == 2) {
-        router.push(`/edit_plan?id=${sub.id}`);
+const curRole = localStorage.getItem('SET_USER_CUR_ROLE')
+
+const tabs = [];
+const active = ref(0);
+
+const handleFarmServiceTabChange = (index) => {};
+
+onMounted(()=>{
+    if(curRole == 2){
+        VE_API.home.listMySchemes().then(({data,code}) => {
+            if(code == 0){
+                tabs.value = data || []
+            }
+        })
     }
-};
+})
 </script>
 
 <style scoped lang="scss">

+ 11 - 23
src/views/old_mini/task_condition/components/task.vue

@@ -100,8 +100,6 @@ import calendar from "./calendar.vue"
 import { useRouter } from "vue-router";
 import uploadExecute from "./uploadExecute.vue";
 import priceSheetPopup from "@/components/popup/priceSheetPopup.vue";
-import wx from "weixin-js-sdk";
-import { ElMessage } from "element-plus";
 
 const store = useStore();
 const router = useRouter();
@@ -248,13 +246,10 @@ function toPage(item) {
         } else {
             onlyShare.value = false;
         }
-        if(item.farmMiniUserId){
-            setTimeout(() => {
-                uploadExecuteRef.value.showPopup(item,'share-sheet');
-            }, 10);
-        }else{
-            ElMessage.warning('尚未绑定用户,暂时无法分享')
-        }
+        setTimeout(() => {
+            uploadExecuteRef.value.showPopup(item,'share-sheet');
+        }, 10);
+       
     } else {
         // 下发农事请求
         const data = {
@@ -302,13 +297,9 @@ function handleAction(item) {
         currentTask.value = item;
     }else{
         onlyShare.value = true;
-        if(item.farmMiniUserId){
-            setTimeout(() => {
-                uploadExecuteRef.value.showPopup(item,'share-sheet');
-            }, 10);
-        }else{
-            ElMessage.warning('尚未绑定用户,暂时无法分享')
-        }
+        setTimeout(() => {
+            uploadExecuteRef.value.showPopup(item,'share-sheet');
+        }, 10);
     }
 }
 
@@ -324,13 +315,10 @@ function handlePopupBtn() {
 
 function handleForward(item) {
     onlyShare.value = true;
-    if(item.farmMiniUserId){
-        setTimeout(() => {
-            uploadExecuteRef.value.showPopup({...item, type:'quotation'},'share-sheet');
-        }, 10);
-    }else{
-        ElMessage.warning('尚未绑定用户,暂时无法分享')
-    }
+    setTimeout(() => {
+        uploadExecuteRef.value.showPopup({...item, type:'quotation'},'share-sheet');
+    }, 10);
+   
 }
 
 </script>

+ 5 - 1
src/views/old_mini/task_condition/components/uploadExecute.vue

@@ -74,7 +74,11 @@ function handleConfirm() {
 const showShare = ref(false);
 const onSelect = ({type}) => {
     if(type === 'birdseye') {
-        router.push(`/chat_frame?userId=${farmData.value.farmMiniUserId}&name=${farmData.value.farmMiniUserName}&farmId=${farmData.value.farmId}&pageParams=${JSON.stringify(farmData.value)}`);
+        if(farmData.value.farmMiniUserId){
+            router.push(`/chat_frame?userId=${farmData.value.farmMiniUserId}&name=${farmData.value.farmMiniUserName}&farmId=${farmData.value.farmId}&pageParams=${JSON.stringify(farmData.value)}`);
+        }else{
+            ElMessage.warning('尚未绑定用户,暂时无法分享')
+        }
     } else {
         const query = { shareText: farmData.value.farmWorkName + " 农事已完成,请您确认", id: farmData.value.id, farmWorkOrderId: farmData.value.orderId, postImg:  base_img_url2 + farmData.value.executeEvidence[farmData.value.executeEvidence.length - 1] }
         wx.miniProgram.navigateTo({