Browse Source

Merge branch 'master' of http://git.xt.wenhq.top:8083/hs/zhny_ui

# Conflicts:
#	ems-ui/src/views/basecfg/zoning/index.vue
hsshuxian 11 months ago
parent
commit
b57fda4b07

+ 2 - 0
ems-ui/src/views/adapter/subsystem/index.vue

@@ -66,7 +66,9 @@
       <el-table-column label="系统简称" align="center" prop="shortName" />
       <el-table-column label="厂商" align="center" prop="manFacturer" />
       <el-table-column label="联系人" align="center" prop="contactPerson" />
+      <el-table-column label="联系电话" align="center" prop="contactNumber" />
       <el-table-column label="维护人" align="center" prop="maintainerPerson" />
+      <el-table-column label="维护电话" align="center" prop="maintainerNumber" />
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button

+ 102 - 165
ems-ui/src/views/basecfg/building/index.vue

@@ -3,38 +3,18 @@
     <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"
-          />
+          <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"
-          />
+          <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="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-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>
@@ -44,46 +24,20 @@
 
         <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-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-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-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-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>
@@ -94,47 +48,32 @@
           <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" >
+          <el-table-column label="建筑层数" align="center">
             <template slot-scope="scope">
               <span>{{ scope.row.downBldgFloor + scope.row.upBldgFloor + "层" }}</span>
             </template>
           </el-table-column>
           <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>
+              <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 ref="form" :model="form" :rules="rules" label-width="120px">
             <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="bldgCode">
-              <el-input v-model="form.bldgCode" placeholder="请输入建筑编码" :readonly="isReadOnly"/>
+              <el-input v-model="form.bldgCode" placeholder="请输入建筑编码" :readonly="isReadOnly" />
             </el-form-item>
             <el-form-item label="建筑名称" prop="bldgName">
               <el-input v-model="form.bldgName" placeholder="请输入建筑名称" />
@@ -143,22 +82,16 @@
               <el-input v-model="form.address" placeholder="请输入详细地址" />
             </el-form-item>
             <el-form-item label="地上层数" prop="upBldgFloor">
-              <el-input v-model="form.upBldgFloor" placeholder="请输入建筑层数" />
+              <el-input v-model="form.upBldgFloor" oninput="value=value.replace(/^0(0+|\d+)|[^\d]+/g,'')" placeholder="请输入建筑层数" />
             </el-form-item>
             <el-form-item label="地下层数" prop="downBldgFloor">
-              <el-input v-model="form.downBldgFloor" placeholder="请输入建筑层数" />
+              <el-input v-model="form.downBldgFloor" oninput="value=value.replace(/^0(0+|\d+)|[^\d]+/g,'')" placeholder="请输入建筑层数" />
             </el-form-item>
-            <el-form-item label="建筑高度(米)" prop="bldgHeight">
-              <el-input v-model="form.bldgHeight" placeholder="请输入建筑高度" />
+            <el-form-item label="建筑高度(米)" prop="bldgHeight">
+              <el-input v-model="form.bldgHeight" oninput ="value=value.replace(/[^0-9.]/g,'')" placeholder="请输入建筑高度" />
             </el-form-item>
-            <el-form-item prop="floorArea">
-              <template slot="label">
-                <div>
-                  <span>建筑面积</span>
-                  <span style="margin-left: 4px; display: block;">(平方米)</span>
-                </div>
-              </template>
-              <el-input v-model="form.floorArea" placeholder="请输入建筑面积" />
+            <el-form-item label="建筑面积(平方米)" prop="floorArea">
+              <el-input v-model="form.floorArea" oninput ="value=value.replace(/[^0-9.]/g,'')" placeholder="请输入建筑面积" />
             </el-form-item>
             <el-form-item label="主要用途" prop="bldgUsage">
               <el-input v-model="form.bldgUsage" placeholder="请输入主要用途" />
@@ -175,13 +108,13 @@
 </template>
 
 <script>
