浏览代码

feat:修改创建逻辑

wangsisi 6 天之前
父节点
当前提交
2048e8a8e6
共有 2 个文件被更改,包括 193 次插入150 次删除
  1. 188 149
      src/views/old_mini/create_farm/index.vue
  2. 5 1
      src/views/old_mini/dev_login.vue

+ 188 - 149
src/views/old_mini/create_farm/index.vue

@@ -1,6 +1,10 @@
 <template>
     <div class="create-farm">
-        <custom-header :name="paramsType === 'client' ? '新增用户' : paramsType === 'edit' ? '编辑农场': '创建农场'" :isGoBack="true" @goback="backgToHome"></custom-header>
+        <custom-header
+            :name="paramsType === 'client' ? '新增用户' : paramsType === 'edit' ? '编辑农场' : '创建农场'"
+            :isGoBack="true"
+            @goback="backgToHome"
+        ></custom-header>
         <!-- 地图 -->
         <div class="map-container" ref="mapContainer"></div>
         <div class="farm-content">
@@ -35,16 +39,11 @@
                     <div class="box-content">
                         <div class="create-title">
                             <img class="title-icon" src="@/assets/img/home/create-icon.png" alt="" />
-                            {{ paramsType === 'client' ? "新增用户" : paramsType === 'edit' ?"编辑农场":"创建农场" }}
+                            {{ paramsType === "client" ? "新增用户" : paramsType === "edit" ? "编辑农场" : "创建农场" }}
                         </div>
                         <div class="create-content">
                             <div class="create-from">
-                                <el-form
-                                    ref="ruleFormRef"
-                                    :model="ruleForm"
-                                    :rules="rules"
-                                    class="demo-ruleForm"
-                                >
+                                <el-form ref="ruleFormRef" :model="ruleForm" :rules="rules" class="demo-ruleForm">
                                     <el-form-item label="农场位置" prop="address">
                                         <div class="position-wrap">
                                             <el-input
@@ -53,7 +52,9 @@
                                                 v-model="ruleForm.address"
                                                 autocomplete="off"
                                             />
-                                            <div class="draw-btn" @click="toSubPage">{{ hasDefaultPolygon ? '点击勾选地块' : '新增地块' }}</div>
+                                            <div class="draw-btn" @click="toSubPage">
+                                                {{ hasDefaultPolygon ? "点击勾选地块" : "新增地块" }}
+                                            </div>
                                         </div>
                                     </el-form-item>
                                     <el-form-item label="种植作物" prop="speciesItem">
@@ -108,7 +109,9 @@
                                     <el-form-item label="农场面积" prop="mu">
                                         <div class="area-box">
                                             <el-input
-                                                :placeholder="isFromEditMap ? '勾选地块获得农场面积' : '请输入农场的真实面积'"
+                                                :placeholder="
+                                                    isFromEditMap ? '勾选地块获得农场面积' : '请输入农场的真实面积'
+                                                "
                                                 v-model="ruleForm.mu"
                                                 :readonly="isFromEditMap"
                                                 type="text"
@@ -120,6 +123,20 @@
                                             <div class="unit">亩</div>
                                         </div>
                                     </el-form-item>
+                                    <el-form-item label="客户类型" prop="clientType" class="select-wrap client-wrap">
+                                        <el-select
+                                            class="select-item"
+                                            v-model="ruleForm.clientType"
+                                            placeholder="客户类型"
+                                        >
+                                            <el-option
+                                                v-for="(item, index) in clientTypeList"
+                                                :key="index"
+                                                :label="item.label"
+                                                :value="item.value"
+                                            />
+                                        </el-select>
+                                    </el-form-item>
                                     <el-form-item label="农场名称" prop="name">
                                         <el-input
                                             placeholder="请输入您的农场名称"
@@ -128,13 +145,26 @@
                                             @input="handleFarmNameInput"
                                         />
                                     </el-form-item>
