|
@@ -1,393 +0,0 @@
|
|
|
-<template>
|
|
|
- <div class="main">
|
|
|
- <img :src="imgUrl" width="1920px" alt="">
|
|
|
- <!-- <div class="icon" style="right:20px">
|
|
|
- <a-button type="primary" icon="appstore" size="large" @click="visibleRight=true" />
|
|
|
- </div>-->
|
|
|
- <div v-if="dotList !=null && dotList.length>0">
|
|
|
- <div v-for="item in dotList" :key="item.id">
|
|
|
- <VueDragResize
|
|
|
- :isActive="item.isActive"
|
|
|
- :w="item.width"
|
|
|
- :h="item.height"
|
|
|
- :minh="20"
|
|
|
- :x="item.xposition"
|
|
|
- :y="item.yposition"
|
|
|
- :isDraggable="item.isActive"
|
|
|
- :isResizable="item.isActive"
|
|
|
- :stickSize="5"
|
|
|
- >
|
|
|
- <a-tooltip>
|
|
|
- <template slot="title">
|
|
|
- {{ item.description + '(' + item.time + ')' }}
|
|
|
- </template>
|
|
|
- <!-- <div class="info" @click="handleInfo(item)" @click.right.prevent="handleView(item)">-->
|
|
|
- <div v-if="item.type===1||item.type===5" class="info" @click="handleInfo(item)">
|
|
|
- <span :style="{'color':item.warnFirstColor}" v-if="(+item.result)<=item.warnFirst&&item.warnFirst!==null">{{ item.result }}</span>
|
|
|
- <span :style="{'color':item.warnSecondColor}" v-else-if="item.warnFirst<(+item.result)&&(+item.result)<item.warnSecond">{{ item.result }}</span>
|
|
|
- <span :style="{'color':item.warnThirdColor}" v-else-if="item.warnThird<(+item.result)&&(+item.result)<item.warnFour">{{ item.result }}</span>
|
|
|
- <span :style="{'color':item.warnFourColor}" v-else-if="(+item.result)>=item.warnFour&&item.warnFirst!==null">{{ item.result }}</span>
|
|
|
- <span v-else>{{ item.result==null?'-':item.result }}</span>
|
|
|
- </div>
|
|
|
- </a-tooltip>
|
|
|
- </VueDragResize>
|
|
|
- <VueDragResize
|
|
|
- v-if="item.type===2"
|
|
|
- v-show="item.result===0"
|
|
|
- :isActive="item.isActive"
|
|
|
- :w="35"
|
|
|
- :h="35"
|
|
|
- :minh="20"
|
|
|
- :x="item.imgXPosition"
|
|
|
- :y="item.imgYPosition"
|
|
|
- :isDraggable="item.isActive"
|
|
|
- :isResizable="item.isActive"
|
|
|
- :stickSize="5"
|
|
|
- >
|
|
|
- <a-tooltip>
|
|
|
- <template slot="title">
|
|
|
- {{ item.description }}
|
|
|
- </template>
|
|
|
- <img
|
|
|
- v-if="item.imgPosition===1"
|
|
|
- src="@/assets/kg_red_left.png"
|
|
|
- @click="handleInfo(item)"
|
|
|
- alt=""
|
|
|
- width="30px"
|
|
|
- height="30px">
|
|
|
- <img
|
|
|
- v-if="item.imgPosition===2"
|
|
|
- src="@/assets/kg_red_top.png"
|
|
|
- @click="handleInfo(item)"
|
|
|
- alt=""
|
|
|
- width="30px"
|
|
|
- height="30px">
|
|
|
- <img
|
|
|
- v-if="item.imgPosition===3"
|
|
|
- src="@/assets/kg_red_right.png"
|
|
|
- @click="handleInfo(item)"
|
|
|
- alt=""
|
|
|
- width="30px"
|
|
|
- height="30px">
|
|
|
- <img
|
|
|
- v-if="item.imgPosition===4"
|
|
|
- src="@/assets/kg_red_down.png"
|
|
|
- @click="handleInfo(item)"
|
|
|
- alt=""
|
|
|
- width="30px"
|
|
|
- height="30px">
|
|
|
- </a-tooltip>
|
|
|
- </VueDragResize>
|
|
|
- <VueDragResize
|
|
|
- v-if="item.type===2"
|
|
|
- v-show="item.result===1"
|
|
|
- :isActive="item.isActive"
|
|
|
- :w="35"
|
|
|
- :h="35"
|
|
|
- :minh="20"
|
|
|
- :x="item.imgXPosition"
|
|
|
- :y="item.imgYPosition"
|
|
|
- :isDraggable="item.isActive"
|
|
|
- :isResizable="item.isActive"
|
|
|
- :stickSize="5"
|
|
|
- >
|
|
|
- <a-tooltip>
|
|
|
- <template slot="title">
|
|
|
- {{ item.description }}
|
|
|
- </template>
|
|
|
- <img
|
|
|
- v-if="item.imgPosition===null || item.imgPosition===1"
|
|
|
- src="@/assets/kg_green_left.png"
|
|
|
- @click="handleInfo(item)"
|
|
|
- alt=""
|
|
|
- width="30px"
|
|
|
- height="30px">
|
|
|
- <img
|
|
|
- v-if="item.imgPosition===2"
|
|
|
- src="@/assets/kg_green_top.png"
|
|
|
- @click="handleInfo(item)"
|
|
|
- alt=""
|
|
|
- width="30px"
|
|
|
- height="30px">
|
|
|
- <img
|
|
|
- v-if="item.imgPosition===3"
|
|
|
- src="@/assets/kg_green_right.png"
|
|
|
- @click="handleInfo(item)"
|
|
|
- alt=""
|
|
|
- width="30px"
|
|
|
- height="30px">
|
|
|
- <img
|
|
|
- v-if="item.imgPosition===4"
|
|
|
- src="@/assets/kg_green_down.png"
|
|
|
- @click="handleInfo(item)"
|
|
|
- alt=""
|
|
|
- width="30px"
|
|
|
- height="30px">
|
|
|
- </a-tooltip>
|
|
|
- </VueDragResize>
|
|
|
- <VueDragResize
|
|
|
- v-if="item.type===3"
|
|
|
- v-show="item.result===1"
|
|
|
- :isActive="item.isActive"
|
|
|
- :w="35"
|
|
|
- :h="35"
|
|
|
- :minh="20"
|
|
|
- :x="item.imgXPosition"
|
|
|
- :y="item.imgYPosition"
|
|
|
- :isDraggable="item.isActive"
|
|
|
- :isResizable="item.isActive"
|
|
|
- :stickSize="5"
|
|
|
- >
|
|
|
- <a-tooltip>
|
|
|
- <template slot="title">
|
|
|
- {{ item.description }}
|
|
|
- </template>
|
|
|
- <img
|
|
|
- style="z-index: 100"
|
|
|
- @click="handleInfo(item)"
|
|
|
- src="@/assets/green.png"
|
|
|
- alt=""
|
|
|
- width="30px"
|
|
|
- height="30px">
|
|
|
- </a-tooltip>
|
|
|
- </VueDragResize>
|
|
|
- <VueDragResize
|
|
|
- v-if="item.type===4"
|
|
|
- v-show="item.result===0"
|
|
|
- :isActive="item.isActive"
|
|
|
- :w="35"
|
|
|
- :h="35"
|
|
|
- :minh="20"
|
|
|
- :x="item.imgXPosition"
|
|
|
- :y="item.imgYPosition"
|
|
|
- :isDraggable="item.isActive"
|
|
|
- :isResizable="item.isActive"
|
|
|
- :stickSize="5"
|
|
|
- >
|
|
|
- <a-tooltip>
|
|
|
- <template slot="title">
|
|
|
- {{ item.description }}
|
|
|
- </template>
|
|
|
- <img
|
|
|
- style="z-index: 100"
|
|
|
- @click="handleInfo(item)"
|
|
|
- src="@/assets/stop.png"
|
|
|
- alt=""
|
|
|
- width="30px"
|
|
|
- height="30px">
|
|
|
- </a-tooltip>
|
|
|
- </VueDragResize>
|
|
|
- <VueDragResize
|
|
|
- v-if="item.type===5"
|
|
|
- :isActive="item.isActive"
|
|
|
- :w="item.imgWidth"
|
|
|
- :h="item.imgHeight"
|
|
|
- :minh="20"
|
|
|
- :minw="20"
|
|
|
- :x="item.imgXPosition"
|
|
|
- :y="item.imgYPosition"
|
|
|
- :isDraggable="item.isActive"
|
|
|
- :isResizable="item.isActive"
|
|
|
- :stickSize="5"
|
|
|
- >
|
|
|
- <a-tooltip>
|
|
|
- <template slot="title">
|
|
|
- {{ item.description }} <br />
|
|
|
- 液位: {{ item.result }}
|
|
|
- </template>
|
|
|
- <LiquidLevel :value="item" :width="item.imgWidth" :height="item.imgHeight"/>
|
|
|
- </a-tooltip>
|
|
|
- </VueDragResize>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="btn">
|
|
|
- <a-button-group>
|
|
|
- <a-button @click="back()">返回主页</a-button>
|
|
|
- </a-button-group>
|
|
|
- </div>
|
|
|
- <detail ref="detailModal" @ok="handleOk" />
|
|
|
- <detail-log ref="detailLogModal" @ok="handleOk" />
|
|
|
- <!-- <remote-opc-warn></remote-opc-warn>-->
|
|
|
- </div>
|
|
|
-</template>
|
|
|
-
|
|
|
-<script>
|
|
|
-import VueDragResize from 'vue-drag-resize'
|
|
|
-import LiquidLevel from '@/components/LiquidLevel'
|
|
|
-
|
|
|
-import { fetchSbPosition } from '@/api/remote/remote-position'
|
|
|
-import {
|
|
|
- updateRemoteOpc,
|
|
|
- fetchRemoteOpc, queryRemoteOpc, queryRemoteOpcFromRedis
|
|
|
-} from '@/api/remote/opc'
|
|
|
-import Detail from '@/views/remote/opc/modules/Detail.vue'
|
|
|
-import DetailLog from '@/views/remote/opc-log/modules/Detail.vue'
|
|
|
-import RemoteOpcWarn from '@/views/socket/RemoteOpcWarn'
|
|
|
-import RemoteOpcList from '@/views/remote/opc/RemoteOpc'
|
|
|
-export default {
|
|
|
- name: 'Opc',
|
|
|
- components: {
|
|
|
- RemoteOpcList,
|
|
|
- VueDragResize,
|
|
|
- LiquidLevel,
|
|
|
- RemoteOpcWarn,
|
|
|
- Detail,
|
|
|
- DetailLog
|
|
|
- },
|
|
|
- data () {
|
|
|
- return {
|
|
|
- visibleRight: false,
|
|
|
- positionId: '',
|
|
|
- optDot: null,
|
|
|
- imgUrl: '',
|
|
|
- dotList: [],
|
|
|
- timer: null,
|
|
|
- columns: [
|
|
|
- {
|
|
|
- title: '位号',
|
|
|
- dataIndex: 'positionNum',
|
|
|
- key: 'positionNum'
|
|
|
- },
|
|
|
- {
|
|
|
- title: '操作',
|
|
|
- key: 'action',
|
|
|
- scopedSlots: { customRender: 'action' }
|
|
|
- }
|
|
|
- ]
|
|
|
- }
|
|
|
- },
|
|
|
- created () {
|
|
|
- this.positionId = this.$route.query.line
|
|
|
- this.getOpcInfo(this.positionId)
|
|
|
- this.getOpcInfoFromRedis(this.positionId)
|
|
|
- this.getImg()
|
|
|
- this.timer = setInterval(() => {
|
|
|
- this.getOpcInfoFromRedis(this.positionId)
|
|
|
- }, 5000)
|
|
|
- },
|
|
|
- destroyed () {
|
|
|
- clearInterval(this.timer)
|
|
|
- },
|
|
|
- methods: {
|
|
|
- resize (newRect) {
|
|
|
- console.log(newRect)
|
|
|
- const params = {
|
|
|
- ...this.dotList[this.optDot],
|
|
|
- height: newRect.height,
|
|
|
- width: newRect.width,
|
|
|
- xposition: newRect.left,
|
|
|
- yposition: newRect.top
|
|
|
- }
|
|
|
- updateRemoteOpc(params).then(res => {
|
|
|
- console.log(res)
|
|
|
- this.dotList[this.optDot].isActive = false
|
|
|
- })
|
|
|
- },
|
|
|
- onCloseRight () {
|
|
|
- this.visibleRight = false
|
|
|
- },
|
|
|
- disposition (val, i) {
|
|
|
- val.isActive = true
|
|
|
- val.positionFlag = 1
|
|
|
- this.optDot = i
|
|
|
- this.visibleRight = false
|
|
|
- },
|
|
|
- handleShow (val, key) {
|
|
|
- this.dotList[val].positionFlag = key
|
|
|
- },
|
|
|
- back () {
|
|
|
- const a = document.createElement('a')
|
|
|
- a.href = '/sb/position/opc/for/producerYushui'
|
|
|
- a.click()
|
|
|
- },
|
|
|
- getOpcInfo (positionId) {
|
|
|
- this.positionId = positionId
|
|
|
- queryRemoteOpc({ line: this.positionId })
|
|
|
- .then((res) => {
|
|
|
- this.dotList = res.data
|
|
|
- this.dotList.forEach(item => {
|
|
|
- item.isActive = false
|
|
|
- if (item.result == null) {
|
|
|
- item.result = '-'
|
|
|
- }
|
|
|
- })
|
|
|
- })
|
|
|
- this.getImg()
|
|
|
- },
|
|
|
- getOpcInfoFromRedis (positionId) {
|
|
|
- this.positionId = positionId
|
|
|
- queryRemoteOpcFromRedis({ line: this.positionId })
|
|
|
- .then((res) => {
|
|
|
- this.dotList.forEach(item => {
|
|
|
- item.isActive = false
|
|
|
- res.data.forEach(data => {
|
|
|
- if (item.positionNum === data.positionNum) {
|
|
|
- item.result = data.result
|
|
|
- item.time = data.time
|
|
|
- }
|
|
|
- })
|
|
|
- })
|
|
|
- })
|
|
|
- this.getImg()
|
|
|
- },
|
|
|
- getImg () {
|
|
|
- fetchSbPosition({ id: this.positionId }).then(res => {
|
|
|
- this.imgUrl = res.data.opcImg
|
|
|
- })
|
|
|
- },
|
|
|
- handleChange () {
|
|
|
- this.getOpcInfo(this.positionId)
|
|
|
- this.getImg()
|
|
|
- },
|
|
|
- /* handleInfo (remoteOpc) {
|
|
|
- const model = this.$refs.detailLogModal
|
|
|
- model.base(null, { positionNum: remoteOpc.positionNum })
|
|
|
- }, */
|
|
|
- handleInfo (remoteOpc) {
|
|
|
- const model = this.$refs.detailLogModal
|
|
|
- model.base(remoteOpc)
|
|
|
- },
|
|
|
- handleView (record) {
|
|
|
- fetchRemoteOpc({ id: record.id }).then(res => {
|
|
|
- const modal = this.$refs.detailModal
|
|
|
- modal.base(res.data)
|
|
|
- })
|
|
|
- },
|
|
|
- backParent () {
|
|
|
- const a = document.createElement('a')
|
|
|
- a.href = '/sb/position/opc/for/producer'
|
|
|
- a.target = '_blank'
|
|
|
- a.click()
|
|
|
- },
|
|
|
- handleOk () {
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
-}
|
|
|
-</script>
|
|
|
-
|
|
|
-<style lang="less" scoped>
|
|
|
-.main{
|
|
|
- position: relative;
|
|
|
-}
|
|
|
-.info{
|
|
|
- font-size: 14px;
|
|
|
- font-weight: bold;
|
|
|
- color: black;
|
|
|
- padding:0 2px;
|
|
|
- // transform: scale(0.5);
|
|
|
-}
|
|
|
-.icon{
|
|
|
- font-size: 30px;
|
|
|
- color: #fff;
|
|
|
- position: absolute;
|
|
|
- top:20px;
|
|
|
-
|
|
|
-}
|
|
|
-.btn{
|
|
|
- position: fixed;
|
|
|
- bottom: 10px;
|
|
|
- left:50%;
|
|
|
- transform: translateX(-50%);
|
|
|
-}
|
|
|
-</style>
|