-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";
+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: "Building",
+  name: 'Building',
   components: { Treeselect },
   data() {
     return {
@@ -200,7 +133,7 @@ export default {
       // 建筑基本信息表格数据
       buildingList: [],
       // 弹出层标题
-      title: "",
+      title: '',
       // 是否显示弹出层
       open: false,
       // 区域名称
@@ -208,8 +141,8 @@ export default {
       // 区域树选项
       areaOptions: undefined,
       defaultProps: {
-        children: "children",
-        label: "label"
+        children: 'children',
+        label: 'label'
       },
       isReadOnly: false,
       // 查询参数
@@ -230,55 +163,51 @@ export default {
       form: {},
       // 表单校验
       rules: {
-        bldgCode: [
-          { required: true, message: "建筑编码不能为空", trigger: "blur" }
-        ],
-        bldgName: [
-          { required: true, message: "建筑名称不能为空", trigger: "blur" }
-        ],
+        bldgCode: [{ required: true, message: '建筑编码不能为空', trigger: 'blur' }],
+        bldgName: [{ required: true, message: '建筑名称不能为空', trigger: 'blur' }]
       }
-    };
+    }
   },
   watch: {
     // 根据名称筛选区域树
     areaName(val) {
-      this.$refs.tree.filter(val);
+      this.$refs.tree.filter(val)
     }
   },
   created() {
-    this.getList();
-    this.getAreaTree('Area');
+    this.getList()
+    this.getAreaTree('Area')
   },
   methods: {
     /** 查询建筑基本信息列表 */
     getList() {
-      this.loading = true;
+      this.loading = true
       listBuilding(this.queryParams).then(response => {
-        this.buildingList = response.rows;
-        this.total = response.total;
-        this.loading = false;
-      });
+        this.buildingList = response.rows
+        this.total = response.total
+        this.loading = false
+      })
     },
     /** 查询区域树结构 */
     getAreaTree(tier) {
       areaTreeSelect(tier).then(response => {
-        this.areaOptions = response.data;
-      });
+        this.areaOptions = response.data
+      })
     },
     // 筛选节点
     filterNode(value, data) {
-      if (!value) return true;
-      return data.label.indexOf(value) !== -1;
+      if (!value) return true
+      return data.label.indexOf(value) !== -1
     },
     // 节点单击事件
     handleNodeClick(data) {
-      this.queryParams.areaCode = data.id;
-      this.handleQuery();
+      this.queryParams.areaCode = data.id
+      this.handleQuery()
     },
     // 取消按钮
     cancel() {
-      this.open = false;
-      this.reset();
+      this.open = false
+      this.reset()
     },
     // 表单重置
     reset() {
@@ -293,80 +222,88 @@ export default {
         bldgHeight: null,
         floorArea: null,
         bldgUsage: null
-      };
-      this.resetForm("form");
+      }
+      this.resetForm('form')
     },
     /** 搜索按钮操作 */
     handleQuery() {
-      this.queryParams.pageNum = 1;
-      this.getList();
+      this.queryParams.pageNum = 1
+      this.getList()
     },
     /** 重置按钮操作 */
     resetQuery() {
-      this.queryParams.areaCode = null;
-      this.resetForm("queryForm");
-      this.handleQuery();
+      this.queryParams.areaCode = null
+      this.resetForm('queryForm')
+      this.handleQuery()
     },
     // 多选框选中数据
     handleSelectionChange(selection) {
       this.ids = selection.map(item => item.id)
-      this.single = selection.length!==1
+      this.single = selection.length !== 1
       this.multiple = !selection.length
     },
     /** 新增按钮操作 */
     handleAdd() {
-      this.reset();
-      this.open = true;
-      this.isReadOnly = false;
-      this.title = "添加建筑基本信息";
+      this.reset()
+      this.open = true
+      this.isReadOnly = false
+      this.title = '添加建筑基本信息'
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
-      this.reset();
-      this.isReadOnly = false;
+      this.reset()
+      this.isReadOnly = false
       const id = row.id || this.ids
       getBuilding(id).then(response => {
-        this.form = response.data;
-        this.open = true;
-        this.title = "修改建筑基本信息";
-      });
+        this.form = response.data
+        this.open = true
+        this.title = '修改建筑基本信息'
+      })
     },
     /** 提交按钮 */
     submitForm() {
-      this.$refs["form"].validate(valid => {
+      this.$refs['form'].validate(valid => {
         if (valid) {
           if (this.form.id != null) {
             updateBuilding(this.form).then(response => {
-              this.$modal.msgSuccess("修改成功");
-              this.open = false;
-              this.getList();
-            });
+              this.$modal.msgSuccess('修改成功')
+              this.open = false
+              this.getList()
+            })
           } else {
             addBuilding(this.form).then(response => {
-              this.$modal.msgSuccess("新增成功");
-              this.open = false;
-              this.getList();
-            });
+              this.$modal.msgSuccess('新增成功')
+              this.open = false
+              this.getList()
+            })
           }
         }
-      });
+      })
     },
     /** 删除按钮操作 */
     handleDelete(row) {
-      const ids = row.id || this.ids;
-      this.$modal.confirm('是否确认删除建筑基本信息编号为"' + ids + '"的数据项?').then(function() {
-        return delBuilding(ids);
-      }).then(() => {
-        this.getList();
-        this.$modal.msgSuccess("删除成功");
-      }).catch(() => {});
+      const ids = row.id || this.ids
+      this.$modal
+        .confirm('是否确认删除建筑基本信息编号为"' + ids + '"的数据项?')
+        .then(function() {
+          return delBuilding(ids)
+        })
+        .then(() => {
+          this.getList()
+          this.$modal.msgSuccess('删除成功')
+        })
+        .catch(() => {})
     },
     /** 导出按钮操作 */
     handleExport() {
-      this.download('ems/basecfg/area/building/export', {
-        ...this.queryParams
-      }, `building_${new Date().getTime()}.xlsx`)
+      this.download(
+        'ems/basecfg/area/building/export',
+        {
+          ...this.queryParams
+        },
+        `building_${new Date().getTime()}.xlsx`
+      )
     }
   }
