zy пре 1 година
родитељ
комит
c202f7aa91

+ 2 - 11
neim-biz/src/main/java/com/jiayue/biz/service/impl/FengJiInfoServiceImpl.java

@@ -154,11 +154,7 @@ public class FengJiInfoServiceImpl extends ServiceImpl<WindTowerDataParentTableM
     //项目删除风机信息
     public void deleteFanTowerForProjectInfo(FanTowerDto fanTowerDto) {
         ProjectInfo projectInfoById = projectInfoService.getOneProjectInfoById(fanTowerDto.getId());
-        List<FanTower> fanTowerList = projectInfoById.getFanTowerList().stream().peek(s -> {
-            if (s.getId().equals(fanTowerDto.getFanId())) {
-                projectInfoById.getFanTowerList().remove(s);
-            }
-        }).collect(Collectors.toList());
+        List<FanTower> fanTowerList = projectInfoById.getFanTowerList().stream().filter(s -> !s.getId().equals(fanTowerDto.getFanId())).collect(Collectors.toList());
         projectInfoById.setFanTowerList(fanTowerList);
         projectInfoService.saveProjectInfo(projectInfoById);
     }
@@ -167,12 +163,7 @@ public class FengJiInfoServiceImpl extends ServiceImpl<WindTowerDataParentTableM
     //场站删除风机信息
     public void deleteFanTowerForStationInfo(FanTowerDto fanTowerDto) {
         StationInfo oneStationInfo = stationInfoService.getOneStationInfo(fanTowerDto.getId());
-        List<FanTower> fanTowerList = oneStationInfo.getFanTowerList().stream().peek(s -> {
-            if (s.getId().equals(fanTowerDto.getFanId())) {
-                oneStationInfo.getFanTowerList().remove(s);
-            }
-        }).collect(Collectors.toList());
-
+        List<FanTower> fanTowerList = oneStationInfo.getFanTowerList().stream().filter(s -> !s.getId().equals(fanTowerDto.getFanId())).collect(Collectors.toList());
         oneStationInfo.setFanTowerList(fanTowerList);
         stationInfoService.saveStation(oneStationInfo);
     }

+ 48 - 1
neim-ui/src/api/biz/dataQuery/fengjiInfo.js

@@ -31,4 +31,51 @@ export function getFanTowerForProject(query) {
     params: query
   })
 }
-
+/*新增场站风机*/
+export function saveFanTowerForStationInfo(data) {
+  return request({
+    url: '/dataQuery/fengjiInfo/saveFanTowerForStationInfo',
+    method: 'post',
+    data: data
+  })
+}
+/*修改场站风机*/
+export function updateFanTowerForStationInfo(data) {
+  return request({
+    url: '/dataQuery/fengjiInfo/updateFanTowerForStationInfo',
+    method: 'put',
+    data: data
+  })
+}
+/*删除场站风机*/
+export function deleteFanTowerForStationInfo(data) {
+  return request({
+    url: '/dataQuery/fengjiInfo/deleteFanTowerForStationInfo',
+    method: 'delete',
+    data: data
+  })
+}
+/*新增项目风机*/
+export function saveFanTowerForProjectInfo(data) {
+  return request({
+    url: '/dataQuery/fengjiInfo/saveFanTowerForProjectInfo',
+    method: 'post',
+    data: data
+  })
+}
+/*修改项目风机*/
+export function updateFanTowerForProjectInfo(data) {
+  return request({
+    url: '/dataQuery/fengjiInfo/updateFanTowerForProjectInfo',
+    method: 'put',
+    data: data
+  })
+}
+/*删除项目风机*/
+export function deleteFanTowerForProjectInfo(data) {
+  return request({
+    url: '/dataQuery/fengjiInfo/deleteFanTowerForProjectInfo',
+    method: 'delete',
+    data: data
+  })
+}

+ 416 - 20
neim-ui/src/views/dataQuery/fengjiInfo/index.vue

@@ -3,13 +3,42 @@
     <el-card class="box-card">
       <el-tabs type="border-card">
         <el-tab-pane label="场站风机信息">
+          <div style="margin-bottom: .5%">
+            <span>场站:</span>
+            <div style="display: inline-block;margin-right: .5%">
+              <el-select v-model="stationId" clearable placeholder="请选择">
+                <el-option
+                  v-for="item in stationOption"
+                  :key="item.id"
+                  :label="item.name"
+                  :value="item.id">
+                </el-option>
+              </el-select>
+            </div>
+            <el-button
+              type="primary"
+              plain
+              icon="el-icon-search"
+              size="small"
+              @click="getFanTowerForStation"
+            >查询
+            </el-button>
+            <el-button
+              type="primary"
+              plain
+              icon="el-icon-plus"
+              size="small"
+              @click="insertStationFan"
+            >新增
+            </el-button>
+          </div>
           <el-table v-loading="loading" border :data="stationFanList.slice((page.currentPage-1)*page.pageSize,page.currentPage*page.pageSize)">