-                                    <Checkbox v-if="paramsType !== 'client' && curRole == 0" class="checkbox" icon-size="18px" shape="square" v-model="ruleForm.defaultFarm">是否勾选为默认农场</Checkbox>
+                                    <Checkbox
+                                        v-if="paramsType !== 'client' && curRole == 0"
+                                        class="checkbox"
+                                        icon-size="18px"
+                                        shape="square"
+                                        v-model="ruleForm.defaultFarm"
+                                        >是否勾选为默认农场</Checkbox
+                                    >
                                 </el-form>
                             </div>
                             <div class="create-btn">
                                 <div class="btn-item sencond-btn" @click="resetForm(ruleFormRef)">取消</div>
                                 <div class="btn-item primary-btn" @click="submitForm(ruleFormRef)">
-                                    {{ paramsType === 'client' ? "添加" : paramsType === 'edit' ?"确认修改":"立即创建" }}
+                                    {{
+                                        paramsType === "client"
+                                            ? "添加"
+                                            : paramsType === "edit"
+                                            ? "确认修改"
+                                            : "立即创建"
+                                    }}
                                 </div>
                             </div>
                         </div>
@@ -183,36 +213,34 @@ function generateSquarePolygonBySideLength(center, sideLength) {
     // 确保输入是数字类型
     const lng = parseFloat(center[0]);
     const lat = parseFloat(center[1]);
-    
+
     // 半边长(米)
     const halfSide = sideLength / 2;
-    
+
     // 纬度方向:1度约等于111000米
     const latDelta = halfSide / 111000;
-    
+
     // 经度方向:需要根据纬度调整,1度约等于111000 * cos(lat)米
-    const lngDelta = halfSide / (111000 * Math.cos(lat * Math.PI / 180));
-    
+    const lngDelta = halfSide / (111000 * Math.cos((lat * Math.PI) / 180));
+
     // 计算四个顶点(逆时针顺序)
     const topLeft = [lng - lngDelta, lat + latDelta];
     const topRight = [lng + lngDelta, lat + latDelta];
     const bottomRight = [lng + lngDelta, lat - latDelta];
     const bottomLeft = [lng - lngDelta, lat - latDelta];
-    
+
     // 生成MULTIPOLYGON格式的WKT(需要闭合,所以第一个点要重复)
     // 明确使用join来格式化坐标点
     const formatPoint = (point) => `${point[0]} ${point[1]}`;
-    const coordinates = [topLeft, topRight, bottomRight, bottomLeft, topLeft]
-        .map(formatPoint)
-        .join(', ');
-    
+    const coordinates = [topLeft, topRight, bottomRight, bottomLeft, topLeft].map(formatPoint).join(", ");
+
     // 注意:MULTIPOLYGON 和括号之间需要有一个空格
     const wkt = `MULTIPOLYGON (((${coordinates})))`;
-    
+
     // 计算面积(亩): 边长200米 = 40,000平方米 ≈ 60亩
     const areaInSquareMeters = sideLength * sideLength;
     const areaInMu = (areaInSquareMeters / 666.67).toFixed(2);
-    
+
     return { wkt, area: areaInMu };
 }
 
