Kaynağa Gözat

业务配置改造

lv.wenbin 1 yıl önce
ebeveyn
işleme
11765d1194

+ 9 - 1
ems-ui/src/api/basecfg/area.js

@@ -38,7 +38,15 @@ export function updateArea(data) {
 // 删除服务区
 export function delArea(id) {
   return request({
-    url: '/ems/basecfg/area' + id,
+    url: '/ems/basecfg/area/' + id,
     method: 'delete'
   })
 }
+
+// 查询区域树结构
+export function areaTreeSelect(tier) {
+  return request({
+    url: '/ems/basecfg/area/areaTree?tier=' + tier,
+    method: 'get'
+  })
+}

+ 15 - 15
ems-ui/src/api/basecfg/electrovalency.js

@@ -1,44 +1,44 @@
 import request from '@/utils/request'
 
-// 查询电价配置列表
-export function listConfig(query) {
+// 查询服务区用电属性列表
+export function listAttr(query) {
   return request({
-    url: '/ems/basecfg/electrovalency/list',
+    url: '/ems/basecfg/electrovalency/attr/list',
     method: 'get',
     params: query
   })
 }
 
-// 查询电价配置详细
-export function getConfig(id) {
+// 查询服务区用电属性详细
+export function getAttr(id) {
   return request({
-    url: '/ems/basecfg/electrovalency/' + id,
+    url: '/ems/basecfg/electrovalency/attr/' + id,
     method: 'get'
   })
 }
 
-// 新增电价配置
-export function addConfig(data) {
+// 新增服务区用电属性
+export function addAttr(data) {
   return request({
-    url: '/ems/basecfg/electrovalency',
+    url: '/ems/basecfg/electrovalency/attr',
     method: 'post',
     data: data
   })
 }
 
-// 修改电价配置
-export function updateConfig(data) {
+// 修改服务区用电属性
+export function updateAttr(data) {
   return request({
-    url: '/ems/basecfg/electrovalency',
+    url: '/ems/basecfg/electrovalency/attr',
     method: 'put',
     data: data
   })
 }
 
-// 删除电价配置
-export function delConfig(id) {
+// 删除服务区用电属性
+export function delAttr(id) {
   return request({
-    url: '/ems/basecfg/electrovalency/' + id,
+    url: '/ems/basecfg/electrovalency/attr/' + id,
     method: 'delete'
   })
 }

+ 0 - 44
ems-ui/src/api/basecfg/peakvalley.js

@@ -1,44 +0,0 @@
-import request from '@/utils/request'
-
-// 查询电价峰谷列表
-export function listValley(query) {
-  return request({
-    url: '/ems/basecfg/peakvalley/list',
-    method: 'get',
-    params: query
-  })
-}
-
-// 查询电价峰谷详细
-export function getValley(id) {
-  return request({
-    url: '/ems/basecfg/peakvalley/' + id,
-    method: 'get'
-  })
-}
-
-// 新增电价峰谷
-export function addValley(data) {
-  return request({
-    url: '/ems/basecfg/peakvalley',
-    method: 'post',
-    data: data
-  })
-}
-
-// 修改电价峰谷
-export function updateValley(data) {
-  return request({
-    url: '/ems/basecfg/peakvalley',
-    method: 'put',
-    data: data
-  })
-}
-
-// 删除电价峰谷
-export function delValley(id) {
-  return request({
-    url: '/ems/basecfg/peakvalley/' + id,
-    method: 'delete'
-  })
-}

+ 197 - 132
ems-ui/src/views/basecfg/building/index.vue

@@ -1,149 +1,181 @@
 <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="bldgName">
-        <el-input
-          v-model="queryParams.bldgName"
-          placeholder="请输入建筑名称"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item>
-        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
-      </el-form-item>
-    </el-form>
-
-    <el-row :gutter="10" class="mb8">
-      <el-col :span="1.5">
-        <el-button
-          type="primary"
-          plain
-          icon="el-icon-plus"
-          size="mini"
-          @click="handleAdd"
-          v-hasPermi="['basecfg:building:add']"
-        >新增</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="success"
-          plain
-          icon="el-icon-edit"
-          size="mini"
-          :disabled="single"
-          @click="handleUpdate"
-          v-hasPermi="['basecfg:building:edit']"
-        >修改</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="danger"
-          plain
-          icon="el-icon-delete"
-          size="mini"
-          :disabled="multiple"
-          @click="handleDelete"
-          v-hasPermi="['basecfg:building: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="['basecfg:building:export']"
-        >导出</el-button>
+    <el-row :gutter="20">
+      <el-col :span="4" :xs="24">
+        <div class="head-container">
+          <el-input
+            v-model="areaName"
+            placeholder="请输入区域名称"
+            clearable
+            size="small"
+            prefix-icon="el-icon-search"
+            style="margin-bottom: 20px"
+          />
+        </div>
+        <div class="head-container">
+          <el-tree
+            :data="areaOptions"
+            :props="defaultProps"
+            :expand-on-click-node="false"
+            :filter-node-method="filterNode"
+            ref="tree"
+            node-key="id"
+            default-expand-all
+            highlight-current
+            @node-click="handleNodeClick"
+          />
+        </div>
       </el-col>
-      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
-    </el-row>
+      <el-col :span="20" :xs="24">
+        <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+          <el-form-item label="建筑名称" prop="bldgName">
+            <el-input
+              v-model="queryParams.bldgName"
+              placeholder="请输入建筑名称"
+              clearable
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+          <el-form-item>
+            <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+            <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+          </el-form-item>
+        </el-form>
+
+        <el-row :gutter="10" class="mb8">
+          <el-col :span="1.5">
+            <el-button
+              type="primary"
+              plain
+              icon="el-icon-plus"
+              size="mini"
+              @click="handleAdd"
+              v-hasPermi="['basecfg:building:add']"
+            >新增</el-button>
+          </el-col>
+          <el-col :span="1.5">
+            <el-button
+              type="success"
+              plain
+              icon="el-icon-edit"
+              size="mini"
+              :disabled="single"
+              @click="handleUpdate"
+              v-hasPermi="['basecfg:building:edit']"
+            >修改</el-button>
+          </el-col>
+          <el-col :span="1.5">
+            <el-button
+              type="danger"
+              plain
+              icon="el-icon-delete"
+              size="mini"
+              :disabled="multiple"
+              @click="handleDelete"
+              v-hasPermi="['basecfg:building: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="['basecfg:building:export']"
+            >导出</el-button>
+          </el-col>
+          <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+        </el-row>
 
-    <el-table v-loading="loading" :data="premisesList" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="建筑编码" align="center" prop="bldgCode" />
-      <el-table-column label="建筑名称" align="center" prop="bldgName" />
-      <el-table-column label="归属园区" align="center" prop="areaName" />
-      <el-table-column label="详细地址" align="center" prop="address" />
-      <el-table-column label="建筑层数(地上)" align="center" prop="upBldgFloor" />
-      <el-table-column label="建筑层数(地下)" align="center" prop="downBldgFloor" />
-      <el-table-column label="建筑高度(米)" align="center" prop="bldgHeight" />
-      <el-table-column label="建筑面积(平方)" align="center" prop="floorArea" />
-      <el-table-column label="主要用途" align="center" prop="bldgUsage" />
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
-        <template slot-scope="scope">
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-edit"
-            @click="handleUpdate(scope.row)"
-            v-hasPermi="['basecfg:building:edit']"
-          >修改</el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['basecfg:building:remove']"
-          >删除</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
+        <el-table v-loading="loading" :data="premisesList" @selection-change="handleSelectionChange">
+          <el-table-column type="selection" width="55" align="center" />
+          <el-table-column label="建筑编码" align="center" prop="bldgCode" />
+          <el-table-column label="建筑名称" align="center" prop="bldgName" />
+          <el-table-column label="详细地址" align="center" prop="address" />
+          <el-table-column label="建筑层数(地上)" align="center" prop="upBldgFloor" />
+          <el-table-column label="建筑层数(地下)" align="center" prop="downBldgFloor" />
+          <el-table-column label="建筑高度(米)" align="center" prop="bldgHeight" />
+          <el-table-column label="建筑面积(平方)" align="center" prop="floorArea" />
+          <el-table-column label="主要用途" align="center" prop="bldgUsage" />
+          <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+            <template slot-scope="scope">
+              <el-button
+                size="mini"
+                type="text"
+                icon="el-icon-edit"
+                @click="handleUpdate(scope.row)"
+                v-hasPermi="['basecfg:building:edit']"
+              >修改</el-button>
+              <el-button
+                size="mini"
+                type="text"
+                icon="el-icon-delete"
+                @click="handleDelete(scope.row)"
+                v-hasPermi="['basecfg:building:remove']"
+              >删除</el-button>
+            </template>
+          </el-table-column>
+        </el-table>
 
-    <pagination
-      v-show="total>0"
-      :total="total"
-      :page.sync="queryParams.pageNum"
-      :limit.sync="queryParams.pageSize"
-      @pagination="getList"
-    />
+        <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>
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="建筑编码" prop="bldgCode">
-          <el-input v-model="form.bldgCode" placeholder="请输入建筑编码" />
-        </el-form-item>
-        <el-form-item label="建筑名称" prop="bldgName">
-          <el-input v-model="form.bldgName" placeholder="请输入建筑名称" />
-        </el-form-item>
-        <el-form-item label="所属园区" prop="areaCode">
-          <el-input v-model="form.areaName" placeholder="请输入归属园区" />
-        </el-form-item>
-        <el-form-item label="详细地址" prop="address">
-          <el-input v-model="form.address" placeholder="请输入详细地址" />
-        </el-form-item>
-        <el-form-item label="建筑层数(地上)" prop="upBldgFloor">
-          <el-input v-model="form.upBldgFloor" placeholder="请输入建筑层数" />
-        </el-form-item>
-        <el-form-item label="建筑层数(地下)" prop="downBldgFloor">
-          <el-input v-model="form.downBldgFloor" placeholder="请输入建筑层数" />
-        </el-form-item>
-        <el-form-item label="建筑高度" prop="bldgHeight">
-          <el-input v-model="form.bldgHeight" placeholder="请输入建筑高度" />
-        </el-form-item>
-        <el-form-item label="建筑面积" prop="floorArea">
-          <el-input v-model="form.floorArea" placeholder="请输入建筑面积" />
-        </el-form-item>
-        <el-form-item label="主要用途" prop="bldgUsage">
-          <el-input v-model="form.bldgUsage" 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>
+        <!-- 添加或修改建筑基本信息对话框 -->
+        <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="bldgCode">
+              <el-input v-model="form.bldgCode" placeholder="请输入建筑编码" />
+            </el-form-item>
+            <el-form-item label="建筑名称" prop="bldgName">
+              <el-input v-model="form.bldgName" placeholder="请输入建筑名称" />
+            </el-form-item>
+            <el-form-item label="所属园区" prop="areaCode">
+              <treeselect v-model="form.areaCode" :options="areaOptions" :show-count="true" placeholder="请选择归属园区" />
+            </el-form-item>
+            <el-form-item label="详细地址" prop="address">
+              <el-input v-model="form.address" placeholder="请输入详细地址" />
+            </el-form-item>
+            <el-form-item label="建筑层数(地上)" prop="upBldgFloor">
+              <el-input v-model="form.upBldgFloor" placeholder="请输入建筑层数" />
+            </el-form-item>
+            <el-form-item label="建筑层数(地下)" prop="downBldgFloor">
+              <el-input v-model="form.downBldgFloor" placeholder="请输入建筑层数" />
+            </el-form-item>
+            <el-form-item label="建筑高度" prop="bldgHeight">
+              <el-input v-model="form.bldgHeight" placeholder="请输入建筑高度" />
+            </el-form-item>
+            <el-form-item label="建筑面积" prop="floorArea">
+              <el-input v-model="form.floorArea" placeholder="请输入建筑面积" />
+            </el-form-item>
+            <el-form-item label="主要用途" prop="bldgUsage">
+              <el-input v-model="form.bldgUsage" 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>
+      </el-col>
+    </el-row>
   </div>
 </template>
 
 <script>
 import { listPremises, getPremises, delPremises, addPremises, updatePremises } 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",
+  components: { Treeselect },
   data() {
     return {
       // 遮罩层
@@ -164,10 +196,19 @@ export default {
       title: "",
       // 是否显示弹出层
       open: false,
+      // 区域名称
+      areaName: undefined,
+      // 区域树选项
+      areaOptions: undefined,
+      defaultProps: {
+        children: "children",
+        label: "label"
+      },
       // 查询参数
       queryParams: {
         pageNum: 1,
         pageSize: 10,
+        areaCode: null,
         bldgCode: null,
         bldgName: null,
         address: null,
@@ -190,8 +231,15 @@ export default {
       }
     };
   },
+  watch: {
+    // 根据名称筛选区域树
+    areaName(val) {
+      this.$refs.tree.filter(val);
+    }
+  },
   created() {
     this.getList();
+    this.getAreaTree('Area');
   },
   methods: {
     /** 查询建筑基本信息列表 */
@@ -203,6 +251,22 @@ export default {
         this.loading = false;
       });
     },
+    /** 查询区域树结构 */
+    getAreaTree(tier) {
+      areaTreeSelect(tier).then(response => {
+        this.areaOptions = response.data;
+      });
+    },
+    // 筛选节点
+    filterNode(value, data) {
+      if (!value) return true;
+      return data.label.indexOf(value) !== -1;
+    },
+    // 节点单击事件
+    handleNodeClick(data) {
+      this.queryParams.areaCode = data.id;
+      this.handleQuery();
+    },
     // 取消按钮
     cancel() {
       this.open = false;
@@ -212,6 +276,7 @@ export default {
     reset() {
       this.form = {
         id: null,
+        areaCode: null,
         bldgCode: null,
         bldgName: null,
         address: null,

+ 67 - 98
ems-ui/src/views/basecfg/electrovalency/index.vue

@@ -1,11 +1,10 @@
 <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="elecClass">
+      <el-form-item label="园区代码" prop="areaCode">
         <el-input
-          v-model="queryParams.elecClass"
-          placeholder="请输入用电分类"
+          v-model="queryParams.areaCode"
+          placeholder="请输入园区代码"
           clearable
           @keyup.enter.native="handleQuery"
         />
@@ -62,19 +61,14 @@
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
-    <el-table v-loading="loading" :data="configList" @selection-change="handleSelectionChange">
+    <el-table v-loading="loading" :data="attrList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="配置代码" align="center" prop="cfgCode" />
-      <el-table-column label="用电分类" align="center" prop="elecClass" :formatter="getElecClass"/>
-      <el-table-column label="价格类型" align="center" prop="priceType" />
-      <el-table-column label="年用电量下限\n(单位:KV)" align="center" prop="quantityLowerLimit" />
-      <el-table-column label="年用电量上限\n(单位:KV)" align="center" prop="quantityUpperLimit" />
-      <el-table-column label="不满1千伏" align="center" prop="priceLess1kv" />
-      <el-table-column label="不满10千伏" align="center" prop="price1kv10kv" />
-      <el-table-column label="20-30千伏" align="center" prop="price20kv35kv" />
-      <el-table-column label="35-110千伏" align="center" prop="price35kv110kv" />
-      <el-table-column label="110千伏" align="center" prop="price110kv" />
-      <el-table-column label="220千伏" align="center" prop="price220kv" />
+      <el-table-column label="服务区" align="center" prop="areaName" />
+      <el-table-column label="用电分类" align="center" prop="elecTypeName" />
+      <el-table-column label="电压等级" align="center" prop="voltageLevel" />
+      <el-table-column label="计量类型" align="center" prop="reqCapacityFlag" :formatter="getReqCapacityFlag" />
+      <el-table-column label="变压器容量(千伏·安)" align="center" prop="transCapacity" />
+      <el-table-column label="最大需量(千瓦)" align="center" prop="reqQuantity" />
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
@@ -103,38 +97,23 @@
       @pagination="getList"
     />
 
-    <!-- 添加或修改电价配置对话框 -->
+    <!-- 添加或修改服务区用电属性对话框 -->
     <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="cfgCode">
-          <el-input v-model="form.cfgCode" placeholder="请输入配置代码" />
-        </el-form-item>
-        <el-form-item label="用电分类" prop="elecClass">
-          <el-input v-model="form.elecClass" placeholder="请输入用电分类" />
-        </el-form-item>
-        <el-form-item label="年用电量下限" prop="quantityLowerLimit">
-          <el-input v-model="form.quantityLowerLimit" placeholder="请输入年用电量下限" />
-        </el-form-item>
-        <el-form-item label="年用电量上限" prop="quantityUpperLimit">
-          <el-input v-model="form.quantityUpperLimit" placeholder="请输入年用电量上限" />
-        </el-form-item>
-        <el-form-item label="不满1千伏" prop="priceLess1kv">
-          <el-input v-model="form.priceLess1kv" placeholder="请输入不满1千伏" />
-        </el-form-item>
-        <el-form-item label="不满10千伏" prop="price1kv10kv">
-          <el-input v-model="form.price1kv10kv" placeholder="请输入不满10千伏" />
+        <el-form-item label="园区代码" prop="areaCode">
+          <el-input v-model="form.areaCode" placeholder="请输入园区代码" />
         </el-form-item>
-        <el-form-item label="20-30千伏" prop="price20kv35kv">
-          <el-input v-model="form.price20kv35kv" placeholder="请输入20-30千伏" />
+        <el-form-item label="价格编码" prop="priceCode">
+          <el-input v-model="form.priceCode" placeholder="请输入价格编码" />
         </el-form-item>
-        <el-form-item label="35-110千伏" prop="price35kv110kv">
-          <el-input v-model="form.price35kv110kv" placeholder="请输入35-110千伏" />
+        <el-form-item label="计量类型" prop="reqCapacityFlag">
+          <el-input v-model="form.reqCapacityFlag" placeholder="请选择计量类型" />
         </el-form-item>
-        <el-form-item label="110千伏" prop="price110kv">
-          <el-input v-model="form.price110kv" placeholder="请输入110千伏" />
+        <el-form-item label="变压器容量" prop="transCapacity">
+          <el-input v-model="form.transCapacity" placeholder="请输入变压器容量" />
         </el-form-item>
-        <el-form-item label="220千伏" prop="price220kv">
-          <el-input v-model="form.price220kv" placeholder="请输入220千伏" />
+        <el-form-item label="最大需量" prop="reqQuantity">
+          <el-input v-model="form.reqQuantity" placeholder="请输入最大需量" />
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
@@ -146,10 +125,10 @@
 </template>
 
 <script>
-import { listConfig, getConfig, delConfig, addConfig, updateConfig } from "@/api/basecfg/electrovalency";
+import { listAttr, getAttr, delAttr, addAttr, updateAttr } from "@/api/basecfg/electrovalency";
 
 export default {
-  name: "Config",
+  name: "Attr",
   data() {
     return {
       // 遮罩层
@@ -164,8 +143,8 @@ export default {
       showSearch: true,
       // 总条数
       total: 0,
-      // 电价配置表格数据
-      configList: [],
+      // 服务区用电属性表格数据
+      attrList: [],
       // 弹出层标题
       title: "",
       // 是否显示弹出层
@@ -174,37 +153,31 @@ export default {
       queryParams: {
         pageNum: 1,
         pageSize: 10,
-        cfgCode: null,
-        elecClass: null,
-        priceType: null,
-        quantityLowerLimit: null,
-        quantityUpperLimit: null,
-        priceLess1kv: null,
-        price1kv10kv: null,
-        price20kv35kv: null,
-        price35kv110kv: null,
-        price110kv: null,
-        price220kv: null
+        areaCode: null,
+        elecType: null,
+        priceCode: null,
+        reqCapacityFlag: null,
+        transCapacity: null,
+        reqQuantity: null,
       },
       // 表单参数
       form: {},
       // 表单校验
       rules: {
-        cfgCode: [
-          { required: true, message: "配置代码不能为空", trigger: "blur" }
+        areaCode: [
+          { required: true, message: "园区代码不能为空", trigger: "blur" }
         ],
-        elecClass: [
-          { required: true, message: "用电分类不能为空", trigger: "blur" }
+        elecType: [
+          { required: true, message: "用电分类 1:单一制 2:两部制不能为空", trigger: "change" }
         ],
-        priceType: [
-          { required: true, message: "价格类型不能为空", trigger: "change" }
+        priceCode: [
+          { required: true, message: "价格编码不能为空", trigger: "blur" }
         ],
       },
-      elecClassData: [
-        {elecClass:1},
-        {elecClass:2},
-        {elecClass:3},
-        {elecClass:4}
+      reqCapacityFlagData: [
+        { reqCapacityFlag : 0 },
+        { reqCapacityFlag : 1 },
+        { reqCapacityFlag : 2 }
       ]
     };
   },
@@ -212,11 +185,11 @@ export default {
     this.getList();
   },
   methods: {
-    /** 查询电价配置列表 */
+    /** 查询服务区用电属性列表 */
     getList() {
       this.loading = true;
-      listConfig(this.queryParams).then(response => {
-        this.configList = response.rows;
+      listAttr(this.queryParams).then(response => {
+        this.attrList = response.rows;
         this.total = response.total;
         this.loading = false;
       });
@@ -230,17 +203,14 @@ export default {
     reset() {
       this.form = {
         id: null,
-        cfgCode: null,
-        elecClass: null,
-        priceType: null,
-        quantityLowerLimit: null,
-        quantityUpperLimit: null,
-        priceLess1kv: null,
-        price1kv10kv: null,
-        price20kv35kv: null,
-        price35kv110kv: null,
-        price110kv: null,
-        price220kv: null
+        areaCode: null,
+        elecType: null,
+        priceCode: null,
+        reqCapacityFlag: null,
+        transCapacity: null,
+        reqQuantity: null,
+        createTime: null,
+        updateTime: null
       };
       this.resetForm("form");
     },
@@ -264,16 +234,16 @@ export default {
     handleAdd() {
       this.reset();
       this.open = true;
-      this.title = "添加电价配置";
+      this.title = "添加服务区用电属性";
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
       this.reset();
       const id = row.id || this.ids
-      getConfig(id).then(response => {
+      getAttr(id).then(response => {
         this.form = response.data;
         this.open = true;
-        this.title = "修改电价配置";
+        this.title = "修改服务区用电属性";
       });
     },
     /** 提交按钮 */
@@ -281,13 +251,13 @@ export default {
       this.$refs["form"].validate(valid => {
         if (valid) {
           if (this.form.id != null) {
-            updateConfig(this.form).then(response => {
+            updateAttr(this.form).then(response => {
               this.$modal.msgSuccess("修改成功");
               this.open = false;
               this.getList();
             });
           } else {
-            addConfig(this.form).then(response => {
+            addAttr(this.form).then(response => {
               this.$modal.msgSuccess("新增成功");
               this.open = false;
               this.getList();
@@ -299,8 +269,8 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const ids = row.id || this.ids;
-      this.$modal.confirm('是否确认删除电价配置编号为"' + ids + '"的数据项?').then(function() {
-        return delConfig(ids);
+      this.$modal.confirm('是否确认删除服务区用电属性编号为"' + ids + '"的数据项?').then(function() {
+        return delAttr(ids);
       }).then(() => {
         this.getList();
         this.$modal.msgSuccess("删除成功");
@@ -308,18 +278,17 @@ export default {
     },
     /** 导出按钮操作 */
     handleExport() {
-      this.download('ems/basecfg/electrovalency/export', {
+      this.download('ems/attr/export', {
         ...this.queryParams
-      }, `config_${new Date().getTime()}.xlsx`)
+      }, `attr_${new Date().getTime()}.xlsx`)
     },
-    getElecClass(row, column, cellValue, index){
-      const elecClassMap = {
-        1: '居民用电',
-        2: '一般工商业及其他用电',
-        3: '大工业用电',
-        4: '农业生产用电'
+    getReqCapacityFlag(row, column, cellValue, index) {
+      const reqCapacityFlagMap = {
+        0: '未知',
+        1: '容量电价',
+        2: '需量电价'
       };
-      return elecClassMap[cellValue] || '未知';
+      return reqCapacityFlagMap[cellValue] || '未知';
     }
   }
 };

+ 32 - 4
ems-ui/src/views/basecfg/emissionfactor/index.vue

@@ -73,9 +73,9 @@
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column label="地区码" align="center" prop="regionCode" />
       <el-table-column label="地区名称" align="center" prop="regionName" />
-      <el-table-column label="地区类型" align="center" prop="regionType" />
+      <el-table-column label="地区类型" align="center" prop="regionType" :formatter="getRegionType"/>
       <el-table-column label="因子值" align="center" prop="factorValue" />
-      <el-table-column label="因子类型" align="center" prop="factorType" />
+      <el-table-column label="因子类型" align="center" prop="factorType" :formatter="getFactorType"/>
       <el-table-column label="数据版本" align="center" prop="version" />
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
@@ -176,9 +176,20 @@ export default {
           { required: true, message: "地区名称不能为空", trigger: "blur" }
         ],
         regionType: [
-          { required: true, message: "地区类型 0:国家,1:地区,2:省份,3:城市不能为空", trigger: "change" }
+          { required: true, message: "地区类型不能为空", trigger: "change" }
         ],
-      }
+      },
+      regionTypeData: [
+        { regionType:0 },
+        { regionType:1 },
+        { regionType:2 },
+        { regionType:3 }
+      ],
+      factorTypeData: [
+        { factorType:1 },
+        { factorType:2 },
+        { factorType:3 }
+      ]
     };
   },
   created() {
@@ -279,6 +290,23 @@ export default {
       this.download('ems/basecfg/emissionFactor/export', {
         ...this.queryParams
       }, `factor_${new Date().getTime()}.xlsx`)
+    },
+    getRegionType(row, column, cellValue, index) {
+      const regionTypeMap = {
+        0: '国家',
+        1: '地区',
+        2: '省份',
+        3: '城市'
+      };
+      return regionTypeMap[cellValue] || '未知';
+    },
+    getFactorType(row, column, cellValue, index) {
+      const factorType = {
+        1: '电力平均二氧化碳排放因子',
+        2: '电力平均二氧化碳排放因子(不含市场化交易的非化石能源电量)',
+        3: '化石能源电力二氧化碳排放因子'
+      };
+      return factorType[cellValue] || '未知';
     }
   }
 };

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

@@ -93,7 +93,12 @@
       <el-table-column label="设施分类" align="center" prop="facsTypeName" />
       <el-table-column label="设施子类" align="center" prop="facsSubtypeName" />
       <el-table-column label="厂商" align="center" prop="manufacturer" />
-      <el-table-column label="启用状态" align="center" prop="enable" />
+      <el-table-column label="启用状态" align="center" prop="enable" >
+        <template slot-scope="scope">
+          <!-- 根据status的值显示不同的文本 -->
+          <span>{{ scope.row.enable === 0 ? '未启用' : '启用' }}</span>
+        </template>
+      </el-table-column>
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button

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

@@ -81,8 +81,13 @@
       <el-table-column label="输出设施" align="center" prop="exportFacsName" />
       <el-table-column label="流入设施" align="center" prop="inputFacsName" />
       <el-table-column label="流动介质" align="center" prop="emsClsName" />
-      <el-table-column label="供能状态" align="center" prop="state" />
-      <el-table-column label="能流动作" align="center" prop="actionType" />
+      <el-table-column label="供能状态" align="center" prop="state">
+        <template slot-scope="scope">
+          <!-- 根据status的值显示不同的文本 -->
+          <span>{{ scope.row.state === 0 ? '停止' : '进行中' }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="能流动作" align="center" prop="actionType" :formatter="getActionType"/>
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
@@ -196,7 +201,14 @@ export default {
         actionType: [
           { required: true, message: "能流动作 不能为空", trigger: "change" }
         ],
-      }
+      },
+      actionTypeData: [
+        { actionType:4501 },
+        { actionType:4502 },
+        { actionType:4503 },
+        { actionType:4504 },
+        { actionType:4505 },
+      ]
     };
   },
   created() {
@@ -299,6 +311,16 @@ export default {
       this.download('ems/basecfg/flowrel/export', {
         ...this.queryParams
       }, `rel_${new Date().getTime()}.xlsx`)
+    },
+    getActionType(row, column, cellValue, index) {
+      const actionTypeMap = {
+        4501: '购电',
+        4502: '上网',
+        4503: '充电',
+        4504: '放电',
+        4505: '自产自销'
+      };
+      return actionTypeMap[cellValue] || '未知';
     }
   }
 };

+ 0 - 313
ems-ui/src/views/basecfg/peakvalley/index.vue

@@ -1,313 +0,0 @@
-<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="timeKey">
-        <el-input
-          v-model="queryParams.timeKey"
-          placeholder="请输入时间标识"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="时间序列" prop="timeIndex">
-        <el-input
-          v-model="queryParams.timeIndex"
-          placeholder="请输入时间序列"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item>
-        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
-      </el-form-item>
-    </el-form>
-
-    <el-row :gutter="10" class="mb8">
-      <el-col :span="1.5">
-        <el-button
-          type="primary"
-          plain
-          icon="el-icon-plus"
-          size="mini"
-          @click="handleAdd"
-          v-hasPermi="['basecfg:peakvalley:add']"
-        >新增</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="success"
-          plain
-          icon="el-icon-edit"
-          size="mini"
-          :disabled="single"
-          @click="handleUpdate"
-          v-hasPermi="['basecfg:peakvalley:edit']"
-        >修改</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="danger"
-          plain
-          icon="el-icon-delete"
-          size="mini"
-          :disabled="multiple"
-          @click="handleDelete"
-          v-hasPermi="['basecfg:peakvalley: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="['basecfg:peakvalley:export']"
-        >导出</el-button>
-      </el-col>
-      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
-    </el-row>
-
-    <el-table v-loading="loading" :data="valleyList" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="序号" align="center" prop="id" />
-      <el-table-column label="时间标识" align="center" prop="timeKey" />
-      <el-table-column label="时间序列" align="center" prop="timeIndex" />
-      <el-table-column label="开始时间" align="center" prop="startTime" width="180">
-        <template slot-scope="scope">
-          <span>{{ scope.row.startTime }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="结束时间" align="center" prop="endTime" width="180">
-        <template slot-scope="scope">
-          <span>{{ scope.row.endTime }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="计量类型" align="center" prop="type" />
-      <el-table-column label="浮动值" align="center" prop="floatingValue" />
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
-        <template slot-scope="scope">
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-edit"
-            @click="handleUpdate(scope.row)"
-            v-hasPermi="['basecfg:peakvalley:edit']"
-          >修改</el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['basecfg:peakvalley:remove']"
-          >删除</el-button>
-        </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>
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="时间标识" prop="timeKey">
-          <el-input v-model="form.timeKey" placeholder="请输入时间标识" />
-        </el-form-item>
-        <el-form-item label="时间序列" prop="timeIndex">
-          <el-input v-model="form.timeIndex" placeholder="请输入时间序列" />
-        </el-form-item>
-        <el-form-item label="开始时间HH:mm:ss" prop="startTime">
-          <el-date-picker clearable
-            v-model="form.startTime"
-            type="date"
-            value-format="HH:mm:ss"
-            placeholder="请选择开始时间HH:mm:ss">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="结束时间HH:mm:ss" prop="endTime">
-          <el-date-picker clearable
-            v-model="form.endTime"
-            type="date"
-            value-format="HH:mm:ss"
-            placeholder="请选择结束时间HH:mm:ss">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="浮动值" prop="floatingValue">
-          <el-input v-model="form.floatingValue" 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>
-</template>
-
-<script>
-import { listValley, getValley, delValley, addValley, updateValley } from "@/api/basecfg/peakvalley";
-
-export default {
-  name: "Valley",
-  data() {
-    return {
-      // 遮罩层
-      loading: true,
-      // 选中数组
-      ids: [],
-      // 非单个禁用
-      single: true,
-      // 非多个禁用
-      multiple: true,
-      // 显示搜索条件
-      showSearch: true,
-      // 总条数
-      total: 0,
-      // 电价峰谷表格数据
-      valleyList: [],
-      // 弹出层标题
-      title: "",
-      // 是否显示弹出层
-      open: false,
-      // 查询参数
-      queryParams: {
-        pageNum: 1,
-        pageSize: 10,
-        timeKey: null,
-        timeIndex: null,
-        startTime: null,
-        endTime: null,
-        type: null,
-        floatingValue: null
-      },
-      // 表单参数
-      form: {},
-      // 表单校验
-      rules: {
-        timeKey: [
-          { required: true, message: "时间标识不能为空", trigger: "blur" }
-        ],
-        timeIndex: [
-          { required: true, message: "时间序列不能为空", trigger: "blur" }
-        ],
-        startTime: [
-          { required: true, message: "开始时间HH:mm:ss不能为空", trigger: "blur" }
-        ],
-        endTime: [
-          { required: true, message: "结束时间HH:mm:ss不能为空", trigger: "blur" }
-        ],
-        type: [
-          { required: true, message: "计量类型不能为空", trigger: "change" }
-        ],
-      }
-    };
-  },
-  created() {
-    this.getList();
-  },
-  methods: {
-    /** 查询电价峰谷列表 */
-    getList() {
-      this.loading = true;
-      listValley(this.queryParams).then(response => {
-        this.valleyList = response.rows;
-        this.total = response.total;
-        this.loading = false;
-      });
-    },
-    // 取消按钮
-    cancel() {
-      this.open = false;
-      this.reset();
-    },
-    // 表单重置
-    reset() {
-      this.form = {
-        id: null,
-        timeKey: null,
-        timeIndex: null,
-        startTime: null,
-        endTime: null,
-        type: null,
-        floatingValue: null
-      };
-      this.resetForm("form");
-    },
-    /** 搜索按钮操作 */
-    handleQuery() {
-      this.queryParams.pageNum = 1;
-      this.getList();
-    },
-    /** 重置按钮操作 */
-    resetQuery() {
-      this.resetForm("queryForm");
-      this.handleQuery();
-    },
-    // 多选框选中数据
-    handleSelectionChange(selection) {
-      this.ids = selection.map(item => item.id)
-      this.single = selection.length!==1
-      this.multiple = !selection.length
-    },
-    /** 新增按钮操作 */
-    handleAdd() {
-      this.reset();
-      this.open = true;
-      this.title = "添加电价峰谷";
-    },
-    /** 修改按钮操作 */
-    handleUpdate(row) {
-      this.reset();
-      const id = row.id || this.ids
-      getValley(id).then(response => {
-        this.form = response.data;
-        this.open = true;
-        this.title = "修改电价峰谷";
-      });
-    },
-    /** 提交按钮 */
-    submitForm() {
-      this.$refs["form"].validate(valid => {
-        if (valid) {
-          if (this.form.id != null) {
-            updateValley(this.form).then(response => {
-              this.$modal.msgSuccess("修改成功");
-              this.open = false;
-              this.getList();
-            });
-          } else {
-            addValley(this.form).then(response => {
-              this.$modal.msgSuccess("新增成功");
-              this.open = false;
-              this.getList();
-            });
-          }
-        }
-      });
-    },
-    /** 删除按钮操作 */
-    handleDelete(row) {
-      const ids = row.id || this.ids;
-      this.$modal.confirm('是否确认删除电价峰谷编号为"' + ids + '"的数据项?').then(function() {
-        return delValley(ids);
-      }).then(() => {
-        this.getList();
-        this.$modal.msgSuccess("删除成功");
-      }).catch(() => {});
-    },
-    /** 导出按钮操作 */
-    handleExport() {
-      this.download('ems/basecfg/peakvalley/export', {
-        ...this.queryParams
-      }, `valley_${new Date().getTime()}.xlsx`)
-    }
-  }
-};
-</script>

+ 197 - 140
ems-ui/src/views/basecfg/zoning/index.vue

@@ -1,157 +1,183 @@
 <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="zoningName">
-        <el-input
-          v-model="queryParams.zoningName"
-          placeholder="请输入分区名称"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="楼层" prop="floor">
-        <el-input
-          v-model="queryParams.floor"
-          placeholder="请输入楼层"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="房间号" prop="roomNo">
-        <el-input
-          v-model="queryParams.roomNo"
-          placeholder="请输入房间号"
-          clearable
-          @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item>
-        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
-      </el-form-item>
-    </el-form>
-
-    <el-row :gutter="10" class="mb8">
-      <el-col :span="1.5">
-        <el-button
-          type="primary"
-          plain
-          icon="el-icon-plus"
-          size="mini"
-          @click="handleAdd"
-          v-hasPermi="['basecfg:zoning:add']"
-        >新增</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="success"
-          plain
-          icon="el-icon-edit"
-          size="mini"
-          :disabled="single"
-          @click="handleUpdate"
-          v-hasPermi="['basecfg:zoning:edit']"
-        >修改</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="danger"
-          plain
-          icon="el-icon-delete"
-          size="mini"
-          :disabled="multiple"
-          @click="handleDelete"
-          v-hasPermi="['basecfg:zoning:remove']"
-        >删除</el-button>
+    <el-row :gutter="20">
+      <el-col :span="4" :xs="24">
+        <div class="head-container">
+          <el-input
+            v-model="areaName"
+            placeholder="请输入区域名称"
+            clearable
+            size="small"
+            prefix-icon="el-icon-search"
+            style="margin-bottom: 20px"
+          />
+        </div>
+        <div class="head-container">
+          <el-tree
+            :data="areaOptions"
+            :props="defaultProps"
+            :expand-on-click-node="false"
+            :filter-node-method="filterNode"
+            ref="tree"
+            node-key="id"
+            default-expand-all
+            highlight-current
+            @node-click="handleNodeClick"
+          />
+        </div>
       </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="warning"
-          plain
-          icon="el-icon-download"
-          size="mini"
-          @click="handleExport"
-          v-hasPermi="['basecfg:zoning:export']"
-        >导出</el-button>
-      </el-col>
-      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
-    </el-row>
+      <el-col :span="20" :xs="24">
+        <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+          <el-form-item label="分区名称" prop="zoningName">
+            <el-input
+              v-model="queryParams.zoningName"
+              placeholder="请输入分区名称"
+              clearable
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+
+          <el-form-item label="房间号" prop="roomNo">
+            <el-input
+              v-model="queryParams.roomNo"
+              placeholder="请输入房间号"
+              clearable
+              @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+          <el-form-item>
+            <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+            <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+          </el-form-item>
+        </el-form>
 
-    <el-table v-loading="loading" :data="zoningList" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="分区编码" align="center" prop="zoningCode" />
-      <el-table-column label="分区名称" align="center" prop="zoningName" />
-      <el-table-column label="所在建筑" align="center" prop="bldgName" />
-      <el-table-column label="楼层" align="center" prop="floor" />
-      <el-table-column label="房间号" align="center" prop="roomNo" />
-      <el-table-column label="建筑划分面积" align="center" prop="bldgLdArea" />
-      <el-table-column label="使用详情" align="center" prop="usageDetail" />
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
-        <template slot-scope="scope">
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-edit"
-            @click="handleUpdate(scope.row)"
-            v-hasPermi="['basecfg:zoning:edit']"
-          >修改</el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['basecfg:zoning:remove']"
-          >删除</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
+        <el-row :gutter="10" class="mb8">
+          <el-col :span="1.5">
+            <el-button
+              type="primary"
+              plain
+              icon="el-icon-plus"
+              size="mini"
+              @click="handleAdd"
+              v-hasPermi="['basecfg:zoning:add']"
+            >新增</el-button>
+          </el-col>
+          <el-col :span="1.5">
+            <el-button
+              type="success"
+              plain
+              icon="el-icon-edit"
+              size="mini"
+              :disabled="single"
+              @click="handleUpdate"
+              v-hasPermi="['basecfg:zoning:edit']"
+            >修改</el-button>
+          </el-col>
+          <el-col :span="1.5">
+            <el-button
+              type="danger"
+              plain
+              icon="el-icon-delete"
+              size="mini"
+              :disabled="multiple"
+              @click="handleDelete"
+              v-hasPermi="['basecfg:zoning: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="['basecfg:zoning:export']"
+            >导出</el-button>
+          </el-col>
+          <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+        </el-row>
 
-    <pagination
-      v-show="total>0"
-      :total="total"
-      :page.sync="queryParams.pageNum"
-      :limit.sync="queryParams.pageSize"
-      @pagination="getList"
-    />
+        <el-table v-loading="loading" :data="zoningList" @selection-change="handleSelectionChange">
+          <el-table-column type="selection" width="55" align="center" />
+          <el-table-column label="分区编码" align="center" prop="zoningCode" />
+          <el-table-column label="分区名称" align="center" prop="zoningName" />
+          <el-table-column label="所在建筑" align="center" prop="bldgName" />
+          <el-table-column label="楼层" align="center" prop="floor" />
+          <el-table-column label="房间号" align="center" prop="roomNo" />
+          <el-table-column label="建筑划分面积" align="center" prop="bldgLdArea" />
+          <el-table-column label="使用详情" align="center" prop="usageDetail" />
+          <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+            <template slot-scope="scope">
+              <el-button
+                size="mini"
+                type="text"
+                icon="el-icon-edit"
+                @click="handleUpdate(scope.row)"
+                v-hasPermi="['basecfg:zoning:edit']"
+              >修改</el-button>
+              <el-button
+                size="mini"
+                type="text"
+                icon="el-icon-delete"
+                @click="handleDelete(scope.row)"
+                v-hasPermi="['basecfg:zoning:remove']"
+              >删除</el-button>
+            </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>
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="分区编码" prop="zoningCode">
-          <el-input v-model="form.zoningCode" placeholder="请输入分区编码" />
-        </el-form-item>
-        <el-form-item label="分区名称" prop="zoningName">
-          <el-input v-model="form.zoningName" placeholder="请输入分区名称" />
-        </el-form-item>
-        <el-form-item label="所在建筑" prop="bldgName">
-          <el-input v-model="form.bldgCode" placeholder="请输入建筑编码" />
-        </el-form-item>
-        <el-form-item label="楼层" prop="floor">
-          <el-input v-model="form.floor" placeholder="请输入楼层" />
-        </el-form-item>
-        <el-form-item label="房间号" prop="roomNo">
-          <el-input v-model="form.roomNo" placeholder="请输入房间号" />
-        </el-form-item>
-        <el-form-item label="建筑划分面积" prop="bldgLdArea">
-          <el-input v-model="form.bldgLdArea" placeholder="请输入建筑划分面积" />
-        </el-form-item>
-        <el-form-item label="使用详情" prop="usageDetail">
-          <el-input v-model="form.usageDetail" 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>
+        <!-- 添加或修改建筑区域划分对话框 -->
+        <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="zoningCode">
+              <el-input v-model="form.zoningCode" placeholder="请输入分区编码" />
+            </el-form-item>
+            <el-form-item label="分区名称" prop="zoningName">
+              <el-input v-model="form.zoningName" placeholder="请输入分区名称" />
+            </el-form-item>
+            <el-form-item label="所属园区" prop="bldgCode">
+              <treeselect v-model="form.bldgCode" :options="areaOptions" :show-count="true" placeholder="请选择所属建筑" />
+            </el-form-item>
+            <el-form-item label="楼层" prop="floor">
+              <el-input v-model="form.floor" placeholder="请输入楼层" />
+            </el-form-item>
+            <el-form-item label="房间号" prop="roomNo">
+              <el-input v-model="form.roomNo" placeholder="请输入房间号" />
+            </el-form-item>
+            <el-form-item label="建筑划分面积" prop="bldgLdArea">
+              <el-input v-model="form.bldgLdArea" placeholder="请输入建筑划分面积" />
+            </el-form-item>
+            <el-form-item label="使用详情" prop="usageDetail">
+              <el-input v-model="form.usageDetail" 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>
+      </el-col>
+    </el-row>
   </div>
 </template>
 
 <script>
 import { listZoning, getZoning, delZoning, addZoning, updateZoning } from "@/api/basecfg/zoning";
+import { areaTreeSelect } from "@/api/basecfg/area"
+import Treeselect from "@riophae/vue-treeselect";
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
 
 export default {
   name: "Zonin",
+  components: { Treeselect },
   data() {
     return {
       // 遮罩层
@@ -172,6 +198,14 @@ export default {
       title: "",
       // 是否显示弹出层
       open: false,
+      // 区域名称
+      areaName: undefined,
+      // 区域树选项
+      areaOptions: undefined,
+      defaultProps: {
+        children: "children",
+        label: "label"
+      },
       // 查询参数
       queryParams: {
         pageNum: 1,
@@ -197,8 +231,15 @@ export default {
       }
     };
   },
+  watch: {
+    // 根据名称筛选区域树
+    areaName(val) {
+      this.$refs.tree.filter(val);
+    }
+  },
   created() {
     this.getList();
+    this.getAreaTree('Building');
   },
   methods: {
     /** 查询建筑区域划分列表 */
@@ -210,6 +251,22 @@ export default {
         this.loading = false;
       });
     },
+    /** 查询区域树结构 */
+    getAreaTree(tier) {
+      areaTreeSelect(tier).then(response => {
+        this.areaOptions = response.data;
+      });
+    },
+    // 筛选节点
+    filterNode(value, data) {
+      if (!value) return true;
+      return data.label.indexOf(value) !== -1;
+    },
+    // 节点单击事件
+    handleNodeClick(data) {
+      this.queryParams.bldgCode = data.id;
+      this.handleQuery();
+    },
     // 取消按钮
     cancel() {
       this.open = false;

+ 98 - 0
ems-ui/src/views/construction.vue

@@ -0,0 +1,98 @@
+<template>
+  <div class="app-container home">
+    <el-row :gutter="20">
+      <el-col :sm="24" :lg="12" style="padding-left: 20px">
+        <h2>常泰大桥服务区能源管理系统</h2>
+        <p>
+          功能建设中,敬请期待.....
+        </p>
+      </el-col>
+    </el-row>
+    <el-divider />
+    <el-row :gutter="20">
+
+    </el-row>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "Index",
+  data() {
+    return {
+      // 版本号
+      version: "3.6.4",
+    };
+  },
+  methods: {
+    goTarget(href) {
+      window.open(href, "_blank");
+    },
+  },
+};
+</script>
+
+<style scoped lang="scss">
+.home {
+  blockquote {
+    padding: 10px 20px;
+    margin: 0 0 20px;
+    font-size: 17.5px;
+    border-left: 5px solid #eee;
+  }
+  hr {
+    margin-top: 20px;
+    margin-bottom: 20px;
+    border: 0;
+    border-top: 1px solid #eee;
+  }
+  .col-item {
+    margin-bottom: 20px;
+  }
+
+  ul {
+    padding: 0;
+    margin: 0;
+  }
+
+  font-family: "open sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
+  font-size: 13px;
+  color: #676a6c;
+  overflow-x: hidden;
+
+  ul {
+    list-style-type: none;
+  }
+
+  h4 {
+    margin-top: 0px;
+  }
+
+  h2 {
+    margin-top: 10px;
+    font-size: 26px;
+    font-weight: 100;
+  }
+
+  p {
+    margin-top: 10px;
+
+    b {
+      font-weight: 700;
+    }
+  }
+
+  .update-log {
+    ol {
+      display: block;
+      list-style-type: decimal;
+      margin-block-start: 1em;
+      margin-block-end: 1em;
+      margin-inline-start: 0;
+      margin-inline-end: 0;
+      padding-inline-start: 40px;
+    }
+  }
+}
+</style>
+