deviceDetails.vue 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284
  1. <template>
  2. <el-table
  3. :data="
  4. deviceNumData.filter(
  5. (data) =>
  6. !filter_Text ||
  7. data.monitorDeviceName
  8. .toLowerCase()
  9. .includes(filter_Text.toLowerCase()) ||
  10. data.monitorDeviceCode
  11. .toLowerCase()
  12. .includes(filter_Text.toLowerCase())
  13. )
  14. "
  15. border
  16. stripe
  17. :header-cell-style="headClass"
  18. :height="Height"
  19. >
  20. <el-table-column prop="status" align="center" label="状态" width="50">
  21. <template #default="scope">
  22. <el-avatar
  23. class="status"
  24. :style="
  25. scope.row.status == 1
  26. ? 'background-color:red'
  27. : 'background-color:#04F21C'
  28. "
  29. ></el-avatar>
  30. </template>
  31. </el-table-column>
  32. <el-table-column
  33. prop="monitorDeviceName"
  34. label="监控设备名称"
  35. align="center"
  36. width=""
  37. ></el-table-column>
  38. <el-table-column
  39. prop="monitorDeviceCode"
  40. label="监控设备编号"
  41. align="center"
  42. width=""
  43. ></el-table-column>
  44. <el-table-column
  45. prop="loopMeterAddress"
  46. label="回路表计地址"
  47. align="center"
  48. width=""
  49. ></el-table-column>
  50. <el-table-column
  51. prop="ratedVoltage"
  52. label="额定电压"
  53. align="center"
  54. width=""
  55. ></el-table-column>
  56. <el-table-column
  57. prop="ratedCurrent"
  58. label="额定电流"
  59. align="center"
  60. width=""
  61. ></el-table-column>
  62. <el-table-column
  63. prop="currentLoadRate"
  64. label="电流负载率门限"
  65. align="center"
  66. width=""
  67. ></el-table-column>
  68. <el-table-column
  69. prop="qualityAnalysis"
  70. label="电能质量分析"
  71. align="center"
  72. width=""
  73. ></el-table-column>
  74. <el-table-column label="操作" align="center" width="150">
  75. <template #default="scope">
  76. <el-button
  77. type="text"
  78. size="small"
  79. style="color: #409eff"
  80. @click.prevent="editRow(scope.row)"
  81. >
  82. 编辑
  83. </el-button>
  84. <el-popconfirm
  85. confirm-button-text="是"
  86. cancel-button-text="否"
  87. icon="el-icon-info"
  88. icon-color="red"
  89. title="确定删除?"
  90. @confirm="handleDelete(scope.row)"
  91. @cancel="cancelEvent"
  92. >
  93. <template #reference>
  94. <el-button type="text" size="small" style="color: red">
  95. 删除
  96. </el-button>
  97. </template>
  98. </el-popconfirm>
  99. </template>
  100. </el-table-column>
  101. <el-table-column label="变量" align="center" width="100">
  102. <template #default="scope">
  103. <el-button
  104. type="text"
  105. size="small"
  106. style="color: #409eff"
  107. @click.prevent="variableList(scope.row)"
  108. >
  109. 变量列表
  110. </el-button>
  111. </template>
  112. </el-table-column>
  113. </el-table>
  114. <div class="listPagination1">
  115. <el-pagination
  116. v-model:currentPage="currentPage"
  117. :page-sizes="[15, 20, 25, 30]"
  118. :page-size="pageSize"
  119. layout="total, sizes, prev, pager, next, jumper"
  120. :total="total"
  121. @size-change="handleSizeChange"
  122. @current-change="handleCurrentChange"
  123. background
  124. ></el-pagination>
  125. </div>
  126. <list-Dialog
  127. :list_Dialog="listDialogBool"
  128. @closeNo="closeNo"
  129. :DialogArray="DialogArray"
  130. ></list-Dialog>
  131. </template>
  132. <script>
  133. import { useStore } from 'vuex'
  134. import { defineComponent, onMounted, ref, watchEffect } from 'vue'
  135. import * as api from '@/api/deviceManage/powerEquip/deviceAttribute'
  136. import { ElMessage } from 'element-plus'
  137. import listDialog from './powerDialog/listDialog.vue'
  138. export default defineComponent({
  139. name: 'powerEquip',
  140. components: {
  141. listDialog,
  142. },
  143. emits: ['updateRow', 'closeNo'],
  144. props: {
  145. filter_Text: String,
  146. Height: String,
  147. refresh: Boolean,
  148. },
  149. setup(props, { emit }) {
  150. const store = useStore()
  151. const deviceNumData = ref([]) //列表查询值存储
  152. const pageSize = ref(15) //分页
  153. const currentPage = ref(1) //分页
  154. const total = ref(0) //分页
  155. const listDialogBool = ref(false)
  156. const DialogArray = ref([])
  157. //变量列表
  158. const variableList = (row) => {
  159. DialogArray.value = row
  160. listDialogBool.value = true
  161. }
  162. //克隆弹窗关闭
  163. const closeNo = (value) => {
  164. listDialogBool.value = value
  165. }
  166. //查询
  167. function listSelect() {
  168. api
  169. .deviceNewsList({
  170. siteId: store.state.siteId,
  171. size: pageSize.value,
  172. current: currentPage.value,
  173. })
  174. .then((requset) => {
  175. if (requset.status === 'SUCCESS') {
  176. total.value = requset.data.total
  177. deviceNumData.value = requset.data.records
  178. } else {
  179. ElMessage.error(requset.msg)
  180. }
  181. })
  182. }
  183. //删除 是否删除 ---- 是
  184. const handleDelete = (row) => {
  185. api.deviceNewsDel({ id: row.id }).then((requset) => {
  186. if (requset.status === 'SUCCESS') {
  187. ElMessage.success({
  188. message: '删除成功',
  189. type: 'success',
  190. })
  191. listSelect()
  192. } else {
  193. ElMessage.error(requset.msg)
  194. }
  195. })
  196. }
  197. //是否删除 ---- 否
  198. const cancelEvent = () => {
  199. console.log('cancel!')
  200. }
  201. //编辑
  202. const editRow = (row) => {
  203. emit('updateRow', row)
  204. listSelect()
  205. }
  206. watchEffect((fn, options) => {
  207. fn, options
  208. if (props.refresh == true) {
  209. listSelect()
  210. }
  211. })
  212. onMounted(() => {
  213. listSelect()
  214. })
  215. const handleSizeChange = (val) => {
  216. pageSize.value = val
  217. listSelect()
  218. }
  219. const handleCurrentChange = (val) => {
  220. currentPage.value = val
  221. listSelect()
  222. }
  223. // 表头样式设置
  224. const headClass = () => {
  225. return 'background:#FAFAFA !important;color: black;'
  226. }
  227. return {
  228. headClass,
  229. closeNo,
  230. variableList, //变量列表按钮事件
  231. editRow, //编辑按钮事件
  232. handleDelete, //删除按钮事件
  233. deviceNumData, //列表查询值存储
  234. cancelEvent,
  235. DialogArray,
  236. listDialogBool,
  237. currentPage,
  238. pageSize,
  239. total,
  240. handleSizeChange,
  241. handleCurrentChange,
  242. }
  243. },
  244. })
  245. </script>
  246. <style lang="scss" scoped>
  247. //弹出框内容样式
  248. .dialogOne {
  249. div:nth-child(1) {
  250. margin-bottom: 30px;
  251. }
  252. .content {
  253. margin-bottom: 20px;
  254. span:nth-child(1) {
  255. color: red;
  256. }
  257. .inputer {
  258. width: 150px;
  259. }
  260. }
  261. }
  262. .listPagination {
  263. margin-top: 15px;
  264. margin-bottom: -30px;
  265. float: right;
  266. }
  267. .listPagination1 {
  268. margin-top: 15px;
  269. float: right;
  270. }
  271. </style>