Browse Source

上线

master
lucky 5 years ago
parent
commit
a5eb958c2d
  1. 2
      index.html
  2. BIN
      src/assets/monitor-left.png
  3. 33
      src/components/amount.vue
  4. 33
      src/components/curve.vue
  5. 54
      src/components/dashboardOne.vue
  6. 68
      src/components/dashboardTow.vue
  7. 42
      src/components/heat.vue
  8. 26
      src/components/humidity.vue
  9. 30
      src/components/memorabilia.vue
  10. 28
      src/components/saturate.vue
  11. 30
      src/components/temperature.vue
  12. 27
      src/components/throughput.vue
  13. 36
      src/components/toolbar.vue
  14. 17
      src/components/vedioScreen.vue
  15. 2
      src/router/index.ts
  16. 81
      src/views/jht.vue
  17. 42
      src/views/repo-five.vue
  18. 102
      src/views/xh.vue
  19. 40
      src/views/yj.vue
  20. 1
      vite.config.js

2
index.html

@ -4,7 +4,7 @@
<meta charset="UTF-8" />
<link rel="icon" href="/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vite Typescript + Tailwind Starter</title>
<title>智慧物流园区-数字孪生</title>
<script type="text/javascript">
!(function(doc, win) {
var docEle = doc.documentElement, //获取html元素

BIN
src/assets/monitor-left.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

33
src/components/amount.vue

@ -19,6 +19,7 @@ export default defineComponent({
myCharts: {},
carOfInLists: [],
carOfOutLists: [],
time: null,
}
},
@ -31,6 +32,8 @@ export default defineComponent({
carOfInLists.forEach((item) => {
arr.push(item.carOfIn)
})
} else {
arr = [152, 130, 158, 146, 128, 166]
}
return arr
},
@ -43,6 +46,8 @@ export default defineComponent({
carOfOutLists.forEach((item) => {
arr.push(item.carOfOut)
})
} else {
arr = [88, 60, 56, 75, 68, 80]
}
return arr
},
@ -55,23 +60,29 @@ export default defineComponent({
carOfInLists.forEach((item) => {
arr.push(item.time)
})
} else {
arr = ['2021-05', '2021-04', '2021-03', '2021-02', '2021-01', '2020-12']
}
return arr
},
},
created() {
setInterval(() => {
mounted() {
//
this.getMbpsByTime()
this.time = setInterval(() => {
//
this.getMbpsByTime()
}, 3000)
},
mounted() {
}, 200000)
//
this.getOptions()
},
unmounted() {
clearInterval(this.time)
this.time = null
},
methods: {
/** 线
* @param {number} endTime 结束时间
@ -95,9 +106,13 @@ export default defineComponent({
//
getOptions() {
const { weightOfIns, weightOfOuts, timeArray } = this
const throughput = document.getElementById('throughput')
this.myCharts = echarts.init(throughput)
this.myCharts.setOption({
// domecharts
let throughput = document.getElementById('throughput')
throughput.removeAttribute('_echarts_instance_')
let myChart1 = echarts.init(throughput)
myChart1.setOption({
tooltip: {
trigger: 'axis',
},

33
src/components/curve.vue

@ -32,6 +32,7 @@ export default defineComponent({
weightOfOutLists: [],
cycles: ['天', '周', '月', '年'],
currentIndex: 0,
time: null,
}
},
@ -44,6 +45,8 @@ export default defineComponent({
weightOfInLists.forEach((item) => {
arr.push(item.weightOfIn)
})
} else {
arr = [152, 130, 158, 146, 128, 166]
}
return arr
},
@ -56,6 +59,8 @@ export default defineComponent({
weightOfOutLists.forEach((item) => {
arr.push(item.weightOfOut)
})
} else {
arr = [56, 38, 64, 100, 98, 79]
}
return arr
},
@ -68,23 +73,29 @@ export default defineComponent({
weightOfInLists.forEach((item) => {
arr.push(item.time)
})
} else {
arr = ['2021-05', '2021-04', '2021-03', '2021-02', '2021-01', '2020-12']
}
return arr
},
},
created() {
setInterval(() => {
mounted() {
//
this.getMbpsByTime(this.currentIndex)
this.time = setInterval(() => {
//
this.getMbpsByTime(this.currentIndex)
}, 4000)
},
mounted() {
}, 200000)
//
this.getOptions()
},
unmounted() {
clearInterval(this.time)
this.time = null
},
methods: {
//
changeCycle(index) {
@ -114,9 +125,13 @@ export default defineComponent({
//
getOptions() {
const { weightOfIns, weightOfOuts, timeArray } = this
const comparisonChart = document.getElementById('comparisonChart')
this.myCharts = echarts.init(comparisonChart)
this.myCharts.setOption({
// domecharts
let comparisonChart = document.getElementById('comparisonChart')
comparisonChart.removeAttribute('_echarts_instance_')
let myChart1 = echarts.init(comparisonChart)
myChart1.setOption({
tooltip: {
trigger: 'axis',
axisPointer: {

54
src/components/dashboardOne.vue

@ -1,6 +1,6 @@
<template>
<div class="clock">
<div :style="{ width: '96%', height: '96%',margin: '40% auto'}" id="saturate1"></div>
<div :style="{ width: '100%', height: '96%',margin: '40% auto'}" id="saturate1"></div>
</div>
</template>
@ -15,6 +15,7 @@ export default defineComponent({
return {
myCharts: {},
temps: [],
time: null,
}
},
@ -59,18 +60,21 @@ export default defineComponent({
},
},
created() {
setInterval(() => {
mounted() {
this.getTeamAndHumidity()
this.time = setInterval(() => {
//
this.getTeamAndHumidity()
}, 3500)
},
mounted() {
}, 60000)
//
this.getOptions()
},
unmounted() {
clearInterval(this.time)
this.time = null
},
methods: {
/** 湿
* @param {number} endTime 结束时间
@ -91,12 +95,16 @@ export default defineComponent({
getOptions() {
//
const { tempArray, timeArray } = this
const saturate1 = document.getElementById('saturate1')
this.myCharts = echarts.init(saturate1)
this.myCharts.setOption({
// domecharts
let saturate1 = document.getElementById('saturate1')
saturate1.removeAttribute('_echarts_instance_')
let myChart1 = echarts.init(saturate1)
myChart1.setOption({
series: [
{
type: "gauge",
type: 'gauge',
progress: {
show: true,
width: -15,
@ -110,43 +118,43 @@ export default defineComponent({
show: false,
},
splitLine: {
length: 20,
length: 10,
lineStyle: {
width: 1,
color: "#999",
color: '#999',
},
},
axisLabel: {
distance: -10,
color: "#999",
fontSize: 12,
distance: -15,
color: '#999',
fontSize: 10,
},
anchor: {
show: true,
showAbove: true,
size: 15,
itemStyle: {
borderWidth: 10,
borderWidth: 20,
},
},
title: {
fontSize: 12,
color: "#fff",
color: '#fff',
},
detail: {
valueAnimation: true,
fontSize: 18,
color: "#fff",
color: '#fff',
},
data: [
{
value: 62.89,
name: "停车位",
name: '停车位',
title: {
offsetCenter: ["0%", "70%"],
offsetCenter: ['0%', '80%'],
},
detail: {
offsetCenter: ["0%", "100%"],
offsetCenter: ['0%', '120%'],
},
},
],
@ -164,7 +172,7 @@ export default defineComponent({
width: 1440rem;
height: 1110rem;
}
.clock{
.clock {
margin-left: 10%;
width: 200rem;
height: 200rem;

68
src/components/dashboardTow.vue

@ -1,6 +1,6 @@
<template>
<div class="clock">
<div :style="{ width: '96%', height: '96%',margin: '40% auto'}" id="saturate2"></div>
<div :style="{ width: '90%', height: '96%',margin: '40% auto'}" id="saturate2"></div>
</div>
</template>
@ -15,6 +15,7 @@ export default defineComponent({
return {
myCharts: {},
temps: [],
time: null,
}
},
@ -59,18 +60,21 @@ export default defineComponent({
},
},
created() {
setInterval(() => {
mounted() {
this.getTeamAndHumidity()
this.time = setInterval(() => {
//
this.getTeamAndHumidity()
}, 3500)
},
mounted() {
}, 90000)
//
this.getOptions()
},
unmounted() {
clearInterval(this.time)
this.time = null
},
methods: {
/** 湿
* @param {number} endTime 结束时间
@ -91,68 +95,72 @@ export default defineComponent({
getOptions() {
//
const { tempArray, timeArray } = this
const saturate2 = document.getElementById('saturate2')
this.myCharts = echarts.init(saturate2)
this.myCharts.setOption({
// domecharts
let saturate2 = document.getElementById('saturate2')
saturate2.removeAttribute('_echarts_instance_')
let myChart1 = echarts.init(saturate2)
myChart1.setOption({
series: [
{
type: "gauge",
type: 'gauge',
axisLine: {
lineStyle: {
width: 15,
color: [
[0.3, "#67e0e3"],
[0.7, "#37a2da"],
[1, "#fd666d"],
[0.3, '#67e0e3'],
[0.7, '#37a2da'],
[1, '#fd666d'],
],
},
},
pointer: {
itemStyle: {
color: "auto",
color: 'auto',
},
},
axisTick: {
distance: -30,
length: 8,
lineStyle: {
color: "#fff",
width: 2,
color: '#fff',
width: 1,
},
},
splitLine: {
distance: -30,
length: 30,
lineStyle: {
color: "#fff",
width: 4,
color: '#fff',
width: 3,
},
},
axisLabel: {
color: "auto",
distance: 20,
fontSize: 12,
color: 'auto',
distance: 18,
fontSize: 10,
},
title: {
fontSize: 12,
color: "#fff",
color: '#fff',
},
detail: {
valueAnimation: true,
formatter: "{value} %",
color: "#fff",
formatter: '{value} %',
color: '#fff',
fontSize: 18,
offsetCenter: [0, "90%"],
offsetCenter: [0, '90%'],
},
data: [
{
value: 73,
name: "使用面积",
name: '使用面积',
title: {
offsetCenter: ["0%", "70%"],
offsetCenter: ['0%', '90%'],
},
detail: {
offsetCenter: ["0%", "100%"],
offsetCenter: ['0%', '130%'],
},
},
],
@ -170,7 +178,7 @@ export default defineComponent({
width: 1440rem;
height: 1110rem;
}
.clock{
.clock {
width: 200rem;
height: 200rem;
}

42
src/components/heat.vue

@ -4,6 +4,11 @@
<div class="word">仓库热力图</div>
</div>
<img :src="src" :style="{ width: '84%', height: '70%',margin: '9% 8%' }" v-if="src" />
<img
:style="{ width: '84%', height: '70%',margin: '9% 8%' }"
src="https://www.tall.wiki/gateway/logistics/uploads//file/2021-05-14/162097666558154.png"
v-else
/>
</div>
</template>
@ -17,19 +22,37 @@ export default defineComponent({
return {
myCharts: {},
src: '',
time: null,
}
},
created() {
setInterval(() => {
//
this.getHeatImaging()
}, 5000)
},
// watch: {
// $route: {
// handler: function (val, oldVal) {
// console.log('val, oldVal: ', val, oldVal)
// this.$nextTick(function () {
// //
// if (val.path) {
// this.getHeatImaging(this.currentIndex)
// }
// })
// },
// //
// deep: true,
// },
// },
mounted() {
//
this.getHeatImaging()
this.time = setInterval(() => {
this.getHeatImaging()
}, 5000)
},
unmounted() {
clearInterval(this.time)
this.time = null
},
methods: {
@ -38,9 +61,12 @@ export default defineComponent({
*/
async getHeatImaging() {
try {
const param = {}
const { warehouseId } = this.$route.query
const param = { warehouseId: warehouseId ? warehouseId : 7 }
const data = await getHeatImaging(param)
this.src = data.imageData
if (data && data.imageData) {
this.src = data.imageData
}
} catch (error) {
console.log('error: ', error)
}

26
src/components/humidity.vue

@ -18,6 +18,7 @@ export default defineComponent({
return {
myCharts: {},
humiditys: [],
time: null,
}
},
@ -62,18 +63,21 @@ export default defineComponent({
},
},
created() {
setInterval(() => {
mounted() {
this.getTeamAndHumidity()
this.time = setInterval(() => {
//
this.getTeamAndHumidity()
}, 4500)
},
mounted() {
}, 150000)
//
this.getOptions()
},
unmounted() {
clearInterval(this.time)
this.time = null
},
methods: {
/** 湿
* @param {number} endTime 结束时间
@ -94,9 +98,13 @@ export default defineComponent({
//
getOptions() {
const { humidityArray, timeArray } = this
const humidity = document.getElementById('humidity')
this.myCharts = echarts.init(humidity)
this.myCharts.setOption({
// domecharts
let humidity = document.getElementById('humidity')
humidity.removeAttribute('_echarts_instance_')
let myChart1 = echarts.init(humidity)
myChart1.setOption({
tooltip: {},
xAxis: {
type: 'category',

30
src/components/memorabilia.vue

@ -38,34 +38,28 @@ export default defineComponent({
return {
details: [
{
title: '防火墙',
time: '2021-04-08',
title: '物流园区升级',
time: '两周前',
describe:
'有助于提高计算机的安全性。Windows防火墙能够限制从其他计算机送到用户计算机上的信息,这使得用户可以更好的控制',
'中国第一个保税物流园区升级 形成1+1+3联动发展新格局。外高桥港综合保税区今后将发挥“保税+”功能优势,围绕“提质、升级、开放、创新”,推动产业链、供应链、价值链和创新链融合发展,探索具有创新示范意义、体现差异化竞争、发挥引领作用的外高桥港综合保税区创新试验新路子,为我国改革开放积累新经验、提供新样本。',
},
{
title: '代理服务器',
time: '2021-04-08',
title: '物流园区资产证券化探索与突破',
time: '一个月前',
describe:
'代理服务器代表内部客户端与外部的服务器通信,代理服务器这个术语通常是指一个应用级的网关,虽然电路级网关也可作为代理服务器的一种',
'观察当前物流市场,物流园区的盈利模式明确,现金流相对稳定,比较符合发行公募REITs的条件。对于一些自持物流园区的电商企业来说,扩大规模的需求是明确且迫切的,但自建仓储对财务的影响也是现实存在的。公募REITs的推行正好能缓解重资产对财务造成的压力。',
},
{
title: '包过滤',
time: '2021-04-08',
title: '物流园区的未来前景',
time: '一周前',
describe:
'包过滤是处理网络上基于packet-by-packet流量的设备,包过滤设备允许或阻止包,典型的实施方法是通过标准的路由器,包过滤是几种不同防火墙的类型之一.',
'利用信息互联网和设施物联网推动物流园区的全面接入,以信息互联、设施互联带动物流互联,实现园区业务线上化转型,打造在线物流园区。',
},
{
title: '电路级网关',
time: '2021-04-08',
title: '积极开展安全生产检查',
time: '3天前',
describe:
'电路级网关用来监控受信任的客户或服务器与不受信任的主机间的TCP握手信息,这样来决定这个会话是否悠哉游哉,电路级网关是在OSI模型中会话层上来过滤数据包',
},
{
title: '代理服务器',
time: '2021-04-08',
describe:
'代理服务器代表内部客户端与外部的服务器通信,代理服务器这个术语通常是指一个应用级的网关,虽然电路级网关也可作为代理服务器的一种.',
'近日,物流园区安监局对落实企业安全生产主体责任情况进行专项检查,执法人员实地查看了公司的维修车间、配件存储库房、喷漆车间,并对公司安全生产各类档案建立情况进行检查。针对检查中发现的问题隐患,下达《责令限期整改指令书》,要求企业限期整改落实,确保企业生产安全。',
},
],
}

28
src/components/saturate.vue

@ -3,15 +3,19 @@
<div class="title-value">
<div class="word">饱和量仪表盘</div>
</div>
<div class="dashboardFather" :style="{ width: '96%', height: '96%',margin: 'auto 3% auto 5%' }" id="saturate">
<div :style="{ width: '46%', height: '96%'}">
<div
:style="{ width: '96%', height: '96%',margin: 'auto 3% auto 5%' }"
class="dashboardFather"
id="saturate"
>
<div :style="{ width: '46%', height: '96%'}">
<!-- 停车位 -->
<dashboard-one />
</div>
<div :style="{ width: '46%', height: '96%'}">
<dashboard-one />
</div>
<div :style="{ width: '46%', height: '96%'}">
<!-- 使用面积 -->
<dashboard-tow />
</div>
<dashboard-tow />
</div>
</div>
</div>
</template>
@ -22,9 +26,9 @@ import DashboardOne from 'comp/dashboardOne.vue'
import DashboardTow from 'comp/dashboardTow.vue'
export default defineComponent({
name: 'saturate',
components:{
DashboardOne,
DashboardTow
components: {
DashboardOne,
DashboardTow,
},
data() {
return {
@ -32,10 +36,6 @@ export default defineComponent({
temps: [],
}
},
})
</script>

30
src/components/temperature.vue

@ -18,6 +18,7 @@ export default defineComponent({
return {
myCharts: {},
temps: [],
time: null,
}
},
@ -62,18 +63,21 @@ export default defineComponent({
},
},
created() {
setInterval(() => {
mounted() {
this.getTeamAndHumidity()
this.time = setInterval(() => {
//
this.getTeamAndHumidity()
}, 3500)
},
mounted() {
}, 100000)
//
this.getOptions()
},
unmounted() {
clearInterval(this.time)
this.time = null
},
methods: {
/** 湿
* @param {number} endTime 结束时间
@ -91,12 +95,16 @@ export default defineComponent({
}
},
//
getOptions() {
//
const { tempArray, timeArray } = this
const temperature = document.getElementById('temperature')
this.myCharts = echarts.init(temperature)
this.myCharts.setOption({
let { tempArray, timeArray } = this
// domecharts
let temperature = document.getElementById('temperature')
temperature.removeAttribute('_echarts_instance_')
let myChart1 = echarts.init(temperature)
myChart1.setOption({
tooltip: {},
xAxis: {
type: 'category',

27
src/components/throughput.vue

@ -18,23 +18,26 @@ export default defineComponent({
return {
myCharts: {},
temps: [],
time: null,
}
},
created() {
setInterval(() => {
mounted() {
this.getTeamAndHumidity()
this.time = setInterval(() => {
//
this.getTeamAndHumidity()
}, 3500)
},
mounted() {
//
this.getOptions()
},
unmounted() {
clearInterval(this.time)
this.time = null
},
methods: {
async getTeamAndHumidity() {
try {
const { parkId, warehouseId } = this.$route.query
@ -46,13 +49,15 @@ export default defineComponent({
}
},
//
getOptions() {
//
const comaprethroughput = document.getElementById('comaprethroughput')
this.myCharts = echarts.init(comaprethroughput)
this.myCharts.setOption({
tooltip: {},
// domecharts
let comaprethroughput = document.getElementById('comaprethroughput')
comaprethroughput.removeAttribute('_echarts_instance_')
let myChart1 = echarts.init(comaprethroughput)
myChart1.setOption({
tooltip: {},
series: [
{
name: '仓库吞吐量对比图',

36
src/components/toolbar.vue

@ -3,15 +3,15 @@
<div class="flex flex-row items-center left-text">
<img class="mr-28 wheater" src="../assets/yin.png" />
<div class="flex flex-col ml-3 text-white">
<div v-if="humidity">{{ humidity }}%RH</div>
<div v-if="temp">{{ temp }}</div>
<div style="fontSize: 16rem" v-if="humidity">{{ humidity }}%RH</div>
<div style="fontSize: 16rem" v-if="temp">{{ temp }}</div>
</div>
</div>
<div class="flex-1 title-name">{{ title }}电子看板</div>
<div class="flex flex-row justify-end left-text">
<div class="time">{{ time }}</div>
<img class="wheater" src="../assets/huo.png" v-if="isFire" />
<img class="wheater" src="../assets/shui.png" v-if="isFlood" />
<img class="wheater state" src="../assets/huo.png" v-if="isFire" />
<img class="wheater state" src="../assets/shui.png" v-if="isFlood" />
</div>
</div>
</template>
@ -23,11 +23,13 @@ import { getTeamAndHumidity, getFireOrFlood } from 'api/api'
export default defineComponent({
data() {
return {
time: '7',
time: '',
isFire: false, //
isFlood: false, //
humidity: '', // 湿
temp: '', //
teamTime: null,
fireTime: null,
}
},
@ -60,17 +62,24 @@ export default defineComponent({
mounted() {
//
setInterval(() => {
this.teamTime = setInterval(() => {
this.getNowFormatDate()
}, 1000)
setInterval(() => {
this.fireTime = setInterval(() => {
//
this.getTeamAndHumidity()
this.getFireOrFlood()
}, 3000)
},
unmounted() {
clearInterval(this.teamTime)
this.teamTime = null
clearInterval(this.fireTime)
this.fireTime = null
},
methods: {
// 湿
async getTeamAndHumidity() {
@ -181,4 +190,17 @@ export default defineComponent({
color: #52d0ff;
margin-right: 6rem;
}
@keyframes twinkling {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
.state {
animation: twinkling 1s infinite;
}
</style>

17
src/views/vedioScreen.vue → src/components/vedioScreen.vue

@ -1,18 +1,15 @@
<template>
<div class="flex w-screen h-screen min-h-0 bg-black">
<div
class="flex w-screen h-screen min-h-0 bg-black"
style="position:absolute;top:0;left:0;z-index:99999"
>
<!-- <img class="frame1" src="../assets/vedio-img.png" /> -->
<div class="frame1">
<iframe
frameborder="0"
height="100%"
scrolling="no"
src="https://www.tall.wiki/kangfu-v1/?key=230659446"
width="100%"
></iframe>
<iframe :src="iframeSrc" frameborder="0" height="100%" scrolling="no" width="100%"></iframe>
<!-- 生产 https://www.tall.wiki/kangfu-v1/?key=E83239936 -->
<!-- 测试 https://www.tall.wiki/kangfu-v1/?key=230659446 -->
<div class="screen">
<img @click="$router.go(-1)" class="frame2" src="../assets/closeScreen.png" />
<img @click="$emit('closeScreen')" class="frame2" src="../assets/closeScreen.png" />
</div>
</div>
</div>
@ -22,6 +19,8 @@
import { defineComponent } from 'vue'
export default defineComponent({
name: 'vedioScreen',
props: { iframeSrc: { type: String, default: '' } },
data() {
return {}
},

2
src/router/index.ts

@ -17,7 +17,7 @@ const router = createRouter({
{ path: '/jht', component: () => import('views/jht.vue') },
{ path: '/xh', component: () => import('views/xh.vue') },
{ path: '/yj', component: () => import('views/yj.vue') },
{ path: '/vs', component: () => import('views/vedioScreen.vue') },
// { path: '/vs', component: () => import('views/vedioScreen.vue') },
],
strict: true
});

81
src/views/jht.vue

@ -37,32 +37,48 @@
v-for="(item, index) in urls"
>{{ item.name }}</div>
</div>
<!-- 悬浮监控 -->
<img @click="show = true" class="monitor" src="../assets/monitor.png" style />
<!-- 悬浮监控1 -->
<img @click="getWarehouses('show1')" class="monitor" src="../assets/monitor.png" style />
<div class="vedio" v-show="show">
<div class="head">
<div class="camera">摄像头监控视频</div>
<img @click="show = false" class="close" src="../assets/close.png" />
</div>
<div class="frame">
<!-- <img class="frame1" src="../assets/vedio-img.png" /> -->
<div class="frame1">
<iframe
frameborder="0"
height="100%"
scrolling="no"
src="https://www.tall.wiki/kangfu-v1/?key=230659446"
width="100%"
></iframe>
<!-- 生产 https://www.tall.wiki/kangfu-v1/?key=E83239936 -->
<!-- 测试 https://www.tall.wiki/kangfu-v1/?key=230659446 -->
<iframe :src="iframeSrc1" frameborder="0" height="100%" scrolling="no" width="100%"></iframe>
<div class="screen">
<img @click="showScreen = true" class="frame2" src="../assets/fullScreen.png" />
</div>
</div>
</div>
</div>
<!-- 全屏监控 -->
<vedio-screen :iframeSrc="iframeSrc1" @closeScreen="closeScreen" v-if="showScreen" />
<!-- 悬浮监控2 -->
<img
@click="getWarehouses('show2')"
class="monitor monitor2"
src="../assets/monitor-left.png"
style
/>
<div class="vedio" v-show="show2">
<div class="head">
<div class="camera">摄像头监控视频</div>
<img @click="show2 = false" class="close" src="../assets/close.png" />
</div>
<div class="frame">
<div class="frame1">
<iframe :src="iframeSrc2" frameborder="0" height="100%" scrolling="no" width="100%"></iframe>
<div class="screen">
<img @click="$router.push('/vs')" class="frame2" src="../assets/fullScreen.png" />
<img @click="showScreen = true" class="frame2" src="../assets/fullScreen.png" />
</div>
</div>
</div>
</div>
<!-- 全屏监控 -->
<vedio-screen :iframeSrc="iframeSrc2" @closeScreen="closeScreen" v-if="showScreen" />
</div>
</template>
@ -75,6 +91,7 @@ import Throughput from 'comp/throughput.vue'
import Amount from 'comp/amount.vue'
import Heat from 'comp/heat.vue'
import Curve from 'comp/curve.vue'
import VedioScreen from 'comp/vedioScreen.vue'
import { getWarehouses } from 'api/api'
export default defineComponent({
@ -84,6 +101,7 @@ export default defineComponent({
Amount,
Heat,
Curve,
VedioScreen,
Memorabilia,
Throughput,
},
@ -91,6 +109,8 @@ export default defineComponent({
data() {
return {
show: false,
show2: false,
showScreen: false,
urls: [
{
path: '/jht',
@ -117,19 +137,37 @@ export default defineComponent({
active: false,
},
],
iframeSrc1: '',
iframeSrc2: '',
}
},
created() {
this.getWarehouses()
},
methods: {
//
closeScreen() {
this.showScreen = false
},
//
async getWarehouses() {
async getWarehouses(value) {
try {
if (value === 'show1') {
if (this.show2) {
this.show2 = false
}
this.show = true
}
if (value === 'show2') {
if (this.show) {
this.show = false
}
this.show2 = true
}
const data = await getWarehouses({ parkId: 1 })
console.log('data: ', data)
if (data && data.parkEquipment && data.parkEquipment.length) {
this.iframeSrc1 = data.parkEquipment[0].equipmentLocation
this.iframeSrc2 = data.parkEquipment[1].equipmentLocation
}
} catch (error) {
console.log('error: ', error)
}
@ -140,4 +178,7 @@ export default defineComponent({
<style>
@import './style.css';
.monitor2 {
top: 15%;
}
</style>

42
src/views/repo-five.vue

@ -38,7 +38,7 @@
>{{ item.name }}</div>
</div>
<!-- 悬浮监控 -->
<img @click="show = true" class="monitor" src="../assets/monitor.png" style />
<img @click="getWarehouses" class="monitor" src="../assets/monitor.png" style />
<div class="vedio" v-show="show">
<div class="head">
@ -46,24 +46,17 @@
<img @click="show = false" class="close" src="../assets/close.png" />
</div>
<div class="frame">
<!-- <img class="frame1" src="../assets/vedio-img.png" /> -->
<div class="frame1">
<iframe
frameborder="0"
height="100%"
scrolling="no"
src="https://www.tall.wiki/kangfu-v1/?key=230659446"
width="100%"
></iframe>
<!-- 生产 https://www.tall.wiki/kangfu-v1/?key=E83239936 -->
<!-- 测试 https://www.tall.wiki/kangfu-v1/?key=230659446 -->
<iframe :src="iframeSrc" frameborder="0" height="100%" scrolling="no" width="100%"></iframe>
<div class="screen">
<img @click="$router.push('/vs')" class="frame2" src="../assets/fullScreen.png" />
<img @click="showScreen = true" class="frame2" src="../assets/fullScreen.png" />
</div>
</div>
</div>
</div>
<!-- <img @click="show = false" class="vedio" src="../assets/vedio.png" v-show="show" /> -->
<!-- 全屏监控 -->
<vedio-screen :iframeSrc="iframeSrc" @closeScreen="closeScreen" v-if="showScreen" />
</div>
</template>
@ -75,6 +68,7 @@ import Humidity from 'comp/humidity.vue'
import Amount from 'comp/amount.vue'
import Heat from 'comp/heat.vue'
import Curve from 'comp/curve.vue'
import VedioScreen from 'comp/vedioScreen.vue'
import { getWarehouses } from 'api/api'
export default defineComponent({
@ -85,11 +79,13 @@ export default defineComponent({
Amount,
Heat,
Curve,
VedioScreen,
},
data() {
return {
show: false,
showScreen: false,
urls: [
{
path: '/jht',
@ -116,20 +112,28 @@ export default defineComponent({
active: true,
},
],
iframeSrc: '',
}
},
created() {
this.getWarehouses()
},
methods: {
//
closeScreen() {
this.showScreen = false
},
//
async getWarehouses() {
try {
const { parkId } = this.$route.query
const param = { parkId: parkId ? parkId : 1 }
this.show = true
const param = { parkId: 2 }
const data = await getWarehouses(param)
if (data && data.warehouseInfo && data.warehouseInfo.length) {
let item = data.warehouseInfo.find((item) => item.warehouseId === '7')
if (item && item.cameras && item.cameras.length) {
this.iframeSrc = item.cameras[0].equipmentLocation
}
}
} catch (error) {
console.log('error: ', error)
}

102
src/views/xh.vue

@ -6,21 +6,21 @@
<div class="flex flex-col flex-1 con">
<div class="flex justify-between floor1">
<!-- 温度 -->
<Temperature />
<!-- 湿度 -->
<Humidity />
<!-- 大事记 -->
<Memorabilia />
<!-- 饱和量 -->
<Saturate />
</div>
<div class="flex-1 iframe-wrap">
<iframe src="https://www.tall.wiki/wl/2"></iframe>
<iframe src="https://www.tall.wiki/wl/1"></iframe>
</div>
<div class="flex justify-between floor3">
<!-- 吞土量实时统计 -->
<Amount />
<!-- 仓库热力 -->
<Heat />
<!-- 仓库吞吐量对比 -->
<Throughput />
</div>
<!-- 曲线对比图 -->
<div class="floor4">
@ -37,57 +37,80 @@
v-for="(item, index) in urls"
>{{ item.name }}</div>
</div>
<!-- 悬浮监控 -->
<img @click="show = true" class="monitor" src="../assets/monitor.png" style />
<!-- 悬浮监控1 -->
<img @click="getWarehouses('show1')" class="monitor" src="../assets/monitor.png" style />
<div class="vedio" v-show="show">
<div class="head">
<div class="camera">摄像头监控视频</div>
<img @click="show = false" class="close" src="../assets/close.png" />
</div>
<div class="frame">
<!-- <img class="frame1" src="../assets/vedio-img.png" /> -->
<div class="frame1">
<iframe
frameborder="0"
height="100%"
scrolling="no"
src="https://www.tall.wiki/kangfu-v1/?key=230659446"
width="100%"
></iframe>
<!-- 生产 https://www.tall.wiki/kangfu-v1/?key=E83239936 -->
<!-- 测试 https://www.tall.wiki/kangfu-v1/?key=230659446 -->
<iframe :src="iframeSrc1" frameborder="0" height="100%" scrolling="no" width="100%"></iframe>
<div class="screen">
<img @click="$router.push('/vs')" class="frame2" src="../assets/fullScreen.png" />
<img @click="showScreen = true" class="frame2" src="../assets/fullScreen.png" />
</div>
</div>
</div>
</div>
<!-- 全屏监控 -->
<vedio-screen :iframeSrc="iframeSrc1" @closeScreen="closeScreen" v-if="showScreen" />
<!-- 悬浮监控2 -->
<img
@click="getWarehouses('show2')"
class="monitor monitor2"
src="../assets/monitor-left.png"
style
/>
<div class="vedio" v-show="show2">
<div class="head">
<div class="camera">摄像头监控视频</div>
<img @click="show2 = false" class="close" src="../assets/close.png" />
</div>
<div class="frame">
<div class="frame1">
<iframe :src="iframeSrc2" frameborder="0" height="100%" scrolling="no" width="100%"></iframe>
<div class="screen">
<img @click="showScreen = true" class="frame2" src="../assets/fullScreen.png" />
</div>
</div>
</div>
</div>
<!-- 全屏监控 -->
<vedio-screen :iframeSrc="iframeSrc2" @closeScreen="closeScreen" v-if="showScreen" />
</div>
</template>
<script lang="ts">
import { defineComponent } from 'vue'
import Memorabilia from 'comp/memorabilia.vue'
import Toolbar from 'comp/toolbar.vue'
import Temperature from 'comp/temperature.vue'
import Humidity from 'comp/humidity.vue'
import Saturate from 'comp/saturate.vue'
import Throughput from 'comp/throughput.vue'
import Amount from 'comp/amount.vue'
import Heat from 'comp/heat.vue'
import Curve from 'comp/curve.vue'
import VedioScreen from 'comp/vedioScreen.vue'
import { getWarehouses } from 'api/api'
export default defineComponent({
components: {
Toolbar,
Temperature,
Humidity,
Saturate,
Amount,
Heat,
Curve,
VedioScreen,
Memorabilia,
Throughput,
},
data() {
return {
show: false,
show2: false,
showScreen: false,
urls: [
{
path: '/jht',
@ -114,17 +137,37 @@ export default defineComponent({
active: false,
},
],
iframeSrc1: '',
iframeSrc2: '',
}
},
created() {
this.getWarehouses()
},
methods: {
//
closeScreen() {
this.showScreen = false
},
//
async getWarehouses() {
async getWarehouses(value) {
try {
if (value === 'show1') {
if (this.show2) {
this.show2 = false
}
this.show = true
}
if (value === 'show2') {
if (this.show) {
this.show = false
}
this.show2 = true
}
const data = await getWarehouses({ parkId: 2 })
if (data && data.parkEquipment && data.parkEquipment.length) {
this.iframeSrc1 = data.parkEquipment[0].equipmentLocation
this.iframeSrc2 = data.parkEquipment[1].equipmentLocation
}
} catch (error) {
console.log('error: ', error)
}
@ -135,4 +178,7 @@ export default defineComponent({
<style>
@import './style.css';
.monitor2 {
top: 15%;
}
</style>

40
src/views/yj.vue

@ -38,30 +38,24 @@
>{{ item.name }}</div>
</div>
<!-- 悬浮监控 -->
<img @click="show = true" class="monitor" src="../assets/monitor.png" style />
<img @click="getWarehouses" class="monitor" src="../assets/monitor.png" style />
<div class="vedio" v-show="show">
<div class="head">
<div class="camera">摄像头监控视频</div>
<img @click="show = false" class="close" src="../assets/close.png" />
</div>
<div class="frame">
<!-- <img class="frame1" src="../assets/vedio-img.png" /> -->
<div class="frame1">
<iframe
frameborder="0"
height="100%"
scrolling="no"
src="https://www.tall.wiki/kangfu-v1/?key=230659446"
width="100%"
></iframe>
<!-- 生产 https://www.tall.wiki/kangfu-v1/?key=E83239936 -->
<!-- 测试 https://www.tall.wiki/kangfu-v1/?key=230659446 -->
<iframe :src="iframeSrc" frameborder="0" height="100%" scrolling="no" width="100%"></iframe>
<div class="screen">
<img @click="$router.push('/vs')" class="frame2" src="../assets/fullScreen.png" />
<img @click="showScreen = true" class="frame2" src="../assets/fullScreen.png" />
</div>
</div>
</div>
</div>
<!-- 全屏监控 -->
<vedio-screen :iframeSrc="iframeSrc" @closeScreen="closeScreen" v-if="showScreen" />
</div>
</template>
@ -73,6 +67,7 @@ import Humidity from 'comp/humidity.vue'
import Amount from 'comp/amount.vue'
import Heat from 'comp/heat.vue'
import Curve from 'comp/curve.vue'
import VedioScreen from 'comp/vedioScreen.vue'
import { getWarehouses } from 'api/api'
export default defineComponent({
@ -83,11 +78,13 @@ export default defineComponent({
Amount,
Heat,
Curve,
VedioScreen,
},
data() {
return {
show: false,
showScreen: false,
urls: [
{
path: '/jht',
@ -114,18 +111,27 @@ export default defineComponent({
active: false,
},
],
iframeSrc: '',
}
},
created() {
this.getWarehouses()
},
methods: {
//
closeScreen() {
this.showScreen = false
},
//
async getWarehouses() {
try {
const data = await getWarehouses({ parkId: 0 })
console.log('data: ', data)
this.show = true
const data = await getWarehouses({ parkId: 1 })
if (data && data.warehouseInfo && data.warehouseInfo.length) {
let item = data.warehouseInfo.find((item) => item.warehouseId === '6')
if (item && item.cameras && item.cameras.length) {
this.iframeSrc = item.cameras[0].equipmentLocation
}
}
} catch (error) {
console.log('error: ', error)
}

1
vite.config.js

@ -6,6 +6,7 @@ import pkg from './package.json'
export default ({ mode }) => {
return defineConfig({
plugins: [vue()],
base: '/wl/5/',
server: {
open: true,
proxy: {

Loading…
Cancel
Save