@@ -226,35 +254,33 @@ function generateSquarePolygonByMu(center, mu) {
     // 确保输入是数字类型
     const lng = parseFloat(center[0]);
     const lat = parseFloat(center[1]);
-    
+
     // 1亩 ≈ 666.67平方米
     const areaInSquareMeters = mu * 666.67;
     // 正方形边长(米)
     const sideLength = Math.sqrt(areaInSquareMeters);
     // 半边长(米)
     const halfSide = sideLength / 2;
-    
+
     // 纬度方向:1度约等于111000米
     const latDelta = halfSide / 111000;
-    
+
     // 经度方向:需要根据纬度调整,1度约等于111000 * cos(lat)米
-    const lngDelta = halfSide / (111000 * Math.cos(lat * Math.PI / 180));
-    
+    const lngDelta = halfSide / (111000 * Math.cos((lat * Math.PI) / 180));
+
     // 计算四个顶点(逆时针顺序)
     const topLeft = [lng - lngDelta, lat + latDelta];
     const topRight = [lng + lngDelta, lat + latDelta];
     const bottomRight = [lng + lngDelta, lat - latDelta];
     const bottomLeft = [lng - lngDelta, lat - latDelta];
-    
+
     // 生成MULTIPOLYGON格式的WKT(需要闭合,所以第一个点要重复)
     const formatPoint = (point) => `${point[0]} ${point[1]}`;
-    const coordinates = [topLeft, topRight, bottomRight, bottomLeft, topLeft]
-        .map(formatPoint)
-        .join(', ');
-    
+    const coordinates = [topLeft, topRight, bottomRight, bottomLeft, topLeft].map(formatPoint).join(", ");
+
     // 注意:MULTIPOLYGON 和括号之间需要有一个空格
     const wkt = `MULTIPOLYGON (((${coordinates})))`;
-    
+
     return { wkt, area: parseFloat(mu).toFixed(2) };
 }
 