-            <el-table-column label="场站名称" align="center" prop="stationName"/>
-            <el-table-column label="风机编号" align="center" prop="_id"/>
-            <el-table-column label="风机名称" align="center" prop="FanName"/>
+            <el-table-column label="场站名称" align="center" prop="name"/>
+<!--            <el-table-column label="风机编号" align="center" prop="fanId"/>-->
+            <el-table-column label="风机名称" align="center" prop="fanName"/>
             <el-table-column label="风机经度" align="center" prop="longitudeFan"/>
             <el-table-column label="风机纬度" align="center" prop="latitudeFan"/>
-            <el-table-column label="风机机型" align="center" prop="FanModel"/>
+            <el-table-column label="风机机型" align="center" prop="fanModel"/>
             <el-table-column label="轮毂高度" align="center" prop="hubHeight"/>
             <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
               <template slot-scope="scope">
@@ -43,13 +72,42 @@
           </div>
         </el-tab-pane>
         <el-tab-pane label="项目预设风机信息">
+          <div style="margin-bottom: .5%">
+            <span>项目:</span>
+            <div style="display: inline-block;margin-right: .5%">
+              <el-select v-model="projectId" clearable placeholder="请选择">
+                <el-option
+                  v-for="item in projectOption"
+                  :key="item.id"
+                  :label="item.name"
+                  :value="item.id">
+                </el-option>
+              </el-select>
+            </div>
+            <el-button
+              type="primary"
+              plain
+              icon="el-icon-search"
+              size="small"
+              @click="getFanTowerForProject"
+            >查询
+            </el-button>
+            <el-button
+              type="primary"
+              plain
+              icon="el-icon-plus"
+              size="small"
+              @click="insertProjectFan"
+            >新增
+            </el-button>
+          </div>
           <el-table v-loading="pLoading" border :data="projectFanList.slice((page1.currentPage-1)*page1.pageSize,page1.currentPage*page1.pageSize)">
-            <el-table-column label="项目名称" align="center" prop="projectName"/>
-            <el-table-column label="风机编号" align="center" prop="_id"/>
-            <el-table-column label="风机名称" align="center" prop="FanName"/>
+            <el-table-column label="项目名称" align="center" prop="name"/>
+<!--            <el-table-column label="风机编号" align="center" prop="fanId"/>-->
+            <el-table-column label="风机名称" align="center" prop="fanName"/>
             <el-table-column label="风机经度" align="center" prop="longitudeFan"/>
             <el-table-column label="风机纬度" align="center" prop="latitudeFan"/>
-            <el-table-column label="风机机型" align="center" prop="FanModel"/>
+            <el-table-column label="风机机型" align="center" prop="fanModel"/>
             <el-table-column label="轮毂高度" align="center" prop="hubHeight"/>
 
             <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
@@ -83,24 +141,173 @@
             </el-pagination>
           </div>
         </el-tab-pane>
-
       </el-tabs>