-};
+}
 </script>

+ 20 - 22
ems-ui/src/views/basecfg/flowrel/index.vue

@@ -18,7 +18,7 @@
         </el-select>
       </el-form-item>
       <el-form-item label="流动介质" prop="emsCls">
-        <treeselect v-model="queryParams.emsCls" :options="emsClsOptions" :show-count="true" placeholder="请选择能源种类"  :style="{ width: '200px' }" />
+        <treeselect v-model="queryParams.emsCls" :options="emsClsOptions" :show-count="true" placeholder="请选择流动介质"  :style="{ width: '200px' }"/>
       </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
@@ -121,36 +121,38 @@
     />
 
     <!-- 添加或修改能源设施能流关系对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
-      <el-form ref="form" :model="mergeForm" :rules="rules" label-width="80px">
+    <el-dialog :title="title" :visible.sync="open" width="400px" append-to-body>
+      <el-form ref="mergeForm" :model="mergeForm" :rules="rules" label-width="80px">
         <el-form-item label="所在园区" prop="areaCode">
-          <el-select v-model="mergeForm.areaCode" @change="getAllFacs" >
+          <el-select v-model="mergeForm.areaCode" @change="getAllFacs" style="width:100%">
             <el-option v-for="item in areaOptions" :label="item.label" :value="item.id" :key="item.id" />
           </el-select>
         </el-form-item>
         <el-form-item label="输出设施" prop="exportFacsCode">
-          <el-select v-model="mergeForm.exportFacsCode" @change="setCodePrefix">
+          <el-select v-model="mergeForm.exportFacsCode" @change="setCodePrefix" style="width:100%">
             <el-option v-for="item in facsOptions" :label="item.facsName" :value="item.facsCode" :key="item.facsCode" />
           </el-select>
         </el-form-item>
         <el-form-item label="流入设施" prop="inputFacsCode">
-          <el-select v-model="mergeForm.inputFacsCode" @change="setCodeCompose">
+          <el-select v-model="mergeForm.inputFacsCode" @change="setCodeCompose" style="width:100%">
             <el-option v-for="item in facsOptions" :label="item.facsName" :value="item.facsCode" :key="item.facsCode" />
           </el-select>
         </el-form-item>
-        <el-form-item label="编码" prop="code" :readonly="codeReadOnly">
-          <el-input v-model="mergeForm.code" :style="{ width: '200px' }"  @click="changeCodeReadOnly"/>
+        <el-form-item label="编码" prop="code" >
+          <el-input v-model="mergeForm.code"  placeholder="请输入编码" />
         </el-form-item>
         <el-form-item label="流动介质" prop="emsCls">
