luogang преди 10 месеца
родител
ревизия
6187a7b772
променени са 2 файла, в които са добавени 110 реда и са изтрити 134 реда
  1. 6 0
      ems-ui/src/api/basecfg/emsfacs.js
  2. 104 134
      ems-ui/src/views/basecfg/device/index.vue

+ 6 - 0
ems-ui/src/api/basecfg/emsfacs.js

@@ -84,3 +84,9 @@ export function delSubtable(type, id) {
     method: 'delete'
   });
 }
+export function getFacsCategorygetByCode(code) {
+  return request({
+    url: `/ems/basecfg//facsCategory/getByCode?code=${code}`,
+    method: 'get'
+  });
+}

+ 104 - 134
ems-ui/src/views/basecfg/device/index.vue

@@ -3,49 +3,41 @@
     <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" style="height: 100vh; overflow: hidden; position: relative;">
-          <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"
-            style="height: calc(100vh - 50px); overflow-y: auto;"
-          />
+          <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" style="height: calc(100vh - 50px); overflow-y: auto;" />
         </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-tabs v-model="queryParams.deviceCategory" @tab-click="deviceCategoryChange">
+          <el-tab-pane label="产能设备" name="E"></el-tab-pane>
+          <el-tab-pane label="储能设备" name="C"></el-tab-pane>
+          <el-tab-pane label="供能设备" name="W"></el-tab-pane>
+          <el-tab-pane label="用能设备" name="Z"></el-tab-pane>
+        </el-tabs>
+        <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch"
+          label-width="68px">
           <el-form-item label="归属设施" prop="refFacs">
-            <el-select v-model="queryParams.refFacs" >
-              <el-option v-for="item in facsOptions" :label="item.facsName" :value="item.facsCode" :key="item.facsCode" />
+            <el-select v-model="queryParams.refFacs">
+              <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="subsystemCode">
-            <el-select v-model="queryParams.subsystemCode" >
-              <el-option v-for="item in subsystemOptions" :label="item.systemName" :value="item.systemCode" :key="item.systemCode" />
+            <el-select v-model="queryParams.subsystemCode">
+              <el-option v-for="item in subsystemOptions" :label="item.systemName" :value="item.systemCode"
+                :key="item.systemCode" />
             </el-select>
           </el-form-item>
-          <el-form-item label="设备名称" prop="deviceName">
-            <el-input
-              v-model="queryParams.deviceName"
-              placeholder="请输入设备名称"
-              clearable
-              @keyup.enter.native="handleQuery"
-            />
+          <el-form-item label="设备分类" prop="deviceSubCategory">
+              <el-select v-model="queryParams.deviceSubCategory">
+              <el-option v-for="item in subCategoryOptions" placeholder="设备分类" :label="item.name" :value="item.code"
+                :key="item.code" />
+            </el-select>
           </el-form-item>
 
           <el-form-item>
@@ -56,106 +48,81 @@
 
         <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="['ems:device:add']"
-            >新增
+            <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
+              v-hasPermi="['ems:device: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="['ems:device:edit']"
-            >修改
+            <el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
+              v-hasPermi="['ems:device: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="['ems:device:remove']"
-            >删除
+            <el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
+              v-hasPermi="['ems:device:remove']">删除
             </el-button>
           </el-col>
           <el-col :span="1.5">
-            <el-button
-              type="warning"
-              plain
-              icon="el-icon-download"
-              size="mini"
-              @click="handleExport"
-              v-hasPermi="['ems:device:export']"
-            >导出
+            <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
+              v-hasPermi="['ems:device:export']">导出
             </el-button>
           </el-col>
           <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
         </el-row>
 
         <el-table v-loading="loading" :data="deviceList" @selection-change="handleSelectionChange">
-          <el-table-column type="selection" width="55" align="center"/>
-          <el-table-column label="设备名称" align="left" prop="deviceName"/>
-          <el-table-column label="设备代码" align="left" prop="deviceCode" width="180px"/>
-          <el-table-column label="归属区域" align="left" prop="areaPath" width="280px"/>
-          <el-table-column label="归属设施" align="center" prop="refFacsName"/>
-          <el-table-column label="设备类型" align="center" prop="deviceTypeName"/>
-          <el-table-column label="所属子系统" align="center" prop="subsystemName"/>
+          <el-table-column type="selection" width="55" align="center" />
+          <el-table-column label="设备名称" align="left" prop="deviceName" />
+          <el-table-column label="设备代码" align="left" prop="deviceCode" width="180px" />
+          <el-table-column label="归属区域" align="left" prop="areaPath" width="280px" />
+          <el-table-column label="归属设施" align="center" prop="refFacsName" />
+          <el-table-column label="设备分类" align="center" prop="deviceCategoryName" />
+          <el-table-column label="所属子系统" align="center" prop="subsystemName" />
           <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:device:edit']">
