瀏覽代碼

Merge branch 'master' of http://47.111.81.118:3000/xf15575941817/admin-fiveFollowing

ming 3 年之前
父節點
當前提交
13a1d14d21

+ 8 - 0
src/api/siteList.js → src/api/publicList.js

@@ -7,3 +7,11 @@ export function SiteList(params) {
         params,
     })
 }
+
+export function dataManagementDeviceList(params) {
+    return request({
+        url: '/device/dataManagementDeviceList',
+        method: 'GET',
+        params,
+    })
+}

+ 3 - 2
src/main.js

@@ -24,8 +24,8 @@ import SvgIcon from "@/components/SvgIcon"
  * @description 正式环境默认使用mock,正式项目记得注释后再打包
  */
 if (process.env.NODE_ENV === 'production') {
-    const { mockXHR } = require('@/utils/static')
-    mockXHR()
+  const { mockXHR } = require('@/utils/static')
+  mockXHR()
 }
 
 var app = createApp(App)
@@ -41,3 +41,4 @@ app
   .mount('#app')
 
 store.commit("publicSiteList");
+store.commit('publicDeviceList')

+ 44 - 2
src/store/index.js

@@ -3,7 +3,7 @@
  * @description 导入所有 vuex 模块,自动加入namespaced:true,用于解决vuex命名冲突,请勿修改。
  */
 import { createStore } from 'vuex'
-import * as api from '@/api/siteList'
+import * as api from '@/api/publicList'
 import ElMessage from 'element-plus'
 
 const files = require.context('./modules', false, /\.js$/)
