parent
95402becad
commit
29e0ed7198
@ -0,0 +1,66 @@ |
||||
import axios from '@/utils/request' |
||||
// 查询分页数据:
|
||||
export const vehicleList = (arg) => { |
||||
return axios.request({ |
||||
url: '/vehicle/list', |
||||
method: 'get', |
||||
params: arg, |
||||
dataType: 'json', |
||||
|
||||
}) |
||||
} |
||||
// 查询详情数据:
|
||||
export const vehicleGetById = (arg) => { |
||||
return axios.request({ |
||||
url: `/vehicle/getById`, |
||||
method: 'get', |
||||
params: arg, |
||||
dataType: 'json', |
||||
|
||||
}) |
||||
} |
||||
|
||||
// 添加数据:
|
||||
export const vehicleAdd = (arg) => { |
||||
return axios.request({ |
||||
url: '/vehicle/add', |
||||
method: 'post', |
||||
data: arg, |
||||
dataType: 'json', |
||||
|
||||
}) |
||||
} |
||||
|
||||
// 修改数据:
|
||||
export const vehicleUpdate = (arg) => { |
||||
return axios.request({ |
||||
url: '/vehicle/update', |
||||
method: 'put', |
||||
data: arg, |
||||
dataType: 'json', |
||||
|
||||
}) |
||||
} |
||||
|
||||
// 删除数据:
|
||||
export const vehicleDelete = (arg) => { |
||||
return axios.request({ |
||||
url: '/vehicle/delete', |
||||
method: 'delete', |
||||
params: { |
||||
id:arg.id[0] |
||||
}, |
||||
dataType: 'json', |
||||
|
||||
}) |
||||
} |
||||
// 查询分页数据:
|
||||
export const iproductionplanList = (arg) => { |
||||
return axios.request({ |
||||
url: '/iproductionplan/list', |
||||
method: 'get', |
||||
params: arg, |
||||
dataType: 'json', |
||||
|
||||
}) |
||||
} |
@ -0,0 +1,100 @@ |
||||
<script setup> |
||||
import { reactive } from 'vue' |
||||
import { vehicleList, vehicleAdd, vehicleUpdate, vehicleDelete, vehicleGetById, iproductionplanList } from './api' |
||||
import { baseModelOptions, baseFilterOptions } from './options' |
||||
import { useRouter } from 'vue-router'; |
||||
|
||||
const cameraList = reactive([ |
||||
{ name: '5305#摄像头', source: 'rtsp://admin:admin@IP_ADDRESS' }, |
||||
{ name: '5601#摄像头', source: 'rtsp://admin:admin@IP_ADDRESS' } |
||||
]) |
||||
const state = reactive({ |
||||
currentCameraIndex: 0 |
||||
}) |
||||
</script> |
||||
|
||||
<template> |
||||
<div class="app-container"> |
||||
<!-- 监控摄像头名称列表 --> |
||||
<div class="camera-name-list"> |
||||
<template v-for="(camera, index) in cameraList" :key="index"> |
||||
<span |
||||
class="camera-name" |
||||
@click="switchCamera(index)" |
||||
:class="{ active: state.currentCameraIndex === index }" |
||||
> |
||||
{{ camera.name }} |
||||
</span> |
||||
</template> |
||||
</div> |
||||
<!-- 摄像头展示区域 --> |
||||
<div class="camera-display"> |
||||
<video |
||||
v-if="state.currentCameraIndex !== -1" |
||||
:src="cameraList[state.currentCameraIndex].source" |
||||
controls |
||||
autoplay |
||||
muted |
||||
></video> |
||||
<p v-else>请选择摄像头</p> |
||||
</div> |
||||
</div> |
||||
</template> |
||||
|
||||
<style scoped> |
||||
.app-container { |
||||
display: flex; |
||||
flex-direction: column; |
||||
align-items: center; |
||||
padding: 20px; |
||||
min-height: 100vh; |
||||
} |
||||
|
||||
.camera-name-list { |
||||
display: flex; |
||||
gap: 15px; |
||||
margin-bottom: 20px; |
||||
flex-wrap: wrap; |
||||
justify-content: center; |
||||
} |
||||
|
||||
.camera-name { |
||||
padding: 8px 16px; |
||||
border: 1px solid #ccc; |
||||
border-radius: 20px; |
||||
cursor: pointer; |
||||
transition: all 0.3s ease; |
||||
background-color: white; |
||||
} |
||||
|
||||
.camera-name:hover { |
||||
background-color: #e0e0e0; |
||||
transform: translateY(-2px); |
||||
} |
||||
|
||||
.camera-name.active { |
||||
background-color: #2196F3; |
||||
color: white; |
||||
border-color: #2196F3; |
||||
} |
||||
|
||||
.camera-display { |
||||
width: 80%; |
||||
max-width: 800px; |
||||
background-color: #fff; |
||||
padding: 20px; |
||||
border-radius: 8px; |
||||
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); |
||||
} |
||||
|
||||
video { |
||||
width: 100%; |
||||
height: auto; |
||||
} |
||||
|
||||
p { |
||||
text-align: center; |
||||
color: #666; |
||||
font-size: 18px; |
||||
} |
||||
</style> |
@ -0,0 +1,43 @@ |
||||
export const baseModelOptions = () => { |
||||
return [ |
||||
|
||||
] |
||||
} |
||||
|
||||
export const baseFilterOptions = () => { |
||||
return [ |
||||
{ |
||||
tag: 'el-input', |
||||
label: '设备名称:', |
||||
key: 'deviceName', |
||||
value: '', |
||||
default: '', |
||||
attribute: {//属性
|
||||
type: 'text', |
||||
placeholder: '请输入设备名称', |
||||
}, |
||||
}, |
||||
{ |
||||
tag: 'el-input', |
||||
label: 'IMEI:', |
||||
key: 'imei', |
||||
value: '', |
||||
default: '', |
||||
attribute: {//属性
|
||||
type: 'text', |
||||
placeholder: '请输入IMEI', |
||||
}, |
||||
}, |
||||
{ |
||||
tag: 'el-input', |
||||
label: '设备类型:', |
||||
key: 'mcType', |
||||
value: '', |
||||
default: '', |
||||
attribute: {//属性
|
||||
type: 'text', |
||||
placeholder: '请输入设备类型', |
||||
}, |
||||
}, |
||||
] |
||||
} |
Loading…
Reference in new issue