-          <treeselect v-model="mergeForm.emsCls" :options="emsClsOptions" :show-count="true" placeholder="请选择能源种类" :style="{ width: '200px' }"/>
+          <treeselect v-model="mergeForm.emsCls" :options="emsClsOptions" :show-count="true" placeholder="请选择" />
         </el-form-item>
         <el-form-item label="供能状态" prop="state">
-          <el-select v-model="mergeForm.state">
+          <el-select v-model="mergeForm.state" style="width:100%">
             <el-option v-for="item in enableOptions" :label="item.name" :value="item.code" :key="item.code" />
           </el-select>
         </el-form-item>
-        <el-form-item label="供能状态" prop="state">
-          <el-input v-model="mergeForm.actionType" :style="{ width: '200px' }" />
+        <el-form-item label="能流动作" prop="actionType">
+          <el-select v-model="mergeForm.actionType" style="width:100%">
+            <el-option v-for="item in actionTypeData" :label="item.name" :value="item.code" :key="item.code" />
+          </el-select>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
@@ -167,7 +169,7 @@ import { areaTreeSelect } from "@/api/basecfg/area"
 import { listAllFacs } from "@/api/basecfg/emsfacs"
 import { getEmsClsTree } from "@/api/commonApi"
 import Treeselect from '@riophae/vue-treeselect'
-
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
 export default {
   name: "Rel",
   components: { Treeselect },
@@ -197,7 +199,6 @@ export default {
       facsOptions: undefined,
       // 能源分类树
       emsClsOptions: [],
-      codeReadOnly: true,
       // 查询参数
       queryParams: {
         pageNum: 1,
@@ -237,11 +238,11 @@ export default {
         ],
       },
       actionTypeData: [
-        { actionType:4501 },
-        { actionType:4502 },
-        { actionType:4503 },
-        { actionType:4504 },
-        { actionType:4505 },
+        { code:'4501',name:'购电' },
+        { code:'4502' ,name:'上网'},
+        { code:'4503' ,name:'充电'},
+        { code:'4504' ,name:'放电'},
+        { code:'4505' ,name:'自产自销'},
       ]
     };
   },
@@ -383,9 +384,6 @@ export default {
     setCodeCompose() {
       this.mergeForm.code = this.mergeForm.exportFacsCode + '_' +this.mergeForm.inputFacsCode;
     },
-    changeCodeReadOnly() {
-      this.codeReadOnly = false;
-    }
   }
 };
 </script>

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

@@ -36,7 +36,7 @@
         <el-dialog :title="title" :visible.sync="attrOpen" width="500px" append-to-body>
           <el-form ref="attrForm" :model="attrForm" :rules="attrRules" label-width="150px">
             <el-form-item label="园区" prop="areaCode">
-              <el-select v-model="attrForm.areaCode">
+              <el-select v-model="attrForm.areaCode" :disabled="title.includes('修改')">
                 <el-option v-for="item in areaOptions" :label="item.label" :value="item.id" :key="item.id" />
               </el-select>
             </el-form-item>
@@ -144,10 +144,10 @@
       <el-tab-pane label="光伏电价" name="third">
         <!-- 光伏电价配置 -->
         <el-row :gutter="10" class="mb8">
-          <el-col :span="1.5">
+          <!-- <el-col :span="1.5">
             <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handlePvPriceAdd" v-hasPermi="['basecfg:price:add']">新增
             </el-button>
-          </el-col>
+          </el-col> -->
           <right-toolbar :showSearch.sync="showSearch" :search="false" @queryTable="getPvPriceList"></right-toolbar>
         </el-row>
         <el-table v-loading="loading" :data="pvPriceList">