+      <el-dialog :title="title" :visible.sync="stationFanOpen" 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="name">
+                <el-select v-model="form.name" placeholder="请选择" style="width: 100%" clearable :disabled="saveFlag === 'edit'">
+                  <el-option
+                    v-for="item in stationOption"
+                    :key="item.id"
+                    :label="item.name"
+                    :value="item.name">
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="风机名称" prop="fanName">
+                <el-input v-model="form.fanName" placeholder="请输入风机名称"/>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="12">
+              <el-form-item label="风机机型" prop="fanModel">
+                <el-input v-model="form.fanModel" placeholder="请输入风机机型"/>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="轮毂高度" prop="hubHeight">
+                <el-input v-model="form.hubHeight" placeholder="请输入轮毂高度"/>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="12">
+              <el-form-item label="风机经度" prop="longitudeFan">
+                <el-input v-model="form.longitudeFan" placeholder="请输入经度"/>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="风机纬度" prop="latitudeFan">
+                <el-input v-model="form.latitudeFan" placeholder="请输入纬度"/>
+              </el-form-item>
+            </el-col>
+          </el-row>
+        </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>
+      <el-dialog :title="pTitle" :visible.sync="projectFanOpen" width="60%" append-to-body :close-on-click-modal="false">
+        <el-form ref="pForm" :model="pForm" :rules="rules" label-width="80px">
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="12">
+              <el-form-item label="项目名称" prop="name">
+                <el-select v-model="pForm.name" placeholder="请选择" style="width: 100%" clearable :disabled="pSaveFlag === 'edit'">
+                  <el-option
+                    v-for="item in projectOption"
+                    :key="item.id"
+                    :label="item.name"
+                    :value="item.name">
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="风机名称" prop="fanName">
+                <el-input v-model="pForm.fanName" placeholder="请输入风机名称"/>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="12">
+              <el-form-item label="风机机型" prop="fanModel">
+                <el-input v-model="pForm.fanModel" placeholder="请输入风机机型"/>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="轮毂高度" prop="hubHeight">
+                <el-input v-model="pForm.hubHeight" placeholder="请输入轮毂高度"/>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="12">
+              <el-form-item label="风机经度" prop="longitudeFan">
+                <el-input v-model="pForm.longitudeFan" placeholder="请输入经度"/>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="风机纬度" prop="latitudeFan">
+                <el-input v-model="pForm.latitudeFan" placeholder="请输入纬度"/>
+              </el-form-item>
+            </el-col>
+          </el-row>
+        </el-form>
+        <div slot="footer" class="dialog-footer">
+          <el-button type="primary" @click="pSubmitForm">确 定</el-button>
+          <el-button @click="pCancel">取 消</el-button>
+        </div>
+      </el-dialog>
     </el-card>
   </div>
 </template>
 
 <script>
 import {
-  getProjectInfo,getStationInfo
+  getProjectInfo,getStationInfo,getFanTowerForProject,getFanTowerForStation,
+  saveFanTowerForStationInfo,updateFanTowerForStationInfo,deleteFanTowerForStationInfo,saveFanTowerForProjectInfo,updateFanTowerForProjectInfo,deleteFanTowerForProjectInfo
 } from "@/api/biz/dataQuery/fengjiInfo";
 export default {
   name: "index",
   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{
+      title:'新增&保存',
+      pTitle:'新增&保存',
+      saveFlag: 'add',
+      pSaveFlag: 'add',
+      stationFanOpen: false,
+      projectFanOpen: false,
       loading:false,
       pLoading:false,
       stationFanList:[],//场站风机list
       projectFanList:[],//项目风机list
+      stationId:'',
+      projectId:'',
+      projectOption:[],// 项目下拉框
+      stationOption:[],// 场站下拉框
+      form:{},//场站风机弹框
+      rules:{
+        name:[
+          {required: true, message: '请选择'}
+        ],
+        fanName:[
+          {required: true, message: '请填写风机名称'}
+        ],
+        longitudeFan: [{required: true, validator: checkLongitude, trigger: 'blur'}],
+        latitudeFan: [{required: true, validator: checkLatitude, trigger: 'blur'}],
+        fanModel:[
+          {required: true, message: '请选择风机机型'}
+        ]
+      },
+      pForm:{},// 项目风机弹框
       page: {
         total: 0, // 总页数
         currentPage: 1, // 当前页数
@@ -114,41 +321,230 @@ export default {
     }
   },
   mounted() {
+    this.getStationInfo()
+    this.getFanTowerForStation()
+    this.getProjectInfo()
+    this.getFanTowerForProject()
   },
   methods:{
-    /*获取信息*/
-    getInfo(){
-
+    /*获取场站风机信息*/
+    getFanTowerForStation(){
+      this.loading = true
+      let id = this.stationId
+      if (id === undefined || id === null) id = ''
+      getFanTowerForStation({id:id}).then(res=>{
+        this.stationFanList = res.data
+        this.page.total = this.stationFanList.length
+        this.loading = false
+      }).catch(err=>{
+        this.loading = false
+        console.log('获取场站风机信息异常:'+err)
+      })
+    },
+    /*获取项目风机信息*/
+    getFanTowerForProject(){
+      this.pLoading = true
+      let id = this.projectId
+      if (id === undefined || id === null) id = ''
+      getFanTowerForProject({id:id}).then(res=>{
+        this.projectFanList = res.data
+        this.page1.total = this.projectFanList.length
+        this.pLoading = false
+      }).catch(err=>{
+        this.pLoading = false
+        console.log('获取项目风机信息异常:'+err)
+      })
     },
     /*获取项目下拉框*/
     getProjectInfo(){
       getProjectInfo().then(res=>{
-
+        this.projectOption = res.data
       }).catch(err=>{
-
+        console.log('获取项目下拉框信息异常:'+err)
       })
     },
     /*获取场站下拉框*/
     getStationInfo(){
       getStationInfo().then(res=>{
-
+        this.stationOption = res.data
       }).catch(err=>{
-
+        console.log('获取场站下拉框信息异常:'+err)
       })
     },
     /*场站的编辑与删除*/
+    insertStationFan(){
+      this.title = '新增&保存'
+      this.saveFlag = 'add'
+      this.resetStaionFanForm()
+      this.stationFanOpen = true
+    },
     handleUpdate(row){
-
+      this.title = '编辑&保存'
+      this.saveFlag = 'edit'
+      this.form = {
+        id:row.id,
+        name:row.name,
+        fanId:row.fanId,
+        fanName:row.fanName,
+        longitudeFan:row.longitudeFan,
+        latitudeFan:row.latitudeFan,
+        fanModel:row.fanModel,
+        hubHeight:row.hubHeight
+      }
+      this.stationFanOpen = true
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if(this.saveFlag === 'add'){
+            this.form.id = this.stationOption.find(w=>w.name === this.form.name).id
+            console.log(this.form)
+            saveFanTowerForStationInfo(this.form).then(res=>{
+              this.getFanTowerForStation()
+              this.stationFanOpen = false
+              this.$message.success('保存成功')
+            }).catch(err=>{
+              this.stationFanOpen = false
+              console.log('保存场站风机信息异常:'+err)
+            })
+          }else{
+            updateFanTowerForStationInfo(this.form).then(res=>{
+              this.getFanTowerForStation()
+              this.stationFanOpen = false
+              this.$message.success('修改成功')
+            }).catch(err=>{
+              this.stationFanOpen = false
+              console.log('修改场站风机信息异常:'+err)
+            })
+          }
+        }else {
+          this.$message.warning('校验不通过')
+        }
+      });
     },
     handleDelete(row){
+      console.log(row)
+      this.$confirm('此操作将删除该风机信息, 是否继续?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        deleteFanTowerForStationInfo(row).then(res=>{
+          this.getFanTowerForStation()
+          this.$message.success('删除成功')
+        }).catch(err=>{
+          console.log('删除场站风机信息异常:'+err)
+        })
+      }).catch(() => {
+        this.$message({
+          type: 'info',
+          message: '已取消删除'
+        });
+      });
 
     },