@@ -21,6 +21,10 @@ export default createStore({
     query: null,
     siteId: 1, //公共api请求参数->siteId
     siteList: [],//公共api站点下拉列表存储->siteId
+    deviceList: [],//公共站点下拉列表
+
+
+
     Time_Data: [], //公共api请求参数->Time_Data
     timearr: [], //公共处理开始时间和结束时间中的时间段天数 值存储
     Time_All: [], //公共时间 返回数组 -> 年月日时分秒 时间戳
@@ -37,7 +41,10 @@ export default createStore({
     // echartHeight:0,//公共ehcarts监听高度变化
   },
   mutations: {
-
+    /**
+     * @公共站点下拉列表
+     * @param {*} state 
+     */
     publicSiteList(state) {
       api
         .SiteList({})
@@ -50,6 +57,41 @@ export default createStore({
         })
     },
 
+    /**
+     * @公共左侧树状设备
+     * @param {*} state 
+     */
+    publicDeviceList(state) {
+      api
+        .dataManagementDeviceList({ siteId: state.siteId })
+        .then((requset) => {
+          if (requset.status === 'SUCCESS') {
+            state.deviceList = []
+            requset.data.map((val) => {
+              if (val.children.length > 0) {
+                state.deviceList.push({
+                  deviceCode: val.deviceCode,
+                  deviceName: val.deviceName,
+                  id: val.id,
+                  children:
+                    val.children.length > 0
+                      ? val.children.map((val) => {
+                        return {
+                          deviceCode: val.variableCoding,
+                          deviceName: val.variableName,
+                          id: val.id,
+                        }
+                      })
+                      : val.children,
+                })
+              }
+            })
+          } else {
+            ElMessage.error(requset.msg)
+          }
+        })
+    },
+
     /**
      * @公共api请求参数siteId
      * @param {*}} state 

+ 70 - 26
src/views/dataManage/sameAnalysis/index.vue

@@ -2,7 +2,11 @@
   <div class="sameAnalysis">
     <div class="sameContent1">
       <div style="display: flex">
-        <el-select v-model="store.state.siteId" placeholder="选择站点">
+        <el-select
+          v-model="store.state.siteId"
+          @change="siteChange"
+          placeholder="选择站点"
+        >
           <el-option
             v-for="item in store.state.siteList"
             :key="item.id"
@@ -14,11 +18,14 @@
 
       <div class="sameSwitch">
         <el-tree
-          :data="data"
+          ref="tree"
+          :data="store.state.deviceList"
           show-checkbox
           node-key="id"
-          :default-expanded-keys="[2, 3]"
+          accordion
+          :check-strictly="true"
           :props="defaultProps"
+          @check="currentChecked"
         />
       </div>
     </div>
@@ -50,6 +57,7 @@
               icon="el-icon-search"
               type="primary"
               style="padding: 7px 12px"
+              @click="select()"
             >
               查询
             </el-button>
@@ -66,6 +74,7 @@
 import { useStore } from 'vuex'
 import { defineComponent, ref, reactive, toRefs } from 'vue'
 import echarts from './ehcarts/index.vue'
+import { ElNotification } from 'element-plus'
 
 export default defineComponent({
   name: 'sameAnalysis',
@@ -73,44 +82,65 @@ export default defineComponent({
   props: {},
   setup() {
     const store = useStore()
+    const listTabPosition = ref('allValue') //tabs切换
+    const treeCheckedList = ref([])
+    const treeData = ref([])
+    const tree = ref(null)
 
     const listTabsChange = (value) => {
       console.log(value)
+      select()
+    }
+
+    const currentChecked = (nodeObj, SelectedObj) => {
+      console.log(nodeObj, SelectedObj)
+      if (treeCheckedList.value.length <= 0) {
+        treeCheckedList.value = SelectedObj.checkedNodes[0]
+      } else {
+        console.log('')
+      }
+      // 'userXM' in data
+      tree.value.getCurrentNode(SelectedObj.checkedNodes[0])
+      treeCheckedList.value = SelectedObj.checkedKeys
+    }
+
+    function select() {
+      console.log(treeCheckedList.value)
+      if (treeCheckedList.value.length > 0) {
+        console.log('', store.state.deviceList)
+      } else {
+        console.log('', 1)
+        ElNotification({
+          title: '提示',
+          message: '请选择测点',
+          type: 'warning',
+        })
+      }
     }
 
+    //通过站点切换下拉框 change事件改变 tree树中的数据
+    const siteChange = () => {
+      store.commit('publicDeviceList')
+    }
     const state = reactive({
       value1: [new Date(2000, 10, 10, 10, 10), new Date(2000, 10, 11, 10, 10)],
     })
-
     return {
       store,
       ...toRefs(state),
-      listTabPosition: ref('allValue'),
-      data: [
-        {
-          id: 1,
-          label: '设备1',
-          children: [
-            {
-              id: 4,
-              label: '母线停电次数',
-            },
-            {
-              id: 4,
-              label: '功率因数',
-            },
-            {
-              id: 4,
-              label: 'A相功率因数',
-            },
-          ],
-        },
-      ],
+      listTabPosition,
+      tree,
+      treeData,
       defaultProps: {
         children: 'children',
-        label: 'label',
+        label: 'deviceName',
+        deviceCode: 'deviceCode',
+        id: 'id',
       },
 
+      select,
+      currentChecked,
+      siteChange,
       listTabsChange,
     }
   },
@@ -168,4 +198,18 @@ export default defineComponent({
     }
   }
 }
+</style>
+
+<style lang="less">
+.sameSwitch {
+  .el-tree-node__content .el-checkbox__input {
+    display: none;
+  }
+  .el-tree-node
+    .el-tree-node__children
+    .el-tree-node__content
+    .el-checkbox__input {
+    display: block;
+  }
+}
 </style>

+ 14 - 2
src/views/deviceManage/powerEquip/channelList/index.vue

@@ -39,7 +39,12 @@
         :header-cell-style="headClass"
         :height="Height"
       >
-        <el-table-column prop="stationStatus" label="状态" width="50">
+        <el-table-column
+          prop="stationStatus"
+          align="center"
+          label="状态"
+          width="50"
+        >
           <template #default="scope">
             <el-avatar
               class="status"
@@ -55,39 +60,46 @@
         <el-table-column
           prop="channelName"
           label="通信名称"
+          align="center"
           width=""
         ></el-table-column>
         <el-table-column
           prop="netNumber"
           label="网络卡号"
+          align="center"
           width=""
         ></el-table-column>
         <el-table-column
           prop="netDeadline"
           label="网络截止时间"
+          align="center"
           width=""
         ></el-table-column>
         <el-table-column
           prop="accessMode"
           label="接入方式"
+          align="center"
           width=""
         ></el-table-column>
         <el-table-column
           prop="channelIP"
           label="通道IP:端口号"
+          align="center"
           width=""
         ></el-table-column>
         <el-table-column
           prop="regCode"
           label="注册码"
+          align="center"
           width=""
         ></el-table-column>
         <el-table-column
           prop="reportingAdd"
           label="上报地址:端口"
+          align="center"
           width=""
         ></el-table-column>
-        <el-table-column label="操作" width="150">
+        <el-table-column label="操作" align="center" width="150">
           <template #default="scope">
             <el-button
               type="text"

+ 1 - 1
src/views/deviceManage/powerEquip/powerDialog/cloneDialog.vue → src/views/deviceManage/powerEquip/communicateEquip/dialog/cloneDialog.vue

@@ -10,7 +10,7 @@
     <div class="dialogOne">
       <div>
         克隆设备对象:
-        <span>{{ DialogArray.monitorDeviceName }}</span>
+        <span>{{ DialogArray.deviceCode }}</span>
       </div>
       <div class="content">
         <span>*</span>

+ 49 - 3
src/views/deviceManage/powerEquip/communicateEquip/index.vue

@@ -44,12 +44,17 @@
         :header-cell-style="headClass"
         :height="Height"
       >
-        <el-table-column prop="stationStatus" label="状态" width="50">
+        <el-table-column
+          prop="deviceStatus"
+          align="center"
+          label="状态"
+          width="50"
+        >
           <template #default="scope">
             <el-avatar
               class="status"
               :style="
-                scope.row.stationStatus == 0
+                scope.row.deviceStatus == 1
                   ? 'background-color:red'
                   : 'background-color:#04F21C'
               "
@@ -60,39 +65,46 @@
         <el-table-column
           prop="deviceName"
           label="设备名称"
+          align="center"
           width="150"
         ></el-table-column>
         <el-table-column
           prop="deviceCode"
           label="设备编号"
+          align="center"
           width=""
         ></el-table-column>
         <el-table-column
           prop="siteId"
           label="所属站点"
+          align="center"
           width=""
         ></el-table-column>
         <el-table-column
           prop="statusTime"
           label="最后通信时间"
+          align="center"
           width=""
         ></el-table-column>
         <el-table-column
           prop="offlineDuration"
           label="离线时长"
+          align="center"
           width=""
         ></el-table-column>
         <el-table-column
           prop="onlineDuration"
           label="在线时长"
+          align="center"
           width=""
         ></el-table-column>
         <el-table-column
           prop="deviceAddress"
           label="设备地址"
+          align="center"
           width=""
         ></el-table-column>
-        <el-table-column label="操作" width="150">
+        <el-table-column align="center" label="操作" width="200">
           <template #default="scope">
             <el-button
               type="text"
@@ -117,6 +129,14 @@
                 </el-button>
               </template>
             </el-popconfirm>
+            <el-button
+              @click="clone(scope.row)"
+              type="text"
+              size="small"
+              style="color: #409eff"
+            >
+              克隆
+            </el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -140,6 +160,12 @@
         :dataList="dataList"
         @show="showValue"
       ></insert-Update>
+
+      <clone-Dialog
+        :clone_Dialog="cloneDialogBool"
+        @closeNo="closeNo"
+        :DialogArray="DialogArray"
+      ></clone-Dialog>
     </div>
   </div>
 </template>
@@ -147,6 +173,7 @@
 import { useStore } from 'vuex'
 import { defineComponent, onMounted, ref } from 'vue'
 import insertUpdate from './dialog/insert_update.vue'
+import cloneDialog from './dialog/cloneDialog.vue'
 
 import * as api from '@/api/deviceManage/powerEquip/communicateEquip'
 import { ElMessage } from 'element-plus'
@@ -154,6 +181,7 @@ import { ElMessage } from 'element-plus'
 export default defineComponent({
   name: 'powerEquip',
   components: {
+    cloneDialog,
     insertUpdate,
   },
   props: {
@@ -172,6 +200,19 @@ export default defineComponent({
     const dialogTitle = ref('')
     const dataList = ref({})
 
+    const cloneDialogBool = ref(false)
+    const DialogArray = ref([])
+
+    //克隆
+    const clone = (row) => {
+      DialogArray.value = row
+      cloneDialogBool.value = true
+    }
+    //克隆弹窗关闭
+    const closeNo = (value) => {
+      cloneDialogBool.value = value
+    }
+
     //查询
     function Select() {
       api
@@ -267,6 +308,8 @@ export default defineComponent({
       handleCurrentChange,
       handleSizeChange,
 
+      clone, //克隆按钮事件
+      closeNo, //克隆弹窗关闭事件
       Insert,
       Update,
       Delete,
@@ -281,6 +324,9 @@ export default defineComponent({
       tableData,
       activeName,
 
+      DialogArray,
+      cloneDialogBool,
+
       dialogBool,
       dialogTitle,
       dataList,

+ 13 - 30
src/views/deviceManage/powerEquip/deviceDetails.vue

@@ -17,12 +17,12 @@
     :header-cell-style="headClass"
     :height="Height"
   >
-    <el-table-column prop="status" label="状态" width="50">
+    <el-table-column prop="status" align="center" label="状态" width="50">
       <template #default="scope">
         <el-avatar
           class="status"
           :style="
-            scope.row.status == 0
+            scope.row.status == 1
               ? 'background-color:red'
               : 'background-color:#04F21C'
           "
@@ -32,39 +32,46 @@
     <el-table-column
       prop="monitorDeviceName"
       label="监控设备名称"
+      align="center"
       width=""
     ></el-table-column>
     <el-table-column
       prop="monitorDeviceCode"
       label="监控设备编号"
+      align="center"
       width=""
     ></el-table-column>
     <el-table-column
       prop="loopMeterAddress"
       label="回路表计地址"
+      align="center"
       width=""
     ></el-table-column>
     <el-table-column
       prop="ratedVoltage"
       label="额定电压"
+      align="center"
       width=""
     ></el-table-column>
     <el-table-column
       prop="ratedCurrent"
       label="额定电流"
+      align="center"
       width=""
     ></el-table-column>
     <el-table-column
       prop="currentLoadRate"
       label="电流负载率门限"
+      align="center"
       width=""
     ></el-table-column>
     <el-table-column
       prop="qualityAnalysis"
       label="电能质量分析"
+      align="center"
       width=""
     ></el-table-column>
-    <el-table-column label="操作" width="150">
+    <el-table-column label="操作" align="center" width="150">
       <template #default="scope">
         <el-button
           type="text"
@@ -91,7 +98,7 @@
         </el-popconfirm>
       </template>
     </el-table-column>
-    <el-table-column label="变量" width="180">
+    <el-table-column label="变量" align="center" width="100">
       <template #default="scope">
         <el-button
           type="text"
@@ -101,14 +108,6 @@
         >
           变量列表
         </el-button>
-        <el-button
-          @click="clone(scope.row)"
-          type="text"
-          size="small"
-          style="color: #409eff"
-        >
-          克隆
-        </el-button>
       </template>
     </el-table-column>
   </el-table>
@@ -125,12 +124,6 @@
     ></el-pagination>
   </div>
 
-  <clone-Dialog
-    :clone_Dialog="cloneDialogBool"
-    @closeNo="closeNo"
-    :DialogArray="DialogArray"
-  ></clone-Dialog>
-
   <list-Dialog
     :list_Dialog="listDialogBool"
     @closeNo="closeNo"
@@ -143,13 +136,11 @@ import { useStore } from 'vuex'
 import { defineComponent, onMounted, ref, watchEffect } from 'vue'
 import * as api from '@/api/deviceManage/powerEquip/deviceAttribute'
 import { ElMessage } from 'element-plus'
-import cloneDialog from './powerDialog/cloneDialog.vue'
 import listDialog from './powerDialog/listDialog.vue'
 
 export default defineComponent({
   name: 'powerEquip',
   components: {
-    cloneDialog,
     listDialog,
   },
   emits: ['updateRow', 'closeNo'],
@@ -165,7 +156,6 @@ export default defineComponent({
     const currentPage = ref(1) //分页
     const total = ref(0) //分页
 
-    const cloneDialogBool = ref(false)
     const listDialogBool = ref(false)
     const DialogArray = ref([])
 
@@ -174,15 +164,10 @@ export default defineComponent({
       DialogArray.value = row
       listDialogBool.value = true
     }
-    //克隆
-    const clone = (row) => {
-      DialogArray.value = row
-      cloneDialogBool.value = true
-    }
+
     //克隆弹窗关闭
     const closeNo = (value) => {
       listDialogBool.value = value
-      cloneDialogBool.value = value
     }
 
     //是否删除  ---- 是
@@ -254,8 +239,7 @@ export default defineComponent({
     }
     return {
       headClass,
-      clone, //克隆按钮事件
-      closeNo, //克隆弹窗关闭事件
+      closeNo,
       variableList, //变量列表按钮事件
       editRow, //编辑按钮事件
       handleDelete, //删除按钮事件
@@ -263,7 +247,6 @@ export default defineComponent({
       confirmEvent, //确定是否删除事件
       cancelEvent,
 
-      cloneDialogBool,
       DialogArray,
       listDialogBool,
 

+ 59 - 14
src/views/deviceManage/powerEquip/index.vue

@@ -62,25 +62,29 @@
               <el-table-column
                 prop="siteName"
                 label="站点名称"
-                width=""
                 align="center"
               ></el-table-column>
               <el-table-column
                 prop="siteAddress"
                 label="站点地址"
-                width=""
+                align="center"
               ></el-table-column>
               <el-table-column
                 prop="userName"
                 label="联系人"
-                width=""
+                align="center"
               ></el-table-column>
               <el-table-column
                 prop="phone"
                 label="手机号"
-                width=""
+                align="center"
               ></el-table-column>
-              <el-table-column prop="deviceCount" label="设备数量" width="">
+              <el-table-column
+                prop="deviceCount"
+                label="设备数量"
+                align="center"
+                width=""
+              >
                 <template #default="scope">
                   <div
                     style="margin-right: 15px; cursor: pointer; color: #409eff"
@@ -96,6 +100,18 @@
                 </template>
               </el-table-column>
             </el-table>
+            <div class="listPagination1">
+              <el-pagination
+                v-model:currentPage="currentPage"
+                :page-sizes="[15, 20, 25, 30]"
+                :page-size="pageSize"
+                layout="total, sizes, prev, pager, next, jumper"
+                :total="total"
+                @size-change="handleSizeChange"
+                @current-change="handleCurrentChange"
+                background
+              ></el-pagination>
+            </div>
           </div>
 
           <div class="firstContent" v-if="deviceNumData.length != ''">
@@ -154,6 +170,9 @@ export default defineComponent({
   setup() {
     const store = useStore()
     const tableData = ref([])
+    const total = ref(0)
+    const pageSize = ref(15)
+    const currentPage = ref(1)
     const deviceNumData = ref('') //判断设备列表详情是否显示
     const refresh = ref(false) //设备列表详情table 是否重新调用
     const activeName = ref('powerEquip')
@@ -218,14 +237,20 @@ export default defineComponent({
     }
     //电力监测设备列表
     function monitorDeviceList() {
-      api.monitorDeviceList({}).then((requset) => {
-        if (requset.status === 'SUCCESS') {
-          tableData.value = requset.data
-          store.state.siteList = tableData
-        } else {
-          ElMessage.error(requset.msg)
-        }
-      })
+      api
+        .monitorDeviceList({
+          size: pageSize.value,
+          current: currentPage.value,
+        })
+        .then((requset) => {
+          if (requset.status === 'SUCCESS') {
+            tableData.value = requset.data.records
+            total.value = requset.data.total
+            store.state.siteList = tableData
+          } else {
+            ElMessage.error(requset.msg)
+          }
+        })
     }
     //新增弹窗控制
     const showValue = (value) => {
@@ -237,6 +262,16 @@ export default defineComponent({
       deviceNumData.value = ''
       monitorDeviceList()
     }
+
+    const handleSizeChange = (val) => {
+      pageSize.value = val
+      monitorDeviceList()
+    }
+    const handleCurrentChange = (val) => {
+      currentPage.value = val
+      monitorDeviceList()
+    }
+
     // 表头样式设置
     const headClass = () => {
       return 'background:#FAFAFA !important;color: black;'
@@ -246,7 +281,6 @@ export default defineComponent({
     window.addEventListener('resize', () => {
       Height.value = window.innerHeight - 300 + 'px'
     })
-
     onMounted(() => {
       monitorDeviceList()
     })
@@ -266,6 +300,12 @@ export default defineComponent({
       updateTitle,
       goBack,
       headClass,
+
+      total,
+      pageSize,
+      currentPage,
+      handleSizeChange,
+      handleCurrentChange,
     }
   },
 })
@@ -335,4 +375,9 @@ export default defineComponent({
 .el-tabs--card > .el-tabs__header .el-tabs__nav {
   border: none;
 }
+
+.listPagination1 {
+  margin-top: 15px;
+  float: right;
+}
 </style>

+ 1 - 0
src/views/deviceManage/powerEquip/powerDialog/listDialog.vue

@@ -52,6 +52,7 @@
         <el-table-column
           type="index"
           label="序号"
+          align="center"
           sortable
           width=""
         ></el-table-column>

+ 13 - 2
src/views/deviceManage/powerEquip/videoEquip/index.vue

@@ -43,7 +43,12 @@
         :header-cell-style="headClass"
         :height="Height"
       >
-        <el-table-column prop="stationStatus" label="状态" width="50">
+        <el-table-column
+          prop="stationStatus"
+          label="状态"
+          align="center"
+          width="50"
+        >
           <template #default="scope">
             <el-avatar
               class="status"
@@ -59,31 +64,37 @@
         <el-table-column
           prop="manufactor"
           label="视频监测设备名称"
+          align="center"
           width=""
         ></el-table-column>
         <el-table-column
           prop="deviceModel"
           label="设备编号"
+          align="center"
           width=""
         ></el-table-column>
         <el-table-column
           prop="deviceNum"
           label="所属站点"
+          align="center"
           width=""
         ></el-table-column>
         <el-table-column
           prop="deviceNum"
           label="额定电压"
+          align="center"
           width=""
         ></el-table-column>
         <el-table-column
           prop="deviceNum"
           label="额定电流"
+          align="center"
           width=""
         ></el-table-column>
         <el-table-column
           prop="deviceNum"
           label="设备数量"
+          align="center"
           width=""
         ></el-table-column>
         <!-- <el-table-column label="操作" width="150">
@@ -106,7 +117,7 @@
             </el-button>
           </template>
         </el-table-column> -->
-        <el-table-column label="视频画面" width="150">
+        <el-table-column label="视频画面" align="center" width="150">
           <template #default="scope" style="text-align: center">
             <el-button
               type="text"