Forráskód Böngészése

fix: 对接编辑接口

刘秀芳 23 órája
szülő
commit
939eb0ff1d

+ 8 - 1
src/api/modules/manage_interface.js

@@ -17,5 +17,12 @@ module.exports = {
         url: config.base_url + "adm/regionList",
         type: "post",
     },
-    
+    editFosterSample: {
+        url: config.base_url + "adm/editFosterSample",
+        type: "post",
+    },
+    batchOpenOrCloseSample: {
+        url: config.base_url + "adm/batchOpenOrCloseSample",
+        type: "post",
+    },
 }

+ 21 - 11
src/views/home/album_compoents/albumCarousel.vue

@@ -59,13 +59,13 @@
                                             style="width: 240px;"
                                         />
                                     </el-form-item>
-                                    <el-form-item label="栽种时间" prop="time">
+                                    <el-form-item label="栽种时间" prop="plantDate">
                                         <el-date-picker
-                                            v-model="ruleForm.time"
+                                            v-model="ruleForm.plantDate"
                                             type="date"
-                                            format="YYYY.MM.DD"
+                                            format="YYYY-MM-DD"
                                             style="width: 240px;"
-                                            value-format="YYYY.MM.DD"
+                                            value-format="YYYY-MM-DD"
                                             placeholder="请选择栽种时间"
                                         />
                                     </el-form-item>
@@ -154,9 +154,13 @@ const showTag = ref(false);
 eventBus.off("click:point", handleClickPoint);
 eventBus.on("click:point", handleClickPoint);
 
