商铺点位、上传音频、视频、照片

lijinlong
吕天方 1 year ago
parent e5dbf62a24
commit 35b190d392

@ -2,7 +2,7 @@
# @Author: 张涛 # @Author: 张涛
# @Date: 2023-11-09 18:29:41 # @Date: 2023-11-09 18:29:41
# @LastEditors: JC9527 # @LastEditors: JC9527
# @LastEditTime: 2023-12-28 19:43:38 # @LastEditTime: 2024-01-04 15:50:30
# @FilePath: \JiangningUrbanManagePc\.env.development # @FilePath: \JiangningUrbanManagePc\.env.development
### ###
# 页面标题 # 页面标题
@ -13,9 +13,10 @@ ENV = 'development'
# 若依管理系统/开发环境 # 若依管理系统/开发环境
# /dev-api # /dev-api
VUE_APP_BASE_API = 'http://39.101.188.84:9037' # VUE_APP_BASE_API = 'http://39.101.188.84:9037'
VUE_APP_BASE_API1 = 'https://t-kd-process-server.jsszkd.com' VUE_APP_BASE_API1 = 'https://t-kd-process-server.jsszkd.com'
# VUE_APP_BASE_API = 'http://192.168.1.142:9037' VUE_APP_BASE_API2 = 'https://t-jn-development-manager-server.jsszkd.com/api/webapp'
VUE_APP_BASE_API = 'http://192.168.0.108:9037'
# 路由懒加载 # 路由懒加载
VUE_CLI_BABEL_TRANSPILE_MODULES = true VUE_CLI_BABEL_TRANSPILE_MODULES = true

@ -1,8 +1,9 @@
import request from "@/utils/request2" import request from "@/utils/request2"
// 事件来源 // 事件来源按日/月纬度统计
export function getDeviceList(params) { export function getTrend(params) {
return request({ return request({
baseURL: process.env.VUE_APP_BASE_API2,
url: "/event/source/trend", url: "/event/source/trend",
method:'get', method:'get',
params params
@ -10,19 +11,21 @@ export function getDeviceList(params) {
} }
// 事件列表查询 // 事件列表查询
export function getQueryViewListPage(data) { export function getQueryViewListPage(params,data) {
return request({ return request({
url: "/api/eform/engine/viewEngine/queryViewListPage", url: "/api/eform/engine/viewEngine/queryViewListPage",
method:'post', method:'post',
params,
data data
}) })
} }
// 自动提交事件---保存事件数据 // 自动提交事件---保存事件数据
export function eventSaveData(data) { export function eventSaveData(params,data) {
return request({ return request({
url: "/api/eform/engine/formEngine/saveData", url: "/api/eform/engine/formEngine/saveData",
method:'post', method:'post',
params,
data data
}) })
} }

@ -97,3 +97,16 @@ export function getCarManageList(params) {
params params
}) })
} }
/**
* 沿街商铺
*/
// 查询沿街店铺列表 streetShop
export function getStreetShopList(params) {
return request({
url: '/jn/shop/list',
method: 'get',
params
})
}

