ming 3 年 前
コミット
50df992643

+ 9 - 0
src/api/deviceManage/videoEquip.js

@@ -0,0 +1,9 @@
+import request from '@/utils/request'
+//视频列表
+export function videoMonitoringDeviceList(params) {
+    return request({
+        url: '/device/videoMonitoringDeviceList',
+        method: 'GET',
+        params,
+    })
+}

+ 9 - 0
src/api/siteManage/basicInfo.js

@@ -45,4 +45,13 @@ export function getSite(params) {
         method: 'GET',
         params,
     })
+}
+
+// 所属线路下拉
+export function routeDroplist(params) {
+    return request({
+        url: '/site/routeDroplist',
+        method: 'GET',
+        params,
+    })
 }

+ 0 - 1
src/api/siteManage/powerScore.js

@@ -17,7 +17,6 @@ export function powerQualityUpdate(params) {
     })
 }
 
-
 // 评分配置-详情查询
 export function powerQualityList(params) {
     return request({

+ 37 - 1
src/api/siteManage/variableList.js

@@ -5,7 +5,25 @@ export function variableList(params) {
     return request({
         url: '/deviceAnalogVariableList/variableListone',
         method: 'POST',
-        data:params,
+        data: params,
+    })
+}
+
+// 通信设备下拉
+export function deviceList(params) {
+    return request({
+        url: '/device/deviceList',
+        method: 'GET',
+        params,
+    })
+}
+
+// 监控设备下拉
+export function deviceNewsListBox(params) {
+    return request({
+        url: '/deviceAttribute/deviceNewsListBox',
+        method: 'GET',
+        params,
     })
 }
 
@@ -16,4 +34,22 @@ export function variableAdd(params) {
         method: 'POST',
         data: params,
     })
+}
+
+//变量列表-修改
+export function variableListUpdate(params) {
+    return request({
+        url: '/deviceAnalogVariableList/variableListUpdate',
+        method: 'POST',
+        data: params,
+    })
+}
+
+// 变量列表-删除
+export function variableListDel(params) {
+    return request({
+        url: '/deviceAnalogVariableList/variableListDel',
+        method: 'GET',
+        params,
+    })
 }

+ 44 - 56
src/views/dataManage/chainAnalysis/ehcarts/index.vue

@@ -4,48 +4,10 @@
   </div>
 </template>
 <script>
-import { computed, defineComponent, onMounted, ref } from 'vue'
-import { useStore } from 'vuex'
+import {defineComponent, onMounted, ref,watch } from 'vue'
 import * as echarts from 'echarts'
 
-const data = [
-  {
-    name: '本期',
-    list: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
-    listDate: [
-      '00:00:00',
-      '02:00:00',
-      '04:00:00',
-      '06:00:00',
-      '08:00:00',
-      '10:00:00',
-      '12:00:00',
-      '14:00:00',
-      '16:00:00',
-      '18:00:00',
-      '20:00:00',
-      '22:00:00',
-    ],
-  },
-  {
-    name: '上期',
-    list: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
-    listDate: [
-      '00:00:00',
-      '02:00:00',
-      '04:00:00',
-      '06:00:00',
-      '08:00:00',
-      '10:00:00',
-      '12:00:00',
-      '14:00:00',
-      '16:00:00',
-      '18:00:00',
-      '20:00:00',
-      '22:00:00',
-    ],
-  },
-]
+
 
 const dataAll = [
   {
@@ -78,31 +40,31 @@ const dataAll = [
 
 export default defineComponent({
   name: 'CurveCom',
-  setup() {
-    const store = useStore()
-    const chainChartRef = ref(null)
+   props: {
+    echartsDataOne: Object,
+  
+  },
 
-    // 总数
-    const total = computed(() => store.state.Home.worksChartData.total)
-    // num
-    const num = computed(() => store.state.Home.worksChartData.num)
+  setup(props) {
+    const chainChartRef = ref(null)
 
+    
     // 读取数据 func
     const loading = ref(true)
     const getData = async () => {
+        console.log('props.echartsDataOne.name')
+      console.log(props.echartsDataOne.name)
       // loading.value = true
       // await store.dispatch('Home/queryWorksChartData')
       loading.value = false
     }
-
-    onMounted(() => {
-      getData()
+    function echarts2(){
       let myChart = echarts.init(chainChartRef.value)
       // 绘制图表
       myChart.setOption({
         color: ['#FEB70D', '#50F335', '#0DC8FE'],
         title: {
-          text: '同比分析',
+          text: props.echartsDataOne.name,
           left: '2.5%',
           textStyle: {
             color: '#9d9d9d',
@@ -134,9 +96,7 @@ export default defineComponent({
         xAxis: {
           type: 'category',
           boundaryGap: true,
-          data: data[0].listDate.map((val) => {
-            return val.split(':')[0] + ':' + val.split(':')[1]
-          }),
+          data: props.echartsDataOne?props.echartsDataOne.listDate:'',
           axisTick: {
             show: false, //去除刻度线
           },
@@ -179,13 +139,41 @@ export default defineComponent({
         // 自适应大小
         myChart.resize()
       }
+
+    }
+
+    const writeValue = (val) => {
+      alert(1)
+      val
+     
+      getData()
+       echarts2()
+    }
+
+    //监听变化
+    watch(
+      () => props.echartsDataOne,
+      (newVal, oldVal, clear) => {
+        // 执行异步任务,并得到关闭异步任务的 id
+        // console.log(newVal)
+        let id = writeValue(newVal, oldVal)
+        // 如果 watch 监听被重复执行了,则会先清除上次未完成的异步任务
+        clear(() => clearTimeout(id))
+      },
+      { lazy: true }
+    )
+
+
+    onMounted(() => {
+      getData()
+      echarts2()
+      
     })
 
     return {
       chainChartRef,
       loading,
-      total,
-      num,
+      echarts
     }
   },
 })

+ 29 - 17
src/views/dataManage/chainAnalysis/index.vue

@@ -2,7 +2,11 @@
   <div class="chainAnalysis">
     <div class="chainContent1">
       <div style="display: flex">
-        <el-select v-model="store.state.siteId" placeholder="选择站点"  @change="siteChange">
+        <el-select
+          v-model="store.state.siteId"
+          placeholder="选择站点"
+          @change="siteChange"
+        >
           <el-option
             v-for="item in store.state.siteList"
             :key="item.id"
@@ -21,7 +25,7 @@
           :props="defaultProps"
         /> -->
 
-         <el-tree
+        <el-tree
           ref="tree"
           :data="store.state.deviceList"
           show-checkbox
@@ -31,7 +35,6 @@
           :props="defaultProps"
           @check="currentChecked"
         />
-        
       </div>
     </div>
     <div class="chainContent2">
@@ -56,7 +59,7 @@
           <el-radio-button label="allValue">所有值</el-radio-button>
           <el-radio-button label="dailyValue">每日值</el-radio-button>
           <el-radio-button label="monthValue">每月值</el-radio-button>
-           <el-select
+          <el-select
             v-model="valueCalculation"
             placeholder="Select"
             style="width: 100px; margin-left: 10px"
@@ -75,7 +78,7 @@
               icon="el-icon-search"
               type="primary"
               style="padding: 7px 12px"
-               @click="searchData()"
+              @click="searchData()"
             >
               查询
             </el-button>
@@ -83,7 +86,7 @@
         </el-radio-group>
       </div>
       <div class="chainEcharts" v-if="flag">
-        <echarts v-for="op in 3" :key="op"></echarts>
+        <echarts v-for="(item,index) in ecahrtsDataArr" :key="index" :echartsDataOne="item"></echarts>
       </div>
     </div>
   </div>
@@ -116,11 +119,15 @@ export default defineComponent({
       }
     }
     const flag = ref(false)
-     const typeSrarch = ref(0)
-     const treeCheckedList = ref([])
-      const valueCalculation = ref()
-      const dateTime = ref([new Date(2021, 9, 1, 10, 10), new Date(2021, 9, 30, 10, 10)],)
+    const typeSrarch = ref(0)
+    const treeCheckedList = ref([])
+    const valueCalculation = ref()
+    const dateTime = ref([
+      new Date(2021, 9, 1, 10, 10),
+      new Date(2021, 9, 30, 10, 10),
+    ])
     const ecahrtsData = ref({})
+    const ecahrtsDataArr=ref([])
     const state = reactive({
       value1: [new Date(2000, 10, 10, 10, 10), new Date(2000, 10, 11, 10, 10)],
     })
@@ -147,7 +154,7 @@ export default defineComponent({
     }
 
     function searchData() {
-      if(!dateTime.value){
+      if (!dateTime.value) {
         ElNotification({
           title: '提示',
           message: '请选择开始和结束时间',
@@ -155,9 +162,8 @@ export default defineComponent({
         })
         return
       }
-     
+
       if (treeCheckedList.value.length > 0) {
- 
         store.commit('TimeAll_function', dateTime.value)
         const time = store.state.Time_Data
         api
@@ -170,7 +176,11 @@ export default defineComponent({
           })
           .then((requset) => {
             if (requset.status === 'SUCCESS') {
+              
               flag.value = true
+              ecahrtsDataArr.value= requset.data
+               console.log('ecahrtsDataArr')
+              console.log(ecahrtsDataArr.value)
               ecahrtsData.value = requset.data[0]
             } else {
               ElMessage.error(requset.msg)
@@ -186,7 +196,6 @@ export default defineComponent({
       }
     }
 
-
     return {
       store,
       ...toRefs(state),
@@ -231,18 +240,21 @@ export default defineComponent({
         },
       ]),
       defaultProps: {
-         children: 'children',
+        children: 'children',
         label: 'deviceName',
         deviceCode: 'deviceCode',
         id: 'id',
       },
-      dateTime,ecahrtsData,valueCalculation,
+      dateTime,
+      ecahrtsData,
+      ecahrtsDataArr,
+      valueCalculation,
       typeSrarch,
       flag,
       listTabsChange,
       siteChange,
       currentChecked,
-      searchData
+      searchData,
     }
   },
 })

+ 3 - 3
src/views/dataManage/sameAnalysis/ehcarts/index.vue

@@ -81,7 +81,7 @@ export default defineComponent({
       loading.value = false
       // console.log('props.ecahrtsData')
       // console.log(props.ecahrtsData)
-      aa.value=props.ecahrtsData[0].name;
+      aa.value=props.ecahrtsData[0]?props.ecahrtsData[0].name:'';
       var jsona = JSON.stringify(props.ecahrtsData)
       var jsonb = jsona.replace(/"list"/g, '"data"')
       newData.value = JSON.parse(jsonb)
@@ -102,7 +102,7 @@ export default defineComponent({
     function ecahrts() {
       let myChart = echarts.init(sumeChartRef.value)
       myChart.setOption({
-        color: ['#FEB70D', '#50F335', '#0DC8FE'],
+        color: ['#FEB70D', '#50F335', '#0DC8FE','#e4ff40','#ff409a','#ff4040'],
         title: {
           text: '同比分析',
           left: 'center',
@@ -136,7 +136,7 @@ export default defineComponent({
         xAxis: {
           type: 'category',
           boundaryGap: true,
-          data: props.ecahrtsData[0].listDate,
+          data: props.ecahrtsData[0]?props.ecahrtsData[0].listDate:'',
           axisTick: {
             show: false, //去除刻度线
           },

+ 1 - 1
src/views/dataManage/sameAnalysis/index.vue

@@ -79,7 +79,7 @@
         </el-radio-group>
       </div>
       <div class="sameEcharts">
-         <echarts :ecahrtsData="ecahrtsData"  v-if="flag"></echarts>
+         <echarts :ecahrtsData="ecahrtsData"  v-if="flag&&ecahrtsData"></echarts>
         <!-- <echarts :ecahrtsData="ecahrtsData"  v-if="flag&&ecahrtsData.length>0"></echarts> -->
         <!-- <div v-else style="text-align:center;margin:50px">暂无数据</div> -->
       </div>

+ 6 - 4
src/views/deviceManage/powerEquip/communicateEquip/dialog/insert_update.vue

@@ -5,7 +5,7 @@
       v-model="dialogVisible"
       @close="close"
       @open="open"
-      width="30rem"
+      width="640px"
     >
       <div>
         <el-form
@@ -19,7 +19,9 @@
             <el-input v-model="form.deviceName"></el-input>
           </el-form-item>
           <el-form-item label="设备编号:" prop="deviceCode">
-            <el-input v-model="form.deviceCode"></el-input>
+            
+             <el-input v-if="dialogTitle=='修改'" v-model="form.deviceCode" disabled ></el-input>
+             <el-input v-else v-model="form.deviceCode" ></el-input>
           </el-form-item>
           <el-form-item label="楼层:" prop="floor">
             <el-input-number
@@ -165,13 +167,13 @@ export default defineComponent({
         deviceCode: [
           {
             required: true,
-            message: '设备名称不能为空',
+          
             trigger: 'blur',
           },
           {
             min: 5,
             max: 25,
-            message: '设备名称长度不能小于5大于25',
+            message: '设备编号长度不能小于5大于25',
             trigger: 'blur',
           },
         ],

+ 1 - 0
src/views/deviceManage/powerEquip/communicateEquip/index.vue

@@ -323,6 +323,7 @@ export default defineComponent({
         deviceAddress: row.deviceAddress,
         deviceType: Number(row.deviceType),
         sim: row.sim,
+        id:row.id
       }
     }
 

+ 123 - 0
src/views/deviceManage/powerEquip/videoEquip/checkVideo.vue

@@ -0,0 +1,123 @@
+<template>
+
+    <el-dialog
+      :title="dialogTitle"
+      v-model="dialogVisible"
+      width="600px"
+  
+      @close="closeDialog(0)"
+       @open="open"
+    >
+    <div style="width:100%;
+    height:400px;background:#aaa   "></div>
+     
+    </el-dialog>
+
+</template>
+
+<script>
+import { useStore } from 'vuex'
+import { defineComponent, ref, watchEffect } from 'vue'
+// import * as api from '@/api/siteManage/watchDog.js'
+// import { ElMessage } from 'element-plus'
+
+export default defineComponent({
+  name: 'CheckVideo',
+  emits: ['closeDialog'],
+  props: {
+    flag: Boolean,
+    dialogTitle: String,
+    itemInfo: Object,
+  },
+  setup(props, context) {
+    context
+    const store = useStore()
+    const dialogVisible = ref(false)
+    const formInfo = ref(null)
+
+    const form = ref([])
+
+     const siteList = ref([])
+
+    // open(): Dialog弹窗打开之前做的事
+    const open = () => {
+      // form.value = props.itemInfo.value;
+      siteList.value = store.state.siteList
+      // console.log('siteList.value')
+      // console.log(siteList.value)
+      // console.log('siteList.value')
+    }
+
+    const options = [
+      {
+        value: '选项1',
+        label: '站点一',
+      },
+      {
+        value: '选项2',
+        label: '站点二',
+      },
+      {
+        value: '选项3',
+        label: '站点三',
+      },
+      {
+        value: '选项4',
+        label: '站点四',
+      },
+      {
+        value: '选项5',
+        label: '站点五',
+      },
+    ]
+
+    // 关闭弹框
+    const closeDialog = () => {
+      context.emit('closeDialog', false)
+      dialogVisible.value = false
+    }
+
+    watchEffect((fn, options) => {
+      fn, options
+      dialogVisible.value = props.flag
+    })
+
+    const roleValid = (rule, value, callback) => {
+      rule
+      if (value.length === 0) {
+        callback(new Error('角色不能为空'))
+      } else {
+        callback()
+      }
+    }
+
+
+    return {
+      closeDialog,
+      dialogVisible,
+      options,
+      roleValid,
+      formInfo,
+      siteList,
+      form,
+      open,
+    
+    }
+  },
+})
+</script>
+ 
+<style scoped lang="scss">
+.el-input,
+.el-select {
+  width: 240px;
+}
+
+// label样式
+.el-form-item__label {
+    width: 150px
+}
+.el-form-item__content {
+    margin-left: 150px
+}
+</style>

+ 113 - 83
src/views/deviceManage/powerEquip/videoEquip/index.vue

@@ -6,6 +6,7 @@
           placeholder="搜索设备或编号"
           v-model="filterText"
           class="videoTopLeftInput"
+           @input="videoMonitoringDeviceList()"
         >
           <template #suffix>
             <i class="el-icon-search el-input__icon"></i>
@@ -28,16 +29,7 @@
 
     <div class="videoContent">
       <el-table
-        :data="
-          tableData.filter(
-            (data) =>
-              !filterText ||
-              data.manufactor
-                .toLowerCase()
-                .includes(filterText.toLowerCase()) ||
-              data.deviceModel.toLowerCase().includes(filterText.toLowerCase())
-          )
-        "
+        :data="tableData"
         border
         stripe
         :header-cell-style="headClass"
@@ -62,61 +54,50 @@
         </el-table-column>
 
         <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">
-          <template #default="scope">
-            <el-button
-              type="text"
-              size="small"
-              style="color: #409eff"
-              @click.prevent="Update(scope.row)"
-            >
-              编辑
-            </el-button>
-            <el-button
-              @click="Delete(scope.$index, scope.row)"
-              type="text"
-              size="small"
-              style="color: red"
-            >
-              删除
-            </el-button>
-          </template>
-        </el-table-column> -->
+        prop="deviceName"
+        label="名称"
+        align="center"
+      ></el-table-column>
+      <el-table-column
+        prop="deviceCode"
+        label="编号"
+        align="center"
+        width=""
+      ></el-table-column>
+
+      <el-table-column
+        prop="floor"
+        label="楼层"
+        align="center"
+        width="60"
+      ></el-table-column>
+      <el-table-column
+        prop="deviceAddress"
+        label="设备安装位置"
+        align="center"
+        width=""
+      ></el-table-column>
+      <el-table-column prop="deviceType" label="设备类型" align="center">
+        <template #default="scope">
+          {{ scope.row.deviceType == '2' ? '视频监控设备' : '其他' }}
+        </template>
+      </el-table-column>
+      <el-table-column
+        prop="installTime"
+        label="安装时间"
+        align="center"
+        width="200"
+      ></el-table-column>
+      <el-table-column
+        prop="creator"
+        label="创建人"
+        align="center"
+      ></el-table-column>
+      <el-table-column
+        prop="sim"
+        label="sim卡号"
+        align="center"
+      ></el-table-column>
         <el-table-column label="视频画面" align="center" width="150">
           <template #default="scope" style="text-align: center">
             <el-button
@@ -142,63 +123,112 @@
           background
         ></el-pagination>
       </div>
+
+       <!--视频弹框组件开始-----------------------start-->
+    <check-video
+      :dialogTitle="dialogTitle"
+      @closeDialog="closeDialog"
+      :flag="showDialog"
+    ></check-video>
+    <!--视频弹框组件结束-----------------------end-->
+
     </div>
 
     <div></div>
   </div>
 </template>
 <script>
-import { defineComponent, ref } from 'vue'
+import { useStore } from 'vuex'
+import { defineComponent, ref,onMounted } from 'vue'
+import { ElMessage } from 'element-plus'
+import * as api from '@/api/deviceManage/videoEquip.js'
+import checkVideo from './checkVideo'
 
 export default defineComponent({
   name: 'powerEquip',
-  components: {},
+  components: {checkVideo},
   props: {
     Height: String,
   },
   setup() {
+     const store = useStore()
+
+      const dialogTitle = ref('')
+       const showDialog = ref(false)
+
+     const total = ref(0)
+    const pageSize = ref(15)
+    const currentPage = ref(1)
     const filterText = ref('')
-    const currentPage = ref(15)
     const activeName = 'powerEquip'
     const tableData = ref([
-      {
-        stationStatus: 0,
-        manufactor: '上海永天科技股份有限公司',
-        deviceModel: '测试设备',
-        deviceNum: '8',
-      },
-      {
-        stationStatus: 1,
-        manufactor: '上海永天科技股份有限公司',
-        deviceModel: '测试设备',
-        deviceNum: '8',
-      },
+     
     ])
 
     //查看视频画面
     const LookUp = (ind, row) => {
+      // alert(2)
       console.log(ind, row)
+      dialogTitle.value = '查看视频'
+      showDialog.value = true
     }
-    const handleSizeChange = (val) => {
-      console.log(`${val} items per page`)
+   const handleSizeChange = (val) => {
+      pageSize.value = val
+      videoMonitoringDeviceList()
     }
     const handleCurrentChange = (val) => {
-      console.log(`current page: ${val}`)
+      currentPage.value = val
+      videoMonitoringDeviceList()
     }
     // 表头样式设置
     const headClass = () => {
       return 'background:#FAFAFA !important;color: black;'
     }
+
+    // 关闭操作
+    const closeDialog = () => {
+      showDialog.value = false
+      // videoMonitoringDeviceList()
+    }
+
+
+     //视频列表
+    function videoMonitoringDeviceList() {
+      api
+        .videoMonitoringDeviceList({
+          siteId: store.state.siteId,
+          size: pageSize.value,
+          current: currentPage.value,
+          deviceType:2,
+          deviceName:filterText.value
+        })
+        .then((requset) => {
+          if (requset.status === 'SUCCESS') {
+            tableData.value = requset.data.records
+            total.value = requset.data.total
+          } else {
+            ElMessage.error(requset.msg)
+          }
+        })
+    }
+     onMounted(() => {
+      videoMonitoringDeviceList()
+    })
+
     return {
       headClass,
       LookUp,
       handleSizeChange,
       handleCurrentChange,
+      videoMonitoringDeviceList,
 
       filterText,
       tableData,
       activeName,
       currentPage,
+      closeDialog,
+      dialogTitle,
+      showDialog
     }
   },
 })

+ 57 - 10
src/views/siteManage/basicInfo/index.vue

@@ -117,10 +117,10 @@
           <el-form-item label="所属线路" prop="routeId">
             <el-select v-model="ruleForm.routeId" placeholder="请选择">
               <el-option
-                v-for="(item, index) in dropData"
+                v-for="(item, index) in routeDropData"
                 :key="index"
-                :label="item.variableName"
-                :value="item.variableCoding"
+                :label="item.routeName"
+                :value="item.id"
               ></el-option>
             </el-select>
           </el-form-item>
@@ -183,9 +183,10 @@
                   :action="uploadUrl"
                   :on-success="handleUpAvatar"
                   :on-remove="handleRemove"
-                  :show-file-list="fileList"
+                  :show-file-list="true"
                   list-type="picture-card"
                   :limit="3"
+                  :file-list="fileListImages"
                   :on-preview="handlePictureCardPreview"
                   :headers="{ accessToken: [accessToken] }"
                 >
@@ -238,7 +239,9 @@ export default defineComponent({
     siteId: Number,
   },
   setup(props) {
+    const fileImages = ref(window.PLATFROM_CONFIG.images)
     const store = useStore()
+    const routeDropData=ref([])
     const formInfo = ref(null)
     const formStatus = ref('')
     const dialogImageUrl = ref('')
@@ -246,6 +249,7 @@ export default defineComponent({
     const disabled = ref(false)
     const accessToken = ref(store.state.user.accessToken)
     const dropData = ref([])
+    const fileListImages = ref(['https://qhome.usky.cn/file/chart3-1.png'])
     const dropData2 = ref([])
     const platFormData = ref([])
     const ruleForm = ref({})
@@ -326,18 +330,57 @@ export default defineComponent({
       })
     }
 
+     //所属线路下拉
+    function routeDroplist() {
+      api.routeDroplist().then((requset) => {
+        if (requset.status === 'SUCCESS') {
+          routeDropData.value = requset.data
+           console.log('routeDropData.value')
+          console.log(routeDropData.value)
+        } else {
+          ElMessage.error(requset.msg)
+        }
+      })
+    }
+
     //站点详情请求
     function getSite() {
+      fileListImages.value = []
       api.getSite({ id: props.siteId }).then((requset) => {
         if (requset.status === 'SUCCESS') {
           console.log(requset.data[0])
           ruleForm.value = requset.data[0]
-          ruleForm.value.region? ruleForm.value.region = requset.data[0].region.toString():''
-          ruleForm.value.powerSupplyType = ruleForm.value.powerSupplyType?
-            requset.data[0].powerSupplyType.toString():''
-          ruleForm.value.demolitionStandardCoal? ruleForm.value.demolitionStandardCoal =
-            requset.data[0].demolitionStandardCoal.toString():''
-          //  ruleForm.value.roleId=requset.data[0].roleId.toString()
+          ruleForm.value.region
+            ? (ruleForm.value.region = requset.data[0].region.toString())
+            : ''
+          ruleForm.value.powerSupplyType = ruleForm.value.powerSupplyType
+            ? requset.data[0].powerSupplyType.toString()
+            : ''
+          ruleForm.value.demolitionStandardCoal
+            ? (ruleForm.value.demolitionStandardCoal =
+                requset.data[0].demolitionStandardCoal.toString())
+            : ''
+
+          if (requset.data[0].sitePictureOne) {
+            fileListImages.value.push({
+              name: '1',
+              url: fileImages.value + requset.data[0].sitePictureOne,
+            })
+          }
+          if (requset.data[0].sitePictureTwo) {
+            fileListImages.value.push({
+              name: '2',
+              url: fileImages.value + requset.data[0].sitePictureTwo,
+            })
+          }
+          if (requset.data[0].sitePictureThree) {
+            fileListImages.value.push({
+              name: '3',
+              url: fileImages.value + requset.data[0].sitePictureThree,
+            })
+          }
+          console.log('fileListImages.value')
+          console.log(fileListImages.value)
 
           if (requset.data[0]) {
             formStatus.value = '修改'
@@ -447,6 +490,7 @@ export default defineComponent({
       // console.log(props.siteId)
       platformList()
       getSite()
+      routeDroplist()
       dynamicPropertiesDroplist(2)
       dynamicPropertiesDroplist(1)
     })
@@ -461,6 +505,7 @@ export default defineComponent({
       dropData,
       dropData2,
       platFormData,
+      fileListImages,
 
       accessToken,
       ruleForm,
@@ -571,8 +616,10 @@ export default defineComponent({
       handleRemove,
       handlePictureCardPreview,
       submitForm,
+      routeDropData,
       resetForm,
       handleUpAvatar,
+      fileImages,
     }
   },
 })

+ 0 - 1
src/views/siteManage/camera/index.vue

@@ -227,7 +227,6 @@ export default defineComponent({
         deviceCode: row.deviceCode,
         deviceName: row.deviceName,
         floor: row.floor,
-
         siteId: row.siteId,
         deviceAddress: row.deviceAddress,
         deviceType: Number(row.deviceType),

+ 1 - 1
src/views/siteManage/index.vue

@@ -102,7 +102,7 @@
           ></watch-dog>
         </el-tab-pane>
         <el-tab-pane label="变量列表" name="third">
-          <variable-list :activeName="activeName"></variable-list>
+          <variable-list :activeName="activeName"  :siteId="siteId"></variable-list>
         </el-tab-pane>
         <el-tab-pane label="摄像头" name="five">
           <camera :siteId="siteId"></camera>

+ 123 - 77
src/views/siteManage/variableList/dialogComponent.vue

@@ -14,60 +14,60 @@
       :rules="rules"
     >
       <el-form-item label="设备编号:" prop="deviceCode">
-        <el-input v-model="form.watchCode"></el-input>
+        <el-input v-model="form.deviceCode"></el-input>
       </el-form-item>
       <el-form-item label="变量名:" prop="variableName">
-        <el-input v-model="form.ratedVoltage"></el-input>
+        <el-input v-model="form.variableName"></el-input>
       </el-form-item>
       <el-form-item label="变量编码:" prop="variableCoding">
-        <el-input v-model="form.ratedCurrent"></el-input>
+        <el-input v-model="form.variableCoding"></el-input>
       </el-form-item>
 
-      <el-form-item label="监控设备:" prop="routeAddress">
+      <el-form-item label="监控设备:" prop="monitoringEquipment">
         <el-select
-          v-model="form.routeAddress"
+          v-model="form.monitoringEquipment"
           filterable
           collapse-tags
           placeholder="请选择"
         >
           <el-option
-            v-for="item in options"
+            v-for="item in deviceNewsListBoxData"
             :key="item.value"
-            :label="item.label"
-            :value="item.value"
+            :label="item.monitorDeviceName"
+            :value="item.id"
           ></el-option>
         </el-select>
       </el-form-item>
 
-      <el-form-item label="通信设备:" prop="routeAddress">
+      <el-form-item label="通信设备:" prop="communicationEquipment">
         <el-select
-          v-model="form.routeAddress"
+          v-model="form.communicationEquipment"
           filterable
           collapse-tags
           placeholder="请选择"
         >
           <el-option
-            v-for="item in options"
-            :key="item.value"
-            :label="item.label"
-            :value="item.value"
+            v-for="item in deviceListData"
+            :key="item.id"
+            :label="item.deviceName"
+            :value="item.id"
           ></el-option>
         </el-select>
       </el-form-item>
 
-      <el-form-item label="数据地址:" prop="fzlMx">
+      <el-form-item label="数据地址:" prop="dataAddress">
         <el-input v-model="form.dataAddress"></el-input>
       </el-form-item>
-      <el-form-item label="数据类型:" prop="ability">
+      <el-form-item label="数据类型:" prop="dataType">
         <el-input v-model="form.dataType"></el-input>
       </el-form-item>
-      <el-form-item label="系数:" prop="ability">
+      <el-form-item label="系数:" prop="coefficient">
         <el-input v-model="form.coefficient"></el-input>
       </el-form-item>
-      <el-form-item label="存盘周期(分钟):" prop="ability">
+      <el-form-item label="存盘周期(分钟):" prop="saveCycle">
         <el-input v-model="form.saveCycle"></el-input>
       </el-form-item>
-      <el-form-item label="状态:" prop="ability">
+      <el-form-item label="状态:" prop="dataArea">
         <el-radio-group v-model="form.dataArea">
           <el-radio label="1">模拟量</el-radio>
           <el-radio label="2">状态量</el-radio>
@@ -88,8 +88,8 @@
 
 <script>
 // import { useStore } from 'vuex'
-import { defineComponent, ref, watchEffect } from 'vue'
-import * as api from '@/api/siteManage/watchDog.js' //待修改
+import { defineComponent, ref, watchEffect,onMounted } from 'vue'
+import * as api from '@/api/siteManage/variableList'
 import { ElMessage } from 'element-plus'
 
 export default defineComponent({
@@ -99,13 +99,15 @@ export default defineComponent({
     flag: Boolean,
     dialogTitle: String,
     itemInfo: Object,
+    siteId: Number,
   },
   setup(props, context) {
     context
     // const store = useStore()
     const dialogVisible = ref(false)
     const formInfo = ref(null)
-
+    const deviceListData = ref([])
+    const deviceNewsListBoxData = ref([])
     const form = ref([])
 
     const siteList = ref([])
@@ -113,34 +115,12 @@ export default defineComponent({
     // open(): Dialog弹窗打开之前做的事
     const open = () => {
       form.value = props.itemInfo.value
-      // siteList.value = store.state.siteList
-      console.log('props.itemInfo.value')
-      console.log(props.itemInfo.value)
+       console.log('open时传过来的详情值form.value')
+      console.log(form.value)
+      deviceList()
+      deviceNewsListBox()
     }
 
-    const options = [
-      {
-        value: '选项1',
-        label: '站点一',
-      },
-      {
-        value: '选项2',
-        label: '站点二',
-      },
-      {
-        value: '选项3',
-        label: '站点三',
-      },
-      {
-        value: '选项4',
-        label: '站点四',
-      },
-      {
-        value: '选项5',
-        label: '站点五',
-      },
-    ]
-
     // 关闭弹框
     const closeDialog = () => {
       context.emit('closeDialog', false)
@@ -161,17 +141,47 @@ export default defineComponent({
       }
     }
 
+    //通信设备下拉
+    function deviceList() {
+      api
+        .deviceList({
+          siteId: props.siteId,
+        })
+        .then((requset) => {
+          if (requset.status === 'SUCCESS') {
+            deviceListData.value = requset.data
+            console.log('请求接口下拉时的 通信设备下拉deviceListData.value')
+              console.log(deviceListData.value)
+          } else {
+            ElMessage.error(requset.msg)
+          }
+        })
+    }
+
+    //监控设备下拉
+    function deviceNewsListBox() {
+      api
+        .deviceNewsListBox({
+          siteId: props.siteId,
+        })
+        .then((requset) => {
+          if (requset.status === 'SUCCESS') {
+            deviceNewsListBoxData.value = requset.data
+            // console.log('deviceNewsListBoxData.value')
+            // console.log(deviceNewsListBoxData.value)
+          } else {
+            ElMessage.error(requset.msg)
+          }
+        })
+    }
+
     // 保存-修改操作
     const submitForm = () => {
       formInfo.value.validate((valid) => {
         if (valid) {
-          form.value.qualityAnalysis =
-            form.value.qualityAnalysis == true
-              ? (form.value.qualityAnalysis = '是')
-              : (form.value.qualityAnalysis = '否')
-
+  
           if (props.dialogTitle === '新增') {
-            api.deviceNewsAdd(form.value).then((requset) => {
+            api.variableAdd(form.value).then((requset) => {
               if (requset.status === 'SUCCESS') {
                 ElMessage.success({
                   message: '新增成功',
@@ -183,7 +193,7 @@ export default defineComponent({
               }
             })
           } else {
-            api.deviceNewsUpdate(form.value).then((requset) => {
+            api.variableListUpdate(form.value).then((requset) => {
               if (requset.status === 'SUCCESS') {
                 ElMessage.success({
                   message: '修改成功',
@@ -201,50 +211,86 @@ export default defineComponent({
         }
       })
     }
+    onMounted(() => {
+      // deviceList()
+      // deviceNewsListBox()
+    })
 
     return {
       closeDialog,
       dialogVisible,
-      options,
       roleValid,
       formInfo,
       siteList,
+      deviceList,
+      deviceNewsListBox,
+
       form,
       open,
+
+      deviceListData,
+      deviceNewsListBoxData,
       submitForm,
       rules: {
-        watchName: [
-          // required  是否为必填项, trigger:表单验证的触发时机,失去焦点进行验证
-          { required: true, message: '请输入设备名称', trigger: 'blur' },
+        deviceCode: [
+          { required: true, message: '请输入设备编号', trigger: 'blur' },
           {
-            min: 3,
-            max: 6,
-            message: '用户名长度在 3 到 6 个字符',
+            min: 1,
+            max: 20,
+            message: '设备编号长度在 1 到 20 个字符',
             trigger: 'blur',
           },
         ],
-        watchCode: [
-          { required: true, message: '请输入设备编号', trigger: 'blur' },
+        variableName: [
+          { required: true, message: '请输入变量名', trigger: 'blur' },
           {
-            min: 3,
-            max: 6,
-            message: '用户名长度在 3 到 6 个字符',
+            min: 1,
+            max: 20,
+            message: '变量名长度在 1 到 20 个字符',
             trigger: 'blur',
           },
         ],
-        routeAddress: [
-          { required: true, message: '请选则回路表记地址', trigger: 'change' },
+        variableCoding: [
+          { required: true, message: '请输入变量编码', trigger: 'blur' },
+          {
+            min: 1,
+            max: 20,
+            message: '变量编码长度在 1 到 20 个字符',
+            trigger: 'blur',
+          },
+        ],
+        monitoringEquipment: [
+          { required: true, message: '请选择监控设备', trigger: 'change' },
+        ],
+        communicationEquipment: [
+          { required: true, message: '请选择通信设备', trigger: 'change' },
+        ],
+        dataAddress: [
+          { required: true, message: '请输入数据地址', trigger: 'blur' },
+          {
+            min: 1,
+            max: 20,
+            message: '数据地址长度在 1 到 20 个字符',
+            trigger: 'blur',
+          },
+        ],
+        dataType: [
+          { required: true, message: '请输入数据类型', trigger: 'blur' },
+          {
+            min: 1,
+            max: 20,
+            message: '数据类型长度在 1 到 20 个字符',
+            trigger: 'blur',
+          },
         ],
-        ratedVoltage: [
-          { required: true, message: '请选择站点列表', trigger: 'change' },
+        coefficient: [
+          { required: true, message: '请输入系数', trigger: 'blur' },
         ],
-        ratedCurrent: [
-          { required: true, message: '请输入已选站点个数', trigger: 'blur' },
-          { trigger: 'blur' },
+        saveCycle: [
+          { required: true, message: '请输入存盘周期', trigger: 'blur' },
         ],
-        fzlMx: [
-          { required: true, message: '请输入挂载设备个数', trigger: 'blur' },
-          { trigger: 'blur' },
+        dataArea: [
+          { required: true, message: '请选中状态', trigger: 'change' },
         ],
       },
     }

+ 49 - 24
src/views/siteManage/variableList/index.vue

@@ -146,6 +146,7 @@
         :page-size="pageSize"
         layout="total, sizes, prev, pager, next, jumper"
         :total="total"
+        
       ></el-pagination>
     </div>
     <!-- 分页end -->
@@ -156,8 +157,7 @@
       :itemInfo="tableItem"
       @closeDialog="closeDialog"
       :flag="showDialog"
-
-
+      :siteId="siteId"
     ></dialog-component>
     <!--弹框组件开始-----------------------end-->
   </div>
@@ -166,22 +166,25 @@
 <script>
 import DialogComponent from './dialogComponent'
 import * as api from '@/api/siteManage/variableList'
-import { defineComponent, onMounted,reactive, ref } from 'vue'
+import { defineComponent, onMounted, reactive, ref, watch } from 'vue'
 import { ElMessage } from 'element-plus'
 
 export default defineComponent({
   name: 'VariableList',
+  props: {
+    siteId: Number,
+  },
 
   components: { DialogComponent },
 
-  setup() {
+  setup(props) {
     const tableItem = reactive([])
     const tableData = ref()
     const currentPage = ref(1)
     const pageSize = ref(15)
     const total = ref(0)
     const select = ref(1)
-    const siteId = ref(1)
+    // const siteId = ref(1)
     const variableName = ref('')
     const showDialog = ref(false)
     const dialogTitle = ref('')
@@ -197,7 +200,7 @@ export default defineComponent({
           size: pageSize.value,
           current: currentPage.value,
           dataArea: select.value,
-          siteId: siteId.value,
+          siteId: props.siteId,
           variableName: variableName.value,
         })
         .then((requset) => {
@@ -215,6 +218,16 @@ export default defineComponent({
       query()
     }
 
+    //监听变化
+    watch(
+      () => props.siteId,
+      (newVal) => {
+        console.log('newVal')
+        console.log(newVal)
+        query()
+      }
+    )
+
     onMounted(() => {
       query()
     })
@@ -246,39 +259,51 @@ export default defineComponent({
     // 添加操作
     const addItem = () => {
       tableItem.value = {
-        // id: '',
-        // stationName: '',
-        watchName: '',
-        watchCode: '',
-        siteList: [],
-        done: '',
-        guaZai: '',
-        checked: true,
+        // dataArea:'1'
       }
       dialogTitle.value = '新增'
       showDialog.value = true
     }
     // 编辑操作
     const editRow = (row) => {
-      console.log(row)
+      // tableItem.value = {
+      //   dataArea: row.dataArea.toString(),
+      //   monitoringEquipment: row.monitoringEquipment,
+      //   communicationEquipment: row.communicationEquipment,
+       
+      // }
+
       tableItem.value = row
+      tableItem.value.dataArea = row.dataArea.toString()
+      tableItem.value.monitoringEquipment = row.monitoringEquipment
+      tableItem.value.communicationEquipment =
+        row.communicationEquipment
       dialogTitle.value = '编辑'
       showDialog.value = true
-      
     }
+    
     // 关闭操作
-    const closeDialog = (flag) => {
-      if (flag) {
-        // 重新刷新表格内容
-        this.fetchData()
-      }
+    const closeDialog = () => {
       showDialog.value = false
+      query()
     }
 
+
     //删除操作
-    const handleDelete = (index, row) => {
-      console.log(index, row)
-      alert(index)
+    const handleDelete = (row) => {
+       api.variableListDel({ id: row.id }).then((requset) => {
+        if (requset.status === 'SUCCESS') {
+          ElMessage.success({
+            message: '删除成功',
+            type: 'success',
+          })
+          query()
+        } else {
+          ElMessage.error(requset.msg)
+        }
+      })
+
+
     }
     // 获取数据
     const getVariableListone = () => {