historyDialog.vue 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. <template>
  2. <el-dialog title="本次对应记录" :visible.sync="dialogVisible" width="70%" @close="handleClose" id="historyAction" custom-class="act-history">
  3. <span>提示:可使用Contorl+F 搜索关键字</span>
  4. <div>
  5. <el-table :data="tableData" style="width: 100%;" :show-header="showheader" height="400px" :cell-style="cellStyle">
  6. <el-table-column>
  7. <el-table-column v-for="item in showLeftHeader" :label="item.label" align="right" :key="item.prop">
  8. <template slot-scope="scope">
  9. <div v-for="t in scope.row.leftList" :key="t.id">
  10. <el-tooltip :content="t[item.prop]&&t[item.prop].length?t[item.prop].toString():''" placement="top" :disabled="!(t[item.prop]&&t[item.prop].length)">
  11. <div>{{t[item.prop]&&t[item.prop].length?t[item.prop].toString():'--'}}</div>
  12. </el-tooltip>
  13. </div>
  14. </template>
  15. </el-table-column>
  16. </el-table-column>
  17. <el-table-column>
  18. <el-table-column v-for="item in showRightHeader" :label="item.label" :key="item.prop">
  19. <template slot-scope="scope">
  20. <div v-for="t in scope.row.rightList" :key="t.id">
  21. <div v-if="item.prop=='BuildLocalName'">
  22. <el-tooltip
  23. :content="t.BuildLocalName&&t.BuildLocalName!='null'?t.FloorLocalName&&t.FloorLocalName!='null'?t.BuildLocalName+'-'+t.FloorLocalName:t.BuildLocalName:''"
  24. placement="top" :disabled="!(t.BuildLocalName&&t.BuildLocalName!='null'?t.FloorLocalName&&t.FloorLocalName!='null'?t.BuildLocalName+'-'+t.FloorLocalName:t.BuildLocalName:'')">
  25. <div>
  26. {{t.BuildLocalName&&t.BuildLocalName!='null'?t.FloorLocalName&&t.FloorLocalName!='null'?t.BuildLocalName+'-'+t.FloorLocalName:t.BuildLocalName:'--'}}
  27. </div>
  28. </el-tooltip>
  29. </div>
  30. <div v-else-if="item.prop=='RoomLocalName'">
  31. <el-tooltip :content="t.RoomLocalName&&t.RoomLocalName!='null'?t.RoomLocalName:''" placement="top"
  32. :disabled="!(t.RoomLocalName&&t.RoomLocalName!='null')">
  33. <div>{{t.RoomLocalName&&t.RoomLocalName!='null'?t.RoomLocalName:'--'}}</div>
  34. </el-tooltip>
  35. </div>
  36. <div v-else>
  37. <el-tooltip :content="t[item.prop]?t[item.prop].toString():''" placement="top" :disabled="!t[item.prop]">
  38. <div>{{t[item.prop]?t[item.prop].toString():'--'}}</div>
  39. </el-tooltip>
  40. </div>
  41. </div>
  42. </template>
  43. </el-table-column>
  44. </el-table-column>
  45. <el-table-column label="操作" width="100px">
  46. <template slot-scope="scope">
  47. <el-button size="mini" @click="handleDelete(scope.$index, scope.row)" type="danger" plain>清除对应</el-button>
  48. </template>
  49. </el-table-column>
  50. </el-table>
  51. </div>
  52. </el-dialog>
  53. </template>
  54. <script>
  55. import { dynamicDeleteRelation } from "@/api/scan/request";
  56. export default {
  57. data() {
  58. return {
  59. dialogVisible: false, //弹窗显示与隐藏
  60. showheader: false,
  61. tableData: [], //数据list
  62. showLeftHeader: [
  63. { label: '数据源', prop: 'Datasource' },
  64. { label: '位置标签', prop: 'LocationFlag' },
  65. { label: '设备标识', prop: 'EquipmentMark' }
  66. ],
  67. tableHeader: {
  68. equip: [
  69. { label: '对象实例名称', prop: 'ObjectLocalName' },
  70. { label: '对象本地编码', prop: 'ObjectLocalCode' },
  71. { label: '所在建筑楼层', prop: 'BuildLocalName' },
  72. { label: '所在业务空间', prop: 'RoomLocalName' },
  73. ],
  74. parts: [
  75. { label: '对象实例名称', prop: 'ObjectLocalName' },
  76. { label: '对象本地编码', prop: 'ObjectLocalCode' },
  77. { label: '对象所属设备', prop: 'CascadeEquipLocalName' },
  78. { label: '所在建筑楼层', prop: 'BuildLocalName' },
  79. { label: '所在业务空间', prop: 'RoomLocalName' },
  80. ],
  81. system: [
  82. { label: '对象实例名称', prop: 'ObjectLocalName' },
  83. { label: '对象本地编码', prop: 'ObjectLocalCode' }
  84. ],
  85. space:[
  86. { label: '对象实例名称', prop: "ObjectLocalName" },
  87. { label: '对象本地编码', prop: "ObjectLocalCode" },
  88. { label: '所在建筑楼层', prop: "BuildLocalName" },
  89. ]
  90. }, //所有类型列表头部
  91. showRightHeader: [], //实际显示的列表头部
  92. };
  93. },
  94. props: {
  95. typeName: {
  96. default: 'equip'
  97. }
  98. },
  99. methods: {
  100. showDialog(data) {
  101. this.showRightHeader = this.tableHeader[this.typeName]
  102. this.tableData = data;
  103. this.dialogVisible = true;
  104. },
  105. handleClose(done) { },
  106. //清除关系
  107. handleDelete(i, t) {
  108. let param = [];
  109. let object = {
  110. Objs: t.rightList,
  111. Points: t.leftList
  112. };
  113. param.push(object);
  114. dynamicDeleteRelation(param, res => {
  115. if (res.Result == "success") {
  116. this.$message.success("清除关联成功");
  117. this.tableData.splice(i, 1);
  118. this.$emit("delSuc");
  119. }
  120. });
  121. },
  122. //渲染中间两列颜色
  123. cellStyle(data) {
  124. if (data.columnIndex == 2) {
  125. return 'background-color:#f5f7fa'
  126. } else if (data.columnIndex == 3) {
  127. return 'background-color:#f5f7fa;border-left:2px solid #ccc;'
  128. }
  129. }
  130. },
  131. mounted() { },
  132. created() { }
  133. };
  134. </script>
  135. <style lang="scss" scoped>
  136. #historyAction {
  137. /deep/ .act-history.el-dialog {
  138. max-height: 60%;
  139. overflow-y: auto;
  140. overflow-x: hidden;
  141. td.bgf5 {
  142. background-color: #f5f7fa;
  143. }
  144. td {
  145. border-bottom: 1px solid #ccc;
  146. border-top: 1px solid #ccc;
  147. div {
  148. line-height: 34px;
  149. white-space: nowrap;
  150. text-overflow: ellipsis;
  151. overflow: hidden;
  152. }
  153. }
  154. .border-l {
  155. border-left: 2px solid #ccc;
  156. }
  157. }
  158. }
  159. </style>