zy 2 rokov pred
rodič
commit
0bffbc829d

+ 6 - 0
neim-biz/src/main/java/com/jiayue/biz/dto/ProjectDto.java

@@ -1,9 +1,12 @@
 package com.jiayue.biz.dto;
 
+import com.jiayue.biz.domain.Coordinates;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
+import java.util.List;
+
 @Data
 @AllArgsConstructor
 @NoArgsConstructor
@@ -31,4 +34,7 @@ public class ProjectDto {
     //关联设备
     private String equipment;
 
+    private String coordinates;
+
+
 }

+ 37 - 1
neim-biz/src/main/java/com/jiayue/biz/service/impl/ProjectServiceImpl.java

@@ -84,7 +84,22 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 builder.delete(builder.length() - 1, builder.length());
             }
             projectDto.setEquipment(builder.toString());
+            StringBuilder stringBuilder = new StringBuilder();
+            List<List<Coordinates>> coordinates = projectInfo.getCoordinates();
+            if(coordinates != null && coordinates.size() > 0){
+                for (List<Coordinates> coordinate : coordinates) {
+                    for (Coordinates coordinates1 : coordinate) {
+                        stringBuilder.append(coordinates1.getLongitude()).append(",").append(coordinates1.getLatitude()).append(";");
+                    }
+                    stringBuilder.delete(stringBuilder.length() - 1, stringBuilder.length());
+                    stringBuilder.append("。");
+                }
+            }
+//            if (stringBuilder.length() > 0) {
+//                stringBuilder.delete(stringBuilder.length() - 1, stringBuilder.length());
+//            }
 
+            projectDto.setCoordinates(stringBuilder.toString());
             projectList.add(projectDto);
         }
         if(project.getProjectName() != null){
@@ -136,10 +151,31 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             List<Equipment> equipment = getEquipment(windTowerInfoList, projectDto.getEquipment());
             projectInfo.setEquipment(equipment);
         }
-
+        ArrayList<List<Coordinates>> cooList = new ArrayList<>();
+        if(projectDto.getCoordinates().contains("。")){
+            String[] split = projectDto.getCoordinates().split("。");
+            for (String s : split) {
+                List<Coordinates> coordinatesList = this.getCoordinates(s);
+                cooList.add(coordinatesList);
+            }
+        }else{
+            List<Coordinates> coordinatesList1 = this.getCoordinates(projectDto.getCoordinates());
+            cooList.add(coordinatesList1);
+        }
         mongoTemplate.save(projectInfo);
+    }
 
 
+    public List<Coordinates> getCoordinates(String coordinates){
+        ArrayList<Coordinates> coordinatesList = new ArrayList<>();
+        Coordinates coordinates1 = new Coordinates();
+        if(coordinates.length() > 0){
+            String[] split = coordinates.split(";");
+            coordinates1.setLongitude(split[0]);
+            coordinates1.setLatitude(split[1]);
+            coordinatesList.add(coordinates1);
+        }
+        return coordinatesList;
     }
 
 

+ 189 - 95
neim-ui/src/views/dataQuery/project/index.vue

@@ -1,27 +1,30 @@
 <template>
   <div class="app-container">
     <el-card class="box-card">
-      <span>项目名称:</span>
-      <div style="display: inline-block">
-        <el-input v-model="projectName" placeholder="请输入项目关键字" clearable size="small"/>
+      <div style="margin-bottom: .5%">
+        <span>项目名称:</span>
+        <div style="display: inline-block">
+          <el-input v-model="projectName" placeholder="请输入项目关键字" clearable size="small"/>
+        </div>
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-search"
+          size="small"
+          @click="selectList"
+        >查询
+        </el-button>
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="small"
+          @click="handleAdd"
+        >新增
+        </el-button>
       </div>
-      <el-button
-        type="primary"
-        plain
-        icon="el-icon-search"
-        size="small"
-        @click="selectList"
-      >查询
-      </el-button>
-      <el-button
-        type="primary"
-        plain
-        icon="el-icon-plus"
-        size="small"
-        @click="handleAdd"
-      >新增
-      </el-button>
-      <el-table v-loading="loading" border :data="projectList" @selection-change="handleSelectionChange">
+
+      <el-table v-loading="loading" border :data="projectList.slice((page.currentPage-1)*page.pageSize,page.currentPage*page.pageSize)" @selection-change="handleSelectionChange">
         <el-table-column label="项目全称" align="center" prop="projectName"/>
         <el-table-column label="项目简称" align="center" prop="projectNameEasy"/>
         <el-table-column label="项目状态" align="center" prop="projectState"/>
@@ -50,77 +53,107 @@
           </template>
         </el-table-column>
       </el-table>