+    cancel(){
+      this.resetStaionFanForm()
+      this.stationFanOpen = false
+    },
     /*项目的编辑与删除*/
+    insertProjectFan(){
+      this.pTitle = '新增&保存'
+      this.pSaveFlag = 'add'
+      this.resetProjectFanForm()
+      this.projectFanOpen= true
+    },
     pHandleUpdate(row){
-
+      this.pTitle = '编辑&保存'
+      this.pSaveFlag = 'edit'
+      this.pForm = {
+        id:row.id,
+        name:row.name,
+        fanId:row.fanId,
+        fanName:row.fanName,
+        longitudeFan:row.longitudeFan,
+        latitudeFan:row.latitudeFan,
+        fanModel:row.fanModel,
+        hubHeight:row.hubHeight
+      }
+      this.projectFanOpen = true
     },
     pHandleDelete(row){
-
+      this.$confirm('此操作将删除该风机信息, 是否继续?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        deleteFanTowerForProjectInfo(row).then(res=>{
+          this.getFanTowerForProject()
+          this.$message.success('删除成功')
+        }).catch(err=>{
+          console.log('删除项目风机信息异常:'+err)
+        })
+      }).catch(() => {
+        this.$message({
+          type: 'info',
+          message: '已取消删除'
+        });
+      });
+    },
+    pSubmitForm() {
+      this.$refs["pForm"].validate(valid => {
+        if (valid) {
+          if(this.pSaveFlag === 'add'){
+            this.pForm.id = this.projectOption.find(w=>w.name === this.pForm.name).id
+            console.log(this.pForm)
+            saveFanTowerForProjectInfo(this.pForm).then(res=>{
+              this.getFanTowerForProject()
+              this.projectFanOpen = false
+              this.$message.success('保存成功')
+            }).catch(err=>{
+              this.projectFanOpen = false
+              console.log('保存项目风机信息异常:'+err)
+            })
+          }else{
+            updateFanTowerForProjectInfo(this.pForm).then(res=>{
+              this.getFanTowerForProject()
+              this.projectFanOpen = false
+              this.$message.success('修改成功')
+            }).catch(err=>{
+              this.projectFanOpen = false
+              console.log('修改项目风机信息异常:'+err)
+            })
+          }
+        }else{
+          this.$message.warning('校验没通过')
+        }
+      });
+    },
+    pCancel(){
+      this.resetProjectFanForm()
+      this.projectFanOpen = false
+    },
+    resetStaionFanForm(){
+      this.form={
+        id:null,
+        name:null,
+        fanId:null,
+        fanName:null,
+        longitudeFan:null,
+        latitudeFan:null,
+        fanModel:null,
+        hubHeight:null
+      }
+    },
+    resetProjectFanForm(){
+      this.pForm={
+        id:null,
+        name:null,
+        fanId:null,
+        fanName:null,
+        longitudeFan:null,
+        latitudeFan:null,
+        fanModel:null,
+        hubHeight:null
+      }
     },
     /*pageSize改变*/
     handleSizeChange(val) {