Jelajahi Sumber

系统台账详情页

LXXXY 5 tahun lalu
induk
melakukan
d91f7e7197

+ 4 - 4
src/api/scan/request.js

@@ -1379,9 +1379,9 @@ export function linkSySh(param, success) {
     let url = `${baseUrl}/datacenter/sy-in-sh/link-sy-sh`;
     http.postJson(url, param, success)
 }
-//系统所在业务空间关系,系统一对多,不覆盖
+//创建系统所在业务空间关系
 export function linkSysSp(param, success) {
-    let url = `${baseUrl}/datacenter/sy-in-sp-base/link-sy-sps`;
+    let url = `${baseUrl}/datacenter/sy-in-sp-base/link-list`;
     http.postJson(url, param, success)
 }
 //系统所在竖井,系统一对多,此方法会覆盖以前的记录
@@ -1401,8 +1401,8 @@ export function eqInSysUnlink(param, success) {
 }
 //根据对象删除系统所在业务空间关系
 export function spaceInSysUnlink(param, success) {
-    let url = `${baseUrl}/datacenter/sy-in-sp-base/unlink-list`;
-    http.postJson(url, param, success)
+    let url = `${baseUrl}/datacenter/sy-in-sp-base/unlink-list?type=${param.type}`;
+    http.postJson(url, param.data, success)
 }
 //关系-----设备所在业务空间--删除关系
 export function eqInSpaceDelete(param, success) {

+ 6 - 2
src/components/ledger/system/dialog/addEquipDialog.vue

@@ -1,6 +1,6 @@
 <template>
   <el-dialog :title="title" :visible.sync="dialogVisible" width="900px" id="addEqDialog">
-    <el-row class="filters" style="margin-bottom:10px;">
+    <el-row class="filters">
       <el-col :span="8">
         <el-input placeholder="输入设备名称或设备本地编码进行查询" v-model="keycode" clearable @keyup.enter.native="getTableData">
           <i slot="suffix" class="el-input__icon el-icon-search" @click="getTableData"></i>
@@ -10,6 +10,7 @@
         <floor-cascader @change="changeFloor" style="margin-left:5px;"></floor-cascader>
       </el-col>
     </el-row>
+
     <div class="table-box">
       <el-table :data="tableData" style="width: 100%" height="350" v-loading="loading" :header-cell-style="headerStyle" ref="multipleTable"
         @selection-change="handleSelectionChange">
@@ -44,10 +45,12 @@
 <script>
 import { sysLinkEquip, unSysEq} from "@/api/scan/request";
 import floorCascader from "@/components/ledger/lib/floorCascader";
+import myCascader from "@/components/ledger/system/lib/equipType";
 import { mapGetters } from "vuex";
 export default {
   components: {
-    floorCascader
+    floorCascader,
+    myCascader
   },
   computed: {
     ...mapGetters("layout", ["projectId"])
@@ -99,6 +102,7 @@ export default {
       let params = {
         data: {
           Filters: `not EquipID isNull`,
+          Cascade: [{ Name: 'equipCategory' }],
           Orders: "createTime desc, EquipID desc",
           PageNumber: this.page.pageNumber,
           PageSize: this.page.pageSize,

+ 98 - 69
src/components/ledger/system/dialog/addSpaceDialog.vue

@@ -1,8 +1,20 @@
 <template>
-  <el-dialog :title="title" :visible.sync="dialogVisible" :before-close="handleClose" width="900px" id="addEqDialog">
+  <el-dialog
+    :title="title"
+    :visible.sync="dialogVisible"
+    :before-close="handleClose"
+    width="900px"
+    id="addEqDialog"
+  >
     <el-row class="filters" :gutter="20">
       <el-col :span="7" style="width:268px;padding:0px;">
-        <el-input style="" placeholder="输入业务空间名称、本地编码进行查询" v-model="keycode" clearable @keyup.enter.native="getTableData">
+        <el-input
+          style
+          placeholder="输入业务空间名称、本地编码进行查询"
+          v-model="keycode"
+          clearable
+          @keyup.enter.native="getTableData"
+        >
           <i slot="suffix" class="el-input__icon el-icon-search" @click="getTableData"></i>
         </el-input>
       </el-col>
@@ -13,33 +25,37 @@
         <space-select ref="spacesel" @change="changeSpace"></space-select>
       </el-col>
     </el-row>
-    <el-row class="filters" :gutter="20">
-
-    </el-row>
+    <el-row class="filters" :gutter="20"></el-row>
     <div class="table-box">
-      <el-table :data="tableData" style="width: 100%" height="350" v-loading="loading" :header-cell-style="headerStyle" ref="multipleTable"
-        @selection-change="handleSelectionChange">
+      <el-table
+        :data="tableData"
+        style="width: 100%"
+        height="350"
+        v-loading="loading"
+        :header-cell-style="headerStyle"
+        ref="multipleTable"
+        @selection-change="handleSelectionChange"
+      >
         <el-table-column type="selection" width="55"></el-table-column>
         <el-table-column :label="`${inSpaceType}本地名称`" show-overflow-tooltip min-width="100">
           <template slot-scope="scope">
-            <div>
-              {{scope.row.RoomLocalName||scope.row.RoomName||''}}
-            </div>
+            <div>{{scope.row.RoomLocalName||scope.row.RoomName||''}}</div>
           </template>
         </el-table-column>
-        <el-table-column prop="RoomLocalID" :label="`${inSpaceType}本地编码`" show-overflow-tooltip min-width="100"></el-table-column>
-        <el-table-column prop="" :label="`所属建筑楼层`" show-overflow-tooltip min-width="100">
-           <template slot-scope="scope">
-            <div>
-              {{(floorType[scope.row.BuildingId] || '') + (floorType[scope.row.FloorID] || '') || ''}}
-            </div>
+        <el-table-column
+          prop="RoomLocalID"
+          :label="`${inSpaceType}本地编码`"
+          show-overflow-tooltip
+          min-width="100"
+        ></el-table-column>
+        <el-table-column prop :label="`所属建筑楼层`" show-overflow-tooltip min-width="100">
+          <template slot-scope="scope">
+            <div>{{(floorType[scope.row.BuildingId] || '') + (floorType[scope.row.FloorID] || '') || ''}}</div>
           </template>
         </el-table-column>
         <el-table-column prop="ObjectType" :label="`空间类型`" show-overflow-tooltip min-width="100">
           <template slot-scope="scope">
-            <div>
-              {{spaceType[scope.row.ObjectType] || ''}}
-            </div>
+            <div>{{spaceType[scope.row.ObjectType] || ''}}</div>
           </template>
         </el-table-column>
         <el-table-column prop="action" label="操作" min-width="100">
@@ -49,9 +65,17 @@
         </el-table-column>
       </el-table>
       <!-- 分页 -->
-      <el-pagination class="fr" v-show="tableData && tableData.length" @size-change="handleSizeChange" @current-change="handleCurrentChange"
-        :current-page="page.pageNumber" :page-sizes="page.pageSizes" :page-size="page.pageSize" layout="total, sizes, prev, pager, next, jumper"
-        :total="page.total"></el-pagination>
+      <el-pagination
+        class="fr"
+        v-show="tableData && tableData.length"
+        @size-change="handleSizeChange"
+        @current-change="handleCurrentChange"
+        :current-page="page.pageNumber"
+        :page-sizes="page.pageSizes"
+        :page-size="page.pageSize"
+        layout="total, sizes, prev, pager, next, jumper"
+        :total="page.total"
+      ></el-pagination>
     </div>
     <span slot="footer" class="dialog-footer">
       <el-button size="small" @click="handleClose">取 消</el-button>
@@ -61,10 +85,14 @@
 </template>
 
 <script>
-import { unSysZoneSpace, linkSysSp, queryDictionaryHead } from "@/api/scan/request";
+import {
+  unSysZoneSpace,
+  linkSysSp,
+  queryDictionaryHead
+} from "@/api/scan/request";
 import floorCascader from "@/components/ledger/lib/floorCascader";
-import dictionaryCas from '@/components/config_point/dictionaryCascader'
-import spaceSelect from '@/components/ledger/lib/spaceSelect'
+import dictionaryCas from "@/components/config_point/dictionaryCascader";
+import spaceSelect from "@/components/ledger/lib/spaceSelect";
 import { mapGetters } from "vuex";
 export default {
   components: {
@@ -78,13 +106,13 @@ export default {
   data() {
     return {
       title: "添加系统所在业务空间",
-      keycode: '', //输入查询条件
-      inSpaceType: '业务空间',
-      Buildfloor: ['all'], // 选中的建筑楼层
-      Spacecategory: null,// 选中的业务空间类型
+      keycode: "", //输入查询条件
+      inSpaceType: "业务空间",
+      Buildfloor: ["all"], // 选中的建筑楼层
+      Spacecategory: null, // 选中的业务空间类型
       tableData: [],
-      floorData: {},//楼层
-      spaceData: {},//业务空间分区
+      floorData: {}, //楼层
+      spaceData: {}, //业务空间分区
       loading: false,
       selections: [], // 选中项
       page: {
@@ -94,9 +122,9 @@ export default {
         total: 0
       },
       headerStyle: {
-        backgroundColor: '#e1e4e5',
-        color: '#2b2b2b',
-        lineHeight: '30px'
+        backgroundColor: "#e1e4e5",
+        color: "#2b2b2b",
+        lineHeight: "30px"
       } // 列表样式
     };
   },
@@ -107,24 +135,21 @@ export default {
     dialogVisible: Boolean,
     floorType: Object
   },
-  mounted() {
-
-  },
+  mounted() {},
   methods: {
     // 显示弹窗
     showDialog() {
-      this.dialogVisible = true
-
+      this.dialogVisible = true;
     },
     //修改建筑楼层
     changeFloor(value) {
-      this.Buildfloor = value
-      this.getTableData()
+      this.Buildfloor = value;
+      this.getTableData();
     },
     //修改空间类型
     changeSpace(value) {
-      this.Spacecategory = value
-      this.getTableData()
+      this.Spacecategory = value;
+      this.getTableData();
     },
     getTableData() {
       let params = {
@@ -132,35 +157,35 @@ export default {
           Filters: "not RoomID isNull",
           Orders: "RoomLocalName desc",
           PageNumber: this.page.pageNumber,
-          PageSize: this.page.pageSize,
+          PageSize: this.page.pageSize
         },
         shaftId: this.params.ShaftID,
         sysId: this.$route.query.SysID
-      }
+      };
       if (this.Buildfloor[0] == "noKnow") {
-        params.data.Filters += `;buildingId isNull`
+        params.data.Filters += `;buildingId isNull`;
       } else if (this.Buildfloor[0] && this.Buildfloor[0] != "all") {
-        params.data.Filters += `;buildingId='${this.Buildfloor[0]}'`
+        params.data.Filters += `;buildingId='${this.Buildfloor[0]}'`;
       }
       if (this.Buildfloor[1] == "noKnow") {
-        params.data.Filters += `;floorId isNull`
+        params.data.Filters += `;floorId isNull`;
       } else if (this.Buildfloor[1] && this.Buildfloor[1] != "all") {
-        params.data.Filters += `;floorId='${this.Buildfloor[1]}'`
+        params.data.Filters += `;floorId='${this.Buildfloor[1]}'`;
       }
       if (this.Spacecategory) {
-        params.data.Filters += `;ObjectType='${this.Spacecategory}'`
+        params.data.Filters += `;ObjectType='${this.Spacecategory}'`;
       }
-      if (this.keycode != '') {
-        params.data.Filters += `;RoomName contain '${this.keycode}' or RoomLocalName contain '${this.keycode}'`
+      if (this.keycode != "") {
+        params.data.Filters += `;RoomName contain '${this.keycode}' or RoomLocalName contain '${this.keycode}'`;
       }
 
       unSysZoneSpace(params, res => {
-        this.tableData = res.Content
-        this.page.total = res.Total
-      })
+        this.tableData = res.Content;
+        this.page.total = res.Total;
+      });
     },
     handleClose() {
-      this.$emit('update:dialogVisible', false)
+      this.$emit("update:dialogVisible", false);
     },
     //选中项修改
     handleSelectionChange(val) {
@@ -169,18 +194,22 @@ export default {
     savaRelation() {
       if (this.selections.length) {
         let params = {
-          SysId: this.$route.query.SysID,
-          SpaceIdList: this.selections.map(item => {
-            return item.RoomID
+          Content: this.selections.map(item => {
+            return {
+              SpaceID: item.RoomID,
+              SysID: this.$route.query.SysID,
+              ObjectType: item.ObjectType
+            };
           })
-        }
+        };
         linkSysSp(params, res => {
-          this.dialogVisible = false
-          this.$message.success('关联成功!')
-          this.$emit('refresh')
-        })
+          this.dialogVisible = false;
+          this.$message.success("关联成功!");
+          this.$emit("update:dialogVisible", false);
+          this.$emit("refresh");
+        });
       } else {
-        this.$message('请选择要关联的设备')
+        this.$message("请选择要关联的设备");
       }
     },
     //改变pagesize
@@ -195,16 +224,16 @@ export default {
     },
     // 查看详情
     toDetail() {
-      this.$message('开发中')
+      this.$message("开发中");
     }
   },
   watch: {
     dialogVisible: {
       handler() {
         if (this.dialogVisible) {
-          this.page.pageNumber = 1
-          this.tableData = []
-          this.getTableData()
+          this.page.pageNumber = 1;
+          this.tableData = [];
+          this.getTableData();
         }
       },
       immediate: true

+ 69 - 36
src/components/ledger/system/table/spaceTable.vue

@@ -2,31 +2,49 @@
   <div id="eqInSp">
     <el-row>
       <el-button type="primary" @click="add">添加{{inSpaceType}}</el-button>
-      <el-tooltip class="item" effect="dark" content="可前往“全部关系总览”中,按系统内包含的设备与空间关系计算" placement="right">
+      <el-tooltip
+        class="item"
+        effect="dark"
+        content="可前往“全部关系总览”中,按系统内包含的设备与空间关系计算"
+        placement="right"
+      >
         <el-button>按系统内设备与业务空间关系计算</el-button>
       </el-tooltip>
     </el-row>
     <div class="table-box">
-      <el-table :data="tableData" style="width: 100%" height="100%" v-loading="loading" :header-cell-style="headerStyle">
+      <el-table
+        :data="tableData"
+        style="width: 100%"
+        height="100%"
+        v-loading="loading"
+        :header-cell-style="headerStyle"
+      >
         <el-table-column :label="`${inSpaceType}名称`" show-overflow-tooltip min-width="100">
           <template slot-scope="scope">
-            <div>
-              {{scope.row.SysLocalName||scope.row.SysName||''}}
-            </div>
+            <div>{{ scope.row.RoomLocalName || scope.row.RoomName||''}}</div>
           </template>
         </el-table-column>
-        <el-table-column prop="SysLocalID" :label="`${inSpaceType}本地编码`" show-overflow-tooltip min-width="100"></el-table-column>
+        <el-table-column
+          prop="RoomLocalID"
+          :label="`${inSpaceType}本地编码`"
+          show-overflow-tooltip
+          min-width="100"
+        ></el-table-column>
         <el-table-column :label="`${inSpaceType}类型`" show-overflow-tooltip min-width="100">
           <template slot-scope="scope">
-            <div>
-              {{scope.row.CategoryNames.CategoryName}}
-            </div>
+            <div>{{ spaceType[scope.row.ObjectType]}}</div>
           </template>
         </el-table-column>
         <el-table-column prop="action" label="操作" min-width="100">
           <template slot-scope="scope">
             <el-tooltip class="item" effect="dark" content="删除关系" placement="left">
-              <el-button size="mini" @click="handleDelete(scope.$index, scope.row)" type="danger" plain icon="el-icon-delete"></el-button>
+              <el-button
+                size="mini"
+                @click="handleDelete(scope.$index, scope.row)"
+                type="danger"
+                plain
+                icon="el-icon-delete"
+              ></el-button>
             </el-tooltip>
           </template>
         </el-table-column>
@@ -39,14 +57,22 @@
       </el-table>
     </div>
     <!-- 添加空间弹窗 -->
-    <addSpaceDialog :dialogVisible.sync="dialogVisible" ref="addSpaceDialog" @refresh="getTableData" :type="type" :params="params" :spaceType="spaceType" :floorType="floorType"></addSpaceDialog>
+    <addSpaceDialog
+      :dialogVisible.sync="dialogVisible"
+      ref="addSpaceDialog"
+      @refresh="getTableData"
+      :type="type"
+      :params="params"
+      :spaceType="spaceType"
+      :floorType="floorType"
+    ></addSpaceDialog>
   </div>
 </template>
 
 <script>
 import { queryLinkSys, spaceInSysUnlink } from "@/api/scan/request";
 import { mapGetters } from "vuex";
-import addSpaceDialog from "@/components/ledger/system/dialog/addSpaceDialog"
+import addSpaceDialog from "@/components/ledger/system/dialog/addSpaceDialog";
 export default {
   components: {
     addSpaceDialog
@@ -56,12 +82,12 @@ export default {
   },
   data() {
     return {
-      inSpaceType: '业务空间',
+      inSpaceType: "业务空间",
       dialogVisible: false,
       headerStyle: {
-        backgroundColor: '#e1e4e5',
-        color: '#2b2b2b',
-        lineHeight: '30px'
+        backgroundColor: "#e1e4e5",
+        color: "#2b2b2b",
+        lineHeight: "30px"
       }, // 列表样式
       loading: false, // loading
       tableData: [] //列表数据
@@ -74,7 +100,7 @@ export default {
     floorType: {}
   },
   created() {
-    this.getTableData()
+    this.getTableData();
   },
   methods: {
     // 获取列表数据
@@ -83,36 +109,43 @@ export default {
         Filters: `SysID='${this.params.SysID}'`,
         Cascade: [
           {
-            Name: 'zoneSpaceBaseTableList'
+            Name: "zoneSpaceBaseTableList"
           }
         ]
-      }
+      };
       queryLinkSys(params, res => {
-        this.tableData = res.Content[0].SystemList || []
-      })
+        this.tableData = res.Content[0].ZoneSpaceBaseTable || [];
+      });
     },
     // 删除关系
     handleDelete(index, row) {
       this.$confirm("确认删除该关系?", "提示", {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning'
-      }).then(() => {
-        let params = {
-          SysId: this.params.SysID,
-          SpaceId: row.RoomID
-        }
-        this.deleteSyInSh(params);
-      }).catch(() => {
-        this.$message("取消删除")
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
       })
+        .then(() => {
+          let params = {
+            data: [
+              {
+                SysId: this.params.SysID,
+                SpaceId: row.RoomID
+              }
+            ],
+            type:row.ObjectType
+          };
+          this.deleteSyInSh(params);
+        })
+        .catch(() => {
+          this.$message("取消删除");
+        });
     },
     // 删除系统所在竖井关系
     deleteSyInSh(params) {
       spaceInSysUnlink(params, res => {
-        this.$message.success('删除成功')
-        this.getTableData()
-      })
+        this.$message.success("删除成功");
+        this.getTableData();
+      });
     },
     // 改变pagesize
     handleSizeChange(pageSize) {
@@ -126,7 +159,7 @@ export default {
     },
     // 添加设备
     add() {
-      this.dialogVisible = true
+      this.dialogVisible = true;
     }
   },
   watch: {