-
-      <!--      <pagination-->
-      <!--        v-show="total>0"-->
-      <!--        :total="total"-->
-      <!--        :page.sync="queryParams.pageNum"-->
-      <!--        :limit.sync="queryParams.pageSize"-->
-      <!--        @pagination="getList"-->
-      <!--      />-->
-
-      <!-- 添加或修改项目对话框 -->
-      <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body :close-on-click-modal="false">
-        <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-          <el-form-item label="项目全称" prop="projectName">
-            <el-input v-model="form.projectName" placeholder="请输入项目名称"/>
-          </el-form-item>
-          <el-form-item label="项目简称" prop="projectNameEasy">
-            <el-input v-model="form.projectNameEasy" placeholder="请输入项目简称"/>
-          </el-form-item>
-          <el-form-item label="项目状态" prop="projectName">
-            <el-input v-model="form.projectState" placeholder="请输入项目状态"/>
-          </el-form-item>
-          <el-form-item label="项目类别" prop="projectType">
-            <el-select v-model="form.projectType" placeholder="请选择" style="width: 100%" clearable>
-              <el-option
-                v-for="(item,index) in statusType"
-                :key="index"
-                :label="item.label"
-                :value="item.value">
-              </el-option>
-            </el-select>
-          </el-form-item>
-          <el-form-item label="项目类型" prop="projectSort">
-            <el-select v-model="form.projectSort" placeholder="请选择" style="width: 100%" clearable>
-              <el-option
-                v-for="(item,index) in statusSort"
-                :key="index"
-                :label="item.label"
-                :value="item.value">
-              </el-option>
-            </el-select>
-          </el-form-item>
-          <el-form-item label="经度" prop="longitude">
-            <el-input v-model="form.longitude" placeholder="请输入经度"/>
-          </el-form-item>
-          <el-form-item label="纬度" prop="latitude">
-            <el-input v-model="form.latitude" placeholder="请输入纬度"/>
-          </el-form-item>
-          <el-form-item label="关联设备" prop="equipment">
-            <el-select v-model="form.equipment" placeholder="请选择" style="width: 100%" multiple clearable>
-              <el-option
-                v-for="item in relationEquipmentData"
-                :key="item.value"
-                :label="item.label"
-                :value="item.value"
-                :disabled="item.disabled">
-              </el-option>
-            </el-select>
-          </el-form-item>
-          <el-form-item label="项目概述" prop="projectOverview">
-            <el-input v-model="form.projectOverview" placeholder="请输入项目概述"/>
-          </el-form-item>
-          <el-form-item label="项目风力概述" prop="resourcesOverview">
-            <el-input v-model="form.resourcesOverview" placeholder="请输入项目风力概述"/>
-          </el-form-item>
-        </el-form>
-        <div slot="footer" class="dialog-footer">
-          <el-button type="primary" @click="submitForm">确 定</el-button>
-          <el-button @click="cancel">取 消</el-button>
-        </div>
-      </el-dialog>
+      <div class="block">
+        <el-pagination
+          @size-change="handleSizeChange"
+          @current-change="handleCurrentChange"
+          :current-page=page.currentPage
+          :page-sizes="[8,10, 15, 30, 50]"
+          :page-size=page.pageSize
+          layout="total, sizes, prev, pager, next, jumper"
+          :total=page.total>
+        </el-pagination>
+      </div>
     </el-card>
