Browse Source

feat:添加农资新增客户和客户领取农场功能

wangsisi 3 weeks ago
parent
commit
6f37152322

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

@@ -28,4 +28,9 @@ module.exports = {
         url: config.base_dev_url + "z_farm_work_record/addReviewImg",
         url: config.base_dev_url + "z_farm_work_record/addReviewImg",
         type: "post",
         type: "post",
     },
     },
+    //领取农场
+    receiveFarm: {
+        url: config.base_dev_url + "z_agricultural_store_farm/receive",
+        type: "post",
+    },
 }
 }

+ 5 - 2
src/components/pageComponents/FarmInfoCard.vue

@@ -5,7 +5,7 @@
                 <img class="map-img" :src="data.mapImage || '/map.png'" alt="地图" />
                 <img class="map-img" :src="data.mapImage || '/map.png'" alt="地图" />
                 <div class="item-info">
                 <div class="item-info">
                     <div class="item-header">
                     <div class="item-header">
-                        <div class="farm-name van-ellipsis" :style="{ maxWidth: data.maxWidth?data.maxWidth:'140px' }">{{ data.farmName }}</div>
+                        <div class="farm-name van-ellipsis">{{ data.farmName }}</div>
                         <div class="tags">
                         <div class="tags">
                             <span class="tag tag-area">{{ data.area }}</span>
                             <span class="tag tag-area">{{ data.area }}</span>
                             <span class="tag tag-variety">{{ data.variety }}</span>
                             <span class="tag tag-variety">{{ data.variety }}</span>