+const sampleIdVal = ref(null)
 function handleClickPoint({ farmId, sampleId, data }) {
-    console.log("click:point");
-    sampleId = data.id;
+    // sampleId = data.id;
+    sampleIdVal.value = sampleId
+    ruleForm.pz = data.pz
+    ruleForm.age = data.age
+    ruleForm.plantDate = data.plantDate
     data.geoHashSample && getSampleFiles(data.geoHashSample);
     photoBaseData.value[0].value = data.pz;
     isLoadingImg.value = true;
@@ -239,17 +243,17 @@ const ruleFormRef = ref();
 const ruleForm = reactive({
     pz: "",
     age: null,
-    time: "",
-    user: "",
+    plantDate: "",
+    offlineTakeSelected: [],
 });
 
 const rules = reactive({
     pz: [{ required: true, message: "请输入品种", trigger: "blur" }],
     age: [{ required: true, message: "请输入树龄", trigger: "blur" }],
-    time: [
+    plantDate: [
         {
             type: "date",
-            required: true,
+            required: false,
             message: "请选择栽种时间",
             trigger: "change",
         },
@@ -261,11 +265,17 @@ async function saveEdit(isToSave) {
         // 保存
         await ruleFormRef.value.validate((valid, fields) => {
             if (valid) {
+                console.log('ruleForm', ruleForm);
                 console.log('submit!')
+                VE_API.manage_interface.editFosterSample({...ruleForm, sampleId: sampleIdVal.value}).then(() => {
+                    console.log('dadata');
+                })
             } else {
                 console.log('error submit!', fields)
             }
         })
+    } else {
+        dialogVisible.value = false
     }
 }
 </script>
@@ -387,7 +397,7 @@ async function saveEdit(isToSave) {
                         font-size: 16px;
                     }
                     .el-form-item--default {
-                        margin-bottom: 12px;
+                        margin-bottom: 16px;
                     }
                 }
             }

+ 40 - 22
src/views/home/homeMap.vue

@@ -26,8 +26,6 @@ import { useStore } from "vuex";
 import { unByKey } from "ol/Observable";
 let store = useStore();
 
-const ROLE = store.state.home.userRole;
-
 // 选中样式(高亮)
 // const selectedStyle = new Style({
 //     image: new Icon({
@@ -45,7 +43,7 @@ const currentTree = ref(null)
 
 const isDrawing = ref(false);
 const enableBoxSelect = () => {
-    const data = mapPoint.value.filter((item) => item.fosterStatus === 0);
+    const data = mapPoint.value.filter((item) => !item.isRenyang);
     addCluster(data, 1);
     isDrawing.value = true;
     dragBox = new DragBox({
@@ -92,6 +90,24 @@ const stopBoxSelect = () => {
     window.removeEventListener("keyup", handleKeyUp);
 };
 
+function saveSelect(callback) {
+    let sampleIds = []
+    treeClusterLayer.layer.getSource().getSource().getFeatures().forEach((feature) => {
+        if (feature.get("highlight")) {
+            sampleIds.push(feature.get("sampleId"))
+        }
+    })
+    const params = {
+        sampleIds,
+        isRenyang: 1,
+        farmId: Number(sessionStorage.getItem("currentFarmId"))
+    }
+    VE_API.manage_interface.batchOpenOrCloseSample(params).then(() => {
+        callback && callback()
+    })
+    console.log('sampleIds', sampleIds);
+}
+
 let treeClusterLayer;
 onMounted(() => {
     let level = 16;
@@ -145,7 +161,7 @@ function addCluster(treeListData, distanceVal) {
             // 只有一个数据,不需要聚合,直接使用第一项数据的图标
             if (size == 1) {
                let featureOne = feature.get("features")[0];
-                const key = featureOne.get('fosterStatus')+"status"
+                const key = featureOne.get('isRenyang')+"status"
                 let style = styleCache[key];
                 // let style = false;
                 if (!style) {
@@ -168,16 +184,16 @@ function addCluster(treeListData, distanceVal) {
                     } else {
                         style = new Style({
                             image: new Circle({
-                                radius: featureOne.get("fosterStatus") === 0 || !featureOne.get("fosterStatus") ? 10 : 12,
+                                radius: featureOne.get("isRenyang") === 0 || !featureOne.get("isRenyang") ? 10 : 12,
                                 fill: new Fill({
                                     color:
-                                        featureOne.get("fosterStatus") === 0
-                                            ? (ROLE == 1 ? "#ffffff00" : "#BBBBBB99")
-                                            : featureOne.get("fosterStatus") === 1
+                                        featureOne.get("isRenyang") === 0
+                                            ? "#ffffff00"
+                                            : featureOne.get("isRenyang") === 1
                                             ? "#EEEEEE"
-                                            : featureOne.get("fosterStatus") === 2
+                                            : featureOne.get("isRenyang") === 2
                                             ? "#F0AC37"
-                                            : (ROLE == 1 ? "#ffffff00" : "#BBBBBB99"),
+                                            : "#ffffff00",
                                 }),
                                 stroke: new Stroke({
                                     color: "#fff",
@@ -207,13 +223,14 @@ function addCluster(treeListData, distanceVal) {
                                 color: "#fff",
                             }),
                         }),
+                        zIndex: 4
                     });
                 }
                 return style;
             }
             // 多个点位聚合,循环处理得到图标
             const featureObj = feature.get("features")[0];
-            // let pointId = featureObj.get('fosterStatus')
+            // let pointId = featureObj.get('isRenyang')
             // let style = styleCache[pointId];
                 const imgIcon = featureObj.get('icon')
             let style = false;
@@ -224,7 +241,7 @@ function addCluster(treeListData, distanceVal) {
                         offsetX: 0,
                         offsetY: 0,
                         font: "bold 10px sans-serif",
-                        fill: new Fill({ color: featureObj.get("fosterStatus") === 1 ? "#000" : "#fff" }), // 字体颜色
+                        fill: new Fill({ color: featureObj.get("isRenyang") === 1 ? "#000" : "#fff" }), // 字体颜色
                         // stroke: new Stroke({ color: "green" }), // 字体颜色
                     }),
                     zIndex: 3,
@@ -261,21 +278,22 @@ function addCluster(treeListData, distanceVal) {
                                     width: 2,
                                     color: "#fff",
                                 }),
-                            })
+                            }),
+                            zIndex: 4
                         });
                     } else {
                         style = new Style({
                             image: new Circle({
-                                radius: featureObj.get("fosterStatus") === 0 || !featureObj.get("fosterStatus") ? 10 : 12,
+                                radius: featureObj.get("isRenyang") === 0 || !featureObj.get("isRenyang") ? 10 : 12,
                                 fill: new Fill({
                                     color:
-                                        featureObj.get("fosterStatus") === 0
-                                            ? (ROLE == 1 ? "#ffffff00" : "#BBBBBB99")
-                                            : featureObj.get("fosterStatus") === 1
+                                        featureObj.get("isRenyang") === 0
+                                            ? "#ffffff00"
+                                            : featureObj.get("isRenyang") === 1
                                             ? "#EEEEEE"
-                                            : featureObj.get("fosterStatus") === 2
+                                            : featureObj.get("isRenyang") === 2
                                             ? "#F0AC37"
-                                            : (ROLE == 1 ? "#ffffff00" : "#BBBBBB99"),
+                                            : "#ffffff00",
                                 }),
                                 stroke: new Stroke({
                                     color: "#fff",
@@ -328,7 +346,7 @@ function addCluster(treeListData, distanceVal) {
                         const fs = features[0]
                         currentTree.value = features[0]
                         console.log('hasFeatures', fs);
-                        eventBus.emit("click:point", { farmId: fs.get("farmId"), sampleId: fs.get("sampleId"), data: fs.getProperties() })
+                        eventBus.emit("click:point", { farmId: Number(sessionStorage.getItem("currentFarmId")), sampleId: fs.get("sampleId"), data: fs.getProperties() })
                         // eventBus.emit("clickMapPoint", features[0])
                     }
                 }
@@ -349,7 +367,7 @@ function clearCluster() {
 
 function zoomToFeatures(features) {
     const extent = boundingExtent(features.map((r) => r.getGeometry().getCoordinates()));
-    kmap.getView().fit(extent, { duration: 500, padding: [200, 250, 120, 250] });
+    kmap.getView().fit(extent, { duration: 500, padding: [80, 250, 100, 250] });
 
     // const center = getCenter(extent);
     // kmap.setCenter2(center);
@@ -359,7 +377,7 @@ function resetCurrentTree() {
     currentTree.value && currentTree.value.set("currentTree", false)
 }
 
-defineExpose({ addCluster, enableBoxSelect, stopBoxSelect, initAreaMap, resetCurrentTree });
+defineExpose({ addCluster, enableBoxSelect, stopBoxSelect, initAreaMap, resetCurrentTree, saveSelect });
 
 // 分区
 let regionLayer = null;

+ 13 - 4
src/views/home/index.vue

@@ -47,10 +47,10 @@
                     <img src="@/assets/images/map/status/dry.png" alt="" />
                     待守护
                 </div>
-                <div class="item" v-show="!checkShow">
+                <!-- <div class="item" v-show="!checkShow">
                     <img src="@/assets/images/map/status/yry.png" alt="" />
                     已守护
-                </div>
+                </div> -->
                 <div class="item selected-item" v-show="checkShow">
                     <img src="@/assets/images/map/status/selected.png" alt="" />
                     已选择
@@ -68,7 +68,7 @@
             </div>
             <div v-show="checkShow" class="center-button">
                 <div class="cancel yes-events" @click="handleCancel">取消</div>
-                <div class="yes-events" @click="handleCancel">确认开放守护权限</div>
+                <div class="yes-events" @click="saveEdit">确认开放守护权限</div>
             </div>
         </div>
     </div>
@@ -113,11 +113,13 @@ store.commit("home/SET_USER_ROLE", 1);
 
 let ROLE = ref(null);
 onMounted(() => {
+    
     //区域切换监听事件
     eventBus.on("area:id", areaId);
     ROLE.value = store.state.home.userRole;
     // 柏桥村
-    areaId({ areaId: 0, farmId: 80865 });
+    sessionStorage.setItem("currentFarmId", 766)
+    areaId({ areaId: 0, farmId: 766 });
 });
 
 onUnmounted(() => {
@@ -161,6 +163,13 @@ const handleCancel = () => {
     mapRef.value.stopBoxSelect();
 };
 
+const saveEdit = () => {
+    mapRef.value.saveSelect(() => {
+        getPointList()
+    });
+    checkShow.value = false;
+}
+
 // 图例
 const legendArr = ref([]);