+              <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
+                v-hasPermi="['basecfg:device:edit']">
                 修改</el-button>
-              <el-button size="mini" type="text" icon="el-icon-delete" class="deleteBtn" @click="handleDelete(scope.row)" v-hasPermi="['basecfg:device:remove']">
+              <el-button size="mini" type="text" icon="el-icon-delete" class="deleteBtn"
+                @click="handleDelete(scope.row)" v-hasPermi="['basecfg:device: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="refFacs" >
-              <el-select v-model="form.refFacs" >
-                <el-option v-for="item in facsOptions" :label="item.facsName" :value="item.facsCode" :key="item.facsCode" />
+            <el-form-item label="归属设施" prop="refFacs">
+              <el-select v-model="form.refFacs">
+                <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="refArea">
-              <treeselect v-model="form.refArea" :options="areaOptions" :show-count="true" placeholder="请选择所属建筑" @select="handleAreaType"/>
+              <treeselect v-model="form.refArea" :options="areaOptions" :show-count="true" placeholder="请选择所属建筑"
+                @select="handleAreaType" />
             </el-form-item>
             <el-form-item label="设备代码" prop="deviceCode">
-              <el-input v-model="form.deviceCode" placeholder="请输入设备代码"/>
+              <el-input v-model="form.deviceCode" placeholder="请输入设备代码" />
             </el-form-item>
             <el-form-item label="设备名称" prop="deviceName">
-              <el-input v-model="form.deviceName" placeholder="请输入设备名称"/>
+              <el-input v-model="form.deviceName" placeholder="请输入设备名称" />
             </el-form-item>
             <el-form-item label="设备类型" prop="deviceType">
-              <el-select v-model="form.deviceType" >
-                <el-option v-for="item in devcTypeOptions" :label="item.typeName" :value="item.typeCode" :key="item.typeCode" />
+              <el-select v-model="form.deviceCategory">
+                <el-option v-for="item in subCategoryOptions" :label="item.name" :value="item.code"
+                  :key="item.code" />
               </el-select>
             </el-form-item>
             <el-form-item label="子系统" prop="subsystemCode">
-              <el-select v-model="form.subsystemCode" >
-                <el-option v-for="item in subsystemOptions" :label="item.systemName" :value="item.systemCode" :key="item.systemCode" />
+              <el-select v-model="form.subsystemCode">
+                <el-option v-for="item in subsystemOptions" :label="item.systemName" :value="item.systemCode"
+                  :key="item.systemCode" />
               </el-select>
             </el-form-item>
           </el-form>
@@ -170,18 +137,17 @@
 </template>
 
 <script>