@ -129,7 +129,8 @@
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
width: 194px; // width: 194px;
width: 404px;
height: 30px; height: 30px;
background: linear-gradient(270deg, rgba(9, 32, 53, 0) 0%, rgba(8, 37, 64, 0.98) 51%, rgba(9, 34, 56, 0) 100%); background: linear-gradient(270deg, rgba(9, 32, 53, 0) 0%, rgba(8, 37, 64, 0.98) 51%, rgba(9, 34, 56, 0) 100%);
border-radius: 0px 0px 0px 0px; border-radius: 0px 0px 0px 0px;
@ -304,8 +305,9 @@
// //
.monitoring-popup { .monitoring-popup {
width: 242px; width: 282px;
height: 230px; // height: 230px;
// height: 220px;
background-image: url("../images/popup/bg4.png"); background-image: url("../images/popup/bg4.png");
background-size: 100% 100%; background-size: 100% 100%;
z-index: 600; z-index: 600;
@ -325,7 +327,8 @@
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
width: 194px; // width: 194px;
width: 234px;
height: 30px; height: 30px;
background: linear-gradient(270deg, rgba(9, 32, 53, 0) 0%, rgba(8, 37, 64, 0.98) 51%, rgba(9, 34, 56, 0) 100%); background: linear-gradient(270deg, rgba(9, 32, 53, 0) 0%, rgba(8, 37, 64, 0.98) 51%, rgba(9, 34, 56, 0) 100%);
border-radius: 0px 0px 0px 0px; border-radius: 0px 0px 0px 0px;
@ -342,21 +345,49 @@
} }
.monitoring { .monitoring {
padding: 11px 25px 24px 25px; padding: 11px 0 0 0;
.bg { .monitoring-list {
background-image: url("../images/popup/screenshot20230817.png"); padding: 12px 32px 10px 30px;
background-size: 100% 100%;
width: 192px;
height: 108px;
padding: 2px;
display: flex;
align-items: center;
justify-content: center;
img { .person-info {
width: 92px; display: flex;
cursor: pointer; // align-items: center;
margin-bottom: 10px;
.info-left {
display: flex;
// align-items: center;
width: 45%;
.dot {
width: 4px;
height: 4px;
background: #DAEBFF;
box-shadow: 0px 0px 10px 5px rgba(0, 119, 255, 0.25), 0px 0px 5px 0px rgba(229, 241, 255, 0.25);
border-radius: 20px 20px 20px 20px;
margin-right: 10px;
margin-top: 7px;
}
.name {
text-align: right;
flex: 1;
font-size: 12px;
font-family: Source Han Sans CN-Medium, Source Han Sans CN;
font-weight: 500;
color: #E9F4FF;
line-height: 14px;
}
}
.position {
font-size: 12px;
font-family: Source Han Sans CN-Medium, Source Han Sans CN;
font-weight: 500;
color: #E9F4FF;
line-height: 14px;
margin-right: 9px;
flex: 1;
}
} }
} }
@ -364,7 +395,8 @@
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
margin-top: 16px; // margin-top: 16px;
padding: 0 25px 15px 25px;
.btn { .btn {
background-image: url("../images/popup/icon2btn.png"); background-image: url("../images/popup/icon2btn.png");

@ -4,7 +4,7 @@ const TokenKey = 'Admin-Token'
const AccessToken = 'X-Access-Token' const AccessToken = 'X-Access-Token'
Cookies.set(AccessToken, 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3MDM1MjkyMzAsInVzZXJuYW1lIjoi6LW15YWtIn0.iV5P9-g1X309RxfTiWLb42yk7QBGazSUwKLHSEPeLuA') Cookies.set(AccessToken, 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3MDQzNTgzOTIsInVzZXJuYW1lIjoi6LW15YWtIn0.7aDgV90lBTw7kjK0yNU9UioPPBZzv_rk6iL6cnaAXNk')
export function getAccessToken() { export function getAccessToken() {
return Cookies.get(AccessToken) return Cookies.get(AccessToken)

@ -122,7 +122,7 @@
}, },
{ {
"type": "Feature", "type": "Feature",
"properties": {"name":"监控视频"}, "properties": {"name":"监控视频","status":1},
"geometry": { "geometry": {
"coordinates": [ "coordinates": [
118.79202271621062, 118.79202271621062,
@ -133,7 +133,7 @@
}, },
{ {
"type": "Feature", "type": "Feature",
"properties": {"name":"监控视频"}, "properties": {"name":"监控视频","status":1},
"geometry": { "geometry": {
"coordinates": [ "coordinates": [
118.78822314147698, 118.78822314147698,
@ -144,7 +144,7 @@
}, },
{ {
"type": "Feature", "type": "Feature",
"properties": {"name":"监控视频"}, "properties": {"name":"监控视频","status":0},
"geometry": { "geometry": {
"coordinates": [ "coordinates": [
118.82115278916302, 118.82115278916302,

@ -20,7 +20,8 @@ axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
// 创建axios实例 // 创建axios实例
const service = axios.create({ const service = axios.create({
// axios中请求配置有baseURL选项表示请求URL公共部分 // axios中请求配置有baseURL选项表示请求URL公共部分
baseURL: process.env.NODE_ENV === "production" ? location.origin : process.env.VUE_APP_BASE_API1, // baseURL: process.env.NODE_ENV === "production" ? location.origin : process.env.VUE_APP_BASE_API1,
baseURL: process.env.VUE_APP_BASE_API1,
// 超时 // 超时
timeout: 10000 timeout: 10000
}) })
@ -32,6 +33,7 @@ service.interceptors.request.use(config => {
// 是否需要防止数据重复提交 // 是否需要防止数据重复提交
const isRepeatSubmit = (config.headers || {}).repeatSubmit === false const isRepeatSubmit = (config.headers || {}).repeatSubmit === false
if (getAccessToken() && !isToken) { if (getAccessToken() && !isToken) {
// config.headers['Authorization'] = 'Bearer ' + getAccessToken() // 让每个请求携带自定义token 请根据实际情况自行修改
config.headers['X-Access-Token'] = getAccessToken() // 让每个请求携带自定义token 请根据实际情况自行修改 config.headers['X-Access-Token'] = getAccessToken() // 让每个请求携带自定义token 请根据实际情况自行修改
} }
// get请求映射params参数 // get请求映射params参数

@ -4,7 +4,7 @@
* @Author: JC9527 * @Author: JC9527
* @Date: 2023-08-15 09:44:13 * @Date: 2023-08-15 09:44:13
* @LastEditors: JC9527 * @LastEditors: JC9527
* @LastEditTime: 2023-12-28 23:51:19 * @LastEditTime: 2024-01-04 15:23:57
--> -->
<template> <template>
<div class="left-box"> <div class="left-box">
@ -79,7 +79,7 @@
<script> <script>
import titleBox from '../../components/title/index.vue' import titleBox from '../../components/title/index.vue'
import mapNumber from '../../components/mapLeftNumber/index.vue' import mapNumber from '../../components/mapLeftNumber/index.vue'
import { getDeviceList } from '@/api/bigScreenApi/eventApi.js' import { getQueryViewListPage,getTrend } from '@/api/bigScreenApi/eventApi.js'
export default { export default {
name:'mapLeftContent', name:'mapLeftContent',
components:{titleBox,mapNumber}, components:{titleBox,mapNumber},
@ -139,7 +139,21 @@ export default {
}, },
oneHeight:0, oneHeight:0,
screenHeight:'', screenHeight:'',
$listeners:false $listeners:false,
eventList:{
viewCode:"event-all-list",
pageNo:"1",
pageSize:"10"
},
eventData:{
"queryValue": [
// {
// "colCode": "name",
// "queryValue": "111"
// },
],
"myInstanceClassify": "all"
}
} }
}, },
props:['personLine','carLine'], props:['personLine','carLine'],
@ -178,7 +192,7 @@ export default {
}) })
}, },
getEvent(){ getEvent(){
getDeviceList({type:1}).then(res=>{ getQueryViewListPage(this.eventList,this.eventData).then(res=>{
console.log(res,'resres'); console.log(res,'resres');
}) })
}, },
@ -189,7 +203,10 @@ export default {
this.getDomHeight(); this.getDomHeight();
}); });
this.getDomHeight(); this.getDomHeight();
// this.getEvent(); this.getEvent();
getTrend({type:1}).then(res=>{
console.log(res,'事件来源');
})
}, },
} }
</script> </script>

@ -180,16 +180,36 @@
> >
<div class="monitoring-popup"> <div class="monitoring-popup">
<div class="monitoring-title"> <div class="monitoring-title">
<div class="title">{{ monitoringInfo.info.name }} {{ monitoringInfo.info.status == 1 ? "在线":"离线" }}</div> <div class="title">{{ monitoringInfo.info.name }}</div>
<div class="mask" @click="markersClosePopup"></div> <div class="mask" @click="markersClosePopup"></div>
</div> </div>
<div class="monitoring"> <div class="monitoring">
<div class="bg"> <div class="monitoring-list">
<img src="@/assets/images/play-circle-fill@2x.png" alt="" @click="playVideo(monitoringInfo.info.status)"> <div class="person-info">
<div class="info-left">
<div class="dot"></div>
<div class="name">监控点名称</div>
</div>
<div class="position">{{ monitoringInfo.info.name }}</div>
</div>
<div class="person-info">
<div class="info-left">
<div class="dot"></div>
<div class="name">在线状态</div>
</div>
<div class="position">{{ monitoringInfo.info.status == 1 ? "在线":"离线" }}</div>
</div>
<div class="person-info">
<div class="info-left">
<div class="dot"></div>
<div class="name">安装位置</div>
</div>
<div class="position">{{ monitoringInfo.info.installPlace }}</div>
</div>
</div> </div>
<div class="btns"> <div class="btns">
<div class="btn" @click="monitorVideos"></div> <div class="btn" @click="monitorVideos(monitoringInfo.info.status)"></div>
<div class="btn">转发</div> <div class="btn" @click="copyUrl()"></div>
</div> </div>
</div> </div>
</div> </div>
@ -374,7 +394,7 @@
</div> </div>
<personage-track ref="personageTrack"></personage-track> <personage-track ref="personageTrack"></personage-track>
<crew-assign ref="crewAssign"></crew-assign> <crew-assign ref="crewAssign"></crew-assign>
<video-wall ref="videoWall"></video-wall> <!-- <video-wall ref="videoWall"></video-wall> -->
<alone-video ref="aloneVideo"></alone-video> <alone-video ref="aloneVideo"></alone-video>
<shop ref="shop" width="50%" title="商铺详情查看" /> <shop ref="shop" width="50%" title="商铺详情查看" />
<new-event ref="newEvent"></new-event> <new-event ref="newEvent"></new-event>
@ -463,8 +483,7 @@ import {
getVideoPageEq, getVideoPageEq,
getPreviewURLs, getPreviewURLs,
getCarManageList, getCarManageList,
getQueryViewListPage, getStreetShopList,
eventSaveData
} from "@/api/bigScreenApi"; } from "@/api/bigScreenApi";
import flvjs from "flv.js"; import flvjs from "flv.js";
import axios from "axios"; import axios from "axios";
@ -604,7 +623,8 @@ export default {
this.layers.text = new AMap.OverlayGroup(); // this.layers.text = new AMap.OverlayGroup(); //
this.layers.text1 = new AMap.OverlayGroup(); // this.layers.text1 = new AMap.OverlayGroup(); //
this.layers.markers = new AMap.OverlayGroup(); // markers this.layers.markers = new AMap.OverlayGroup(); // markers
// this.layers.layer2.setzIndex(10);
// this.layers.layer3.setzIndex(9);
this.$nextTick(() => { this.$nextTick(() => {
var geojson1 = new AMap.Polygon({ var geojson1 = new AMap.Polygon({
path:OneGJ02.features[0].geometry.coordinates[0][0], path:OneGJ02.features[0].geometry.coordinates[0][0],
@ -773,10 +793,14 @@ export default {
this.getQuyuGeoJson(); this.getQuyuGeoJson();
// //
this.getLuduanGeoJson(); this.getLuduanGeoJson();
//
// this.layers.layer2.setOptions({ zIndex: 100 });
// this.layers.layer3.setOptions({ zIndex: 99 });
this.layers.layer2.on('click', (e)=>{ this.layers.layer2.on('click', (e)=>{
// console.log(e,'this.layers.layer2');
if(this.isPositioning) { if(this.isPositioning) {
console.log(e,'eeeeeeee'); // console.log(e,'eeeeeeee');
console.log(e.lnglat,'lnglat');
var marker = new AMap.Marker({ var marker = new AMap.Marker({
position: new AMap.LngLat(e.lnglat.lng, e.lnglat.lat), position: new AMap.LngLat(e.lnglat.lng, e.lnglat.lat),
anchor: 'bottom-center', anchor: 'bottom-center',
@ -784,8 +808,12 @@ export default {
this.layers.layer4.addOverlay(marker); this.layers.layer4.addOverlay(marker);
map.add(this.layers.layer4) map.add(this.layers.layer4)
let addressName let addressName
var lng = e.lnglat.lng + '' var lng = e.lnglat.lng + '';
var lat = e.lnglat.lat + '' var lat = e.lnglat.lat + '';
// let clickPoint = this.layers.layer2.getOverlays();
// for (var i = 0; i < clickPoint.length; i++) {
// console.log(clickPoint[i],'');
// }
axios.get('https://restapi.amap.com/v3/geocode/regeo',{ axios.get('https://restapi.amap.com/v3/geocode/regeo',{
params:{ params:{
key: "5f4a2c045cffa20551a0300c31c1ee78", key: "5f4a2c045cffa20551a0300c31c1ee78",
@ -795,41 +823,11 @@ export default {
} }
}).then(response=>{ }).then(response=>{
// console.log(response,'response'); // console.log(response,'response');
addressName = response.data.regeocode.aois[0].name; addressName = response.data.regeocode.aois[0]?.name || response.data.regeocode.pois[0]?.name;
console.log(addressName,'this.addressName'); // console.log(addressName,'this.addressName');
if(this.layers.layer4) { if(this.layers.layer4) {
this.$refs.newEvent.open({lnglat:e.lnglat,address:addressName}); // e.target.getExtData().name; e.target.getExtData()extDataname
this.isPositioning = false; this.$refs.newEvent.open({lnglat:e.lnglat,address:addressName,meshOccurs:e.target.getExtData().name});
}
})
}
})
this.layers.layer3.on('click', (e)=>{
if(this.isPositioning) {
console.log(e,'eeeeeeee');
console.log(e.lnglat,'lnglat');
var marker = new AMap.Marker({
position: new AMap.LngLat(e.lnglat.lng, e.lnglat.lat),
anchor: 'bottom-center',
})
this.layers.layer4.addOverlay(marker);
map.add(this.layers.layer4)
let addressName
var lng = e.lnglat.lng + ''
var lat = e.lnglat.lat + ''
axios.get('https://restapi.amap.com/v3/geocode/regeo',{
params:{
key: "5f4a2c045cffa20551a0300c31c1ee78",
location: `${lng.substring(0,9)},${lat.substring(0,9)}`,
extensions: 'all',
// batch: true,
}
}).then(response=>{
// console.log(response,'response');
addressName = response.data.regeocode.aois[0].name;
console.log(addressName,'this.addressName');
if(this.layers.layer4) {
this.$refs.newEvent.open({lnglat:e.lnglat,address:addressName});
this.isPositioning = false; this.isPositioning = false;
} }
}) })
@ -880,8 +878,6 @@ export default {
this.layers.text.show(); this.layers.text.show();
} }
} else if(zoom > 13.2){ } else if(zoom > 13.2){
//
// this.getWanggeGeoJson();
if(this.layers.layer2) { if(this.layers.layer2) {
this.layers.layer2.show(); this.layers.layer2.show();
this.layers.text1.hide(); this.layers.text1.hide();
@ -1299,41 +1295,59 @@ export default {
} }
}) })
} else if(id == 4){ } else if(id == 4){
point.features.forEach((element)=>{
if (element.properties.name == "监控视频") {
this.mapLoading = false;
let obj = {position:[]};
obj.position[0] = element.geometry.coordinates[0];
obj.position[1] = element.geometry.coordinates[1];
obj.imgSrc = element.properties.status == "0" ? offIcon4 : ico5;
// obj.imgSrc = ico5;
obj.info = element;
this.markers.push(obj)
}
})
// getVideoPageEq({pageNo:1,pageSize:50}).then(res=>{
// this.mapLoading = false;
// // console.log(res,"res");
// res.data.forEach((element)=>{
// let obj = {position:[]};
// obj.position[0] = element.longitude;
// obj.position[1] = element.latitude;
// // obj.imgSrc = element.status == "0" ? offIcon4 : ico5;
// obj.imgSrc = ico5;
// obj.info = element
// this.markers.push(obj)
// })
// }).catch(err=>{
// this.mapLoading = false;
// })
} else if(id == 5){
// point.features.forEach((element)=>{ // point.features.forEach((element)=>{
// if (element.properties.name == "") { // if (element.properties.name == "沿") {
// let obj = {position:[]}; // let obj = {position:[]};
// obj.position[0] = element.geometry.coordinates[0]; // obj.position[0] = element.geometry.coordinates[0];
// obj.position[1] = element.geometry.coordinates[1]; // obj.position[1] = element.geometry.coordinates[1];
// obj.imgSrc = ico5; // obj.imgSrc = ico6;
// this.markers.push(obj) // this.markers.push(obj)
// this.mapLoading = false;
// } // }
// }) // })
getVideoPageEq({pageNo:1,pageSize:50}).then(res=>{ getStreetShopList({pageSize:20,pageNum:1}).then(res=>{
this.mapLoading = false; res.rows.forEach(element => {
// console.log(res,"res");
res.data.forEach((element)=>{
let obj = {position:[]}; let obj = {position:[]};
obj.position[0] = element.longitude; obj.position[0] = element.longitude;
obj.position[1] = element.latitude; obj.position[1] = element.latitude;
// obj.imgSrc = element.status == "0" ? offIcon4 : ico5; obj.imgSrc = ico6;
obj.imgSrc = ico5; obj.info = element;
obj.info = element
this.markers.push(obj) this.markers.push(obj)
this.mapLoading = false;
}) })
}).catch(err=>{ }).catch(err=>{
this.$modal.msgError(err);
this.mapLoading = false; this.mapLoading = false;
}) })
} else if(id == 5){
point.features.forEach((element)=>{
if (element.properties.name == "沿街商铺分布") {
let obj = {position:[]};
obj.position[0] = element.geometry.coordinates[0];
obj.position[1] = element.geometry.coordinates[1];
obj.imgSrc = ico6;
this.markers.push(obj)
this.mapLoading = false;
}
})
} }
}, },
// TODO: // TODO:
@ -1506,12 +1520,37 @@ export default {
} else { } else {
this.$modal.msgError("该设备已离线"); this.$modal.msgError("该设备已离线");
} }
}, },
// //
monitorVideos(){ monitorVideos(status){
this.$refs.videoWall.open(); // this.$refs.videoWall.open();
if(status == 1) {
getPreviewURLs({protocol:'hls',cameraIndexCode:this.monitoringInfo.info.cameraIndexCode,expand:"transcode=1"}).then(res=>{
if(res.code == 200) {
// console.log(res,'');
this.$refs.aloneVideo.open(res.msg);
}
})
} else {
this.$modal.msgError("该设备已离线");
}
},
//
copyUrl(){
getPreviewURLs({protocol:'hls',cameraIndexCode:this.monitoringInfo.info.cameraIndexCode,expand:"transcode=1"}).then(res=>{
if(res.code == 200) {
// this.$refs.aloneVideo.open(res.msg);
var aux = document.createElement("input");
aux.setAttribute("value", res.msg);
document.body.appendChild(aux);
aux.select();
document.execCommand("copy");
document.body.removeChild(aux);
this.$modal.msgSuccess("视频地址已复制");
}
}).catch(error=>{
this.$modal.msgError(error);
})
}, },
// //
getShopInfo(){ getShopInfo(){
@ -1531,6 +1570,9 @@ export default {
fillOpacity: 0.3, fillOpacity: 0.3,
editable:false, editable:false,
visible:true, visible:true,
extData:{
name: element.properties.NAME
},
}) })
var text = new AMap.Text({ var text = new AMap.Text({
// position: [element.properties.CENTERX,element.properties.CENTERY], // position: [element.properties.CENTERX,element.properties.CENTERY],
@ -1570,6 +1612,7 @@ export default {
var circle = new AMap.Circle({ var circle = new AMap.Circle({
center: shapeStr.features[0].geometry.coordinates, center: shapeStr.features[0].geometry.coordinates,
radius: shapeStr.features[0].properties.radius, radius: shapeStr.features[0].properties.radius,
bubble: true,
extData:{ extData:{
id: '围栏polygon' id: '围栏polygon'
}, },
@ -1603,11 +1646,13 @@ export default {
this.map.add(this.layers.layer3); this.map.add(this.layers.layer3);
element.myPolygon = circle; element.myPolygon = circle;
element.text = text; element.text = text;
this.openClick(circle)
// this.map.add(text); // this.map.add(text);
// //
} else if (shapeStr.features[0].geometry.type == "Polygon") { } else if (shapeStr.features[0].geometry.type == "Polygon") {
var weilan = new AMap.Polygon({ var weilan = new AMap.Polygon({
path:shapeStr.features[0].geometry.coordinates, path:shapeStr.features[0].geometry.coordinates,
bubble: true,
extData:{ extData:{
id: '围栏polygon' id: '围栏polygon'
}, },
@ -1643,6 +1688,7 @@ export default {
this.map.add(this.layers.layer3); this.map.add(this.layers.layer3);
element.myPolygon = weilan; element.myPolygon = weilan;
element.text = text; element.text = text;
this.openClick(weilan)
// this.map.add([wangge,text]); // this.map.add([wangge,text]);
// this.map.add(text); // this.map.add(text);
} }
@ -1657,6 +1703,7 @@ export default {
let shapeStr = JSON.parse(element.shapeStr); let shapeStr = JSON.parse(element.shapeStr);
var quyu = new AMap.Polygon({ var quyu = new AMap.Polygon({
path:shapeStr.features[0].geometry.coordinates, path:shapeStr.features[0].geometry.coordinates,
bubble: true,
strokeOpacity: 0, strokeOpacity: 0,
strokeColor: '#FF0000', strokeColor: '#FF0000',
fillColor: '#FF0000', fillColor: '#FF0000',
@ -1664,7 +1711,8 @@ export default {
editable:false, editable:false,
visible:true, visible:true,
extData:{ extData:{
id: '区域polygon' id: '区域polygon',
name: element.name
}, },
}) })
var text = new AMap.Text({ var text = new AMap.Text({
@ -1688,6 +1736,7 @@ export default {
this.layers.layer3.addOverlay(text) this.layers.layer3.addOverlay(text)
this.layers.layer3.hide(); this.layers.layer3.hide();
this.map.add(this.layers.layer3); this.map.add(this.layers.layer3);
this.openClick(quyu)
// this.map.add([quyu,text]); // this.map.add([quyu,text]);
// this.map.add(text); // this.map.add(text);
}) })
@ -1703,6 +1752,7 @@ export default {
// console.log(shapeStr,'shapeStrshapeStrshapeStr'); // console.log(shapeStr,'shapeStrshapeStrshapeStr');
var luduan = new AMap.Polyline({ var luduan = new AMap.Polyline({
path:shapeStr.features[0].geometry.coordinates, path:shapeStr.features[0].geometry.coordinates,
bubble: true,
strokeOpacity: 1, strokeOpacity: 1,
strokeColor: '#46FF77', strokeColor: '#46FF77',
editable:false, editable:false,
@ -1726,11 +1776,59 @@ export default {
this.map.add(this.layers.layer3); this.map.add(this.layers.layer3);
element.myPolyline = luduan; element.myPolyline = luduan;
element.text = text; element.text = text;
this.openClick(luduan)
// this.map.add([luduan,text]); // this.map.add([luduan,text]);
// this.map.add(text); // this.map.add(text);
}) })
}) })
}, },
//
openClick(layer){
layer.on('click',(e)=>{
// console.log(e,'');
// console.log(this.map.getAllOverlays('circle','polyline','polygon'),'this.layers.layer2');
if(this.isPositioning) {
let latlng = e.lnglat
let name;
this.layers.layer2.eachOverlay((item)=>{
// console.log(item,'item');
if(item.getBounds().contains(latlng)){
name = item.getExtData().name
}
})
var marker = new AMap.Marker({
position: new AMap.LngLat(e.lnglat.lng, e.lnglat.lat),
anchor: 'bottom-center',
})
this.layers.layer4.addOverlay(marker);
this.map.add(this.layers.layer4)
let addressName
var lng = e.lnglat.lng + '';
var lat = e.lnglat.lat + '';
// let clickPoint = this.layers.layer2.getOverlays();
// for (var i = 0; i < clickPoint.length; i++) {
// console.log(clickPoint[i],'');
// }
axios.get('https://restapi.amap.com/v3/geocode/regeo',{
params:{
key: "5f4a2c045cffa20551a0300c31c1ee78",
location: `${lng.substring(0,9)},${lat.substring(0,9)}`,
extensions: 'all',
// batch: true,
}
}).then(response=>{
// console.log(response,'response');
addressName = response.data.regeocode.aois[0]?.name || response.data.regeocode.pois[0]?.name;
// console.log(addressName,'this.addressName');
if(this.layers.layer4) {
// e.target.getExtData().name; e.target.getExtData()extDataname
this.$refs.newEvent.open({lnglat:latlng,address:addressName,meshOccurs:name});
this.isPositioning = false;
}
})
}
})
},
// //
realTimeLocationClick(item){ realTimeLocationClick(item){
this.map.setZoomAndCenter(16,[item.longitude,item.latitude]); this.map.setZoomAndCenter(16,[item.longitude,item.latitude]);

@ -11,11 +11,25 @@
:on-error="handleUploadError" :on-error="handleUploadError"
:on-exceed="handleExceed" :on-exceed="handleExceed"
ref="imageUpload" ref="imageUpload"
:on-remove="handleDelete"
:on-preview="handlePictureCardPreview"
:show-file-list="false" :show-file-list="false"
> >
<i class="el-icon-plus"></i> <!-- show-file-list是否显示已上传文件列表 :on-remove="handleDelete" :on-preview="handlePictureCardPreview"-->
<i class="el-icon-plus" v-show="fileList.length < 1"></i>
<TransitionGroup name="el-fade-in-linear" class="upload-items" tag="ul" v-show="fileList.length > 0">
<li v-for="(item, index) in fileList" :key="index" class="updataLI" @click.stop="handlePictureCardPreview(item)">
<div class="item-updata">
<div class="file">
<!-- <i class="el-icon-document"></i> -->
<span class="omit">{{ item.name }}</span>
</div>
<div class="delete">
<el-link @click.stop="handleDelete(item)" :underline="false" type="danger">删除</el-link>
</div>
</div>
</li>
</TransitionGroup>
</el-upload> </el-upload>
<!-- 上传提示 --> <!-- 上传提示 -->
@ -26,17 +40,37 @@
的文件 的文件
</div> --> </div> -->
<!-- <el-dialog <el-dialog
:visible.sync="dialogVisible" :visible.sync="dialogVisible"
title="预览" :close-on-press-escape="false"
width="800" :close-on-click-modal="false"
:title="dialogTitle"
width="500px"
append-to-body append-to-body
@close="close"
> >
<img <img
v-if="fileFormat == 'png' || fileFormat == 'jpg' || fileFormat == 'jpeg'"
:src="dialogImageUrl" :src="dialogImageUrl"
style="display: block; max-width: 100%; margin: 0 auto" style="display: block; max-width: 100%; margin: 0 auto"
/> />
</el-dialog> --> <video
v-if="fileFormat == 'mp4'"
ref="myVideo"
:src="dialogImageUrl"
controls
style="display: block; max-width: 100%; margin: 0 auto"
>
</video>
<audio
v-if="fileFormat == 'mp3'"
:src="dialogImageUrl"
ref="myAudio"
controls
style="display: block; max-width: 100%; margin: 0 auto"
>
</audio>
</el-dialog>
</div> </div>
</template> </template>
@ -53,7 +87,7 @@ export default {
}, },
// (MB) // (MB)
fileSize: { fileSize: {
type: Number, type: Number,
default: 5, default: 5,
}, },
// , ['png', 'jpg', 'jpeg'] // , ['png', 'jpg', 'jpeg']
@ -76,7 +110,9 @@ export default {
hideUpload: false, hideUpload: false,
baseUrl: process.env.VUE_APP_BASE_API, baseUrl: process.env.VUE_APP_BASE_API,
uploadImgUrl: process.env.VUE_APP_BASE_API + "/common/upload", // uploadImgUrl: process.env.VUE_APP_BASE_API + "/common/upload", //
fileList: [] fileList: [],
fileFormat:"",
dialogTitle:'图片预览'
}; };
}, },
watch: { watch: {
@ -89,9 +125,9 @@ export default {
this.fileList = list.map(item => { this.fileList = list.map(item => {
if (typeof item === "string") { if (typeof item === "string") {
if (item.indexOf(this.baseUrl) === -1) { if (item.indexOf(this.baseUrl) === -1) {
item = { name: this.baseUrl + item, url: this.baseUrl + item }; item = { name: this.baseUrl + item, url: this.baseUrl + item };
} else { } else {
item = { name: item, url: item }; item = { name: item, url: item };
} }
} }
return item; return item;
@ -115,8 +151,8 @@ export default {
// loading // loading
handleBeforeUpload(file) { handleBeforeUpload(file) {
let isImg = false; let isImg = false;
let fileExtension = "";
if (this.fileType.length) { if (this.fileType.length) {
let fileExtension = "";
if (file.name.lastIndexOf(".") > -1) { if (file.name.lastIndexOf(".") > -1) {
fileExtension = file.name.slice(file.name.lastIndexOf(".") + 1); fileExtension = file.name.slice(file.name.lastIndexOf(".") + 1);
} }
@ -128,19 +164,19 @@ export default {
} else { } else {
isImg = file.type.indexOf("image") > -1; isImg = file.type.indexOf("image") > -1;
} }
// console.log(fileExtension,'fileExtension');
if (!isImg) { if (!isImg) {
this.$modal.msgError(`文件格式不正确, 请上传${this.fileType.join("/")}图片格式文件!`); this.$modal.msgError(`文件格式不正确, 请上传${this.fileType.join("/")}${this.fileType.includes('mp4') ? '视频' : this.fileType.includes('mp3') || this.fileType.includes('flac') ? '音频' : '图片'}格式文件!`);
return false; return false;
} }
if (this.fileSize) { if (this.fileSize) {
const isLt = file.size / 1024 / 1024 < this.fileSize; const isLt = file.size / 1024 / 1024 < this.fileSize;
if (!isLt) { if (!isLt) {
this.$modal.msgError(`上传头像图片大小不能超过 ${this.fileSize} MB!`); this.$modal.msgError(`上传${fileExtension == 'mp4' ? '视频' : fileExtension == 'mp3' || fileExtension == 'flac' ? '音频' : '图片'}大小不能超过 ${this.fileSize} MB!`);
return false; return false;
} }
} }
this.$modal.loading("正在上传图片,请稍候..."); this.$modal.loading(`正在上传${fileExtension == 'mp4' ? '视频' : fileExtension == 'mp3' || fileExtension == 'flac' ? '音频' : '图片'},请稍候...`);
this.number++; this.number++;
}, },
// //
@ -159,6 +195,7 @@ export default {
this.$refs.imageUpload.handleRemove(file); this.$refs.imageUpload.handleRemove(file);
this.uploadedSuccessfully(); this.uploadedSuccessfully();
} }
this.$refs.imageUpload.clearFiles();
}, },
// //
handleDelete(file) { handleDelete(file) {
@ -170,7 +207,7 @@ export default {
}, },
// //
handleUploadError() { handleUploadError() {
this.$modal.msgError("上传图片失败,请重试"); this.$modal.msgError("上传失败,请重试");
this.$modal.closeLoading(); this.$modal.closeLoading();
}, },
// //
@ -190,6 +227,14 @@ export default {
}, },
// //
handlePictureCardPreview(file) { handlePictureCardPreview(file) {
this.fileFormat = file.name.slice(file.name.lastIndexOf(".") + 1)
if(this.fileFormat == 'mp4') {
this.dialogTitle = "视频预览"
} else if(this.fileFormat == "mp3") {
this.dialogTitle = "音频预览"
} else {
this.dialogTitle = "照片预览"
}
this.dialogImageUrl = file.url; this.dialogImageUrl = file.url;
this.dialogVisible = true; this.dialogVisible = true;
}, },
@ -203,6 +248,14 @@ export default {
} }
} }
return strs != '' ? strs.substr(0, strs.length - 1) : ''; return strs != '' ? strs.substr(0, strs.length - 1) : '';
},
//
close(){
if(this.fileFormat == 'mp4') {
this.$refs.myVideo.pause();
} else if(this.fileFormat == "mp3") {
this.$refs.myAudio.pause();
}
} }
} }
}; };
@ -210,17 +263,48 @@ export default {
<style scoped lang="scss"> <style scoped lang="scss">
// .el-upload--picture-card // .el-upload--picture-card
::v-deep.hide .el-upload--picture-card { ::v-deep.hide .el-upload--picture-card {
display: none; display: none;
}
::v-deep .upload-items {
list-style: none;
padding-left: 10px;
line-height: 35px;
margin: 0;
width: 100%;
.updataLI {
.item-updata {
display: flex;
align-items: center;
.file {
font-size: 14px;
font-family: "Source Han Sans CN-Medium";
font-weight: 500;
color: #e9f4ff;
display: flex;
align-items: center;
.omit {
display: inline-block;
width: 190px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
}
.delete {
margin-left: 10px;
}
}
}
} }
// //
::v-deep .el-list-enter-active, ::v-deep .el-list-enter-active,
::v-deep .el-list-leave-active { ::v-deep .el-list-leave-active {
transition: all 0s; transition: all 0s;
} }
::v-deep .el-list-enter, .el-list-leave-active { ::v-deep .el-list-enter, .el-list-leave-active {
opacity: 0; opacity: 0;
transform: translateY(0); transform: translateY(0);
} }
</style> </style>

@ -1,20 +1,20 @@
<template> <template>
<dia-log ref="dialog5" width="45%" title="新增事件" @close="Close"> <dia-log ref="dialog5" width="45%" title="新增事件" @close="Close">
<el-form :inline="true" :model="formInline" class="demo-form-inline" ref="myForm"> <el-form :inline="true" :model="formInline" class="demo-form-inline" ref="formInline" :rules="rules">
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item> <el-form-item prop="reportEventObj.name">
<template slot="label"> <template slot="label">
<div class="new-event-form"> <div class="new-event-form">
<div class="ball"></div> <div class="ball"></div>
<span>事件名称</span> <span>事件名称</span>
</div> </div>
</template> </template>
<el-input v-model="formInline.eventName" placeholder="请输入事件名称"></el-input> <el-input v-model="formInline.reportEventObj.name" placeholder="请输入事件名称"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item> <el-form-item prop="reportEventObj.openTime">
<template slot="label"> <template slot="label">
<div class="new-event-form"> <div class="new-event-form">
<div class="ball"></div> <div class="ball"></div>
@ -22,7 +22,7 @@
</div> </div>
</template> </template>
<el-date-picker <el-date-picker
v-model="formInline.time" v-model="formInline.reportEventObj.openTime"
value-format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss"
type="datetime" type="datetime"
placeholder="选择日期时间"> placeholder="选择日期时间">
@ -32,14 +32,14 @@
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item> <el-form-item prop="reportEventObj.type">
<template slot="label"> <template slot="label">
<div class="new-event-form"> <div class="new-event-form">
<div class="ball"></div> <div class="ball"></div>
<span>事件类别</span> <span>事件类别</span>
</div> </div>
</template> </template>
<el-select v-model="formInline.type" placeholder="请选择事件类别"> <el-select v-model="formInline.reportEventObj.type" placeholder="请选择事件类别">
<el-option <el-option
v-for="item in options" v-for="item in options"
:key="item.value" :key="item.value"
@ -51,38 +51,38 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item> <el-form-item prop="reportEventObj.content">
<template slot="label"> <template slot="label">
<div class="new-event-form"> <div class="new-event-form">
<div class="ball"></div> <div class="ball"></div>
<span>事件内容</span> <span>事件内容</span>
</div> </div>
</template> </template>
<el-input v-model="formInline.eventName" placeholder="请输入事件内容"></el-input> <el-input v-model="formInline.reportEventObj.content" placeholder="请输入事件内容"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item> <el-form-item prop="reportEventObj.address">
<template slot="label"> <template slot="label">
<div class="new-event-form"> <div class="new-event-form">
<div class="ball"></div> <div class="ball"></div>
<span>事件地址</span> <span>事件地址</span>
</div> </div>
</template> </template>
<el-input v-model="formInline.address" placeholder="请输入事件地址"></el-input> <el-input v-model="formInline.reportEventObj.address" placeholder="请输入事件地址"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item> <el-form-item prop="reportEventObj.meshOccurs">
<template slot="label"> <template slot="label">
<div class="new-event-form"> <div class="new-event-form">
<div class="ball"></div> <div class="ball"></div>
<span>发生网格</span> <span>发生网格</span>
</div> </div>
</template> </template>
<el-select v-model="formInline.grid" placeholder="请选择"> <!-- <el-select v-model="formInline.reportEventObj.meshOccurs" placeholder="请选择">
<el-option <el-option
v-for="item in gridOptions" v-for="item in gridOptions"
:key="item.value" :key="item.value"
@ -90,26 +90,31 @@
:value="item.value" :value="item.value"
> >
</el-option> </el-option>
</el-select> </el-select> -->
<el-cascader
v-model="formInline.reportEventObj.meshOccurs"
:options="gridOptions"
@change="handleChange">
</el-cascader>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item class="nobackground"> <el-form-item class="nobackground" prop="reportEventObj.imgUrl">
<template slot="label"> <template slot="label">
<div class="new-event-form"> <div class="new-event-form">
<div class="ball"></div> <div class="ball"></div>
<span>事件照片</span> <span>事件照片</span>
</div> </div>
</template> </template>
<image-up v-model="formInline.imageUrls" :limit="1" /> <my-upload v-model="formInline.reportEventObj.imgUrl" :limit="1" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item class="nobackground"> <el-form-item class="nobackground" prop="reportEventObj.videoUrl">
<template slot="label"> <template slot="label">
<div class="new-event-form"> <div class="new-event-form">
<div class="ball"></div> <div class="ball"></div>
@ -117,23 +122,24 @@
</div> </div>
</template> </template>
<!-- <el-input v-model="formInline.eventName" placeholder="请输入事件名称"></el-input> --> <!-- <el-input v-model="formInline.eventName" placeholder="请输入事件名称"></el-input> -->
<videoUpload v-model="formInline.videoUrls" :limit="1" /> <!-- <videoUpload v-model="formInline.reportEventObj.videoUrl" :limit="1" /> -->
<my-upload v-model="formInline.reportEventObj.videoUrl" :limit="1" :fileType="['mp4']" :fileSize="10" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item class="nobackground"> <el-form-item class="nobackground" prop="reportEventObj.audioUrl">
<template slot="label"> <template slot="label">
<div class="new-event-form"> <div class="new-event-form">
<div class="ball"></div> <div class="ball"></div>
<span>事件音频</span> <span>事件音频</span>
</div> </div>
</template> </template>
<div class="component-upload-image"> <!-- <div class="component-upload-image">
<el-upload <el-upload
id="audioUpload" id="audioUpload"
v-model="formInline.audioUrl" v-model="formInline.reportEventObj.audioUrl"
class="upload-demo-audio" class="upload-demo-audio"
action="" action=""
:http-request="httpRequestHandler" :http-request="httpRequestHandler"
@ -144,15 +150,16 @@
> >
<i class="el-icon-plus"></i> <i class="el-icon-plus"></i>
</el-upload> </el-upload>
</div> </div> -->
<my-upload v-model="formInline.reportEventObj.audioUrl" :limit="1" :fileType="['mp3','flac']" :fileSize="20" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<div class="btns"> <div class="btns">
<div class="btn" @click="cancel()"></div> <div class="btn" @click="cancel('formInline')"></div>
<div class="btn btnTwo" @click="confirm()"></div> <div class="btn btnTwo" @click="confirm('formInline')"></div>
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
@ -161,26 +168,102 @@
</template> </template>
<script> <script>
import diaLog from "../../components/dialog/index.vue" import diaLog from "../../components/dialog/index.vue"
import imageUp from "../ImageUpload/index.vue" import myUpload from "../myUpload/index.vue"
import videoUpload from "../videoFileUpload/index.vue" import videoUpload from "../videoFileUpload/index.vue"
import {
getQueryViewListPage,
eventSaveData
} from "@/api/bigScreenApi/eventApi.js";
export default { export default {
components:{diaLog,imageUp,videoUpload}, components:{diaLog,myUpload,videoUpload},
data() { data() {
return { return {
formInline: { formInline: {
eventName: '', reportEventObj: {
time: "", address: "", //
type: '', audioUrl: "", //
grid: '', content: "", //
address: '', createPhone: "", //
imageUrls: [], dataStatus: "", // 稿 1
videoUrls: [], eventSource: "", //
audioUrl: '', imgUrl: "", //
isSimple: "", //
meshOccurs: "", //
name: "", //
openTime: "", //
randNumber: "", //
type: "", //
videoUrl: "" //
}
},
rules: {
"reportEventObj.name":[
{ required: true, message: '请输入事件名称', trigger: 'blur' },
],
"reportEventObj.openTime":[
{ required: true, message: '请选择发生时间', trigger: 'change' }
],
"reportEventObj.type":[
{ required: true, message: '请选择事件类别', trigger: 'change' }
],
"reportEventObj.content":[
{ required: true, message: '请输入事件内容', trigger: 'blur' },
],
"reportEventObj.address":[
{ required: true, message: '请输入事件地址', trigger: 'blur' },
],
"reportEventObj.meshOccurs":[
{ required: true, message: '请选择发生网格', trigger: 'change' }
],
"reportEventObj.imgUrl":[
{ required: true, message: '请选择事件照片', trigger: 'blur' },
],
"reportEventObj.videoUrl":[
{ required: true, message: '请选择事件视频', trigger: 'blur' },
],
"reportEventObj.audioUrl":[
{ required: true, message: '请选择事件音频', trigger: 'blur' },
],
},
baseUrl: process.env.VUE_APP_BASE_API,
formInfo:{
formKey:"report-event-submit", //
processDefId:"Process_17roha9:2:7fed99d1-964d-11ee-b204-0242ac1e0014", // id
isFlow:"true", // true
},
formData:{
"formData":{
"reportEventObj": {
"address": "上海镇江市鄂城区",
"audioUrl": "http://xsupqgraf.io/vnszlcr",
"content": "veniam",
"createPhone": "18644579846",
"dataStatus": "fugiat est nisi",
"eventSource": "non ex",
"imgUrl": "http://dummyimage.com/400x400",
"isSimple": "dolore",
"meshOccurs": "ut cillum nisi",
"name": "义里再",
"openTime": "2014-11-02 21:34:15",
"randNumber": "2",
"type": "veniam Lorem ullamco id reprehenderit",
"videoUrl": "http://ederrs.ga/fbbtutxdhq"
}
}
}, },
gridOptions: [ gridOptions: [
{ {
value: '选项1', value: '一中队',
label: '选项1' label: '一中队',
children: [
{
value: '一号网格',
label: '一号网格',
},{
value: '二号网格',
label: '二号网格',
},
]
}, },
], ],
options: [ options: [
@ -195,20 +278,39 @@ export default {
}, },
methods:{ methods:{
open(obj) { open(obj) {
console.log(obj,'obj'); // console.log(obj,'obj');
if(obj) {
this.formInline.address = obj.address
}
this.$refs.dialog5.open('3'); this.$refs.dialog5.open('3');
this.$nextTick(()=>{
this.formInline.reportEventObj.address = obj?.address
})
}, },
Close() { Close() {
this.$refs.myForm.resetFields(); this.$refs.formInline.resetFields();
}, },
cancel(){ handleChange(){},
//
cancel(refForm){
this.$refs[refForm].resetFields();
this.$refs.dialog5.Close(); this.$refs.dialog5.Close();
}, },
confirm(){ //
this.$refs.dialog5.Close(); confirm(formName){
this.$refs[formName].validate((valid) => {
if(valid){
this.formInline.reportEventObj.imgUrl = this.baseUrl + this.formInline.reportEventObj.imgUrl;
this.formInline.reportEventObj.videoUrl = this.baseUrl + this.formInline.reportEventObj.videoUrl;
this.formInline.reportEventObj.audioUrl = this.baseUrl + this.formInline.reportEventObj.audioUrl;
this.formInline.reportEventObj.meshOccurs = this.formInline.reportEventObj.meshOccurs.join(',');
console.log(this.formInline);
}
})
// eventSaveData(this.formInfo,{formData:this.formInline}).then(res=>{
// console.log(res,'===================res');
// if(res.code == 200 && res.success == true) {
// this.$refs.dialog5.Close();
// }
// })
}, },
beforeAvatarUpload(file) { beforeAvatarUpload(file) {
console.log('file', file) console.log('file', file)
@ -272,6 +374,11 @@ export default {
// color: #CCCCCC; // color: #CCCCCC;
// line-height: 20px; // line-height: 20px;
// } // }
.el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label:before {
content: ' ';
width: 0px;
margin-right: 0px;
}
.new-event-form { .new-event-form {
display: flex; display: flex;
align-items: center; align-items: center;
@ -304,7 +411,7 @@ export default {
// background-color: transparent; // background-color: transparent;
// width: 250px; // width: 250px;
// } // }
.el-date-editor,.el-input--medium { .el-date-editor,.el-input--medium,.el-cascader {
background-color: transparent; background-color: transparent;
width: 250px; width: 250px;
.el-input__inner { .el-input__inner {
@ -381,6 +488,54 @@ export default {
-webkit-text-fill-color: rgba(211, 238, 242, 0.2); -webkit-text-fill-color: rgba(211, 238, 242, 0.2);
} }
} }
.el-cascader {
background-color: transparent;
width: 250px;
.el-input
.el-input__suffix
.el-input__suffix-inner
.el-icon-arrow-down {
display: flex;
align-items: center;
justify-content: center;
}
.el-input
.el-input__suffix
.el-input__suffix-inner
.el-icon-arrow-down::before {
content: "";
background: url("~@/assets/images/pull-down.png") center center
no-repeat;
background-size: 100% 100%;
width: 100%;
height: 22px;
}
.el-input__suffix .el-input__suffix-inner .el-input__icon {
width: 22px;
}
.el-input__suffix {
margin-right: 5px;
}
.el-input__inner {
background-color: transparent;
border: none;
width: 100%;
height: 35px;
font-size: 14px;
font-family: "Source Han Sans CN-Medium";
font-weight: 500;
color: #e9f4ff;
}
.el-input__inner::placeholder {
/* 在这里添加你想要修改的 placeholder 样式 */
font-size: 14px;
font-family: "Source Han Sans CN-Regular";
font-weight: 400;
color: #d3eef2;
-webkit-background-clip: text;
-webkit-text-fill-color: rgba(211, 238, 242, 0.2);
}
}
} }
.nobackground { .nobackground {
.el-form-item__content { .el-form-item__content {

@ -24,7 +24,7 @@
<div class="item"> <div class="item">
<div class="ball"></div> <div class="ball"></div>
<div class="content"> <div class="content">
当前状态<span>{{ person ? "移动中" : "行驶中" }}</span> 当前状态<span>{{ person ? personItem.status == '1' ? '在线' : personItem.status == '0' ? '离线' : '' : "行驶中" }}</span>
</div> </div>
</div> </div>
</div> </div>

@ -4,7 +4,7 @@
* @Author: JC9527 * @Author: JC9527
* @Date: 2023-12-26 18:01:27 * @Date: 2023-12-26 18:01:27
* @LastEditors: JC9527 * @LastEditors: JC9527
* @LastEditTime: 2023-12-26 18:26:14 * @LastEditTime: 2024-01-04 09:43:35
--> -->
<template> <template>
<div class="component-upload-image"> <div class="component-upload-image">
@ -13,11 +13,28 @@
ref="upload" ref="upload"
:auto-upload="false" :auto-upload="false"
:multiple="false" :multiple="false"
action="http://up-z2.qiniu.com" :action="uploadVideo"
:on-success="successVideo" :on-success="successVideo"
:before-upload="handleBeforeUpload"
:limit="limit"
:on-error="handleUploadError"
:on-exceed="handleExceed"
:show-file-list="false" :show-file-list="false"
> >
<i class="el-icon-plus"></i> <i class="el-icon-plus" v-show="fileList.length < 1"></i>
<TransitionGroup name="el-fade-in-linear" class="upload-items" tag="ul" v-show="fileList.length > 0">
<li v-for="(item, index) in fileList" :key="index" class="updataLI" @click.stop="handlePictureCardPreview(item)">
<div class="item-updata">
<div class="file">
<!-- <i class="el-icon-document"></i> -->
<span class="omit">{{ item.name }}</span>
</div>
<div class="delete">
<el-link @click.stop="handleDelete(item)" :underline="false" type="danger">删除</el-link>
</div>
</div>
</li>
</TransitionGroup>
</el-upload> </el-upload>
</div> </div>
</template> </template>
@ -25,10 +42,82 @@
export default { export default {
data() { data() {
return { return {
fileList:[] fileList:[],
baseUrl: process.env.VUE_APP_BASE_API,
uploadVideo: process.env.VUE_APP_BASE_API + "/common/upload", //
}
},
props: {
limit:{
type:Number,
default:1
},
fileType: {
type: Array,
default: () => ["mp4"],
},
},
watch: {
value: {
handler(val) {
if (val) {
//
const list = Array.isArray(val) ? val : this.value.split(',');
//
this.fileList = list.map(item => {
if (typeof item === "string") {
if (item.indexOf(this.baseUrl) === -1) {
item = { name: this.baseUrl + item, url: this.baseUrl + item };
} else {
item = { name: item, url: item };
}
}
return item;
});
} else {
this.fileList = [];
return [];
}
},
deep: true,
immediate: true
} }
}, },
methods:{ methods:{
// loading
handleBeforeUpload(file) {
let isImg = false;
if (this.fileType.length) {
let fileExtension = "";
if (file.name.lastIndexOf(".") > -1) {
fileExtension = file.name.slice(file.name.lastIndexOf(".") + 1);
}
isImg = this.fileType.some(type => {
if (file.type.indexOf(type) > -1) return true;
if (fileExtension && fileExtension.indexOf(type) > -1) return true;
return false;
});
} else {
isImg = file.type.indexOf("video") > -1;
}
if (!isImg) {
this.$modal.msgError(`文件格式不正确, 请上传${this.fileType.join("/")}视频格式文件!`);
return false;
}
// if (this.fileSize) {
// const isLt = file.size / 1024 / 1024 < this.fileSize;
// if (!isLt) {
// this.$modal.msgError(` ${this.fileSize} MB!`);
// return false;
// }
// }
this.$modal.loading("正在上传视频,请稍候...");
},
//
handleExceed() {
this.$modal.msgError(`上传文件数量不能超过 ${this.limit} 个!`);
},
successVideo(response, file, fileList) { successVideo(response, file, fileList) {
var url = URL.createObjectURL(fileList[0].raw); var url = URL.createObjectURL(fileList[0].raw);
var audioElement = new Audio(url); var audioElement = new Audio(url);
@ -37,7 +126,20 @@ export default {
duration =parseInt(audioElement.duration) ; // duration =parseInt(audioElement.duration) ; //
console.log(duration); console.log(duration);
}); });
} },
//
handleUploadError() {
this.$modal.msgError("上传图片失败,请重试");
this.$modal.closeLoading();
},
//
handleDelete(file) {
const findex = this.fileList.map(f => f.name).indexOf(file.name);
if(findex > -1) {
this.fileList.splice(findex, 1);
this.$emit("input", this.listToString(this.fileList));
}
},
}, },
} }
</script> </script>

@ -55,6 +55,13 @@ module.exports = {
["^" + process.env.VUE_APP_BASE_API1]: "", ["^" + process.env.VUE_APP_BASE_API1]: "",
}, },
}, },
[process.env.VUE_APP_BASE_API2]: {
target: `http://localhost:9029`,
changeOrigin: true,
pathRewrite: {
["^" + process.env.VUE_APP_BASE_API2]: "",
},
},
}, },
disableHostCheck: true, disableHostCheck: true,
}, },

Loading…
Cancel
Save