Explorar el Código

计量设备完善

lv.wenbin hace 11 meses
padre
commit
5be20741b2

+ 14 - 0
ems-ui/src/api/basecfg/area.js

@@ -9,6 +9,13 @@ export function listArea(query) {
   })
 }
 
+export function listTotalArea() {
+  return request({
+    url: '/ems/basecfg/area/listTotal',
+    method: 'get'
+  })
+}
+
 // 查询服务区详细
 export function getArea(id) {
   return request({
@@ -50,3 +57,10 @@ export function areaTreeSelect(tier) {
     method: 'get'
   })
 }
+
+export function areaTreeSelectByCode(tier, code) {
+  return request({
+    url: '/ems/basecfg/area/areaTreeByCode?tier=' + tier + '&code=' + code,
+    method: 'get'
+  })
+}

+ 13 - 5
ems-ui/src/api/basecfg/building.js

@@ -1,7 +1,7 @@
 import request from '@/utils/request'
 
 // 查询建筑基本信息列表
-export function listPremises(query) {
+export function listBuilding(query) {
   return request({
     url: '/ems/basecfg/area/building/list',
     method: 'get',
@@ -9,8 +9,16 @@ export function listPremises(query) {
   })
 }
 
+// 根据区域查询建筑
+export function listBuildingByArea(areaCode) {
+  return request({
+    url: '/ems/basecfg/area/building/listByArea?areaCode=' + areaCode,
+    method: 'get'
+  })
+}
+
 // 查询建筑基本信息详细
-export function getPremises(id) {
+export function getBuilding(id) {
   return request({
     url: '/ems/basecfg/area/building/' + id,
     method: 'get'
@@ -18,7 +26,7 @@ export function getPremises(id) {
 }
 
 // 新增建筑基本信息
-export function addPremises(data) {
+export function addBuilding(data) {
   return request({
     url: '/ems/basecfg/area/building',
     method: 'post',
@@ -27,7 +35,7 @@ export function addPremises(data) {
 }
 
 // 修改建筑基本信息
-export function updatePremises(data) {
+export function updateBuilding(data) {
   return request({
     url: '/ems/basecfg/area/building',
     method: 'put',
@@ -36,7 +44,7 @@ export function updatePremises(data) {
 }
 
 // 删除建筑基本信息
-export function delPremises(id) {
+export function delBuilding(id) {
   return request({
     url: '/ems/basecfg/area/building/' + id,
     method: 'delete'

+ 2 - 2
ems-ui/src/api/device/device.js

@@ -20,9 +20,9 @@ export function listDevRecursionByArea(query) {
 }
 
 // 递归查询 区域/设施 下的设备(分页)
-export function devTreeByFacs() {
+export function devTreeByFacs(areaCode) {
   return request({
-    url: '/ems/device/getTreeByFacs',
+    url: '/ems/device/getTreeByFacs?areaCode=' + areaCode,
     method: 'get'
   })
 }

+ 3 - 3
ems-ui/src/views/basecfg/area/index.vue

@@ -88,9 +88,9 @@
 
     <el-table v-loading="loading" :data="areaList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="服务区名称" align="center" prop="areaName" />
+      <el-table-column label="服务区名称" align="center" prop="areaName" width="200px"/>
       <el-table-column label="简称" align="left" prop="shortName" />
-      <el-table-column label="服务区代码" align="center" prop="areaCode" />
+      <el-table-column label="服务区代码" align="center" prop="areaCode" width="200px" />
       <el-table-column label="服务星级" align="center" prop="serviceStar" />
       <el-table-column label="所在城市" align="left" prop="city" />
       <el-table-column label="所在高速" align="left" prop="highway" />
@@ -101,7 +101,7 @@
           <span>{{ parseTime(scope.row.openDate, '{y}-{m}-{d}') }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="坐标" align="center" >
+      <el-table-column label="坐标" align="center" width="100px">
         <template slot-scope="scope">
           {{ scope.row.longitude + ',' + scope.row.latitude }}
         </template>

+ 16 - 15
ems-ui/src/views/basecfg/building/index.vue

@@ -5,7 +5,7 @@
         <div class="head-container">
           <el-input
             v-model="areaName"
-            placeholder="请输入区名称"
+            placeholder="请输入服务区名称"
             clearable
             size="small"
             prefix-icon="el-icon-search"
@@ -88,11 +88,11 @@
           <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
         </el-row>
 
-        <el-table v-loading="loading" :data="premisesList" @selection-change="handleSelectionChange">
+        <el-table v-loading="loading" :data="buildingList" @selection-change="handleSelectionChange">
           <el-table-column type="selection" width="55" align="center" />
           <el-table-column label="建筑名称" align="left" prop="bldgName" />
-          <el-table-column label="建筑编码" align="center" prop="bldgCode" />
           <el-table-column label="服务区" align="center" prop="areaShortName" />
+          <el-table-column label="建筑编码" align="center" prop="bldgCode" />
           <el-table-column label="位置描述" align="center" prop="address" />
           <el-table-column label="建筑层数" align="center" >
             <template slot-scope="scope">
@@ -142,10 +142,10 @@
             <el-form-item label="详细地址" prop="address">
               <el-input v-model="form.address" placeholder="请输入详细地址" />
             </el-form-item>
-            <el-form-item label="建筑层数(地上)" prop="upBldgFloor">
+            <el-form-item label="地上层数" prop="upBldgFloor">
               <el-input v-model="form.upBldgFloor" placeholder="请输入建筑层数" />
             </el-form-item>
-            <el-form-item label="建筑层数(地下)" prop="downBldgFloor">
+            <el-form-item label="地下层数" prop="downBldgFloor">
               <el-input v-model="form.downBldgFloor" placeholder="请输入建筑层数" />
             </el-form-item>
             <el-form-item label="建筑高度" prop="bldgHeight">
@@ -169,13 +169,13 @@
 </template>
 
 <script>
-import { listPremises, getPremises, delPremises, addPremises, updatePremises } from "@/api/basecfg/building";
+import { listBuilding, getBuilding, delBuilding, addBuilding, updateBuilding } from "@/api/basecfg/building";
 import { areaTreeSelect } from "@/api/basecfg/area"
 import Treeselect from "@riophae/vue-treeselect";
 import "@riophae/vue-treeselect/dist/vue-treeselect.css";
 
 export default {
-  name: "Premises",
+  name: "Building",
   components: { Treeselect },
   data() {
     return {
@@ -192,7 +192,7 @@ export default {
       // 总条数
       total: 0,
       // 建筑基本信息表格数据
-      premisesList: [],
+      buildingList: [],
       // 弹出层标题
       title: "",
       // 是否显示弹出层
@@ -247,8 +247,8 @@ export default {
     /** 查询建筑基本信息列表 */
     getList() {
       this.loading = true;
-      listPremises(this.queryParams).then(response => {
-        this.premisesList = response.rows;
+      listBuilding(this.queryParams).then(response => {
+        this.buildingList = response.rows;
         this.total = response.total;
         this.loading = false;
       });
@@ -297,6 +297,7 @@ export default {
     },
     /** 重置按钮操作 */
     resetQuery() {
+      this.queryParams.areaCode = null;
       this.resetForm("queryForm");
       this.handleQuery();
     },
@@ -318,7 +319,7 @@ export default {
       this.reset();
       this.isReadOnly = false;
       const id = row.id || this.ids
-      getPremises(id).then(response => {
+      getBuilding(id).then(response => {
         this.form = response.data;
         this.open = true;
         this.title = "修改建筑基本信息";
@@ -329,13 +330,13 @@ export default {
       this.$refs["form"].validate(valid => {
         if (valid) {
           if (this.form.id != null) {
-            updatePremises(this.form).then(response => {
+            updateBuilding(this.form).then(response => {
               this.$modal.msgSuccess("修改成功");
               this.open = false;
               this.getList();
             });
           } else {
-            addPremises(this.form).then(response => {
+            addBuilding(this.form).then(response => {
               this.$modal.msgSuccess("新增成功");
               this.open = false;
               this.getList();
@@ -348,7 +349,7 @@ export default {
     handleDelete(row) {
       const ids = row.id || this.ids;
       this.$modal.confirm('是否确认删除建筑基本信息编号为"' + ids + '"的数据项?').then(function() {
-        return delPremises(ids);
+        return delBuilding(ids);
       }).then(() => {
         this.getList();
         this.$modal.msgSuccess("删除成功");
@@ -358,7 +359,7 @@ export default {
     handleExport() {
       this.download('ems/basecfg/area/building/export', {
         ...this.queryParams
-      }, `premises_${new Date().getTime()}.xlsx`)
+      }, `building_${new Date().getTime()}.xlsx`)
     }
   }
 };

+ 4 - 2
ems-ui/src/views/basecfg/device/index.vue

@@ -110,10 +110,10 @@
 
         <el-table v-loading="loading" :data="deviceList" @selection-change="handleSelectionChange">
           <el-table-column type="selection" width="55" align="center"/>
-          <el-table-column label="归属设施" align="center" prop="refFacsName"/>
+          <el-table-column label="设备名称" align="center" prop="deviceName"/>
           <el-table-column label="归属区域" align="left" prop="areaPath"/>
+          <el-table-column label="归属设施" align="center" prop="refFacsName"/>
           <el-table-column label="设备代码" align="center" prop="deviceCode"/>
-          <el-table-column label="设备名称" align="center" prop="deviceName"/>
           <el-table-column label="设备类型" align="center" prop="deviceTypeName"/>
           <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
             <template slot-scope="scope">
@@ -312,6 +312,8 @@ export default {
     },
     /** 重置按钮操作 */
     resetQuery() {
+      this.queryParams.refArea = null;
+      this.queryParams.areaType = null;
       this.resetForm('queryForm')
       this.handleQuery()
     },

+ 1 - 0
ems-ui/src/views/basecfg/emsfacs/index.vue

@@ -299,6 +299,7 @@ export default {
     },
     /** 重置按钮操作 */
     resetQuery() {
+      this.queryParams.refArea = null;
       this.resetForm("queryForm");
       this.handleQuery();
     },

+ 97 - 49
ems-ui/src/views/basecfg/meterdevc/index.vue

@@ -1,6 +1,11 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="服务区" prop="areaCode" >
+        <el-select v-model="queryParams.areaCode" @change="handleAreaSelect">
+          <el-option v-for="item in areaOptions" :label="item.areaName" :value="item.areaCode" :key="item.areaCode" />
+        </el-select>
+      </el-form-item>
       <el-form-item label="设备代码" prop="deviceCode">
         <el-input
           v-model="queryParams.deviceCode"
@@ -53,23 +58,13 @@
           v-hasPermi="['ems:device:remove']"
         >删除</el-button>
       </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="warning"
-          plain
-          icon="el-icon-download"
-          size="mini"
-          @click="handleExport"
-          v-hasPermi="['ems:device:export']"
-        >导出</el-button>
-      </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <el-table v-loading="loading" :data="deviceList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column label="设备代码" align="center" prop="deviceCode" />
-      <el-table-column label="计量对象" align="center" prop="objName" >
+      <el-table-column label="计量对象" align="left" prop="objName" width="300px">
         <template slot-scope="scope">
           <span>{{ "(" + getObjTypeName(scope.row.objType) + ")"+ scope.row.objName }}</span>
         </template>
@@ -79,14 +74,14 @@
           <span>{{ getMeterClsName(scope.row.meterCls) }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="采集周期" align="center" prop="colCycle">
+      <el-table-column label="采集方式" align="center" prop="colMode" >
         <template slot-scope="scope">
-          <span>{{ getColCycleName(scope.row.colCycle) }}</span>
+          <span>{{ getColModeName(scope.row.colMode) }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="采集方式" align="center" prop="colMode" >
+      <el-table-column label="采集周期" align="center" prop="colCycle" >
         <template slot-scope="scope">
-          <span>{{ getColModeName(scope.row.colMode) }}</span>
+          <span>{{ getColCycleName(scope.row.colCycle) }}</span>
         </template>
       </el-table-column>
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
@@ -94,6 +89,14 @@
           <el-button
             size="mini"
             type="text"
+            icon="el-icon-cfgwrite"
+            @click=""
+            v-hasPermi="['ems:device:edit']"
+            v-if="scope.row.colMode === 1"
+          >填报</el-button>
+          <el-button
+            size="mini"
+            type="text"
             icon="el-icon-edit"
             @click="handleUpdate(scope.row)"
             v-hasPermi="['ems:device:edit']"
@@ -120,33 +123,40 @@
     <!-- 添加或修改计量设备对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="计量类别" prop="meterCls">
+          <el-select v-model="form.meterCls" >
+            <el-option v-for="item in emsClsOptions" :label="item.name" :value="item.code" :key="item.code" />
+          </el-select>
+        </el-form-item>
+
         <el-form-item label="设备代码" prop="deviceCode">
           <el-input v-model="form.deviceCode" placeholder="请输入设备代码" />
         </el-form-item>
 
-        <el-form-item label="计量类别" prop="meterCls">
-          <el-select v-model="form.meterCls" >
-            <el-option v-for="item in emsClsOptions" :label="item.name" :value="item.code" :key="item.code" />
+        <el-form-item label="服务区" prop="deviceCode">
+          <el-select v-model="form.areaCode" @change="handleAreaSelect">
+            <el-option v-for="item in areaOptions" :label="item.areaName" :value="item.areaCode" :key="item.areaCode" />
           </el-select>
         </el-form-item>
+
         <el-form-item label="对象类型" prop="objType">
           <el-select v-model="form.objType" @change="changeObjOptions">
             <el-option v-for="item in objTypeOptions" :label="item.name" :value="item.code" :key="item.code" />
           </el-select>
         </el-form-item>
         <el-form-item label="计量对象" prop="objCode">
-          <treeselect v-model="form.objCode" :options="objCodeOptions" :show-count="true" placeholder="请选择计量对象" />
-        </el-form-item>
-        <el-form-item label="采集周期" prop="colCycle">
-          <el-select v-model="form.colCycle" >
-            <el-option v-for="item in colCycleOptions" :label="item.name" :value="item.code" :key="item.code" />
-          </el-select>
+          <treeselect v-model="objCode" :options="objCodeOptions" :show-count="true" placeholder="请选择计量对象" ref="treeObjCodeOptions"/>
         </el-form-item>
         <el-form-item label="采集方式" prop="colMode">
           <el-select v-model="form.colMode" >
             <el-option v-for="item in colModeOptions" :label="item.name" :value="item.code" :key="item.code" />
           </el-select>
         </el-form-item>
+        <el-form-item label="采集周期" prop="colCycle" v-if="form.colMode === 0">
+          <el-select v-model="form.colCycle" >
+            <el-option v-for="item in colCycleOptions" :label="item.name" :value="item.code" :key="item.code" />
+          </el-select>
+        </el-form-item>
         <el-form-item label="规格描述" prop="specDesc">
           <el-input v-model="form.specDesc" placeholder="请输入规格描述" />
         </el-form-item>
@@ -162,9 +172,10 @@
 <script>
 import { listDevice, getDevice, delDevice, addDevice, updateDevice } from "@/api/device/meterDevice";
 import { devTreeByFacs } from "@/api/device/device";
-import Treeselect from '@riophae/vue-treeselect';
-import request from '@/utils/request'
-import { areaTreeSelect } from '@/api/basecfg/area'
+import { listTotalArea, areaTreeSelect, areaTreeSelectByCode } from '@/api/basecfg/area'
+import { listBuildingByArea } from "@/api/basecfg/building";
+import Treeselect from "@riophae/vue-treeselect";
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
 
 export default {
   name: "Device",
@@ -190,9 +201,12 @@ export default {
       // 是否显示弹出层
       open: false,
       objCodeOptions: [],
+      areaOptions: [],
+      buildingOptions: [],
+      selectObjCode: null,
+      objCode: null,
       // 能源分类树
       emsClsOptions: [
-        {"code": 25, "name": "天然气表"},
         {"code": 45, "name": "电表"},
         {"code": 70, "name": "水表"}
       ],
@@ -215,6 +229,8 @@ export default {
       queryParams: {
         pageNum: 1,
         pageSize: 10,
+        areaCode: null,
+        bldgCode: null,
         deviceCode: null,
         meterCls: null,
         objType: null,
@@ -228,28 +244,53 @@ export default {
       form: {},
       // 表单校验
       rules: {
+        areaCode: [
+          { required: true, message: "选择服务区", trigger: "blur" }
+        ],
         deviceCode: [
           { required: true, message: "设备代码不能为空", trigger: "blur" }
         ],
         meterCls: [
-          { required: true, message: "计量介质不能为空", trigger: "blur" }
+          { required: true, message: "计量类别不能为空", trigger: "blur" }
         ],
-        meterObjType: [
+        objType: [
           { required: true, message: "计量对象类型 1-区块 2-设备不能为空", trigger: "change" }
         ],
         objCode: [
           { required: true, message: "计量对象编码不能为空", trigger: "blur" }
-        ],
-        colCycle: [
-          { required: true, message: "采集周期不能为空", trigger: "blur" }
-        ],
-        colMode: [
-          { required: true, message: "采集方式不能为空", trigger: "blur" }
-        ],
+        ]
       }
     };
   },
+  watch:{
+    objCode: {
+      handler(id) {
+        const option = this.$refs.treeObjCodeOptions.getNode(id);
+        this.objCode = option.id;
+        this.form.objCode = option.id;
+
+        if (1 === this.form.objType) {
+          if ('Area'  === option.raw.tier) {
+            this.form.objSubType = 1;
+          } else if ('Building'  === option.raw.tier) {
+            this.form.objSubType = 2;
+          } else if ('Zoning'  === option.raw.tier) {
+            this.form.objSubType = 3;
+          }
+          console.log(this.form.objSubType)
+        } else if (2 === this.form.objType) {
+          if ('Facs'  === option.raw.tier) {
+            this.form.objSubType = 1;
+          } else if ('Device'  === option.raw.tier) {
+            this.form.objSubType = 2;
+          }
+        }
+
+      }
+    }
+  },
   created() {
+    this.getAreaOptions();
     this.getList();
   },
   methods: {
@@ -274,11 +315,13 @@ export default {
         deviceCode: null,
         meterCls: null,
         meterObjType: null,
+        objSubType: null,
         objCode: null,
         colCycle: null,
         colMode: null,
         specDesc: null
       };
+      this.objCode = null;
       this.resetForm("form");
     },
     /** 搜索按钮操作 */
@@ -313,16 +356,22 @@ export default {
         this.title = "修改计量设备";
       });
 
+      this.objCode = row.objCode;
       if (row.objType === 1) {
-        areaTreeSelect('Zoning').then(response => {
+        areaTreeSelectByCode('Area', row.areaCode).then(response => {
           this.objCodeOptions = response.data;
         });
       } else if (row.objType === 2) {
-        devTreeByFacs().then(response =>{
+        devTreeByFacs(row.areaCode).then(response =>{
           this.objCodeOptions = response.data;
         })
       }
     },
+    handleAreaSelect(areaCode) {
+      listBuildingByArea(areaCode).then(response => {
+        this.buildingOptions = response.data;
+      })
+    },
     /** 提交按钮 */
     submitForm() {
       this.$refs["form"].validate(valid => {
@@ -353,15 +402,9 @@ export default {
         this.$modal.msgSuccess("删除成功");
       }).catch(() => {});
     },
-    /** 导出按钮操作 */
-    handleExport() {
-      this.download('ems/meterDevice/export', {
-        ...this.queryParams
-      }, `device_${new Date().getTime()}.xlsx`)
-    },
+
     getMeterClsName(meterCls) {
       const clsMap = {
-        25: '天然气表',
         45: '电表',
         70: '水表'
       };
@@ -382,7 +425,7 @@ export default {
         3: '天',
         4: '月'
       };
-      return cycleMap[colCycle] || '未知';
+      return cycleMap[colCycle] || '';
     },
     getColModeName(colMode) {
       const modeMap = {
@@ -391,13 +434,18 @@ export default {
       };
       return modeMap[colMode] || '未知';
     },
+    getAreaOptions() {
+      listTotalArea().then(response => {
+        this.areaOptions = response.data;
+      })
+    },
     changeObjOptions(objType) {
       if (objType === 1) {
-        areaTreeSelect('Zoning').then(response => {
+        areaTreeSelectByCode('Area', this.form.areaCode).then(response => {
           this.objCodeOptions = response.data;
         });
       } else if (objType === 2) {
-        devTreeByFacs().then(response =>{
+        devTreeByFacs(this.form.areaCode).then(response =>{
           this.objCodeOptions = response.data;
         })
       }

+ 3 - 2
ems-ui/src/views/basecfg/zoning/index.vue

@@ -5,7 +5,7 @@
         <div class="head-container">
           <el-input
             v-model="areaName"
-            placeholder="请输入区域名称"
+            placeholder="请输入建筑名称"
             clearable
             size="small"
             prefix-icon="el-icon-search"
@@ -104,7 +104,7 @@
         <el-table v-loading="loading" :data="zoningList" @selection-change="handleSelectionChange">
           <el-table-column type="selection" width="55" align="center" />
           <el-table-column label="区块名称" align="left" prop="zoningName" />
-          <el-table-column label="区块编码" align="center" prop="zoningCode" />
+          <el-table-column label="区块编码" align="center" prop="zoningCode" width="200"/>
           <el-table-column label="所在建筑" align="left" prop="areaPath" />
           <el-table-column label="区块标签" align="center" prop="tagName" />
           <el-table-column label="使用详情" align="center" prop="usageDetail" />
@@ -303,6 +303,7 @@ export default {
     },
     /** 重置按钮操作 */
     resetQuery() {
+      this.queryParams.bldgCode = null;
       this.resetForm("queryForm");
       this.handleQuery();
     },