@@ -709,6 +709,9 @@ export default {
     submitAttrForm() {
       this.$refs['attrForm'].validate(valid => {
         if (valid) {
+          if(this.attrList.some(item=>item.areaCode===this.attrForm.areaCode)){
+            return this.$modal.msgError('当前园区已存在')
+          }
           if (this.attrForm.id != null) {
             updateAttr(this.attrForm).then(response => {
               this.$modal.msgSuccess('修改成功')

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

@@ -3,41 +3,21 @@
     <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"
-          />
+          <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"
-          />
+          <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="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-input v-model="queryParams.zoningName" placeholder="请输入分区名称" clearable @keyup.enter.native="handleQuery" />
           </el-form-item>
-          <el-form-item label="区标签" prop="tagCode">
-            <el-select v-model="queryParams.tagCodeList" placeholder="请选择下拉选择" multiple clearable :style="{width: '100%'}">
+          <el-form-item label="区块标签" prop="tagCode">
+            <el-select v-model="queryParams.tagCodeList" placeholder="请选择区块标签" multiple clearable :style="{width: '100%'}">
               <el-option v-for="item in emsTagOptions" :label="item.tagName" :value="item.tagCode" :key="item.tagCode" />
             </el-select>
           </el-form-item>
@@ -49,46 +29,20 @@
 
         <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-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-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-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-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>
@@ -96,66 +50,33 @@
         <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" width="200"/>
+          <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="tagNames" />
-          <el-table-column label="使用详情" align="center" prop="usageDetail">
+          <el-table-column label="使用状态" align="center" prop="usageDetail">
             <template slot-scope="scope">
-              <span
-                :style="{
-                    display: 'inline-block',
-                    textAlign: 'center',
-                    cursor: 'pointer',
-                    color:parseInt(scope.row.usageDetail) ===0 ? 'rgb(255,159,159)' : 'rgb(117,186,255)',
-                    backgroundColor: parseInt(scope.row.usageDetail) ===0 ? 'rgb(255,235,235)' : 'rgb(232,244,255)',
-                    fontSize: '13px',
-                    fontFamily: 'Arial, sans-serif',
-                    fontWeight: 'normal',
-                    width: '65px',
-                    height: '40px',
-                    lineHeight: '40px',
-                    padding: '0 10px',
-                    borderRadius: '4px',
-                    boxSizing: 'border-box',
-        }">
-
-        {{ parseInt(scope.row.usageDetail) === 0 ?  '停用': '使用中' }}
-      </span>
+              {{formatDict(scope.row.usageDetail,'usageDetailOptions')}}
             </template>
           </el-table-column>
           <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>
+              <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"
-        />
+        <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="100px">
             <el-form-item label="所属建筑" prop="bldgCode">
-              <treeselect v-model="form.bldgCode" :options="areaOptions" :show-count="true" placeholder="请选择所属建筑" />
+              <treeselect v-model="form.bldgCode" :options="areaOptions" :disable-branch-nodes="true" :show-count="true"
+                placeholder="请选择所属建筑" />
             </el-form-item>
             <el-form-item label="楼层" prop="floor">
               <el-input v-model="form.floor" placeholder="请输入楼层" />
@@ -166,17 +87,17 @@
             <el-form-item label="分区名称" prop="zoningName">
               <el-input v-model="form.zoningName" placeholder="请输入分区名称" />
             </el-form-item>
-            <el-form-item label="分区标签" prop="tagCodeList" >
-              <el-select v-model="form.tagCodeList" placeholder="请选择下拉选择" multiple clearable :style="{width: '100%'}">
+            <el-form-item label="分区标签" prop="tagCodeList">
+              <el-select v-model="form.tagCodeList" placeholder="请选择分区标签" multiple clearable style="width: '100%'">
                 <el-option v-for="item in emsTagOptions" :label="item.tagName" :value="item.tagCode" :key="item.tagCode" />
               </el-select>
             </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-select v-model="form.usageDetail" style="width:100%">
-                <el-option v-for="item in enableOptions" :label="item.name" :value="item.code" :key="item.code" />
+            <el-form-item label="使用状态" prop="usageDetail">
+              <el-select v-model="form.usageDetail" placeholder="请选择" style="width:100%">
+                <el-option v-for="item in usageDetailOptions" :key="item.code" :label="item.name" :value="item.code"></el-option>
               </el-select>
             </el-form-item>
           </el-form>
@@ -191,12 +112,11 @@
 </template>
 
 <script>
-import { listZoning, getZoning, delZoning, addZoning, updateZoning } from "@/api/basecfg/zoning";
-import { getEmsTag } from '@/api/commonApi';
-import { areaTreeSelect } from "@/api/basecfg/area"
-import Treeselect from "@riophae/vue-treeselect";
-import "@riophae/vue-treeselect/dist/vue-treeselect.css";
-import { listAllFacsType } from '@/api/basecfg/facstype'
+import { listZoning, getZoning, delZoning, addZoning, updateZoning } from '@/api/basecfg/zoning'
+import { getEmsTag } from '@/api/commonApi'
+import { areaTreeSelect } from '@/api/basecfg/area'
+import Treeselect from '@riophae/vue-treeselect'
+import '@riophae/vue-treeselect/dist/vue-treeselect.css'
 
 export default {
   name: "Zonin",
@@ -218,7 +138,7 @@ export default {
       // 建筑区域划分表格数据
       zoningList: [],
       // 弹出层标题
-      title: "",
+      title: '',
       // 是否显示弹出层
       open: false,
       // 区域名称
@@ -228,10 +148,9 @@ export default {
       // 标签选项
       emsTagOptions: undefined,
       defaultProps: {
-        children: "children",
-        label: "label"
+        children: 'children',
+        label: 'label'
       },
-
       // 查询参数
       queryParams: {
         pageNum: 1,
@@ -239,76 +158,79 @@ export default {
         areaCode: null,
         bldgCode: null,
         zoningName: null,
-        tagCodeList: null,
-        usageDetail:null
+        tagCodeList: null
       },
       // 表单参数
-      form: {
-        usageDetail: null
-      },
+      form: {},
       // 表单校验
       rules: {
-        zoningCode: [
-          { required: true, message: "分区编码不能为空", trigger: "blur" }
-        ],
-        zoningName: [
-          { required: true, message: "分区名称不能为空", trigger: "blur" }
-        ],
+        zoningCode: [{ required: true, message: '分区编码不能为空', trigger: 'blur' }],
+        zoningName: [{ required: true, message: '分区名称不能为空', trigger: 'blur' }],
+        usageDetail: [{ required: true, message: '使用状态不能为空', trigger: 'change' }]
       },
-      enableOptions: [
-        { code: 0, name:  '停用'},
-        { code: 1, name:  '使用中'}
+      usageDetailOptions: [
+        { code: '1', name: '启用' },
+        { code: '0', name: '停用' }
       ]
-    };
+    }
   },
   watch: {
     // 根据名称筛选区域树
     areaName(val) {
-      this.$refs.tree.filter(val);
+      this.$refs.tree.filter(val)
     }
   },
   created() {
-    this.getList();
-    this.getAreaTree('Building');
-    this.getEmsTag("Area");
+    this.getList()
+    this.getAreaTree('Building')
+    this.getEmsTag('Area')
   },
   methods: {
+    formatDict(val, options, key = 'code', text = 'name') {
+      let name = ''
+      this[options].forEach(item => {
+        if (val === item[key]) {
+          name = item[text]
+        }
+      })
+      return name
+    },
     /** 查询建筑区域划分列表 */
     getList() {
-      this.loading = true;
+      this.loading = true
       listZoning(this.queryParams).then(response => {
-        this.zoningList = response.rows;
-        this.total = response.total;
-        this.loading = false;
-      });
+        this.zoningList = response.rows
+        this.total = response.total
+        this.loading = false
+      })
     },
     /** 查询区域树结构 */
     getAreaTree(tier) {
       areaTreeSelect(tier).then(response => {
-        this.areaOptions = response.data;
-      });
+        this.areaOptions = response.data
+      })
     },
     // 筛选节点
     filterNode(value, data) {
-      if (!value) return true;
-      return data.label.indexOf(value) !== -1;
+      if (!value) return true
+      return data.label.indexOf(value) !== -1
     },
     // 节点单击事件
     handleNodeClick(data) {
-      if ('Area' === data.tier) {
-        this.queryParams.areaCode = data.id;
-        this.queryParams.bldgCode = null;
-      } else if ('Building' === data.tier) {
-        this.queryParams.areaCode = null;
-        this.queryParams.bldgCode = data.id;
+      if (data.tier === 'Area') {
+        this.queryParams.areaCode = data.id
+        this.queryParams.bldgCode = null
+      } else if (data.tier === 'Building') {
+        this.queryParams.areaCode = null
+        this.queryParams.bldgCode = data.id
       }
 
-      this.handleQuery();
+      this.handleQuery()
     },
     // 取消按钮
     cancel() {
-      this.open = false;
-      this.reset();
+      this.open = false
+      this.reset()
     },
     // 表单重置
     reset() {
@@ -322,83 +244,91 @@ export default {
         bldgLdArea: null,
         usageDetail: null,
         tagCodeList: null
-      };
-      this.resetForm("form");
+      }
+      this.resetForm('form')
     },
     /** 搜索按钮操作 */
     handleQuery() {
-      this.queryParams.pageNum = 1;
-      this.getList();
+      this.queryParams.pageNum = 1
+      this.getList()
     },
     /** 重置按钮操作 */
     resetQuery() {
-      this.queryParams.bldgCode = null;
-      this.resetForm("queryForm");
-      this.handleQuery();
+      this.queryParams.bldgCode = null
+      this.resetForm('queryForm')
+      this.handleQuery()
     },
     // 多选框选中数据
     handleSelectionChange(selection) {
       this.ids = selection.map(item => item.id)
-      this.single = selection.length!==1
+      this.single = selection.length !== 1
       this.multiple = !selection.length
     },
     /** 新增按钮操作 */
     handleAdd() {
-      this.reset();
-      this.open = true;
-      this.title = "添加建筑区域划分";
+      this.reset()
+      this.open = true
+      this.title = '添加建筑区域划分'
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
-      this.reset();
+      this.reset()
       const id = row.id || this.ids
       getZoning(id).then(response => {
-        this.form = response.data;
-        this.open = true;
-        this.title = "修改建筑区域划分";
-      });
+        this.form = response.data
+        this.open = true
+        this.title = '修改建筑区域划分'
+      })
     },
     /** 提交按钮 */
     submitForm() {
-      this.$refs["form"].validate(valid => {
+      this.$refs['form'].validate(valid => {
         if (valid) {
           if (this.form.id != null) {
             updateZoning(this.form).then(response => {
-              this.$modal.msgSuccess("修改成功");
-              this.open = false;
-              this.getList();
-            });
+              this.$modal.msgSuccess('修改成功')
+              this.open = false
+              this.getList()
+            })
           } else {
             addZoning(this.form).then(response => {
-              this.$modal.msgSuccess("新增成功");
-              this.open = false;
-              this.getList();
-            });
+              this.$modal.msgSuccess('新增成功')
+              this.open = false
+              this.getList()
+            })
           }
         }
-      });
+      })
     },
     /** 删除按钮操作 */
     handleDelete(row) {
-      const ids = row.id || this.ids;
-      this.$modal.confirm('是否确认删除建筑区域划分编号为"' + ids + '"的数据项?').then(function() {
-        return delZoning(ids);
-      }).then(() => {
-        this.getList();
-        this.$modal.msgSuccess("删除成功");
-      }).catch(() => {});
+      const ids = row.id || this.ids
+      this.$modal
+        .confirm('是否确认删除建筑区域划分编号为"' + ids + '"的数据项?')
+        .then(function() {
+          return delZoning(ids)
+        })
+        .then(() => {
+          this.getList()
+          this.$modal.msgSuccess('删除成功')
+        })
+        .catch(() => {})
     },
     /** 导出按钮操作 */
     handleExport() {
-      this.download('ems/basecfg/area/building/zoning/export', {
-        ...this.queryParams
-      }, `zoning_${new Date().getTime()}.xlsx`)
+      this.download(
+        'ems/basecfg/area/building/zoning/export',
+        {
+          ...this.queryParams
+        },
+        `zoning_${new Date().getTime()}.xlsx`
+      )
     },
     getEmsTag(tagModel) {
-      getEmsTag(tagModel).then(response =>{
-        this.emsTagOptions = response.data;
+      getEmsTag(tagModel).then(response => {
+        this.emsTagOptions = response.data
       })
-    },
+    }
   }
-};
+}
 </script>

+ 1 - 1
ems-ui/vue.config.js

@@ -35,7 +35,7 @@ module.exports = {
     proxy: {
       // detail: https://cli.vuejs.org/config/#devserver-proxy
       [process.env.VUE_APP_BASE_API]: {
-        target: `http://127.0.0.1:9100/`,
+        target: `http://172.192.13.80:9100/`,
         changeOrigin: true,
         pathRewrite: {
           ['^' + process.env.VUE_APP_BASE_API + '/ems']: process.env.EMS_REWRITE_URL,