-import { listDevRecursionByArea, getDevice, delDevice, addDevice, updateDevice } from '@/api/device/device'
-import { areaTreeSelect } from "@/api/basecfg/area"
-import { listAllFacs } from "@/api/basecfg/emsfacs"
-import { getDevcType } from '@/api/commonApi'
-import { listSubsystemAll } from '@/api/adapter/subsystem'
+import {listDevRecursionByArea, getDevice, delDevice, addDevice, updateDevice} from '@/api/device/device'
+import {areaTreeSelect} from "@/api/basecfg/area"
+import {listAllFacs,getFacsCategorygetByCode} from "@/api/basecfg/emsfacs"
+import {listSubsystemAll} from '@/api/adapter/subsystem'
 import Treeselect from "@riophae/vue-treeselect";
 import "@riophae/vue-treeselect/dist/vue-treeselect.css";
 
 export default {
   name: 'Device',
-  components: { Treeselect },
-  data() {
+  components: {Treeselect},
+  data () {
     return {
       // 遮罩层
       loading: true,
@@ -208,7 +174,7 @@ export default {
       // 设施选项
       facsOptions: undefined,
       // 设备分类
-      devcTypeOptions: undefined,
+      subCategoryOptions: undefined,
       subsystemOptions: undefined,
       defaultProps: {
         children: "children",
@@ -219,9 +185,8 @@ export default {
         pageNum: 1,
         pageSize: 10,
         deviceCode: null,
-        deviceName: null,
-        deviceType: null,
-        deviceStatus: null,
+        deviceSubCategory: null,
+        deviceCategory: 'E',
         areaType: null,
         refArea: null,
         refFacs: null
@@ -231,36 +196,36 @@ export default {
       // 表单校验
       rules: {
         refFacs: [
-          { required: true, message: '归属设施', trigger: 'blur' }
+          {required: true, message: '归属设施', trigger: 'blur'}
         ],
         refArea: [
-          { required: true, message: '归属区域', trigger: 'blur' }
+          {required: true, message: '归属区域', trigger: 'blur'}
         ],
         deviceCode: [
-          { required: true, message: '设备代码不能为空', trigger: 'blur' }
+          {required: true, message: '设备代码不能为空', trigger: 'blur'}
         ],
         deviceName: [
-          { required: true, message: '设备名称不能为空', trigger: 'blur' }
+          {required: true, message: '设备名称不能为空', trigger: 'blur'}
         ]
-      }
+      },
     }
   },
   watch: {
     // 根据名称筛选区域树
-    areaName(val) {
+    areaName (val) {
       this.$refs.tree.filter(val);
     }
   },
-  created() {
+  created () {
     this.getList();
     this.getAreaTree('Zoning');
     this.getFacsOptions("");
-    this.getDevcType();
     this.getSubsystem();
+    this.getSubCategorygetByCode();
   },
   methods: {
     /** 查询能源设备列表 */
-    getList() {
+    getList () {
       this.loading = true
       listDevRecursionByArea(this.queryParams).then(response => {
         this.deviceList = response.rows
@@ -269,29 +234,29 @@ export default {
       })
     },
     /** 查询区域树结构 */
-    getAreaTree(tier) {
+    getAreaTree (tier) {
       areaTreeSelect(tier).then(response => {
         this.areaOptions = response.data;
       });
     },
     // 筛选节点
-    filterNode(value, data) {
+    filterNode (value, data) {
       if (!value) return true;
       return data.label.indexOf(value) !== -1;
     },
     // 节点单击事件
-    handleNodeClick(data) {
+    handleNodeClick (data) {
       this.queryParams.refArea = data.id;
       this.queryParams.areaType = data.tier;
       this.handleQuery();
     },
     // 取消按钮
-    cancel() {
+    cancel () {
       this.open = false
       this.reset()
     },
     // 表单重置
-    reset() {
+    reset () {
       this.form = {
         id: null,
         deviceCode: null,
@@ -307,31 +272,31 @@ export default {
       this.resetForm('form')
     },
     /** 搜索按钮操作 */
-    handleQuery() {
+    handleQuery () {
       this.queryParams.pageNum = 1
       this.getList()
     },
     /** 重置按钮操作 */
-    resetQuery() {
+    resetQuery () {
       this.queryParams.refArea = null;
       this.queryParams.areaType = null;
       this.resetForm('queryForm')
       this.handleQuery()
     },
     // 多选框选中数据
-    handleSelectionChange(selection) {
+    handleSelectionChange (selection) {
       this.ids = selection.map(item => item.id)
       this.single = selection.length !== 1
       this.multiple = !selection.length
     },
     /** 新增按钮操作 */
-    handleAdd() {
+    handleAdd () {
       this.reset()
       this.open = true
       this.title = '添加能源设备'
     },
     /** 修改按钮操作 */
-    handleUpdate(row) {
+    handleUpdate (row) {
       this.reset()
       const id = row.id || this.ids
       getDevice(id).then(response => {
@@ -341,7 +306,7 @@ export default {
       })
     },
     /** 提交按钮 */
-    submitForm() {
+    submitForm () {
       this.$refs['form'].validate(valid => {
         if (valid) {
           if (this.form.id != null) {
@@ -361,9 +326,9 @@ export default {
       })
     },
     /** 删除按钮操作 */
-    handleDelete(row) {
+    handleDelete (row) {
       const ids = row.id || this.ids
-      this.$modal.confirm('是否确认删除能源设备编号为"' + ids + '"的数据项?').then(function() {
+      this.$modal.confirm('是否确认删除能源设备编号为"' + ids + '"的数据项?').then(function () {
         return delDevice(ids)
       }).then(() => {
         this.getList()
@@ -372,28 +337,33 @@ export default {
       })
     },
     /** 导出按钮操作 */
-    handleExport() {
+    handleExport () {
       this.download('ems/basecfg/device/export', {
         ...this.queryParams
       }, `device_${new Date().getTime()}.xlsx`)
     },
-    handleAreaType(data) {
+    handleAreaType (data) {
       this.form.areaType = data.tier;
     },
-    getFacsOptions(areaCode) {
-      listAllFacs(areaCode).then(response =>{
+    getFacsOptions (areaCode) {
+      listAllFacs(areaCode).then(response => {
         this.facsOptions = response.data;
       })
     },
-    getDevcType() {
-      getDevcType().then(response =>{
-        this.devcTypeOptions = response.data;
+    getSubCategorygetByCode () {
+      getFacsCategorygetByCode(this.queryParams.deviceCategory).then(response => {
+        this.subCategoryOptions = response.data.subtypeList||[];
       })
     },
-    getSubsystem() {
-      listSubsystemAll().then(response =>{
+    getSubsystem () {
+      listSubsystemAll().then(response => {
         this.subsystemOptions = response.data;
       })
+    },
+    deviceCategoryChange () {
+      this.queryParams.deviceSubCategory = ''
+      this.getSubCategorygetByCode()
+      this.handleQuery()
     }
   }
 }