ソースを参照

更新202110241025

fanghuisheng 3 年 前
コミット
8a7fd63d12

+ 43 - 0
src/api/deviceManage/powerEquip/deviceAttribute.js

@@ -0,0 +1,43 @@
+import request from '@/utils/request'
+
+export function monitorDeviceList(params) {
+  return request({
+    url: '/deviceAttribute/monitorDeviceList',
+    method: 'GET',
+    params,
+  })
+}
+
+
+export function deviceNewsList(params) {
+  return request({
+    url: '/deviceAttribute/deviceNewsList',
+    method: 'GET',
+    params,
+  })
+}
+
+export function deviceNewsAdd(params) {
+  return request({
+    url: '/deviceAttribute/deviceNewsAdd',
+    method: 'POST',
+    data:params,
+  })
+}
+
+export function deviceNewsUpdate(params) {
+  return request({
+    url: '/deviceAttribute/deviceNewsUpdate',
+    method: 'POST',
+    data:params,
+  })
+}
+
+export function deviceNewsDel(params) {
+  return request({
+    url: '/deviceAttribute/deviceNewsDel',
+    method: 'GET',
+    params,
+  })
+}
+

+ 2 - 2
src/api/user.js

@@ -20,8 +20,8 @@ export async function socialLogin(data) {
 export function getUserInfo(accessToken) {
   //此处为了兼容mock.js使用data传递accessToken,如果使用mock可以走headers
   return request({
-    url: '/userInfo',
-    method: 'post',
+    url: '/getInfo',
+    method: 'get',
     data: {
       [tokenName]: accessToken,
     },

+ 8 - 0
src/assets/css/global.scss

@@ -105,3 +105,11 @@ a:hover {
 .el-table .cell {
     text-align: center;
 }
+
+//公共字体无法选中
+.fontSizeSelect{
+    -webkit-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none;
+}

BIN
src/assets/images/common-mainIcon.jpg


BIN
src/assets/images/default_head.jpg


+ 1 - 2
src/config/default/setting.config.js

@@ -1,8 +1,7 @@
 /**
  * @description 导出默认通用配置
  */
-// let baseURL = window.PLATFROM_CONFIG.baseUrl
-// baseURL
+
 const setting = {
   //开发以及部署时的URL,hash模式时在不确定二级目录名称的情况下建议使用""代表相对路径或者"/二级目录/",history模式默认使用"/"或者"/二级目录/"
   publicPath: '',

+ 1 - 0
src/icons/svgIcon/anticon-dingwei.svg

@@ -0,0 +1 @@
+<svg t="1634867566232" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6343" width="48" height="48"><path d="M611.6 618.7l18.6-27.9c111-46.3 189.1-155.8 189.1-283.6C819.2 137.5 681.7 0 512 0S204.8 137.5 204.8 307.2c0 127.8 78.1 237.3 189.1 283.6l18.6 27.9C177.5 637.2 0 719.8 0 819.2 0 932.3 229.2 1024 512 1024s512-91.7 512-204.8c0-99.4-177.5-182-412.4-200.5zM358.4 307.2c0-84.8 68.8-153.6 153.6-153.6s153.6 68.8 153.6 153.6S596.8 460.8 512 460.8 358.4 392 358.4 307.2z m153.6 512c-197.9 0-358.4-45.8-358.4-102.4 0-46.6 109.6-85.7 258.9-98L512 768l99.5-149.2c149.3 12.4 258.9 51.4 258.9 98 0 56.6-160.5 102.4-358.4 102.4z" fill="#00a2ff" p-id="6344"></path></svg>

+ 1 - 0
src/icons/svgIcon/anticon_user.svg

@@ -0,0 +1 @@
+<svg t="1634822961600" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4224" width="48" height="48"><path d="M512 622.848c60.757333 0 155.221333 19.669333 283.349333 59.136 34.261333 10.581333 57.984 45.568 57.984 85.546667V917.333333H170.666667v-149.76c0-39.936 23.722667-74.965333 57.984-85.504v-0.085333c128.128-39.466667 222.592-59.136 283.349333-59.136zM692.48 388.266667c0 103.253333-81.194667 187.733333-180.48 187.733333-99.285333 0-180.48-84.48-180.48-187.733333zM512 106.666667c18.048 0 36.096 1.877333 54.186667 7.509333V238.08h36.053333V129.194667c64.981333 33.792 108.330667 103.253333 108.330667 183.978666h36.096v37.546667h-469.333334v-37.546667h36.096c0-80.725333 43.349333-150.186667 108.330667-183.978666V238.08h36.096V114.176A179.626667 179.626667 0 0 1 512 106.666667z" fill="#ffffff" p-id="4225"></path></svg>

+ 2 - 0
src/store/index.js

@@ -9,6 +9,7 @@ const modules = {}
 files.keys().forEach((key) => {
   modules[key.replace(/(\.\/|\.js)/g, '')] = files(key).default
 })
+
 Object.keys(modules).forEach((key) => {
   modules[key]['namespaced'] = true
 })
@@ -17,6 +18,7 @@ export default createStore({
   state: {
     query: null,
     siteId: 1, //公共api请求参数->siteId
+    siteList:[],//公共api站点下拉列表存储->siteId
     Time_Data: [], //公共api请求参数->Time_Data
     timearr: [], //公共处理开始时间和结束时间中的时间段天数 值存储
     Time_All: [], //公共时间 返回数组 -> 年月日时分秒 时间戳

+ 19 - 11
src/store/modules/user.js

@@ -70,7 +70,7 @@ const actions = {
    */
   async login({ commit }, userInfo) {
     const { data } = await login(userInfo)
-    const accessToken = data[tokenName]
+    const accessToken = data
     if (accessToken) {
       commit('setAccessToken', accessToken)
       const hour = new Date().getHours()
@@ -78,14 +78,17 @@ const actions = {
         hour < 8
           ? '早上好'
           : hour <= 11
-          ? '上午好'
-          : hour <= 13
-          ? '中午好'
-          : hour < 18
-          ? '下午好'
-          : '晚上好'
+            ? '上午好'
+            : hour <= 13
+              ? '中午好'
+              : hour < 18
+                ? '下午好'
+                : '晚上好'
+
+      title
       notification.open({
-        message: `欢迎登录${title}`,
+        // message: `欢迎登录${title}`,
+        message: `登录成功`,
         description: `${thisTime}!`,
       })
     } else {
@@ -100,16 +103,21 @@ const actions = {
    */
   async getUserInfo({ commit, dispatch, state }) {
     const { data } = await getUserInfo(state.accessToken)
+
     if (!data) {
       message.error(`验证失败,请重新登录...`)
       return false
     }
-    let { username, avatar, roles, ability } = data
-    if (username && roles && Array.isArray(roles)) {
+    // let { username, avatar, roles, ability } = data
+    let { permissions, roles, user, ability } = data
+    permissions
+    let { avatar , userName} = user
+
+    if (userName && roles && Array.isArray(roles)) {
       dispatch('acl/setRole', roles, { root: true })
       if (ability && ability.length > 0)
         dispatch('acl/setAbility', ability, { root: true })
-      commit('setUsername', username)
+      commit('setUsername', userName)
       commit('setAvatar', avatar)
     } else {
       message.error('用户信息接口异常')

+ 10 - 8
src/utils/request.js

@@ -1,6 +1,6 @@
 import axios from 'axios'
 import {
-  baseURL,
+  // baseURL,
   contentType,
   debounce,
   requestTimeout,
@@ -13,7 +13,7 @@ import router from '@/router'
 import { isArray } from '@/utils/validate'
 import { message } from 'ant-design-vue'
 
-console.log(successCode,tokenName)
+// console.log(successCode, tokenName, contentType)
 
 let loadingInstance
 
@@ -27,10 +27,10 @@ const handleCode = (code, msg) => {
   switch (code) {
     case 401:
       message.error(msg || '登录失效')
-      store.dispatch('user/resetAll').catch(() => {})
+      store.dispatch('user/resetAll').catch(() => { })
       break
     case 403:
-      router.push({ path: '/401' }).catch(() => {})
+      router.push({ path: '/401' }).catch(() => { })
       break
     default:
       message.error(msg || `后端接口${code}异常`)
@@ -42,12 +42,13 @@ const handleCode = (code, msg) => {
  * @author chuzhixin 1204505056@qq.com
  * @description axios初始化
  */
+const baseURL = window.PLATFROM_CONFIG.baseUrl
+// console.log(baseURL)
 const instance = axios.create({
   baseURL,
   timeout: requestTimeout,
   headers: {
     'Content-Type': contentType,
-    'Authorization':'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
   },
 })
 
@@ -62,7 +63,7 @@ instance.interceptors.request.use(
     if (
       config.data &&
       config.headers['Content-Type'] ===
-        'application/x-www-form-urlencoded;charset=UTF-8'
+      'application/x-www-form-urlencoded;charset=UTF-8'
     )
       config.data = qs.stringify(config.data)
     if (debounce.some((item) => config.url.includes(item))) {
@@ -83,6 +84,7 @@ instance.interceptors.response.use(
   (response) => {
     if (loadingInstance) loadingInstance.close()
 
+
     const { data, config } = response
     const { code, msg } = data
     // 操作正常Code数组
@@ -90,13 +92,13 @@ instance.interceptors.response.use(
       ? [...successCode]
       : [...[successCode]]
     // 是否操作正常
-    if (codeVerificationArray.includes(code)) {
+    if (codeVerificationArray.includes(parseInt(code))) {
       return data
     } else {
       handleCode(code, msg)
       return Promise.reject(
         'vue-admin-beautiful请求异常拦截:' +
-          JSON.stringify({ url: config.url, code, msg }) || 'Error'
+        JSON.stringify({ url: config.url, code, msg }) || 'Error'
       )
     }
   },

+ 8 - 7
src/views/alarmManage/index.vue

@@ -221,12 +221,12 @@ export default {
     // },
 
     totalNumMax() {
-       return Math.max.apply(
-          Math,
-          this.tableData.map(function (o) {
-            return o.totalNum
-          })
-        )
+      return Math.max.apply(
+        Math,
+        this.tableData.map(function (o) {
+          return o.totalNum
+        })
+      )
     },
     oneAlarmingMax() {
       return Math.max.apply(
@@ -268,7 +268,8 @@ export default {
     },
     //自定义列样式
     cellStyle({ row, column, rowIndex, columnIndex }) {
-      console.log(row, column, rowIndex)
+      row, column, rowIndex 
+      // console.log(row, column, rowIndex)
       if (columnIndex === 0) {
         return `color:#0284E8;cursor:pointer`
       }

+ 9 - 2
src/views/dataManage/demandAnalysis/index.vue

@@ -76,6 +76,7 @@
             "
             :height="Height"
             style="width: 100%"
+            id="tables1"
           >
             <el-table-column prop="date" label="日期" width="" />
             <el-table-column prop="maximum" label="最大需量(kw)" width="110" />
@@ -92,6 +93,7 @@
             "
             :height="Height"
             style="width: 100%"
+            id="tables2"
           >
             <el-table-column prop="date" label="日期" width="" />
             <el-table-column prop="maximum" label="最大需量(kw)" width="110" />
@@ -127,9 +129,9 @@ export default defineComponent({
     })
 
     const Height = ref()
-    Height.value = window.innerHeight - 240 + 'px'
+    Height.value = window.innerHeight - 250 + 'px'
     window.onresize = function () {
-      Height.value = window.innerHeight - 240 + 'px'
+      Height.value = window.innerHeight - 250 + 'px'
     }
 
     return {
@@ -410,4 +412,9 @@ export default defineComponent({
     }
   }
 }
+</style>
+<style>
+.el-table--scrollable-y .el-table__body-wrapper::-webkit-scrollbar{
+  overflow-y: hidden;
+}
 </style>

+ 74 - 48
src/views/deviceManage/powerEquip/channelList/index.vue

@@ -16,8 +16,9 @@
           icon="el-icon-plus"
           type="success"
           @click="Insert()"
-          >添加通道</el-button
         >
+          添加通道
+        </el-button>
       </div>
     </div>
 
@@ -36,8 +37,9 @@
         border
         stripe
         :header-cell-style="headClass"
+        :height="Height"
       >
-        <el-table-column fixed prop="stationStatus" label="状态" width="50">
+        <el-table-column prop="stationStatus" label="状态" width="50">
           <template #default="scope">
             <el-avatar
               class="status"
@@ -50,36 +52,59 @@
           </template>
         </el-table-column>
 
-        <el-table-column prop="channelName" label="通信名称" width="">
-        </el-table-column>
-        <el-table-column prop="netNumber" label="网络卡号" width="">
-        </el-table-column>
-        <el-table-column prop="netDeadline" label="网络截止时间" width="">
-        </el-table-column>
-        <el-table-column prop="accessMode" label="接入方式" width="">
-        </el-table-column>
-        <el-table-column prop="channelIP" label="通道IP:端口号" width="">
-        </el-table-column>
-        <el-table-column prop="regCode" label="注册码" width="">
-        </el-table-column>
-        <el-table-column prop="reportingAdd" label="上报地址:端口" width="">
-        </el-table-column>
-        <el-table-column fixed="right" label="操作" width="100">
+        <el-table-column
+          prop="channelName"
+          label="通信名称"
+          width=""
+        ></el-table-column>
+        <el-table-column
+          prop="netNumber"
+          label="网络卡号"
+          width=""
+        ></el-table-column>
+        <el-table-column
+          prop="netDeadline"
+          label="网络截止时间"
+          width=""
+        ></el-table-column>
+        <el-table-column
+          prop="accessMode"
+          label="接入方式"
+          width=""
+        ></el-table-column>
+        <el-table-column
+          prop="channelIP"
+          label="通道IP:端口号"
+          width=""
+        ></el-table-column>
+        <el-table-column
+          prop="regCode"
+          label="注册码"
+          width=""
+        ></el-table-column>
+        <el-table-column
+          prop="reportingAdd"
+          label="上报地址:端口"
+          width=""
+        ></el-table-column>
+        <el-table-column label="操作" width="150">
           <template #default="scope">
             <el-button
               type="text"
               size="small"
               style="color: #409eff"
               @click.prevent="Details(scope.row)"
-              >详情</el-button
             >
+              详情
+            </el-button>
             <el-button
               @click="Delete(scope.$index, scope.row)"
               type="text"
               size="small"
               style="color: red"
-              >删除</el-button
             >
+              删除
+            </el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -93,20 +118,21 @@
           @size-change="handleSizeChange"
           @current-change="handleCurrentChange"
           background
-        >
-        </el-pagination>
+        ></el-pagination>
       </div>
     </div>
     <div></div>
   </div>
 </template>
 <script>
-import { defineComponent, ref } from "vue";
+import { defineComponent, ref } from 'vue'
 
 export default defineComponent({
-  name: "powerEquip",
+  name: 'powerEquip',
   components: {},
-  props: {},
+  props: {
+    Height: String,
+  },
   data() {
     return {
       deviceNumData: [],
@@ -114,55 +140,55 @@ export default defineComponent({
       tableData: [
         {
           stationStatus: 0,
-          channelName: "上海美争企业发展有限公司",
-          netNumber: "89860426102070967305",
-          netDeadline: "",
-          accessMode: "拨号",
-          channelIP: "",
-          regCode: "DA00023997",
-          reportingAdd: "139.196.33.250:2404",
+          channelName: '上海美争企业发展有限公司',
+          netNumber: '89860426102070967305',
+          netDeadline: '',
+          accessMode: '拨号',
+          channelIP: '',
+          regCode: 'DA00023997',
+          reportingAdd: '139.196.33.250:2404',
         },
         {
           stationStatus: 1,
-          channelName: "上海美争企业发展有限公司",
-          netNumber: "89860426102070967305",
-          netDeadline: "",
-          accessMode: "拨号",
-          channelIP: "",
-          regCode: "DA00023997",
-          reportingAdd: "139.196.33.250:2404",
+          channelName: '上海美争企业发展有限公司',
+          netNumber: '89860426102070967305',
+          netDeadline: '',
+          accessMode: '拨号',
+          channelIP: '',
+          regCode: 'DA00023997',
+          reportingAdd: '139.196.33.250:2404',
         },
       ],
-      activeName: "powerEquip",
-      filterText: "",
+      activeName: 'powerEquip',
+      filterText: '',
       currentPage: ref(15),
-    };
+    }
   },
   methods: {
     //新增
     Insert() {
-      console.log("");
+      console.log('')
     },
     // 表头样式设置
     headClass() {
-      return "background:#FAFAFA !important;color: black;";
+      return 'background:#FAFAFA !important;color: black;'
     },
     //详情
     Details(row) {
-      console.log(row);
+      console.log(row)
     },
     //删除
     Delete(ind, row) {
-      console.log(ind, row);
+      console.log(ind, row)
     },
     handleSizeChange(val) {
-      console.log(`${val} items per page`);
+      console.log(`${val} items per page`)
     },
     handleCurrentChange(val) {
-      console.log(`current page: ${val}`);
+      console.log(`current page: ${val}`)
     },
   },
-});
+})
 </script>
 
 <style lang="scss" scoped>

+ 81 - 54
src/views/deviceManage/powerEquip/communicateEquip/index.vue

@@ -16,8 +16,9 @@
           icon="el-icon-plus"
           type="success"
           @click="Insert()"
-          >新增</el-button
         >
+          新增
+        </el-button>
       </div>
 
       <div class="comRight">
@@ -41,8 +42,9 @@
         border
         stripe
         :header-cell-style="headClass"
+        :height="Height"
       >
-        <el-table-column fixed prop="stationStatus" label="状态" width="50">
+        <el-table-column prop="stationStatus" label="状态" width="50">
           <template #default="scope">
             <el-avatar
               class="status"
@@ -55,38 +57,64 @@
           </template>
         </el-table-column>
 
-        <el-table-column prop="deviceName" label="通信设备名称" width="">
-        </el-table-column>
-        <el-table-column prop="deviceCode" label="设备编号" width="">
-        </el-table-column>
-        <el-table-column prop="deviceSite" label="所属站点" width="">
-        </el-table-column>
-        <el-table-column prop="offlineTime" label="上次离线时间" width="">
-        </el-table-column>
-        <el-table-column prop="onlineTime" label="上次在线时间" width="">
-        </el-table-column>
-        <el-table-column prop="offlineDuration" label="离线时长" width="">
-        </el-table-column>
-        <el-table-column prop="onlineDuration" label="在线时长" width="">
-        </el-table-column>
-        <el-table-column prop="deviceAdd" label="设备地址" width="">
-        </el-table-column>
-        <el-table-column fixed="right" label="操作" width="100">
+        <el-table-column
+          prop="deviceName"
+          label="通信设备名称"
+          width="150"
+        ></el-table-column>
+        <el-table-column
+          prop="deviceCode"
+          label="设备编号"
+          width=""
+        ></el-table-column>
+        <el-table-column
+          prop="deviceSite"
+          label="所属站点"
+          width=""
+        ></el-table-column>
+        <el-table-column
+          prop="offlineTime"
+          label="上次离线时间"
+          width=""
+        ></el-table-column>
+        <el-table-column
+          prop="onlineTime"
+          label="上次在线时间"
+          width=""
+        ></el-table-column>
+        <el-table-column
+          prop="offlineDuration"
+          label="离线时长"
+          width=""
+        ></el-table-column>
+        <el-table-column
+          prop="onlineDuration"
+          label="在线时长"
+          width=""
+        ></el-table-column>
+        <el-table-column
+          prop="deviceAdd"
+          label="设备地址"
+          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>
             <el-button
               @click="Delete(scope.$index, scope.row)"
               type="text"
               size="small"
               style="color: red"
-              >删除</el-button
             >
+              删除
+            </el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -100,77 +128,78 @@
           @size-change="handleSizeChange"
           @current-change="handleCurrentChange"
           background
-        >
-        </el-pagination>
+        ></el-pagination>
       </div>
     </div>
     <div></div>
   </div>
 </template>
 <script>
-import { defineComponent, ref } from "vue";
+import { defineComponent, ref } from 'vue'
 
 export default defineComponent({
-  name: "powerEquip",
+  name: 'powerEquip',
   components: {},
-  props: {},
+  props: {
+    Height: String,
+  },
   data() {
     return {
       deviceNumData: [],
       tableData: [
         {
           stationStatus: 0,
-          deviceName: "测试设备",
-          deviceCode: "cssb1",
-          deviceSite: "站点1",
-          offlineTime: "2021-1-1 00:00:00",
-          onlineTime: "2021-2-1 00:00:00",
-          offlineDuration: "180天",
-          onlineDuration: "180天",
-          deviceAdd: "徐乐路208号",
+          deviceName: '测试设备',
+          deviceCode: 'cssb1',
+          deviceSite: '站点1',
+          offlineTime: '2021-1-1 00:00:00',
+          onlineTime: '2021-2-1 00:00:00',
+          offlineDuration: '180天',
+          onlineDuration: '180天',
+          deviceAdd: '徐乐路208号',
         },
         {
           stationStatus: 1,
-          deviceName: "测试设备",
-          deviceCode: "cssb1",
-          deviceSite: "站点1",
-          offlineTime: "2021-1-1 00:00:00",
-          onlineTime: "2021-2-1 00:00:00",
-          offlineDuration: "180天",
-          onlineDuration: "180天",
-          deviceAdd: "徐乐路208号",
+          deviceName: '测试设备',
+          deviceCode: 'cssb1',
+          deviceSite: '站点1',
+          offlineTime: '2021-1-1 00:00:00',
+          onlineTime: '2021-2-1 00:00:00',
+          offlineDuration: '180天',
+          onlineDuration: '180天',
+          deviceAdd: '徐乐路208号',
         },
       ],
-      activeName: "powerEquip",
-      filterText: "",
+      activeName: 'powerEquip',
+      filterText: '',
       currentPage: ref(15),
-    };
+    }
   },
   methods: {
     //新增
     Insert() {
-      console.log("");
+      console.log('')
     },
     // 表头样式设置
     headClass() {
-      return "background:#FAFAFA !important;color: black;";
+      return 'background:#FAFAFA !important;color: black;'
     },
     //修改
     Update(row) {
-      console.log(row);
+      console.log(row)
     },
     //删除
     Delete(ind, row) {
-      console.log(ind, row);
+      console.log(ind, row)
     },
     handleSizeChange(val) {
-      console.log(`${val} items per page`);
+      console.log(`${val} items per page`)
     },
     handleCurrentChange(val) {
-      console.log(`current page: ${val}`);
+      console.log(`current page: ${val}`)
     },
   },
-});
+})
 </script>
 
 <style lang="scss" scoped>
@@ -222,8 +251,6 @@ export default defineComponent({
   }
 }
 
-
-
 .listPagination {
   margin-top: 15px;
   float: right;

+ 274 - 152
src/views/deviceManage/powerEquip/deviceDetails.vue

@@ -1,79 +1,114 @@
 <template>
   <el-table
     :data="
-      device_NumData.filter(
+      deviceNumData.filter(
         (data) =>
           !filter_Text ||
-          data.deviceName.toLowerCase().includes(filter_Text.toLowerCase()) ||
-          data.deviceCode.toLowerCase().includes(filter_Text.toLowerCase())
+          data.monitorDeviceName
+            .toLowerCase()
+            .includes(filter_Text.toLowerCase()) ||
+          data.monitorDeviceCode
+            .toLowerCase()
+            .includes(filter_Text.toLowerCase())
       )
     "
     border
     stripe
     :header-cell-style="headClass"
+    :height="Height"
   >
-    <el-table-column prop="stationStatus" label="状态" width="50">
+    <el-table-column prop="status" label="状态" width="50">
       <template #default="scope">
         <el-avatar
           class="status"
           :style="
-            scope.row.stationStatus == 0
+            scope.row.status == 0
               ? 'background-color:red'
               : 'background-color:#04F21C'
           "
         ></el-avatar>
       </template>
     </el-table-column>
-    <el-table-column prop="deviceName" label="电力监测设备名称" width="">
-    </el-table-column>
-    <el-table-column prop="deviceCode" label="设备编号" width="">
-    </el-table-column>
-    <el-table-column prop="location" label="所属地点" width="">
-    </el-table-column>
-    <el-table-column prop="ratedVoltage" label="额定电压" width="">
-    </el-table-column>
-    <el-table-column prop="ratedCurrent" label="额定电流" width="">
-    </el-table-column>
-    <el-table-column prop="currentLoRaTh" label="电流负载率门限" width="">
-    </el-table-column>
-    <el-table-column prop="powerQuAn" label="电能质量分析" width="">
-    </el-table-column>
-    <el-table-column prop="meterAddress" label="表计地址" width="">
-    </el-table-column>
-    <el-table-column fixed="right" label="操作" width="">
+    <el-table-column
+      prop="monitorDeviceName"
+      label="监控设备名称"
+      width=""
+    ></el-table-column>
+    <el-table-column
+      prop="monitorDeviceCode"
+      label="监控设备编号"
+      width=""
+    ></el-table-column>
+    <el-table-column
+      prop="loopMeterAddress"
+      label="回路表计地址"
+      width=""
+    ></el-table-column>
+    <el-table-column
+      prop="ratedVoltage"
+      label="额定电压"
+      width=""
+    ></el-table-column>
+    <el-table-column
+      prop="ratedCurrent"
+      label="额定电流"
+      width=""
+    ></el-table-column>
+    <el-table-column
+      prop="currentLoadRate"
+      label="电流负载率门限"
+      width=""
+    ></el-table-column>
+    <el-table-column
+      prop="qualityAnalysis"
+      label="电能质量分析"
+      width=""
+    ></el-table-column>
+    <el-table-column fixed="right" label="操作" width="150">
       <template #default="scope">
         <el-button
           type="text"
           size="small"
           style="color: #409eff"
           @click.prevent="editRow(scope.row)"
-          >编辑</el-button
         >
-        <el-button
-          @click="handleDelete(scope.$index, scope.row)"
-          type="text"
-          size="small"
-          style="color: red"
-          >删除</el-button
+          编辑
+        </el-button>
+        <el-popconfirm
+          confirm-button-text="是"
+          cancel-button-text="否"
+          icon="el-icon-info"
+          icon-color="red"
+          title="确定删除?"
+          @confirm="confirmEvent(scope.row)"
+          @cancel="cancelEvent"
         >
+          <template #reference>
+            <el-button type="text" size="small" style="color: red">
+              删除
+            </el-button>
+          </template>
+        </el-popconfirm>
       </template>
     </el-table-column>
-    <el-table-column fixed="right" label="变量" width="">
+    <el-table-column fixed="right" label="变量" width="180">
       <template #default="scope">
         <el-button
           type="text"
           size="small"
           style="color: #409eff"
           @click.prevent="variableList(scope.row)"
-          >变量列表</el-button
         >
+          变量列表
+        </el-button>
         <el-button
           @click="clone(scope.$index, scope.row)"
           type="text"
           size="small"
           style="color: #409eff"
-          >克隆</el-button
         >
+          克隆
+        </el-button>
       </template>
     </el-table-column>
   </el-table>
@@ -83,12 +118,11 @@
       :page-sizes="[15, 20, 25, 30]"
       :page-size="15"
       layout="total, sizes, prev, pager, next, jumper"
-      :total="device_NumData.length"
+      :total="deviceNumData.length"
       @size-change="handleSizeChange1"
       @current-change="handleCurrentChange1"
       background
-    >
-    </el-pagination>
+    ></el-pagination>
   </div>
 
   <!-- 克隆 -->
@@ -99,14 +133,19 @@
     :before-close="cloneHandleClose"
   >
     <div class="dialogOne">
-      <div>克隆设备对象: <span>183</span></div>
+      <div>
+        克隆设备对象:
+        <span>183</span>
+      </div>
       <div class="content">
-        <span>* </span>变量克隆至:
+        <span>*</span>
+        变量克隆至:
         <el-radio v-model="cloneRadio" label="1">新设备</el-radio>
         <el-radio v-model="cloneRadio" label="2">已有设备</el-radio>
       </div>
       <div class="content">
-        <span>* </span>设备名:
+        <span>*</span>
+        设备名:
         <el-input
           class="inputer"
           v-model="cloneInputName"
@@ -122,7 +161,8 @@
         />
       </div>
       <div class="content">
-        <span>* </span>模拟量:
+        <span>*</span>
+        模拟量:
         <el-input
           class="inputer"
           v-model="cloneInputModel"
@@ -206,20 +246,45 @@
           sortable
           width=""
         ></el-table-column>
-        <el-table-column prop="varName" label="变量名" sortable width="">
-        </el-table-column>
-        <el-table-column prop="varCoding" label="变量编码" sortable width="">
-        </el-table-column>
-        <el-table-column prop="signalDevice" label="通信设备" sortable width="">
-        </el-table-column>
-        <el-table-column prop="dataAdd" label="数据地址" sortable width="">
-        </el-table-column>
-        <el-table-column prop="dataType" label="数据类型" width="">
-        </el-table-column>
-        <el-table-column prop="coefficient" label="系数" width="">
-        </el-table-column>
-        <el-table-column prop="saveCycle" label="存盘周期" width="">
-        </el-table-column>
+        <el-table-column
+          prop="varName"
+          label="变量名"
+          sortable
+          width=""
+        ></el-table-column>
+        <el-table-column
+          prop="varCoding"
+          label="变量编码"
+          sortable
+          width=""
+        ></el-table-column>
+        <el-table-column
+          prop="signalDevice"
+          label="通信设备"
+          sortable
+          width=""
+        ></el-table-column>
+        <el-table-column
+          prop="dataAdd"
+          label="数据地址"
+          sortable
+          width=""
+        ></el-table-column>
+        <el-table-column
+          prop="dataType"
+          label="数据类型"
+          width=""
+        ></el-table-column>
+        <el-table-column
+          prop="coefficient"
+          label="系数"
+          width=""
+        ></el-table-column>
+        <el-table-column
+          prop="saveCycle"
+          label="存盘周期"
+          width=""
+        ></el-table-column>
         <el-table-column fixed="right" label="操作" width="">
           <template #default="scope">
             <el-button
@@ -227,15 +292,17 @@
               size="small"
               style="color: #409eff"
               @click.prevent="listUpdate(scope.row)"
-              >修改</el-button
             >
+              修改
+            </el-button>
             <el-button
               @click="listDelete(scope.$index, scope.row)"
               type="text"
               size="small"
               style="color: red"
-              >删除</el-button
             >
+              删除
+            </el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -250,8 +317,7 @@
           @size-change="handleSizeChange"
           @current-change="handleCurrentChange"
           background
-        >
-        </el-pagination>
+        ></el-pagination>
       </div>
     </div>
     <template #footer>
@@ -263,24 +329,26 @@
 </template>
 
 <script>
-import { defineComponent, ref } from "vue";
-// import { ElMessageBox } from "element-plus";
+import { useStore } from 'vuex'
+import { defineComponent, onMounted, ref, watchEffect } from 'vue'
+import * as api from '@/api/deviceManage/powerEquip/deviceAttribute'
+import { ElMessage } from 'element-plus'
 
 //克隆弹窗基础数据定义
 const cloneData = () => {
-  const cloneDialog = ref(false); //克隆弹窗控制
-  const cloneChecked = ref(false); //克隆复选框控制
-  const cloneRadio = ref("1"); //克隆单选框控制
-  const cloneInputName = ref(""); //克隆input名
-  const cloneInputCode = ref(""); //克隆input编号
-  const cloneInputModel = ref(""); //克隆input模拟量
-  const cloneInputState = ref(""); //克隆input状态量
+  const cloneDialog = ref(false) //克隆弹窗控制
+  const cloneChecked = ref(false) //克隆复选框控制
+  const cloneRadio = ref('1') //克隆单选框控制
+  const cloneInputName = ref('') //克隆input名
+  const cloneInputCode = ref('') //克隆input编号
+  const cloneInputModel = ref('') //克隆input模拟量
+  const cloneInputState = ref('') //克隆input状态量
 
   //克隆弹窗控制方法回调
   const cloneHandleClose = (done) => {
-    done();
+    done()
     //   ElMessageBox.confirm("确定要关闭弹出?").then(() => { done();}).catch(() => {// catch error});
-  };
+  }
   return {
     cloneDialog,
     cloneChecked,
@@ -290,54 +358,34 @@ const cloneData = () => {
     cloneHandleClose,
     cloneInputModel,
     cloneInputState,
-  };
-};
+  }
+}
 //变量列表弹窗基础数据定义
 const listData = () => {
-  const listDialog = ref(false);
-  const listTitleDialog = ref();
+  const listDialog = ref(false)
+  const listTitleDialog = ref()
   const listHandleClose = (done) => {
-    done();
-  };
-  const listTabPosition = ref("model");
+    done()
+  }
+  const listTabPosition = ref('model')
 
-  return { listDialog, listHandleClose, listTitleDialog, listTabPosition };
-};
+  return { listDialog, listHandleClose, listTitleDialog, listTabPosition }
+}
 
 export default defineComponent({
-  name: "powerEquip",
+  name: 'powerEquip',
   components: {},
+  emits: ['updateRow'],
   props: {
-    device_NumData: Object,
     filter_Text: String,
+    Height: String,
+    refresh: Boolean,
   },
-  data() {
-    return {
-      listInputText: "", //变量列表input搜索框
-      multipleSelection: [], //变量列表弹窗复选框值存储
-      listNumberData: [
-        {
-          varName: "A相电压",
-          varCoding: "bgbsk_183_Us",
-          signalDevice: "嘉定区竞园新区六里村委(综合用房)",
-          dataAdd: "YC[o]",
-          dataType: "4字节浮点4321",
-          coefficient: 0.001,
-          saveCycle: "5分钟",
-        },
-        {
-          varName: "A相电压",
-          varCoding: "bgbsk_183_Us",
-          signalDevice: "嘉定区竞园新区六里村委(综合用房)",
-          dataAdd: "YC[o]",
-          dataType: "4字节浮点4321",
-          coefficient: 0.001,
-          saveCycle: "5分钟",
-        },
-      ], //变量列表弹窗table值存储
-    };
-  },
-  setup() {
+  setup(props, { emit }) {
+    const store = useStore()
+    const deviceNumData = ref([]);//列表查询值存储
+    const multipleSelection=ref([]);//变量列表弹窗复选框值存储
+
     const {
       cloneDialog,
       cloneChecked,
@@ -347,26 +395,110 @@ export default defineComponent({
       cloneHandleClose,
       cloneInputModel,
       cloneInputState,
-    } = cloneData();
+    } = cloneData()
 
     const { listDialog, listHandleClose, listTitleDialog, listTabPosition } =
-      listData();
+      listData()
+
+    //变量列表弹窗table 复选框change事件
+    const listSelectionChange = (val) => {
+      multipleSelection.value = val
+    }
+    //变量列表弹窗tabs切换change事件
+    const listTabsChange = (value) => {
+      console.log(value)
+    }
+
+    //变量列表
+    const variableList = (row) => {
+      listTitleDialog.value = 183
+      listDialog.value = true
+      console.log(row)
+    }
+    //克隆
+    const clone = (index, row) => {
+      this.cloneDialog = true
+      console.log(index, row)
+    }
+
+    //是否删除  ---- 是
+    const confirmEvent = (row) => {
+      handleDelete(row)
+    }
+    //是否删除  ---- 否
+    const cancelEvent = () => {
+      console.log('cancel!')
+    }
+    //查询
+    function listSelect() {
+      api.deviceNewsList({ siteId: store.state.siteId }).then((requset) => {
+        if (requset.status === 'SUCCESS') {
+          deviceNumData.value = requset.data
+        } else {
+          ElMessage.error(requset.msg)
+        }
+      })
+    }
+    //删除
+    const handleDelete = (row) => {
+      api.deviceNewsDel({ id: row.id }).then((requset) => {
+        if (requset.status === 'SUCCESS') {
+          ElMessage.success({
+            message: '删除成功',
+            type: 'success',
+          })
+          listSelect()
+        } else {
+          ElMessage.error(requset.msg)
+        }
+      })
+    }
+    //编辑
+    const editRow = (row) => {
+      emit('updateRow', row)
+      listSelect()
+    }
+
+    watchEffect((fn, options) => {
+      fn, options
+      if (props.refresh == true) {
+        listSelect()
+      }
+    })
+
+    onMounted(() => {
+      listSelect()
+    })
+    // 表头样式设置
+    const headClass = () => {
+      return 'background:#FAFAFA !important;color: black;'
+    }
 
     const handleSizeChange = (val) => {
-      console.log(`${val} items per page`);
-    };
+      console.log(`${val} items per page`)
+    }
     const handleCurrentChange = (val) => {
-      console.log(`current page: ${val}`);
-    };
+      console.log(`current page: ${val}`)
+    }
 
     const handleSizeChange1 = (val) => {
-      console.log(`${val} items per page`);
-    };
+      console.log(`${val} items per page`)
+    }
     const handleCurrentChange1 = (val) => {
-      console.log(`current page: ${val}`);
-    };
-
+      console.log(`current page: ${val}`)
+    }
     return {
+      headClass,
+      clone, //克隆按钮事件
+      variableList, //变量列表按钮事件
+      editRow, //编辑按钮事件
+      handleDelete, //删除按钮事件
+      listSelectionChange, //变量列表
+      listTabsChange, //变量列表tabs切换
+      deviceNumData, //列表查询值存储
+      confirmEvent, //确定是否删除事件
+      cancelEvent,
+
       cloneDialog,
       cloneChecked,
       cloneHandleClose,
@@ -386,42 +518,32 @@ export default defineComponent({
       handleCurrentChange,
       handleSizeChange1,
       handleCurrentChange1,
-    };
-  },
-  methods: {
-    //变量列表弹窗table 复选框change事件
-    listSelectionChange(val) {
-      this.multipleSelection = val;
-    },
-    //变量列表弹窗tabs切换change事件
-    listTabsChange(value) {
-      console.log(value);
-    },
-    //编辑
-    editRow(row) {
-      console.log(row);
-    },
-    //删除
-    handleDelete(index, row) {
-      console.log(index, row);
-    },
-    //变量列表
-    variableList(row) {
-      this.listTitleDialog = 183;
-      this.listDialog = true;
-      console.log(row);
-    },
-    //克隆
-    clone(index, row) {
-      this.cloneDialog = true;
-      console.log(index, row);
-    },
-    // 表头样式设置
-    headClass() {
-      return "background:#FAFAFA !important;color: black;";
-    },
+
+      listInputText: ref(''), //变量列表input搜索框
+      multipleSelection, //变量列表弹窗复选框值存储
+      listNumberData: ref([
+        {
+          varName: 'A相电压',
+          varCoding: 'bgbsk_183_Us',
+          signalDevice: '嘉定区竞园新区六里村委(综合用房)',
+          dataAdd: 'YC[o]',
+          dataType: '4字节浮点4321',
+          coefficient: 0.001,
+          saveCycle: '5分钟',
+        },
+        {
+          varName: 'A相电压',
+          varCoding: 'bgbsk_183_Us',
+          signalDevice: '嘉定区竞园新区六里村委(综合用房)',
+          dataAdd: 'YC[o]',
+          dataType: '4字节浮点4321',
+          coefficient: 0.001,
+          saveCycle: '5分钟',
+        },
+      ]), //变量列表弹窗table值存储
+    }
   },
-});
+})
 </script>
 
 <style lang="scss" scoped>

+ 102 - 150
src/views/deviceManage/powerEquip/index.vue

@@ -3,7 +3,6 @@
     <el-tabs
       v-model="activeName"
       type="card"
-      @tab-click="handleClick"
       style="background-color: #fff; height: 100%"
       class="tabsSizeColor"
     >
@@ -14,12 +13,12 @@
               <el-button
                 class="goBack"
                 @click="goBack"
-                v-if="deviceNumData.length > 0"
+                v-if="deviceNumData.length != ''"
               >
                 返回
               </el-button>
               <span class="firstTopLeftTitle">
-                {{ deviceNumData.length > 0 ? '设备或编号' : '厂家或型号' }}:
+                {{ deviceNumData.length != '' ? '设备或编号' : '名称或地址' }}:
               </span>
               <el-input
                 placeholder="输入关键字进行过滤"
@@ -41,16 +40,16 @@
             </div>
           </div>
 
-          <div class="firstContent" v-if="deviceNumData.length <= 0">
+          <div class="firstContent" v-if="deviceNumData.length == ''">
             <el-table
               :data="
                 tableData.filter(
                   (data) =>
                     !filterText ||
-                    data.manufactor
+                    data.siteName
                       .toLowerCase()
                       .includes(filterText.toLowerCase()) ||
-                    data.deviceModel
+                    data.siteAddress
                       .toLowerCase()
                       .includes(filterText.toLowerCase())
                 )
@@ -61,53 +60,49 @@
               :height="Height"
             >
               <el-table-column
-                fixed
-                prop="manufactor"
-                label="厂家"
+                prop="siteName"
+                label="站点名称"
                 width=""
               ></el-table-column>
               <el-table-column
-                prop="deviceModel"
-                label="型号"
+                prop="siteAddress"
+                label="站点地址"
                 width=""
               ></el-table-column>
-              <el-table-column prop="deviceNum" label="设备数量" width="">
+              <el-table-column
+                prop="userName"
+                label="联系人"
+                width=""
+              ></el-table-column>
+              <el-table-column
+                prop="phone"
+                label="手机号"
+                width=""
+              ></el-table-column>
+              <el-table-column prop="deviceCount" label="设备数量" width="">
                 <template #default="scope">
                   <div
                     style="margin-right: 15px; cursor: pointer; color: #409eff"
-                    @click="deviceNumSelect({ id: scope.row.manufactor })"
+                    @click="
+                      deviceNumSelect({
+                        id: scope.row.id,
+                        deviceCount: scope.row.deviceCount,
+                      })
+                    "
                   >
-                    {{ scope.row.deviceNum }}
+                    {{ scope.row.deviceCount }}
                   </div>
                 </template>
               </el-table-column>
-              <el-table-column fixed="right" label="操作" width="250">
-                <template #default="scope">
-                  <el-button
-                    type="text"
-                    size="small"
-                    style="color: #409eff"
-                    @click.prevent="update(scope.row)"
-                  >
-                    编辑
-                  </el-button>
-                  <el-button
-                    @click="handleDelete(scope.$index, scope.row)"
-                    type="text"
-                    size="small"
-                    style="color: red"
-                  >
-                    删除
-                  </el-button>
-                </template>
-              </el-table-column>
             </el-table>
           </div>
 
-          <div class="firstContent" v-if="deviceNumData.length > 0">
+          <div class="firstContent" v-if="deviceNumData.length != ''">
             <deviceDetails
-              :device_NumData="deviceNumData"
               :filter_Text="filterText"
+              :Height="Height"
+              :refresh="refresh"
+              @updateRow="update"
             ></deviceDetails>
           </div>
 
@@ -115,31 +110,36 @@
           <insert-Dialog
             :flag="show"
             :data_list="datalist"
+            :deviceNumDataContent="deviceNumData"
             :updateTitle="updateTitle"
             @show="showValue"
           ></insert-Dialog>
         </div>
       </el-tab-pane>
       <el-tab-pane label="视频监测设备" name="videoEquip">
-        <video-Equip></video-Equip>
+        <video-Equip :Height="Height"></video-Equip>
       </el-tab-pane>
       <el-tab-pane label="通信设备" name="communicateEquip">
-        <communicate-Equip></communicate-Equip>
+        <communicate-Equip :Height="Height"></communicate-Equip>
       </el-tab-pane>
       <el-tab-pane label="通道列表" name="channelList">
-        <channel-List></channel-List>
+        <channel-List :Height="Height"></channel-List>
       </el-tab-pane>
     </el-tabs>
   </div>
 </template>
 <script>
-import { defineComponent, ref, reactive } from 'vue'
+import { useStore } from 'vuex'
+import { defineComponent, ref, reactive, onMounted } from 'vue'
 import deviceDetails from './deviceDetails.vue'
 import videoEquip from './videoEquip/index.vue'
 import insertDialog from './powerDialog/insertDialog.vue'
 import communicateEquip from './communicateEquip/index.vue'
 import channelList from './channelList/index.vue'
 
+import * as api from '@/api/deviceManage/powerEquip/deviceAttribute'
+import { ElMessage } from 'element-plus'
+
 export default defineComponent({
   name: 'powerEquip',
   components: {
@@ -157,151 +157,105 @@ export default defineComponent({
     }
   },
   setup() {
-    const deviceNumData = ref([])
-    const tableData = ref([
-      {
-        manufactor: '上海永天科技股份有限公司',
-        deviceModel: '测试设备',
-        deviceNum: '8',
-      },
-      {
-        manufactor: '上海永天科技股份有限公司',
-        deviceModel: '测试设备',
-        deviceNum: '8',
-      },
-      {
-        manufactor: '海永天科技股份有限公司',
-        deviceModel: '试设备1',
-        deviceNum: '8',
-      },
-      {
-        manufactor: '上海永天科技股份有限公司',
-        deviceModel: '测试设备',
-        deviceNum: '8',
-      },
-      {
-        manufactor: '上海永天科技股份有限公司',
-        deviceModel: '测试设备',
-        deviceNum: '8',
-      },
-      {
-        manufactor: '上海永天科技股份有限公司',
-        deviceModel: '测试设备',
-        deviceNum: '8',
-      },
-      {
-        manufactor: '上海永天科技股份有限公司',
-        deviceModel: '测试设备',
-        deviceNum: '8',
-      },
-      {
-        manufactor: '上海永天科技股份有限公司',
-        deviceModel: '测试设备',
-        deviceNum: '8',
-      },
-    ])
+    const store = useStore()
+    const tableData = ref([])
+    const deviceNumData = ref('') //判断设备列表详情是否显示
+    const refresh = ref(false) //设备列表详情table 是否重新调用
     const activeName = ref('powerEquip')
     const filterText = ref('')
     const show = ref(false)
     const updateTitle = ref('')
 
-    const deviceNumSelect = (data) => {
-      data
-      // console.log(data);
-      filterText.value = ''
-
-      deviceNumData.value = [
-        {
-          stationStatus: 0,
-          deviceName: '测试设备',
-          deviceCode: 'cubbs',
-          location: '站点1',
-          ratedVoltage: 10,
-          ratedCurrent: 58,
-          currentLoRaTh: 80,
-          powerQuAn: '开启',
-          meterAddress: '1',
-        },
-        {
-          stationStatus: 1,
-          deviceName: '测试设备',
-          deviceCode: 'cubbs',
-          location: '站点1',
-          ratedVoltage: 10,
-          ratedCurrent: 58,
-          currentLoRaTh: 80,
-          powerQuAn: '开启',
-          meterAddress: '1',
-        },
-      ]
-    }
-
     const datalist = reactive([])
-
+    //新增 向子组件 参数传递
     const addItem = () => {
+      refresh.value = false
       datalist.value = [
         {
-          id: '',
-          stationName: '',
-          stationCode: '',
-          stationAddress: '',
-          siteList: [],
-          done: '',
-          guaZai: '',
-          deviceAbty: true,
+          monitorDeviceCode: '',
+          monitorDeviceName: '',
+          loopMeterAddress: 1,
+          ratedVoltage: null,
+          ratedCurrent: 1,
+          currentLoadRate: 0,
+          siteId: '',
+          variableListId: 0,
+          qualityAnalysis: true,
         },
       ]
+      if (deviceNumData.value.length > 0) {
+        datalist.value[0].siteId = store.state.siteId
+      }
       updateTitle.value = '新增设备信息'
       show.value = true
     }
-
+    //修改 向子组件 参数传递
     const update = (row) => {
-      console.log(row)
       datalist.value = [
         {
-          id: '',
-          stationName: '',
-          stationCode: '',
-          stationAddress: '',
-          siteList: [],
-          done: '',
-          guaZai: '',
-          deviceAbty: true,
+          monitorDeviceCode: row.monitorDeviceCode,
+          monitorDeviceName: row.monitorDeviceName,
+          loopMeterAddress: row.loopMeterAddress,
+          ratedVoltage: row.ratedVoltage,
+          ratedCurrent: row.ratedCurrent,
+          currentLoadRate: row.currentLoadRate,
+          siteId: row.siteId,
+          variableListId: row.variableListId,
+          qualityAnalysis: row.qualityAnalysis === '是' ? true : false,
         },
       ]
       updateTitle.value = '修改设备信息'
       show.value = true
     }
-
-    const handleDelete = (ind, row) => {
-      console.log(ind, row)
+    //点击事件 查询设备详情
+    const deviceNumSelect = (data) => {
+      filterText.value = ''
+      if (data.deviceCount != null && data.deviceCount != '') {
+        store.state.siteId = data.id
+        deviceNumData.value = JSON.stringify(data.id)
+      } else {
+        ElMessage({
+          message: '此站点下暂无设备',
+          type: 'warning',
+        })
+      }
     }
-
+    //电力监测设备列表
+    function monitorDeviceList() {
+      api.monitorDeviceList({}).then((requset) => {
+        if (requset.status === 'SUCCESS') {
+          tableData.value = requset.data
+          store.state.siteList = tableData
+        } else {
+          ElMessage.error(requset.msg)
+        }
+      })
+    }
+    //新增弹窗控制
     const showValue = (value) => {
       show.value = value
+      deviceNumData.value != '' ? (refresh.value = true) : monitorDeviceList()
     }
-
     //返回
     const goBack = () => {
-      deviceNumData.value = []
+      deviceNumData.value = ''
+      monitorDeviceList()
     }
-
     // 表头样式设置
     const headClass = () => {
       return 'background:#FAFAFA !important;color: black;'
     }
-
-    const handleClick = (tab, event) => {
-      console.log(tab, event)
-    }
-
     const Height = ref(0)
-    Height.value = window.innerHeight - 255 + 'px'
+    Height.value = window.innerHeight - 300 + 'px'
     window.addEventListener('resize', () => {
-      Height.value = window.innerHeight - 255 + 'px'
+      Height.value = window.innerHeight - 300 + 'px'
     })
 
+    onMounted(() => {
+      monitorDeviceList()
+    })
     return {
+      refresh,
       Height,
       deviceNumData,
       tableData,
@@ -309,15 +263,13 @@ export default defineComponent({
       filterText,
       show,
       addItem,
+      update,
       datalist,
       deviceNumSelect,
       showValue,
       updateTitle,
-      handleDelete,
-      update,
       goBack,
       headClass,
-      handleClick,
     }
   },
 })

+ 218 - 58
src/views/deviceManage/powerEquip/powerDialog/insertDialog.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="powerdialog">
     <el-dialog
-      :title="title"
+      :title="updateTitle"
       v-model="dialogVisible"
       @close="close"
       @open="open"
@@ -15,51 +15,77 @@
           label-width="150px"
           :rules="rules"
         >
-          <el-form-item label="设备名称:" prop="deviceName">
-            <el-input v-model="form.deviceName"></el-input>
+          <el-form-item label="监控设备名称:" prop="monitorDeviceName">
+            <el-input v-model="form.monitorDeviceName"></el-input>
           </el-form-item>
-          <el-form-item label="设备编号:" prop="deviceCode">
-            <el-input v-model="form.deviceCode"></el-input>
+          <el-form-item label="监控设备编号:" prop="monitorDeviceCode">
+            <el-input v-model="form.monitorDeviceCode"></el-input>
           </el-form-item>
-          <el-form-item label="回路表计地址:" prop="loopAddress">
+          <el-form-item label="回路表计地址:" prop="loopMeterAddress">
+            <el-input-number
+              v-model="form.loopMeterAddress"
+              controls-position="right"
+              :min="0"
+              :max="255"
+            ></el-input-number>
+          </el-form-item>
+          <el-form-item label="所属站点:" prop="siteId">
             <el-select
-              v-model="form.loopAddress"
-              multiple
-              filterable
-              collapse-tags
-              placeholder="请选择"
+              v-model="form.siteId"
+              :disabled="
+                deviceNumDataContent != '' &&
+                form.siteId != null &&
+                form.siteId != ''
+                  ? true
+                  : false
+              "
+              placeholder="请选择所属站点"
             >
               <el-option
-                v-for="item in options"
+                v-for="item in siteList"
                 :key="item.value"
-                :label="item.label"
-                :value="item.value"
-              >
-              </el-option>
+                :label="item.siteName"
+                :value="item.id"
+              ></el-option>
             </el-select>
           </el-form-item>
-
-          <el-form-item label="额定电压(kV):" prop="ratedV">
-            <el-input v-model="form.ratedV"></el-input>
+          <el-form-item label="额定电压(kV):" prop="ratedVoltage">
+            <el-select
+              v-model="form.ratedVoltage"
+              placeholder="请选择额定电压(kV)"
+            >
+              <el-option
+                v-for="item in ratedVoltage"
+                :key="item.value"
+                :label="item.label"
+                :value="item.label"
+              ></el-option>
+            </el-select>
             <div class="fontText">(数值为线电压)</div>
           </el-form-item>
-          <el-form-item label="额定电流(A):" prop="ratedC">
-            <el-input v-model="form.ratedC"></el-input>
+          <el-form-item label="额定电流(A):" prop="ratedCurrent">
+            <el-input-number
+              v-model="form.ratedCurrent"
+              controls-position="right"
+            ></el-input-number>
           </el-form-item>
-
-          <el-form-item label="电流负载率门限:" prop="currentLoad">
-            <el-input v-model="form.currentLoad"></el-input>
+          <el-form-item label="电流负载率门限:" prop="currentLoadRate">
+            <el-input-number
+              v-model="form.currentLoadRate"
+              controls-position="right"
+              :min="0"
+              :max="100"
+            ></el-input-number>
             <div class="fontText">(0-100之间的数字)</div>
           </el-form-item>
-
-          <el-form-item label="设备能力:" prop="deviceAbty">
+          <el-form-item label="设备能力:" prop="qualityAnalysis">
             <el-checkbox
-              v-model="form.deviceAbty"
+              v-model="form.qualityAnalysis"
               label="电能质量分析"
             ></el-checkbox>
             <div class="fontText">(如果未勾选,该设备不参与电能质量分析)</div>
           </el-form-item>
-          <br />
+          <!-- <br />
           <hr />
           <br />
           <el-form-item label="设备类型:" prop="deviceType">
@@ -95,7 +121,7 @@
 
           <br />
           <br />
-          <br />
+          <br /> -->
           <div style="text-align: right">
             <el-button @click="close">取消</el-button>
             <el-button type="primary" @click="submitForm()">保存</el-button>
@@ -107,54 +133,186 @@
 </template>
 
 <script>
-import { defineComponent, ref, watch } from "vue";
-import { ElMessageBox } from "element-plus";
+import { useStore } from 'vuex'
+import { defineComponent, ref, watchEffect } from 'vue'
+import { ElMessage } from 'element-plus'
+import * as api from '@/api/deviceManage/powerEquip/deviceAttribute'
+
 export default defineComponent({
-  name: "Dialog",
+  name: 'Dialog',
   props: {
     flag: Boolean,
     data_list: Object,
     updateTitle: String,
+    deviceNumDataContent: String,
   },
   setup(props, context) {
-    const dialogVisible = ref(false);
-    const title = ref("");
-    const form = ref([]);
+    const store = useStore()
+    const dialogVisible = ref(false)
+    const form = ref([])
+    const siteList = ref([])
+    const formInfo = ref(null)
 
     // open(): Dialog弹窗打开之前做的事
     const open = () => {
-      title.value = props.updateTitle;
-      form.value = props.data_list.value[0];
-    };
+      form.value = props.data_list.value[0]
+      siteList.value = store.state.siteList
+    }
 
     // close(): Dialog弹窗关闭之后做的事
     const close = () => {
-      context.emit("show", false);
-      dialogVisible.value = false;
-    };
+      context.emit('show', false)
+      dialogVisible.value = false
+    }
 
-    // 保存操作
+    // 保存-修改操作
     const submitForm = () => {
-      console.log("");
-      ElMessageBox({
-        message: "操作成功!",
-        type: "success",
-      });
-    };
+      formInfo.value.validate((valid) => {
+        if (valid) {
+          form.value.qualityAnalysis =
+            form.value.qualityAnalysis == true
+              ? (form.value.qualityAnalysis = '是')
+              : (form.value.qualityAnalysis = '否')
+          if (props.updateTitle == '新增设备信息') {
+            api.deviceNewsAdd(form.value).then((requset) => {
+              if (requset.status === 'SUCCESS') {
+                ElMessage.success({
+                  message: '新增成功',
+                  type: 'success',
+                })
+                close()
+              } else {
+                ElMessage.error(requset.msg)
+              }
+            })
+          } else {
+            api.deviceNewsUpdate(form.value).then((requset) => {
+              if (requset.status === 'SUCCESS') {
+                ElMessage.success({
+                  message: '修改成功',
+                  type: 'success',
+                })
+                close()
+              } else {
+                ElMessage.error(requset.msg)
+              }
+            })
+          }
+        } else {
+          console.log('error submit!!')
+          return false
+        }
+      })
+    }
 
-    watch(() => {
-      dialogVisible.value = props.flag;
-    });
+    watchEffect((fn, options) => {
+      fn, options
+      dialogVisible.value = props.flag
+    })
     return {
-      title,
+      formInfo,
+      siteList,
       dialogVisible,
       form,
       close,
       open,
       submitForm,
-    };
+      ratedVoltage: ref([
+        {
+          label: 0.22,
+          value: 1,
+        },
+        {
+          label: 0.38,
+          value: 2,
+        },
+        {
+          label: 0.6,
+          value: 3,
+        },
+        {
+          label: 6,
+          value: 4,
+        },
+        {
+          label: 10,
+          value: 5,
+        },
+        {
+          label: 20,
+          value: 6,
+        },
+        {
+          label: 35,
+          value: 7,
+        },
+      ]),
+      rules: {
+        monitorDeviceName: [
+          {
+            required: true,
+            message: '名称不能为空',
+            trigger: 'blur',
+          },
+          {
+            min: 3,
+            max: 10,
+            message: '名称长度不能小于3大于10',
+            trigger: 'blur',
+          },
+        ],
+        monitorDeviceCode: [
+          {
+            required: true,
+            message: '设备编号不能为空',
+            trigger: 'blur',
+          },
+          {
+            min: 5,
+            max: 25,
+            message: '设备编号长度不能小于5大于25',
+            trigger: 'blur',
+          },
+        ],
+        loopMeterAddress: [
+          {
+            required: true,
+            message: '回路表计地址不能为空',
+            trigger: 'blur',
+          },
+        ],
+        siteId: [
+          {
+            required: true,
+            message: '请选择所属站点',
+            trigger: 'blur',
+          },
+        ],
+        ratedVoltage: [
+          {
+            required: true,
+            message: '请选择额定电压(kV)',
+            trigger: 'blur',
+          },
+        ],
+        ratedCurrent: [
+          {
+            required: true,
+            message: '额定电流(A)',
+            trigger: 'blur',
+          },
+        ],
+        currentLoadRate: [
+          {
+            required: true,
+            message: '电流负载率门限',
+            trigger: 'blur',
+          },
+        ],
+      },
+    }
   },
-});
+})
 </script>
 
 <!-- Add "scoped" attribute to limit CSS to this component only -->
@@ -166,10 +324,6 @@ ul {
   list-style-type: none;
   padding: 0;
 }
-li {
-  display: inline-block;
-  margin: 0 10px;
-}
 a {
   color: #42b983;
 }
@@ -181,4 +335,10 @@ a {
   margin-top: -5px;
   margin-bottom: -15px;
 }
+</style>
+<style>
+.powerdialog .el-form-item--small .el-form-item__content,
+.powerdialog .el-form-item--small .el-form-item__label {
+  line-height: 40px;
+}
 </style>

+ 7 - 4
src/views/deviceManage/powerEquip/videoEquip/index.vue

@@ -41,8 +41,9 @@
         border
         stripe
         :header-cell-style="headClass"
+        :height="Height"
       >
-        <el-table-column fixed prop="stationStatus" label="状态" width="50">
+        <el-table-column prop="stationStatus" label="状态" width="50">
           <template #default="scope">
             <el-avatar
               class="status"
@@ -67,7 +68,7 @@
         </el-table-column>
         <el-table-column prop="deviceNum" label="设备数量" width="">
         </el-table-column>
-        <el-table-column fixed="right" label="操作" width="100">
+        <el-table-column label="操作" width="150">
           <template #default="scope">
             <el-button
               type="text"
@@ -84,7 +85,7 @@
               >删除</el-button
             >
           </template> </el-table-column
-        ><el-table-column fixed="right" label="视频画面" width="100">
+        ><el-table-column label="视频画面" width="150">
           <template #default="scope" style="text-align: center">
             <el-button
               type="text"
@@ -120,7 +121,9 @@ import { defineComponent, ref } from "vue";
 export default defineComponent({
   name: "powerEquip",
   components: {},
-  props: {},
+  props: {
+    Height:String
+  },
   data() {
     return {
       deviceNumData: [],

+ 97 - 97
src/views/login/index.vue

@@ -46,110 +46,110 @@
   </div>
 </template>
 <script>
-  import { dependencies, devDependencies } from '*/package.json'
-  import { mapActions, mapGetters } from 'vuex'
-  import { UserOutlined, LockOutlined } from '@ant-design/icons-vue'
+import { dependencies, devDependencies } from '*/package.json'
+import { mapActions, mapGetters } from 'vuex'
+import { UserOutlined, LockOutlined } from '@ant-design/icons-vue'
 
-  export default {
-    name: 'Login',
-    components: {
-      UserOutlined,
-      LockOutlined,
-    },
-    data() {
-      return {
-        form: {
-          username: '',
-          password: '',
-        },
-        redirect: undefined,
-        dependencies: dependencies,
-        devDependencies: devDependencies,
-      }
-    },
-    computed: {
-      ...mapGetters({
-        logo: 'settings/logo',
-        title: 'settings/title',
-      }),
-    },
-    watch: {
-      $route: {
-        handler(route) {
-          this.redirect = (route.query && route.query.redirect) || '/'
-        },
-        immediate: true,
+export default {
+  name: 'Login',
+  components: {
+    UserOutlined,
+    LockOutlined,
+  },
+  data() {
+    return {
+      form: {
+        username: '',
+        password: '',
       },
+      redirect: undefined,
+      dependencies: dependencies,
+      devDependencies: devDependencies,
+    }
+  },
+  computed: {
+    ...mapGetters({
+      logo: 'settings/logo',
+      title: 'settings/title',
+    }),
+  },
+  watch: {
+    $route: {
+      handler(route) {
+        this.redirect = (route.query && route.query.redirect) || '/'
+      },
+      immediate: true,
     },
-    mounted() {
-      this.form.username = 'admin'
-      this.form.password = '123456'
-      /*  setTimeout(() => {
-        this.handleSubmit()
-      }, 3000) */
+  },
+  mounted() {
+    this.form.username = 'admin'
+    this.form.password = 'admin123'
+    setTimeout(() => {
+      this.handleSubmit()
+    }, 3000)
+  },
+  methods: {
+    ...mapActions({
+      login: 'user/login',
+    }),
+    handleRoute() {
+      return this.redirect === '/404' || this.redirect === '/403'
+        ? '/'
+        : this.redirect
     },
-    methods: {
-      ...mapActions({
-        login: 'user/login',
-      }),
-      handleRoute() {
-        return this.redirect === '/404' || this.redirect === '/403'
-          ? '/'
-          : this.redirect
-      },
-      async handleSubmit() {
-        await this.login(this.form)
-        await this.$router.push(this.handleRoute())
-      },
+    async handleSubmit() {
+      await this.login(this.form)
+      await this.$router.push(this.handleRoute())
     },
-  }
+  },
+}
 </script>
 <style lang="less">
-  .login-container {
+.login-container {
+  width: 100%;
+  height: 100vh;
+  background: url('~@/assets/login_images/login_background.png');
+  background-size: cover;
+  &-form {
+    width: calc(100% - 40px);
+    height: 380px;
+    padding: 4vh;
+    margin-top: calc((100vh - 380px) / 2);
+    margin-right: 20px;
+    margin-left: 20px;
+    background: url('~@/assets/login_images/login_form.png');
+    background-size: 100% 100%;
+    border-radius: 10px;
+    box-shadow: 0 2px 8px 0 rgba(7, 17, 27, 0.06);
+  }
+  &-hello {
+    font-size: 32px;
+    color: #fff;
+  }
+  &-title {
+    margin-bottom: 30px;
+    font-size: 20px;
+    color: #fff;
+  }
+  &-tips {
+    position: fixed;
+    bottom: @vab-margin;
     width: 100%;
-    height: 100vh;
-    background: url('~@/assets/login_images/login_background.png');
-    background-size: cover;
-    &-form {
-      width: calc(100% - 40px);
-      height: 380px;
-      padding: 4vh;
-      margin-top: calc((100vh - 380px) / 2);
-      margin-right: 20px;
-      margin-left: 20px;
-      background: url('~@/assets/login_images/login_form.png');
-      background-size: 100% 100%;
-      border-radius: 10px;
-      box-shadow: 0 2px 8px 0 rgba(7, 17, 27, 0.06);
-    }
-    &-hello {
-      font-size: 32px;
-      color: #fff;
-    }
-    &-title {
-      margin-bottom: 30px;
-      font-size: 20px;
-      color: #fff;
-    }
-    &-tips {
-      position: fixed;
-      bottom: @vab-margin;
-      width: 100%;
-      height: 40px;
-      color: rgba(255, 255, 255, 0.856);
-      text-align: center;
-    }
-    .ant-col {
-      width: 100%;
-      padding: 0 10px 0 10px;
-    }
-    .ant-input {
-      height: 35px;
-    }
-    .ant-btn {
-      width: 100%;
-      height: 45px;
-      border-radius: 99px;
-    }
+    height: 40px;
+    color: rgba(255, 255, 255, 0.856);
+    text-align: center;
+  }
+  .ant-col {
+    width: 100%;
+    padding: 0 10px 0 10px;
+  }
+  .ant-input {
+    height: 35px;
+  }
+  .ant-btn {
+    width: 100%;
+    height: 45px;
+    border-radius: 99px;
   }
+}
 </style>

+ 1 - 1
src/views/monthReport/reportModel.vue

@@ -312,7 +312,7 @@ export default defineComponent({
 })
 </script>
 
-<style lang="scss">
+<style lang="scss" scoped>
 .powerEquip {
   height: calc(100vh - 130px);
   min-width: 810px;

+ 110 - 0
src/views/patrolManage/patrolPlan/calendar/index.vue

@@ -0,0 +1,110 @@
+<template>
+  <div class="calendar">
+    <!-- <el-calendar>
+      <template #dateCell="{ data }">
+        <p :class="data.isSelected ? 'is-selected' : ''">
+          {{ data.day.split('-').slice(1).join('-') }}
+          {{ data.isSelected ? '✔️' : '' }}
+        </p>
+      </template>
+    </el-calendar> -->
+    <el-calendar ref="calendar" id="el-calendar-table">
+      <template #dateCell="{ data }">
+        <p :class="data.isSelected ? 'is-selected' : ''">
+            <!-- {{data}} -->
+          {{ data.day.split('-').slice(2).join('-') }}
+          <span style="display: block" v-for="ref in 10" :key="ref">
+            <el-tooltip
+              class="item"
+              effect="dark"
+              :content="dataContent"
+              placement="top"
+            >
+              <span>{{ data.isSelected ? dataContent : '' }}</span>
+            </el-tooltip>
+          </span>
+        </p>
+      </template>
+      <template #header="{ date }">
+        <span>{{ date }}</span>
+        <el-button-group>
+          <el-button size="mini" @click="selectDate('prev-year')">
+            上一年
+          </el-button>
+          <el-button size="mini" @click="selectDate('prev-month')">
+            上一月
+          </el-button>
+          <el-button size="mini" @click="selectDate('today')">今天</el-button>
+          <el-button size="mini" @click="selectDate('next-month')">
+            下一月
+          </el-button>
+          <el-button size="mini" @click="selectDate('next-year')">
+            下一年
+          </el-button>
+        </el-button-group>
+      </template>
+    </el-calendar>
+  </div>
+</template>
+<script>
+import { defineComponent, ref, onMounted } from 'vue'
+
+export default defineComponent({
+  name: 'calendar',
+  components: {},
+  props: {},
+  setup() {
+    const calendar = ref()
+    const selectDate = (val) => {
+      calendar.value.selectDate(val)
+    }
+
+    onMounted(() => {
+      const th = document
+        .getElementById('el-calendar-table')
+        .getElementsByClassName('el-calendar__body')[0]
+        .getElementsByClassName('el-calendar-table')[0].childNodes[0].children
+      for (let i in th) {
+        th[i].innerHTML == 'Sun'
+          ? (th[i].innerHTML = '周一')
+          : th[i].innerHTML == 'Mon'
+          ? (th[i].innerHTML = '周二')
+          : th[i].innerHTML == 'Tue'
+          ? (th[i].innerHTML = '周三')
+          : th[i].innerHTML == 'Wed'
+          ? (th[i].innerHTML = '周四')
+          : th[i].innerHTML == 'Thu'
+          ? (th[i].innerHTML = '周五')
+          : th[i].innerHTML == 'Fri'
+          ? (th[i].innerHTML = '周六')
+          : th[i].innerHTML == 'Sat'
+          ? (th[i].innerHTML = '周日')
+          : ''
+      }
+    })
+
+    return {
+      calendar,
+      selectDate,
+      dataContent: ref('1111111111111111111111111222222222222'),
+    }
+  },
+})
+</script>
+
+<style>
+.is-selected {
+  color: #1989fa;
+  overflow-y: auto;
+  height: 100%;
+}
+.el-calendar {
+  --el-calendar-selected-background-color: #76ff4d70 !important;
+}
+.is-selected::-webkit-scrollbar {
+  display: none;
+}
+#el-calendar-table .el-calendar-table > thead > th {
+  text-align: center;
+}
+</style>

+ 16 - 3
src/views/patrolManage/patrolPlan/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="patolPlan">
-    <div class="patolContent">
+    <div class="patolContent" v-if="selectBool">
       <div class="patolDivOne">
         <el-button
           style="float: right; margin-right: 15px"
@@ -21,18 +21,24 @@
         </el-radio-group>
       </div>
       <div class="patolDivTwo">
-        <inspe-Plan v-if="inspeBoll"></inspe-Plan>
+        <inspe-Plan v-if="inspeBoll" @selectBool="selectBool1"></inspe-Plan>
+        <calendar v-if="!inspeBoll"></calendar>
       </div>
     </div>
+    <div class="patolContent" v-if="!selectBool">
+      <planDetails @modle="selectBool1"></planDetails>
+    </div>
   </div>
 </template>
 <script>
 import { defineComponent, ref } from 'vue'
 import inspePlan from './tables/inspePlan.vue'
+import calendar from './calendar/index.vue'
+import planDetails from './inspePlanDetails.vue'
 
 export default defineComponent({
   name: 'patolPlan',
-  components: { inspePlan },
+  components: { inspePlan, calendar, planDetails },
   props: {},
   setup() {
     const inspeBoll = ref(true)
@@ -49,7 +55,14 @@ export default defineComponent({
       console.log()
     }
 
+    const selectBool = ref(true)
+    const selectBool1 = (value) => {
+      selectBool.value = value
+    }
+
     return {
+      selectBool,
+      selectBool1,
       addPlan,
       inspeBoll,
       listTabPosition: ref('inspePlan'),

+ 328 - 0
src/views/patrolManage/patrolPlan/inspePlanDetails.vue

@@ -0,0 +1,328 @@
+<template>
+  <div class="powerEquip">
+    <div class="model">
+      <div class="modelHeader">
+        <div class="headerTitle">
+          <span class="span">巡检计划详情</span>
+          <el-button class="goBack" @click="goBack">返回</el-button>
+        </div>
+        <div class="pro-common-basicInfo">
+          <div class="pro-common-left">
+            <div class="pro-common-top">
+              <div class="pro-common-mainIcon">
+                <img src="@/assets/images/common-mainIcon.jpg" alt="" />
+              </div>
+              <div class="pro-common-mainInfo">
+                <div class="pro-common-subTitle">计划编号:RIP23_211020001</div>
+                <div class="pro-common-name">测试巡检one</div>
+                <div class="pro-common-status">
+                  <label class="pro-common-name">计划状态:</label>
+                  已开始
+                </div>
+              </div>
+            </div>
+            <div class="pro-common-bottom">
+              <label>
+                <span>创建人</span>
+                :运维管理员/123
+              </label>
+              <label>巡检周期:2021-10-21 ~ 2021-10-31</label>
+            </div>
+          </div>
+          <div class="pro-common-right">
+            <div class="pro-common-card">
+              <label class="pro-common-name">负责人</label>
+              <div class="pro-common-value" style="font-size: 15px">
+                蒋跃宗/
+                <br />
+                13916238398
+              </div>
+            </div>
+            <div class="pro-common-card">
+              <label class="pro-common-name">巡检班组</label>
+              <div class="pro-common-value">嘉定组</div>
+            </div>
+            <div class="pro-common-card">
+              <label class="pro-common-name">工单创建时间</label>
+              <div class="pro-common-value">执行当日</div>
+            </div>
+          </div>
+        </div>
+        <div class="pro-common-pageArea">
+          <div class="pro-common-areaTitle"><span>巡检人员</span></div>
+          <div class="pro-common-operators">
+            <div class="pro-common-operatorCell">
+              <img src="@/assets/images/default_head.jpg" />
+              <div>
+                蒋跃宗
+                <span>13916238398</span>
+              </div>
+            </div>
+            <div class="pro-common-operatorCell">
+              <img src="@/assets/images/default_head.jpg" />
+              <div>
+                李文钧
+                <span>13611609628</span>
+              </div>
+            </div>
+            <div class="pro-common-operatorCell">
+              <img src="@/assets/images/default_head.jpg" />
+              <div>
+                赵庆
+                <span>13122007679</span>
+              </div>
+            </div>
+          </div>
+        </div>
+        <div class="pro-common-pageArea">
+          <div class="pro-common-areaTitle">
+            <span>巡检路线</span>
+            <a class="pro-pages-inspect-plandetail-routeBtn">
+              <svg-icon
+                class="anticon-dingwei"
+                iconClass="anticon-dingwei"
+              ></svg-icon>
+              站点地图
+            </a>
+          </div>
+          <div class="pro-pages-inspect-plandetail-stationCards">
+            <div class="pro-pages-inspect-plandetail-stationCard">
+              <div class="pro-pages-inspect-plandetail-left">
+                <div>
+                  <label class="antd-pro-pages-inspect-plandetail-count">
+                    3
+                  </label>
+                  个设备
+                </div>
+              </div>
+              <div class="antd-pro-pages-inspect-plandetail-right">
+                <div class="antd-pro-pages-inspect-plandetail-name">
+                  测试站点
+                </div>
+                <div class="antd-pro-pages-inspect-plandetail-address">
+                  上海徐乐路208号
+                </div>
+              </div>
+            </div>
+            <div class="pro-pages-inspect-plandetail-stationCard">
+              <div class="pro-pages-inspect-plandetail-left">
+                <div>
+                  <label class="antd-pro-pages-inspect-plandetail-count">
+                    1
+                  </label>
+                  个设备
+                </div>
+              </div>
+              <div class="antd-pro-pages-inspect-plandetail-right">
+                <div class="antd-pro-pages-inspect-plandetail-name">
+                  宝辉冶金13433
+                </div>
+                <div class="antd-pro-pages-inspect-plandetail-address">
+                  上海上海城区闵行区
+                </div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+import { defineComponent, ref } from 'vue'
+
+export default defineComponent({
+  name: 'powerEquip',
+  components: {},
+  props: {},
+  setup(props, { emit }) {
+    props
+    ref
+
+    const goBack = () => {
+      emit('modle', true)
+    }
+
+    return {
+      goBack,
+    }
+  },
+})
+</script>
+
+<style lang="scss" scoped>
+.powerEquip {
+  height: calc(100vh - 130px);
+  min-width: 810px;
+  .model {
+    height: 100%;
+    padding: 15px;
+    .modelHeader {
+      .headerTitle {
+        .span {
+          border-left: 3px #1890ff solid;
+          padding-left: 5px;
+          margin-right: 15px;
+          font-size: 17px;
+        }
+        .goBack {
+          min-height: 24px;
+          padding: 0px 5px;
+        }
+      }
+      .pro-common-basicInfo {
+        display: -webkit-box;
+        -webkit-box-pack: justify;
+        border-bottom: 3px #1890ff solid;
+        margin-top: 15px;
+        padding-bottom: 10px;
+        .pro-common-left {
+          .pro-common-top {
+            display: flex;
+            .pro-common-mainIcon {
+              width: 110px;
+              height: 110px;
+              .anticon_user {
+                margin: 0 auto;
+                display: block;
+                font-size: 50px;
+                margin-bottom: 8px;
+              }
+            }
+            .pro-common-mainInfo {
+              min-height: 110px;
+              margin-left: 20px;
+              font-size: 14px;
+              > .pro-common-subTitle {
+                color: rgba(0, 0, 0, 0.65);
+                font-size: 13px;
+              }
+              > .pro-common-name {
+                font-size: 24px;
+                color: #000;
+                line-height: 32px;
+                min-height: 64px;
+                max-width: 450px;
+                margin-top: 4px;
+                font-weight: 600;
+                display: inline-block;
+              }
+              > .pro-common-status {
+                font-weight: 700;
+                color: #52c41a;
+                .pro-common-name {
+                  display: inline-block;
+                  margin-right: 4px;
+                  color: #000;
+                }
+              }
+            }
+          }
+          .pro-common-bottom {
+            color: rgba(0, 0, 0, 0.65);
+            font-size: 13px;
+            margin-top: 12px;
+            > label {
+              margin-right: 18px;
+            }
+          }
+        }
+        .pro-common-right {
+          .pro-common-card {
+            min-width: 8.5rem;
+            max-width: 170px;
+            height: 138px;
+            text-align: center;
+            float: left;
+            margin-right: 12px;
+            background-color: #f0f2f5;
+            border: 1px solid hsla(0, 0%, 85.1%, 0.3);
+            > .pro-common-name {
+              font-size: 13px;
+              color: rgba(0, 0, 0, 0.65);
+              margin-top: 24px;
+              display: block;
+              font-weight: 500;
+            }
+            > .pro-common-value {
+              color: #000;
+              font-size: 18px;
+              font-weight: 500;
+              height: 84px;
+              justify-content: center;
+              align-items: center;
+              flex-direction: column;
+              display: flex;
+              width: 100%;
+            }
+          }
+        }
+      }
+      .pro-common-pageArea {
+        padding: 12px 12px 12px 24px;
+        margin-top: 12px;
+        overflow: hidden;
+        .pro-common-areaTitle {
+          color: #000;
+          font-size: 15px;
+          margin-right: 8px;
+          padding-bottom: 6px;
+          font-weight: 500;
+          .pro-pages-inspect-plandetail-routeBtn {
+            margin-left: 12px;
+            font-size: 13px;
+            cursor: pointer;
+            .anticon-dingwei {
+              font-size: 13px;
+              margin-right: 0px;
+            }
+          }
+        }
+        .pro-common-operators {
+          margin-left: 12px;
+          .pro-common-operatorCell {
+            padding: 7px 8px;
+            color: rgba(0, 0, 0, 0.65);
+            margin: 6px 4px 8px;
+            display: flex;
+            text-align: center;
+            float: left;
+            align-items: center;
+            border: 1px solid #d9d9d9;
+            line-height: 24px;
+            background-color: #f0f2f5;
+            img {
+              width: 24px;
+              max-height: 24px;
+            }
+            > div {
+              margin-left: 8px;
+            }
+          }
+        }
+        .pro-pages-inspect-plandetail-stationCards {
+          .pro-pages-inspect-plandetail-stationCard {
+            background-color: #fef3e7;
+            .pro-pages-inspect-plandetail-left {
+              background-color: #fed494;
+              width: 82px;
+              height: 100%;
+              color: #333;
+              font-size: 12px;
+              font-weight: 500;
+              justify-content: center;
+              align-items: center;
+              flex-direction: column;
+              display: flex;
+              padding-bottom: 4px;
+            }
+          }
+        }
+      }
+    }
+    .modelHeader::-webkit-scrollbar {
+      display: none;
+    }
+  }
+}
+</style>

+ 32 - 2
src/views/patrolManage/patrolPlan/tables/inspePlan.vue

@@ -52,8 +52,17 @@
           width=""
         ></el-table-column>
         <el-table-column prop="state" label="状态" width=""></el-table-column>
-        <el-table-column label="操作" width="100">
+        <el-table-column label="操作" width="200">
           <template #default="scope">
+            <el-button
+              type="text"
+              size="small"
+              style="color: #409eff"
+              @click.prevent="Select(scope.row)"
+            >
+              查看
+            </el-button>
+            <span style="color: #b9b9b9">|</span>
             <el-button
               type="text"
               size="small"
@@ -62,6 +71,15 @@
             >
               编辑
             </el-button>
+            <span style="color: #b9b9b9">|</span>
+            <el-button
+              type="text"
+              size="small"
+              style="color: #409eff"
+              @click.prevent="stop(scope.row)"
+            >
+              暂停
+            </el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -87,10 +105,20 @@ export default defineComponent({
   name: 'patolPlan',
   components: {},
   props: {},
-  setup() {
+  setup(props,context) {
+    props
     const Update = (row) => {
       console.log('', row)
+      
+    }
+    const Select = (row) => {
+      context.emit('selectBool',false)
+      console.log('', row)
+    }
+    const stop = (row) => {
+      console.log('', row)
     }
+
     // 表头样式设置
     const headClass = () => {
       return 'background:#FAFAFA !important;color: black;'
@@ -109,6 +137,8 @@ export default defineComponent({
       handleCurrentChange,
       headClass,
       Update, //修改事件
+      Select, //查询事件
+      stop, //暂停事件
       input: ref(''),
       radio: ref('1'),
       tableData: [

+ 5 - 9
src/views/patrolManage/patrolRecord/dialog/select.vue

@@ -69,7 +69,7 @@
             <span></span>
           </div>
         </div>
-        <div class="recorddetail-separatorTitle">巡检结果</div>
+        <div class="fontSizeSelect recorddetail-separatorTitle">巡检结果</div>
 
         <div class="recorddetail-resultWrapper">
           <div class="recorddetail-result">
@@ -97,7 +97,7 @@
               </div>
               <div>
                 <div class="recorddetail-detailBtn">
-                  <a @click="iconContent">
+                  <a @click="iconContent" class="fontSizeSelect">
                     {{ iconTitle }}
                     <span
                       role="img"
@@ -121,17 +121,13 @@
           <div style="margin-top: 12px" v-if="!iconBool">
             <div style="margin: 8px 0px">
               <strong>巡检设备:测试2</strong>
-              <span class="antd-pro-pages-inspect-recorddetail-headerItem">
+              <span>
                 设备状态:
                 <span>待巡检</span>
               </span>
               <div style="float: right">
-                <span class="antd-pro-pages-inspect-recorddetail-headerItem">
-                  检查项数:1
-                </span>
-                <span class="antd-pro-pages-inspect-recorddetail-headerItem">
-                  异常项:0
-                </span>
+                <span>检查项数:1</span>
+                <span>异常项:0</span>
               </div>
             </div>
             <div style="padding-left: 16px"></div>