@@ -139,8 +139,10 @@ const handleRemind = () => {
             display: flex;
             display: flex;
             align-items: center;
             align-items: center;
             gap: 8px;
             gap: 8px;
+            width: calc(100% - 80px);
         }
         }
         .item-info {
         .item-info {
+            width: 100%;
             .item-header {
             .item-header {
                 display: flex;
                 display: flex;
                 gap: 10px;
                 gap: 10px;
@@ -149,7 +151,8 @@ const handleRemind = () => {
                 .farm-name {
                 .farm-name {
                     font-weight: 600;
                     font-weight: 600;
                     color: #000;
                     color: #000;
-                    max-width: 66px;
+                    // max-width: calc(100% - 100px);
+                    max-width: 100px;
                 }
                 }
                 .tags {
                 .tags {
                     display: flex;
                     display: flex;

+ 130 - 0
src/components/popup/tipPopup.vue

@@ -0,0 +1,130 @@
+<template>
+    <popup 
+        v-model:show="showValue" 
+        round 
+        class="tip-popup"
+        :overlay-style="overlayStyle"
+        :close-on-click-overlay="closeOnClickOverlay"
+    >
+        <template v-if="type === 'create'">
+            <img class="tip-icon create-icon" src="@/assets/img/home/create-farm-icon.png" alt="" />
+            <div class="tip-text">
+                <div v-for="(line, index) in textLines" :key="index">{{ line }}</div>
+            </div>
+        </template>
+        <template v-else>
+            <img class="tip-icon success-icon" src="@/assets/img/home/right.png" alt="" />
+            <div class="tip-text success-text">{{ text }}</div>
+        </template>
+        <div class="tip-btn" @click="handleBtnClick">
+            {{ buttonText || (type === "create" ? "去创建农场" : "我知道了") }}
+        </div>
+    </popup>
+</template>
+
+<script setup>
+import { Popup } from "vant";
+import { computed } from "vue";
+
+const props = defineProps({
+    // 控制弹窗显示/隐藏
+    show: {
+        type: Boolean,
+        default: false,
+    },
+    // 类型:'create' 或 'success',决定显示哪个图标
+    type: {
+        type: String,
+        default: "create",
+        validator: (value) => ["create", "success"].includes(value),
+    },
+    // 提示文字内容
+    text: {
+        type: [String, Array],
+        default: "",
+    },
+    // 按钮文字,如果不传则根据type自动决定
+    buttonText: {
+        type: String,
+        default: "",
+    },
+    // 遮罩层样式
+    overlayStyle: {
+        type: Object,
+        default: () => ({}),
+    },
+    // 是否在点击遮罩层后关闭弹窗
+    closeOnClickOverlay: {
+        type: Boolean,
+        default: true,
+    },
+});
+
+const emit = defineEmits(["update:show", "confirm"]);
+
+// 处理v-model双向绑定
+const showValue = computed({
+    get: () => props.show,
+    set: (value) => emit("update:show", value),
+});
+
+// 将文字内容转换为数组,支持多行显示
+const textLines = computed(() => {
+    if (Array.isArray(props.text)) {
+        return props.text;
+    }
+    if (typeof props.text === "string") {
+        return props.text.split("\n").filter((line) => line.trim());
+    }
+    return [];
+});
+
+const handleBtnClick = () => {
+    emit("confirm");
+    emit("update:show", false);
+};
+</script>
+
+<style scoped lang="scss">
+.tip-popup {
+    width: 75%;
+    padding: 28px 28px 20px;
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    justify-content: center;
+    .tip-icon {
+        margin-bottom: 12px;
+        &.create-icon {
+            width: 40px;
+            height: 40px;
+        }
+        &.success-icon {
+            width: 68px;
+            height: 68px;
+        }
+    }
+    .tip-text {
+        font-size: 18px;
+        font-weight: 500;
+        margin-bottom: 32px;
+        text-align: center;
+        &.success-text {
+            font-size: 23px;
+            font-weight: 400;
+        }
+    }
+    .tip-btn {
+        width: 100%;
+        box-sizing: border-box;
+        padding: 8px;
+        border-radius: 25px;
+        font-size: 16px;
+        background: #2199f8;
+        color: #fff;
+        text-align: center;
+        cursor: pointer;
+    }
+}
+</style>
+

+ 92 - 21
src/components/weatherInfo.vue

@@ -55,15 +55,20 @@
 </template>
 </template>
 
 
 <script setup>
 <script setup>
-import { ref, onActivated, computed } from "vue";
+import { ref, onActivated, computed, watch } from "vue";
 import weatherChart from "./weatherChart.vue";
 import weatherChart from "./weatherChart.vue";
 import { useRouter } from "vue-router";
 import { useRouter } from "vue-router";
 const props = defineProps({
 const props = defineProps({
     isGarden: {
     isGarden: {
         type: Boolean,
         type: Boolean,
         default: false
         default: false
+    },
+    gardenId: {
+        type: [Number, String],
+        default: null
     }
     }
 });
 });
+
 // 定义emit事件
 // 定义emit事件
 const emit = defineEmits(['weatherExpanded','changeGarden']);
 const emit = defineEmits(['weatherExpanded','changeGarden']);
 const router = useRouter();
 const router = useRouter();
@@ -94,34 +99,100 @@ const farmName = ref("");
 const farmList = ref([]);
 const farmList = ref([]);
 const isDefaultFarm = ref(false); // 添加默认农场标识
 const isDefaultFarm = ref(false); // 添加默认农场标识
 
 
+// 根据传入的gardenId设置农场(先刷新列表再设置)
+async function setFarmByGardenId(gardenIdValue) {
+    if (!gardenIdValue) {
+        return false;
+    }
+    
+    // 先刷新农场列表,确保数据是最新的
+    return new Promise((resolve) => {
+        VE_API.farm.userFarmSelectOption().then(({data}) => {
+            farmList.value = data || [];
+            if (data && data.length > 0) {
+                const targetFarm = data.find(farm => farm.id == gardenIdValue);
+                if (targetFarm) {
+                    farmName.value = targetFarm.name;
+                    farmId.value = Number(gardenIdValue);
+                    isDefaultFarm.value = targetFarm.defaultOption || false;
+                    // 保存到 localStorage
+                    localStorage.setItem('selectedFarmId', farmId.value);
+                    localStorage.setItem('selectedFarmName', farmName.value);
+                    emit('changeGarden', { id: farmId.value, name: farmName.value });
+                    resolve(true);
+                } else {
+                    resolve(false);
+                }
+            } else {
+                resolve(false);
+            }
+        }).catch(() => {
+            resolve(false);
+        });
+    });
+}
+
 // 获取农场列表
 // 获取农场列表
 function getFarmList() {
 function getFarmList() {
+    // 如果传入了 gardenId,优先使用 setFarmByGardenId(它会刷新列表并设置)
+    if (props.gardenId) {
+        setFarmByGardenId(props.gardenId).then((setSuccess) => {
+            // 如果设置失败,使用已获取的列表数据执行默认逻辑(避免重复请求)
+            if (!setSuccess && farmList.value && farmList.value.length > 0) {
+                selectFarmFromList(farmList.value);
+            } else if (!setSuccess) {
+                // 如果列表为空,再次获取列表
+                getFarmListWithoutGardenId();
+            }
+        });
+        return;
+    }
+    
+    // 如果没有传入 gardenId,执行正常逻辑
+    getFarmListWithoutGardenId();
+}
+
+// 从列表中选择农场(使用已有列表数据)
+function selectFarmFromList(data) {
+    // 使用 localStorage 中保存的农场选择
+    const savedFarmId = localStorage.getItem('selectedFarmId');
+    const savedFarmName = localStorage.getItem('selectedFarmName');
+    if (savedFarmId && savedFarmName) {
+        // 检查保存的农场是否还在当前列表中
+        const savedFarm = data.find(farm => farm.id == savedFarmId);
+        if (savedFarm) {
+            farmName.value = savedFarmName;
+            farmId.value = Number(savedFarmId);
+            isDefaultFarm.value = savedFarm.defaultOption || false;
+        } else {
+            // 如果保存的农场不在列表中,按优先级选择
+            selectDefaultFarm(data);
+        }
+    } else {
+        // 如果没有保存的选择,按优先级选择
+        selectDefaultFarm(data);
+    }
+    emit('changeGarden',{id: farmId.value, name: farmName.value});
+}
+
+// 获取农场列表(不处理传入的gardenId)
+function getFarmListWithoutGardenId() {
     VE_API.farm.userFarmSelectOption().then(({data}) => {
     VE_API.farm.userFarmSelectOption().then(({data}) => {
         farmList.value = data || []
         farmList.value = data || []
         if (data && data.length > 0) {
         if (data && data.length > 0) {
-            // 优先使用 localStorage 中保存的农场选择
-            const savedFarmId = localStorage.getItem('selectedFarmId');
-            const savedFarmName = localStorage.getItem('selectedFarmName');
-            if (savedFarmId && savedFarmName) {
-                // 检查保存的农场是否还在当前列表中
-                const savedFarm = data.find(farm => farm.id == savedFarmId);
-                if (savedFarm) {
-                    farmName.value = savedFarmName;
-                    farmId.value = Number(savedFarmId);
-                    isDefaultFarm.value = savedFarm.defaultOption || false;
-                } else {
-                    // 如果保存的农场不在列表中,按优先级选择
-                    selectDefaultFarm(data);
-                }
-            } else {
-                // 如果没有保存的选择,按优先级选择
-                selectDefaultFarm(data);
-            }
-            emit('changeGarden',{id: farmId.value, name: farmName.value});
+            selectFarmFromList(data);
         }
         }
     })
     })
 }
 }
 
 
+// 监听父组件传入的gardenId变化
+watch(() => props.gardenId, (newGardenId) => {
+    if (newGardenId) {
+        // 直接调用 setFarmByGardenId,它会刷新列表并设置
+        setFarmByGardenId(newGardenId);
+    }
+}, { immediate: false });
+
 // 选择默认农场的逻辑
 // 选择默认农场的逻辑
 function selectDefaultFarm(data) {
 function selectDefaultFarm(data) {
     // 首先查找 defaultOption 为 true 的农场
     // 首先查找 defaultOption 为 true 的农场
@@ -310,7 +381,7 @@ const currentDateText = computed(() => {
     overflow-y: auto;
     overflow-y: auto;
     &.el-dropdown__popper {
     &.el-dropdown__popper {
         .el-dropdown__list {
         .el-dropdown__list {
-            max-width: 220px;
+            max-width: 240px;
         }
         }
         .el-dropdown-menu__item{
         .el-dropdown-menu__item{
             background-color: transparent !important;
             background-color: transparent !important;

+ 16 - 7
src/views/old_mini/create_farm/index.vue

@@ -128,7 +128,7 @@
                                             @input="handleFarmNameInput"
                                             @input="handleFarmNameInput"
                                         />
                                         />
                                     </el-form-item>
                                     </el-form-item>
-                                    <checkbox class="checkbox" icon-size="18px" shape="square" v-model="ruleForm.defaultFarm">是否勾选为默认农场</checkbox>
+                                    <checkbox v-if="paramsType !== 'client'" class="checkbox" icon-size="18px" shape="square" v-model="ruleForm.defaultFarm">是否勾选为默认农场</checkbox>
                                 </el-form>
                                 </el-form>
                             </div>
                             </div>
                             <div class="create-btn">
                             <div class="create-btn">
@@ -462,6 +462,8 @@ const rules = reactive({
     defaultFarm: [{ required: true, message: "请选择是否为默认农场", trigger: "blur" }],
     defaultFarm: [{ required: true, message: "请选择是否为默认农场", trigger: "blur" }],
 });
 });
 
 
+const curRole = localStorage.getItem('SET_USER_CUR_ROLE');
+
 const submitForm = (formEl) => {
 const submitForm = (formEl) => {
     if (!formEl) return;
     if (!formEl) return;
     formEl.validate((valid) => {
     formEl.validate((valid) => {
@@ -471,12 +473,13 @@ const submitForm = (formEl) => {
                 wkt: centerPoint.value,
                 wkt: centerPoint.value,
                 speciesId: ruleForm.speciesItem?.id,
                 speciesId: ruleForm.speciesItem?.id,
                 containerId: ruleForm.speciesItem?.defaultContainerId,
                 containerId: ruleForm.speciesItem?.defaultContainerId,
+                agriculturalCreate: route.query.type === 'client' ? 1 : 0,
                 // 编辑时geom不是数组,新增时是数组
                 // 编辑时geom不是数组,新增时是数组
                 geom: route.query.type === 'edit' 
                 geom: route.query.type === 'edit' 
                     ? (polygonArr.value && polygonArr.value.length > 0 ? polygonArr.value[0] : null)
                     ? (polygonArr.value && polygonArr.value.length > 0 ? polygonArr.value[0] : null)
                     : polygonArr.value,
                     : polygonArr.value,
             };
             };
-            
+
             // 如果是编辑模式,添加农场ID
             // 如果是编辑模式,添加农场ID
             if (route.query.type === 'edit' && route.query.farmId) {
             if (route.query.type === 'edit' && route.query.farmId) {
                 params.farmId = route.query.farmId;
                 params.farmId = route.query.farmId;
@@ -498,12 +501,18 @@ const submitForm = (formEl) => {
                     
                     
                     // 根据来源页面决定跳转目标
                     // 根据来源页面决定跳转目标
                     const fromPage = route.query.from;
                     const fromPage = route.query.from;
-                    if (fromPage === 'monitor') {
+                    if (fromPage) {
                         // 如果是从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 {
                     } else {
-                        // 默认跳转到首页
-                        router.replace("/home?reload=true&showSuccess=true");
+                        router.replace(`/home`);
                     }
                     }
                     localStorage.setItem('isGarden', true);
                     localStorage.setItem('isGarden', true);
                 }else{
                 }else{
@@ -526,7 +535,7 @@ const resetForm = (formEl) => {
     // 根据来源页面决定返回目标
     // 根据来源页面决定返回目标
     const fromPage = route.query.from;
     const fromPage = route.query.from;
     if (fromPage) {
     if (fromPage) {
-        router.replace(`/${fromPage}?reload=true`);
+        router.replace(`/${fromPage}`);
         return;
         return;
     }
     }
     router.go(-1)
     router.go(-1)
@@ -636,7 +645,7 @@ function backgToHome() {
     // 根据来源页面决定返回目标
     // 根据来源页面决定返回目标
     const fromPage = route.query.from;
     const fromPage = route.query.from;
     if (fromPage) {
     if (fromPage) {
-        router.replace(`/${fromPage}?reload=true`);
+        router.replace(`/${fromPage}`);
         return;
         return;
     }
     }
     router.go(-1)
     router.go(-1)

+ 7 - 56
src/views/old_mini/home/index.vue

@@ -35,22 +35,12 @@
         <AgriculturalDynamics />
         <AgriculturalDynamics />
     </div>
     </div>
     <!-- 创建农场弹窗 -->
     <!-- 创建农场弹窗 -->
-    <popup v-model:show="showFarmPopup" round class="create-farm-popup">
-        <template v-if="farmPopupType === 'create'">
-            <img class="create-farm-icon" src="@/assets/img/home/create-farm-icon.png" alt="" />
-            <div class="create-farm-text">
-                <div>您当前还没有农场</div>
-                <div>请先创建农场</div>
-            </div>
-        </template>
-        <template v-else>
-            <img class="farm-check-icon" src="@/assets/img/home/right.png" alt="" />
-            <div class="create-farm-text success-text">农场创建成功</div>
-        </template>
-        <div class="create-farm-btn" @click="handleBtn">
-            {{ farmPopupType === "create" ? "去创建农场" : "我知道了" }}
-        </div>
-    </popup>
+    <tip-popup
+        v-model:show="showFarmPopup"
+        :type="farmPopupType"
+        :text="farmPopupType === 'create' ? ['您当前还没有农场', '请先创建农场'] : '农场创建成功'"
+        @confirm="handleBtn"
+    />
     <!-- 问题提醒 -->
     <!-- 问题提醒 -->
     <problem-reminder :farmId="gardenId1"></problem-reminder>
     <problem-reminder :farmId="gardenId1"></problem-reminder>
 </template>
 </template>
@@ -58,13 +48,13 @@
 <script setup>
 <script setup>
 import { ref, computed, onActivated } from "vue";
 import { ref, computed, onActivated } from "vue";
 import { useStore } from "vuex";
 import { useStore } from "vuex";
-import { Popup } from "vant";
 import weatherInfo from "@/components/weatherInfo.vue";
 import weatherInfo from "@/components/weatherInfo.vue";
 import AgriculturalDynamics from "./components/AgriculturalDynamics.vue";
 import AgriculturalDynamics from "./components/AgriculturalDynamics.vue";
 import { useRouter, useRoute } from "vue-router";
 import { useRouter, useRoute } from "vue-router";
 import wx from "weixin-js-sdk";
 import wx from "weixin-js-sdk";
 import problemReminder from "./components/problemReminder.vue";
 import problemReminder from "./components/problemReminder.vue";
 import { ElMessage } from "element-plus";
 import { ElMessage } from "element-plus";
+import tipPopup from "@/components/popup/tipPopup.vue";
 
 
 const curRole = localStorage.getItem("SET_USER_CUR_ROLE");
 const curRole = localStorage.getItem("SET_USER_CUR_ROLE");
 const store = useStore();
 const store = useStore();
@@ -152,7 +142,6 @@ const handleBtn = () => {
     if (farmPopupType.value === "create") {
     if (farmPopupType.value === "create") {
         router.push("/create_farm?isReload=true&from=home");
         router.push("/create_farm?isReload=true&from=home");
     }
     }
-    showFarmPopup.value = false;
 };
 };
 
 
 onActivated(() => {
 onActivated(() => {
@@ -293,42 +282,4 @@ const weatherExpanded = (isExpandedValue) => {
         }
         }
     }
     }
 }
 }
-.create-farm-popup {
-    width: 75%;
-    padding: 28px 28px 20px;
-    display: flex;
-    flex-direction: column;
-    align-items: center;
-    justify-content: center;
-    .create-farm-icon {
-        width: 40px;
-        height: 40px;
-        margin-bottom: 12px;
-    }
-    .farm-check-icon {
-        width: 68px;
-        height: 68px;
-        margin-bottom: 12px;
-    }
-    .create-farm-text {
-        font-size: 18px;
-        font-weight: 500;
-        margin-bottom: 32px;
-        text-align: center;
-        &.success-text {
-            font-size: 23px;
-            font-weight: 400;
-        }
-    }
-    .create-farm-btn {
-        width: 100%;
-        box-sizing: border-box;
-        padding: 8px;
-        border-radius: 25px;
-        font-size: 16px;
-        background: #2199f8;
-        color: #fff;
-        text-align: center;
-    }
-}
 </style>
 </style>

+ 41 - 49
src/views/old_mini/monitor/index.vue

@@ -8,6 +8,7 @@
             @weatherExpanded="weatherExpanded"
             @weatherExpanded="weatherExpanded"
             @changeGarden="changeGarden"
             @changeGarden="changeGarden"
             :isGarden="true"
             :isGarden="true"
+            :gardenId="defaultGardenId"
         ></weather-info>
         ></weather-info>
         <!-- 操作按钮 -->
         <!-- 操作按钮 -->
         <div class="operation-button">
         <div class="operation-button">
@@ -88,38 +89,67 @@
     <!-- 农场信息 -->
     <!-- 农场信息 -->
     <farm-info-popup ref="farmInfoRef" :farmId="gardenId"></farm-info-popup>
     <farm-info-popup ref="farmInfoRef" :farmId="gardenId"></farm-info-popup>
 
 
-    <popup v-model:show="showFarmPopup" round class="create-farm-popup" :overlay-style="{'backdrop-filter': 'blur(4px)'}" :close-on-click-overlay="false">
-        <img class="create-farm-icon" src="@/assets/img/home/create-farm-icon.png" alt="" />
-        <div class="create-farm-text">
-            <div>您当前还没有农场</div>
-            <div>请先创建农场</div>
-        </div>
-        <div class="create-farm-btn" @click="toCreateFarm">去创建农场</div>
-    </popup>
+    <tip-popup
+        v-model:show="showFarmPopup"
+        :type="showFarmPopupType"
+        :text="textPopup"
+        :overlay-style="{'backdrop-filter': 'blur(4px)'}"
+        :close-on-click-overlay="false"
+        @confirm="toCreateFarm"
+    />
 </template>
 </template>
 
 
 <script setup>
 <script setup>
 import { ref, computed, onUnmounted, onActivated } from "vue";
 import { ref, computed, onUnmounted, onActivated } from "vue";
 import { useStore } from "vuex";
 import { useStore } from "vuex";
-import { Badge, List ,Popup} from "vant";
+import { Badge, List } from "vant";
 import weatherInfo from "@/components/weatherInfo.vue";
 import weatherInfo from "@/components/weatherInfo.vue";
 import { useRouter, useRoute } from "vue-router";
 import { useRouter, useRoute } from "vue-router";
 import farmInfoPopup from "../home/components/farmInfoPopup.vue";
 import farmInfoPopup from "../home/components/farmInfoPopup.vue";
+import tipPopup from "@/components/popup/tipPopup.vue";
+import { ElMessage } from "element-plus";
 
 
 const showFarmPopup = ref(false);
 const showFarmPopup = ref(false);
+const showFarmPopupType = ref("create");
+const textPopup = ref(['您当前还没有农场', '请先创建农场']);
 
 
 const toCreateFarm = () => {
 const toCreateFarm = () => {
-    router.push("/create_farm?isReload=true&from=monitor");
-    showFarmPopup.value = false;
+    if(showFarmPopupType.value == "create"){
+        router.push("/create_farm?isReload=true&from=monitor");
+    }
 };
 };
 
 
+const defaultGardenId = ref(null);
 onActivated(()=>{
 onActivated(()=>{
     showFarmPopup.value = false;
     showFarmPopup.value = false;
+    if(route.query.json){
+        localStorage.setItem('showSuccess', true);
+        const json = JSON.parse(route.query.json);
+        if(json.showSuccess){
+            receiveFarm(json)
+        }
+    }
     if(localStorage.getItem('isGarden') != 'true'){
     if(localStorage.getItem('isGarden') != 'true'){
         showFarmPopup.value = true;
         showFarmPopup.value = true;
     }
     }
 })
 })
 
 
+const receiveFarm = (json) => {
+    VE_API.monitor.receiveFarm({
+        agriculturalStoreId: json.agriculturalStoreId,
+        farmId: json.farmId,
+    }).then((res) => {
+        if(res.code === 0){
+            showFarmPopupType.value = "success";
+            showFarmPopup.value = true;
+            textPopup.value = '农场领取成功';
+            defaultGardenId.value = json.farmId;
+        }else{
+            ElMessage.warning(res.msg);
+        }
+    });
+}
+
 const store = useStore();
 const store = useStore();
 const tabBarHeight = computed(() => store.state.home.tabBarHeight);
 const tabBarHeight = computed(() => store.state.home.tabBarHeight);
 const router = useRouter();
 const router = useRouter();
@@ -312,44 +342,6 @@ function handlePage(url) {
 </script>
 </script>
 
 
 <style scoped lang="scss">
 <style scoped lang="scss">
-.create-farm-popup {
-    width: 75%;
-    padding: 28px 28px 20px;
-    display: flex;
-    flex-direction: column;
-    align-items: center;
-    justify-content: center;
-    .create-farm-icon {
-        width: 40px;
-        height: 40px;
-        margin-bottom: 12px;
-    }
-    .farm-check-icon {
-        width: 68px;
-        height: 68px;
-        margin-bottom: 12px;
-    }
-    .create-farm-text {
-        font-size: 18px;
-        font-weight: 500;
-        margin-bottom: 32px;
-        text-align: center;
-        &.success-text {
-            font-size: 23px;
-            font-weight: 400;
-        }
-    }
-    .create-farm-btn {
-        width: 100%;
-        box-sizing: border-box;
-        padding: 8px;
-        border-radius: 25px;
-        font-size: 16px;
-        background: #2199f8;
-        color: #fff;
-        text-align: center;
-    }
-}
 .monitor-index {
 .monitor-index {
     width: 100%;
     width: 100%;
     height: 100%;
     height: 100%;

+ 20 - 18
src/views/old_mini/user/index.vue

@@ -27,11 +27,10 @@
                         :key="ele.agriculturalStoreId"
                         :key="ele.agriculturalStoreId"
                         class="list-item"
                         class="list-item"
                         :data="{
                         :data="{
-                            farmName: ele.farmName,
+                            farmName: ele.name,
                             area: ele.mianji + '亩',
                             area: ele.mianji + '亩',
-                            variety: ele.typeName,
+                            variety: ele.speciesName,
                             address: ele.address,
                             address: ele.address,
-                            maxWidth:'56px',
                             mapImage: ele.mapImage || '/map.png',
                             mapImage: ele.mapImage || '/map.png',
                             // day: 15,
                             // day: 15,
                             // farmInfo: '梢期杀虫',
                             // farmInfo: '梢期杀虫',
@@ -40,7 +39,8 @@
                         @click="handleItemClick(ele)"
                         @click="handleItemClick(ele)"
                     >
                     >
                         <template #right>
                         <template #right>
-                            <div>在线沟通</div>
+                            <div @click.stop="handleChat(ele)">分享农场</div>
+                            <!-- <div @click.stop="handleChat(ele)">在线沟通</div> -->
                         </template>
                         </template>
                     </farm-info-card>
                     </farm-info-card>
                 </collapse-item>
                 </collapse-item>
@@ -57,6 +57,7 @@
 <script setup>
 <script setup>
 import { Collapse, CollapseItem } from "vant";
 import { Collapse, CollapseItem } from "vant";
 import { ref, onMounted } from "vue";
 import { ref, onMounted } from "vue";
+import wx from 'weixin-js-sdk';
 import { useRouter } from "vue-router";
 import { useRouter } from "vue-router";
 import addPopup from "./components/addPopup.vue";
 import addPopup from "./components/addPopup.vue";
 import FarmInfoCard from "@/components/pageComponents/FarmInfoCard.vue";
 import FarmInfoCard from "@/components/pageComponents/FarmInfoCard.vue";
@@ -80,22 +81,11 @@ const dataList = ref([
     }
     }
 ]);
 ]);
 const getUserList = async () => {
 const getUserList = async () => {
-    const { data } = await VE_API.user.userList();
+    const { data } = await VE_API.farm.userFarmSelectOption({agriculturalQuery:true});
     if(data.length){
     if(data.length){
         // 清空现有的子项
         // 清空现有的子项
         dataList.value[0].children = [];
         dataList.value[0].children = [];
-        dataList.value[1].children = [];
-        
-        // 根据 isVip 字段分类
-        data.forEach(item => {
-            if(item.isVip === 1) {
-                // Vip客户
-                dataList.value[0].children.push(item);
-            } else {
-                // 农场客户
-                dataList.value[1].children.push(item);
-            }
-        });
+        dataList.value[1].children = data || [];
     }
     }
 };
 };
 
 
@@ -108,7 +98,7 @@ const showPopup = () => {
 
 
 // 新增客户
 // 新增客户
 const handleAddClient = () => {
 const handleAddClient = () => {
-    router.push("/create_farm?type=client");
+    router.push("/create_farm?type=client&from=user");
 };
 };
 
 
 // 管理
 // 管理
@@ -116,6 +106,18 @@ const hadnleManage = (value) => {
     router.push(`/user_manage?name=${value.name}&total=${value.children.length}&isGroup=${value.isGroup}`);
     router.push(`/user_manage?name=${value.name}&total=${value.children.length}&isGroup=${value.isGroup}`);
 };
 };
 
 
+// 在线沟通
+const handleChat = (data) => {
+    const query = {
+        agriculturalStoreId: 1,
+        farmId: data.id,
+        speciesName: data.speciesName,
+    };
+    wx.miniProgram.navigateTo({
+        url: `/pages/subPages/share_page/index?pageParams=${JSON.stringify(query)}&type=shareFarm`,
+    });
+};
+
 // 处理列表项点击
 // 处理列表项点击
 const handleItemClick = (data) => {
 const handleItemClick = (data) => {
     router.push(`/farm_details?farmId=${data.farmId}`);
     router.push(`/farm_details?farmId=${data.farmId}`);