@@ -263,7 +289,7 @@ onMounted(() => {
     store.commit("home/SET_FARM_POLYGON", null);
     isFromEditMap.value = false; // 初始化时可以手动输入
     hasDefaultPolygon.value = false; // 初始化时没有默认地块
-    
+
     centerPoint.value = store.state.home.miniUserLocationPoint;
     const arr = convertPointToArray(centerPoint.value);
     getLocationName(`${arr[1]},${arr[0]}`);
@@ -272,11 +298,11 @@ onMounted(() => {
     // 不再初始化时绘制默认地块,等待用户点击"新增地块"按钮
     // 清空地块和面积数据
     polygonArr.value = null;
-    ruleForm.mu = '';
-    ruleForm.typeId = '';
+    ruleForm.mu = "";
+    ruleForm.typeId = "";
 
     // 如果是编辑模式,等待品类列表加载完成后再回填数据
-    if (route.query.type === 'edit' && store.state.home.editFarmData) {
+    if (route.query.type === "edit" && store.state.home.editFarmData) {
         getSpecieList().then(() => {
             populateEditData();
         });
@@ -285,11 +311,16 @@ onMounted(() => {
     }
 });
 
+const clientTypeList = [{
+    label:'全托管客户',
+    value:1
+}]
+
 const polygonArr = ref(null);
 const paramsType = ref(null);
 onActivated(() => {
     paramsType.value = route.query.type;
-    
+
     // 确保地图已初始化,使用 nextTick 等待 DOM 更新
     nextTick(() => {
         // 检查地图实例是否已初始化
@@ -306,7 +337,7 @@ onActivated(() => {
             }, 100);
             return;
         }
-        
+
         handleMapUpdate();
     });
 });
@@ -318,34 +349,33 @@ function handleMapUpdate() {
         store.commit("home/SET_FARM_POLYGON", null);
         isFromEditMap.value = false; // 从home进入,可以手动输入
         hasDefaultPolygon.value = false; // 重置默认地块状态
-        
+
         centerPoint.value = store.state.home.miniUserLocationPoint;
         const arr = convertPointToArray(centerPoint.value);
         getLocationName(`${arr[1]},${arr[0]}`);
         indexMap.setMapPosition(arr);
-        
+
         indexMap.clearLayer();
-        
+
         // 不再自动生成默认地块,等待用户点击"新增地块"
         polygonArr.value = null;
-        ruleForm.mu = '';
-        ruleForm.typeId = '';
+        ruleForm.mu = "";
+        ruleForm.typeId = "";
         ruleForm.defaultFarm = false;
-        
+
         return; // 直接返回,不执行下面的逻辑
     }
-    
+
     indexMap.clearLayer();
     // 绘制勾画范围(从edit_map返回的情况)
     const polygonData = store.state.home.polygonData;
-    
+
     // 优先处理从编辑地图页面返回的数据
     if (polygonData) {
         // 检查地块数据是否有效(数组存在且不为空)
-        const hasValidGeometry = polygonData.geometryArr && 
-                                 Array.isArray(polygonData.geometryArr) && 
-                                 polygonData.geometryArr.length > 0;
-        
+        const hasValidGeometry =
+            polygonData.geometryArr && Array.isArray(polygonData.geometryArr) && polygonData.geometryArr.length > 0;
+
         if (hasValidGeometry) {
             // 用户从edit_map返回,且有有效的地块数据
             // 根据 isConfirmed 判断是否锁定输入框
@@ -369,12 +399,12 @@ function handleMapUpdate() {
             // 用户在编辑页面删除了所有地块
             // 重置所有状态
             polygonArr.value = null;
-            ruleForm.mu = '';
+            ruleForm.mu = "";
             isFromEditMap.value = false;
             hasDefaultPolygon.value = false;
             ruleForm.defaultFarm = false;
         }
-    } else if (route.query.type === 'edit' && store.state.home.editFarmData) {
+    } else if (route.query.type === "edit" && store.state.home.editFarmData) {
         // 如果是编辑模式且没有从编辑地图返回的数据,回填原始编辑数据
         populateEditData();
     } else if (centerPoint.value && polygonArr.value) {
@@ -435,7 +465,7 @@ const handleSearchRes = (v) => {
     ruleForm.address = v.item?.title || v.item?.address;
     pointAddress.value = v.item?.province + v.item?.city + v.item?.district;
     // 更新farmCity以便后续更新农场名称
-    farmCity.value = v.item?.city + v.item?.district || '';
+    farmCity.value = v.item?.city + v.item?.district || "";
     // 地址修改后,如果满足条件则自动更新农场名称
     updateFarmNameIfNeeded();
 };
@@ -450,18 +480,19 @@ const ruleForm = reactive({
     name: "",
     fzr: "",
     tel: "",
-    defaultFarm:0, // 0:否 1:是
+    clientType: 1,
+    defaultFarm: 0, // 0:否 1:是
 });
 // 自定义验证规则:验证面积必须是大于0的数字
 const validateMianji = (rule, value, callback) => {
     if (!value) {
-        callback(new Error('请输入农场面积'));
+        callback(new Error("请输入农场面积"));
     } else {
         const num = parseFloat(value);
         if (isNaN(num)) {
-            callback(new Error('面积必须是数字'));
+            callback(new Error("面积必须是数字"));
         } else if (num <= 0) {
-            callback(new Error('面积必须大于0'));
+            callback(new Error("面积必须大于0"));
         } else {
             callback();
         }
@@ -470,9 +501,10 @@ const validateMianji = (rule, value, callback) => {
 
 const rules = reactive({
     address: [{ required: true, message: "请选择农场位置", trigger: "blur" }],
+    clientType: [{ required: true, message: "请选择客户类型", trigger: "blur" }],
     mu: [
         { required: true, message: "请输入农场面积", trigger: "blur" },
-        { validator: validateMianji, trigger: ["blur", "change"] }
+        { validator: validateMianji, trigger: ["blur", "change"] },
     ],
     speciesItem: [{ required: true, message: "请选择品类", trigger: "blur" }],
     typeId: [{ required: true, message: "请选择品种", trigger: "blur" }],
@@ -480,16 +512,16 @@ const rules = reactive({
     fzr: [{ required: true, message: "请输入联系人姓名", trigger: "blur" }],
     tel: [
         { required: true, message: "请输入联系人电话", trigger: "blur" },
-        { 
-            pattern: /^1[3-9]\d{9}$/, 
-            message: "请输入正确的手机号码", 
-            trigger: "blur" 
-        }
+        {
+            pattern: /^1[3-9]\d{9}$/,
+            message: "请输入正确的手机号码",
+            trigger: "blur",
+        },
     ],
     defaultFarm: [{ required: true, message: "请选择是否为默认农场", trigger: "blur" }],
 });
 
-const curRole = localStorage.getItem('SET_USER_CUR_ROLE');
+const curRole = localStorage.getItem("SET_USER_CUR_ROLE");
 
 const submitForm = (formEl) => {
     if (!formEl) return;
@@ -500,19 +532,22 @@ const submitForm = (formEl) => {
                 wkt: centerPoint.value,
                 speciesId: ruleForm.speciesItem?.id,
                 containerId: ruleForm.speciesItem?.defaultContainerId,
-                agriculturalCreate: route.query.type === 'client' ? 1 : 0,
+                agriculturalCreate: route.query.type === "client" ? 1 : 0,
                 // 编辑时geom不是数组,新增时是数组
-                geom: route.query.type === 'edit' 
-                    ? (polygonArr.value && polygonArr.value.length > 0 ? polygonArr.value[0] : null)
-                    : polygonArr.value,
+                geom:
+                    route.query.type === "edit"
+                        ? polygonArr.value && polygonArr.value.length > 0
+                            ? polygonArr.value[0]
+                            : null
+                        : polygonArr.value,
             };
 
             // 如果是编辑模式,添加农场ID
-            if (route.query.type === 'edit' && route.query.farmId) {
+            if (route.query.type === "edit" && route.query.farmId) {
                 params.farmId = route.query.farmId;
             }
 
-            if(route.query.type === 'client'){
+            if (route.query.type === "client") {
                 // 处理 geom 参数,如果是数组需要序列化
                 const queryParams = {
                     ...params,
@@ -531,46 +566,43 @@ const submitForm = (formEl) => {
                 });
                 return;
             }
-            
-            const apiCall = route.query.type === 'edit' 
-                ? VE_API.farm.updateFarm(params)
-                : VE_API.farm.saveFarm(params);
-                
+
+            const apiCall = route.query.type === "edit" ? VE_API.farm.updateFarm(params) : VE_API.farm.saveFarm(params);
+
             apiCall.then((res) => {
-                if(res.code === 0) {
-                    ElMessage.success(route.query.type === 'edit' ? "修改成功" : "创建成功");
+                if (res.code === 0) {
+                    ElMessage.success(route.query.type === "edit" ? "修改成功" : "创建成功");
                     // 重置表单和地块数据
                     ruleFormRef.value.resetFields();
                     store.commit("home/SET_FARM_POLYGON", null);
                     store.commit("home/SET_EDIT_FARM_DATA", null); // 清除编辑数据
                     polygonArr.value = null;
                     isFromEditMap.value = false;
-                    localStorage.setItem('isGarden', true);
+                    localStorage.setItem("isGarden", true);
 
-                    if(route.query.type !== 'edit' && curRole == 0){
-                        localStorage.setItem('selectedFarmId', res.data.id);
-                        localStorage.setItem('selectedFarmName', res.data.name);
+                    if (route.query.type !== "edit" && curRole == 0) {
+                        localStorage.setItem("selectedFarmId", res.data.id);
+                        localStorage.setItem("selectedFarmName", res.data.name);
                     }
-                    
+
                     // 根据来源页面决定跳转目标
                     const fromPage = route.query.from;
-                    if (fromPage && fromPage !== 'details') {
+                    if (fromPage && fromPage !== "details") {
                         // 如果是从monitor页面来的
                         router.replace(`/${fromPage}`);
-                        if(fromPage === 'home'){
+                        if (fromPage === "home") {
                             let showSuccess = false;
-                            if(localStorage.getItem('isGarden') != 'true' && curRole == 0){
+                            if (localStorage.getItem("isGarden") != "true" && curRole == 0) {
                                 showSuccess = true;
                             }
                             router.replace(`/home?showSuccess=${showSuccess}`);
                         }
-                        
                     } else if (fromPage === "details") {
-                        router.go(-1)
+                        router.go(-1);
                     } else {
                         router.replace(`/home`);
                     }
-                }else{
+                } else {
                     ElMessage.error(res.msg);
                 }
             });
@@ -586,14 +618,14 @@ const resetForm = (formEl) => {
     polygonArr.value = null;
     isFromEditMap.value = false;
     hasDefaultPolygon.value = false; // 重置默认地块状态
-    
+
     // 根据来源页面决定返回目标
     const fromPage = route.query.from;
-    if (fromPage && fromPage !== 'details') {
+    if (fromPage && fromPage !== "details") {
         router.replace(`/${fromPage}`);
         return;
     }
-    router.go(-1)
+    router.go(-1);
 };
 
 const centerPoint = ref(null);
@@ -603,37 +635,37 @@ function toSubPage() {
     if (!hasDefaultPolygon.value) {
         if (centerPoint.value) {
             const arr = convertPointToArray(centerPoint.value);
-            const squareData = generateSquarePolygonBySideLength(arr, 200);  // 200米边长
+            const squareData = generateSquarePolygonBySideLength(arr, 200); // 200米边长
             const geometryData = {
                 geometryArr: [squareData.wkt],
                 mianji: squareData.area,
             };
-            
+
             // 绘制默认地块
             indexMap.setAreaGeometry(geometryData.geometryArr);
-            
+
             // 保存地块数据
             polygonArr.value = geometryData.geometryArr;
-            
+
             // 标记已创建默认地块
             hasDefaultPolygon.value = true;
-            
+
             // 不跳转,停留在当前页面
             return;
         }
     }
-    
+
     // 如果已有默认地块,则跳转到编辑页面
     // 保存到store中以便在编辑页面回显
     if (polygonArr.value) {
         const polygonData = {
             geometryArr: polygonArr.value,
-            mianji: ruleForm.mu || '',  // 保存用户输入的面积,如果没有输入则为空
-            isConfirmed: false,  // 标记:还未从编辑页面确认返回
+            mianji: ruleForm.mu || "", // 保存用户输入的面积,如果没有输入则为空
+            isConfirmed: false, // 标记:还未从编辑页面确认返回
         };
         store.commit("home/SET_FARM_POLYGON", polygonData);
     }
-    
+
     router.push(
         `/edit_map?mapCenter=${centerPoint.value}&pointName=${ruleForm.address}&pointAddress=${pointAddress.value}&from=${route.query.from}&type=${route.query.type}`
     );
@@ -651,7 +683,7 @@ function getLocationName(location) {
         const add = result.formatted_addresses?.recommend ? result.formatted_addresses.recommend : result.address + "";
         ruleForm.address = add;
         pointAddress.value = result.address;
-        farmCity.value = result.address_component?.city + result.address_component?.district || '';
+        farmCity.value = result.address_component?.city + result.address_component?.district || "";
         // 地址修改后,如果满足条件则自动更新农场名称
         updateFarmNameIfNeeded();
     });
@@ -680,9 +712,9 @@ function getSpecieList() {
 function changeSpecie(v) {
     getFruitsTypeItemList(v.id);
     // 清空品种选择
-    ruleForm.typeId = '';
+    ruleForm.typeId = "";
     // 只有在创建模式下且用户没有手动修改过农场名称时,才自动设置农场名称
-    if (route.query.type !== 'edit' && !isFarmNameManuallyModified.value) {
+    if (route.query.type !== "edit" && !isFarmNameManuallyModified.value) {
         ruleForm.name = farmCity.value + v.name + "农场";
     }
 }
@@ -696,14 +728,14 @@ function getFruitsTypeItemList(parentId) {
 
 function backgToHome() {
     ruleFormRef.value?.resetFields();
-    
+
     // 根据来源页面决定返回目标
     const fromPage = route.query.from;
-    if (fromPage && fromPage !== 'details') {
+    if (fromPage && fromPage !== "details") {
         router.replace(`/${fromPage}`);
         return;
     } else {
-        router.go(-1)
+        router.go(-1);
     }
 }
 
@@ -714,25 +746,25 @@ function handleMianjiKeypress(event) {
         event.preventDefault();
         return;
     }
-    
+
     const charCode = event.which ? event.which : event.keyCode;
     const char = String.fromCharCode(charCode);
-    
+
     // 允许数字 (0-9) 和小数点 (.)
     if (!/^[0-9.]$/.test(char)) {
         event.preventDefault();
         return;
     }
-    
+
     // 如果已经有小数点,不允许再输入小数点
-    const currentValue = ruleForm.mu || '';
-    if (char === '.' && currentValue.includes('.')) {
+    const currentValue = ruleForm.mu || "";
+    if (char === "." && currentValue.includes(".")) {
         event.preventDefault();
         return;
     }
-    
+
     // 不允许以小数点开头
-    if (char === '.' && !currentValue) {
+    if (char === "." && !currentValue) {
         event.preventDefault();
         return;
     }
@@ -747,7 +779,7 @@ function handleFarmNameInput() {
 // 根据地址更新农场名称(如果满足条件)
 function updateFarmNameIfNeeded() {
     // 只有在创建模式下且用户没有手动修改过农场名称且已选择品类时,才自动更新农场名称
-    if (route.query.type !== 'edit' && !isFarmNameManuallyModified.value && ruleForm.speciesItem && farmCity.value) {
+    if (route.query.type !== "edit" && !isFarmNameManuallyModified.value && ruleForm.speciesItem && farmCity.value) {
         ruleForm.name = farmCity.value + ruleForm.speciesItem.name + "农场";
     }
 }
@@ -758,22 +790,22 @@ function populateEditData() {
     if (!editData) {
         return;
     }
-    
+
     // 回填基本信息
-    ruleForm.name = editData.name || '';
-    ruleForm.fzr = editData.fzr || '';
-    ruleForm.tel = editData.tel || '';
+    ruleForm.name = editData.name || "";
+    ruleForm.fzr = editData.fzr || "";
+    ruleForm.tel = editData.tel || "";
     ruleForm.defaultFarm = editData.defaultOption || false;
-    ruleForm.mu = editData.mianji || '';
-    ruleForm.address = editData.address || '';
-    
+    ruleForm.mu = editData.mianji || "";
+    ruleForm.address = editData.address || "";
+
     // 设置地图中心点
     if (editData.pointWkt) {
         centerPoint.value = editData.pointWkt;
         const arr = convertPointToArray(editData.pointWkt);
         indexMap.setMapPosition(arr);
     }
-    
+
     // 处理地块数据
     if (editData.geomWkt) {
         polygonArr.value = [editData.geomWkt];
@@ -781,7 +813,7 @@ function populateEditData() {
         hasDefaultPolygon.value = true;
         isFromEditMap.value = true; // 编辑模式下锁定面积输入
     }
-    
+
     // 处理作物数据
     if (editData.speciesId && editData.speciesName) {
         // 设置品类 - 需要匹配模板中的数据结构
@@ -789,25 +821,25 @@ function populateEditData() {
             value: editData.speciesId,
             id: editData.speciesId,
             name: editData.speciesName,
-            defaultContainerId: editData.containerId
+            defaultContainerId: editData.containerId,
         };
-        
+
         // 获取品种列表
         getFruitsTypeItemList(editData.speciesId);
-        
+
         // 设置品种
         if (editData.typeId) {
             ruleForm.typeId = editData.typeId;
         }
     }
-    
+
     // 设置地址信息
     if (editData.district) {
         try {
             const districtInfo = JSON.parse(editData.district);
             pointAddress.value = districtInfo.province + districtInfo.city + districtInfo.district;
         } catch (e) {
-            console.warn('解析地址信息失败:', e);
+            console.warn("解析地址信息失败:", e);
         }
     }
 }
@@ -819,56 +851,56 @@ function handleMianjiInput(value) {
     if (isFromEditMap.value) {
         return;
     }
-    
+
     // 过滤非法字符,只保留数字和小数点
-    let filteredValue = value.replace(/[^\d.]/g, '');
-    
+    let filteredValue = value.replace(/[^\d.]/g, "");
+
     // 确保只有一个小数点
-    const parts = filteredValue.split('.');
+    const parts = filteredValue.split(".");
     if (parts.length > 2) {
-        filteredValue = parts[0] + '.' + parts.slice(1).join('');
+        filteredValue = parts[0] + "." + parts.slice(1).join("");
     }
-    
+
     // 限制小数点后最多2位
     if (parts.length === 2 && parts[1].length > 2) {
-        filteredValue = parts[0] + '.' + parts[1].substring(0, 2);
+        filteredValue = parts[0] + "." + parts[1].substring(0, 2);
     }
-    
+
     // 更新输入框的值(如果被过滤了)
     if (filteredValue !== value) {
         ruleForm.mu = filteredValue;
         return;
     }
-    
+
     // 清除之前的定时器
     if (mianjiInputTimer) {
         clearTimeout(mianjiInputTimer);
     }
-    
+
     // 防抖处理,用户停止输入500ms后再更新地块
     mianjiInputTimer = setTimeout(() => {
         const mu = parseFloat(filteredValue);
-        
+
         // 验证输入的有效性
         if (!mu || isNaN(mu) || mu <= 0) {
             return;
         }
-        
+
         // 根据亩数重新生成地块
         if (centerPoint.value) {
             const arr = convertPointToArray(centerPoint.value);
             const squareData = generateSquarePolygonByMu(arr, mu);
-            
+
             const geometryData = {
                 geometryArr: [squareData.wkt],
                 mianji: squareData.area,
             };
-            
+
             // 清除旧地块
             indexMap.clearLayer();
             // 绘制新地块
             indexMap.setAreaGeometry(geometryData.geometryArr);
-            
+
             // 更新状态
             polygonArr.value = geometryData.geometryArr;
             // 标记已创建默认地块
@@ -879,8 +911,8 @@ function handleMianjiInput(value) {
 </script>
 
 <style lang="scss" scoped>
-::v-deep{
-    .el-form-item--default{
+::v-deep {
+    .el-form-item--default {
         margin-bottom: 20px;
     }
 }
@@ -893,7 +925,7 @@ function handleMianjiInput(value) {
         width: 100%;
         height: calc(100% - 320px);
     }
-    .checkbox{
+    .checkbox {
         padding: 0 12px 6px;
         font-size: 15px;
     }
@@ -1051,6 +1083,13 @@ function handleMianjiInput(value) {
                             width: fit-content;
                         }
                     }
+                    &.client-wrap{
+                        ::v-deep{
+                            .el-select__wrapper {
+                                justify-content: flex-start;
+                            }
+                        }
+                    }
                     // .select-item {
                     //     width: fit-content;
                     // }

+ 5 - 1
src/views/old_mini/dev_login.vue

@@ -64,7 +64,11 @@ onMounted(async () => {
     store.commit("home/SET_MINI_USER_LOCATION", route.query.point);
     store.commit("home/SET_MINI_USER_ID", userId);
     store.commit("home/SET_MINI_USER_LOCATION_POINT", `POINT(${pointXy[0]} ${pointXy[1]})`);
-    router.push(`${targetUrl}?miniJson=${JSON.stringify(route.query)}`);
+    if(route.query.targetUrl === "/create_farm"){
+        router.push("/create_farm?isReload=true&from=home");
+    }else{
+        router.push(`${targetUrl}?miniJson=${JSON.stringify(route.query)}`);
+    }
 })
 
 const getFarmList = async () => {