+    <!-- 添加或修改项目对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="60%" append-to-body :close-on-click-modal="false">
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-row :gutter="20" class="mb8">
+          <el-col :span="12">
+            <el-form-item label="项目全称" prop="projectName">
+              <el-input v-model="form.projectName" placeholder="请输入项目名称"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="项目简称" prop="projectNameEasy">
+              <el-input v-model="form.projectNameEasy" placeholder="请输入项目简称"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20" class="mb8">
+          <el-col :span="12">
+            <el-form-item label="项目状态" prop="projectState">
+              <el-input v-model="form.projectState" placeholder="请输入项目状态"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="项目类别" prop="projectType">
+              <el-select v-model="form.projectType" placeholder="请选择" style="width: 100%" clearable>
+                <el-option
+                  v-for="(item,index) in statusType"
+                  :key="index"
+                  :label="item.label"
+                  :value="item.value">
+                </el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20" class="mb8">
+          <el-col :span="12">
+            <el-form-item label="项目类型" prop="projectSort">
+              <el-select v-model="form.projectSort" placeholder="请选择" style="width: 100%" clearable>
+                <el-option
+                  v-for="(item,index) in statusSort"
+                  :key="index"
+                  :label="item.label"
+                  :value="item.value">
+                </el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="关联设备" prop="equipment">
+              <el-select v-model="form.equipment" placeholder="请选择" style="width: 100%" multiple clearable>
+                <el-option
+                  v-for="item in relationEquipmentData"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+                  :disabled="item.disabled">
+                </el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20" class="mb8">
+          <el-col :span="12">
+            <el-form-item label="项目经度" prop="longitude">
+              <el-input v-model="form.longitude" placeholder="请输入经度"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="项目纬度" prop="latitude">
+              <el-input v-model="form.latitude" placeholder="请输入纬度"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-form-item label="项目拐点坐标" prop="coordinates" label-width="100px">
+          <el-input v-model="form.coordinates" placeholder="请输入项目拐点坐标" type="textarea" :rows="2"/>
+          <span>拐点坐标填写样例:经度1,纬度1;经度2,纬度2;经度3,纬度3;经度4,纬度4;............;经度n,纬度n   标点符号","和";"都是英文书写</span>
+        </el-form-item>
+        <el-form-item label="项目概述" prop="projectOverview" label-width="100px">
+          <el-input v-model="form.projectOverview" placeholder="请输入项目概述" type="textarea" :rows="2"/>
+        </el-form-item>
+        <el-form-item label="项目风力概述" prop="resourcesOverview" label-width="110px">
+          <el-input v-model="form.resourcesOverview" placeholder="请输入项目风力概述" type="textarea" :rows="2"/>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
@@ -140,6 +173,28 @@ import {companyListInfo} from "@/api/biz/dataQuery/company";
 export default {
   name: "Project",
   data() {
+    const reg = /^[\-\+]?(0?\d{1,2}(\.\d{1,9})*|1[0-7]?\d{1}(\.\d{1,9})*|180(\.0{1,9})*)$/
+    const reg1 = /^[\-\+]?([0-8]?\d{1}(\.\d{1,9})*|90(\.0{1,9})*)$/
+    const checkLongitude = (rule, value, callback) => {
+      if (!value) {
+        callback(new Error('不许为空'))
+      }
+      if (reg.test(value) == false) {
+        callback(new Error('请输入正确经度'));
+      } else {
+        callback()
+      }
+    }
+    const checkLatitude = (rule, value, callback) => {
+      if (!value) {
+        callback(new Error('不许为空'))
+      }
+      if (reg1.test(value) == false) {
+        callback(new Error('请输入正确纬度'));
+      } else {
+        callback()
+      }
+    }
     return {
       projectName: null,
       // 遮罩层
@@ -181,6 +236,23 @@ export default {
         projectSort: [
           {required: true, message: '请选择项目类型'}
         ],
+        projectType: [
+          {required: true, message: '请选择项目类别'}
+        ],
+        projectNameEasy: [
+          {required: true, message: '请填写项目简称'}
+        ],
+        equipment: [
+          {required: true, message: '请选择关联设备'}
+        ],
+        longitude: [{required: true, validator: checkLongitude, trigger: 'blur'}],
+        latitude: [{required: true, validator: checkLatitude, trigger: 'blur'}],
+        projectOverview: [
+          {required: true, message: '请填写项目概述'}
+        ],
+        resourcesOverview: [
+          {required: true, message: '请填写项目风力资源概述'}
+        ]
       },
       statusType: [{label: "风", value: "风"},
         {label: "光", value: "光"}],
@@ -191,12 +263,18 @@ export default {
       relationEquipmentData: [],
       companyData: [],
       provinceData: [],
+      page: {
+        total: 0, // 总页数
+        currentPage: 1, // 当前页数
+        pageSize: 8 // 每页显示多少条
+      },
     };
   },
   created() {
     this.getAllWindTowerInfo()
-    this.getcompanyInfo()
-    this.getProvince()
+    // this.getcompanyInfo()
+    // this.getProvince()
+    this.getList();
   },
   methods: {
     getProvince() {
@@ -239,7 +317,7 @@ export default {
       this.loading = true;
       listProject(data).then(response => {
         this.projectList = response.rows;
-        this.total = response.total;
+        this.page.total = response.total;
         this.loading = false;
       });
     },
@@ -317,7 +395,8 @@ export default {
         latitude: row.latitude,
         resourcesOverview: row.resourcesOverview,
         projectOverview: row.projectOverview,
-        equipment: a
+        equipment: a,
+        coordinates:row.coordinates
       }
       this.title = "修改&保存";
       this.open = true;
@@ -365,7 +444,22 @@ export default {
 
     formatSort(row) {
       return this.statusSort.find(w => w.value === row.projectSort).label
-    }
+    },
+    /*pageSize改变*/
+    handleSizeChange(val) {
+      this.page.pageSize = val
+      this.page.currentPage = 1
+    },
+    /*currentPage改变*/
+    handleCurrentChange(val) {
+      this.page.currentPage = val
+    },
   }
 };
 </script>
+<style scoped>
+.block {
+  float: right;
+  margin: 1%;
+}
+</style>